Skip to content
This repository was archived by the owner on Jul 10, 2025. It is now read-only.
This repository was archived by the owner on Jul 10, 2025. It is now read-only.

Configurable QoS settings for ROS 2 publishers and subscriptions #1079

@jacobperron

Description

@jacobperron

Description

Currently, all of the QoS settings for ROS 2 publishers and subscriptions created in Gazebo plugins are hardcoded (ie. cannot be changed by the user). In particular, many sensor plugins use the "SensorDataQoS" profile introduced in #926. This QoS profile is generally good for sensor data, using best effort for the reliability setting. But, there are cases where applications would like to ensure the arrival of sensor data and use reliable reliability.

IMO, gazebo_ros_pkgs should allow for the QoS settings to be entirely configurable so that users can mimic their real ROS 2 drivers accurately (e.g. maybe they have a camera driver that uses the reliable setting).

Implementation considerations

ROS 2 does not officially support a way to configure QoS settings at runtime. Therefore, it is up to the node developer to enable this1. In any case, gazebo_ros_pkgs plugins and their parameters are already defined in SDF, so I think it makes sense to add SDF tags for setting various QoS settings for ROS 2 entities in a plugin. I propose introducing a new helper class for parsing QoS SDF tags and returning a rclcpp::QoS that can be used by the plugins.

I'm willing to do the work, but I'm looking for some feedback before I go ahead.


1 I think there should be a standard mechanism builtin to ROS 2 to opt-in to configurable QoS settings as a node developer, but this is a separate discussion.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions