机械手位置控制——欧拉-拉格朗日方程仿真

机械⼿位置控制——欧拉-拉格朗⽇⽅程仿真
机械⼿位置控制之欧拉-拉格朗⽇⽅程仿真
问题背景
机械⼿的动态⽅程通常可以由欧拉-拉格朗⽇⽅程(Euler-Lagrange equation)描述,下⾯是⼀个简单的平⾯双铰链机械⼿的⽰意图。其中,坐标系和为机械⼿两个关节的轴坐标系,坐标系为机械⼿末端,实际应⽤中带负载使⽤,其位置可有由⼯作关节⾓度向量来描述,执⾏机构输⼊由作⽤于关节的两维⼒矩向量组成,EL⽅程描述如下:
式中,为2x2维机械⼿惯量矩阵(对称正定),为两维向⼼和哥⽒⼒矩向量 ( 为2x2维矩阵),为两维重⼒⼒矩向量,和分别为关节⾓度向量和关节速度向量。⾄此,我们给出了描述该机械⼿的动⼒学的⽅程。那么接下来,我们的任务是实现机械⼿的位置控制和轨迹控制。显然,给定⼀组⾓度向量,我们可以唯⼀的确定机械⼿的位置,也就是说,要实现对机械⼿位置的控制,只需让
按照我们期望的规律变化即可,也即跟踪问题。控制率设计
对于机械⼿位置控制来说,我们可以采⽤⽐例-微分(PD)控制器来实现,即按照各关节测量误差及其导数来产⽣各关节执⾏机构的输⼊作⽤的反馈控制率,这⾥我们引⼊控制率如下
其中,和为正定矩阵,通过调整和,可以调节系统的动态特性,这个在后⾯仿真时候可验证(此控制率除PD控制外,还引⼊了反馈线性化思想,cancel掉⾮线性项,若要具体推导可在后⾯评论回复)。在此控制率的作⽤下,我们可以通过Lyapunov函数验证系统状态误差是渐进收敛的,即可以跟踪上我们的期望位置。
仿真参数
其中,,,,,,,,
中国粉末冶金网给定如下两个期望位置,我们通过上述控制率进⾏跟踪。
仿真结果
如下仿真我们假定了参数和均为单位阵,此时仿真结果如下:
全国初中数学联赛(a)
第⼀组期望位置仿真
(b)第⼆组期望位置仿真
(x ,y )00(x ,y )11(x ,y )22q τM (q )+q
¨C (q ,)+q ˙q ˙g (q )=τM (q )C (q ,)q
˙q ˙C (q ,)q ˙g (q )q q
˙q q q −q d −q
˙q ˙d τ=−K (q −1q )−d K (−2q
˙)+q ˙d M (q )+q ¨d C (q ,)+q ˙q ˙d g (q )K 1K 2K 1K 2q d m =11kg m =2  1.5kg l =10.2m l =20.3m l =c 10.1m l =c 20.15m J =10.013kg  m 2J =20.045kg  m 2K 1K 2
仿真⽅法说明
对于菜鸟(本⼈)来说,上⾯的仿真整整做了⼏个⼩时,⼀⽅⾯是因为EL⽅程形式确实复杂,编程过程中多次输错下标导致程序崩溃。。。另外⼀个原因(重点),当然是菜鸟本尊。。。所以简单介绍⼀下微分⽅程的常⽤仿真⽅法,以帮助对此遇到问题的朋友。
1.通过Matlab 的内置函数求解
对国产电影的看法
Matlab内置了很多求解微分⽅程的函数(当然是数值解,函数dsolve⽤于求解解析解),具体可查阅相关资料了解。本⽂的仿真⽤的求解器是ode15s,即所谓的刚性微分⽅程变阶求解,其使⽤规条件及语法规则点击查看,或点击查看其英⽂⽂档,简单概括来说,就是ode15s允许奇异的惯量矩阵,同时可通过options定义绝对误差容忍限和相对误差容限。
下⾯给出⼀个简单的例程⽤于求解如下⼆阶微分⽅程:
单角钢Matlab代码:
clc;
close all;
x0=[0 1];
dx=@(t,x)[x(2); cos(t)-x(1)-x(2)];
[t,x]=ode15s(dx,[0 10],x0);
plot(t, x(:,1));其中,对于只有⼀个因变量的微分⽅程,x(1)表⽰,x(2)表⽰,cos(t)-x(1)-x(2)是⽤于描
述表达式。(若像此⽂仿真的微分⽅程中包含两个因变量,则x(1)表⽰,x(2)表⽰,x(3)表⽰,x(4)表⽰,dx=@(t,x)[x(2);表达式1;x(4);表达式2];其中表达式1和2分别为描述和的不带⼆阶项的表达式。)
2.通过simulink 仿真
在应⽤第⼀种⽅法时,需要必要的⼿动化简,对于本⽂的仿真来说,要把和⽤不包含⼆阶导数项的表达式表⽰出来,也是花费⼀番功夫的,深有体会。。。所以simulink的好处就是不需要多少化简步骤,也避免了码代码时经常发⽣的下标标错导致程序崩溃的情况,只需要⽤框图把各个状态间的关系表⽰出来就可以了,当然最后得出的也是数值解。
农村文化建设论文同样对于这个⼆阶微分⽅程,我们给出其simulink仿真如下(第⼀个1/s初始值为1,第⼆个为0):
3.采⽤迭代更新思想
+y ¨+y ˙y =cost
y (0)=0 (0)=y
˙1y y
˙y ¨q 1q
˙1q 2q ˙2q ¨1q ¨2q
病理生理学习题¨1q ¨2+y ¨+y ˙y =cost y (0)=0 (0)=y
˙1
回忆我们⼿动求解微分⽅程时,给定微分⽅程,我们可以求解其通解,同时若给定了个初始条件(为⽅程阶数),我们可以求其特解。那么在⽤Matlab求解微分⽅程的数值解时,我们不要求给出其解析表达式(很多时候也是难以做到的),那么我们便可以通过迭代更新的思想来遍历我们感兴趣的解区间。举个简单的例⼦:
上⾯这个微分⽅程的解,虽然毫⽆疑问的就可以看出来了。。。但是,若是⼀个复杂的微分⽅程呢?
我们回到上⾯的例⼦,假设我们想求其在区间上的数值解,那么,采⽤微元法的思想,我们将此区间划分为很多⼩份,⽤表⽰每⼀⼩份的长度,那么根据初始条件,我们便可以根据给定的微分⽅程求取的函数值如下:
那么我们便可以得到如下式⼦,其中为我们⼿⼯选取的长度,⽐如:
按照此思路,我们便可以得到在我们感兴趣区间的的数值解。
这种⽅法的仿真等之后有时间再更⼀次(马上上课去了…),⼤家也可以尝试⾃⾏编代码。n n =y ˙cost y (0)=0
(0,1)Δt y (Δt ) dt =∫0Δt y ˙cost  dt
∫0Δt
Δt Δt =0.01y (Δt )−y (0)=sin (Δt )−sin (0)
y

本文发布于:2024-09-21 16:24:00,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/577751.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:机械   微分   位置   控制   求解   函数   思想   关节
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议