机械臂是由一个个的刚体连接而成。为了分析机器人的运动,首先需要一个刚体的运动学模型。通过将一个参考框架固连在刚体上,就可以用描述这个框架位姿的 4×4 矩阵来描述刚体的运动。
1.1 位姿#
1.1.1 刚体固连框架#
在质点运动学中,为了描述质点的运动需要定义一个参考的固定坐标系。同样地,在刚体运动学中也需要定义一个固定的空间参考框架(框架的含义其实就是坐标系)。定义这个框架为 {S}, 作为空间中的参考坐标系。
定义与刚体固连的框架为 {B}, 作为刚体位姿描述的参考框架。根据几何学中的框架变换公式,刚体固连框架 {B} 相对于空间参考框架 {S} 的位姿可以用一个 4×4 矩阵来描述
BST=[ BSR0 SpBorg1]其中 BSR 是 3×3 的旋转矩阵,描述了刚体固连框架 {B} 相对于空间参考框架 {S} 的朝向旋转关系。 SpBorg 是 3×1 的列向量,描述了刚体固连框架 {B} 相对于空间参考框架 {S} 的平移关系。
这里的具体的变换关系是,假设有一个与空间参考框架 {S} 重合的框架,此框架先通过一个旋转矩阵 BSR 旋转到一个特定的朝向,然后此框架的原点再根据向量 SpBorg 平移到一个位置,通过上述两次变换得到的这个新框架就是刚体固连框架 {B}。

