台大机器人学——林沛群

1.复习:关于Rotation Matrix

  • 三个用法:
  1. 描述一个frame相对于另一个frame的姿态
  2. 将point由某一个frame的表达转换到另一个frame(仅有相对转动变化)来表达
  3. 将point(vector)在同一个frame中进行转动
  • 思考——空间中的Rotation是3DOFs,那要如何把一般rotation matrix所表达的姿态,拆解成3次旋转角度,以应对到3个DOFs?
  • 注意事项:
    • Rotation前后顺序需要明确定义(与移动不同,先向X移动后向Y移动与先向Y移动后向X移动可以互换顺序,而旋转不可以)
    • 旋转转轴也需要明确定义。一般有两种:【固定不动】旋转轴和【Body frame(随动)】转轴。
  • 两个拆解方式:
    • 对方向【固定不动】的旋转轴旋转:Fixed angles ...
    • 【转动的frame当下所在】的旋转方向旋转:Euler angles ...

2. Fixed Angles

2.1 X-Y-Z Fixed Angles -- 由angles推算旋转矩阵R(三次旋转分别针对X,Y,Z轴来做,X,Y,Z轴是固定不动的,如下图蓝色坐标系)(逆时针为正)

从左到右:绕X_A旋转,绕Y_A旋转,绕Z_A旋转

如何由三个角度推算出Rotation Matrix?

三个旋转矩阵的连乘,先转放后面

EX1:

可以发现,更换转动顺序后,旋转矩阵数值与frame姿态都不相同,即是转动角度相同,顺序不同,最后的状态不同。

2.2 X-Y-Z Fixed Angles——由R推算angles

EX1 先给旋转矩阵内容,计算三个角度

先对X转60°,再对Y转30°,没有对Z转

3. Euler Angles

3.1 Z-Y-X Euler Angles-由angles推算R (绕被转动转轴去做旋转)

从左到右:先根据 Z_B转,在根据Y_B转,最后根据X_B转

如何由三个角度推出Rotation Matrix?

注意,先转的放前面,后转的放后面

先转的放【前面】:以mapping来想,对某一个向量,从最后一个frame【逐渐转动或移动】来回到第一个frame:

欧拉angle与Fixed Angle具有简单对应

EX1:

EX2: Euler(Y30,X60) v.s. Fixed(X60,Y30)

3.2 Z-Y-Z Euler Angles - 由angles推算Rotation Matrix.

旋转矩阵表达法:先转放前面,后转放后面(反向mapping)

3.3 Z-Y-Z Eulers Angles - 由Rotation Matrix推算angles

EX: Revisit Euler Angles-2的范例

以此ZYZ旋转矩阵转出的状态和之前的状态一样

争取一个特定的R,有多种的拆解组合:

  • 12种Euler Angles和12种Fixed Angles;
  • 存在Duality---共12种对Principal Axes连3次转动的拆解方法;

4. Angle-Axis表达法:

k是单位向量,vector有2个参量,再加上转角,也是3Dofs

5. Quaternion(四元数)表达法

[公式]

其中: [公式]

这里,四个参数加一个条件约束,也为3DOFs。