1.
clear;
clc;
% 建立连杆系
L1=Link([0 12.4   0   pi/2  0  -pi/2 ]);
L2=Link([0 0      0  -pi/2           ]);
L3=Link([0 15.43  0   pi/2           ]);
L4=Link([0 0      0  -pi/2  0   0    ]);
L5=Link([0 15.925 0   pi/2           ]);
L6=Link([0 0      0  -pi/2           ]);
L7=Link([0 15.0   0   0     0   pi/2 ]);

% 机器人模型对象建立
Rbt=SerialLink([L1 L2 L3 L4 L5 L6 L7]);

% 6轨迹点的关节变量值
q0=[0 0 0 0 0 0 0];
qsq1=[0.46088 0.37699 0 1.31 0 1.4451 0];
qsq2=[.81681 0.56549 0 1.0681 0 1.2566 0 ];
qsq3=[2.36 0.69115 0 0.848 0 1.4451 0 ];
qsq4=[2.66 0.37699 0 1.31 0 1.4451 0];
qsq5=[pi/2 0.62831 0 1.5708 0 0.94249 0];
qsq6=[0 0.62831 0 1.5708 0 0.94249 0];

% 轨迹点规划 五次多项式来规划轨迹
t=0:.04:1;
sqtraj1=jtraj(q0,qsq1,t); 
sqtraj2=jtraj(qsq1,qsq2,t); 
sqtraj3=jtraj(qsq2,qsq3,t); 
sqtraj4=jtraj(qsq3,qsq4,t);
sqtraj5=jtraj(qsq4,qsq1,t);
sqtraj6=jtraj(qsq1,q0,t);
sqtraj7=jtraj(q0,qsq6,t);
hold on

%变量初始化
atj=zeros(4,4);
view(-35,40)
xlim([-40,40])
ylim([-40,40])
zlim([0,60])

% 绘制第1段轨迹线
for i=1:1:length(t)
    atj=Rbt.fkine(sqtraj1(i,:));
    JTA(i,:)=transl(atj);  % 提取位姿矩阵的平移分量(3元素列向量)储存进JTA向量数组
    jta=JTA; 
    plot2(jta(i,:),'r.')   % 绘制轨迹点(红色点)
    Rbt.plot(sqtraj1(i,:)) % 绘制轨迹动画
    plot2(JTA,'b')         % 绘制轨迹线(蓝色线)
end
% 绘制第2段轨迹线
for i=1:1:length(t)
    atj2=Rbt.fkine(sqtraj2(i,:));
    JTA2(i,:)=transl(atj2);
    jta2=JTA2;
    plot2(jta2(i,:),'r.')
    Rbt.plot(sqtraj2(i,:))
    plot2(JTA2,'b')
end
% 绘制第3段轨迹线
for i=1:1:length(t)
    atj3=Rbt.fkine(sqtraj3(i,:));
    JTA3(i,:)=transl(atj3);
    jta3=JTA3;
    plot2(jta3(i,:),'r.')
    Rbt.plot(sqtraj3(i,:))
    plot2(JTA3,'b')
end
% 绘制第4段轨迹线
for i=1:1:length(t)
    atj4=Rbt.fkine(sqtraj4(i,:));
    JTA4(i,:)=transl(atj4);
    jta4=JTA4;
    plot2(jta4(i,:),'r.')
    Rbt.plot(sqtraj4(i,:))
    plot2(JTA4,'b')
end
% 绘制第5段轨迹线
for i=1:1:length(t)
    atj5=Rbt.fkine(sqtraj5(i,:));
    JTA5(i,:)=transl(atj5);
    jta5=JTA5;
    plot2(jta5(i,:),'r.')
    Rbt.plot(sqtraj5(i,:))
    plot2(JTA5,'b')
end
% 绘制第6段轨迹线
for i=1:1:length(t)
    atj6=Rbt.fkine(sqtraj6(i,:));
    JTA6(i,:)=transl(atj6);
    jta6=JTA6;
    plot2(jta6(i,:),'r.')
    Rbt.plot(sqtraj6(i,:))
    plot2(JTA6,'b')
end
% 绘制第7段轨迹线
 for i=1:1:length(t)
    atj7=Rbt.fkine(sqtraj7(i,:));
    JTA7(i,:)=transl(atj7);
    jta7=JTA7;
    plot2(jta7(i,:),'r.')
    Rbt.plot(sqtraj7(i,:))
    plot2(JTA7,'b')
end

