机器人动力学有两个问题需要解决:

  1. 动力学正问题——根据关节驱动力矩或力,计算机器人的运动(关节位移、速度和加速度);
  2. 动力学逆问题——已知轨迹运动对应的关节位移、速度和加速度,求出所需要的关节力矩或力。

欧拉-拉格朗日方程 Euler-Lagrange Equation

根据牛顿运动定律,我们来推导欧拉-拉格朗日方程。我们假设质点的运动方程是:
m y ¨ = f − m g m\ddot{y}=f-mg my¨=fmg
那么,我们可以得到其动能和势能与运动方程的关系。定义动能为 K \mathcal{K} K 势能为 P \mathcal{P} P
m y ¨ = d d t ( m y ˙ ) = d d t ∂ ∂ y ˙ ( 1 2 m y ˙ 2 ) = d d t ∂ K ∂ y ˙ m\ddot{y}=\frac{\mathrm{d}}{\mathrm{d}t}(m\dot{y})=\frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial}{\partial\dot{y}}\left(\frac{1}{2}m\dot{y}^{2}\right)=\frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial\mathcal{K}}{\partial\dot{y}} my¨=dtd(my˙)=dtdy˙(21my˙2)=dtdy˙K
m g = ∂ ∂ y ( m g y ) = ∂ P ∂ y mg = \frac{\partial}{\partial y}(mg y)=\frac{\partial\mathcal{P}}{\partial y} mg=y(mgy)=yP
定义拉格朗日算子 L = K − P \mathcal{L}=\mathcal{K}-\mathcal{P} L=KP
d d t ∂ L ∂ y ˙ − ∂ L ∂ y = f \frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial\mathcal{L}}{\partial\dot{y}}-\frac{\partial\mathcal{L}}{\partial y}=f dtdy˙LyL=f
下面将要讨论的是上述过程的逆向过程,并用广义坐标 q q q广义力 τ \tau τ 来表示。

完整约束 Holonomic Constraint

假设空间中存在一个由 k k k 个质点组成的系统,各个质点对应的向量为 r 1 , … , r k r_{1},\dots, r_{k} r1,,rk。 如果这些质点在运动的过程中会受到某种形式的约束,那么在分析其动力学时,我们要考虑反约束力(constraint force),即保持这些约束所需要施加的力。例如刚性无质量连杆两端的两个质点 r 1 , r 2 r_{1}, r_{2} r1,r2,他们之间的约束为:
( r 1 − r 2 ) T ( r 1 − r 2 ) = ℓ 2 (r_{1}-r_{2})^{T}(r_{1}-r_{2})=\ell^{2} (r1r2)T(r1r2)=2分析这两个质点的运动时,我们希望找到一种方法,它并不需要我们知道具体的约束力。为了进一步分析,我们引入一些必要的术语。
对于有关 k k k 个坐标的约束,如果具有如下等式约束形式:
g i ( r 1 , … , r k ) = 0 , i = 1 , … , ℓ g_{i}(r_{1},\dots,r_{k})=0, i=1,\dots,\ell gi(r1,,rk)=0,i=1,,那么该约束被称为完整的 (holonomic)。容易看出,对其做微分操作可以得到:
∑ j = 1 k ∂ g i ∂ r j ⋅ d r j = 0 \sum_{j=1}^{k}\frac{\partial g_{i}}{\partial r_{j}}\cdot \mathrm{d}r_{j}=0 j=1krjgidrj=0
而一个形如
∑ j = 1 k ω j ⋅ d r j = 0 \sum_{j=1}^{k}\omega_{j}\cdot\mathrm{d}r_{j}=0 j=1kωjdrj=0的约束是不完整的 (nonholonomic),如果它不能被积分成上述等式约束形式。如果一个系统受制于 ℓ \ell 个非完整约束,那么我们可以认为对于这个约束系统而言,它相比于非约束系统少了 ℓ \ell 个自由度。

虚功原理 Principle of Virtual Work

