The goal of the GRITSBot project is to make multi-agent experiments more accessible to the research community at large as well as to students of all age groups (highschool, undergraduate education, as well as graduate education). In a further step, we intend to open up a show testbed to the general public.

Revision 1 of the GRITSBot. The left image shows the layered architecture of the robot. The image on the right illustrates the compact footprint of the robot.

Current multi-agent robotics testbeds come at a (prohibitively) high price tag or are highly specialized pieces of equipment that require skilled technicians capable of maintaining a collective of robots. A typical multi-agent setup features wheeled robots (such as Khepera robots, e-Puck robots, or the like) and a tracking system to provide global position data to the robots (to close the feedback control loop). The GRITSBot aims at replicating such a setup albeit at a much lower cost as well as with robots significantly reduced in size without limiting the capabilities of the individual robots. Therefore, the GRITSBot is a wheeled differential-drive microrobot that resembles state-of-the-art platforms while closely replicating typical capabilities: wheeled locomotion, wireless communication to a host computer, infrared-based distance sensing, accelerometer and gyroscope, and onboard power for operation up to 5 hours.

Given typical capabilities of existing platforms, let us outline the design requirements of the GRITSBot. These requirements aim at replicating existing capabilities of multi-agent testbeds and therefore simplifiying the transition to a new microrobotic testbed. Additionally, required capabilities are determined by algorithms that will have to run on the robots (decentralized algorithms such as consensus or centralized algorithms such as global feedback position control). To summarize, at minimum, a GRITSBot should have the following capabilities:

  • High resolution and accuracy locomotion
  • Range and bearing measurements
  • Global positioning system
  • Wireless communication with a global host

Additionally, to simplify maintenance and usage of the GRITSBot, desirable features are the following:

  • Automatic sensor calibration
  • Automatic battery charging
  • Wireless reprogramming
  • Local communication

To lower the entrance barrier into multi-agent robotics and realize these requirements, the GRITSBot was designed with two main goals in mind: an inexpensive design for simple and cheap replication as well as usability (i.e. simplicity in maintaining a large collective of robots). These two overarching goals can be broken down into more details as follows:

Simplicity in design

  • Low hardware complexity through a low number of parts and a modular stacked design (the total part count is about 65)
  • Modular design, i.,e. Each layer/board of the GRITSBot serves a dedicated purpose and can be swapped and upgraded individually. Currently three layers serve as motor board, main board, and sensor board.
  • Low cost is first of all achieved through a low part count but mainly through a novel locomotion system based on low-cost stepper motors typically found in DSLR cameras. The total price tag of parts for a single GRITSBot amounts to approximately $50.


  • A small form factor allows the robots to be used on as small an area as a coffee table. An individual robot’s footprint is approximately 3×3 cm.
  • The GRITSBot supports multiple features that enable maintenance and use of a large collective of robots, such as automated sensor calibration, autonomous charging, wireless reprogramming of individual or groups of robots, as well as collective and remote control of robots.
  • A GRITSBot can be assembled in approximately an hour and – after initial setup and programming – won’t require physical interaction with the operator/maintenance technician anymore (because of autonomous recharging and wireless reprogramming).

Detailed design and features of the GRITSBot

The GRITSBot is composed of three individual layers that house five functional blocks of the robot. The motor layer is responsible for controlling the two onboard stepper motors as well as for odometry. The main board houses the main processor, the wireless communication module as well as the battery charging circuit and the power supply. The sensor layer includes six infrared distance sensors, an accelerometer, and a gyroscope. We will briefly introduce every layer individually and point out important features.

The three layers of the GRITSBot (top view, from left to right): sensor board, main board, and motor board. The labelled parts are the following: IR sensor (A), accelerometer/gyro (B, not equipped), main microcontroller (C), LiPo battery charger (D), voltage regulator (E), motor board microcontroller (F), stepper motor (G), battery voltage measurement (H), motor driver (I).

Locomotion: The locomotion is the GRITSBot’s most novel feature. Instead of using conventional DC motors that require encoders to determine their velocities, the GRITSBot uses stepper motors. Unlike DC motors, stepper motors move in discrete steps (in the case of the GRITSBot 40 steps per revolution). Therefore, velocity estimation is reduced to counting the number of steps per unit of time, which is significantly more robust and accurate than encoder-based velocity estimation. One drawback of this design is that each motor requires a dual-channel motor controller as opposed to just one motor controller for 2 DC motors. The cost of an additional motor controller is however offset by inexpensive stepper motors (~0.32 $ a motor).

Sensing: The GRITSBot’s main sensing relies on six infrared distance sensors that are arranged in 60 degree increments. Each sensor can measure distances in the range of 0.5 to 10 cm. In addition the GRITSBot is equipped with an accelerometer and a gyroscope whose data can be fused in the position estimation algorithm.