需要注意的是,这里框架的旋转与普通质点的旋转不同。形象化的表述可以是框架的三个坐标轴同时绕一个过空间参考框架 {S} 的旋转轴做相同角度大小的旋转,从而得到新的三个坐标轴。
1.1.2 齐次坐标变换#
上文说到,刚体的绝对位姿可以用框架之间的旋转加平移得到,这个旋转加平移的数学描述采用了 4×4 的形式(其实刚体的位姿采用旋转矩阵 BSR 和 平移向量 SpBorg 描述也是可以的,采用 4×4 矩阵是因为有更好的运算性质)。在其他学科如计算机视觉中,这类 4×4 矩阵有一个特殊的名称,叫齐次变换矩阵,“齐次”的含义源于对坐标的变换是齐次形式的。
设空间中有两个参考坐标系 {A} 和 {B},两个参考坐标系之间的相对位置关系为 BAR 和 ApBorg。假设空间中还有第三个点 q,它在 {A} 系下的坐标描述为 Aq,在 {B} 系中的坐标描述为 Bq,则有变换关系为
Aq= BAR Bq+ ApBorg这个公式就是在不同参考坐标系下坐标的变换公式。注意不同的参考坐标系的坐标轴单位矢量是不同的,因此这个公式是包含了线性变换的,而不是单纯的物理相对位矢变换。纯粹的物理相对位矢变换是纯矢量的计算,不涉及向量坐标分解的运算,其公式为
Aq= ApBorg+ Bq对坐标变换公式进行改写,使用点 q 的齐次坐标 qˉ=[q1],并且令 BAT=[ BAR0 ApBorg1],则有
Aqˉ= BAT Bqˉ这个矩阵的形式与描述刚体位姿的 4×4 矩阵形式一致。
1.1.3 坐标系切换#
点的坐标切换#
根据上面的推导,不难发现描述刚体位姿的 4×4 矩阵其实是一个齐次变换矩阵,更确切地说,是描述从空间坐标系 {S} 下描述的坐标到 刚体坐标系 {B} 下坐标描述的变换,即对于空间中的点 q,它在空间坐标系 {S} 和 刚体坐标系 {B} 下的坐标之间的关系为
Sqˉ= BST Bqˉ这个公式具有重要价值。试想假设我需要规划机械臂上的某一个点的运动,那就在机械臂上装一个摄像头或者传感器,可以得到在机械臂的某个连杆的坐标系下的这个点的坐标。但是很显然规划在空间绝对坐标系中进行会更加方便,因此,通过刚体位姿的描述矩阵可以将这个点的坐标变换到空间坐标系中,用于算法的规划。
刚体位姿切换#
刚体的位姿不同于点的坐标,空间中点有 3 个自由度,而刚体有 6 个自由度,刚体比点多出的那三个自由度正是刚体具有方向性,旋转带来的 3 个自由度。如前文所述,描述刚体的位姿用的也是 4×4 矩阵 BST,那么是否存在类似于点的坐标切换的齐次变换公式呢?
答案是肯定的。首先,利用性质
BSR=[ Sx^B Sy^B Sz^B]其中, Sx^B, Sy^B, Sz^B 分别是沿刚体固连框架 {B} 坐标轴的三个单位向量(注意是三个自由单位向量,内积为1,因此在变换中不用考虑平移变换)在空间绝对框架 {S} 中的表示。因此,对刚体的位姿在不同框架下的描述变换可以用对这三个点的坐标的变换来实现。
假设空间中有另外一个绝对参考框架 {S′},有绝对参考框架之间的变换关系
S′ST=[ S′SR0 SpS′org1]那么有,
[ Sx^B Sy^B Sz^B]= S′SR[ S′x^B S′y^B S′z^B]即
BSR= S′SR BS′R现在再考虑刚体固连框架 {B} 的坐标原点的变换情况,有
SpBorg= S′SR S′pBorg+ SpS′org综合以上式子,可以得到
[ BSR0 SpBorg1]=[ S′SR0 SpS′org1][ BS′R0 S′pBorg1]即
BST= S′ST BS′T这个式子和点的坐标齐次变换相似,是在不同框架下刚体位姿的变换。
1.2 速度#
得到了刚体的位姿描述和变换公式后,接下的问题就是研究速度的表达和变换公式了。
1.2.1 刚体速度的表示#
物理学中,速度定义为位矢对是时间的一阶导数。在坐标系的描述下,质点的速度可以分解为沿坐标轴的三个速度分量。对于刚体而言,刚体的位姿是用 4×4 矩阵描述的,其中旋转矩阵 BSR 和平移分量(也就是框架的原点坐标) SpBorg 可能是关于时间的变量,具有导数。
需要注意的是,旋转矩阵 BSR 并不简单的属于 R3×3 矩阵集合,更准确的描述是旋转矩阵属于特殊正交群 SO(3),对旋转矩阵的加法不具有封闭性,因此对导数运算也不具有封闭性(因为导数涉及到减法操作)。不过旋转矩阵依然是可以对时间求导的,为了更好的描述导数,定义与导数相关的切空间为李代数 so(3),这是一个由反对称矩阵 A⊤=−A 所构成的集合。
1.2.2 旋转矩阵对时间的导数#
利用 BSR BSR⊤=1, 对时间求导,有
BSR˙ BSR⊤+ BSR BSR˙⊤=0整理得,
BSR˙ BSR⊤=−( BSR˙ BSR⊤)⊤定义
[ SΩB]= BSR˙ BSR⊤则
BSR˙=[ SΩB] BSR现在,通过导数的原始定义来推导出 [ SΩB] 的物理含义。
BSR˙=Δt→0limΔtR(t+Δt)−R(t)=Δt→0limΔtRω^(Δθ(t)) R(t)−R(t)=Δt→0limΔtRω^(Δθ(t))−IR(t)=Δt→0limΔt10ω^zΔθ−ω^yΔθ−ω^zΔθ0ω^xΔθω^yΔθ−ω^xΔθ0R(t)=0ω^zθ˙−ω^yθ˙−ω^zθ˙0ω^xθ˙ω^yθ˙−ω^xθ˙0R(t)=[ω^θ˙]R(t)注意这个推到中运用到了如下性质
- 乘积公式 R(t+Δt)=Rω^(Δθ)R(t),其中 ω^ 是旋转轴方向的单位向量,Δθ 是旋转角度。
- Rodrigues 公式 Rω^(Δθ)=I+sin(Δθ)[ω^]+(1−cos(Δθ))[ω^]2,其中 [ω^] 是 ω^ 的反对称矩阵形式。可以得到
Rω^(Δθ)=1ω^zΔθ−ω^yΔθ−ω^zΔθ1ω^xΔθω^yΔθ−ω^xΔθ1利用上述的公式,可以得到
BSR=[ω^Bθ˙] BSR=[ SΩB] BSR从而,得到 [ SΩB]=[ω^Bθ˙],即
SΩB=ω^Bθ˙物理含义是 SΩB 就是在绝对参考框架下刚体的角速度(角速度方向和角速度大小)。由此我们求得了旋转矩阵对时间的导数,即
BSR˙=[ SΩB] BSR=[ω^Bθ˙] BSR1.2.3 旋转矩阵的指数公式#
对上式变形,得到
dtd BSR=[ω^Bθ˙] BSR=[ω^B] BSR dtdθ于是
dθd BSR(θ)=[ω^B] BSR这是指数微分方程的形式,当 [ω^B] 对 θ 是常数时,求解可得
BSR(θ)=e[ω^B]θ这便是旋转矩阵的指数公式。
1.2.4 平移向量对时间的导数#
平移向量 SpBorg 对时间的导数可看作刚体固连框架 {B} 的原点坐标的速度向量
SVBorg=dtd SpBorg=x˙Borgy˙Borgz˙Borg这里介绍以下速度相关的符号表示
AVq:点 q 相对于框架 {A} 的速度(相对于框架 {A} 求导),且用框架 {A} 表达向量(理解为向量 AVq 用 [x^Ay^Az^A] AVq= AVqxx^A+ AVqyy^A+ AVqzz^A 表示)
B(AVq): B(AVq)= ABR AVq,即点 q 相对于框架 {A} 的速度(相对于框架 {A} 求导),但用框架 {B} 表达向量(理解为向量 AVq 用 [x^By^Bz^B] B(AVq)= B(AVq)xx^A+ B(AVq)yy^A+ B(AVq)zz^A 表示)
vq:vq= SVq,即点 q 相对于绝对参考坐标系 {S} 且在 {S} 中的速度表达
Avq:Avq= A( SVq),即点 q 相对于绝对参考坐标系 {S} 但在 {A} 中的速度表达
类似地,角速度也有相关的符号规范
AΩq:点 q 相对于框架 {A} 的角速度(相对于框架 {A} 求导),且用框架 {A} 表达向量(理解为向量 AΩq 用 [x^Ay^Az^A] AΩq= AΩqxx^A+ AΩqyy^A+ AΩqzz^A 表示)
B(AΩq): B(AΩq)= ABR AΩq,即点 q 相对于框架 {A} 的角速度(相对于框架 {A} 求导),但用框架 {B} 表达向量(理解为向量 AΩq 用 [x^By^Bz^B] B(AΩq)= B(AΩq)xx^A+ B(AΩq)yy^A+ B(AΩq)zz^A 表示)
ωq:ωq= SΩq,即点 q 相对于绝对参考坐标系 {S} 且在 {S} 中的角速度表达
Aωq:Aωq= A( SΩq),即点 q 相对于绝对参考坐标系 {S} 但在 {A} 中的角速度表达
1.2.5 运动旋量#
为了统一旋转矩阵和平移向量的导数,考虑直接对 4×4 齐次矩阵求导。
BST˙(t)=[ BSR˙(t)0 Sp˙Borg(t)0]左乘齐次矩阵的逆
BST−1 BST˙=[ BSR⊤0− BSR⊤ SpBorg1][ BSR˙0 Sp˙Borg0]=[ BSR⊤ BSR˙0 BSR⊤ Sp˙Borg0]=[[ SBR SΩB]0 SBR SVBorg0]=[[ BΩB]0 BVBorg0]∈se(3)右乘齐次矩阵的逆
BST˙ BST−1=[ BSR˙0 Sp˙Borg0][ BSR⊤0− BSR⊤ SpBorg1]=[ BSR˙ BSR⊤0 Sp˙Borg− BSR˙ BSR⊤ SpBorg0]=[[ SΩ˙B]0 SVBorg−[SΩB] SpBorg0]∈se(3)定义
[BξB]=[[ BΩB]0 BVBorg0]= BST−1 BST˙∈se(3)和
[SξB]=[[ SΩ˙B]0 SVBorg−[SΩB] SpBorg0]= BST˙ BST−1∈se(3)对应有
BξB SξB=[ BVBorg BΩB]∈R6=[ SVBorg−[ SΩB] SpBorg SΩB]∈R6称这两个向量为运动旋量。具体地,称 BξB 为刚体运动旋量,称 SξB 为空间运动旋量。
一般地,如果一个 6 维列向量 ξ 的前三维分量是线速度,后三维分量是角速度,则这个向量对应于一个刚体的运动旋量。
螺旋轴——单位旋量
类似旋转角速度 Ω=ω^θ˙ 有旋转轴的单位向量 ω^,运动旋量也可以有单位向量的表示,我们称这个单位向量为螺旋轴,形式为
S=[vω]∈R6其中,S 分为两种情况(只有两种)
1. S=[v^0],即 ∥v^∥=1,ω=0,此时的螺旋运动是不旋转只平移的形式。
2. S=[vω^],即 ∥ω^∥=1,此时的螺旋运动是绕着螺旋轴螺旋前进的形式。
当给定螺旋速度 θ˙ 和 螺旋轴 ω^ 后,可以得到运动旋量表示为
ξ=Sθ˙=⎩⎨⎧[v^0]θ˙,[vω^]θ˙此时θ˙表征线速度大小此时θ˙表征角速度大小之所以划分为两种情况而不直接统一为 S=∥ξ∥ξ 的形式,是因为这种归一化的形式并不具有物理意义,线速度和角速度的量纲不同,不能直接归一化。于是根据角速度是否为 0 对螺旋轴进行划分。通用的螺旋运动形式是第 2 种情况,边界情况是第 1 种。

