利用matlab的机器人试验仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

选择MATLAB2016a版,高版本不能安装。

安装好按照下面的操作做出来,然后截图做成Word文档发给我。

MATLAB2016a版同学们网上下载安装,安装方法网上随便可找到。

机器人工具箱我发给你们。

一、将文件夹放到MATLAB安装文件夹指定目录下
放到安装目录的toolbox文件夹下,如下图是笔者的电脑的位置,其中那个installation address是我自己取得名字,英语不好,不要见怪。

三、打开MATLAB软件,进行手动启动
(1)打开matlab,依次点击file(文件)-setpath(设置路径)-add with subfolder (添加子文件夹),然后选择这个rvctools文件夹就好了,然后save(保存)-close (关闭)
(2)在命令行窗口输入startup_rvc,回车,如图,显示了一段英语,我恩可以看到,版本是9.10。

本文主要是给大家一个系统的概念,如何用Matlab实现六轴机器人的建模和实现轨迹规划。

以后将会给大家讲解如何手写正逆解以及轨迹插补的程序。

程序是基于Matlab2016a,工具箱版本为Robotic Toolbox 9.10。

1.D-H建模
三个两两相互垂直的XYZ轴构成欧几里得空间,存在六个自由度:沿XYZ 平移的三个自由度,绕XYZ旋转的三个自由度。

在欧几里得空间中任意线性变换都可以通过这六个自由度完成。

Denavit-Hartenberg提出的D-H参数模型能满足机器人学中的最小线性表示约定,用4个参数就能描述坐标变换:绕X轴平移距离a;绕X轴旋转角度alpha;绕Z轴平移距离d;绕Z轴旋转角度theta。

2.标准D-H模型和改进D-H模型
对比来看参数并没有改变,标准的D-H 模型是将连杆的坐标系固定在该连杆的输出端(下一关节),也即坐标系i-1与关节i对齐;改进的D-H模型则是将坐标系固定在该连杆的输入端(上一关节),也即坐标系i-1与关节对齐i-1。

(具体建模可见后面的博客)
3.利用Matlab Robotic Toolbox 建立机器人模型
alpha:连杆扭角;
a:连杆长度;
theta:关节转角;
d:关节距离;
offset:偏移
1 clear;
2 clc;
3 %建立机器人模型
4 % theta d a alpha offset
5 L1=Link([0 0.4 0.025 pi/2 0 ]); %定义连杆的D-H参数
6 L2=Link([pi/2 0 0.56 0 0 ]);
7 L3=Link([0 0 0.035 pi/2 0 ]);
8 L4=Link([0 0.515 0 pi/2 0 ]);
9 L5=Link([pi 0 0 pi/2 0 ]);
10 L6=Link([0 0.08 0 0 0 ]);
11 robot=SerialLink([L1 L2 L3 L4 L5 L6],'name','manman'); %连接连杆,机器人取名manman
12 robot.plot([0,pi/2,0,0,pi,0]);%输出机器人模型,后面的六个角为输出时的theta 姿态
本段代码取名为代码段1,效果图如下:
在代码段1的后面加入display函数可以输出模型的一些参数
robot.display();
其中表格为D-H参数,grav为重力加速度矢量,base为基坐标系的齐次矩阵,tool为工具坐标系和末端连杆的坐标系之间的变换矩阵。

在代码段1的后面加入teach指令,则可调整各个关节角度,能够让初学者更好的了解六轴机器人的结构。

1 teach(robot);
4.运动学正逆解
运动学正解:根据6个关节角结算出末端位姿。

运动学逆解:根据末端位姿结算出关节角,这里会存在8组逆解,本文中用的反解函数会智能输出最优的一组解。

正解程序:
我们可以查看p和q,对比theta和q,发现是一致的(实际情况中并不是完全一致,会有一点偏差,我这里选的点特殊了)。

5.轨迹规划
在实际应用中,我们一般都是知道末端的轨迹,然后使机器人动作。

本文的例子是根据给定两个点的值,得到末端位姿,根据末端位姿再来规划轨迹。

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
T1=transl(0.5,0,0);%根据给定起始点,得到起始点位姿
T2=transl(0,0.5,0);%根据给定终止点,得到终止点位姿
q1=robot.ikine(T1);%根据起始点位姿,得到起始点关节角
q2=robot.ikine(T2);%根据终止点位姿,得到终止点关节角
[q ,qd, qdd]=jtraj(q1,q2,50); %五次多项式轨迹,得到关节角度,角速度,角加速度,50为采样点个数
grid on
T=robot.fkine(q);%根据插值,得到末端执行器位姿
plot3(squeeze(T(1,4,:)),squeeze(T(2,4,:)),squeeze(T(3,4,:)));%输出末端轨迹
hold on
robot.plot(q);%动画演示
蓝色细线就是规划的轨迹,六轴机器人manman将会动态演示从起始点到终止点的过程。

二、标准DH方法和修正DH方法的区别
三:MATLAB仿真对比
1. 标准DH
%标准DH
%Link(DH,option):
%DH = [THETA D A ALPHA SIGMA]//我的代码中此处定义theta的初始值无效L1 = Link([0 0.2 1 pi/4 0],'standard');
L2 = Link([0 0.2 1 pi/4 0],'standard');
L3 = Link([0 0 0.5 pi/4 0],'standard');
robot = SerialLink([L1 L2 L3]); %建立连杆机器人
robot.plot([0 0 0]) %显示并赋三个关节变量theta值都为0//此处才可以初始theta
对比代码中的DH参数和图中画的坐标系,再次确定标准DH四个参数含义:theta:绕Zi轴,从Xi旋转到Xi+1的角度
D:沿Zi轴,从Xi移动到Xi+1的距离
A:沿Xi轴,从Zi移动到Zi+1的距离
alpha:绕Xi+1轴,从Zi旋转到Zi+1的角度
2. 改进DH
%改进DH
%Link(DH,option):DH = [THETAi Di Ai-1 ALPHAi-1 SIGMA]
L1 = Link([0 0.2 1 pi/4 0],'modified');
L2 = Link([0 0.2 1 pi/4 0],'modified');
L3 = Link([0 0 0.5 pi/4 0],'modified');
robot = SerialLink([L1 L2 L3]); %建立连杆机器人
robot.plot([0 0 0]) %显示并赋三个关节变量theta的初始值都为0
MATLAB中定义改进DH连杆时一定要注意DH[theta d a alpha]中前两个参数下表为i,
即当前关节的DH值,后两个参数下表为i-1,及前一个关节的DH值参数值!此时对比代码中的DH参数和图中画的坐标系,得到DH定义为:
theta:绕Zi轴,从Xi-1旋转到Xi的角度
D:沿Zi轴,从Xi-1移动到Xi的距离
A:沿Xi轴,从Zi移动到Zi+1的距离
alpha:绕Xi轴,从Zi旋转到Zi+1的角度
四:总结
标准型和改进型中A和alpha定义相同,都是相对于下一关节而言,不同的是theta 和D在标准型中都是相对于下一关节,在改进型中是相对于上一关节。

定义DH表格时:
标准型的列标题为:THETAiDi Ai ALPHAi
改进型的列标题为:THETAiDiAi-1ALPHAi-1
所以一定要注意MATLAB机器人工具箱中连杆定义中DH的对应。

有能力的同学可试试。

相关文档
最新文档