A simple robot platform written in Python.
Python OpenSCAD
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



pibot A simple robot platform with extensible sensors written in Python and controllable over Wifi.


  • Raspberry Pi 2. You can probably use the newer Raspberry Pi 3 as well, but I haven't tried it.
  • GoPiGo, which turns your Raspberry Pi into a basic robot platform.
  • Xbox 360 Kinect, if you want depth information. Alternatively, you can use any OpenCV-compatible (= most) USB web cam for vision.
  • A decent USB Wifi dongle. I wouldn't get one of the tiny ones since I had bandwidth trouble, presumably due to the tiny antenna.
  • A 3D printed holder for the Xbox Kinect. You can use my model (under assets/kinect_gopigo.stl), if you want. It contains holes so that you can easily attach it to your GoPiGo body. Alternatively, you can just attach it using tape or whatever.
  • A battery pack of your choice. I use 10 AA rechargeable batteries since the Kinect requires at least 12V or it will just randomly shut down during operation, especially if the motors are also running. I use eneloop batteries, which are awesome. I get approx. 2 hours of a set of fully charged batteries.
  • Some soldering equipment and patience to put it all together.

Installation on Client

Simply run the following command to install all dependencies:

pip install -r requirements.txt

That's it.

Installation on Raspberry Pi


sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential git

Next, generate keys for Github: https://help.github.com/articles/generating-ssh-keys/

PiBot and Dependencies

sudo apt-get install python python-dev python-numpy python-scipy python-setuptools libopencv-dev python-opencv
git clone git@github.com:matthiasplappert/pibot.git ~/pibot
cd ~/pibot
git submodule update --init --recursive
sudo pip install pip --upgrade
sudo pip install -r requirements.txt


cd vendor/gopigo/Setup
chmod +x install.sh
sudo ./install.sh

Xbox Kinect

cd /tmp
sudo apt-get install libudev-dev
sudo wget http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.19/libusb-1.0.19.tar.bz2/download
tar xvjf download
cd libusb-1.0.19
sudo make install
cd ~/pibot/vendor/libfreenect
sudo apt-get install cmake freeglut3-dev libxmu-dev libxi-dev
mkdir build
cmake -DBUILD_EXAMPLES=OFF -DLIBUSB_1_INCLUDE_DIR=/usr/local/include/libusb-1.0 -DLIBUSB_1_LIBRARY=/usr/local/lib/libusb-1.0.so -L ..
sudo make install
cd ../wrappers/python
sudo python setup.py install

TODO: Describe udev rule stuff



Running the Robot

First, connect to the robot over SSH and start it:

ssh pi@<ip_of_your_raspberry>
cd pibot/src
sudo python run_robot.py

Next, you can try out the robot locally by using one of the test_ files. You always need to specify the robot's name, which is printed once you start the robot, and probably also the host of the robot depending on your network configuration. A simple example would be:

python test_motors.py pibot --host <ip_of_your_raspberry>