3. ROS2 Discovery Server Example¶
In the following snippet we see a yaml file to configure a DDS Router to create a
Simple Participant in domain 0
and a
Local Discovery Server with ROS 2 configuration.
##################################
# ALLOWED TOPICS
# Allowing ROS2 HelloWorld demo_nodes topic
allowlist:
- name: "rt/chatter" # 1
type: "std_msgs::msg::dds_::String_" # 1
##################################
# SIMPLE PARTICIPANT
# This participant will subscribe to topics in allowlist in domain 0 and listen every message published there
SimpleROS2: # 2
type: local # 3
domain: 0 # 4
##################################
# ROS DISCOVERY SERVER
# This participant will subscribe to topics in allowlist using Discovery Server protocol as Server
ServerROS2: # 5
type: local-discovery-server # 6
ros-discovery-server: true # 7
id: 1 # 8
listening-addresses: # 9
- domain: "localhost" # 10
port: 11888 # 11
3.1. Configuration¶
3.1.1. Allowed Topics¶
In this section are the Topics that the DDS Router will route from
one Participant to the other.
Topic HelloWorldTopic
with datatype HelloWorld
,
and ROS 2 topic rt/chatter
with datatype std_msgs::msg::dds_::String_
will be forwarded from
one domain to the other, allowing different DDS domains to interact to each other.
allowlist:
- name: "rt/chatter" # 1
type: "std_msgs::msg::dds_::String_" # 1
3.1.2. Simple Participant¶
This Participant is configured by a name, a type and the Domain Id, in this case 0
.
SimpleROS2: # 2
type: local # 3
domain: 0 # 4
3.1.3. Discovery Server Participant¶
This Participant is configured by a name, a type and a listening addresses where Discovery Server will expect metatraffic data from clients.
ServerROS2: # 5
type: local-discovery-server # 6
ros-discovery-server: true # 7
id: 1 # 8
listening-addresses: # 9
- domain: "localhost" # 10
port: 11888 # 11
3.2. Execute example¶
For a detailed explanation on how to execute the DDS Router, refer to this section.
Execute a ROS 2 demo_nodes_cpp
talker in domain 0
:
ROS_DOMAIN_ID=0 ros2 run demo_nodes_cpp talker
Execute a ROS 2 demo_nodes_cpp
listener using Discovery Server as Discovery Protocol:
ROS_DISCOVERY_SERVER=";127.0.0.1:11888" ros2 run demo_nodes_cpp listener
Execute DDS Router with this configuration file (available in
<path/to/ddsrouter>/share/resources/configurations/examples/ros_discovery_server.yaml
).
Once the DDS Router is running, messages from talker in domain 0 will be forwarded by the Router
to the listener using Discovery Server, that will print them in stdout
.