1.2.6 点的速度变换#
旋转矩阵和平移向量形式#
设有任意的框架 {A} 和 {B},对
Aq= BAR Bq+ ApBorg求导,得到
AVq= BAR BVq+[AΩB] BAR Bq+ AVBorg这就是点 q 在框架 {A} 下的速度表达式。
旋量形式#
设刚体上有一个固定点 q,根据变换关系
Sqˉ(t)= BST(t) Bqˉ(t)有
SVˉq= BST˙ BST−1 Sqˉ=[SξB] Sqˉ即可以用刚体的空间运动旋量与空间坐标系下的点 q 的坐标表示点 q 在空间坐标系下的速度。本质上,继续推导,可以得到
SVq=[SΩB] Sq−[SΩB] SpBorg+ SVBorg= SΩB×( Sq− SpBorg)+ SVBorg符合物理中的运动学公式。
同理,可以得到刚体上固定点 q 在刚体固连框架下的速度为
B(SVˉq)= BST−1 SVˉq= BST−1 BST˙ Bqˉ=[BξB] Bqˉ即可以用刚体的空间运动旋量与刚体固连框架下的点 q 的坐标求解点 q 在刚体固连框架下的绝对速度。
观察公式 S 和 ξ 的表达式,可以发现齐次坐标和三维坐标的相似性。将运动旋量与齐次坐标进行叉乘运算,可以得到点的速度,仿佛质点在随刚体旋转。也因此,叉乘坐标的向量被称作运动旋量。
1.2.7 伴随矩阵——刚体速度变换#
定义齐次变换矩阵 T=[R0p1] 的伴随矩阵为
AdT=[R0 [p]RR]伴随矩阵的作用是对旋量做变换,设有运动旋量 ξ=[vω],则有
[AdTξ]=T[ξ]T−1=def[ξ′]∈se(3)其中
ξ′=AdTξ下面将说明上面公式的细节部分。
AdTξ[AdTξ]T[ξ]T−1=[R0 [p]RR][vω]=[Rv+[p]RωRω]=[v′ω′]∈R6=[[ω′]0v′0]=[[Rω]0Rv+[p]Rω0]∈se(3)=[R0p1][[ω]0v0][R⊤0−R⊤p1]=[R[ω]R⊤0−R[ω]R⊤p+Rv0]=[[Rω]0Rv+[p]Rω0]∈se(3)其中用到了以下性质
- R[ω]R⊤=[Rω],即对反对称矩阵的正交特征变换
- 反对称矩阵的加法性质 [ω1]+[ω2]=[ω1+ω2],即对反对称矩阵的加法具有封闭性
- 反对称矩阵与叉乘的联系 [ω]v=ω×v
- 反对称矩阵对数乘封闭性 k[ω]=[kω],这里用到的是 −[Rωp]=[−Rωp]
- 叉乘的反交换性 [a]b=−[b]a,这里用到的是 [p]Rω=−[Rω]p
于是证明出了 [AdTξ]=T[ξ]T−1,即伴随矩阵的作用是对运动旋量做变换。
在不同框架下的描述
设从框架 {A} 到 框架 {B} 的变换矩阵为 BAT=[ BAR0 ApBorg1],在框架 {B} 下某个旋量 ξ 的向量表示为 Bξ,那么它在框架 {A} 下的向量表示为
Aξ=AdBAT Bξ由于螺旋轴的本质是归一化后的运动旋量,因此也可以用上述公式变换
AS^=AdBAT BS^重要变换性质
在刚体固连框架 {B} 中描述的刚体相对于绝对框架 {S} 的运动旋量(即刚体运动旋量)BξB 与在绝对框架 {S} 中描述的刚体相对于绝对框架 {S} 的运动旋量(即空间运动旋量)SξB 之间的关系为
SξB=AdBST BξB其中,AdBST=[ BSR0 [ BSpBorg] BSR BSR] 是伴随矩阵。这个公式可以由下式得到
[SξB]= BST˙ BST−1= BST BST−1 BST˙ BST−1= BST [BξB] BST−1=[AdBST BξB]伴随矩阵的性质
AdT−1=[R⊤0−R⊤[p]R⊤]=AdT−1AdT1AdT2=AdT1T21.3 加速度#
加速度的符号表示与速度的标准相同,A(BV˙) 等含义在此不予赘述。
1.3.1 线加速度#
设有框架 {A} 和框架 {B} 和 点 q,对速度变换公式求导,有
AV˙q=([AΩ˙B] BAR Bq+[AΩB][AΩB] BAR Bq+[AΩB] BAR BVq)+([AΩB] BAR BVq+ BAR BV˙q)+ AV˙Borg= AV˙Borg+ BAR BV˙q+Coriolis2[AΩB] BAR BVq+Euler[AΩ˙B] BAR Bq+Centrifugal[AΩB][AΩB] BAR Bq1.3.2 角加速度#
对于角加速度,利用
SΩB= SΩA+ ASR AΩB对时间求导,得到
SΩ˙B= SΩ˙A+[SΩA] ASR AΩB+ ASR AΩ˙B1.4 力#
力 f 和力矩 n 可以结合在一起统一表达为一个六维的广义力 F=[ff],其中 f,n∈R3。我们称这个广义力叫力旋量 (Wrench)。
力旋量也有在不同框架下的切换公式,假设同一个力旋量在框架 {A} 中表示为 AF,在框架 {B} 中表示为 BF,则有
BF=AdBAT⊤ AF这个公式可以从做功的角度推导出,在不同框架下的力旋量表达虽然不同,但是其做功应是相同的,即
BF⊤ Bξ Aξ=AF⊤ Aξ=AdBAT Bξ从而推导出上式。
1.5 质量与惯量#
1.5.1 经典的标量描述方法#
刚体,不同于质点,通常在空间中会占据一定的空间,因此不能只以一个点的位矢完全概括它的位置。假设刚体的密度分布为 ρ, p 为空间中点的位矢,则可以通过积分的方式得到刚体的质量,并求出相应的质心位置
mpc=∫ρdV=m1∫pρdV质点的动力学模型仅仅通过质量即可完整描述(牛顿第二定律),但是刚体不行,因为刚体还需要考虑自身转动,因此刚体还有一个用于描述转动动力学模型的参量叫转动惯量
J=∫r2ρdV其中 r 是位于 p 处的质点到旋转轴的距离。
有了质量 m 和转动惯量 J 之后,就可以相应地对刚体做动力学分析了。通常的分析方程有牛顿第二定律、欧拉动力学方程和动能定理等
⎩⎨⎧mpc¨=∑fextJω˙+ω×(Jω)=∑τextK=21mp˙c⋅p˙c+21Jω⋅ω其中 ∑fext 为外力合力,∑τext 为关于质心的外力矩合力。
注意这里所使用的质量和转动惯量均是标量的形式。
1.5.2 张量形式的描述方法#
在三维空间中,标量形式的转动惯量只能描述绕一个特定轴的旋转,而无法全面反映刚体在不同方向上的转动特性。因此引入了惯性张量这个二阶张量以方便问题的分析。
定义相对于框架 {A} 的惯性张量为
AI=∫[Ap]⊤[Ap]dm注意这里的位矢 Ap 是相对于绝对框架的位置坐标,在刚体运动的过程中往往是随时间变化的,也就是说,惯性张量对时间的导数通常不为0。只有当参考框架取为质心框架 {c} 时,惯性参量才是不随时间变化的。
1.5.3 惯性张量在不同参考框架下的切换#
设惯性张量 I 在框架 {A} 中的表达为 AI,在框架 {B} 中的表达为 BI,则根据角动量的框架切换公式和角速度的切换公式
ALBLALAω= AI Aω= BI Bω= BAR BL= BAR Bω有
AI Aω= BAR BI Bω= BAR BI ABR Aω于是
AI= BAR BI BAR⊤1.6 能量与角动量#
1.6.1 动能#
在框架 {A} 中,定义刚体 B 绕任意轴做纯转动的动能为
AKR=21∫ Av⊤ Av dm其中速度向量 Av= AVdm 表示在框架 {A} 下质元 dm 的三维速度向量。展开动能,有
AKR=21∫ Av⊤ Av dm=21∫(Aω× Ap)⊤(Aω× Ap)dm=21∫ Aω⊤[Ap]⊤[Ap] Aω dm=21 Aω⊤ AI Aω于是得到转动动能表示为
AKR=21 Aω⊤ AI Aω其中,Aω= AΩB 是刚体 B 的转动角速度。
结合刚体平动动能,可以得到刚体运动的全部动能为
AK=21m Ap˙c⊤ Ap˙c+21 Aω⊤ AI Aω1.6.2 角动量#
同样地,角动量也有惯性张量的表达形式。根据定义,在框架 {A} 中,刚体 B 的角动量表达为
Ah=∫ Ap× Av dm展开有
Ah=∫ Ap× Av dm=∫ Ap×(Aω× Ap) dm=−∫ Ap×(Ap× Aω) dm=−∫[Ap][Ap] Aω dm=∫[Ap]⊤[Ap] dm Aω= AI Aω这里用到了反对称矩阵的性质 [Ap]⊤=−[Ap];其中 Aω 是刚体的转动角速度。
惯性主轴
需要注意的事情是,从上面公式可以看出,角动量 Ah 的方向并不一定和角速度 Aω 的方向相同,只有当满足下面方程时,二者的方向才相同
AI Aω=k Aω我们称满足这个特征向量关系的轴线为惯性主轴。
欧拉方程
刚体所受合力矩是其角动量的变化率
Aτ=dtd AL=dtd(AI Aω)=dtd( cAR cI cAR⊤ Aω)= cAR˙ cI cAR⊤ Aω+ cAR cI cAR˙⊤ Aω+ cAR cI cAR⊤ Aω˙=[Aω] cAR cI cAR⊤ Aω+ cAR cI cAR⊤[Aω]⊤ Aω+ cAR cI cAR⊤ Aω˙= Aω× AI Aω+ AI Aω˙这里的推导利用到了质心框架下的惯性张量不随时间变化的性质。于是欧拉方程为
Aτ= Aω× AI Aω+ AI Aω˙其中 {A} 为任意框架。