robot state publisher

  <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
    <param name="publish_frequency" type="double" value="50.0" />
    <param name="tf_prefix" value="$(arg multi_robot_name)"/>
  </node>

使用下面命令查看TF tree:

$ rosrun rqt_tf_tree rqt_tf_tree

在这里插入图片描述/odom和/base_footprint断开了!

这里有一点需要重点说明,tf中的odom和topic的odom虽然名称一样,但完全不是一类。

怎么办呢?

在launch文件中添加:

 <node pkg="tf" type="static_transform_publisher" name="fix_odom" args="0 0 0 0 0 0 odom base_footprint 50" />

在这里插入图片描述

robot state publisher帮助你把你的机器人状态发布到tf转换库中。robot state publisher内部有一个机器人的运动学模型,所以给定机器人位置,robot state publisher能够计算和发布机器人每一个link的3D位姿。
你可以用robot state publisher作为一个单独的节点或者一个库。
3.1 作为一个单独的ROS节点运行
3.1.1 robot_state_publisher
运行机器人状态发布者最简单的方式就是作为一个节点运行。对于一般使用者来说,我们推荐这样使用。你需要两样东西来运行机器人状态发布者:

  • 一个从Parameter Server下载的urdf xml机器人描述。
  • 一个将关节位置用sensor_msgs/JointState格式发布的源。
    如何为robot_state_publisher配置参数和主题,请阅读下面的部分。
    3.1.1.1 订阅的主题:
    joint_states(sensor_msgs/JointState)
    关节位置信息
    3.1.1.2 参数
    robot_description(urdf map)
    urdf xml机器人描述。这可以通过urdf_model::initParam来完成。
    tf_prefix(string)
    为命名空间发布变化设置tf前缀。
    publish_frequency(double)
    状态发布者的发布频率,默认50赫兹。

参考资料
由浅到深理解ROS URDF教程
https://blog.csdn.net/sinolover/article/details/90902182

发布了425 篇原创文章 · 获赞 59 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/qq_21950671/article/details/104068603