小工具      在线工具  汉语词典  css  js  c++  java

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

告别Bug,自动驾驶,python,人工智能 额外说明

收录于:112天前

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技术交流群帮忙解决问题


-源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系-
. . .

相关推荐

额外说明

若易集成minio实现分布式文件存储

框架默认存储使用的本地磁盘,对于一些文件较大较多且有数据备份、数据安全、分布式等等就满足不了我们的要求,对于这种情况我们可以集成OSS对象存储服务。 minio是目前github上star最多的数据存储框架。minio可以用来搭建分布式存储服务。 目录

额外说明

遍历 ArrayList和遍历 Map的几种方式

遍历 ArrayList和遍历 Map的几种方式 遍历 ArrayList 遍历 Map ☀️相关笔记章节: -java 1.8 stream使用总结(个人总结有一些经典文章的集合) -遍历 ArrayList和遍历 Map的几种方式 -Java对象,M

额外说明

【C语言】通讯录设计

通讯录成员信息包括: 姓名、电话、性别、年龄 通讯录功能解析                1.添加通讯录成员               2.展示通讯录         3.查询成员                     4.删除通讯录成员     

额外说明

【前端】注册页面

Code: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,

额外说明

linux yum安装mongodb

mongodb简介 MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据

额外说明

webpack4.41+性能优化(高级篇)

以下配置是在webpack 4.41.6+测试 目录 babel-loader的缓存优化 happyPack多线程打包 ParallelUglifyPlugin多进程压缩JS 热更新 webpack在生产环境的常用优化思路 1.小图片base64编码 2

额外说明

java类加载器

类加载器是Java最强大的特征之一。但是开发者常常忘记类加载组件。类加载器是在运行时负责寻找和加载类文件的类。Java允许使用不同的类加载器,甚至自定义的类加载器。 Java 程序包含很多类文件,每一个都与单个Java类相对应,这些类文件不像静态C程序,

额外说明

陕西省赛 SSCTF

misc 下载附件,发现有个加密的zip 打开另外一个文件夹,先用Audacity打开那段音频 发现是摩斯密码 手敲一下,去解码 得到密码,尝试去解压,发现不行 另一个txt打开,发现藏了东西,提示雪 猜测snow隐写 刚刚那个应该是对应这个密码 把tx

额外说明

路径规划 | 图解动态A*(D*)算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍 1 什么是D*算法? 2 D*算法核心概念一览 3 D*算法流程图 4 步步图解:算法实例 5 算法仿真与实现 5.1 ROS C++实现 5.2 Python实现 0 专栏介绍 -附C++/Python/Matlab全套代码-课程设

额外说明

【云原生 • Kubernetes】kubernetes 核心技术 - 集群安全机制

本文导读 一、集群安全机制概述 1.认证 2. 鉴权(授权) 3. 准入控制 二、RBAC 概述 三、RBAC 角色绑定操作演示 一、集群安全机制概述 要知道,访问 Kubernetes 集群必需要进行三个步骤,即: 认证 鉴权(授权) 准入控制 而这个

ads via 小工具