有时候由于urdf以及代码中有些遗漏,可能导致TF出现问题,此文只作为阐明TF重要性的示例,不是解决方案!

请注意此方法不保证正确和唯一,解决方案多样,欢迎留言补充,这里抛砖引玉~

以下面为例:

启动地图构建程序,但是没有出现地图,rviz现象为:

这里有两个警告和两个错误:

使用下面命令查看TF tree:

$ rosrun rqt_tf_tree rqt_tf_tree

/odom和/base_footprint断开了!

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

怎么办呢?

只需要一步即可:可以参考官网robot_state_publisher具体可以参考附录:~

在launch文件中添加:

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

然后重新运行:

熟悉的地图出来了,再看一下tf:

OK!

在自己的机器人上使用机器人状态发布器

说明: 本教程介绍如何发布机器人的状态, TF ,使用机器人状态出版商。

教程级别:  BEGINNER

下一个教程: 有关如何结合使用robot_state_publisher与urdf的详细教程,请查看  本教程

内容

  1. 作为ROS节点运行

    1. robot_state_publisher

      1. 订阅主题
      2. 参数
    2. 示例启动文件
  2. 作为库运行

当你使用一个有许多相关框架的机器人时,将它们全部发布到tf就成了一项任务。机器人状态发布者是一个工具,将为您完成这项工作。

机器人状态发布器帮助您将机器人的状态广播到tf转换库。机器人状态发布器内部具有机器人的运动学模型; 因此给定机器人的关节位置,机器人状态发布者可以计算和广播机器人中每个链接的3D姿态。

您可以将robot状态发布者用作独立的ROS节点或库:

作为ROS节点运行

robot_state_publisher

运行机器人状态发布器的最简单方法是作为节点。对于正常用户,这是建议的用法。你需要两件事来运行机器人状态发布者:

  • 一个urdf XML描述机器人装上的参数服务器。

  • 将关节​​位置发布为sensor_msgs / JointState的源。

请阅读如何配置参数和主题下面的章节robot_state_publisher。

订阅主题

joint_states(sensor_msgs / JointState)

  • 关节位置信息

参数

robot_descriptionurdf地图

  • 该urdf XML机器人的描述。这是通过访问`urdf_model :: initParam`

tf_prefixstring

  • 设置TF的变换的空间感知出版前缀。见tf_prefix了解更多详情。

publish_frequencydouble

  • 状态发布者的发布频率,默认值:50Hz。

示例启动文件

一旦你设置了XML机器人描述和一个关节位置信息源,只需创建一个启动文件,像这样:

  <launch>
    <node pkg =“robot_state_publisher”type =“robot_state_publisher”name =“rob_st_pub”>
      <remap from =“robot_description”to =“different_robot_description”/>
      <remap from =“joint_states”to =“different_joint_states”/>
    </ node>
  </ launch>

作为库运行

高级用户还可以从自己的C ++代码中将机器人状态发布者作为库运行。在添加标题后:

  #include <robot_state_publisher / robot_state_publisher.h>

所有你需要的是一个发生在一个构造函数KDL树

  RobotStatePublisher(const KDL :: Tree&tree);

现在,每次你想发布你的机器人的状态,你调用publishTransforms函数:

  //发布移动关节
  void publishTransforms(const std :: map <std :: string,double>&joint_positions,
                         const ros ::时间&time);

  //发布固定关节
  void publishFixedTransforms();

第一个参数是具有关节名称和关节位置的映射,第二个参数是记录关节位置的时间。如果地图不包含所有的联合名称,可以。如果地图包含一些不是运动模型一部分的关节名称,也可以。但请注意,如果你不告诉关节状态出版者关于你的运动学模型中的一些关节,那么你的tf树将不完整。

