机器人学:(2)位姿描述和坐标变换

机器人的位置(Position)和姿态(Pose)常常统称为位姿。位姿描述是表达机器人的线速度、角速度、力和力矩的基础,而坐标变换是研究不同坐标系中的机器人位姿关系的重要途径。

2.1 位姿的数学描述

2.1.1 位置描述


一个坐标系在空间中的位置可以通过一个三维向量来表示,如图 2.1 所示,用三个相互正交带有箭头的单位矢量来表示一个参考坐标系 A {A} A,通过一个矢量表示参考坐标系中的一个点 A P ^AP AP ,可以由一个 3 × 1 3\times1 3×1向量表示:

A P = [ p x , p y , p z ] T (2-1) ^AP=[p_x,p_y,p_z]^T \tag{2-1} AP=[px,py,pz]T(2-1)

其中, p x , p y , p z p_x,p_y,p_z px,py,pz分别为空间点在参考坐标系 A {A} A 的 X,Y,Z 坐标轴的投影。

图 2.1 位置描述

2.1.2 姿态描述


对于空间中的一个点可以用位置矢量描述,但是对于空间中的一个物体,仅仅使用位置描述显然是不够的,所以还需要引入姿态描述。如图 2.2 所示,为了描述物体的姿态,我们通过在物体上固定一个坐标系 B {B} B,用坐标系 B {B} B相对于坐标系 A {A} A的关系描述物体的姿态。通过 X B X_B XB, Y B Y_B YB Z B Z_B ZB和表示坐标系主轴方向的单位矢量,其在参考坐标系中的表示可以被写成 A X B ^A X_B AXB A Y B ^A Y_B AYB A Z B ^A Z_B AZB。通过一个 3×3 的矩阵来表示坐标系 B B B相对于坐标系 A {A} A的姿态描述。

B A R = [ A X B ,   A Y B ,   A Z B ] = [ X B X A Y B X A Z B X A X B Y A Y B Y A Z B Y A X B Z A Y B Z A Z B Z A ] (2-2) ^A_B R=[^AX_B,\ ^AY_B,\ ^AZ_B]=\left[ \begin{array}{ccc} X_BX_A & Y_BX_A & Z_BX_A\\\\ X_BY_A & Y_BY_A & Z_BY_A\\\\ X_BZ_A & Y_BZ_A & Z_BZ_A \end{array} \right] \tag{2-2} BAR=[AXB, AYB, AZB]= XBXAXBYAXBZAYBXAYBYAYBZAZBXAZBYAZBZA (2-2)

图 2.2 姿态描述

分析式(2-2)可以发现,矩阵 B A R ^A_B R BAR的行是坐标系 A A A的单位矢量在坐标系 B B B中的表示形式,则有以下式子成立:

B A R = [ A X B ,   A Y B ,   A Z B ] = [   B X A   B Y A   B Z A ] ⇒   B A R T =   A B R (2-3) ^A_B R=[^AX_B,\ ^AY_B,\ ^AZ_B]=\left[ \begin{array}{c} \ ^BX_A \\\\ \ ^BY_A \\\\ \ ^BZ_A \end{array} \right]\Rightarrow \ ^A_B R^T =\ ^B_A R \tag{2-3} BAR=[AXB, AYB, AZB]=  BXA BYA BZA  BART= ABR(2-3)

需要注意的是,旋转矩阵是一种特殊的每列相互正交的单位矩阵,其行列式恒等于1,我们称之为标准正交矩阵。而对于任何一个正交矩阵 R R R存在一个反对称矩阵 S S S,满足以下条件:

R = ( I 3 − S ) − 1 ( I 3 + S ) (2-4) R=(I_3-S)^{-1}(I_3+S) \tag{2-4} R=(I3S)1(I3+S)(2-4)

其中, I 3 I_3 I3为 3×3 的单位矩阵,可以由3个参数 ( s x , s y , s z ) (s_x,s_y,s_z) (sx,sy,sz)表示。

因此旋转矩阵可以由3个参数即可确定,根据《机器人学导论》所述,常采用的方法有 X Y Z XYZ XYZ固定角, Z Y X ZYX ZYX欧拉角, Z Y Z ZYZ ZYZ欧拉角。由于后续运动学只涉及到了 X Y Z XYZ XYZ固定角,以下只对 X Y Z XYZ XYZ固定角进行介绍。

