Raspberry Pi Zumo robot21 Jun 2018
- micro metal gear motors
- Raspberry Pi Zero W and Micro SD card
- portable power bank
- 4 AA rechargable batteries
- H bridge motor driver
- Raspberry Pi camera module
In his seminal publication Neural Network Vision for Robot Driving Dean A. Pomerleau shows that one can train a neural network to drive using low-resolution camera images (also see video). In a similar fashion the Zumo robot can first be controlled using an XBox controller. 10 times a second a video frame together with the current motor settings are recorded. The images are downsampled to 32x24 pixels. A neural network with two hidden layers with 20 units each is trained. The output of the neural network are two vectors (one for the left and one for the right motor) with 11 units each. The first unit corresponds to driving backwards with full speed. The last unit corresponds to driving forward with full speed. Initially the robot frequently looses track and a manual override is required. Each time the manual override is used, new training data is recorded. After several iterations the robot finally achieves the desired behaviour and it can patrol the kitchen as shown in the video below.
Regularisation was used to reduce the variance. The bias of the network is quite high but this is probably due to conflicting training data (i.e. over time different drive speeds are used at the same position in the kitchen). Note that the experiment works best in controlled lighting conditions. Otherwise much more training data is required to cope with changes in illumination.