考虑约束 ( r 1 − r 2 ) T ( r 1 − r 2 ) = ℓ 2 (r_{1}-r_{2})^{T}(r_{1}-r_{2})=\ell^{2} (r1r2)T(r1r2)=2, 一组与约束相一致的无穷小位移 δ r 1 , δ r 2 \delta r_{1}, \delta r_{2} δr1,δr2 被称为虚位移, 假设 r 1 , r 2 r_{1}, r_{2} r1,r2收到扰动分别变为 r 1 + δ r 1 , r 2 + δ r 2 r_{1}+\delta r_{1}, r_{2}+\delta r_{2} r1+δr1,r2+δr2。那么我们有
( r 1 + δ r 1 − r 2 − δ r 2 ) T ( r 1 + δ r 1 − r 2 − δ r 2 ) = ℓ 2 (r_{1}+\delta r_{1}-r_{2}-\delta r_{2})^{T}(r_{1}+\delta r_{1}-r_{2}-\delta r_{2})=\ell^{2} (r1+δr1r2δr2)T(r1+δr1r2δr2)=2忽略掉虚位移的二次项,很容易得到
( r 1 − r 2 ) T ( δ r 1 − δ r 2 ) = 0 (r_{1}-r_{2})^{T}(\delta r_{1}-\delta r_{2})=0 (r1r2)T(δr1δr2)=0 r i = r i ( q 1 , … , q n ) , i = 1 , … , k r_{i}=r_{i}(q_{1},\dots,q_{n}), i=1,\dots,k ri=ri(q1,,qn),i=1,,k。对上式求微分很容易得到所有的虚位移组合恰是
δ r i = ∑ j = 1 n ∂ r i ∂ q i δ q i , i = 1 , … , k \delta r_{i} = \sum_{j=1}^{n}\frac{\partial r_{i}}{\partial q_{i}}\delta q_{i}, \quad i=1,\dots,k δri=j=1nqiriδqi,i=1,,k其中广义坐标的虚位移 δ q i \delta q_{i} δqi 不受约束, 这也是它们成为广义坐标的原因。

下面我们讨论处于平衡态的受约束系统,平衡态意味着合力为零,同时也意味着虚位移做功为零,因此:
∑ i = 1 k F i T δ r i = 0 \sum_{i=1}^{k}F_{i}^{T}\delta r_{i}=0 i=1kFiTδri=0其中合力 F i F_{i} Fi是两个量之和,即外加作用力 f i f_{i} fi 和约束力 f i a f_{i}^{a} fia 。如果任何一组虚位移做功为零,即
∑ i = 1 k f i a T δ r i = 0 \sum_{i=1}^{k}f_{i}^{aT}\delta r_{i}=0 i=1kfiaTδri=0每当一对质点间的约束力方向与质点间径向向量同向上式成立。进一步可得到:
∑ i = 1 k f i T δ r i = 0 \sum_{i=1}^{k}f_{i}^{T}\delta r_{i}=0 i=1kfiTδri=0该公式仅与外力有关,不涉及约束力。该公式表示了虚功原理:外力经过任何满足约束条件的虚位移所做的功为零。

虚功原理不具备普适性,它要求 ∑ i = 1 k f i a T δ r i = 0 \sum_{i=1}^{k}f_{i}^{aT}\delta r_{i}=0 i=1kfiaTδri=0 成立,也就是约束力不做功。虚功原理适用于刚性是对运动的唯一约束这一情形。

达朗贝尔原理 D’ Alembert’s Principle

公式 ∑ i = 1 k f i T δ r i = 0 \sum_{i=1}^{k}f_{i}^{T}\delta r_{i}=0 i=1kfiTδri=0 中虚位移不是互相独立的,因此我们不能从该公式中推出每个系数 F i F_{i} Fi 都为零这样的结论。考虑一个不一定处于平衡态的系统,达朗贝尔原理指出:如果在每个质点上引入一个虚构的付加力 − p ˙ i -\dot{p}_{i} p˙i ,其中 p i p_{i} pi 为质点 i i i 的动量,那么每个质点将会处于平衡状态。简言之就是:对于任何物体,外加力和运动阻力(惯性力)在任何方向上的代数和均为零。因此,我们可以用 F i − p ˙ i F_{i}-\dot{p}_{i} Fip˙i 来代替 F i F_{i} Fi,所得的方程对任意系统适用。如果惯性坐标系的原点为刚体的质心,则达朗贝尔原理归结为:线动量和角动量的导数分别等于外力和外力矩。