如图 2.3 所示,以坐标系 B B B表示空间连杆对应的坐标系,以固定坐标系 A A A为参考坐标系,将坐标系 B B B和坐标系 A A A重合,依次将坐标系 B B B X A X_A XA按右手螺旋法则旋转 γ \gamma γ角,再绕 Y A Y_A YA按右手螺旋法则旋转 β \beta β角,最后绕 Z A Z_A ZA按右手螺旋法则旋转 α \alpha α角。

图 2.3 固定角旋转示意图

每次旋转都是绕着固定参考坐标系 A A A 旋转,通常用横滚角 (roll),俯仰角 (pitch) 和偏转角 (yaw) 分别表示 γ \gamma γ β \beta β α \alpha α,简称 RPY 角。则用 RPY 角表示的旋转矩阵为:


在运动学应用中,姿态信息通常需要在旋转矩阵与角之间进行相互转换,如在机械臂正运动学分析过程中,需要考虑其逆问题,即从旋转矩阵等价推导出 RPY 表示的 XYZ 固定角;而在机械臂逆运动学分析过程中,只需按照式(2-5)即可将表示法的姿态信息转换为旋转矩阵。下面推导其逆问题,即已知旋转矩阵推出 RPY 表示的 XYZ 固定角。令

B A R X Y Z ( γ , β , α ) = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] (2-6) ^A_BR_{XYZ} (\gamma,\beta,\alpha)=\begin{bmatrix} r_{11} & r_{12} & r_{13}\\\\ r_{21} & r_{22} & r_{23}\\\\ r_{31} & r_{32} & r_{33} \end{bmatrix} \tag{2-6} BARXYZ(γ,β,α)= r11r21r31r12r22r32r13r23r33 (2-6)

结合式(2-5),通过计算 r 11 r_{11} r11 r 21 r_{21} r21的平方和再开方根,即可求得 c o s β cos\beta cosβ,当 c β ≠ 0 c\beta\ne0 cβ=0时,再用 − r 31 -r_{31} r31除以 c β c\beta cβ,可得 t a n β tan\beta tanβ,最后求反正切即可求得 β \beta β

β = a t a n 2 ( − r 31 , r 11 2 + r 21 2 ) (2-7) \beta=atan2(-r_{31},\sqrt{r^2_{11}+r^2_{21}}) \tag{2-7} β=atan2(r31,r112+r212 )(2-7)

c β ≠ 0 c\beta\ne0 cβ=0 时,利用 r 21 / c β r_{21}/c\beta r21/cβ 除以 r 11 / c β r_{11}/c\beta r11/cβ再求反正切得到 α \alpha α

α = a t a n 2 ( r 21 / c β , r 11 / c β ) (2-8) \alpha=atan2(r_{21}/c\beta,r_{11}/c\beta) \tag{2-8} α=atan2(r21/cβr11/cβ)(2-8)

c β ≠ 0 c\beta\ne0 cβ=0 时,利用 r 32 / c β r_{32}/c\beta r32/cβ 除以 r 33 / c β r_{33}/c\beta r33/cβ 再求反正切得到 γ \gamma γ

γ = a t a n 2 ( r 32 / c β , r 33 / c β ) (2-9) \gamma=atan2(r_{32}/c\beta,r_{33}/c\beta) \tag{2-9} γ=atan2(r32/cβr33/cβ)(2-9)

c β = 0 c\beta=0 cβ=0 时,即 β = ± 9 0 o \beta=\pm90^o β=±90o 时,此时只能求出和的和或者差,一般 α = 0 \alpha=0 α=0 令,可解得:

β = ± 90 , α = 0 , γ = ± a t a n 2 ( r 12 , r 22 ) (2-10) \beta=\pm90,\alpha=0,\gamma=\pm atan2(r_{12},r_{22}) \tag{2-10} β=±90,α=0,γ=±atan2(r12,r22)(2-10)

以上式子中, a t a n 2 atan2 atan2 是双参数四象限反正切函数,其值域在 ( − π , π ] (-\pi,\pi] (π,π];而 a t a n atan atan 是单参数反正切函数,其值域在 ( − π / 2 , π / 2 ] (-\pi/2,\pi/2] (π/2,π/2] a t a n 2 atan2 atan2 取值范围更大,实际应用中可能存在两种解,根据需要取舍,在一些编程语言库中也有对应的预定义,方便嵌入式代码实现。

