As of my last post, I had finished a working ROS node for Sparki so I have now completed the Sparki <--> Raspberry Pi communication portion of the project. Now I am working on one of the harder parts, getting the ROS Navigation Stack to run on the Pi. I compiled the core ROS pieces from source on the Pi successfully. I am now working on installing the navigation stack itself. It has a lot more dependencies that are not available through Raspbian or Debian packages. We'll see if I can pull that off.
In the mean time, I am also working on getting the navigation stack working with Sparki on my laptop. That involves implementing a TF publisher in the Sparki node and, for the time being, converting the servo angle/ultrasonic distance data into a different format that the nav stack accepts to trick it to work crudely. Once I do that I'll look into a more native, less hack-y solution.
Here's my thoughts on the project so far:
- I am doing this to learn quickly about Sparki's capabilities so I can be a better teacher to my students this fall. I also want to show them that some very complex robotics topics are accessible to them on low cost hardware.
- This got me thinking that a limiting factor for educational robots is often the processor. There just is not enough horsepower to do motion planning, machine learning, SLAM, or computer vision tasks on-board.
- Many of these tasks are not time critical. A delay of hundreds of milliseconds or more is acceptable.
- I then thought that a great way to make these topics accessible to students would be to implement the algorithms in the cloud and create a simple API to pass data to and from the server. This decreases power requirements, both energy and computation, and makes the physical hardware cheaper. A web-interface could be added with visual displays of the algorithm's performance that could increase the students' understanding how the process works.
- Thus, I am going to try to offload the SLAM processing to the cloud through a simple interface while providing a web GUI displaying the SLAM cost map.