Open gavanderhoorn opened 1 year ago
Might be nice to create a sort-of RCLC implementation of the StaticTransformBroadcaster
(instead of just adding more publishers and custom QoS settings).
See tf2_ros for the rclcpp
implementation. It isn't really a lot of code (in C++ that is).
Refer to include/tf2_ros/qos.hpp for the custom QoS it uses (transient local mostly).
Low-priority, but technically, static transforms (ie: those that do not change over time) should be published on the
/tf_static
topic.The QoS of that topic is also supposed to be different, mimicking a ROS 1 'latched' topic (ie: late joiners always receive the last published msg(s), even if they were published in the past). I believe that would be
KEEP_ALL
andTRANSIENT_LOCAL
(but we'd have to check).In regular ROS 2, this is all handled by the TF
BroadCaster
class, but we don't have that in RCLC.To address this issue, we'd need to add an additional publisher, on topic
/tf_static
, with the correct QoS, and use it to publishflange->tool0
on that publisher alone -- once. (Micro-XRCE-)DDS will then take care of 'republishing' it for us if/when nodes require it.The main benefit is reduced network traffic and less msg callbacks on the receiving side (as static transforms are only published once).