(3) 位姿描述

要完整描述空间中的物体所需的信息需要位置和姿态组合的形式来表示,即位姿。空间中物体相对参考坐标系的位姿描述可以用式(2-11)表示:

B = [ B A R , A P B O R G ] (2-11) B=[^A_BR, ^AP_{BORG}] \tag{2-11} B=[BAR,APBORG](2-11)

其中,旋转矩阵 B A R ^A_BR BAR 表示物体坐标系 B B B 相对于参考坐标系 A A A 的姿态信息, A P B O R G ^AP_{BORG} APBORG 表示物体坐标系 B B B 相对于参考坐标系 A A A 的位置信息。

2.2 坐标变换

由上述位姿描述可知,物体的位置和姿态是根据参考坐标系唯一确定的,当在不同参考坐标系进行同一物体位姿描述时,位姿表示也会随之发生变化。因此需要用到坐标变换将物体在不同参考坐标系下的描述关联起来。不同坐标系之间的坐标变换包括:平移变换、旋转变换以及复合变换。

2.2.1 平移变换

平移变换指物体在空间中保持姿态不变的运动。如图2.4 所示,坐标系 A A A 和坐标系 B B B 的姿态相同,不同的是只发生了平移。 P P P点在坐标系 B B B的位置用矢量 B P ^BP BP表示,在坐标系 A A A的位置用矢量 A P ^AP AP表示, B B B的原点相对于 A A A的位置用矢量 A P B O R G ^AP_{BORG} APBORG表示。因为两个矢量所在的坐标系具有相同的姿态,通过矢量相加的方法求点 P P P相对于 A A A的位置 A P ^AP AP

A P =   B P +   A P B O R G (2-12) ^AP=\ ^BP +\ ^AP_{BORG} \tag{2-12} AP= BP+ APBORG(2-12)

图2.4 平移坐标变换

2.2.2 旋转变换

如图2.5 所示,坐标系 B B B A A A的坐标原点重合,但两者的方向不同。坐标系相对于坐标系的姿态描述用旋转矩阵表示,空间中的点 P P P在坐标系 A A A的位置描述为 A P ^AP AP,在坐标系 B B B的位置描述为 B P ^BP BP,两者具有如下变换关系:

A P = B A R   B P (2-13) ^AP={^A_BR}\ ^BP \tag{2-13} AP=BAR BP(2-13)

图2.5 旋转坐标变换

1. 绕一个坐标轴旋转的旋转矩阵

绕 X,Y,Z 坐标轴的旋转变换矩阵是最基本的转动矩阵,他们是一般转动矩阵的特例,故可直接由一般转动矩阵得到。

图2.6 绕 X 轴,Y 轴,Z 轴转动 θ 角

绕 X 轴,Y 轴,Z 轴转动 θ 角对应的旋转矩阵为:

2. 绕多个坐标轴旋转的旋转矩阵

坐标系绕多个坐标轴转动问题可分为绕动坐标系的旋转(内在旋转)和绕定坐标系的旋转(外在旋转)。

1) 绕动坐标系的旋转

坐标系 { i } \{i\} {i}绕其 Z 轴旋转 φ \varphi φ角,得到新坐标系 {1}, 坐标系 {1} 再绕其 Y 轴旋转 θ \theta θ角,得到新坐标系 {2},坐标系 {2} 再绕其 Z 轴旋转 ϕ \phi ϕ角,得到新坐标系 { j } \{j\} {j}, 旋转矩阵 i j R ( φ , θ , ϕ ) ^j_iR(\varphi, \theta, \phi) ijR(φ,θ,ϕ)

图 2.7 绕动坐标系的坐标轴旋转示意图

旋转矩阵为:

在这里插入图片描述

2) 绕定坐标系的旋转

坐标系 { i } \{i\} {i}绕其 X 轴旋转 α \alpha α角,得到新坐标系 { m } \{m\} {m}, 坐标系 { m } \{m\} {m}再绕坐标系 { i } \{i\} {i}的 Z 轴旋转 θ \theta θ角,得到新坐标系 { j } \{j\} {j}, 旋转矩阵 i j R ( α , θ ) ^j_iR(\alpha, \theta) ijR(α,θ)

图 2.8 绕定坐标系旋转示意图


