You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The docker container for running a talker ros2 run demo_nodes_cpp talker XML configuration file for talker in container
<profilesxmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
<participantprofile_name="UDP server talker"is_default_profile="true">
<rtps>
<useBuiltinTransports>true</useBuiltinTransports>
<!-- Set SERVER's GUID prefix: third number of prefix is server id -->
<prefix>44.53.00.5f.45.50.52.4f.53.49.4d.41</prefix>
<builtin>
<discovery_config>
<!-- Set this participant as SERVER -->
<discoveryProtocol>SERVER</discoveryProtocol>
</discovery_config>
<!-- Set up its own discovery server -->
<metatrafficUnicastLocatorList>
<locator>
<udpv4>
<address>talker</address>
<port>56543</port>
</udpv4>
</locator>
</metatrafficUnicastLocatorList>
</builtin>
</rtps>
</participant>
</profiles>
The docker container for running a listener ros2 run demo_nodes_cpp listener XML configuration file
<profilesxmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
<participantprofile_name="UDP server listener"is_default_profile="true">
<rtps>
<useBuiltinTransports>true</useBuiltinTransports>
<!-- Set SERVER's GUID prefix: third number of prefix is server id -->
<prefix>44.53.01.5f.45.50.52.4f.53.49.4d.41</prefix>
<builtin>
<discovery_config>
<!-- Set this participant as SERVER -->
<discoveryProtocol>SERVER</discoveryProtocol>
<!-- Set remote servers that this server will connect to configuration: - Prefix - PDP listening locator-->
<discoveryServersList>
<!-- connect to discovery server in container talker-->
<RemoteServerprefix="44.53.00.5f.45.50.52.4f.53.49.4d.41">
<metatrafficUnicastLocatorList>
<locator>
<udpv4>
<address>talker</address>
<port>56543</port>
</udpv4>
</locator>
</metatrafficUnicastLocatorList>
</RemoteServer>
<!-- remote server on other machine -->
<RemoteServerprefix="44.52.00.5f.45.50.52.4f.53.49.4d.41">
<metatrafficUnicastLocatorList>
<locator>
<udpv4>
<address>192.168.0.213</address>
<port>56543</port>
</udpv4>
</locator>
</metatrafficUnicastLocatorList>
</RemoteServer>
</discoveryServersList>
<clientAnnouncementPeriod>
<!-- change default to 250 ms -->
<nanosec>250000000</nanosec>
</clientAnnouncementPeriod>
</discovery_config>
<!-- Set up its own discovery server -->
<metatrafficUnicastLocatorList>
<locator>
<udpv4>
<address>listener</address>
<port>56543</port>
</udpv4>
</locator>
</metatrafficUnicastLocatorList>
</builtin>
</rtps>
</participant>
</profiles>
the host where containers are running
it runs FASTRTPS_DEFAULT_PROFILES_FILE=host_server.xml ros2 run demo_nodes_cpp listener XML configuration file for
I expect the listener running in a docker container can get messages from a talker running on the other machine
Current behavior
The host machine where containers are running can get messages from the other machine and the docker container where the talker is running.
Issue 1: sometimes I can only get "INFO_TS, DATA(p)" (acknowledge messages I assume) and heartbeat as shown below. But after I restart the listener it can get messages from the talker running on the other machine.
Issue 2: The listener running in the docker container can't get the message from the talker running on the other machine. I can only see traffic as below:
You can find port mapping from log below or in docker compose file.
Question: When the listener can get messages from the talker, the traffic goes through port "7413". Is it the Endpoint Discovery Phase? But it mentions "DDS Domain concept does not apply when enabling the Discovery Server mechanism."
On the same machine where containers are running, you can use XML configuration file and run FASTRTPS_DEFAULT_PROFILES_FILE=host_server.xml ros2 run demo_nodes_cpp listener
On the other machine, you can use XML configuration file and run FASTRTPS_DEFAULT_PROFILES_FILE=other_host_server.xml ros2 run demo_nodes_cpp talker
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Senaior description
The diagram below is my current setting.
ros2 run demo_nodes_cpp talker
XML configuration file for talker in container
ros2 run demo_nodes_cpp listener
XML configuration file
it runs
FASTRTPS_DEFAULT_PROFILES_FILE=host_server.xml ros2 run demo_nodes_cpp listener
XML configuration file for
it runs
FASTRTPS_DEFAULT_PROFILES_FILE=other_host_server.xml ros2 run demo_nodes_cpp talker
XML configuration file
Expected behavior
I expect the listener running in a docker container can get messages from a talker running on the other machine
Current behavior
The host machine where containers are running can get messages from the other machine and the docker container where the talker is running.
Issue 1: sometimes I can only get "INFO_TS, DATA(p)" (acknowledge messages I assume) and heartbeat as shown below. But after I restart the listener it can get messages from the talker running on the other machine.
Issue 2: The listener running in the docker container can't get the message from the talker running on the other machine. I can only see traffic as below:
You can find port mapping from log below or in docker compose file.
Question: When the listener can get messages from the talker, the traffic goes through port "7413". Is it the Endpoint Discovery Phase? But it mentions "DDS Domain concept does not apply when enabling the Discovery Server mechanism."
Steps to reproduce
I created a test here.
You can use compose.discovery_server.yaml to start.
On the same machine where containers are running, you can use XML configuration file and run
FASTRTPS_DEFAULT_PROFILES_FILE=host_server.xml ros2 run demo_nodes_cpp listener
On the other machine, you can use XML configuration file and run
FASTRTPS_DEFAULT_PROFILES_FILE=other_host_server.xml ros2 run demo_nodes_cpp talker
Fast DDS version/commit
ros2 doctor --report | grep fastrtps
results:
Platform/Architecture
I am using Ubuntu 22.04.3 amd64, ROS humble
Transport layer
Discovery server
Logs
Log from wireshark
Let me know if you need more input from me. Thank you for your help!
Beta Was this translation helpful? Give feedback.
All reactions