ros2 / rclcpp

rclcpp (ROS Client Library for C++)
Apache License 2.0
535 stars 413 forks source link

Backport request - Unified NodeInterfaces in Humble #2309

Open BrettRD opened 1 year ago

BrettRD commented 1 year ago

Feature request

I'd like to use a unified NodeInterfaces object from https://github.com/ros2/rclcpp/pull/2041 under ROS2 Humble.

Feature description

Fuse uses https://github.com/ros2/rclcpp/pull/2041 as an extremely tidy way of passing interfaces from the base node to its many pluginlib plugins.

I'm building a modular wrapper for GStreamer pipelines, intended to replace and unify gscam and audio_common, adding lots of features in the process.

A lot of complexity comes out of mapping the Properties of GStreamer Elements to Parameters on the Node, and I need ParameterEventHandler::add_parameter_callback to separate the rclcpp parameter validate and update stages to allow GStreamer elements to validate properties before accepting them.

ParameterEventHandler needs a NodeT macro type in its constructor, and satisfying that is making a mess of my ROS2 version portability.

Implementation considerations

https://github.com/ros2/rclcpp/pull/2041 appears to be the complete picture, I haven't found any discussion of why a back-port wouldn't be possible

clalancette commented 1 year ago

It is certainly worth a try. Keep in mind that in a backport, we can't change API or ABI; as long as those rules are followed, I don't see a huge problem in doing it. That said, I don't think we'll have time to do it in the near future, so I'll mark this as "help wanted" for now.