去掉约束力,得到如下方程:
∑ i = 1 k f i T δ r i − ∑ i = 1 k p ˙ i T δ r i = 0 \sum_{i=1}^{k}f_{i}^{T}\delta r_{i}-\sum_{i=1}^{k}\dot{p}_{i}^{T}\delta r_{i}=0 i=1kfiTδrii=1kp˙iTδri=0
下面将其转化为关于独立广义坐标的表达式,具体推导步骤省略。公式的第一部分:
∑ i = 1 k f i T δ r i = ∑ i = 1 k ∑ j = 1 n f i T ∂ r i ∂ q j δ q j = ∑ j = 1 n ψ j δ q j \sum_{i=1}^{k}f_{i}^{T}\delta r_{i}=\sum_{i=1}^{k}\sum_{j=1}^{n}f_{i}^{T}\frac{\partial r_{i}}{\partial q_{j}}\delta q_{j}=\sum_{j=1}^{n}\psi_{j}\delta q_{j} i=1kfiTδri=i=1kj=1nfiTqjriδqj=j=1nψjδqj其中 ψ i \psi_{i} ψi 被称为第 j j j广义力。注意它不一定具备力的量纲。公式的第二部分:
∑ i = 1 k p ˙ i T δ r i = ∑ j = 1 n { d d t ∂ K ∂ q ˙ j − ∂ K ∂ q j } δ q j \sum_{i=1}^{k}\dot{p}_{i}^{T}\delta r_{i}=\sum_{j=1}^{n}\left\{ \frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial K}{\partial \dot{q}_{j}}-\frac{\partial K}{\partial q_{j}} \right\}\delta q_{j} i=1kp˙iTδri=j=1n{dtdq˙jKqjK}δqj其中 K = ∑ i = 1 k 1 2 m i v i T v i K=\sum_{i=1}^{k}\frac{1}{2}m_{i}v_{i}^{T}v_{i} K=i=1k21miviTvi是动能, v i = r ˙ i = ∑ j = 1 n ∂ r i ∂ q j q ˙ j v_{i}=\dot{r}_{i}=\sum_{j=1}^{n}\frac{\partial r_{i}}{\partial q_{j}}\dot{q}_{j} vi=r˙i=j=1nqjriq˙j。最后我们得到:
∑ j = 1 n { d d t ∂ K ∂ q ˙ j − ∂ K ∂ q j − ψ j } δ q j = 0 \sum_{j=1}^{n}\left\{\frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial K}{\partial \dot{q}_{j}}-\frac{\partial K}{\partial q_{j}}-\psi_{j}\right\}\delta q_{j} = 0 j=1n{dtdq˙jKqjKψj}δqj=0由于虚位移 q j q_{j} qj 相互独立,我们可以断定上述公式各项系数均为零,即
d d t ∂ K ∂ q ˙ j − ∂ K ∂ q j = ψ j , j = 1 , … , n \frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial K}{\partial \dot{q}_{j}}-\frac{\partial K}{\partial q_{j}}=\psi_{j}, \quad j=1,\dots,n dtdq˙jKqjK=ψj,j=1,,n如果广义力 ψ j \psi_{j} ψj 是外界施加的广义力与势场引入的广义力之和,那么,我们可以进一步修改。假设存在函数 τ j \tau_{j} τj 以及一个势能函数 P ( q ) P(q) P(q),使得:
ψ j = − ∂ P ∂ q j + τ j \psi_{j}=-\frac{\partial P}{\partial q_{j}}+\tau_{j} ψj=qjP+τj那么公式可以被写为如下形式:
d d t ∂ L ∂ q ˙ j − ∂ L ∂ q j = τ j , j = 1 , … , n \frac{\mathrm{d}}{\mathrm{d}t}\frac{\partial \mathcal{L}}{\partial \dot{q}_{j}}-\frac{\partial \mathcal{L}}{\partial q_{j}}=\tau_{j}, \quad j=1,\dots,n dtdq˙jLqjL=τj,j=1,,n
我们得到了欧拉-拉格朗日运动方程。

