机器人工具箱实战

  • Post author:
  • Post category:其他




目的:

取一条腿为研究对象,对单腿的原地踏步进行模拟与仿真,给出运动轨迹,并得到相应的关节角的运动参数

后续想法->编写函数,输入轨迹,输出运动参数:



过程与实现:



创建单腿模型

L(1)=Link([0,0,0,pi/2]);
L(2)=Link([0,0,1,0]);
L(3)=Link([0,0,1,0]);
L(4)=Link([0,0,0,pi/2]);
L(5)=Link([0,0,0,0]);
L(6)=Link([0,0,0,0]);
two_link=SerialLink(L,'name','twolink');

其中1456是为了使用内置函数而设置的冗余自由度,对于该模拟无影响



期望运动轨迹:

位姿状态T1:

qn的位姿状态

位姿状态T2:

q1的位姿状态

键入初始和结束关节角并得到变化矩阵:

qn=[0,-pi/4,-pi/2,0,0,0];
q1=[0,-70/180*pi,-40/180*pi,0,0,0];
T1=two_link.fkine(qn);
T2=two_link.fkine(q1);

设置末端执行器从T1状态移动到T2状态,用时1s,每100ms计算一次关节角

t=[0:0.1:1];

计算:

[q v a]=jtraj(qn,q1,t);  %%该函数默认将始末位置的速度加速度取0或趋于0
q=
0	-0.785398163397448	-1.57079632679490	0	0	0
0	-0.789133167996716	-1.56332631759636	0	0	0
0	-0.810670530966326	-1.52025159165714	0	0	0
0	-0.856555237001257	-1.42848217958728	0	0	0
0	-0.923907492835718	-1.29377766791836	0	0	0
0	-1.00356431989674	-1.13446401379631	0	0	0
0	-1.08322114695776	-0.975150359674272	0	0	0
0	-1.15057340279222	-0.840445848005349	0	0	0
0	-1.19645810882715	-0.748676435935486	0	0	0
0	-1.21799547179676	-0.705601709996267	0	0	0
0	-1.22173047639603	-0.698131700797730	0	0	0

令s1为关节1(q中的第二列)所记录的关节角矩阵,同理得s2:

s1=q(:,2)';
s2=q(:,3)';

三次多形式拟合

p1=polyfit(t,s1,3);
p2=polyfit(t,s2,3);
f1=polyval(p1,t);
f2=polyval(p2,t);
plot(t,s1,'o',t,f1,t,s2,'x',t,f2) ;

得到曲线:

在这里插入图片描述

p1 =

    1.3526   -2.0289    0.2463   -0.7885

p2 =

   -2.7053    4.0579   -0.4925   -1.5645

我们可以得到关节1和关节2的三次多项式:





θ

1

=

1.3526

t

3

2.0289

t

2

+

0.2463

t

0.7885

\theta_1=1.3526t^3-2.0289t^2+0.2463t-0.7885







θ










1




















=








1


.


3


5


2


6



t










3




















2


.


0


2


8


9



t










2











+








0


.


2


4


6


3


t













0


.


7


8


8


5











θ

2

=

2.7053

t

3

+

4.0579

t

2

0.4925

t

1.5645

\theta_2=-2.7053t^3+4.0579t^2-0.4925t-1.5645







θ










2




















=











2


.


7


0


5


3



t










3











+








4


.


0


5


7


9



t










2




















0


.


4


9


2


5


t













1


.


5


6


4


5







以上是比较特殊的情况,接下来将讨论更为一般的情况

实际上只要能给出末端执行器的位姿随时间的变化,我们就能得到各关节的运动参数



版权声明:本文为weixin_42596724原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。