1. 警告内容
Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame base_link_car (parent map) at time 17.016000 according to authority /tf_publisher_node
at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp
该警告是由于tf树中的频率设置问题。这虽然是个警告,但是感觉比有些报错都烦,会占满所有终端程序,如下图:
警告内容就是指base_link_car具有冗余的时间戳信息,也就是说tf树底层的频率太高了。(本文的底层是指tf树开始的地方,顶层是指后面的分支)
2. 解决方案
解决方法就是要么加快顶层,要么降低底层tf频率。
比如我这里map->base_link_car是xacro的插件发出的,可以这样降低底层tf频率:
<!-- 发出位姿话题 -->
<gazebo>
<plugin name="p3d_base_controller" filename="libgazebo_ros_p3d.so">
<alwaysOn>true</alwaysOn>
<updateRate>30.0</updateRate>
<bodyName>base_link_car</bodyName>
<topicName>/car/local_position/pose</topicName>
<gaussianNoise>0.0</gaussianNoise>
<frameName>map</frameName>
<xyzOffsets>0 0 0</xyzOffsets>
<rpyOffsets>0 0 0</rpyOffsets>
</plugin>
</gazebo>
顶层频率可以通过修改这个robot_state_publisher的频率:
<!-- Launch the robot state publisher -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" >
<param name="publish_frequency" value="50.0"/>
</node>