ROS学习笔记(十三) TF介绍(一)

TF介绍(一)

TF:机器人不停部位之间的坐标转换。坐标转换包括位置和姿态两方面,ROS中的tf是一个让用户随时记录多个坐标系的软件包。tf保持缓存的树形结构中的坐标系之间的关系,并允许用户在任何期望的时间点在任何两个坐标系之间转换点、矢量等。

tf可以被当做是一种标准规范,定义了坐标转换的数据格式和数据结构。tf本质是树状的数据结构(通常称之为tf tree),可以看成是一个topic:/tf,message保存的是tf tree的数据结构格式,维护了整个机器人(甚至是地图)的坐标转换关系。也可以看做package,包含了很多工具,比如可视化、查看关节的tf、debug tf等。tf含有一部分的接口(rospy、roscpp关于tf的API),可看成话题转换的标准、话题、工具、接口。
在这里插入图片描述
ROS中机器人包含大量部件,称之为link,每一个link上面对应这一个frame(即一个坐标)。许多frame错综复杂地铺在机器人的各个link上,tf tree维护各个坐标系之间的关系、联通。

TF树:
在这里插入图片描述

圆圈代表frame,对应机器人上的一个link,任意两个frame必须是联通的,若出现某一环节的断裂,就会error报错,故完整的tf tree不能有任何断层的地方。每两个frame之间都有一个broadcaster,为了令两个frame之间能正常连接,中间会有一个node来发布消息来broadcaster。如果没有node发布消息维护连通,那么两个frame之间的连接就会断掉。broadcaster是一个publisher,若两个frame之间发生了相对运动,broadcaster就会发布相关消息,broadcaster发布的消息就是TransformStampede.msg

TransformStampede.msg:

std_msgs/Header header
	uint32 seq
	time stamp
	string frame_id
string child_frame_id
geometry_msgs/Transfrom transform
	geometry_msgs/Vector3 translation
		float64 x
		float64 y
		float64 z
	geometry_msgs/Quaternion rotation
		float64 x
		float64 y
		float64 z
		float64 w

header定义了序号、时间和frame名称,又写了child_frame,这两个frame之间的坐标变换由geometry_msgs/Transform定义(Vector3三维向量表示平移,Quaternion四元数表示旋转)。

在这里插入图片描述
odom就是frame_id,base0link_footprint就是child_frame_id,向tf发送消息。很多个TransformStampede.msg向tf发送坐标变换信息,形成tf tree。

TF树的数据类型

TFtree是由很多frame之间的TF拼接而成,TF tree类型:

tf/tfMessage.msg
tf2_msgs/TFMessage.msg

这里TF的数据类型有两个,主要的原因是版本的迭代。

上面我们讲了,TF tree是由很多的frame之间TF拼接而成。那么TF tree是什么类型呢?如下:

tf/tfMessage.msg
tf2_msgs/TFMessage.msg

tf/tfMessage.msg或tf2_msgs/TFmesasge.msg准格式规范:

geometry_msgs/TransformStamped[] transforms
	std_msgs/Header header
		uint32 seq
		time stamp
		string frame_id
	string child_frame_id
	geometry_msgs/Transform transform
		geometry_msgs/Vector3 translation
			 float64 x
             float64 y
             float64 z
		geometry_msgs/Quaternion rotation
             float64 x
             float64 y
             flaot64 z
             float64 w

一个TransformStampede数组就是一个TF tree。

  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值