Easy to follow guide for making a videochat telepresence robot from common toys and computer gear. Most of the materials required for this project is available off-the-shelf and much of what I used was already in my shop from previous projects –hopefully you will have some similar gear, but be prepared to improvise, dumpster dive or hit Craigslist for missing parts.
Sparky uses Skype as the foundation for the video chat, as well as some custom software (and source code) we provide for basic wheel-driving servo controls. You can customize this code to add functionality to your robot - including more servos, gripper arms and sensors… You are limited only by your imagination and ingenuity.
Keep in mind that each robot will be different, so this guide is by no means complete instructions. Think of it as a starting point, a foundation upon which you design and build your own unique Sparky creation.
Chassis and Drive Train: Vex is popular educational robotic kit. It’s a lot like a traditional Erector set, with the added inclusion of sophisticated servo motors, wheels and gears (VEX also includes it’s own programming language and computer board for making complete robots, but we are not using these for Sparky).
Power: A compact 12v, 7Ah hobby battery. Coupled with a run-of-the-mill, DC to AC power inverter, it provides enough juice to run the robot for a few hours on a single charge.
Brain: A first-gen Mac Mini is cheap and offers great power and functionality in a tiny package including WiFi, Bluetooth, and enough ports to hook everything up (USB, Ethernet, FireWire, audio).
Nervous System: To bridge the gap between the computer and the servo motors, Sparky uses a MAKE Controller board.
Software: Sparky uses Skype, the popular free VoIP and vide-chat software as the basis for the current telepresence set-up, but we have augmented its chat functionality with custom software that add servomotor control. These files can be modified so you can add any additional functions such as sensors, gripper arms and more.
Other Components: LCD monitor, mouse, keyboard Webcam Cables - USB, Firewire, Ethernet, power, video, audio
Adjustable power supply for boosting servo strength
Tools: Allen wrench for Vex Screwdriver Snips
Assorted zip ties
CHASSIS & DRIVE TRAIN
Past versions of Sparky’s chassis have been based on different materials, including welded steel, legos and more. The current version of Sparky takes advantage of the VEX Robotic Design System, using the Erector Set-like steel girders, plates and nuts/bolts, as well as the included gears, wheels and axles. This kits saves a lot of time while you figure out the exact dimensions of your ‘bot. A couple of generic caster wheels provide agility in tight turns. You can build with similar toy-scale materials, or you can choose to fabricate a sturdier frame out of welded steel – just like the original Sparky.
The VEX kit includes many great parts, including standard servos with a limited 180* range of motion, but also two full-rotation motors – servos which spin completely around like DC motors. These are convenient because they simplify the requirements to create full-rotation wheel motion. (The original Sparky robot had 2 limited range servos, but these didn’t drive the robot wheels directly. Instead they physically moved potentiometers that were connected to the original wheelchair controls – a seemingly complex Rube Goldberg-like solution that has worked surprisingly well for years but still makes most engineers nervous!).
The VEX servos are not very powerful, but by using the enclosed gears, they can still provide enough torque to the wheels – although with the sacrifice of speed. It works well enough on hard surfaces but struggles on carpet or even over small bumps. The next step might be to add some stronger full rotation servos, or even make the jump to DC motors – although that would require additional programming as well.
Quite a bit of time has been spent reworking the VEX chassis to keep it as light as possible and still have all the parts fit. Particularly challenging was the choice of monitor. Originally I used a lightweight 7” LCD screen, but it had such low resolution that it was impossible to see well. Ultimately, an old 17” LCD did the trick, although with a considerable toll in added weight.
Another build issue is weight distribution. The battery, inverter and power supplies must be positioned so that their weight is centered between the wheels and not putting too much strain on either one. All of these issues combine to make a challenging puzzle of tightly packed components and zip-tied cables.
COMPUTER & PERIPHERALS
One reason why the current Sparky is so small is due the inspirational size of the Mac Mini. It was a remarkable realization that the computing power needed to drive this project was becoming diminishingly small. Previous efforts included a full-sized G4 desktop, a “Luxo Lamp” iMac, and even the rarely-sighted Mac Cube. I’ve even begun to poke around at the idea of an iPhone Sparky, but that has it’s own issues…
Connecting the computer hardware is straightforward. Looking at the back of the Mac from L to R, there is a power cable, Ethernet (to MAKE Controller), Firewire (iSight), monitor cable, USB (MAKE Controller), another USB (keyboard & mouse). All of the excess cabling, power bricks, etc… are zip-tied and wedged into the chassis. There are three AC power cords – the Mac, LCD monitor and the MAKE board – which all go into a 3-way splitter plugged into the DC-to-AC inverter, packed snuggly next to the 12 v. battery. The Ethernet and USB cable plug into the MAKE Controller, one for data, the other for power.
At this point, it’s a working WiFi-enabled computer, powered by battery, connected to the MAKE board and sitting on wheels (but not yet drivable). Now is a good time to test things. Fire it up and troubleshoot any issues with audio, video, WiFi, etc… Download and use Skype to make video calls. Be sure to clear all of these potential nuisances before moving on to the next phase.
A controller board is required to make a physical connection between the Mac and the servo motors. The board receives commands from the computer and turns them into electrical impulses that spin the motors. It can also take in signals from sensors (infrared, touch, light) and send that data back to the computer. There are many different controllers available. One of the most popular is probably Arduino, an inexpensive, open-source controller board that many people favor.
I received a MAKE board a few years ago when it was barely out of the prototype stage. Newer versions of the board are similar, but probably a little simpler to set up. I highly recommend visiting the MakingThings site for recent firmware and other updates to the board.
One nice thing about the MAKE controller is all of the conveniences built right into it, such as a huge number of analog and digital ports for input and output. Best of all for Sparky are the 4 plug-and-play servo slots. The VEX servos plug right in to slots 0 and 1, saving a lot of time and effort over creating the connections from scratch. The MAKE board also has a convenient toggle for servo power, which can come directly off the MAKE board at 5v, or an external power supply can be connected to boost the juice up to 9v. Sparky’s VEX motors are burdened with more weight than they are rated for, so the added power helps spin the wheels (The motors seem to have an internal cut-off circuit that prevents them from burning out if too much power is applied). If you are using Arduino or some other controller board, look online to find the info needed to drive servos. It should be pretty easy to find.
Sparky actually uses requires two computers - the onboard Mac Mini, and some other computer that is web-enabled and video-chat ready. Think of this second computer as Sparky’s “control booth.” I use an old powerbook and iSight camera.
Both computers require Skype. The Sparky project uses it for video chat, but also exploits its text chat function to “shoehorn” motor control commands through the Skype connection- so if Skype is connecting, the robot is drivable with no additional connection between them required.
How it works: In addition to Skype, Sparky requires custom plug-in software. The control booth plug-in comes with videogame-style, WASD controls mapped to the keyboard. Keystrokes from the booth are sent as text messages within Skype to Sparky’s onboard Mac Mini, where another copy of the plug-in receives the text messages and translates them into motion commands sent to the MAKE controller, which sends power to the servos.
Here are some instructions:
Overview -------- There are several pieces of software that need to be installed and configured:
Sparky Software Kit 1.0 New BSD License Author: John Celenza
1) Sparky Skype Listener Plugin -- runs along with Skype and listens
for incoming text messages with motor commands
2) Sparky MakeBoard Controller -- communicates with the Skype
Listener, parses abstract motor commands, sends low-level commands to
3) Sparky Controller Skype Plugin -- runs along with Skype on any Mac
OSX 10.4 and greater machine which you want to use drive your robot
Once you have these software packages installed and configured, you
are ready to go
1) Sparky Skype Listener Plugin
+ Download/Install Skype onto the robot computer
+ Download the Sparky Skpe Listener Plugin from
+ Drop this plugin application anywhere on your system, the Desktop is
+ Whenever you use your robot, you will want to start Skype, then
start the listener plugin
+ Once the listener plugin begins running, press the "Connect" button.
You should see a success message. If you do not, make sure you have
2) Sparky MakeBoard Controller
You will need to know a little about the "Terminal" program to install
the listener and prepare it to run automatically on startup
Your make board must be connected by ethernet and be configured to run
+ Download the MakeBoard Controller files from
+ There are 3 files to download, put these in /Sparky on your robot system:
control.hdf -- confiuration file that maps a control string like
"move_left" to servo actions
controld.php -- PHP script that listens for commands from the Skype plugin
shell_check_sprarky.php -- PHP script the makes sure controld.php is
+ edit control.hdf to configure the move commands as your wish. By
default, these commands are support:
+ add the check script to your cron scheduler so controld.php starts
on system startup:
open a Terminal (From Applications->Utilities->Terminal)
type "crontab -e" -- this will start the VI editor, if you do not
know how to use VI, try looking on Google, or just follow these steps:
move to the last line of the file with arrow-keys
paste: "* * * * * php /Sparky/shell_check_sparky.php &> /dev/null"
type ":wq" (which should appear at the bottom of the screen)
3) Sparky Controller Skype Plugin
On the machine from which you want to drive your robot, first install
Skype. Then goto #URL# and download the "Sparky Controller Skype
Install this plugin application anywhere on your system, the Desktop is fine.
When you start Skype, start this application second. Then click
"Connect", you should see a confirmation that the plugin is connected
to your Skype software.
Opertation Instructions ----------------------- Follow these steps to get your robot running once you have installed all of the software.
On the robot
1) Make sure you have a working wireless network that the robot can join
2) Start up your robot
3) Once booted and network connected, start Skype
4) After Skype fully loads and logs in, start the Sparky Skype Listener Plugin
5) Press the "Connect" button on the Skype Listener Plugin, you should
see a success message if the plugin could connect to Skype.
That should do it*! When someone calls the robot, it'll automatically answer!
*WHACKY BUG NOTE -- always click (focus) the text chat window in Skype
as the last action after making contact with a human driver. You may
need to open a text chat window from the "Windows" menu.
On the controller
1) Start Skype and log in
2) Start the "Sparky Controller Skype Plugin" and click connect, you
should see a success message if the plugin could connect to Skype.
3) Call your ready robot and start driving!