动力学方程 Dynamic Equation

为了使用欧拉-拉格朗日方程,我们下面推导刚性连杆机器人的动能和势能表达式,使用Denavit-Hartenberg关节变量作为广义坐标。

动能 Kinetic Energy

一个刚性物体的动能是两项之和:整个物体收缩到质心而得到的平移动能以及关于质心的旋转动能。我们将一个附体坐标系附在质心处,那么,这个刚体的动能如下所示:
K = 1 2 m v T v + 1 2 ω T I ω \mathcal{K}=\frac{1}{2}mv^{T}v+\frac{1}{2}\omega^{T}\mathcal{I}\omega K=21mvTv+21ωTIω其中 I \mathcal{I} I 被称为物体的惯性张量 (inertial tensor),是一个 3 × 3 3\times 3 3×3 的对称矩阵。上述线速度 v v v 和角速度 ω \omega ω 均被表示在惯性坐标系里。此时 S ( ω ) = R ˙ R T S(\omega)=\dot{R}R^{T} S(ω)=R˙RT R R R 是附体坐标系和惯性坐标系之间的姿态变换。惯性张量取决于物体的位形。用 I I I 来表示附体坐标系中的惯性张量,那么
I = R I R T \mathcal{I}=RIR^{T} I=RIRT附体坐标系中的惯性张量 I I I 是常数矩阵,与物体的运动无关。令物体的质量密度表示为 ρ ( x , y , z ) \rho(x,y,z) ρ(x,y,z),那么
I = ( I x x I x y I x z I y x I y y I y z I z x I z y I z z ) I=\begin{pmatrix}I_{xx} & I_{xy} & I_{xz} \\I_{yx} & I_{yy} & I_{yz}\\ I_{zx} & I_{zy} & I_{zz}\end{pmatrix} I=IxxIyxIzxIxyIyyIzyIxzIyzIzz其中主惯性矩:
I x x = ∭ ( y 2 + z 2 ) ρ ( x , y , z ) d x d y d z I_{xx}=\iiint(y^{2}+z^{2})\rho(x,y,z)\mathrm{d}x\mathrm{d}y\mathrm{d}z Ixx=(y2+z2)ρ(x,y,z)dxdydz I y y = ∭ ( x 2 + z 2 ) ρ ( x , y , z ) d x d y d z I_{yy}=\iiint(x^{2}+z^{2})\rho(x,y,z)\mathrm{d}x\mathrm{d}y\mathrm{d}z Iyy=(x2+z2)ρ(x,y,z)dxdydz I z z = ∭ ( x 2 + y 2 ) ρ ( x , y , z ) d x d y d z I_{zz}=\iiint(x^{2}+y^{2})\rho(x,y,z)\mathrm{d}x\mathrm{d}y\mathrm{d}z Izz=(x2+y2)ρ(x,y,z)dxdydz惯性叉积:
I x y = I y x = − ∭ x y ρ ( x , y , z ) d x d y d z I_{xy}=I_{yx}=-\iiint xy\rho(x,y,z)\mathrm{d}x\mathrm{d}y\mathrm{d}z Ixy=Iyx=xyρ(x,y,z)dxdydz I x z = I z x = − ∭ x z ρ ( x , y , z ) d x d y d z I_{xz}=I_{zx}=-\iiint xz\rho(x,y,z)\mathrm{d}x\mathrm{d}y\mathrm{d}z Ixz=Izx=xzρ(x,y,z)dxdydz I y z = I z y = − ∭ y z ρ ( x , y , z ) d x d y d z I_{yz}=I_{zy}=-\iiint yz\rho(x,y,z)\mathrm{d}x\mathrm{d}y\mathrm{d}z Iyz=Izy=yzρ(x,y,z)dxdydz如果物体的质量相对于附体坐标系对称,那么惯性叉积均为零。此时,对于这一坐标系,惯性张量是对角型的。此坐标系的各轴被称为惯性主轴,相应的质量矩被称为主惯性矩
综上n-连杆机器人的动能可表示为:
K = 1 2 q ˙ T [ ∑ i = 1 n ( m i J v i ( q ) T J v i ( q ) + J ω i ( q ) T R i ( q ) I i R i ( q ) T J ω i ( q ) ) ] q ˙ \mathcal{K} =\frac{1}{2}\dot{q}^{T}\left[\sum_{i=1}^{n}(m_{i}J_{v_{i}}(q)^{T}J_{v_{i}}(q)+J_{\omega_{i}}(q)^{T}R_{i}(q)I_{i}R_{i}(q)^{T}J_{\omega_{i}}(q))\right]\dot{q} K=21q˙T[i=1n(miJvi(q)TJvi(q)+Jωi(q)TRi(q)IiRi(q)TJωi(q))]q˙ K = 1 2 q ˙ T D ( q ) q ˙ \mathcal{K}=\frac{1}{2}\dot{q}^{T}D(q)\dot{q} K=21q˙TD(q)q˙
其中我们选择合适的雅克比矩阵 J J J 使得:
v i = J v i ( q ) q ˙ , ω i = J ω i ( q ) q ˙ v_{i}=J_{v_{i}}(q)\dot{q},\quad \omega_{i}=J_{\omega_{i}}(q)\dot{q} vi=Jvi(q)q˙,ωi=Jωi(q)q˙
D D D 被称为惯性矩阵,对于任何机械臂,惯性矩阵都是对称且正定的。

