0%

基于欧拉-拉格朗日方程的机器人动力学模型

摘要

如题。

(转自我的CSDN博客)

机器人动力学方程

机器人动力学方程是描述机器人力和运动之间的关系的方程。只描述力和运动的关系,不考虑产生运动的力和扭矩。

欧拉 - 拉格朗日方程

欧拉-拉格朗日方程(OL)描述了处于完整约束下,并且约束力满足虚功原理的机械系统的力和运动随时间的变化

有两种推导方法,先介绍使用牛顿第二定律的推导方法。

根据牛顿第二定律,某质点的运动方程是: my¨=fmg 先对时间求导,再对y˙求偏导,方程左侧可以写为: my¨=ddt(my˙)=ddty˙(12my˙2)=ddtKy˙ 其中K=12my˙2,是动能。

接着将重力表示为: mg=y(mgy)=Py 其中P=mgy表示重力势能。

定义拉格朗日算子L,表示系统动能与势能之差: L=KP=12my˙2mgy 并且有: Ly˙=Ky˙,Ly=Py

则初始的质点运动方程可化为: ddtKy˙=fPy 即: ddtLy˙Ly=f 此方程被称为欧拉-拉格朗日方程。

推广到n自由度的系统,得到: ddtLq˙kLqk=τk 其中τk是与广义坐标qk相关的力。

动能与势能

欧拉-拉格朗日方程可以直接用来推导动力学方程,前提是我们能够以一组广义坐标来表示该系统的动能和势能。如果要让这能够得到实际应用,那么我们就必须能够针对一个n连杆机器人计算出他的动能和势能。接下来将推到刚性连杆机器人动能和势能的表达式。

动能表示

刚体的动能可表示为平移动能和关于质心的旋转动能之和: K=12mvTv+12ωTZω Z表示物体的惯性张量,是一个3*3的对称矩阵。

Z=RIRT,R是附体坐标系与惯性坐标系之间的姿态变换。

I是附体坐标系中的惯性张量,仅取决于物体的形状和质量分布,与物体运动无关。 在这里插入图片描述

速度v和角速度ω需要转置,因为要考虑多个维度的方向。连杆上任意一点的现速度和角速度可通过雅可比矩阵和关节速度(关节变量的导数)来表示: vi=Jviqq˙ωi=Jωiqq˙

机器人总动能可表示为: K=12q˙Ti=1n[mi (Jvi(q))T Jvi(q) + (Jωi(q))T Ri(q) Ii (Ri(q))T Jωi(q)]q˙D(q)来表示机器人的惯性矩阵: D(q) = i=1n[mi (Jvi(q))T Jvi(q) + (Jωi(q))T Ri(q) Ii (Ri(q))T Jωi(q)]K=12q˙TD(q)q˙ 机器人惯性矩阵D(q)有如下特点:

  1. 只与机器人构型有关
  2. 对称且正定
  3. 动能总是非负的

势能表示

在刚体动力学情形下,势能总是来源于重力。假设物体质量集中在质心,计算第i个连杆的势能: Pi=migTrci g是惯性坐标系中的重力向量,rci是连杆i的质心坐标。机器人总势能为: P=i=1nPi=i=1nmigTrci 在m、g保持不变的情况下,机器人势能只与广义坐标rci有关。

运动方程

上面我们得到了如下结果:

系统动能是关于广义速度(坐标微分)的二次函数: K=12q˙TD(q)q˙=12i,jndi,j(q)q˙iq˙j 系统势能是关于广义坐标的函数,且与广义速度无关: P=i=1nmigTrci 欧拉-拉格朗日算子为: L=KP=12i,jndi,j(q)q˙iq˙jP(q) 欧拉-拉格朗日方程为: ddtLq˙kLqk=τk 其中: Lq˙k=jdkjq˙jddtLq˙k=jdkjq¨j+jddtdkjq˙j               =jdkjq¨j+i,jdkjqiq˙iq˙jLqk=12i,jdi,jqkq˙iq˙jPqk 因此对于每个k=1,2,...n,欧拉-拉格朗日方程可以写成: jdkjq¨j+i,j{dkjqi12di,jqk}q˙iq˙jPqk=τk 即: jdkjq¨j+i,j12{dkjqi+dkjqidi,jqk}q˙iq˙jPqk=τk 定义Christoffel symbol: cijk=cjik=12{dkjqi+dkjqidi,jqk} 定义广义重力: gk=Pqk 最终得到欧拉-拉格朗日方程: jdkj(q)q¨j+i,jcijk(q)q˙iq˙jgk(q)=τk 方程左侧三项分别为:

  1. 广义坐标的二阶导数:惯性项
  2. 广义坐标一阶导数的二次型:离心力项+哥氏力项
  3. 广义位置(0阶导数)重力项

方程可简写为: D(q)q¨+C(q,q˙)q˙+g(q)=τ

推导平面2关节机器人的动力学模型

现在考虑下图中带有两个转动关节的平面机械臂。

在这里插入图片描述

要使用刚刚得到的欧拉-拉格朗日方程,就要与关节位置和关节速度相关的三个量:D(q),C(q,q˙),g(q)

首先使用雅可比矩阵来计算动能,计算平移速度: vc1=Jvc1q˙vc2=Jvc2q˙Jvc1=[lcsin(q1)0lc1cos(q1)000]Jvc2=[l1sin(q1)lc2sin(q1+q2)lc2sin(q1+q2)l1cos(q1)+lc2cos(q1+q2)lc2cos(q1+q2)00] 平移部分对应的动能为: 12m1vc1Tvc1+12m2vc2Tvc2=12q˙{m1Jvc1TJvc1+m2Jvc2TJvc2}q˙ 接下来考虑角速度项: ω1=q˙1kω2=(q˙1+q˙2)k 由于ωi与每个关节坐标系的z轴对齐,旋转动能可以简单表示为12Iiωi2,其中Ii是转动惯量,它的轴线穿过连杆i的质心且平行于zi轴。因此,就广义坐标而言,整个系统的旋转动能为: 12q˙T{I1[1000]+I2[1111]}q˙ 惯性矩阵: D(q)=m1Jvc1TJvc1+m2Jvc2TJvc2+[I1+I2I2I2I2]=[d11d12d21d22] 计算得: d11=m1lc12+m2(l12+lc22+2l1lc2cos(q2))+I1+I2d12=d21=m2(lc22+l1lc2cos(q2))+I2d22=m2lc22+I2 我们已经得到了惯性矩阵,接下来计算Christoffel符号cijkc111=12d11q1=0c121=c211=12d11q2=m2l1lc2sin(q2)=hc221=d12q212d11q1=hc112=d21q112d11q2=hc122=c212=12d22q1=0c222=12d22q2=0

接下来计算势能,机械臂的势能等于两个连杆势能之和。 P1=m1glc1sin(q1)P2=m2g(l2sin(q1)+lc2sin(q1+q2))P=P1+P2=(m1lc1+m2l1)gsin(q1)+m2lc2gsin(q1+q2) 之前的广义重力gk可变为: g1=Pq1=(m1lc1+m2l1)gcos(q1)+m2lc2gcos(q1+q2)g2=Pq2=m2lc2gcos(q1+q2) 最后可以写出系统的动力学方程: d11q¨1+d12q¨2+c121q˙1q˙2+c211q˙2q˙1+c221q˙22+g1=τ1d21q¨1+d22q¨2+c112q˙12+g2=τ2 在这种情况下,原方程矩阵C(q,q˙)由下式给出: C=[hq˙2hq˙2+hq˙1hq˙10]

-------------本文结束啦 ( •̀ ω •́ ) 感谢您的阅读。-------------
Powered By Valine
v1.5.2