Hi everybody,
Currently ROS 2 doesn’t provide a standard method for externally configuring QoS profiles, which are typically hardcoded by the node’s author.
ROS 2 is a framework where reusing nodes other people have written is important.
For some use cases, it is quite useful to use a different QoS profile than the one original specified.
There have been different ad-hoc solutions to the problem in different packages:
- ros-perception/image_pipeline#521
- SteveMacenski/ros2_ouster_drivers#26
- ros-simulation/gazebo_ros_pkgs#1079
https://github.com/ros2/design/pull/296 proposes to define a QoS profile file format and to add support to it in rcl
.
Here is a basic example:
/**:
ros__qos_profiles:
profiles:
reliable_depth_100:
base: ros_default
reliability: reliable
history_depth: 100
history: keep_last
/my_ns/nested_ns/my_node:
ros__qos_profiles:
publisher:
topic_name: asd
qos:
base: reliable_depth_100
publisher:
topic_name: bsd
qos:
base: reliable_depth_100
Check out the design document for more details.
Feedback is really welcomed!
(prefer giving feedback in the design doc PR, and not here).
Best,
Ivan