侧边栏壁纸
  • 累计撰写 131 篇文章
  • 累计创建 16 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录
ROS   

ROS_rosbag 录制 tf 时注意点

无法对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>
0

评论区