Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Running the ROS2 driver with intra-process communication when using composition #197

Closed
tanelikor opened this issue Aug 23, 2023 · 1 comment
Labels
question Further information is requested

Comments

@tanelikor
Copy link

Describe your question
Is there a way - or plans to implement one - to allow using intra-process communication the component nodes of the ROS 2 driver?

Currently, it is not possible to enable intra-process communication on the driver nodes because rclcpp doesn't yet support using it with transient local topics, see ros2/rclcpp#752 and ros2/rclcpp#1753 for some of the discussion on rclcpp side. Of the ouster nodes, os_sensor currently publishes the metadata topic with transient local QoS, and os_cloud does the same with transforms between the lidar frames.

I would think that disabling the tf_static publishing should not be a big problem if desired: the user should just take care to broadcast the transforms separately from somewhere else. I also vaguely remember seeing an issue/suggestion about parameter for publishing of the transforms, but can't seem to find it now, so perhaps I was dreaming about that.

About the metadata, I don't really know. Would it be possible to disable that publisher and still have the driver work correctly, or alternatively change the QoS of it to have a volatile durability?

The support for the transient local QoS with intra-process communication on the rclcpp side seems to be progressing extremely slowly, so the options are either to work around the issue for now or just not use the intra-process communication. I would be very interested to try it out, though I do not have any metrics to say how big of a reduction to latency etc. this might provide. The difference should be between copying the data and just passing a pointer, but how much this would affect actual performance is, at the moment, unknown to me.

Platform (please complete the following information):

  • Ouster Sensor: N/A
  • Ouster Firmware Version: N/A
  • ROS version/distro: Humble
  • Operating System: N/A
  • Machine Architecture: N/A
@tanelikor tanelikor added the question Further information is requested label Aug 23, 2023
@tanelikor
Copy link
Author

Edit: Never mind, I just realized that there are open PRs about allowing the disabling of the tf publisher and explicitly excluding the metadata publisher from intra-process communication. These, to my knowledge, should fix the problem described above, so I will go ahead and close this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

1 participant