当使用gazebo进行仿真之后,再继续使用rviz查看机器人tf信息的时候会显示机器人没有tf信息,机器人的每个link只有base_link正常,其他的link都没有tf信息。
由于在只进行查看机器人位置时使用的是joint_state_publisher来发布tf信息,于是使用rostopic list 查看话题消息,发现确实存在/joint_states这个话题,然后使用rostopic echo /joint_states
之后出现这个提醒:
发现这个时候并没有/joint_states话题消息发布出来。经过查找问题之后发现是因为在gazebo仿真的时候将use_sim_time设置成了true。在这种情况下不能使用joint_state_publisher或者其他自己写的节点来发布位置消息,需要将use_sim_time设置为false。
实际可以使用
rosparam get use_sim_time
来查看use_sim_time是否是true,如果是的话需要改为false。可以使用如下命令
rosparam set use_sim_time false
这样就可以正常使用节点发布tf位置信息了。