2.
clear;
clc;
%建立机器人模型
%       theta    d        a        alpha     offset
L1=Link([0       0.4      0.025    pi/2      0     ]); %定义连杆的D-H参数
L2=Link([pi/2    0        0.56     0         0     ]);
L3=Link([0       0        0.035    pi/2      0     ]);
L4=Link([0       0.515    0        pi/2      0     ]);
L5=Link([pi      0        0        pi/2      0     ]);
L6=Link([0       0.08     0        0         0     ]);
robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','manman'); %连接连杆,机器人取名manman
robot.plot([0,pi/2,0,0,pi,0]);%输出机器人模型,后面的六个角为输出时的theta姿态
robot.display();
teach(robot);

3.
T(1) = Link([0 0 10 0]);
T(2) = Link([0 0 5 0]);
T(3) = Link([0 0 0 0]);%原本是两轴机器人,但是为了显示末端,在加一个轴
T(1).qlim = [0 pi];
T(2).qlim = [-pi/2 pi];
ws = SerialLink(T,'name','ws');
n=1;
for i = 0:0.1:pi
    for j = -pi/2:0.1:pi    %遍历所有可能的角度
        %同一个机器人的多个图像不能同时显示,这里需要克隆多个名字不同的机器人
        clone = SerialLink(T,'name',strcat('clone',num2str(n)));    
        %在同一个窗口,绘制多个机器人
        clone.plot([i j 0],'workspace',[-16 16 -16 16 0 2],'view','top','noname','noshading','nowrist','noshadow','jointdiam',2,'linkcolor','g');
        n = n+1;
        hold on
    end
end

4.
链接:https://blog.csdn.net/qq_45779334/article/details/114873354?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161891059816780269877908%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161891059816780269877908&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-6-114873354.pc_search_result_hbase_insert&utm_term=robotics+toolbox%E6%9C%BA%E5%99%A8%E4%BA%BA%E3%80%81

clc;
clear;
% 定义各个连杆以及关节类型,默认为转动关节
%           theta      d        a        alpha
%               连杆偏距参数d 连杆长度参数 关节偏角参数alpha
L1=Link([     0        0        0          0], 'modified'); % [四个DH参数], options
L2=Link([    -pi/2   0.1925,   0.081     -pi/2], 'modified');
L3=Link([     0       0.4       0        -pi/2], 'modified');
L4=Link([     0      0.1685,    0        -pi/2], 'modified');
L5=Link([     0      0.4,       0         pi/2], 'modified');
L6=Link([     0      0.1363     0         pi/2], 'modified');
L7=Link([     0      0.13375    0        -pi/2], 'modified');

b=isrevolute(L1);
robot=SerialLink([L1,L2,L3,L4,L5,L6,L7],'name','FANUC'); % 将七个连杆组成机械臂
robot.name='modified sawyer';
robot.display(); % 展示出

init_ang=[0 0 0 0 0 0 0];
targ_ang=[pi/4,-pi/3,pi/5,pi/2,-pi/4,pi/2,pi/3];
step=200;
[q,qd,qdd]=jtraj(init_ang,targ_ang,step); %关节空间规划轨迹,得到机器人末端运动的[位置,速度,加速度]
T0=robot.fkine(init_ang); % 正运动学解算
Tf=robot.fkine(targ_ang);
subplot(2,4,3); i=1:7; plot(q(:,i)); title("位置"); grid on;
subplot(2,4,4); i=1:7; plot(qd(:,i)); title("速度"); grid on;
subplot(2,4,7); i=1:7; plot(qdd(:,i)); title("加速度"); grid on;

Tc=ctraj(T0,Tf,step);
Tjtraj=transl(Tc);
subplot(2,4,8); plot2(Tjtraj, 'r');
title('p1到p2直线轨迹'); grid on;
subplot(2,4,[1,2,5,6]);
plot3(Tjtraj(:,1),Tjtraj(:,2),Tjtraj(:,3),"b"); grid on;
hold on;
view(3); % 解决robot.teach()和plot的索引超出报错
qq=robot.ikine(Tc);
robot.plot(qq);

