Hardware‎ > ‎The Critterbot Robot‎ > ‎

Critterbot Mach 1

The Mach I critterbot was designed to have a rich set of low-level sensors and a simple action space to work in. The ultimate goal of this robot is to inhabit our lab, interacting with the environment over long periods of time and learning a variety of tasks and knowledge about the world. It has been designed to survive daily life with humans, getting kicked and knocked about are expected to be regular occurrences.


The robot has a holonomic drive, so it is able to move at any angle relative to the direction it is facing and rotate independently. This is made possible by three custom-made omni wheels, each offset 120 degrees from the next. Control is currently available at several levels. The highest works in cartesian coordinates relative to the robot heading, the user provides x, y, and rotational velocities. Below this is wheel velocity control, here each wheel's velocity is controlled independently. At the lowest level you are able to control the PWM value sent to each wheel. There is a current limiting system in place to prevent any damage to the motors, regardless of the commands sent.


Feedback and interaction with humans is available via an on-board speaker and a ring of 16 polychromatic LEDs on top of the robot. The speaker is driven by the on-board computer, however there are no plans to use speech as an interface. The robot will instead be able to make expressive chirps and tones, a la R2D2. The LED's are capable of displaying data from on-board sensors as well as giving general information about the state of the robot and hardware. Additionally the agent is able to individually control the color and intensity of each of the lights to display other information. A Wiimote is available to let people provide an external reward signal or commands. For detailed information on communicating with the robot, see the Critterbot interface.


Motor control and battery charging/power management are handled by ATMega 168 AVR microcontrollers. Higher-level hardware tasks, cartesian coordinate control, and sensor collection are handled by a 50Mhz ARM processor running a simple multitasking operating system. Interfacing with this is a PC-104 stack that provides a 500Mhz x86 processor, 1Gb of RAM, and wireless communication over 802.11a/b/g, and an interface with the speaker and microphones. The computer is running Gentoo Linux and in addition to being able to directly control the robot it provides a network interface via Disco.


The sensors that are currently reporting data are:

  • System bus voltage
  • Ambient light sensors (4)
  • 3-axis accelerometer
  • Single-axis gyroscope
  • Sharp IR distance sensors (10)
  • Motor velocity feedback (3)
  • Motor current feedback (3)
  • Motor temperature feedback (3)
  • Thermopile remote temperature sensors (4)
  • IR photodiodes to detect IR beacons (8)

Sensors that are not yet functional:

  • 3-axis magnetic field sensor
  • Bump sensors (32)
  • Stereo microphones