Configuring QoS profiles from an external file [Proposal]

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:

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

5 Likes