The main documentation is the actual docker-compose.yml
file. It sets up the following:
- Several replicas of ROS2 containers (named
ros_publisher
) that uses Cyclone DDS and publish on the topic/foo
. This is connected to the networkros_network_1
. Think of it as running on multiple robots or ROS nodes running in a connected ROS2 network - Also in the
ros_network_1
runs a Zenoh-ros2dds bridge (container namedzenoh
). It bridges the Cyclone DDS ROS2 with Zenoh. This acts as a server that listens on port 7447 for other Zenoh peers and on 8888 it exposes its HTTP REST API, both on azenoh_network
, i.e. this is the network (e.g. Wifi, 4G) that connects different robots or a central controller to robots etc. - In another
ros_network_2
(think of it as a robot coordinator, or another robot, which is not directly using DDS to talk to the first network), there are a ROS2 subscriber (ros2_subscriber
) on the/foo
topic. And on this second network there runs another Zenoh-ros2dds bridge (container namedzenoh_conect
), but here it connects (it initiates the connection, i.e., it conects to the other bridge on its port 7447) to the the previous Zenoh bridge via thezenoh_network
. - Also on the
ros_network_2
runs a ROS2-ROS1 bridge (containerros_bridge
), and a ROS1 subscriber (containerros1_subscriber
), to test the ability to bridge to ROS1 containers. Theroscore
is being run as part of theros_bridge
- It also features a Zenoh MQTT bridge (named:
zenoh_mqtt
), that connects to thezenoh
container and acts as an MQTT broker, allowing MQTT clients to receive/publish any ROS topics
eclipse/zenoh-bridge-mqtt:latest
lcas.lincoln.ac.uk/lcas/ros1_bridge:latest
lcas.lincoln.ac.uk/lcas/ros2_test:latest
lcas.lincoln.ac.uk/lcas/zenoh_ros2dds_bridge:latest
ros:noetic