RMW Configuration
This guide details how to configure the RMW implementation for the first time if using the ROS Interface.
ROS 1 Interface & Create® 3 Base
There is no need to configure the RMW on ROS 1.
ROS 2 Interface & Create® 3 Base
Note
This guide assumes that you have run the ROS 2 Software Setup for both your LoCoBot and remote computers.
The ROS 2 Interface uses rmw_fastrtps_cpp
as its RMW and the Fast DDS Discovery Server.
See iRobot's guide on Fast DDS Discovery Server configuration for more information.
Remote Computer
The remote computer has the following modifications, done by the remote installation script:
RMW_IMPLEMENTATION
Environment Variable
The remote computer's RMW_IMPLEMENTATION
environment variable is set to rmw_fastrtps_cpp
.
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
ROS_DISCOVERY_SERVER
Environment Variable
The remote computer's ROS_DISCOVERY_SERVER
environment variable is set to the LoCoBot's IP
address and port 11811
.
export ROS_DISCOVERY_SERVER=${LOCOBOT_IP}:11811
Fast DDS Super Client XML Configuration File
The remote computer's Fast DDS configuration file configures all participants to
act as a Super Client, setting the UDP locator to the address of the LoCoBot's LoCoBot's wireless
network interface's IP address, ${LOCOBOT_IP}
, and port 11811
.
<?xml version="1.0" encoding="UTF-8" ?> <dds> <profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles"> <participant profile_name="super_client_profile" is_default_profile="true"> <rtps> <builtin> <discovery_config> <discoveryProtocol>SUPER_CLIENT</discoveryProtocol> <discoveryServersList> <RemoteServer prefix="44.53.00.5f.45.50.52.4f.53.49.4d.41"> <metatrafficUnicastLocatorList> <locator> <udpv4> <address>${LOCOBOT_IP}</address> <port>11811</port> </udpv4> </locator> </metatrafficUnicastLocatorList> </RemoteServer> </discoveryServersList> </discovery_config> </builtin> </rtps> </participant> </profiles> </dds>
FASTRTPS_DEFAULT_PROFILES_FILE
Environment Variable
The remote computer's FASTRTPS_DEFAULT_PROFILES_FILE
environment variable is set to the
location of the Fast DDS XML configuration file. By default, this is
~/interbotix_ws/src/interbotix_ros_rovers/interbotix_ros_xslocobots/install/resources/super_client_configuration_file.xml
.
export FASTRTPS_DEFAULT_PROFILES_FILE=~/interbotix_ws/src/interbotix_ros_rovers/interbotix_ros_xslocobots/install/resources/super_client_configuration_file.xml
IP Routing Service
On the remote computer, a route is added to IP subnet 192.168.186.0/24
via the LoCoBot's
wireless network interface's IP address via a service running on startup.
ip route add 192.168.186.0/24 via ${LOCOBOT_IP}
The status of this service can be checked with the command:
$ systemctl status ip_routing.service ● ip_routing.service - Enable LoCoBot IP routing for 192.168.186.0/24 Loaded: loaded (/lib/systemd/system/ip_routing.service; enabled; vendor preset: enabled) Active: inactive (dead) since Process: 8940 ExecStart=/home/interbotix/interbotix_ws/src/interbotix_ros_rovers/interbotix_ros_xslocobots/install/resources/service/ip_routing.sh (code=exited, status=0/SUCCESS) Main PID: 8940 (code=exited, status=0/SUCCESS) interbotix systemd[1]: Started Enable LoCoBot IP routing for 192.168.186.0/24. interbotix systemd[1]: ip_routing.service: Succeeded.
The IP route can be checked with the command:
$ ip route list 192.168.186.0/24 via ${LOCOBOT_IP} dev wlp0s20f3
Here, we can see that the route has been added via the remote computer's wireless network
interface, wlp0s20f3
.
Create® 3 Base
Note
These modifications are done by Trossen Robotics and the user does not have to worry about modifying these unless they are setting up a robot themselves, or if they are dealing with a unique network setup.
The Create® 3 base has the following modifications:
- RMW_IMPLEMENTATION is set to
rmw_fastrtps_cpp
. - Fast DDS discovery server is enabled.
- Address and port of Fast DDS discovery server are set to
192.168.186.3:11811
.
You can find a list of all modifications the Create 3 Software Setup's ROS 2 Main Configuration.
LoCoBot Computer
Note
These modifications are done by Trossen Robotics and the user does not have to worry about modifying these unless they are setting up a robot themselves, or if they are dealing with a unique network setup.
The LoCoBot computer has the following modifications:
RMW_IMPLEMENTATION
Environment Variable
The LoCoBot computer's RMW_IMPLEMENTATION
environment variable is set to rmw_fastrtps_cpp
.
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
ROS_DISCOVERY_SERVER
Environment Variable
The LoCoBot computer's ROS_DISCOVERY_SERVER
environment variable is set to 127.0.0.1:11811
,
the localhost address using port 11811
.
export ROS_DISCOVERY_SERVER=127.0.0.1:11811
Fast DDS Super Client XML Configuration File
The remote computer's Fast DDS configuration file configures all participants to act as a Super
Client, setting the UDP locator to address 127.0.0.1
and port 11811
.
<?xml version="1.0" encoding="UTF-8" ?> <dds> <profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles"> <participant profile_name="super_client_profile" is_default_profile="true"> <rtps> <builtin> <discovery_config> <discoveryProtocol>SUPER_CLIENT</discoveryProtocol> <discoveryServersList> <RemoteServer prefix="44.53.00.5f.45.50.52.4f.53.49.4d.41"> <metatrafficUnicastLocatorList> <locator> <udpv4> <address>127.0.0.1</address> <port>11811</port> </udpv4> </locator> </metatrafficUnicastLocatorList> </RemoteServer> </discoveryServersList> </discovery_config> </builtin> </rtps> </participant> </profiles> </dds>
FASTRTPS_DEFAULT_PROFILES_FILE
Environment Variable
The LoCoBot computer's FASTRTPS_DEFAULT_PROFILES_FILE
environment variable is set to the
location of the Fast DDS XML configuration file. By default, this is at
~/interbotix_ws/src/interbotix_ros_rovers/interbotix_ros_xslocobots/install/resources/super_client_configuration_file.xml
.
export FASTRTPS_DEFAULT_PROFILES_FILE=~/interbotix_ws/src/interbotix_ros_rovers/interbotix_ros_xslocobots/install/resources/super_client_configuration_file.xml
IP Forwarding Enabled
IP forwarding is enabled on the LoCoBot computer by setting net.ipv4.ip_forward=1
in
/etc/sysctl.conf
. See this guide on IP forwarding from OpenVPN for more information.
# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1
Fast DDS Discovery Server Service
Fast DDS Discovery Server runs on the LoCoBot's computer as service fastdds_disc_server.service
at startup.
#!/bin/bash source /opt/ros/${ROS_DISTRO}/setup.bash fastdds discovery -i 0 & exit 0
The status of this service can be checked with the command:
$ systemctl status fastdds_disc_server.service ● fastdds_disc_server.service - FastDDS discovery server Loaded: loaded (/lib/systemd/system/fastdds_disc_server.service; enabled; vendor preset: enabled) Active: active (running) Process: 1349 ExecStart=/bin/bash -e /home/locobot/interbotix_ws/src/interbotix_ros_rovers/interbotix_ros_xslocobots/install/resources/service/fastdds_disc_server.sh (code=exited, status=0/SUCCESS) Main PID: 1393 (bash) Tasks: 10 (limit: 9105) Memory: 13.8M CGroup: /system.slice/fastdds_disc_server.service ├─1393 /bin/bash -e /home/locobot/interbotix_ws/src/interbotix_ros_rovers/interbotix_ros_xslocobots/install/resources/service/fastdds_disc_server.sh ├─1395 python3 /opt/ros/galactic/bin/../tools/fastdds/fastdds.py discovery -i 0 └─1397 /opt/ros/galactic/bin/fast-discovery-server -i 0 locobot systemd[1]: Starting FastDDS discovery server... locobot systemd[1]: Started FastDDS discovery server. locobot bash[1397]: ### Server is running ### locobot bash[1397]: Participant Type: SERVER locobot bash[1397]: Server ID: 0 locobot bash[1397]: Server GUID prefix: 44.53.00.5f.45.50.52.4f.53.49.4d.41 locobot bash[1397]: Server Addresses: UDPv4:[0.0.0.0]:11811