有时候由于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. Java/Android中实现Shell命令
  2. 表单身份验证(受保护的目录)
  3. 交换机的硬件故障问题总结
  4. VS2008编译boost库
  5. Nginx的应用之动静分离
  6. php关闭按钮,C#_winform去掉右上角关闭按钮的方法,一种方法是可以在窗体的属性 - phpStudy...
  7. 设计灵感图片,到哪里搜索!看这里!
  8. HF-NET环境配置与安装
  9. hbase中的master启动后自动关闭
  10. UVA - 11520 Fill the Square
  11. webstorm汉化怎样切回英文_webstorm 单词快捷翻译设置
  12. vue组件库(Element UI)
  13. Ant Design Vue
  14. python语言的实验心得体会范文_关于实验总结心得体会范文
  15. 查找网站的IP地址的两种方法
  16. 第二周Java学习总结
  17. OLE- 微软API—对象链接与嵌入
  18. js插件的经典写法与总结
  19. 个人账号被Facebook封号怎么办
  20. 【算法基础五】通讯录管理系统(自我评价)

热门文章

  1. win8中mysql安装包下载地址_win8 mysqlzip install
  2. 根据时间戳计算宝宝年龄(年月日)
  3. FFmpeg三件套之FFprobe使用介绍
  4. 不会绘画可不可以学习3D建模?
  5. 个人创业,是先找客户还是先做产品?
  6. 2022福州市气象局编制外人员招聘精选模拟题及答案
  7. SpringMVC 中控制器方法的可用参数类型和返回类型
  8. VSCode前端必备插件2022版(持续更新)
  9. 怎样做好一场高转化的直播?直播间高转化活动如何策划?
  10. linux aslr 关闭代码,【技术分享】浅谈ASLR和Shellcode的那些事儿