Should there be a DefaultQoS or default constructor for QoS?

asked 2021-10-04 12:37:53 -0500

There are a handful of convenience QoS profile objects that come from the various rmw profiles here:

https://github.com/ros2/rclcpp/blob/1...

However, one that is missing is the rmw_qos_profile_default. That would seem to be covered by the constructor for QoS, but it is not because one has to provide a QoSInitialization object to the constructor, which itself does not have a default constructor. To get around this I put this in my code:

class DefaultQoS : public rclcpp::QoS
{
public:
  explicit
   DefaultQoS(
     const rclcpp::QoSInitialization & qos_initialization = (
       rclcpp::QoSInitialization::from_rmw(rmw_qos_profile_default)
   ));
};

Am I misunderstanding how I should be using the API? Would a PR adding this default QoS (or a default constructor for QoS itself that constructs it like this be welcome?

Or, should I be using SystemDefaultsQoS instead? I am confused as to where the queue depth is defined in that case.

edit retag flag offensive close merge delete