势能 Potential Energy

现在考虑势能项。在刚体动力学的情形下,势能的唯一来源是重力:
P i = m i g T r c i \mathcal{P}_{i}=m_{i}g^{T}r_{ci} Pi=migTrci
P = ∑ i = 1 n P i = ∑ i = 1 n m i g T r c i \mathcal{P}=\sum_{i=1}^{n}\mathcal{P}_{i}=\sum_{i=1}^{n}m_{i}g^{T}r_{ci} P=i=1nPi=i=1nmigTrci r c i r_{ci} rci 是连杆 i i i 的质心坐标。

动力学方程 Dynamic Equation

我们专门研究下述两种条件下的欧拉-拉格朗日方程:

  1. 动能是向量 q ˙ \dot{q} q˙ 的二次函数,并且形如 K = 1 2 q ˙ T D ( q ) q ˙ = 1 2 ∑ i , j d i j ( q ) q ˙ i q ˙ j \mathcal{K}=\frac{1}{2}\dot{q}^{T}D(q)\dot{q}=\frac{1}{2}\sum_{i,j}d_{ij}(q)\dot{q}_{i}\dot{q}_{j} K=21q˙TD(q)q˙=21i,jdij(q)q˙iq˙j
  2. 势能 P = P ( q ) \mathcal{P}=\mathcal{P}(q) P=P(q) q ˙ \dot{q} q˙ 无关。

