无法对tf的内容进行录制
问题描述:
当我们利用 rosbag record
对 /tf
进行录制时,有时候会发现有些节点并没有被录制,而这些节点确实存在。比如我们利用 robot_state_publisher
发布机器人的关节tf信息,就会出现该问题。
进一步仔细观察导出的tf树图,我们可以发现问题:没有被录制的节点并没实时在发布tf信息,所以才导致了该问题。
解决方法:
这是由于 ros 添加了 tf_static
机制,使得对相对固定的 tf 不必重复发布,从而占用宝贵的带宽。我们只需在关闭该功能即可:
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" args="robot_description:=robot_description"
<param name="use_tf_static" value="false" />
</node>
无法对tf进行重映射
问题描述:
当我们在利用 rosbag 时,有时候希望对tf名进行重映射,来适配当前代码。例如,H_imu_link_record—> H_imu_link,我们可以很快找到对应功能模块 remapper
来实现,但是依旧没有变换。
<node name="remapper" pkg="tf" type="tf_remap" output="screen">
<rosparam param="mappings">[{old: H_imu_link_record, new: /H_imu_link},
]</rosparam>
</node>
解决方法:
其实,我们还需要对原 /tf
也进行重映射,才能够实现:
<node pkg="rosbag" type="play" name="player" args="/home/sbdx/Documents/2022_03_04_16_33_48.bag" output="screen">
<remap from="tf" to="tf_old" />
</node>
评论区