0
$\begingroup$

as mentioned in this ticket, we are facing problems in running reliably the turtlebot4 (aka T4) with nav2. This robot has a raspberry PI communicating over USB (simulated as an ethernet communication) to an "embedded processor" which runs a closed source fw. The problem seems to be triggered during the discovery process (not clear yet which is the real cause) and ultimately seems to impact the CPU usage of the embedded processor of the robot. In the ticket mentioned above, we are using FastDDS. Recently I have seen that at RosCon23 there have been demos running one and two T4s with Zenoh. Has anyone tried a similar configuration? There is some info here, but I couldn't find any details about those demos. Thanks

$\endgroup$

2 Answers 2

2
$\begingroup$

I recently gave an online webinar about the Zenoh plugin for ROS 2. It includes a detailled explanation of the Turtlebot4 + Zenoh demo we showed at ROSCon 23. Here is a direct link to this sequence: https://youtu.be/-WZAA35jLxc?t=1525

And here is a short description of the setup:

  • On Turtlebot4:

    1. Use those ROS settings:
      ROS_DOMAIN_ID=0
      RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
      
    2. Use this CycloneDDS configuration file:
      <CycloneDDS>
        <Domain>
          <General>
            <Interfaces>
              <NetworkInterface name="usb0"/>
              <NetworkInterface address="127.0.0.1"/>
            </Interfaces>
            <DontRoute>true</DontRoute>
          </General>
        </Domain>
      </CycloneDDS>
      
    3. Install the zenoh-bridge-ros2dds binary following the instructions
    4. Use such Zenoh configuration file, replacing the 192.168.123.130 IP with your Turtlebot4 WiFi IP (or better, its hostname):
      {
        mode: "peer",
        listen: { endpoints: ["tcp/192.168.123.130:7447"] },
        plugins: {
          ros2dds: {
            id: "bot1",
            namespace: "/bot1",
            deny: {
              publishers: [".*/_internal/.*"],
              subscribers: [".*/_internal/.*"],
              service_servers: [".*/_internal/.*"],
              service_clients: [".*/_internal/.*"],
              action_servers: [".*/_internal/.*"],
              action_clients: [".*/_internal/.*"]
            },
            pub_max_frequencies: [
              ".*/image_raw=10",
              ".*/camera_info=10",
            ],
          },
          rest: { http_port: 8000 }
        }
      }
      
  • On your teleop host

    1. Use those ROS settings:
      ROS_DOMAIN_ID=0
      ROS_LOCALHOST_ONLY=1
      RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
      
    2. Install the zenoh-bridge-ros2dds binary following the instructions
    3. Use the same Zenoh configuration file than on Turtlebot4, but replacing:
      listen: { endpoints: ["tcp/192.168.123.130:7447"] },
      with:
      connect: { endpoints: ["tcp/192.168.123.130:7447"] },
    4. Run rviz2 or any teleop/navigation ROS 2 node, without any namespace remapping
$\endgroup$
0
$\begingroup$

I can get this to work (needed to remove the id tag on the desktop machine as well to get it to receive).

I am trying to use it with multiple turtlebots now on one network, with the turtlebots isolated from each other.

So I have one in the /botE namespace, one in the /botF namespace, and they are each using different ROS_DOMAIN_ID values. When run separately it works with navigation etc running fine

As soon as they second turtlebot bridge is started the desktop that is configured to hopefully just see botE sees all the topics from that robot, I run ros2 topic list but it also lists the topics for the other robot, with the namespace left on (/botF/cmd_vel for example). As they are configured to connect to connect to the bridge on one robot, and they are in different ROS_DOMAIN_ID I would not expect to be able to see them.

I have tried adding "/botE/.*" to the deny publishers in the config file on the desktop, but this has made no difference to what I see when I run ros2 topic list

$\endgroup$
0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.