Kilobot Entry for AFRON 10 Dollar Robot Challenge

Michael Rubenstein, Radhika Nagpal, Christian Ahler
Self-Organizing Systems Research Group
Harvard University

The following describes our entry in the AFRON "10 Dollar Robot" design challenge, in the traditional: computing on-board, and programming off-board category. 

  1. High-level description of Kilobot design with total cost 
    • Kilobot is a simple robot, designed for easy manufacturing in large numbers, and has a low parts cost when produced in mass ($43 at quantity one, $14 at quantity 1000).  The hardware design as well as the software are made freely availible under the creative commons "Attribution-NonCommercial-ShareAlike" open source license.  When developing the Kilobot, a number of design decisions were made to keep costs low.  For example, instead of using a dedicated chassis for the robot, the simple 2 layer PCB doubles as the robot chassis.  Additionally, Kilobot uses two enclosed vibration motors for locomotion, enabling differential drive of the robot on a smooth surface (such as a whiteboard, metal, or polished wood table).  The choice of this locomotion strategy keeps the robot cost low and increases the robot's resilience to dusty conditions, when compared to standard geared DC motors found in many other robots.  For more information on this locomotion strategy see this paper.   Further Kilobot capabilities include:
      • Each robot can send messages to neighboring robots using an infra-red communication system, and measure distance to those neighbors by measuring the intensity of incoming messages.  Additionally, Kilobot can sense the intensity of ambient light, as well as its own internal battery voltage. 
      • For control, each robot has a built-in microprocessor, which can be programmed in C.  In addition to running the user program, this microprocessor handles all robot functions such as communication, movement, and sensing.  An API is available, allowing a user to programm a robot at a relatively high level, appropriate for educational uses.
      • Each robot is powered by a lithium-ion single cell rechargeable battery, which allows for 3 to 24 hours of continuous operation between recharges.  Additionally, each robot contains a built-in battery charging circuit; therefore, to recharge the battery, one simply applies 5 to 6 volts dc (such as from a USB port) across the legs and charging connector.
      • To aid in debugging the robot, each has a serial output as well as a RGB LED which can display 64 different colors.
                    
The above pictures show the isometric view (left) and the bottom view (right) of a Kilobot robot.  Some features are (A) vibration motors, (B) rechargeable battery, (C) rigid legs to hold a robot above the table, (D) downward pointing IR communication system, (E) RGB LED, (F) charging connector, (G) ambient light sensor.  

    • A detailed description of the robot can be found in our ICRA 2012 paper HERE
    • Kilobot is designed to be manufactured in bulk.  It also can be built completely by hand; however, some of the components are small pitch components and require a high level of soldering skill to be done correctly.  The total parts cost for a single robot is about $43, but the cost / robot is reduced to $14.47 at a quantity of 1000 robots.  
    • The PCB is designed for easy automatic assembly using a pick and place machine to populate most of the components on the robot PCB.  If this is done, then only simple soldering is required and each robot only takes 5 to 10 minutes of manual assembly.  Multiple robot PCB's can be placed in an array onto a single large PCB to further reduce costs and assembly time.

