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

2.1 位姿的数学描述

2.1.1 位置描述


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

AP=[px,py,pz]T(2-1)^AP=[p_x,p_y,p_z]^T \tag{2-1}AP=[px,py,pz]T(2-1)

其中,px,py,pzp_x,p_y,p_zpx,py,pz分别为空间点在参考坐标系 A{A}A 的 X,Y,Z 坐标轴的投影。

图 2.1 位置描述

2.1.2 姿态描述


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

BAR=[AXB, AYB, AZB]=[XBXAYBXAZBXAXBYAYBYAZBYAXBZAYBZAZBZA](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)可以发现,矩阵 BAR^A_B RBAR的行是坐标系AAA的单位矢量在坐标系BBB中的表示形式,则有以下式子成立:

BAR=[AXB, AYB, AZB]=[ BXA BYA BZA]⇒ BART= ABR(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,我们称之为标准正交矩阵。而对于任何一个正交矩阵RRR存在一个反对称矩阵SSS,满足以下条件:

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

其中,I3I_3I3为 3×3 的单位矩阵,可以由3个参数 (sx,sy,sz)(s_x,s_y,s_z)(sx,sy,sz)表示。

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

如图 2.3 所示,以坐标系BBB表示空间连杆对应的坐标系,以固定坐标系AAA为参考坐标系,将坐标系BBB和坐标系AAA重合,依次将坐标系BBBXAX_AXA按右手螺旋法则旋转γ\gammaγ角,再绕YAY_AYA按右手螺旋法则旋转β\betaβ角,最后绕ZAZ_AZA按右手螺旋法则旋转α\alphaα角。

图 2.3 固定角旋转示意图

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


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

BARXYZ(γ,β,α)=[r11r12r13r21r22r23r31r32r33](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),通过计算r11r_{11}r11r21r_{21}r21的平方和再开方根,即可求得cosβcos\betacosβ,当cβ≠0c\beta\ne0cβ=0时,再用−r31-r_{31}r31除以 cβc\betacβ,可得tanβtan\betatanβ,最后求反正切即可求得β\betaβ

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

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

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

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

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

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

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

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

(3) 位姿描述

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

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

其中,旋转矩阵 BAR^A_BRBAR 表示物体坐标系 BBB 相对于参考坐标系 AAA 的姿态信息,APBORG^AP_{BORG}APBORG 表示物体坐标系 BBB 相对于参考坐标系 AAA 的位置信息。

2.2 坐标变换

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

2.2.1 平移变换

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

AP= BP+ APBORG(2-12)^AP=\ ^BP +\ ^AP_{BORG} \tag{2-12}AP= BP+ APBORG(2-12)

图2.4 平移坐标变换

2.2.2 旋转变换

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

AP=BAR BP(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}, 旋转矩阵 ijR(φ,θ,ϕ)^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}, 旋转矩阵 ijR(α,θ)^j_iR(\alpha, \theta)ijR(α,θ)

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


旋转矩阵为:

在这里插入图片描述

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

2.2.3 复合变换

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

AP=BAR BP+APBORG(2-14)^AP = {^A_BR \ ^BP} + {^AP_{BORG}} \tag{2-14}AP=BAR BP+APBORG(2-14)

图 2.9 复合变换

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

[AP1]=[BARAPBORG01][BP1]⇒AP= BAT BP(2-15)\begin{bmatrix} ^AP\\\\ 1 \end{bmatrix}= \begin{bmatrix} ^A_BR & ^AP_{BORG} \\\\ \textbf 0 & 1 \end{bmatrix} \begin{bmatrix} ^BP \\\\ 1 \end{bmatrix} \Rightarrow AP =\ ^A_BT\ ^BP \tag{2-15} AP1 = BAR0APBORG1 BP1 AP= BAT BP(2-15)

其中,AP^APAPBP^BPBP 均为 4×1 的列向量,BAT^A_BTBAT 为 4×4 的齐次变换矩阵,表示坐标系 BBB 相对于坐标系 AAA 的变换描述。

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]^TP=[x y z]T 在齐次坐标里面变成了 P=[a b c w]T\boldsymbol{P}=[a\ b\ c\ w]^TP=[a b c w]T ,并且有

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

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

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

P=[x y z 1]T\boldsymbol{P}=[x\ y\ z\ 1]^TP=[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}的平移向量 iOjP^{O_j}_i\boldsymbol{P}iOjP 的齐次变换矩阵:

Trans(iOjP)=[I3×3iOjP0001]\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}的旋转向量 ijR^j_i\boldsymbol{R}ijR 的齐次变换矩阵:

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

综合齐次变换矩阵:

ijT=[ijRiOjP0001]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

ijT^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 转 α,旋转矩阵左乘。

公式:Rxyz(γ,β,α)=Rot(Z,α)Rot(Y,β)Rot(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 转 γ 。

公式:Rzyx(α,β,γ)=Rot(Z,α)Rot(Y,β)Rot(X,γ)R_{zyx}(α,β,γ) = Rot(Z,α)Rot(Y,β)Rot(X,γ)Rzyx(α,β,γ)=Rot(Z,α)Rot(Y,β)Rot(X,γ)

ZYZ欧拉角

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

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

公式:Rzyz(α,β,γ)=Rot(Z,α)Rot(Y,β)Rot(Z,γ)R_{zyz}(α,β,γ) = Rot(Z,α)Rot(Y,β)Rot(Z,γ)Rzyz(α,β,γ)=Rot(Z,α)Rot(Y,β)Rot(Z,γ)

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