A-A+

TF学习-欧拉角

2017年09月13日 ROS 评论 1 条 阅读 1,831 views 次

前提

在开始本文之前,我们需要做一些定义:

1. 只考虑旋转,不考虑坐标系原点的位移,故世界坐标系E-xyz与机体坐标系原点O-XYZ 是重合的;

2. 世界坐标系: E-xyz          坐标轴向量[εx εy εz]       点M在世界坐标系中的坐标  p = [p1 p2 p3]'

3. 机体坐标系: O-XYZ        坐标轴向量[εX εY εZ]  点M在机体坐标系中的坐标  P = [P1 P2 P3]'

欧拉角是Leonhard Euler引入的三个角度来描述刚体相对于固定坐标系的方向或是姿态。欧拉角通常表示为α,β,γ或φ,θ,ψ。

分类

欧拉角大致分为两大类,一类是基于机体自身坐标系的旋转组合,另一类是基于外界坐标系(如世界坐标系)的旋转组合。

基于自身坐标的旋转


顾名思义,就是绕机体自身的坐标系进行的一系列旋转, 最终得到一个姿态。先绕X还是Y还是Z,这个可以进行选择并组合,所以欧拉角的表示多样。基于自身坐标旋转的组合共有12种,如下:

  • 常规欧拉角            ……(Z-X-Z, X-Y-X, Y-Z-Y, Z-Y-Z, X-Z-X, Y-X-Y)
  • 泰特 - 布赖恩角    ……(X-Y-Z, Y-Z-X, Z-X-Y, X-Z-Y, Z-Y-X, Y-X-Z)

基于外界坐标系的旋转

基于外界坐标系的旋转组合更为直观,且方便表示。其默认参考的固定坐标系(E-xyz),绕其坐标轴进行旋转,组合也同样存在12种。两类方式的旋转在一定条件下存在等价性。
 

TF功能包中的欧拉角

ROS中的TF功能包中的欧拉角属于泰特 - 布赖恩角,是航模飞机船舶中常用的姿态角。
按照外界坐标系(参考坐标系)的旋转顺序是x-->y-->z,叫做RPY(Roll Pitch Yaw);
按照机体坐标系旋转顺序是 Z-->Y-->X,叫做eulerYPR(Yaw Pitch Roll);
描述同一姿态时,以上两者的表示是等价的,即Yaw Pitch Roll的角度值是一样的,这在之后会进行证明。
---------------------
定义:
Yaw   偏航角  ϒ 
Pitch  俯仰角  β
Roll    翻滚角  α
----------------------

旋转矩阵定义

旋转矩阵是指坐标系的旋转以及坐标的转换。
定义1:坐标系A 到 坐标系B 的旋转矩阵为R1。
则有:[A1 A2 A3]R1=[B1 B2 B3] (A1等均是相应坐标系的列向量)
定义2:点M在 坐标系B下的坐标 b 变换为 坐标系A下的坐标 a 的变换矩阵R2。
则有:R2*b=a

因为R2*b=a
所以 [A1 A2 A3]*R2*b=[A1 A2 A3]*a
因为 a和b表示的是同一点
所以 [A1 A2 A3]a=[B1 B2 B3]b
因为 [A1 A2 A3]*R2*b=[A1 A2 A3]*a和[A1 A2 A3]a=[B1 B2 B3]b
所以 [A1 A2 A3]*R2*b=[B1 B2 B3]b
所以 [A1 A2 A3]*R2=[B1 B2 B3]
又因为 [A1 A2 A3]*R1=[B1 B2 B3]
所以 R1与R2是相等的。

单轴旋转矩阵表示

以绕x轴进行旋转为例:
将O-xyz坐标系绕x轴旋转α角(右手螺旋定则),得到O-x0y0z0坐标系,旋转矩阵x(α)。
[x y z]x(α)=[x0 y0 z0](x y z x0 y0 z0均是相应坐标系的列向量)

x0=x
y0=y*cosα+z*sinα
z0=-y*sinα+z*cosα
故

同理可得:


RPY(Roll Pitch Yaw)

当机体坐标系O-XYZ和世界坐标系E-xyz重合,按照世界坐标系E-xyz轴,依次对机体坐标系进行旋转,顺序是x(α)-->y(β)-->z(ϒ),取旋转矩阵 x(α) ,y(β),z(ϒ)。
由于是根据世界坐标系旋转的,方便理解,采用坐标点转换的方式,我们取点M,其在机体坐标系中坐标为P,当两个坐标重合时,M在外界坐标系中坐标也为P,经过旋转变换,点M在外界坐标系中坐标为p,也就是实际点M在外界坐标系中的坐标,表达式如下:
       p=z(ϒ)y(β)x(α)P  
 x(α)=
该式子点M在机体坐标系下的坐标P转换为在世界坐标系下的坐标p;   
 
z(ϒ)y(β)x(α) 称为外界坐标系到机体坐标系的旋转矩阵 ,也是外界坐标系到机体坐标系的坐标系变换阵;
证明:
     [εx εy εz]  p=[εX εY εZ] P    
世界坐标系到机体坐标系的转换矩阵R,
     [εx εy εz]R=[εX εY εZ]
带入得:[εx εy εz]p=[εx εy εz]RP  
综合 p=z(ϒ)y(β)x(α)P
即R=z(ϒ)y(β)x(α)
 
这里我们也证明了[ 世界坐标系 到 机体坐标系 旋转矩阵 ]与[一个点在 机体坐标系下的坐标 到 世界坐标系下的坐标变换矩阵] 的等价性。

 

EulerYPR(Yaw Pitch Roll)

有了之前的基础,下面来介绍基于自身坐标系的欧拉角。我们定义旋转顺序是 Z-->Y-->X,角度依次是ϒ 、β、α。
由于是基于自身的旋转,自身的旋转轴相对与外界坐标系是变化的,可以通过基于坐标系的旋转变换进行分析,得到如下表达:
[εx εy εz]绕机体坐标系轴Z旋转ϒ 得到[εx1 εy1 εz1]           [εx εy εz]Z(ϒ)=[εx1 εy1 εz1]
[εx1 εy1 εz1]绕机体坐标系轴Y旋转β得到[εx2 εy2 εz2]      [εx1 εy1 εz1]Y(β)=[εx2 εy2 εz2]
[εx2 εy2 εz2]绕机体坐标系轴X转换α得到[εX εY εZ]         [εx2 εy2 εz2]X(α)=[εX εY εZ]
[εx εy εz]Z(ϒ)Y(β)X(α)=[εX εY εZ]
此外,也可以用之前的方法,可以这么理解,以上旋转等价于将自身坐标系保持不动,将外界坐标系E-xyz依次绕机体坐标系O-XYZ 的 Z-->Y-->X做-ϒ 、-β、-α角度的旋转。
 
参照此前的操作,可得等式
       P=X(-α)Y(-β)Z(-ϒ)p
  
 
 发现如下:
 由此可得, p=z(ϒ)y(β)x(α)P 和 P=X(-α)Y(-β)Z(-ϒ)p 等价,这里就证明了EulerYPR和RPY等价性。
 

参考

维基百科——欧拉角
机器人学导论[书]
标签:

1 条留言  访客:0 条  博主:1 条

  1. platogao

    ...

给我留言