Skip to content

Joining the arena

Matheus V. C. Cogo edited this page Nov 22, 2023 · 4 revisions

Joining the arena

MQTT entities

For MQTT entities, it is necessary to publish an ArenaHeartbeat message directly to the MQTT broker.

To "see" the arena, simply subscribe to all units' heartbeats using + wildcards: conceptio/unit/+/+/+/heartbeat. To see the position, subscribe to conceptio/unit/+/+/+/data/kinematics

ROS2 entities

Local ROS2

If you are integrating entities into the same local network as the arena, simply publish to ROS2 topics. Mqtt_mirror will listen to ROS2 topics and broadcast them to the MQTT broker, and vice-versa.

Remote ROS2

As ROS2 does discovery with UDP multicasting, communicating with ROS2 entities across the internet is troublesome. Instead of using a VPN (which may require extra permissions to run/setup), remote ROS2 entities can use the mqtt_mirror node.

The node allows ROS2 topics to be mapped to MQTT topics at the broker and vice-versa. The Concept.IO arena topics are automatically mirrored between the two, and the node continuously tries to find new topics every 5s.

To sum it up, here is how to join using a remote ROS2 environment:

  1. Clone the conceptio_bridges package.
  2. Move and Build the conceptio_bridges package (remember to source ROS2 first!):
cd conceptio_bridges && colcon build
  1. Source the conceptio_bridges package:
source install/setup.bash
  1. Launch the package (which automatically runs mqtt_mirror):
ros2 launch conceptio_bridges conceptio_bridges_launch.py mqtt_host:=BROKER_IP mqtt_port:=BROKER_PORT

Clone this wiki locally