机器人运动学笔记1——林沛群
1 导论
新增部分:无伤理解欧拉角中的“万向死锁”现象
参考自视频:台大机器人学之运动学——林沛群
平面:2个移动DOF,1个转动DOF
空间:3个移动DOF,3个转动DOF
刚体运动状态描述,在刚体上建立刚体坐标系(一般在质心):
- 移动:刚体的位置通过坐标轴原点来表示
- 转动:刚体的姿态通过刚体坐标轴相对于世界坐标轴之间的夹角来表示
记录运动轨迹,对轨迹进行微分,可以得到运动过程中的速度和加速度信息。
1.1 移动
移动:以向量P来描述{B}的原点相对于{A}的状态
1.2 转动
转动:描述{B}相对于{A}的姿态。——旋转矩阵
B
A
R
_B^AR
BAR为B相对于A的旋转矩阵,
A
X
^
B
^A\widehat{X}_B
AX
B表示B刚体的x轴基向量相对于世界坐标系A的各个分量。即B的x轴在A的三轴上的投影分量。
例题:
答案:
1.3 旋转矩阵
- 特性1: B A R = A B R T _B^AR=_A^BR^T BAR=ABRT即B相对于A的旋转矩阵等于A相对于B的旋转矩阵的转置。
- 特性2: B A R T _B^AR^T BART B A R _B^AR BAR= [ 0 − 1 1 0 ] \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} [01−10]= I \Iota I,可得 B A R T = B A R − 1 = A B R _B^AR^T =_B^AR^{-1} =_A^BR BART=BAR−1=ABR,因此旋转矩阵是正交矩阵。旋转矩阵内三列两两垂直,又为单位正交基。行列式为1。
由于是单位正交基,则有6个限制条件(3个(列的模为1)+3个两两垂直),但旋转矩阵有9个元素,因此旋转矩阵只有3个DOF,与空间中转动具有3个DOF符合。
旋转矩阵还可以用于转换向量的坐标:
将在{B}坐标系中表示的向量P转换到在{A}坐标系中表示的向量P,
A
P
^{A}P
AP=
B
A
R
_B^A R
BAR
B
P
^BP
BP。
旋转矩阵还可以用于进一步描述物体转动的状态。
关于Z轴(逆时针为正)旋转的旋转矩阵为:
R
z
^
A
(
θ
)
=
[
c
o
s
θ
−
s
i
n
θ
0
s
i
n
θ
c
o
s
θ
0
0
0
1
]
=
[
c
θ
−
s
θ
0
s
θ
c
θ
0
0
0
1
]
R_{\hat{z}_{A}(\theta )} =\begin{bmatrix} cos\theta & -sin\theta & 0 \\ sin\theta & cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} =\begin{bmatrix} c\theta & -s\theta & 0 \\ s\theta & c\theta & 0 \\ 0& 0 & 1 \end{bmatrix}
Rz^A(θ)=
cosθsinθ0−sinθcosθ0001
=
cθsθ0−sθcθ0001
关于X轴(逆时针为正)旋转的旋转矩阵为:
R
x
^
A
(
θ
)
=
[
1
0
0
0
c
o
s
θ
−
s
i
n
θ
0
s
i
n
θ
c
o
s
θ
]
=
[
1
0
0
0
c
θ
−
s
θ
0
s
θ
c
θ
]
R_{\hat{x}_{A}(\theta )} =\begin{bmatrix} 1 & 0 & 0 \\ 0 & cos\theta & -sin\theta \\ 0 & sin\theta & cos\theta \end{bmatrix} =\begin{bmatrix} 1 & 0 & 0 \\ 0 & c\theta & -s\theta \\ 0 & s\theta & c\theta \end{bmatrix}
Rx^A(θ)=
1000cosθsinθ0−sinθcosθ
=
1000cθsθ0−sθcθ
关于Y轴(逆时针为正)旋转的旋转矩阵为:
R
y
^
A
(
θ
)
=
[
c
o
s
θ
0
s
i
n
θ
0
1
0
−
s
i
n
θ
0
c
o
s
θ
]
=
[
c
θ
0
s
θ
0
1
0
−
s
θ
0
c
θ
]
R_{\hat{y}_{A}(\theta )} =\begin{bmatrix} cos\theta & 0 & sin\theta \\ 0 & 1 & 0 \\ -sin\theta & 0 & cos\theta \end{bmatrix} =\begin{bmatrix} c\theta & 0 & s\theta \\ 0 & 1 & 0 \\ -s\theta & 0 & c\theta \end{bmatrix}
Ry^A(θ)=
cosθ0−sinθ010sinθ0cosθ
=
cθ0−sθ010sθ0cθ
例题A投影到B:
答案:
2 旋转矩阵与转角
拆解成三次旋转连乘时要注意,旋转矩阵不支持交换律,因此需要明确多次旋转的先后顺序,旋转转轴也需要明确定义,是对固定不动的轴旋转还是对当下frame坐标轴的转轴做旋转。
由于上述原因将拆解方式分为两种:
- 对方向固定不动得转轴旋转Fixed angles。
- 对转动得frame当下所在的转轴方向旋转Euler angles。
2.1 Fixed Angles——正解
每次旋转都是对于不动的绿色坐标轴做旋转。
公式为:
B
A
R
X
Y
Z
(
γ
,
β
,
α
)
=
R
Z
(
α
)
R
Y
(
β
)
R
X
(
γ
)
=
[
c
α
−
s
α
0
s
α
c
α
0
0
0
1
]
[
c
β
0
s
β
0
1
0
−
s
β
0
c
β
]
[
1
0
0
0
c
γ
−
s
γ
0
s
γ
c
γ
]
=
[
c
α
c
β
c
α
s
β
s
γ
−
s
α
c
γ
c
α
s
β
c
γ
+
s
α
s
γ
s
α
c
β
s
α
s
β
s
γ
+
c
α
c
γ
s
α
s
β
c
γ
−
c
α
s
γ
−
s
β
c
β
s
γ
c
β
c
γ
]
_{B}^{A}R_{XYZ}(\gamma ,\beta ,\alpha ) =R_{Z}(\alpha )R_{Y}(\beta )R_{X}(\gamma)=\begin{bmatrix} c\alpha& -s\alpha & 0 \\ s\alpha& c\alpha& 0 \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} c\beta& 0 & s\beta\\ 0 & 1 & 0\\ -s\beta& 0 & c\beta \end{bmatrix}\begin{bmatrix} 1 & 0 & 0\\ 0 & c\gamma & -s\gamma\\ 0 & s\gamma & c\gamma \end{bmatrix}=\begin{bmatrix} c\alpha c\beta & c\alpha s\beta s\gamma-s\alpha c\gamma & c\alpha s\beta c\gamma+s\alpha s\gamma\\ s\alpha c\beta & s\alpha s\beta s\gamma+c\alpha c\gamma & s\alpha s\beta c\gamma-c\alpha s\gamma\\ -s\beta & c\beta s\gamma & c\beta c\gamma \end{bmatrix}
BARXYZ(γ,β,α)=RZ(α)RY(β)RX(γ)=
cαsα0−sαcα0001
cβ0−sβ010sβ0cβ
1000cγsγ0−sγcγ
=
cαcβsαcβ−sβcαsβsγ−sαcγsαsβsγ+cαcγcβsγcαsβcγ+sαsγsαsβcγ−cαsγcβcγ
顺序是从开始到结束不断左乘旋转矩阵,即先转的放后面。
例题:
2.2 Fixed Angles——逆解
B
A
R
X
Y
Z
(
γ
,
β
,
α
)
=
[
c
α
c
β
c
α
s
β
s
γ
−
s
α
c
γ
c
α
s
β
c
γ
+
s
α
s
γ
s
α
c
β
s
α
s
β
s
γ
+
c
α
c
γ
s
α
s
β
c
γ
−
c
α
s
γ
−
s
β
c
β
s
γ
c
β
c
γ
]
=
[
r
11
r
12
r
13
r
21
r
22
r
23
r
31
r
32
r
33
]
_{B}^{A}R_{XYZ}(\gamma ,\beta ,\alpha ) =\begin{bmatrix} c\alpha c\beta & c\alpha s\beta s\gamma-s\alpha c\gamma & c\alpha s\beta c\gamma+s\alpha s\gamma\\ s\alpha c\beta & s\alpha s\beta s\gamma+c\alpha c\gamma & s\alpha s\beta c\gamma-c\alpha s\gamma\\ -s\beta & c\beta s\gamma & c\beta c\gamma \end{bmatrix}=\begin{bmatrix} r_{11} & r_{12} & r_{13}\\ r_{21} & r_{22} & r_{23}\\ r_{31} & r_{32} & r_{33} \end{bmatrix}
BARXYZ(γ,β,α)=
cαcβsαcβ−sβcαsβsγ−sαcγsαsβsγ+cαcγcβsγcαsβcγ+sαsγsαsβcγ−cαsγcβcγ
=
r11r21r31r12r22r32r13r23r33
If
β
≠
90
°
\beta\neq90°
β=90°,
β
=
A
t
a
n
2
(
−
r
31
,
r
11
2
+
r
21
2
)
\beta=Atan2(-r_{31},\sqrt{{r_{11}}^2+{r_{21}}^2})
β=Atan2(−r31,r112+r212)
α
=
A
t
a
n
2
(
r
21
/
c
β
,
r
11
/
c
β
)
\alpha=Atan2(r_{21}/c\beta,r_{11}/c\beta)
α=Atan2(r21/cβ,r11/cβ)
γ
=
A
t
a
n
2
(
r
32
/
c
β
,
r
33
/
c
β
)
\gamma=Atan2(r_{32}/c\beta,r_{33}/c\beta)
γ=Atan2(r32/cβ,r33/cβ)
2.3 Euler Angles——Z-Y-X由angle推算R
每次旋转都是对于当下坐标系的轴做旋转。转轴先后为Z-Y-X。
公式是:
B
A
R
Z
′
Y
′
X
′
(
α
,
β
,
γ
)
=
R
Z
′
(
α
)
R
Y
′
(
β
)
R
X
′
(
γ
)
_{B}^{A} R_{Z'Y'X'} (\alpha ,\beta ,\gamma )=R_{Z'} (\alpha)R_{Y'} (\beta)R_{X'} (\gamma)
BARZ′Y′X′(α,β,γ)=RZ′(α)RY′(β)RX′(γ)
先转的放前面,结果与固定轴X-Y-Z旋转获得同样的结果。欧拉角先对Y转30°再对X转60°,等于固定角先对X转60°再对Y转30°。
2.4 Euler Angles——Z-Y-Z由angle推算R和R求解angle
Z-Y-Z公式为:
B
A
R
Z
′
Y
′
Z
′
(
α
,
β
,
γ
)
=
R
Z
′
(
α
)
R
Y
′
(
β
)
R
Z
′
(
γ
)
_{B}^{A} R_{Z'Y'Z'} (\alpha ,\beta ,\gamma )=R_{Z'} (\alpha)R_{Y'} (\beta)R_{Z'} (\gamma)
BARZ′Y′Z′(α,β,γ)=RZ′(α)RY′(β)RZ′(γ)
B
A
R
Z
′
Y
′
Z
′
(
α
,
β
,
γ
)
=
[
c
α
c
β
c
γ
−
s
α
s
γ
−
c
α
c
β
s
γ
−
s
α
c
γ
c
α
s
β
s
α
c
β
c
γ
+
c
α
s
γ
−
s
α
c
β
s
γ
+
c
α
c
γ
s
α
s
β
−
s
β
c
γ
s
β
s
γ
c
β
]
=
[
r
11
r
12
r
13
r
21
r
22
r
23
r
31
r
32
r
33
]
{_B^A}R_{Z^\prime Y^\prime Z^\prime}(\alpha,\beta,\gamma)=\left[\begin{matrix}c\alpha c\beta c\gamma-s\alpha s\gamma&-c\alpha c\beta s\gamma-s\alpha c\gamma&c\alpha s\beta\\s\alpha c\beta c\gamma+c\alpha s\gamma&-s\alpha c\beta s\gamma+c\alpha c\gamma&s\alpha s\beta\\-s\beta c\gamma&s\beta s\gamma&c\beta\\\end{matrix}\right]=\left[\begin{matrix}r_{11}&r_{12}&r_{13}\\r_{21}&r_{22}&r_{23}\\r_{31}&r_{32}&r_{33}\\\end{matrix}\right]
BARZ′Y′Z′(α,β,γ)=
cαcβcγ−sαsγsαcβcγ+cαsγ−sβcγ−cαcβsγ−sαcγ−sαcβsγ+cαcγsβsγcαsβsαsβcβ
=
r11r21r31r12r22r32r13r23r33
If
β
≠
0
°
\beta\neq0°
β=0°
β
=
A
t
a
n
2
(
r
31
2
+
r
32
2
,
r
33
)
\beta=Atan2(\sqrt{{r_{31}}^2+{r_{32}}^2},r_{33})
β=Atan2(r312+r322,r33)
α
=
A
t
a
n
2
(
r
23
/
s
β
,
r
13
/
s
β
)
\alpha=Atan2(r_{23}/s\beta,r_{13}/s\beta)
α=Atan2(r23/sβ,r13/sβ)
γ
=
A
t
a
n
2
(
r
32
/
s
β
,
−
r
31
/
s
β
)
\gamma=Atan2(r_{32}/s\beta,-r_{31}/s\beta)
γ=Atan2(r32/sβ,−r31/sβ)
例题:
2.5 Fixed angles和Euler angles小结
两种方法达到某个姿态都有12种根据坐标轴转动三次的旋转方式(3X2X2)。
Angle-axis表达法:
Quaternion(四元数)表达法:
2.6 Mapping——齐次变换矩阵
将移动和转动整合到一起,完成两个参考系之间的映射。
齐次变换矩阵描述了一个参考系相对于另一个参考系的状态。
齐次变换矩阵(Homogeneous transformation matrix):
B
A
T
=
[
B
A
R
3
×
3
A
P
B
o
r
g
3
×
1
0
0
0
1
]
4
×
4
{_B^A}T=\left[\begin{matrix}{_B^A}R_{3\times3}&{_\ ^A}P_{{B\ org\ }_{3\times1}}\\\begin{matrix}0&0&0\\\end{matrix}&1\\\end{matrix}\right]_{4\times4}
BAT=[BAR3×3000 APB org 3×11]4×4
示例向量P从B参考系转换到A参考系:
转换矩阵可以连乘来达到参考系的转换:
B
A
T
=
C
A
T
D
C
T
B
D
T
{_B^A}T={_C^A}T{_D^C}T{_B^D}T
BAT=CATDCTBDT,从B参考系转换到A参考系,中间经过C和D参考系。
2.7 Operators——齐次变换矩阵
齐次变换矩阵做为运算子。对向量进行移动旋转操作。类似mapping,只不过mapping是将B参考系的向量映射到A参考系,而operator是将A参考系向量运算到与B参考系相同的向量下时,此时这个向量相对A参考系的坐标位置。
示例(先旋转再移动):
齐次变换矩阵做为运算子。对参考系进行与向量相反的移动旋转操作。即当看作是对向量做运算时,将向量向前移动,参考系不动,当看作对参考系做运算时,相当于将参考系向后移,向量不动。
示例:
2.8 Transformation Matrix
连续运算
A
P
=
B
A
T
B
P
=
B
A
T
C
B
T
C
P
=
[
B
A
R
C
B
R
A
P
B
o
r
g
+
B
A
R
B
P
C
o
r
g
0
0
0
1
]
=
C
A
T
C
P
{_\ ^A}P={_B^A}T{_\ ^B}P={_B^A}T{_C^B}T{_\ ^C}P=\left[\begin{matrix}{_B^A}R{_C^B}R&{_\ ^A}P_{B\ org}+{_B^A}R{_\ ^B}P_{C\ org}\\\begin{matrix}0&0&0\\\end{matrix}&1\\\end{matrix}\right]={_C^A}T{_\ ^C}P
AP=BAT BP=BATCBT CP=[BARCBR000 APB org+BAR BPC org1]=CAT CP将C参考系种的向量转换到A坐标系
齐次矩阵的逆矩阵:
B
A
T
=
[
B
A
R
3
×
3
A
P
B
o
r
g
3
×
1
0
0
0
1
]
4
×
4
{_B^A}T=\left[\begin{matrix}{_B^A}R_{3\times3}&{_\ ^A}P_{{B\ org\ }_{3\times1}}\\\begin{matrix}0&0&0\\\end{matrix}&1\\\end{matrix}\right]_{4\times4}
BAT=[BAR3×3000 APB org 3×11]4×4
B
A
T
−
1
=
A
B
T
=
[
B
A
R
T
−
B
A
R
T
A
P
B
o
r
g
0
0
0
1
]
{_B^A}T^{-1}={_A^B}T=\left[\begin{matrix}{_B^A}R^T&-{_B^A}R^T{_\ ^A}P_{B\ org}\\\begin{matrix}0&0&0\\\end{matrix}&1\\\end{matrix}\right]
BAT−1=ABT=[BART000−BART APB org1]
向量变换过程中的左乘和右乘:
- operator角度:某一个在{A}的向量,经过与{B}相同的变换,与{B}中向量重合。左乘
- mapping角度:某一个在{B}参考系中的向量,经过变换后,以{A}参考系表达该向量。右乘
以固定的{A}或者移动的{B}为基准做移动旋转操作,变换矩阵应该用不同的连乘方式。
总结
本文主要包含了基础性的矩阵内容笔记,为接下来是正、逆运动学部分做准备,下一篇是正、逆运动学部分内容笔记。