ROS :Tranform出错简易处理 tf出错现象及解析相关推荐

  1. python3 tensorflowprint错误_解决import tensorflow as tf 出错的原因

    笔者在运行 import tensorflow as tf时出现下面的错误,但在运行import tensorflow时没有出错. >>> import tensorflow as ...

  2. 【ROS学习】- tf学习 - tf中重要函数解析 (陆续更新....)

    文章目录 一.函数waitForTransform().lookupTransform() 具体解释 二.函数 tf::StampedTransform().sendTransform() 具体解释 ...

  3. ROS教程译文1———TF转换树的设置和使用

    本文属于ROS翻译文章,来自WIKI: http://wiki.ros.org/navigation/Tutorials/RobotSetup/TF (由于水平有限,翻译错误在所难免,发现错误欢迎评论 ...

  4. ROS代码经验系列-- tf进行位置查询变换

    include文件: #include "tf/transform_broadcaster.h" #include "tf/transform_listener.h&qu ...

  5. TF之TF flags:TF flags(命令行解析)的简介、安装、使用方法之详细攻略

    TF之TF flags:TF flags(命令行解析)的简介.安装.使用方法之详细攻略 目录 TF flags的简介 TF flags的安装 TF flags的使用方法 TF flags的简介 1.f ...

  6. Jupyter notebook import tensorflow as tf 出错

    解决方法如下 activate tensorflow conda install ipython conda install jupyter 重新运行 jupyter notebook

  7. python打包一直出错_PyInstaller打包出错问题解决实践记录

    代码小工蚁英语单词列表生成器V2.0开发过程中问题备忘 笔者近期在使用Pyinstaller制作.EXE程序时遇到问题,出现如下提示: PyInstaller cannot check for ass ...

  8. My SQL出错代码及出错信息对照

    My SQL的出错代码表,根据My SQL的头文件mysql/include/mysqld_error.h整理而成.错误之处,请大家指正. 1005:创建表失败 1006:创建数据库失败 1007:数 ...

  9. MYSQL出错代码和出错信息对照表

    mysql在操作中难免会出现不少错误,mysql的出错代码表,根据mysql的头文件mysql/include/mysqld_error.h整理而成.里面如有错误之处,恳请大家指正. 1005:创建表 ...

最新文章

  1. C语言输出素数简单,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...
  2. Docker怎样提交镜像(把容器打成镜像)
  3. pandas(五) -- 文本处理
  4. android studio- java注释自己动手弄起来
  5. SAP Spartacus 服务器端渲染调试的开发端版本
  6. 用字节流查看txt文件
  7. Test传送门(更新中)
  8. LazyInitializationException--由于session关闭引发的异常
  9. oracle串连接,Oracle中串连接符||的使用心得(个人见解)
  10. MATLAB:如何保存图片到指定文件夹?
  11. linux中备份mysql数据库命令_linux备份mysql数据库命令
  12. 卷积神经网络模型之——VGG-16网络结构与代码实现
  13. 行人重识别论文阅读7-基于图卷积的行人骨架识别
  14. quot 成为通用计算机器 quot,汉语拼音:从读写工具到文化津梁
  15. FPGA基础入门篇(三) 程序的固化和下载
  16. 全国最大孔雀养殖基地在哪里???
  17. python之模块导入及模块导入路径
  18. cisco Linux SRv6 实战踩坑记录
  19. Deep Learning Paper读后简记
  20. 计算机里的小游戏在哪,windows10游戏在哪里_win10电脑自带的游戏在哪里

热门文章

  1. FILETIME和LARGE_INTEGER
  2. python contourf色阶_matplotlib:plt.contourf(画等高线)
  3. 任务2:PCB投板方法
  4. stew() setfill()
  5. Vue基础复习(2)Vue2.X过渡、动画和自定义指令
  6. 美国诚实签经验——要观察面试官,能识人,找友好的面试官
  7. ClearML入门:简化机器学习解决方案的开发和管理
  8. iOS 字典转模型纯swift框架HandyJSON使用实例:本地存取
  9. 工业品MRO采购网站有哪些优势?一文带你读懂
  10. 南京市秦淮区税务局走访云创,并在央视频进行宣传报道