缘来
- 问题程序功能: 在仿真环境下,观测机器人运动时的传感器数据
- 具体发生状况:
- 首先启动了用于模拟机器人运动环境的 Gazebo launch文件
- 紧接着启动了用于启动 rviz 文件来观测传感器数据的 launch 文件,这一 launch 文件启动之后,在该终端中一直报警告信息。(警告信息如下图所示)

警告信息样例:
[ WARN] [1677126755.840258548, 2528.881000000]: TF_REPEATED_DATA ignoring data with redundant timestamp for frame r_drivel_wheel at time 2528.878000 according to authority unknown_publisher
分析
程序运行结果
- 第一眼,从字面上看,是 TF 时间问题,时间戳不对齐
- 细查代码,代码中不存在对 TF 时间上的修改
- 观测 rviz ,看到左右轮所指向的父节点一直在 “base_link” 和 “base_footprint” 之间跳动

- 运用 rqt_tf_tree:
rosrun rqt_tf_tree rqt_tf_tree查看 TF 关系 (需预先启动 Master 节点) - 通过查看 TF 树,发现左右两轮的父节点为 base_footprint,并非计划的 “base_liunk”

- 从 TF 树中,可以看到 “base_link” 的发布方是 “/robot_state_publisher” ,而两个车轮的发布方来自 “/gazebo”
回看代码
- “/robot_state_publisher” 来自于第二个 launch 文件,是机器人状态发布节点,即机器人的基本外观部件

文章描述了一个在机器人仿真环境中遇到的TF时间戳重复数据警告,分析了问题可能源于机器人状态发布节点和Gazebo内部控制器发布的TF关系冲突。解决方案是修改控制器配置,禁用wheelTF和wheelJointState的发布。

8278

被折叠的 条评论
为什么被折叠?



