Closed asymingt closed 1 year ago
Internal tracking ticket: FG-4047
Launch like this from a ROS2 rolling distribution:
$ ros2 launch static_frame_issue.launch.py
Confirm you see the correct frames with:
Note that ros2 topic echo
also doesn't show all transforms: You publish 6 transforms, but ros2 topic echo
only shows 5 messages. The transform baz-bar
is not printed.
You can fix this by increasing the qos depth:
ros2 topic echo --qos-depth 10 --qos-durability transient_local --qos-reliability reliable /tf_static
You can do the same for foxglove bridge:
ros2 launch foxglove_bridge foxglove_bridge_launch.xml min_qos_depth:=10
I believe that this solves your issue?
Doing ros2 topic info -v /tf_static
, I can see that the depth of the /tf_static
publishers is reported as UNKNOWN
(using the default rmw). This probably prevents foxglove_bridge
to select an appropriate QoS depth. Maybe we can use a fallback depth of 1
if the publisher's depth could not be determined.
QoS profile:
Reliability: RELIABLE
History (Depth): UNKNOWN
Durability: TRANSIENT_LOCAL
Lifespan: Infinite
Deadline: Infinite
Liveliness: AUTOMATIC
Liveliness lease duration: Infinite
Edit: This depends on the used RMW:
RMW | History |
---|---|
rmw_fastrtps_cpp (default on iron) | UNKNOWN |
rmw_connextdds | UNKNOWN |
rmw_cyclonedds_cpp | KEEP_LAST (1) |
I'm just conforming that I am using RTI ConnextDDS, so depth UNKNOWN
applies to my case, and may be the cause of the issue.
@achim-k I can confirm that your proposed fix min_qos_depth:=10
works well for me! Is there any way we might be able to make that the default argument, or have a longer default fallback depth in the case the bridge detects it as UNKNOWN?
Is there any way we might be able to make that the default argument, or have a longer default fallback depth in the case the bridge detects it as UNKNOWN?
Yes, we have to be smarter here. Will transfer this issue to https://github.com/foxglove/ros-foxglove-bridge and submit a PR that fixes it.
Description
Steps To Reproduce
Take a look at this simple launch file that sets up a basic static transform hierarchy: https://gist.github.com/asymingt/1d833ac9857ecba36eb2fa523137a7ba
Launch like this from a ROS2 rolling distribution:
Confirm you see the correct frames with:
Expected Behavior
I would expect to see a transform hierarchy that looks like this, in both the
Transforms
section of the3D
panel, as well as in the 3D visualization itself:However, only a subset of the frames are actually received and drawn. So, for example sometimes you see this:
And sometimes you see this:
Example screenshot of the problematic
Transforms
panel:Example screenshot of the problematic
3D
window: