De CoffeeBrain-Wiki



The development of an inexpensive robotic platform is presented. Our aim is to provide a complete hardware tool as a low cost laboratory, to illustrate control systems. The capabilities of this platform allows both, researchers and students, to implement from basics techniques to complex ones (e.g. from PID to multi-agent systems). The hardware that has been designed and developed performs experiments for single or multiple robot control employing capabilities like: locomotion, communication, perception, and autonomous decision making. We illustrate three different control techniques using this platform.



This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License Cc.png Under the following terms:

  • Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • NonCommercial — You may not use the material for commercial purposes.
  • ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
If you need any additional information you can contact with :

1 Overview


The general design is presented using layers: The bottom layer supports the physical components, which compose the robot: Motors, IR sensors, expansion socket and modules, Rgb Led, Lipo Battery, Lipo charger, and global positioning system using an overhead camera. The peripheral layer is powered by the ATmega168A microcontroller, it allows to manage and drive all the physical components Above, the control layer performs the necessary actions to drive the robot in a safe way in their environment and complete tasks. The application layer describes the individual and collective actions that emerges when the robot, or the group of robots are operating. Finally the top layer, allows user trought the communication layer, debug, run, start/stop, and programming the robots.

2 Hardware Description


The complete hardware, is described in the previous picture. It is compound by: robots, computer, web-cam and controller board (the green one attached to computer). In the computer the user can write codes to program the robots (using AVR-Studio), also it runs the "Central controller" software that allows both send commands to robots, and process the web-cam information to global positioning system. The "Central controller" software is compatible with any web-cam with a minimum resolution (340x480 and 30 fps). The computer application communicates via USB with a Central Controller board designed to send user commands to robots wirelessly. The "Central controller board", has an AT90USB162 microcontroller that receives USB data from computer and send to the robots using the module NRF24L01, it also allows wire programming via (AVR-ISP).

2.1 Robot Main Board

MainBoard.png Assembly.pngBot.png

The robot system is described in the block diagram above. The main parts are:

  • Embedded Computing: The embedded computing is powered by an Atmega168A microcontroller, which has an 8 bits architecture,running at 8MHz with 16K of memory, and a set of peripherals to manage different components. The programming language using is C and we provide the necessary libraries to drive the basic functions of the robot.
  • Locomotion subsystem: It is based only on the contact between the rotor of two tiny 3V electric motor and the surface. The manage of the motors speed and direction is done by the microcontroller, using PWM and digital pins, using the TB6552 driver .
  • Communication: Here, we use an ultra low cost transceiver RF (at 2.4GHz) module NRF24L01, which gives the robot the possibility to interchange data with the operator and other robots.
  • Power and Charging Management: The electronics are powered by a 3.7V, 200mAh LiPo battery. A voltage regulator is used to maintain a constant voltage of 3.3V and enable operation above 5 hours of constant working. Also an external LiPo charger has been built that uses an MCP73833 to manage battery reload.
  • Assembly and Costs: Three custom 3D print parts for easy setting-up and calibration of the motors and IR sensors are designed. These two pieces do not need to use glue or screws. An exploded view of mechanical assembly is shown. The 3D pieces models are available Here.
  • The Electronic design is available Here.

2.2 Lipo Charger


The Lipo charger board is USB (5V) compatible, it allows to charge a single cell Lipo battery, using the IC MCP73833. It recommendable to use a GP connector between battery and board (take care about polarity !!). The design and fabrication files are available Here

2.3 Central Controller Board


The Central controller board is also USB (5V) compatible. It has two functions:

  • First one: It can be used as a programmer emulating the AVRISPmkII programmer. Refer to the software section to it usage. When you have configured the Central controlled board as a AVIPSmkII programmer you just have to interconnect the ISP pins of this board and the ISP robot socket and avr studio to code and run your code.
  • Second one: It can be used as Wireless commander to the robots, for this you just have to plug-in the board and install the required drivers (Software Section).

This board has one ISP connector, a USB port, and two buttons: left one is the reset button and rigth one is the ~HW button that allows enter lo the Fip-mode.

    • The Flip mode allows, charge new firmwares to the board, using the Flip software. To enter in this mode you have to plug the board to pc via USB, and then holding de ~HW button press the rest button, then release the ~HW button and open Flip Software.

All the hardware design is available Here.

3 Software Description

The software developed is divided in three parts. The first one is the robot firmware, that allows drive the motors, read the sensor, and implement controllers. Second one is the "central controller board" firmware and drivers. Finally the user interface to send start/stop commands to the robots and processing overhead camera images.

3.1 Robot Skecth

The Robot Sketch is a basic template write in C code that shown the basic functionalities of the robot. It also provides all ( Here) the libraries to drive the complete set of the robot peripherals, read the entire sensors set, and also apply controllers to perform different tasks. Read the documentation inside the code. For work over this sketch you are going to need the avr studio IDE available | Here.

3.2 Central Controller

The code for central controller firmware is available Here The code for central controller computer software is available Here

3.2.1 AVRISP programmer

As it was explained in the previous sections the central controller board can be used as a programmer using AVRISP-mkII. In the Programmer folder you could find AVRISP.hex and the Flip Installer - Enter in the Flip-mode and the load the AVRISP.hex file. Then you could use the programmer as AVR-ISPmkII programmer.

3.2.2 Central Controller Firmware

In the folder "programmer", the ATMEL-STUDIO project "USB NRF24L01" is the firmware to communicate the Java user interface over USB protocol, with the robots, wirelessly via NRF24L01 module.

3.2.3 User Control

In the folder CentralControllerSW you could find the open CV installer and the JAVA-USB utility. Also the Java project "Central Controller" to communicate the user with the robots and camera via Java program interface. You could use Eclipse-IDE to modify and launch this code.

4 Capabilities and Demos