【已解决】TF_REPEATED_DATA ignoring data with redundant timestamp for frame

1 问题背景

环境:Ubuntu20.04 ROS-noetic
现象:打开Rviz与Gazebo加载机器人模型时,终端不停刷新警告TF_REPEATED_DATA ignoring data with redundant timestamp for frame,且在未施加数据的情况下,Rviz中模型车轮有微小移动

在这里插入图片描述

2 问题探索

ROS的roswtf工具可以对系统进行安装检查和运行检查。安装完备的ROS系统在未启动roscore前输出以下信息。

在这里插入图片描述
现在在系统运行时使用roswtf工具得到以下信息

在这里插入图片描述
重点在于right_wheel_linkleft_wheel_link的TF变换有两个发布者:

  • /gazebo
  • /robot_state_publisher

产生了冲突

ERROR TF re-parenting contention:
 * reparenting of [right_wheel_link] to [base_footprint] by [/gazebo]
 * reparenting of [left_wheel_link] to [base_footprint] by [/gazebo]
 * reparenting of [left_wheel_link] to [base_link] by [/robot_state_publisher]
 * reparenting of [right_wheel_link] to [base_link] by [/robot_state_publisher]

3 问题解决

/robot_state_publisher发布right_wheel_linkleft_wheel_linkTF变换的方式是在launch文件中:

<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"/>

/gazebo发布right_wheel_linkleft_wheel_linkTF变换的方式是在.xacro文件中:

<!-- 差速控制器 -->
<gazebo>
  <plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so">
      ...
      <publishWheelTF>true</publishWheelTF>
      <publishWheelJointState>true</publishWheelJointState>
      ...
  </plugin>
</gazebo> 

所谓joint_state_publisherrobot_state_publisher是ROS系统中更新机器人状态的两个节点:

  • joint_state_publisher:读取由robot_description定义的URDF文件内的参数,找到所有非固定(non-fixed)关节并将当前关节信息转化为sensor_msgs/JointState消息发布到话题joint_states
  • robot_state_publisher:可以理解为一个tf广播器,订阅话题joint_states,并根据消息内容计算更新当前机器人的运动学模型,通过tf广播器发布坐标系状态

如果不使用joint_state_publisherrobot_state_publisher,Rviz等组件就无法收到最新的机器人全体连杆TF树,因此考虑将差速控制器中的publishWheelTFpublishWheelJointState均设置为false,即可消除冲突

4 告别Bug

本文收录于《告别Bug》专栏,该专栏记录人工智能领域中各类Bug以备复查,文章形式为:问题背景 + 问题探索 + 问题解决,订阅专栏+关注博主后可通过下方名片联系我进入AI技术交流群帮忙解决问题


👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇
  • 25
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Winter`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值