MATLAB机器人寻找轨迹路线规划源代码相关推荐

  1. matlab机器人工具箱 轨迹生成函数jtraj代码详解

    Matlab中nargin变量是函数输入参数的个数.nargout变量是函数输出的个数 轨迹生成函数jtraj()的代码详解: function [qt,qdt,qddt] = jtraj(q0, q ...

  2. Matlab机械臂综合仿真平台,包含运动学、动力学和控制。 MATLAB机器人仿真正逆运动学simulink轨迹规划 机械臂动力学控制等

    Matlab机械臂综合仿真平台,包含运动学.动力学和控制. MATLAB机器人仿真正逆运动学simulink轨迹规划 机械臂动力学控制等 gui控制仿真平台PUMA机器人 robotics toolb ...

  3. MATLAB机器人机械臂运动学正逆解、动力学建模仿真与轨迹规划

    MATLAB机器人机械臂运动学正逆解.动力学建模仿真与轨迹规划,雅克比矩阵求解.蒙特卡洛采样画出末端执行器工作空间 基于时间最优的改进粒子群优化算法机械臂轨迹规划设计 ID:4610679190520 ...

  4. matlab最优轨迹规划,matlab机器人轨迹规划

    运动仿真 $@ %" 运动仿真( ')在对上述规划轨迹进行仿真前, 先输入机器 人的参数, 并命名 -$.$/&&)" 命令如下: " @ A 连杆的前四 ...

  5. Matlab机器人工具箱(3):双臂操作(从模型建立到轨迹规划)

    从 Matlab机器人工具箱(3) 开始,使用的机器人工具版本更换到v10版本 他们的区别还是挺大的: 一个是单位的问题:从m变为mm 还有一个是变量类型的问题,变换矩阵从正常的矩阵形式变为se3类型 ...

  6. matlab求系统根轨迹代码_广州数控GSK RH06六轴焊接机器人的轨迹规划

    技术参数 运动范围 任务点位置 问题:如实现上图中的 运动轨迹(以基坐标系为参照),请给出相关的轨迹规划算法及其实现方式(结合运动学及动力学方程进行相关的轨迹点选取及工程实现),其中各个点的坐标为A= ...

  7. 【机器人技术基础】MATLAB Robotics Toolbox PUMA560 7次多项式取-放轨迹的规划

    实验3:取-放轨迹规划--7次多项式轨迹的规划 文末有本项目代码的Github链接 文章目录 一.实验目的和要求 1.1 目的 1.2 要求 二.实验手段 三.轨迹规划的推导过程(7次多项式) 3.1 ...

  8. 【路径规划】基于matlab GUI蚁群算法机器人栅格地图最短路径规划【含Matlab源码 927期】

    ⛄一.蚁群算法简介 1 引言 在自然界中各种生物群体显现出来的智能近几十年来得到了学者们的广泛关注,学者们通过对简单生物体的群体行为进行模拟,进而提出了群智能算法.其中, 模拟蚁群觅食过程的蚁群优化算 ...

  9. 【路径规划】基于matlab蚁群算法机器人栅格地图最短路径规划【含Matlab源码 1618期】

    ⛄一.蚁群算法及栅格地图简介 1 蚁群算法 1.1 蚁群算法的提出 蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来寻找优化路径的机率型算法.它由Marc ...

最新文章

  1. Solr索引和基本数据操作
  2. Changes at Different Environment?
  3. [云炬创业基础笔记]第五章创业机会评估测试2
  4. 【论文解读】ICLR 2021丨当梯度提升遇到图神经网络,“鱼和熊掌”皆可兼得
  5. javascript动态创建表格:新增、删除行和列
  6. 防止缓存爆炸的快速提示
  7. 【CodeForces - 1066A~E】水题,模拟(有技巧),思维,题意难懂的模拟,二进制问题(有技巧)
  8. java必知必会_Java构造器必知必会
  9. Mysql CMAKE编译参数详解
  10. linux命令行可以看图片吗,活久见!Linux命令行居然也可以用来查看图像?
  11. python实训报告5000字_20193420 实验一 《Python程序设计》实验一报告
  12. java中process方法用处_Java Process 简略使用方法以及坑点
  13. 【Maven】运行项目
  14. linux 如何看图软件,深度看图(linux看图软件) v1.2 官方最新版
  15. Matlab中单元数组和结构数组
  16. 小学数学题生成器java_JAVA小学四则运算生成器(聂适涵,邱品)
  17. ceph课程(一)ceph组件与原理
  18. WiFi网络测速专业版
  19. ip地址的分类及地址范围
  20. 篇1:如何为FPGA选择合适的电源管理方案

热门文章

  1. 手机内存不足别乱删,打开这个设置,彻底清除垃圾,手机流畅不卡
  2. SQL干货丨关于分组和聚合函数,如何实现查询排名?!
  3. 杭电多校第一场第三题 Backpack(异或dp+bitset)
  4. Static与Const的区别
  5. 2017年3月10日 星期五 --出埃及记 Exodus 23:28
  6. Android官方文档翻译 十三 3.1Supporting Different Languages
  7. 魏则西事件与百度医疗竞价排名引发的伦理与道德问题
  8. flinkSql的union all然后group by写入mysql
  9. 雷神轮胎携手JBL 演绎科技降噪、感受非凡音悦
  10. 杨百万:上周四全仓杀入股市 这波反弹不是牛市新起点