旋转矩阵为:

在这里插入图片描述

绕动坐标系旋转,转动矩阵右乘,旋转矩阵相乘顺序与坐标系转动次序相同;绕定坐标系旋转,转动矩阵左乘,旋转矩阵相乘顺序与坐标系转动次序相反;内在旋转与外在旋转的绕轴旋转序列倒序时,两者等效。

2.2.3 复合变换

通常情况下存在这样的情况,假设已知矢量相对某坐标系 B B B的描述,但想求其相对于另一个坐标系 A A A的描述,此时需要同时用到平移和旋转变换。如图2.9 所示,坐标系 A A A和坐标系 B B B原点不同且姿态不同,已知空间中的点 P P P相对于坐标系 B B B的描述为 B P ^BP BP,那么相对于坐标系的描述可以通过复合变换得到。首先通过旋转变换,将 P P P的姿态变换到一个中间坐标系,该中间坐标系和坐标系 A A A的姿态相同,但原点与坐标系 B B B重合,然后再将中间坐标系进行平移变换,使其与坐标系 A A A重合。其变换的过程见式(2-14)所示。

A P = B A R   B P + A P B O R G (2-14) ^AP = {^A_BR \ ^BP} + {^AP_{BORG}} \tag{2-14} AP=BAR BP+APBORG(2-14)

图 2.9 复合变换

为了方便计算,一般我们将式(2-14)写成如下表示形式:

[ A P 1 ] = [ B A R A P B O R G 0 A P B O R G ] [ B P 1 ] ⇒ A P =   B A T   B P (2-15) \begin{bmatrix} ^AP\\\\ 1 \end{bmatrix}= \begin{bmatrix} ^A_BR & ^AP_{BORG} \\\\ \textbf 0 & ^AP_{BORG} \end{bmatrix} \begin{bmatrix} ^BP \\\\ 1 \end{bmatrix} \Rightarrow AP =\ ^A_BT\ ^BP \tag{2-15} AP1 = BAR0APBORGAPBORG BP1 AP= BAT BP(2-15)

其中, A P ^AP AP B P ^BP BP 均为 4×1 的列向量, B A T ^A_BT BAT 为 4×4 的齐次变换矩阵,表示坐标系 B B B 相对于坐标系 A A A 的变换描述。

2.3 齐次坐标和齐次变换

齐次坐标可用于表征机器人的位姿,齐次变换可用于实现不同坐标系中机器人位姿的转换。

2.3.1 齐次坐标

(1)点的齐次坐标

一般来说,n 维空间的齐次坐标表示是一个 n+1 维空间实体。有一个特定的投影附加于 n 维空间,也可以把它看作一个附加于每个矢量的特定坐标——比例系数。
简而言之,齐次坐标就是用 n+1 维来代表 n 维坐标.

我们可以在一个 3×1 维的笛卡尔坐标末尾加上一个额外的变量 ω \omega ω 来形成 4×1 维的齐次坐标。因此,一个在笛卡尔坐标系下的点 P = [ x   y   z ] T \boldsymbol{P}=[x\ y\ z]^T P=[x y z]T 在齐次坐标里面变成了 P = [ a   b   c   w ] T \boldsymbol{P}=[a\ b\ c\ w]^T P=[a b c w]T ,并且有

x = a / ω x = a/\omega x=a/ω y = b / ω y = b/\omega y=b/ω z = c / ω z = c/\omega z=c/ω,其中, ω \omega ω是非零实数。

例如,笛卡尔坐标系下 P = [ 1   2   3 ] T \boldsymbol{P}=[1\ 2\ 3]^T P=[1 2 3]T 用齐次坐标可以表示为 P = [ 1   2   3   1 ] T \boldsymbol{P}=[1\ 2\ 3\ 1]^T P=[1 2 3 1]T

显然,齐次坐标表达并不是唯一的,随 ω \omega ω 值的不同而不同。在计算机图学中, ω \omega ω 作为通用比例因子,它可取任意正值,但在机器人的运动分析中,总是取 ω \omega ω=1。即点的齐次坐标通式为:

P = [ x   y   z   1 ] T \boldsymbol{P}=[x\ y\ z\ 1]^T P=[x y z 1]T

(2)坐标轴的齐次坐标

坐标轴齐次坐标通式:

[ a   b   c   0 ] T [a\ b\ c\ 0]^T [a b c 0]T,其中a, b, c 称为方向数

