Cyclone DDS with iox-roudi missing messages
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?