ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
2

QoS settings for /joint_states in Humble

asked 2022-04-20 10:25:29 -0500

Douglas Smith gravatar image

I've seen some packages/robots using rclcpp::SensorDataQoS() to publish the /joint_states topic. This can create issues with existing code. A subscriber with the default settings (Reliable) cannot subscribe to a topic published as SensorDataQoS (best effort). There is little documentation about how to use different QoS types, or how to check them.

Is there an official specification as to what QoS settings certain topics, like joint_states, should be using?

Making a topic reconfigurable is fairly trivial, but still needs to be done. rclpy and rclcpp both treat incompatible QoS settings as a warnings. If you're not paying attention then you're in for a fun time figuring out why it's not working, especially if you're launching something big like a robot Moveit config.

Some packages, like robot_state_publisher, have updated their main/rolling branch and default to using SensorDataQoS(). robot_state_publisher even makes it reconfigurable at launch, if you really want to set it to reliable. I'm assuming this will make it into Humble.

ros_controllers is using SystemDefaultsQoS(), but it's a publisher so it's not a big deal, as a SensorDataQoS() subscriber can still receive this.

Moveit2's planning_scene_monitor is still using a subscriber with the default reliable QoS. This will not work with a best effort publisher.

Humble is coming out soon. Should all packages that receive joint_states be updated, or does it fall onto publishers to be reconfigurable? Does it make sense to default to sensor_data type subscribers like ros2 topic echo, as they can receive anything?

edit retag flag offensive close merge delete

Comments

1

These seem relevant: ros2/rmw#304, ros2/rmw#319 and ros2/rmw#320, and in rclcpp: ros2/rclcpp#1868. Seeing as they're still open, I doubt those will be merged into Humble though.

The functionality proposed/discussed there doesn't address the "what's the current policy" part of your question of course.

gvdhoorn gravatar image gvdhoorn  ( 2022-04-20 14:44:26 -0500 )edit

Related/cross-posted at ros-planning/moveit2#1190.

gvdhoorn gravatar image gvdhoorn  ( 2022-04-27 12:10:02 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2022-04-21 15:10:33 -0500

Douglas Smith gravatar image

I spoke with some of the folks on the ROS2 Technical Steering Committee today. There isn't a formal definition of what type of QoS should be used for specific topics like joint_states.

robot_state_publisher was changed to accept best-effort reliability, but there wasn't a big discussion about impact in other packages, or alerting other packages to the fact that they will have to deal with different QoS publishers in the same way.

The best advice I can give is "robot_state_publisher, a package in ros_base, uses a configurable subscriber for joint_states with the default QoS profile being rclcpp::SensorDataQoS(), so you probably should too."

There are some possibilities for improvements, but with the Humble freeze coming up it's not really possible or safe to ram in low level changes to DDS. @gvdhoorn mentioned some open issues/prs with rmw that help address this above. Changing the default subscriber QoS to best_effort might help as well, and would make things more like ROS1 where subscribers "just worked".

If you run into issues relating to QoS please voice your concerns. Having to deal with QoS is new in ROS2 and I'm sure I'm not the only one that has run into this kind of issue.

edit flag offensive delete link more

Comments

That's not the answer I was hoping for.

But at least it's an answer.

gvdhoorn gravatar image gvdhoorn  ( 2022-04-22 04:01:42 -0500 )edit

As for the joint_state_broadcaster in ros2_controllers, I will wait until we get some kind of consensus on this to discuss.

destogl gravatar image destogl  ( 2022-04-27 10:02:55 -0500 )edit

Question Tools

2 followers

Stats

Asked: 2022-04-20 10:25:29 -0500

Seen: 345 times

Last updated: Apr 21 '22