ros-perception / image_transport_plugins

A set of plugins for publishing and subscribing to sensor_msgs/Image topics in representations other than raw pixel data.
BSD 3-Clause "New" or "Revised" License
55 stars 120 forks source link

[foxy-devel] transport scoped parameters #142

Closed bmegli closed 1 year ago

bmegli commented 1 year ago

Aim

Reason

Details in #140

Scope

If agreed on implementation I may rework the rest within this pull.

Short Description

Example

ros2 launch realsense2_camera rs_launch.py

# ...
realsense2_camera_node-1] [WARN] [1680595074.360039582] [CompressedPublisher]: parameter `.depth.image_rect_raw.format` is deprecated; use transport qualified name `.depth.image_rect_raw.compressed.format`
[realsense2_camera_node-1] [WARN] [1680595074.360153760] [CompressedPublisher]: parameter `.depth.image_rect_raw.png_level` is deprecated; use transport qualified name `.depth.image_rect_raw.compressed.png_level`
[realsense2_camera_node-1] [WARN] [1680595074.360203519] [CompressedPublisher]: parameter `.depth.image_rect_raw.jpeg_quality` is deprecated; use transport qualified name `.depth.image_rect_raw.compressed.jpeg_quality`
# ...
[realsense2_camera_node-1] [WARN] [1680595074.412855043] [CompressedPublisher]: parameter `.color.image_raw.format` is deprecated; use transport qualified name `.color.image_raw.compressed.format`
[realsense2_camera_node-1] [WARN] [1680595074.412951851] [CompressedPublisher]: parameter `.color.image_raw.png_level` is deprecated; use transport qualified name `.color.image_raw.compressed.png_level`
[realsense2_camera_node-1] [WARN] [1680595074.413044543] [CompressedPublisher]: parameter `.color.image_raw.jpeg_quality` is deprecated; use transport qualified name `.color.image_raw.compressed.jpeg_quality`
ros2 param list
/camera/camera:
  .color.image_raw.compressed.format
  .color.image_raw.compressed.jpeg_quality
  .color.image_raw.compressed.png_level
  .color.image_raw.format
  .color.image_raw.jpeg_quality
  .color.image_raw.png_level
  .depth.image_rect_raw.compressed.format
  .depth.image_rect_raw.compressed.jpeg_quality
  .depth.image_rect_raw.compressed.png_level
  .depth.image_rect_raw.format
  .depth.image_rect_raw.jpeg_quality
  .depth.image_rect_raw.png_level
# ...

Implementation

bmegli commented 1 year ago

Now, if we intended only to make parameters transport scoped the fix is trivial 3 liner.

The difficulty lies in having both types support, ensuring values are synced on init and emitting deprecation warnings.

bmegli commented 1 year ago

There is alternative way to implement through add_on_set_parameters_callback but:

~The ParameterEvent handler way may be also used to reimplement ROS1 dynamic reconfigure behavior in ROS2~


Edit - stroked through, a much simpler way for runtime reconfiguration was implemented in rolling

bmegli commented 1 year ago

And finally, I am not entirely happy with templated function to set parameters in a header.

I now see a way to avoid it with:

ijnek commented 1 year ago

@bmegli I see this PR is targetting the foxy-devel branch. Could you retarget it to the rolling branch?

bmegli commented 1 year ago

Re-targeted to rolling in #143

Closing this one