ROS学习之tf

PS:基于中科院项目教学代码进行学习,跟着项目走是最好的学习方法,代码网址:https://github.com/DroidAITech/ROS-Academy-for-Beginners,
另:知乎专栏:《致敬图灵(AI与机器人专栏)》
https://www.zhihu.com/people/li-zhi-hao-32-6/columns
微信公众号:< 致敬图灵 >。

​ 坐标转换,Transform是位置+姿态控制的必备知识,机器人在进行一个动作时,必须根据数学的坐标关系进行动作达到目标位置,坐标转换就起到了建立坐标系,建立相对位置关系的功能。在机器人视觉,机器人运动控制,slam等方向都有应用。

​ ROS系统中的 tf 有多种含义,可能为坐标转换的标准、话题、坐标转换的工具以及接口(roscpp、rospy)。

tf tree

​ 定义了tf的数据结构,它是一个树状的数据结构,因此也叫做tf tree。

​ 机器人由很多部件组成,每一个部件,都对应着一个link。而每一个link上面也都对应着一个frame。其通过树状结构tf tree来维护坐标之间的关系。

ROS学习之tf_第1张图片

​ 图中的圆圈内的是frame,每两个frame之间都有一个连通关系。这个连通关系实际上就说明了两个部件之间的相对坐标关系,它是通过一个话题 /tf 实现的。每一个连通关系之间的坐标都有一个node来负责,当其坐标相对关系改变时,node就会将msg发送到/tf,/tf进行坐标关系的更新。

/tf 话题

​ /tf是用来对坐标关系进行定义说明的树,是一个msg文件,其有两种版本:tfMessage.msg (旧版本)与TFMessage.msg (新版本),这两种文件前一种比较复杂,新版本则进行了简化且支持了一些库。

​ 若想知道使用的是哪一种版本的tf,可通过:

rostopic info /tf #查询信息,type中说明了tf的版本。

tf接口

见:http://docs.ros.org/melodic/api/tf/html/index.html

你可能感兴趣的:(ROS机器人基础)