ROS-Thymio: examples

The launch file main.launch covers different use-cases. It launches all you need to interact with one or more Thymio: asebaros, thymio_driver, and publishes the robot’s model with the correct names. Add simulation:=True if the Thymios are simulated.

One Thymio

You want to control a single Thymio that is connected to an Aseba network at <DEVICE>.

Single driver

You can either use the single driver version, optionally selecting a <name>, which can be left empty.

roslaunch thymio_driver main.launch device:=<DEVICE> name:=<NAME> [simulation:=True]

This will launch all nodes within a parent namespace <NAME>, i.e. asebaros will create topics like <NAME>/aseba/events/odometry, and thymio_driver topics like <NAME>/odom. The namespace <NAME> is also added to services and topics related to the whole Aseba network, like <NAME>/aseba/nodes or <NAME>/aseba/load_script.

Multi driver

Alternatively, you can use the multi driver version: namespaces will be automatically assigned by asebaros

roslaunch thymio_driver main.launch device:=<DEVICE> single:=False [simulation:=True]

This will launch all nodes without a parent namespace. asebaros will create topics like thymio_<ID>/aseba/events/odometry, and thymio_driver topics like thymio_<ID>/odom. Services and topics related to the whole Aseba network, won’t have a namespace.

Multiple Thymios on the same Aseba network

The second configuration above, works fine for multiple Thymio all connected to the same Aseba network.

roslaunch thymio_driver main.launch device:=<DEVICE> single:=False [simulation:=True]

Each Thymio will have its own ROS namespace thymio_<ID> and a model with frame names prefixed by thymio_<ID> too.

Multiple Thymios on different Aseba networks

If you want to connect to different Aseba networks (e.g., two Thymios connected by cable), you have two ways.

A single driver for each network

Launch one asebaros and thymio_driver pair for each network. Use different names to differentiate them.

roslaunch thymio_driver main.launch device:=<DEVICE_1> name:=<NAME_1> [simulation:=True]
roslaunch thymio_driver main.launch device:=<DEVICE_2> name:=<NAME_2> [simulation:=True]

This results in two independent copies of asebaros and thymio_driver, prefixed with <NAME_1> or <NAME_2>. As they are connected to the same ROS network, you will be able to access both robots from ROS. For example, odometry will be available on NAME_1/odom and NAME_2/odom.

Aseba Switch and multi driver

Alternatively you can first join the Aseba networks using Aseba Switch to make the robot join the same network at port 33333.

asebaswitch <DEVICE_1> <DEVICE_2> -p 33333

We are back at use-case Multiple Thymios on the same Aseba network, i.e., you can now launch one copy of multi_thymio_driver and manage all Thymios.

roslaunch thymio_driver main.launch device:="tcp:host=localhost;port=33333" single:=False [simulation:=True]