Multi-computer DDS Configurations

Like all ROS 2 applications, MoveIt Studio relies on a DDS based ROS middleware (RMW) for intercommunication between processes.

For additional information, refer to the ROS Documentation on Middleware Implementations.

By default, we generally use Cyclone DDS, though specific use cases may call for alternatives.

Note

In our experience, many failures are caused by misconfiguring DDS settings. When launching MoveIt Studio, or connecting any additional ROS 2 nodes or processes, we strongly recommend that you check your local environments for any dangling DDS configuration.

If connecting external applications to MoveIt Studio, you must be certain that the generated DDS configuration will function with what is running in your other processes.

Cyclone DDS

On container creation, MoveIt Studio will generate a DDS configuration on the fly from the variables specified in the environment, .env file, or docker-compose.yaml.

For Cyclone DDS, the application specific variables are:

  • RMW_IMPLEMENTATION - Should be set to rmw_cyclonedds_cpp, as noted in the ROS documentation.

  • CYCLONEDDS_URI - Specifies the location of the Cyclone DDS configuration file. Should default to $HOME/.ros/cyclonedds.xml.

  • CYCLONEDDS_NETWORK_INTERFACE - Specifies the network interface for Cyclone DDS to use. Default set to lo.

  • CYCLONEDDS_USE_MULTICAST - Whether or not to use multicast. Default set to false.

  • CYCLONEDDS_PEER_ADDRESSES - The network addresses of all peers to your application, as a comma-separated list. Default set to 127.0.0.1.

A full, sample Cyclone DDS configuration is provided, as referenced by $CYCLONEDDS_URI:

<?xml version="1.0" ?>
<CycloneDDS xmlns="https://cdds.io/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://cdds.io/config https://raw.githubusercontent.com/eclipse-cyclonedds/cyclonedds/master/etc/cyclonedds.xsd">
  <Domain id="any">
    <General>
      <Interfaces>
        <NetworkInterface name="lo"/>
      </Interfaces>
      <AllowMulticast>false</AllowMulticast>
    </General>
    <Discovery>
      <ParticipantIndex>auto</ParticipantIndex>
      <Peers>
        <Peer Address="127.0.0.1"/>
      </Peers>
      <MaxAutoParticipantIndex>120</MaxAutoParticipantIndex>
    </Discovery>
  </Domain>
</CycloneDDS>

FastRTPS

MoveIt Studio also supports eprosima Fast RTPS (formally FastDDS) as a DDS implementation.

To use Fast RTPS, set the following environment variables,

  • RMW_IMPLEMENTATION - Should be set to rmw_fastrtps_cpp, as noted in the ROS documentation.

  • FASTRTPS_DEFAULT_PROFILES_FILE - Defines the location of the default profile configuration XML file. The file specified here will be mounted to the MoveIt Studio container at start time.

  • RMW_FASTRTPS_USE_QOS_FROM_XML - Default is unset. Set it to 1 to allow any QoS settings from your specific XML configuration to actually take effect.

For additional information, refer to the ROS 2 package’s README.