Pi-powered Ping Pong Pursuit

Will Jessop is a systems administrator for 37signals and he runs the North West Ruby User Group in Manchester. I bumped in to him recently and discovered he was working on a personal project with a Raspberry Pi. The aim of the project is to solve the problem of ping pong balls on the floor at the 37signals office in Chicago. The solution is a web-enabled robot with mounted camera allowing people to collect balls in to a basket.

The original version of the robot used the Custard Pi breakout, and then I suggested he looked at the MotorPiTX motor controller developed by Jason Barnett. He ordered one and joined Manchester Hackspace and began working on building or otherwise sourcing all the parts needed for the robot.

An early mains powered version using the MotorPiTX

Finding the new motor board much neater sitting on the original chassis, Will proceeded to design and 3D print motor mounts, caterpillar track mounts, a new base, a ball basket, and then added a mounted picamera with fish-eye lens.

3D printed parts

The underside, showing the pi

With a neat little camera robot, Will looked at options for battery powering it so it could roam free. Looking at power requirements and testing its usage while running the motors and streaming video over wireless, Will opted for a 5000mAh 7.4V lithium battery. He also added a lifter arm to the chassis, controlled independently of the robot itself.

Pi camera board with fish-eye lens

Basket case

All the software on the Pi is written in Go, which Will sees as a great language for the Raspberry Pi as it creates small, efficient, statically compiled binaries that easily fit within the resource limits of the Pi. This runs alongside Will’s gamepad library (in C, available as a Ruby gem) on a laptop. Will also wrote a power control script to aid clean Pi shutdown via the MotorPiTX.

With the robot roaming free on its new battery, controlled by an xbox controller, the camera feed streaming over wifi, and the lifter arm functional, it was ready to present at the 16th Manchester Raspberry Jam! On a tour of the Manchester Hackspace during the Jam, Eben, Liz and Pete got to see it in action. Eben got hold of the controller and took it round picking up ping pong balls by watching the video stream on the laptop.

Playing at Madlab

Eben, Pete Will, Liz and Andrew at Manchester Hackspace

Eben – moustache and all – examines the robot

Eben gets a go

Will then took the robot to Miami to show it off at RubyConf, where many Rubyists got to have a play with it.

In action at RubyConf

Robot picking up ping pong balls:

Robot’s eye view:

Check out the series of posts on Will’s blog. Thanks to Manchester Hackspace and Jason Barnett for helping to facilitate the project. The robot’s not been installed in the 37signals office yet, but when web access to it is available, we’ll be sure to post the link so you can all have a go!

Will also wrote a Go library for the Pimoroni Piglowgithub.com/wjessop/go-piglow. Go and take a look, have a play, and let us know what you think!



This is really cool. I really should start hacking my roomba before it collects more dust. **Shudders**


Isn’t that what it’s supposed to do?


I’ll be happy to answer any questions people have here, or on twitter (@will_j).


Woah… Cool project!

What chassis is that? Looks like a Zumo from Pimoroni? Am I correct?

The Raspberry Pi Guy


It’s one I 3D printed myself.


The *tracks* are the Pololu ones, available from Pimoroni.


Ah, yes!

It looked a tad similar!

The Raspberry Pi Guy


Would you post a complete how to in one post in order to make this one?


I’ve got a few more months work on the robot before it’s “finished”. I’ll post more on how it’s made at that point.

I might post bits and pieces on my blog in the meantime.


The aim of the project is to solve the problem of ping pong balls on the floor at the 37signals office in Chicago.

Is that a common office problem?


It is in the room with the ping-pong table in it!


Pretty cool. I was thinking that adding some kind of a vacuum pick up system might give you more success since the ping pong balls are very light.


A vacuum pick-up is planned, I need to move away from the easily destructible arm system somehow.


I particularly like the two at a time trick. Maybe it’s time to resurrect Robot Wars…


My own take on it is that it’d make a FANTASTIC remote-control war version of Hungry Hungry Hippos.


It would be great if it can use the image processing power of RPi to recognize the balls and pick up the ball by itself!


I’ve considered OpenCV, but I think part of the charm of this project is that other people can drive a tiny robot round our office :)


I guess you’d need to add some kind of “basket is full” indicator, otherwise you’d just end up scattering the ‘overflow’ balls everywhere :-)


I think this will go with the vacuum ball lifter. It will definitely be needed though.

Leave a Comment

Comments are closed