坐标变换是机器人系统中常用的基础功能,ROS中的坐标变换系统由TF功能包维护。一个机器人系统通常有很多三维坐标系,而且会随时间的推移发生变化,如世界坐标系(World Frame)、基坐标系(Base Frame)、机械爪坐标系(Gripper Frame)、机器人头部坐标系(Head Frame)等。而TF功能包则可以让用户随时间跟踪多个坐标系,以时间为轴跟踪这些坐标系(默认10s以内)。

TF功能包的作用?

5秒钟之前,机器人头部坐标系相对于全局坐标系的关系是什么样的?

机器人夹取的物体相对于机器人中心坐标系的位置在哪里?

机器人中心坐标系相对于全局坐标系的位置在哪里?

TF如何使用?

监听TF变换

广播TF变换

TF工具:

tf_monitor        打印TF树中所有坐标系的发布状态,也可以通过输入参数来查看指定坐标系之间的发布状态

查看TF树中所有坐标系的发布状态

$ tf_monitor

查看指定坐标系之间的发布状态

$ tf_monitor <source_frame> <target_frame>

tf_echo        查看指定坐标系之间的变换关系

$ tf_echo <source_frame> <target_frame>

static_transform_publisher        发布两个坐标系之间的静态坐标变换,这两个坐标系不发生相对位置变化,在命令中需要设置坐标的偏移参数和旋转参数,偏移参数都是使用相对于x、y、z三轴的坐标偏移;而旋转参数在第一种命令格式中是使用以弧度为单位的yaw/pitch/roll角度,在第二种命令格式中是使用四元数表达旋转角度。发布频率以ms为单位。

$ static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms
$ static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms

view_frames        是可视化的调试工具,可以生成pdf文件,显示整棵TF树的信息

$ rosrun tf view_frames

下面举个乌龟例程中的TF来说明一下:

1.安装该例程的功能包turtle-tf

$ sudo apt-get install ros-kinetic-turtle-tf

2.通过roslaunch来启动我们要运行的关于海龟跟随的指令

$ roslaunch turtle_tf turtle_tf_demo.launch

3.启动键盘控制节点

$ rosrun turtlesim turtle_teleop_key

4.查看系统中整个tf的数据结构,会生成一个pdf文件在该路径下

$ rosrun tf view_frames

5.使用tf_echo工具可以在TF工具树中查找乌龟坐标系之间的变换关系

$ rosrun tf tf_echo turtle1 turtle2

6.可以通过rviz的图形界面更加形象的看到这三者之间的坐标关系

$ rosrun rviz rviz -d `rospack find turtle_tf`/rviz/turtle_rviz.rviz

如何实现一个tf广播器

定义TF广播器(TransformBroadcaster)

创建坐标变换值

发布坐标变换(sendTransform)

如何实现一个tf监听器

定义TF监听器(TransformListener)

查找坐标变换(waitForTransform、lookupTransform)

ROS中的TF坐标变换相关推荐

  1. ROS中的TF坐标变换工具及实现、Rviz查看(十四)C++、python

    目录 TF坐标变换引言 概述 概念 坐标msg消息 简介 geometry_msgs/TransformStamped geometry_msgs/PointStamped 静态坐标变换 简介 C++ ...

  2. ROS入门五 TF坐标变换

    ROS入门五 TF坐标变换 坐标变换简介 TF功能包 是什么? TF功能包干什么 ? TF坐标变换如何实现? TF工具 乌龟例程中的TF 安装功能包turtle_tf 运行 实现TF的广播和监听功能 ...

  3. 如何给定两个gps坐标 算出航向角_机器人开发如何配置ROS中的TF变换关系?

    当我们进行机器人开发时,常常需要面对TF坐标转换,本文以 Autolabor Pro1 与思岚激光雷达为例,介绍ROS TF的使用. Autolabor Pro1是什么? Autolabor Pro1 ...

  4. 配置ROS中的TF变换关系

    TF是什么? tf介绍​wiki.ros.org tf is a package that lets the user keep track of multiple coordinate frames ...

  5. 详解ROS中的TF使用

    个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-107.html 之前写过一篇博文<ROS-坐标转换> ...

  6. ROS中的tf与Eigen的转换

    写ROS程序时会经常遇到tf与Eigen库的转换,即算法中大多会使用Eigen来进行运算和表示机器人的位姿,但是最终需要tf将pose发布出去,所以需要将Eigen表示的pose转换为tf以及相应的m ...

  7. ROS中的多坐标变换详解(示例+代码)

    目录 坐标变换的数学基础 多坐标变换与静态/动态坐标变换的不同之处 tf坐标转换的实质 多坐标变换 静态/动态坐标变换 坐标系相对关系的发布 命令行形式:another_static_pub.laun ...

  8. ROS中观察TF的工具

    1 . 使用 view_frames 创建一个在ROS上,由tf发布的坐标系的图片. 2 . 使用rqt_tf_tree 这是一个实时工具,观察在Ros上被发布的坐标系树,可用刷新按钮来更新树的内容. ...

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

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

最新文章

  1. Android学习CursorWrapper与Decorator模式
  2. java元婴期(29)----java进阶(springmvc(3)---springmvc和mybatis整合参数绑定(上))
  3. http1.0 和 http1.1 主要区别
  4. 铁乐学Python_day09_函数
  5. centos6安装mysql 5.5_CentOS6.5上安装MySQL5.5
  6. 学java web需要学php吗_学JAVA WEB要先学什么
  7. 博弈论开发工具Gambit的Python包安装
  8. 大土狗书屋好书推荐--《史蒂夫·乔布斯传》
  9. android 三星截长屏,三星如何截屏手机长图,三星四种截图方法介绍
  10. [Android第三方类库]聊一聊Android的第三方开发组件
  11. fastadmin常规错误排查
  12. 01惯性导航常用坐标系与地球参考椭球
  13. 40Gbit和100Gbit的网络可视性解决方案
  14. android通知栏点击关闭,Android点击通知栏 ,移除通知
  15. 绿纹龙的森林游记——UPC
  16. 由AFX_IDW_PANE_FIRST宏的含义分析界面库XTP的一个bug
  17. Elasticsearch 7.10 之 Total shards per node
  18. 清除Internet临时文件
  19. 【前端知识之webpack】Loader和Plugin都是什么,有什么区别
  20. 《情感分析、挖掘观点、情感和情绪》1

热门文章

  1. How to configure Copyright Profiles in IntelliJ IDEA
  2. Element表单验证规则
  3. robocode调试技巧
  4. 唯有硬核,方显本色丨云和恩墨五位数据库专家即将亮相openGauss Developer Day
  5. C#搭建Json RPC2.0 Server/Client
  6. H5企业网站模板:蓝绿过渡色功能菜单齐全企业网站模板
  7. 数据库集合运算与关系代数
  8. BEV感知的开源数据集分享
  9. 漫漫D3路----W3C+CSS+JS
  10. unity学习记录第九章-过关和UI