ROS--TF学习--介绍
简介
TF是ROS系统中的功能包,用于便捷地进行坐标变换。这里将涉及机器人学的一些知识,有欧拉角、四元数、线性代数、坐标变换……可以看教材、搜百度维基进行学习。值得说明的是,欧拉角共有12种表示,常用的是航空模式下的欧拉角,其是绕机体(刚体)Z Y X轴旋转得到的,在tf中称为eulerYPR; 同理,RPY(ROLL PITCH YAW)指的是绕固定坐标系xyz旋转得到。这两者在一定意义上是等价的,即对应的旋转角度是一样的。
TF中的坐标关系表
从B到A的坐标变换 = 从A到B的坐标系变换(frame transform)= B在A的姿态变换
A为原坐标系
B为变换后的坐标系
等价性证明
令
A 为:定坐标系o-xyz 坐标 p 坐标向量[A1 A2 A3]
B 为:动坐标系O-XYZ 坐标 P 坐标向量[B1 B2 B3]
1. 从B到A的坐标变换
RP=p
2. 从A到B的坐标系变换(frame transform)
[A1 A2 A3]p=[B1 B2 B3]P
R为A坐标向量到B坐标向量的映射矩阵R,即 [A1 A2 A3] R =[B1 B2 B3]
合并得到 [A1 A2 A3]p=[A1 A2 A3]RP --> p=RP
3. B在A的姿态变换描述
假设A和B坐标系重合,点Q相对B动坐标系坐标不变即为坐标P,经过绕定坐标XYZ旋转旋转矩阵为R,得到Q在A的姿态描述p,也得到 p=RP。
工作机制
TF的工作机制是以 tf 的topic进行坐标系的管理。以官方的例程来看,坐标系节点会不断向topic(/tf)发送(broadcatser)相对与某个参考坐标系的坐标和转角(用欧拉角或则四元数表示),参考坐标系可以是世界坐标系 /world,或者是其他坐标系 /turtleX,这样可以建立一棵关系树,如下图。然后,通过listener实时监听,得到所需的坐标关系,进行处理转换。
参考:
ros/tf: http://wiki.ros.org/tf/