Keywords: Mobile robot platforms, Multi-robot systems, ROS
Inertial Motion Unit (IMU)
8x Long-range IR proximity sensors (20 cm)
2x Addressable RGBA LED
Long-time Autonomy 3-9 hours (1800 mA LiPo Battery)
PID speed control
Built-in battery charge
General Purpose Bus on top (I2C/Serial/IO)
Setup via Web Interface
Open Hardware and Software
We did choose ESP8266, which is a trend in recent projects, due to its high processing power, low-cost and a fast IEEE 802.11 connection with full TCP/IP stack. The use of servo motors gives us a good trade-off between size, control and speed, as other types of motors required extra components to work, making them difficult to integrate into a small body.
One of the novelties of the current version is the localization system. Unlike previous versions, HeRo now uses encoders to estimate its pose. A pair of inexpensive incremental encoders are mounted mechanically (using 3D printed parts) at both wheels reducing odometry to merely counting steps of both encoders. Furthermore, the output of the encoders can also be used as an input to a controller for closed-loop motion control.
In addition to the encoders, the robot also houses an accelerometer and gyroscope whose data can be fused into the velocity and position estimation to account for odometry errors, such as the slip produced by the wheels.
A primary requirement of a small robot used in swarm experiments is the measurement of distances to neighboring robots as well as obstacles. For reasons of both sensor size and cost, HeRo, like most other
swarm platforms, relies on infrared-based distance sensing. Eight IR transmitters and receivers are arranged in 45º increments around the circumference of the robot.
Since the autonomy of the robot is an important factor considering the time and number of experiments, we improved the autonomy of HeRo using a powerful 3.7 V 1800 mAh Li-Po battery. In addition, a 5 V DC-DC step-up module is used to regulate and manage the board power supply. These components enable the robot to perform up to 3 hours of experiments, considering the continuous use of all components.
Besides all these features, we also let an I2C/UART BUS in case we need to incorporate another external sensor or a specific module. In the following sections, we show how each part of the proposed architecture works.
In order to provide communication between a workstation and the robots, we implement HeRo as a ROS compatible robot by connecting them using a TCP/IP networking.
The communication is conducted by a publish/subscribe model, where topics made up of predefined message structures can be communicated between multiple nodes (processes) in the network. These topics, for example, odometry, can be accessed by any node in the network, allowing for easy scalability of publishers and subscribers. In this way, robots acting as publishers and subscribers can readily communicate with other robots in the network in a well-defined way.
However, most instances of swarm robots, including HeRo, are very limited to process native ROS instance. In nearly all cases, researchers are unable to provide the functionalities of the swarm robot in ROS, since they are not able to locally run the ROS core — a collection of process and programs that are pre-requisites of a ROS-based system.
To integrate these functionalities to less powerful microcontrollers without the need for a full instance of ROS, we implemented the communication module over the rosserial protocol. Rosserial is a protocol for wrapping standard ROS serialized messages and multiplexing multiple topics and services over a network socket.
In short, the rosserial nodes convert data from normal structured XMLRPC protocol handled by TCP natively in ROS to serialized data out to the microcontroller. This node also deserializes data from the microcontroller back into the correct message structures to be sent around the conventional ROS network.
Paper Draft – Available soon!