MATLAB机器人工具箱3-及轨迹规划

轨迹规划

机器人轨迹规划分为关节空间轨迹规划和笛卡尔空间轨迹规划

关节空间轨迹规划

关节空间轨迹规划是以关节角的函数来描述轨迹(在时间和空间)的轨迹生成方法。

clc;
clear;

%%轨迹规划的第一步是建立机器人模型,这里建立一个6R机器人
%定义机器人的D-H参数
%  a--连杆长度;alpha--连杆扭角;d--连杆偏距;theta--关节转角
a2=0.4318; a3=0.02032;
d2=0.14909; d4=0.43307;
%            thetai     di      ai-1     alphai-1
L1 = Link([pi/2        0        0           0], 'modified');
L2 = Link([0           d2       0      -pi/2], 'modified');
L3 = Link([-pi/2       0       a2          0], 'modified');
L4 = Link([0           d4      a3     -pi/2], 'modified');
L5 = Link([0            0        0       pi/2], 'modified');
L6 = Link([0            0        0      -pi/2], 'modified');
%连接连杆,为机器人命名
robot=SerialLink([L1 L2 L3 L4 L5 L6], 'name', 'Tuesday');     %另一种命名方式robot.name = 'Tuesday'
%robot.display();
%robot.plot([-pi/2 -pi/2 0 0 0 0]);
%robot.teach();

%%关节空间轨迹规划
%[Q,QD,QDD] = jtraj(Q0, QF,M), 其中Q为关节空间轨迹,QD为关节速度,QDD为加速度;
% Q0为初始关节角度,QF为目标关节角度,时间t假设在M步内从0到1,采用五次多项式
initial_theta = [0 0 0 0 0 0];
target_theta = [0 pi/2 0 pi/3 pi/4 pi/5];
step=50;
[q,qd,qdd] = jtraj(initial_theta, target_theta, step);
robot.plot(q);

figure;
subplot(2,2,1);
i=1:6;
plot(q(:, i));
title('关节位置');

subplot(2,2,2);
i=1:6;
plot(qd(:, i));
title('关节速度');

subplot(2,2,3);
i=1:6;
plot(qdd(:, i));
title('关节加速度');

 

 

笛卡尔空间轨迹规划

%%笛卡尔空间轨迹规划
%TC = ctraj(T0, T1, N),其实T0为初始关节位姿,T1为目标关节位姿。有N个点沿着路径遵循梯形速度剖面
T0 = robot.fkine(initial_theta);
T1 = robot.fkine(target_theta);
TC = ctraj(T0, T1, step);
Tjtraj = transl(TC);
subplot(2,2,4);
plot2(Tjtraj, 'g');
title('T0到T1笛卡尔空间直线轨迹');
grid on;

 

 

  • 6
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
KUKA_kr16机器⼈建模正逆解及轨迹规划——matlab机器⼈⼯ 具箱 1.KUKA_kr16机器⼈本体结构 机器⼈本体结构 2.建⽴ 建⽴DH坐标系 坐标系 3.matlab机器⼈建模 机器⼈建模 3.1设置初始姿态 设置初始姿态 对Link函数⾥⾯的offset参数进⾏设定,对各关节进⾏关节偏移量的设定,来使模型的初始姿态与我们设想的⼀样。 偏移值为 偏移值为DH参数表中的 参数表中的theta项 项 matlab代码如下: clear clc %theta d a alpha %标准DH建模 L(1)=Link('d',0,'a',0.260,'alpha',-pi/2); L(2)=Link('d',0,'a',0.680,'alpha',0); L(3)=Link('d',0,'a',0.035,'alpha',pi/2); L(4)=Link('d',0.670,'a',0,'alpha',pi/2); L(5)=Link('d',0,'a',0,'alpha',pi/2); L(6)=Link('d',0.158,'a',0,'alpha',0); robot=SerialLink(L,'name','kr16'); %定义关节两偏移量 robot.base=transl(0,0,0.675); L(2).offset=-pi/2; L(3).offset=pi; L(4).offset=pi; L(5).offset=pi; L(6).offset=pi/2; %定义关节变量范围 L(1).qlim=[deg2rad(-185) deg2rad(185)]; L(2).qlim=[deg2rad(-155) deg2rad(35)]; L(3).qlim=[deg2rad(-130) deg2rad(154)]; L(4).qlim=[deg2rad(-350) deg2rad(350)]; L(5).qlim=[deg2rad(-130) deg2rad(130)]; L(6).qlim=[deg2rad(-350) deg2rad(350)]; %调整坐标轴即视野 set(gca,'XLim',[-1,1.5]); %将X轴范围设定为[-1.000,1.500] set(gca,'YLim',[-1,1.5]); %将X轴范围设定为[-1.000,1.500] set(gca,'ZLim',[-1,1.5]); %将Z轴范围设定为[-1.000,1.500] % set(gca,'XDir','reverse'); %将x轴⽅向设置为反向 % set(gca,'YDir','reverse'); %将Y轴⽅向设置为反向 set(gca,'View',[50,20]); %设定视野⽅向⾓和俯仰⾓ robot.display; robot.teach; 4.运动学正解 运动学正解 matlab代码如下: % % 正运动学求解 theta_0=[0,0,0,0,0,0]; theta_1=[pi/3,0,pi/6,0,pi/4,0]; T0=robot.fkine(theta_0); T1=robot.fkine(theta_1); figure (2) set(gca,'View',[50,20]); %设定视野⽅向⾓和俯仰⾓ robot.plot(theta_0); hold on figure (3) set(gca,'View',[50,20]); %设定视野⽅向⾓和俯仰⾓ robot.plot(theta_1); 5.运动学逆解 运动学逆解 matlab代码如下: %逆运动学求解 itheta_0=robot.ikine(T0); itheta_1=robot.ikine(T1); 6.轨迹规划 轨迹规划 %⾸先我们先规划之前得到的两个位姿之间的轨迹 t=[0:0.05:4];%设定步数 p=mtraj(@tpoly, itheta_0, itheta_1, 100); p1=mtraj(@lspb, itheta_0, itheta_1, 100); [q,dq,ddq]=mtraj(@tpoly, itheta_0, itheta_1, 100); [q2,dq2,ddq2]=mtraj(@lspb, itheta_0, itheta_1, 100); subplot(6,3,[1 4 7 2 5 8 10 13 16 11 14 17]) robot.plot([0 0 0 0 0 0]) robot.plot(p) robot.plot(p1) %绘制⾓度,速度,加速度曲线 subplot(6,3,3) plot(q) subplot(6,3,6) plot(dq) subplot(6,3,

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值