I am taking Udacity's "Programming a robotic car" free online class and I think it is a great resource for all robot builders! Since the beginning I have seen a lot of question about the way to try algorithms we are learning with real robotic vehicles. That is why, I decide to start a series of blog posts where I will try to use exactly the algorithms we have studied in each unit to control our robotics vehicle. All the control code is in Python and I will try to keep the implementation as close as possible to what was presented in the lectures. I hope it would be interesting and helpful for everybody trying to implement more inteligent robots. If interested, please check the example for Unit 1 (Monte Carlo localization) here.
Some background information about the vehicle - on the hardware side, it is based on the Pololu's tracked chassis and BeagleBoard single board computer with Texas Instrument's OMAP3 CPU which has ARM and DSP core. In addition, there are some passive elements mainly to perform voltage level conversion required for communication with sensors and actuators. BeagleBoard provides popular in hobby domain I2C bus and we used it as a primary way to connect most of our sensors. Currently we have ultrasonic sonar and compass. In addition there are one or two USB cameras (or frame grabbers), USB GPS mouse as well as USB WiFi or UMTS stick could be connected. It all powered by LiPo batteries and we have built-in battery charger module.
At the software side, there is Angstrom Linux with Xenomai real-time extensions running on BeagleBoard and TI's DSP-accelerated video codecs for real-time h264 video compression. We have developed the framework to remotely collect sensor data and control actuators. As a communication technology we are using ICE. As a result, we can easily communicate with the vehicle using different programming languages including Python. The application could be run on-board communicating over localhost interface or on the remote computer(s) talking with the vehicle over the network.
All hardware and software we developed are open source. For more details about hardware, software and project in general, please visit the following links:
Since it is a pure hobby project and all the activities are conducted in the evenings and over weekends I am not sure whether I will keep the pace and manage to produce the demo for every unit. But I will try hard. All relevant sources will be located at GitHub repository.