简单起见我们省略详细推导步骤,仅给出结论。欧拉-拉格朗日方程可写为:
∑ j = 1 n d k j ( q ) q ¨ j + ∑ i = 1 n ∑ j = 1 n c i j k ( q ) q ˙ i q ˙ j + g k ( q ) = τ k , k = 1 , … , n \sum_{j=1}^{n}d_{kj}(q)\ddot{q}_{j} + \sum_{i=1}^{n}\sum_{j=1}^{n}c_{ijk}(q)\dot{q}_{i}\dot{q}_{j}+g_{k}(q)=\tau_{k}, \quad k=1,\dots,n j=1ndkj(q)q¨j+i=1nj=1ncijk(q)q˙iq˙j+gk(q)=τk,k=1,,n
其中
c i j k = 1 2 { ∂ d k j ∂ q i + ∂ d k i ∂ q j − ∂ d i j ∂ q k } c_{ijk}=\frac{1}{2}\left\{\frac{\partial d_{kj}}{\partial q_{i}}+\frac{\partial d_{ki}}{\partial q_{j}}-\frac{\partial d_{ij}}{\partial q_{k}} \right\} cijk=21{qidkj+qjdkiqkdij}被称为第一类Christoffel符号。对于固定的 k k k 我们有 c i j k = c j i k c_{ijk}=c_{jik} cijk=cjik g k = ∂ P ∂ q k g_{k}=\frac{\partial \mathcal{P}}{\partial q_{k}} gk=qkP上式中广义坐标一阶导数的二次型的系数可分为:形如 q ˙ i 2 的 乘 积 类 型 \dot{q}^{2}_{i}的乘积类型 q˙i2 和 $ \dot{q}{i}\dot{q}{j} (i\neq j)$ 的乘积类型。前者被称为离心的 (centrifugal),后者被称为科里奥利(Coriolis)项。通常欧拉-拉格朗日方程还可写为
D ( q ) q ¨ + C ( q , q ˙ ) q ˙ + g ( q ) = τ D(q)\ddot{q}+C(q,\dot{q})\dot{q}+g(q)=\tau D(q)q¨+C(q,q˙)q˙+g(q)=τ其中矩阵 C ( q , q ˙ ) C(q,\dot{q}) C(q,q˙)中的第 ( k , j ) (k,j) (k,j)项元素被定义为:
c k j = ∑ i = 1 n c i j k ( q ) q ˙ i = ∑ i = 1 n 1 2 { ∂ d k j ∂ q i + ∂ d k i ∂ q j − ∂ d i j ∂ q k } q ˙ i c_{kj}=\sum_{i=1}^{n}c_{ijk}(q)\dot{q}_{i}=\sum_{i=1}^{n}\frac{1}{2}\left\{\frac{\partial d_{kj}}{\partial q_{i}}+\frac{\partial d_{ki}}{\partial q_{j}}-\frac{\partial d_{ij}}{\partial q_{k}} \right\}\dot{q}_{i} ckj=i=1ncijk(q)q˙i=i=1n21{qidkj+qjdkiqkdij}q˙i并且重力向量由下式给出:
g ( q ) = [ g 1 ( q ) , … , g n ( q ) ] T g(q)=[g_{1}(q),\dots, g_{n}(q)]^{T} g(q)=[g1(q),,gn(q)]T

运动方程的性质 Properties

反对称性 Skew Symmetry

矩阵 N ( q , q ˙ ) = D ˙ ( q ) − 2 C ( q , q ˙ ) N(q,\dot{q})=\dot{D}(q)-2C(q,\dot{q}) N(q,q˙)=D˙(q)2C(q,q˙)是反对称的,即 n j k = − n k j n_{jk}=-n_{kj} njk=nkj

无源性 Passivity

存在一个常数 β ≥ 0 \beta\geq 0 β0 使得 ∫ 0 T q ˙ T ( ξ ) τ ( ξ ) d ξ ≥ − β , ∀ T > 0 \int_{0}^{T}\dot{q}^{T}(\xi)\tau(\xi)\mathrm{d}\xi\geq-\beta,\quad \forall T>0 0Tq˙T(ξ)τ(ξ)dξβ,T>0

参数线性化 Linearity-in-the-parameter

存在 n × ℓ n\times \ell n× 的函数 Y ( q , q ˙ , q ¨ ) Y(q,\dot{q},\ddot{q}) Y(q,q˙,q¨),以及 ℓ \ell 维向量 Θ \Theta Θ,使得欧拉-拉格朗日方程可被写为
D ( q ) q ¨ + C ( q , q ˙ ) q ˙ + g ( q ) = Y ( q , q ˙ , q ¨ ) Θ D(q)\ddot{q}+C(q,\dot{q})\dot{q}+g(q)=Y(q,\dot{q},\ddot{q})\Theta D(q)q¨+C(q,q˙)q˙+g(q)=Y(q,q˙,q¨)Θ函数 Y ( ⋅ ) Y(\cdot) Y() 被称为回归方程,而 Θ ∈ R ℓ \Theta\in\mathbb{R}^{\ell} ΘR为参数向量。


  • Thanks Mark W. Spong for his great of Robot Modeling and Control.
  • 感谢熊有伦等——《机器人学:建模、控制与视觉》.
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