Photo showing an array of 33 robot PCB's for easy assembly using a pick and place machine.  
    • There are two options for programming a Kilobot. One option is to use an Atmega AVRISP programmer (availible from digikey.com, part #  ATAVRISP2-ND, cost $35 quantity one), and the other way is to use a custom made programmer which sends programs to the robots over IR. This custom programmer costs $45 for low quantities and about $20 for high quantities).  Both of these programming tools can be shared among many students/robots in the classroom.
 2.  A description of the educational applications and possible resources.
  •  The Kilobot robot allows students to learn C programming, interfacing with sensors (ambient light, IR distance, and battery voltage), and physical outputs (motors, RGB LED, and IR communications).  This allows them to explore the possibilities of programing a simple robot.  Additionally, since Kilobots can communicate to and sense neighboring robots, students can learn about networking, communication, and multi-robot systems.   
 3.   A list of parts, their sources (include URLs if applicable), availability, and their prices.
  •   The following is a BOM (bill of material) for the Kilobot robot.  All parts are sourced from digikey.com unless otherwise noted but the custom PCB is made by AdvancedCircuits.com.
  •   The following is a BOM  (bill of material)  for the optional custom made programmer.  All parts are sourced from digikey.com but the custom PCB is made by AdvancedCircuits.com  

 4. A list of other tools and equipment needed to create your robot and estimated prices.
  • Soldering iron (~$50)
  • Reflow oven (only needed if hand soldering all components ~$250)
  • Wirecutters (~$5)
  • Hot glue gun with glue (~$10) 
  • Tweezers (only needed if hand soldering all components  ~$5)
 5. Relevant drawings with dimensions.
 6. Step-by-step instructions for creating your robot.
  •  If the PCB is populated by a pick and place machine (recommended), then assembly starts at step 2; if the PCB is populated manually, then assembly starts at step 1.  The PCB is the main chassis, and most parts are attached to the robot by soldering them to the PCB, with the exception of the motors, which are hot glued to the battery case.  
  1. Solder all the surface mount parts onto the PCB
  2. Solder the 3 legs to the PCB
  3. Solder the wires for the 2 motors to the  PCB
  4. Solder the 2 sets of jumper headers to the  PCB
  5. Solder the battery case to the PCB
  6. Solder the ambient light sensor to the PCB
  7. Hot glue the 2 motors to the battery case
  8. Insert battery into battery case.
The steps from 2 to 8 take approximately 5 to 10 minutes depending on the skill level of the assembler.  The following video shows steps 2 to 8 being completed in under 5 minutes.  Note: some simple assembly jigs are used in this video to help with quick attachment of the robot legs and motors, but the use of these jigs is not necessary to build the robots.

  

 7.  Mass Manufacturability
  • Kilobot is designed to be assembled in large quantities to take advantage of lower parts cost and the parallel assembly of the PCB arrays.  If 1000 Kilobots are produced, then they only have about $15 worth of parts.  The robots part list includes prices for one robot and for 1000 robots.  The use of mostly surface mount components allows for easy assembly using pick and place machines, and small PCB size allows for many robot circuits to be assembled with the pick and place machine all together by placing the robot circuits in an array.  All remaining components are simply and quickly attached by soldering them to the PCB or using hot melt glue.    
 8. Software available.
  • The embedded software for the Kilobot is available open source, and can be found HERE including some example behaviors.  An API for the robot allows the user to write code at a relatively high level, appropriate for educational uses.  The API includes functions which interface with all the available robot hardware such as set_motor(), send_message(), and get_ambient_light().
 9. Description of any actual experiments conducted.  
  • We have done many experiments with Kilobot using small (1 to 5 robots) groups as well as larger (100 or more robots) groups.  An example of a single robot experiment is to have the robot move towards a light source (phototaxis).  In this experiment, the robot maintains a history of the ambient light that it detects, and commands its motors so that it "climbs" up the gradient of ambient light levels.  One of the multi-robot experiments that we have done is a simple implementation of robot dispersal.  We design a simple algorithm that tells the robots to move randomly if they see any neighbors and to stop moving if no neighbors are seen.  These simple rules cause an initially clustered group of robots to expand and explore the environment.  Many more example experiments can be found in the movies below.  A more detailed description of some experiments can be found in this paper.     
 10. Pictures of your robot.
  • Below are pictures of a single robot (left), multiple robots with the optional infrared controller(right).   
   


 11.  Videos of your robot in action.
  • The first video describes some of the robot hardware, its capabilities, and demonstrates the optional infrared controller.
  • The second video shows some behaviors of a few robots working together.  These include a single robot moving around a stationary robot using distance sensing, and 2 experiments where a single robot uses communication with neighboring robots to control its movement.  
  • The third video shows behaviors of many robots together.  First it shows an ant-inspired foraging algorithm, follow-the-leader behavior, and dispersal.  This video also shows Kilobots running a firefly-based synchronization algorithm popular in the field of sensor networks.