Cyclone DDS with iox-roudi missing messages

asked 2022-10-24 22:49:26 -0500

gecastro gravatar image

updated 2022-10-24 23:09:43 -0500

Hi there,

I have a cyclone configuration used shared memory (iox-roudi), the configuration file is:

<Domain id="any">
    <General>
            <AllowMulticast>spdp</AllowMulticast>
            <EnableMulticastLoopback>true</EnableMulticastLoopback>
    </General>
    <SharedMemory>
             <Enable>true</Enable>
            <LogLevel>info</LogLevel>
    </SharedMemory>
</Domain>

Then I run the joystick controller and ros topic:

ros2 launch teleop_twist_joy teleop-launch.py
ros2 topic hz /cmd_vel

The joystick controller publishes a relatively large amount of small messages. The observed behaviour is that after a few seconds I stop seeing any output from the /cmd_vel topic.

When I use iox-introspection-client I can see that the chunks in use increase from 16 (before running ros topic) to 273 (after running ros topic), that is the instant where I stop seeing messages.

I assume that the queue in roudi is full, but I'm not sure why, since there is only one subscriber. I observe the same behaviour with another script where the subscriber topic has been explicitly set to size 1.

I don't observe this issue if I remove the shared memory setting, so I assume that the issue is related to Cyclone/Roudi (I'm using ROS Galactic)

So my questions are:

  • Is there any suggestion to debug this issue?
  • Does cyclone provide any method to exclude certain topics to use shared memory?
edit retag flag offensive close merge delete