笛卡尔坐标系三个坐标轴的齐次坐标表示如下:

(1)X 轴的齐次坐标为: [ 1   0   0   0 ] T [1\ 0\ 0\ 0]^T [1 0 0 0]T;
(2)Y 轴的齐次坐标为: [ 0   1   0   0 ] T [0\ 1\ 0\ 0]^T [0 1 0 0]T;
(3)Z 轴的齐次坐标为: [ 0   0   1   0 ] T [0\ 0\ 1\ 0]^T [0 0 1 0]T.

2.3.2 齐次变换

坐标系 { j } \{j\} {j}相对于坐标系 { i } \{i\} {i}的平移向量 i O j P ^{O_j}_i\boldsymbol{P} iOjP 的齐次变换矩阵:

T r a n s ( i O j P ) = [ I 3 × 3 i O j P 0 0 0 1 ] \boldsymbol{Trans}(^{O_j}_i\boldsymbol{P})=\begin{bmatrix} & \boldsymbol{I}_{3\times3} & & ^{O_j}_i\boldsymbol{P} \\\\ 0 & 0 & 0 & 1 \end{bmatrix} Trans(iOjP)= 0I3×300iOjP1

坐标系 { j } \{j\} {j}相对于坐标系 { i } \{i\} {i}的旋转向量 i j R ^j_i\boldsymbol{R} ijR 的齐次变换矩阵:

R o t ( K , θ ) = [ i j R 0 0 0 0 1 ] \boldsymbol{Rot}(\boldsymbol{K},\theta)=\begin{bmatrix} & ^j_i\boldsymbol{R} & & 0 \\\\ 0 & 0 & 0 & 1 \end{bmatrix} Rot(K,θ)= 0ijR0001

综合齐次变换矩阵:

i j T = [ i j R i O j P 0 0 0 1 ] 4 × 4 ^j_i\boldsymbol{T}=\begin{bmatrix} & ^j_i\boldsymbol{R} & & ^{O_j}_i\boldsymbol{P} \\\\ 0 & 0 & 0 & 1 \end{bmatrix}_{4\times4} ijT= 0ijR00iOjP1 4×4

i j T ^j_i\boldsymbol{T} ijT 的含义是坐标系 { j } \{j\} {j}相对于坐标系 { i } \{i\} {i}的位姿。

2.4 姿态的其他表示方法

2.4.1 RPY角

绕固定坐标系多个坐标轴旋转,定义绕 Z 轴的转动为 Roll(翻滚),转角为 α; 绕 Y 轴的转动为 Pitch(俯仰),转角为 β;绕 X 轴的转动为 Yaw(偏航),转角为 γ 。

顺序:绕 X 转 γ,绕 Y 转 β,绕 Z 转 α,旋转矩阵左乘。

公式: R x y z ( γ , β , α ) = R o t ( Z , α ) R o t ( Y , β ) R o t ( X , γ ) R_{xyz}(γ,β,α) = Rot(Z,α)Rot(Y,β)Rot(X,γ) Rxyz(γ,β,α)=Rot(Z,α)Rot(Y,β)Rot(X,γ)



2.4.2 欧拉角


ZYX欧拉角

绕自身坐标系,绕动轴 Z—Y—X 旋转,旋转矩阵右乘。

顺序:绕 Z 转 α,绕 Y 转 β,绕 X 转 γ 。

公式: R z y x ( α , β , γ ) = R o t ( Z , α ) R o t ( Y , β ) R o t ( X , γ ) R_{zyx}(α,β,γ) = Rot(Z,α)Rot(Y,β)Rot(X,γ) Rzyx(α,β,γ)=Rot(Z,α)Rot(Y,β)Rot(X,γ)

ZYZ欧拉角

只需要两个坐标轴,绕动轴 Z—Y—Z 旋转,旋转矩阵右乘。

顺序:绕 Z 转 α,绕 Y 转 β,绕 Z 转 γ 。

公式: R z y z ( α , β , γ ) = R o t ( Z , α ) R o t ( Y , β ) R o t ( Z , γ ) R_{zyz}(α,β,γ) = Rot(Z,α)Rot(Y,β)Rot(Z,γ) Rzyz(α,β,γ)=Rot(Z,α)Rot(Y,β)Rot(Z,γ)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值