Communication: The second revision of the GRITSBot is equipped with a Nordic nRF24L01+ transceiver module operating at 2.4 GHz and capable of a data rate of up to 2 Mbps. This chip was chosen over WiFi for the main reason of power consumption. Whereas a WiFi chip consumes up to 250 mA in transmit mode, the nRF24L01+ chip draws a mere 16 mA of current therefore increasing battery life significantly.

Processing: In addition to the microcontroller controlling the motor board, each GRITSBot is equipped with an Atmega328 chip on the main board responsible for wireless communication, sensor data processing, and running high-level user-defined behaviors (such as consensus).

Power system: The GRITSBot is powered by a 150 mAh (or alternatively a 400 mAh) single cell LiPo battery. The nominal voltage of 3.7V of the battery is regulated down to 3.3V, which is the system operating voltage. Depending on the activity level of the robot, it remains operational between 1 and 5 hours. Note that the GRITSBot is also equipped with a LiPo battery charging circuit and charging prongs that allow it to autonomously recharge.

The testbed as support system

The support system of the robot serves two purposes: it increases usability/maintainability of the system and closes the feedback loop through visual tracking of the robots. Currently, the testbed features automatic sensor calibration, autonomous charging, a global visual positioning system, and wireless reprogramming of the robot.

Calibration: The infrared distance sensors of the robot don’t actually measure a distance per se, but instead a voltage corresponding to distance. The purpose of calibration is to establish a mapping of voltage to distance. The calibration tool in the figure below automatically establishes such a mapping for all sensors of the robot. Essentially, two motors of the calibration tool rotate one of the robot’s sensors into line of sight to an obstacle whose distance to the robot is controlled through a second motor. The calibration station communicates with the robot through a standard I2C bus and the robot stores the calibration data in its non-volatile memory. That allows it to retain the calibration data through power cycles, i.e. the calibration only has to be done once.

The calibration tool holding a GRITSBot with the following components: stepper motor rotating the robot (A), a GRITSBot without the motor board (B), the moving obstacle (C), stepper motor varying distance robot-obstacle (D), microcontroller (E), data and power bus (F).

Charging:  One of the main usability features of the GRITSBot is its capability to autonomously recharge. Currently this is done through two extending prongs and embedded metal charging strips in the testbed walls. The robot simply has to establish contact between its charging prongs and a testbed wall by driving up to it. The prongs are directly connected to the robots charging circuit and allow it to recharge its battery within approximately an hour. In future revisions, these prongs will be replaced with magnetic connectors to increase reliability of the charging process.

Example usage of the GRITSBot’s contact-based charging system.

Global positioning: The positioning system relies on a visual fiduciary system that uses unique ID tags attached to each robots and an overhead camera to track them. In the current implementation we use AprilTags (C++ library available here) and a standard webcam. The image processing is done on a laptop equipped with an i7 processor and resulted in an update rate of approximately 10 Hz. In the next iteration, we will use the Pixy CMUcam5 Sensor designed by Carnegie Mellon University, which accomplishes the image processing through a dedicated hardware processor and can run at up to 50 Hz. Instead of AprilTags, the Pixy CMUcam5 relies on color tags.

Wireless reprogramming: The second revision of the GRITSBot comes equipped with an external memory chip added to the motor board. Said chip allows wireless reprogramming of both the main and the motor board of the robot. We have implemented a bootloader for the Atmega chips onboard the robot that is capable of reading a program from the external memory chip and upload it to the internal flash memory of the Atmega chip. The new program is transmitted to individual robots or groups of robots through the wireless channel and temporarily stored in the external memory chip before being uploaded to the microcontrollers of the robot.

Detailed specifications of the robot

The schematics, board design, and bill of materials can be downloaded in the next section. Here, we just want to outline the main functional components of each layer of the GRITSBot.

The sensor board houses all sensory components without any built-in microcontroller and therefore relies on the main board for sensor data processing. Its main components are the following:

  • MPU 6050 accelerometer and gyroscope
  • TSKS5400 infrared emitter
  • TEFT4300 infrared receiver

The main board is responsible for central processing of sensor data and executing high-level behaviors. Additionally, it takes care of wireless communication and power supply. Its main components are the following.

  • Atmega 328 microcontroller
  • nRF24L01+ RF transceiver
  • MCP73831 LiPo battery charging chip
  • MCP1700 3.3V voltage regulator

Lastly, the motor board includes all components related to locomotion, including a microcontroller and two motor drivers to control the stepper motors. Additionally it is equipped with battery voltage measurement circuitry and a memory chip for reprogramming the robot remotely. Its main components are the following.

  • Atmega 168 microcontroller
  • LB1836M motor drivers
  • Miniature stepper motors
  • Two 0.1% tolerance precision resistors
  • AT24C256C EEPROM chip

Related Publications