- Overview: a summary of the project
- Hardware: descriptions of hardware modifications
- Software: descriptions of the code to run the new robots
- Downloads: get 3D printer, laser cutter, and software files here
- People: who's involved in the project
If you use our hardware or software files for your own projects, we'd love to hear about it! Send us an email. If you publish a paper using this robot, please cite us as follows:
MyKeepon is an inexpensive toy version of Keepon, a research robot designed for social human-robot interactions. We have modified MyKeepon toys to design a low-cost, open source research platform. This page contains details about our modifications, including the files you need to make your own robot!
Low-cost robot platforms open the possibility for studies investigating human-robot interaction with multiple robots. They also provide a tenable solution for in-home robots and robots that interact with children, which must be inexpensive, robust, and easily repaired. Finally, these modified MyKeepons can be educational tools for people interested in learning about robotics.
View the poster about this project that was presented at the CogSci/AAAI Joint Robot Expo in Quebec City in July, 2014.
We've taken our robots on the road as part of various public displays, interacting with the public as well as with other researchers.
Our first attempts, which did not involve removing any MyKeepon motors, is detailed here: Original Fix.
We removed the original MyKeepon motors and motor controllers and replaced them with more precise, programmable hobby servos. We connect these new motors to existing structures (like shafts and gears) inside the robot to maintain the built-in motions. All motor control is performed by an Arduino board, which can be connected to a computer to receive real-time commands.
The original MyKeepon robot has three motors controlling four degrees of freedom, but we use a single servo for each DOF. Most motors fit inside the robot's black base, and these motors are attached to the robot's internal structure with 3D printed brackets (STL files below).
Because of space limitations, we move the pan motor outside of the black base. Pan is achieved by placing the whole robot atop a rotating platform. Therefore, you must print the pan base if you would like to have the robot pan (STL files below).
Some of the motors must be prepared for interfacing with the robot gears by inserting a small metal rod into their shaft. Instructions on how to do this are in photographs under "Motor Preparation" below.
Motor Control Board
For motor control, we employ an Arduino Uno with a servo driver attachment. Plug the servo driver into digital input pins on the Arduino (starting at pin 2) using the header pins that come with the servo driver board.
We include parts and files for laser-cutting an acrylic box for the robot. An example of the acrylic box can be seen in the right-hand picture above. The box is optional, but it makes the robot more transportable and dampens some of the motor sound.
We also include parts and files for 3D printing a camera sling that slides over the robot body and sits on top of the black base. This sling has a slot that is fitted for the camera specified in the bill of materials. You can leave this off if you don't want a camera for your robot, or if you want to affix a camera to the robot body in some other way.
- Bill of Materials: xlsx
- Instructions: pdf
- Motor Preparation: zip
- Motor Brackets: zip
- Pan Base: zip
- External Box: zip
- Code: zip
On this page, we provide Arduino code to control the robot. The Arduino program (FullServoKeepon.ino) listens on its serial port for command strings from a computer. Command strings are of the form ppptttrrrbb, where ppp, ttt, and rrr are 3-digit motor positions (from 0 to 180) for pan, tilt, and roll, respectively. bb is a 2-digit value indicating the desired (approximate) number of bops.
To run the software, load the .ino sketch onto the Arduino and connect it to your robot by plugging the motors into the appropriate pins as specified in the Arduino sketch. Then, send serial commands to the Arduino in the above format.
You may need to download the SoftwareServo library, which can be found here: SoftwareServo Library
In the code folder below, we also offer a second Arduino sketch that outputs debug messages. Because the main Arduino's serial stream is taken up by listening for motor commands, use a second Arduino loaded with the DualSerial_Slave.ino sketch to see debug output. Instructions for attaching the slave Arduino to the master Arduino are in the comments of the slave .ino file.
Downloads (updated 8/2014)
Download all the files here: zip (5.3 MB). This zip contains the following files:
This project is a collaboration of two NSF Expeditions in Computing: Socially Assistive Robots (Yale University) and Computational Behavioral Science (Georgia Institute of Technology). The following people are involved: