机器人动力学--拉格朗日公式

机器人动力学–拉格朗日公式

文章目录

  • 机器人动力学--拉格朗日公式
    • 摘要
    • 引例
    • 拉格朗日公式一般形式

摘要

机器人动力学研究机器人运动所需的力和力矩。动力学方程,也成运动方程,是一系列二阶微分方程的形式
(8.1) τ = M ( θ ) θ ¨ + h ( θ , θ ˙ ) , \tau=M(\theta)\ddot \theta+h(\theta,\dot\theta),\tag{8.1} τ=M(θ)θ¨+h(θ,θ˙),(8.1)
这里 θ ∈ R n \theta\in\mathbb R^n θRn是关节变量的矢量, τ ∈ R n \tau\in \mathbb R^n τRn是关节力和力矩的矢量, M ( θ ) ∈ R n × n M(\theta)\in \mathbb R^{n\times n} M(θ)Rn×n是对称正定矩阵, h ( θ , θ ˙ ) ∈ R n h(\theta,\dot\theta)\in\mathbb R^n h(θ,θ˙)Rn是包括向心力,科氏力,重力和摩擦力的总和,这些力域 θ , θ ˙ \theta,\dot\theta θ,θ˙相关.

机器人正动力学问题是给定状态 ( θ , θ ˙ ) (\theta,\dot \theta) (θ,θ˙)和关节力及力矩,确定机器人的加速度 θ ¨ \ddot\theta θ¨,
(8.2) θ ¨ = M − 1 ( θ ) ( τ − h ( θ , θ ˙ ) ) , \ddot \theta=M^{-1}(\theta)(\tau-h(\theta,\dot\theta)),\tag{8.2} θ¨=M1(θ)(τh(θ,θ˙)),(8.2)
机器人动力学逆问题是寻找关节力和关节力矩,使机器人达到对应的状态和期望的加速度,如式(8.1). 推导机器人动力学的两种经典方法是牛顿-欧拉公式和拉格朗日公式。

引例

动力学拉格朗日公式的第一步是选择相互独立的坐标 q ∈ R n q\in\mathbb R^n qRn描述系统的构型,这些坐标 q q q称为广义坐标。第二步是定义广义力 f ∈ R n f\in \mathbb R^n fRn。广义力和坐标变化率 q ˙ \dot q q˙是对偶的,它们的内积 f T q ˙ f^T\dot q fTq˙对应功率。然后拉格朗日函数 L ( q , q ˙ ) \mathcal L(q,\dot q) L(q,q˙)定义为系统的动能 K ( q , q ˙ ) \mathcal K(q,\dot q) K(q,q˙)减去势能 P ( q ) \mathcal P(q) P(q),
L ( q , q ˙ ) = K ( q , q ˙ ) − P ( q ) . \mathcal L(q,\dot q)=\mathcal K(q,\dot q)-\mathcal P(q). L(q,q˙)=K(q,q˙)P(q).
然后依据拉格朗日公式,运动方程可表达为
(8.3) f = d d t ∂ L ∂ q ˙ − ∂ L ∂ q , f=\frac{d}{dt}\frac{\partial \mathcal L}{\partial\dot q}-\frac{\partial \mathcal L}{\partial q},\tag{8.3} f=dtdq˙LqL,(8.3)
该方程也称为带外力的欧拉-拉格朗日方程。
首先考虑一个简单例子,以质量为 m m m,限制再竖直方向运动的质点为例。该质点的构型空间是一条竖直直线。很自然选择高度作为广义坐标,用标量 x ∈ R x\in\mathbb R xR表示.假设重力 m g mg mg竖直向下,依据牛顿第二定律,那么运动方程为
(8.4) f − m g = m x ¨ . f-mg=m\ddot x.\tag{8.4} fmg=mx¨.(8.4)
使用拉格朗日公式可以推导得到同样结果。
质点的动能为 1 2 m x ˙ 2 \frac{1}{2}m\dot x^2 21mx˙2,势能为 m g x mgx mgx,那么拉格朗日函数为
(8.5) L ( x , x ˙ ) = K ( x , x ˙ ) − P ( x ) = 1 2 m x ˙ 2 − m g x , \mathcal L(x,\dot x)=\mathcal K(x,\dot x)-\mathcal P(x)=\frac{1}{2}m\dot x^2-mgx,\tag{8.5} L(x,x˙)=K(x,x˙)P(x)=21mx˙2mgx,(8.5)
运动方程为
(8.6) f = d d t ∂ L ∂ x ˙ − ∂ L ∂ x = m x ¨ + m g , f=\frac{d}{dt}\frac{\partial \mathcal L}{\partial\dot x}-\frac{\partial \mathcal L}{\partial x}=m\ddot x+mg,\tag{8.6} f=dtdx˙LxL=mx¨+mg,(8.6)
以下面的2R机械臂为例,用拉格朗日公式推导其运动方程。
机器人动力学--拉格朗日公式_第1张图片
机械臂在xy平面内,重力沿-y方向。推导动力学方程,首先要定义连杆的质量和惯量特性。假设连杆质量集中在连杆末端,分别为 m 1 , m 2 m_1,m_2 m1,m2,连杆1的位置和速度为
[ x 1 y 1 ] = [ L 1 c o s θ 1 L 1 s i n θ 1 ] , [ x ˙ 1 y ˙ 1 ] = [ − L 1 s i n θ 1 L 1 c o s θ 1 ] θ ˙ 1 , \left[\begin{matrix} x_1\\ y_1 \end{matrix}\right]= \left[\begin{matrix} L_1cos\theta_1\\ L_1sin\theta_1 \end{matrix}\right],\\ \left[\begin{matrix} \dot x_1\\ \dot y_1 \end{matrix}\right]= \left[\begin{matrix} -L_1sin\theta_1\\ L_1cos\theta_1 \end{matrix}\right]\dot \theta_1, [x1y1]=[L1cosθ1L1sinθ1],[x˙1y˙1]=[L1sinθ1L1cosθ1]θ˙1,
连杆2末端的位置和速度为
[ x 2 y 2 ] = [ L 1 c o s θ 1 + L 2 c o s ( θ 1 + θ 2 ) y 1 s i n θ 1 + L 2 s i n ( θ 1 + θ 2 ) ] , [ x ˙ 2 y ˙ 2 ] = [ − L 1 s i n θ 1 − L 2 s i n ( θ 1 + θ 2 ) − L 2 s i n ( θ 1 + θ 2 ) L 1 c o s + L 2 c o s ( θ 1 + θ 2 ) L 2 c o s ( θ 1 + θ 2 ) ] [ θ ˙ 1 θ ˙ 2 ] \left[\begin{matrix} x_2\\ y_2 \end{matrix}\right]= \left[\begin{matrix} L_1cos\theta_1+L_2cos(\theta_1+\theta_2)\\ y_1sin\theta_1+L_2sin(\theta_1+\theta_2) \end{matrix}\right],\\ \left[\begin{matrix} \dot x_2\\ \dot y_2 \end{matrix}\right]= \left[\begin{matrix} -L_1sin\theta_1-L_2sin(\theta_1+\theta_2)& -L_2sin(\theta_1+\theta_2)\\ L_1cos+L_2cos(\theta_1+\theta_2) &L_2cos(\theta_1+\theta_2) \end{matrix}\right] \left[\begin{matrix} \dot\theta_1\\ \dot\theta_2 \end{matrix}\right] [x2y2]=[L1cosθ1+L2cos(θ1+θ2)y1sinθ1+L2sin(θ1+θ2)],[x˙2y˙2]=[L1sinθ1L2sin(θ1+θ2)L1cos+L2cos(θ1+θ2)L2sin(θ1+θ2)L2cos(θ1+θ2)][θ˙1θ˙2]
选择关节坐标 θ = ( θ 1 , θ 2 ) \theta=(\theta_1,\theta_2) θ=(θ1,θ2)作为广义坐标,广义力 τ = ( τ 1 , τ 2 ) \tau=(\tau_1,\tau_2) τ=(τ1,τ2)对应关节力矩。拉格朗日函数为
(8.7) L ( θ , θ ˙ ) = ∑ i = 1 2 ( K i − P i ) \mathcal L(\theta,\dot\theta)=\sum_{i=1}^2(\mathcal K_i-\mathcal P_i)\tag{8.7} L(θ,θ˙)=i=12(KiPi)(8.7)
连杆的动能为 K 1 , K 2 \mathcal K_1 ,\mathcal K_2 K1,K2
K 1 = 1 2 m 1 ( x ˙ 1 2 + y ˙ 1 2 ) = 1 2 m 1 L 1 2 θ ˙ 1 2 K 2 = 1 2 ( x ˙ 2 2 + y ˙ 2 2 ) = 1 2 m 2 ( ( L 1 2 + 2 L 1 L 2 c o s θ 2 + L 2 2 ) θ ˙ 1 + 2 ( L 2 2 + L 1 l 2 c o s θ 2 ) θ ˙ 1 θ ˙ 2 + L 2 2 θ ˙ 2 2 ) \mathcal K_1=\frac{1}{2}m_1(\dot x_1^2+\dot y_1^2)=\frac{1}{2}m_1L_1^2\dot\theta_1^2\\ \mathcal K_2=\frac{1}{2}(\dot x_2^2+\dot y_2^2)\\ =\frac{1}{2}m_2((L_1^2+2L_1L_2cos\theta_2+L_2^2)\dot\theta_1+2(L_2^2+L_1l_2cos\theta_2)\dot\theta_1\dot\theta_2+L_2^2\dot\theta_2^2) K1=21m1(x˙12+y˙12)=21m1L12θ˙12K2=21(x˙22+y˙22)=21m2((L12+2L1L2cosθ2+L22)θ˙1+2(L22+L1l2cosθ2)θ˙1θ˙2+L22θ˙22)
连杆的势能 P 1 , P 2 \mathcal P_1,\mathcal P_2 P1,P2
P 1 = m 1 g y 1 = m 1 g L 1 s i n θ 1 P 2 = m 2 g y 2 = m 2 g ( L 1 s i n θ 1 + L 2 s i n ( θ 1 + θ 2 ) ) \mathcal P_1=m_1gy_1=m_1gL_1sin\theta_1\\ \mathcal P_2=m_2gy_2=m_2g(L_1sin\theta_1+L_2sin(\theta_1+\theta_2)) P1=m1gy1=m1gL1sinθ1P2=m2gy2=m2g(L1sinθ1+L2sin(θ1+θ2))
欧拉-拉格朗日方程(8.3)应用在该例子为
(8.4) τ i = d d t ∂ L ∂ θ ˙ i − ∂ L θ i , i = 1 , 2. \tau_i=\frac{d}{dt}\frac{\partial \mathcal L}{\partial \dot\theta_i}-\frac{\partial \mathcal L}{\theta_i}, i=1,2. \tag{8.4} τi=dtdθ˙iLθiL,i=1,2.(8.4)
计算整理可得
(8.9) τ 1 = ( m 1 L 1 2 + m 2 ( L 1 2 + 2 L 1 L 2 c o s θ 2 + L 2 2 ) ) θ ¨ 1 + m 2 ( L 1 L 2 c o s θ 2 + L 2 2 ) θ ¨ 2 − m 2 L 1 L 2 s i n θ 2 ( 2 θ ˙ 1 θ ˙ 2 + θ ˙ 2 2 ) + ( m 1 + m 2 ) L 1 g c o s θ 1 + m 2 g L 2 c o s ( θ 1 + θ 2 ) τ 2 = m 2 ( L 1 L 2 c o s θ 2 + L 2 2 ) θ ¨ 1 + m 2 L 2 2 θ ¨ 2 + m 2 g L 2 c o s ( θ 1 + θ 2 ) \begin{matrix} \tau_1 =(m_1L_1^2+m_2(L_1^2+2L_1L_2cos\theta_2+L_2^2))\ddot\theta_1\\ +m_2(L_1L_2cos\theta_2+L_2^2)\ddot\theta_2-m_2L_1L_2sin\theta_2(2\dot\theta_1\dot\theta_2+\dot\theta_2^2)\\ +(m_1+m_2)L_1gcos\theta_1+m_2gL_2cos(\theta_1+\theta_2)\\ \\ \tau_2 = m_2(L_1L_2cos\theta_2+L_2^2)\ddot\theta_1 + m_2L_2^2 \ddot\theta_2 \\ +m_2gL_2cos(\theta_1+\theta_2) \end{matrix} \tag{8.9} τ1=(m1L12+m2(L12+2L1L2cosθ2+L22))θ¨1+m2(L1L2cosθ2+L22)θ¨2m2L1L2sinθ2(2θ˙1θ˙2+θ˙22)+(m1+m2)L1gcosθ1+m2gL2cos(θ1+θ2)τ2=m2(L1L2cosθ2+L22)θ¨1+m2L22θ¨2+m2gL2cos(θ1+θ2)(8.9)
上面的方程合并可以写成
(8.10) τ = M ( θ ) θ ¨ + c ( θ , θ ˙ ) + g ( θ ) ⎵ h ( θ , θ ˙ ) \tau=M(\theta)\ddot\theta+\underbrace{c(\theta ,\dot\theta )+g(\theta)}_{h(\theta,\dot\theta)}\tag{8.10} τ=M(θ)θ¨+h(θ,θ˙) c(θ,θ˙)+g(θ)(8.10)
其中
M ( θ ) = [ m 1 L 1 2 + m 2 ( L 1 2 + 2 L 1 L 2 c o s θ 2 + L 2 2 ) m 2 ( L 1 L 2 c o s θ 2 + L 2 2 ) m 2 ( L 1 L 2 c o s θ 2 + L 2 2 ) m 2 L 2 2 ] , c ( θ , θ ˙ ) = [ − m 2 ( L 1 L 2 s i n θ 2 ( 2 θ ˙ 1 θ ˙ 2 ) m 2 L 1 L 2 θ ˙ 1 2 c o s θ 2 ] , g ( θ ) = [ ( m 1 + m 2 ) L 1 g c o s θ 1 + m 2 g L 2 c o s ( θ 1 + θ 2 ) m 2 g L 2 c o s ( θ 1 + θ 2 ) ] M(\theta)=\left [ \begin{matrix} m_1L_1^2+m_2(L_1^2+2L_1L_2cos\theta_2+L_2^2)&m_2(L_1L_2cos\theta_2+L_2^2)\\ m_2(L_1L_2cos\theta_2+L_2^2)&m_2L_2^2\\ \end{matrix}\right],\\ c(\theta,\dot\theta)=\left [ \begin{matrix} -m_2(L_1L_2sin\theta_2(2\dot\theta_1\dot\theta_2)\\ m_2L_1L_2\dot\theta_1^2cos\theta_2\\ \end{matrix}\right],\\ g(\theta)=\left [ \begin{matrix} (m_1+m_2)L_1gcos\theta_1+m_2gL_2cos(\theta_1+\theta_2)\\ m_2gL_2cos(\theta_1+\theta_2)\\ \end{matrix}\right] M(θ)=[m1L12+m2(L12+2L1L2cosθ2+L22)m2(L1L2cosθ2+L22)m2(L1L2cosθ2+L22)m2L22],c(θ,θ˙)=[m2(L1L2sinθ2(2θ˙1θ˙2)m2L1L2θ˙12cosθ2],g(θ)=[(m1+m2)L1gcosθ1+m2gL2cos(θ1+θ2)m2gL2cos(θ1+θ2)]
由上式可以发现,运动方程与 θ ¨ \ddot\theta θ¨是线性关系,与 θ ˙ \dot\theta θ˙是二次方关系,与 θ \theta θ是三角函数关系。

在惯性坐标系中( x 2 , y 2 x_2,y_2 x2,y2),加速度可简单写成坐标的二阶导数( x ¨ 2 , y ¨ 2 \ddot x_2,\ddot y_2 x¨2,y¨2)的线性函数。而关节坐标 ( θ 1 , θ 2 ) (\theta_1,\theta_2) (θ1,θ2)不在惯性坐标系,因此加速度与坐标二阶导数的线性关系,与一阶导数的平方关系。包含二次项 θ ˙ i 2 \dot\theta_i^2 θ˙i2的项称为向心项,包含二次项 θ ˙ i θ ˙ j , i ≠ j \dot\theta_i\dot\theta_j,i\neq j θ˙iθ˙j,i̸=j的项称为科氏项。

拉格朗日公式一般形式

下面推导一般n个连杆的开链机构的拉格朗日动力学公式。第一步选择广义坐标 θ ∈ R n \theta\in\mathbb R^n θRn描述系统的构型空间。广义力表示为 τ ∈ R n \tau\in\mathbb R^n τRn,如果 θ i \theta_i θi是旋转关节,那么 τ i \tau_i τi对应力矩,如果 θ i \theta_i θi是移动关节,那么 τ i \tau_i τi对应力。

一旦选择了广义坐标和确定了广义力,下一步是计算拉格朗日函数
(8.13) L ( θ , θ ˙ ) = K ( θ , θ ˙ ) − P ( θ ) \mathcal L(\theta,\dot\theta)=\mathcal K(\theta,\dot\theta)-\mathcal P(\theta)\tag{8.13} L(θ,θ˙)=K(θ,θ˙)P(θ)(8.13)
这里 K ( θ , θ ˙ ) \mathcal K(\theta,\dot\theta) K(θ,θ˙)是系统总动能, P ( θ ) \mathcal P(\theta) P(θ)是系统的总势能。对于刚性连杆,动能总可以写成如下形式
(8.14) K ( θ ) = 1 2 ∑ i = 1 n ∑ j = 1 n m i j ( θ ) θ ˙ i θ ˙ j = 1 2 θ ˙ T M ( θ ) θ ˙ , \mathcal K(\theta)=\frac{1}{2}\sum_{i=1}^n\sum_{j=1}^nm_{ij}(\theta)\dot\theta_i\dot\theta_j=\frac{1}{2}\dot\theta^TM(\theta)\dot\theta,\tag{8.14} K(θ)=21i=1nj=1nmij(θ)θ˙iθ˙j=21θ˙TM(θ)θ˙,(8.14)
这里 m i j m_{ij} mij n × n n\times n n×n的质量矩阵的第 ( i , j ) (i,j) (i,j)个元素。

动力学方程的解析式可以计算下式的右边的值得到
(8.15) τ i = d d t ∂ L ∂ θ ˙ i − ∂ L ∂ θ i , i = 1 , 2 , … , n . \tau_i=\frac{d}{dt}\frac{\partial \mathcal L}{\partial \dot\theta_i}-\frac{\partial\mathcal L}{\partial\theta_i}, i=1,2,\ldots,n. \tag{8.15} τi=dtdθ˙iLθiL,i=1,2,,n.(8.15)

动能使用式(8.14)表示,动力学方程可以写成
(8.16) τ i = ∑ j = 1 n m i j ( θ ) θ ¨ j + ∑ j = 1 n ∑ k = 1 n Γ i j k ( θ ) θ ˙ j θ ˙ k + ∂ P ∂ θ i , i = 1 , … , n , \tau_i=\sum_{j=1}^n m_{ij}(\theta)\ddot\theta_j+\sum_{j=1}^n\sum_{k=1}^n \mathcal \Gamma_{ijk}(\theta)\dot\theta_j\dot\theta_k+\frac{\partial\mathcal P}{\partial\theta_i}, i=1,\ldots,n,\tag{8.16} τi=j=1nmij(θ)θ¨j+j=1nk=1nΓijk(θ)θ˙jθ˙k+θiP,i=1,,n,(8.16)
这里 Γ i j k ( θ ) \Gamma_{ijk}(\theta) Γijk(θ)称为第一类Christoffel符号,它的定义如下
(8.17) Γ i j k ( θ ) = 1 2 ( ∂ m i j ∂ θ k ) + ∂ m i k ∂ θ j − ∂ m j k ∂ θ i ) . \Gamma_{ijk}(\theta)=\frac{1}{2}(\frac{\partial m_{ij}}{\partial\theta_k})+\frac{\partial m_{ik}}{\partial\theta_j}-\frac{\partial m_{jk}}{\partial\theta_i}).\tag{8.17} Γijk(θ)=21(θkmij)+θjmikθimjk).(8.17)

参考文献

[1] Kenvin M. Lynch , Frank C. Park, Modern Robotics Mechanics,Planning , and Control. May 3, 2017

你可能感兴趣的:(机器人,机器人学)