Introduction
A bridge between Aseba and ROS
Aseba is an event-based architecture for real-time distributed control of mobile robots using a simple scripting language. Scripts are interpreted onboard of the robots’ microprocessors with minimal requirements (integer-only arithmetics). Tools such as Aseba Studio let users interact with Aseba. The official documentation is hosted at https://mobsya.github.io/aseba/about.html.
ROS is a set of open-source software libraries and tools to build robotic applications. ROS targets a broad range of platforms, from real-time controllers to personal computer. The official documentation is hosted at https://docs.ros.org.
Aseba and ROS are both distributed systems: nodes performs a task (like controlling a specific robot) and use specific protocols to exchange information with other nodes in the network.
The ROS node asebaros
acts as a bridge between the Aseba and the ROS networks, passing back and forth information.
This allows users to use ROS to program and interact with a robot that runs Aseba.
Note
This repository is a fork of the original ROS-Aseba by Stéphane Magnenat with several modifications to support new versions of ROS, multiple Aseba nodes and a larger set of functionalities. Branch master is the most similar to the original work and supports up to ROS1 melodic.
ROS Packages
The ros-aseba repository contains ROS tools to interface with a generic robot running Aseba:
asebaros: the implementation of the Aseba-ROS bridge
asebaros_msgs: interfaces for the Aseba-ROS bridge
asebaros_examples: examples of Aseba scripts and ROS launch files
The ros-thymio repository contains ROS tools to use the Thymio robot:
thymio_driver: a driver that pairs with
asebaros
to offer a ROS-conform interface to the Thymiothymio_msgs: Thymio-specific interfaces used by
thymio_driver
thymio_description: the 3D model of the Thymio robot
Use-cases
ROS-Aseba alone
Using asebaros
you can interface ROS with one or more robots running Aseba nodes.
You can access the Aseba node variables, send and receive Aseba events, and load Aseba scripts from ROS.
The ROS interface mimics the Aseba interface: values are arrays of (16-bit) integers.
The bridge translates data transparently between ROS and Aseba without modifying it.
Using asebaros
alone requires some understanding of Aseba.
ROS-Aseba with ROS-Thymio
ROS-Thymio uses a set of Thymio-specific Aseba scripts, a specific ROS node thymio_driver
, and
the generic interface from asebaros
to provide a ROS-conform interface
to all the actuators and sensors of the Thymio.
For examples, let us look at the steps to get readings from the Thymio IR [proximity/range] sensors:
ROS-Thymio loads a Thymio-specific Aseba script to (among other things) send out a notification when the proximity readings are updated
onevent prox emit proximity prox.horizontal
The above Aseba event
proximity
is captured byasebaros
, translated to a ROS message of type Event (storing the value ofprox.horizontal
in the fielddata
), and published on the ROS topicaseba/events/proximity
# informally asebaros_msgs/Event: data: [928, 3212, 2039, 1292, 1029, 0, 0]
The Thymio ROS driver subscribes to the topic
aseba/events/proximity
, uses the data in the messages to compute a range in meters for the central sensor, and publishes this as message a type sensor_msgs/Range, which has an accurate semantic, on topics likeproximity/center
.# informally sensor_msgs/Range: radiation_type: 1 field_of_view: 0.3 min_range: 0.0215 max_range: 0.14 range: 0.0543
Users programming an application-specific ROS node, may access
aseba/events/proximity
and/orproximity/center
, depending if they want raw and/or processed data. Users may also re-use a generic ROS node for range sensing, i.e., to filter or display the readings, that works with any range sensor conforming to thesensor_msgs/Range
interface.
More generally, asebaros
provides raw, low-level data, while thymio_driver
processed, high-level data.
Users who do not need low-level data, can treat asebaros
as a black-box and do not need
to understand how asebaros
or Aseba
work. If this is your case, you can skip the documentation of ROS-Aseba and jump to ROS-Thymio: how it works.
ROS-Thymio alone
Users can use the Thymio model provided by ROS-Thymio to simulate a Thymio using Gazebo,
which exposes a subset of the functionality of a real Thymio connected to thymio_driver
.
Note
In order to interact with ROS nodes, you don’t need to install the packages that provide the executables
(like asebaros
or thymio_driver
), but only the packages that provide the interfaces
(like asebaros_msgs and thymio_msgs).
For instance, if a Thymio is already connected to an asebaros
node running on a PC in the same network,
the user can interact with the robot from another PC without installing asebaros
.