我是一个目录

  • 基于MATLAB的关节型六轴机械臂轨迹规划仿真
    • 1 实验目的
    • 2 实验内容
      • 2.1标准D-H参数法
      • 2.2实验中使用的Matlab函数
    • 3实验结果
    • 4 全部代码

基于MATLAB的关节型六轴机械臂轨迹规划仿真

1 实验目的

基于机器人学理论知识,利用标准D-H参数法建立关节型机器人的数学模型,使用Matlab的Robotics Toolbox工具包搭建模型。

tip:实验工具:Matlab R2021a (有很多玄学问题是因为软件版本)
以及注意先安装Robotics Toolbox工具包!!

2 实验内容

2.1标准D-H参数法

标准D-H参数法常用于建立关节型机器人的数学模型,D-H参数法是一种对连杆的坐标描述,而关节机器人本质上就是一系列连杆通过关节连接起来而组成的空间开式运动链。

对于连杆本身,其功能在于保持其两端的关节轴线具有固定的几何关系,连杆的特性由轴线决定,通常用四个连杆参数来描述,连杆长度,连杆扭转角,连杆偏移量和关节角

本实验给定的参数表:

序号 Theta: 关节转角 D:关节距离 A:连杆长度 Alpha:连杆扭角 Offset:偏移
1 0 0.4 0.25 pi/2 0
2 pi/2 0 0.56 0 0
3 0 0 0.035 pi/2 0
4 0 0.515 0 pi/2 0
5 pi 0 0 pi/2 0
6 0 0.08 0 0 0

2.2实验中使用的Matlab函数

Link函数
用于定义六轴机器人的一个轴。
包含了机器人的运动学参数、动力学参数、刚体惯性矩参数、电机和传动参数;
可采用DH法建立模型,其中包含参数:关节转角,关节距离,连杆长度,连杆转角,关节类型(0转动,1移动)。

% 定义六轴机器人的一个轴
L(1) = Link([theta1, D1, A1, alpha1, offset1], 'standard')

SerialLink函数
用于构建机械臂。
它的类函数比较多,包括显示机器人、动力学、逆动力学、雅可比等;

% 'six'为机械臂名称
robot = SerialLink(L,'name','six');

fkine正解函数
用于求解出末端位姿p。

theta = [0.1,0,0,0,0,0];    %指定的关节角
p=robot.fkine(theta)        %fkine正解函数,根据关节角theta,求解出末端位姿p

ikine逆解函数
用于求解出关节角q。

q=ikine(robot,p)           %ikine逆解函数,根据末端位姿p,求解出关节角q

轨迹规划
(1)jtraj
已知初始和终止的关节角度,利用五次多项式来规划轨迹;

T1=transl(0.5,0,0);       %根据给定起始点,得到起始点位姿
T2=transl(0,0.5,0);          %根据给定终止点,得到终止点位姿
init_ang=robot2.ikine(T1);%根据起始点位姿,得到起始点关节角
targ_ang=robot2.ikine(T2);%根据终止点位姿,得到终止点关节角
step = 20;
[q ,qd, qdd]=jtraj(init_ang,targ_ang,step); %五次多项式轨迹,得到关节角度,角速度,角加速度,50为采样点个数

(2)ctraj
已知初始和终止的末端关节位姿,利用匀加速、匀减速运动来规划轨迹。

T0 = robot2.fkine(init_ang);%运动学正解
T1 = robot2.fkine(targ_ang);%运动学正解
Tc = ctraj(T0,T1,step);     %得到每一步的T阵
tt = transl(Tc);

3实验结果





4 全部代码

%% MATLAB素质三连
clear;
close all;
clc;
%% 实验一 基于MATLAB的关节型六轴机械臂仿真%% 参数定义
%机械臂为六自由度机械臂
clear L;%角度转换
angle=pi/180;  %度%D-H参数表
theta1 = 0;   D1 = 0.4;   A1 = 0.025; alpha1 = pi/2; offset1 = 0;
theta2 = pi/2;D2 = 0;     A2 = 0.56;  alpha2 = 0;    offset2 = 0;
theta3 = 0;   D3 = 0;     A3 = 0.035; alpha3 = pi/2; offset3 = 0;
theta4 = 0;   D4 = 0.515; A4 = 0;     alpha4 = pi/2; offset4 = 0;
theta5 = pi;  D5 = 0;     A5 = 0;     alpha5 = pi/2; offset5 = 0;
theta6 = 0;   D6 = 0.08;  A6 = 0;     alpha6 = 0;    offset6 = 0;%% DH法建立模型,关节转角,关节距离,连杆长度,连杆转角,关节类型(0转动,1移动)L(1) = Link([theta1, D1, A1, alpha1, offset1], 'standard')
L(2) = Link([theta2, D2, A2, alpha2, offset2], 'standard')
L(3) = Link([theta3, D3, A3, alpha3, offset3], 'standard')
L(4) = Link([theta4, D4, A4, alpha4, offset4], 'standard')
L(5) = Link([theta5, D5, A5, alpha5, offset5], 'standard')
L(6) = Link([theta6, D6, A6, alpha6, offset6], 'standard')% 定义关节范围
L(1).qlim =[-180*angle, 180*angle];
L(2).qlim =[-180*angle, 180*angle];
L(3).qlim =[-180*angle, 180*angle];
L(4).qlim =[-180*angle, 180*angle];
L(5).qlim =[-180*angle, 180*angle];
L(6).qlim =[-180*angle, 180*angle];%% 显示机械臂
robot0 = SerialLink(L,'name','six');
f = 1                                  %画在第1张图上
theta = [0 pi/2 0 0 pi 0];             %初始关节角度
figure(f)
robot0.plot(theta);
title('六轴机械臂模型');
%% 加入teach指令,则可调整各个关节角度
robot1 = SerialLink(L,'name','sixsix');
f = 2
figure(f)
robot1.plot(theta);
robot1.teach
title('六轴机械臂模型可调节');
%% 实验二 基于MATLAB的六轴机械臂轨迹规划仿真%% 2.2求解运动学正解
robot2 = SerialLink(L,'name','sixsixsix');
theta2 = [0.1,0,0,0,0,0];              %实验二指定的关节角
p=robot2.fkine(theta2)                 %fkine正解函数,根据关节角theta,求解出末端位姿p
q=ikine(robot2,p)                      %ikine逆解函数,根据末端位姿p,求解出关节角q%% 2.3 jtraj 已知初始和终止的关节角度,利用五次多项式来规划轨迹
% T1=transl(0.5,0,0);                  %根据给定起始点,得到起始点位姿
% T2=transl(0,0.5,0);                  %根据给定终止点,得到终止点位姿
T1=transl(0.5,0,0);                        %根据给定起始点,得到起始点位姿
T2=transl(0,0.5,0);                        %根据给定终止点,得到终止点位姿
init_ang=robot2.ikine(T1);             %根据起始点位姿,得到起始点关节角
targ_ang=robot2.ikine(T2);             %根据终止点位姿,得到终止点关节角
step = 20;
f = 3%轨迹规划方法
figure(f)
[q ,qd, qdd]=jtraj(init_ang,targ_ang,step); %五次多项式轨迹,得到关节角度,角速度,角加速度,50为采样点个数
grid on
T=robot2.fkine(q);                     %根据插值,得到末端执行器位姿
nT=T.T;
plot3(squeeze(nT(1,4,:)),squeeze(nT(2,4,:)),squeeze(nT(3,4,:)));%输出末端轨迹
title('输出末端轨迹');
robot2.plot(q);                         %动画演示 %% 求解位置、速度、加速度变化曲线
f = 4
figure(f)
subplot(3,2,[1,3]);                     %subplot 对画面分区 三行两列 占用1到3的位置
plot3(squeeze(nT(1,4,:)),squeeze(nT(2,4,:)),squeeze(nT(3,4,:)));%输出末端轨迹
robot2.plot(q);                         %动画演示figure(f)
subplot(3, 2, 2);
i = 1:6;
plot(q(:,1));
title('位置');
grid on;figure(f)
subplot(3, 2, 4);
i = 1:6;
plot(qd(:,1));
title('速度');
grid on;figure(f)
subplot(3, 2, 6);
i = 1:6;
plot(qdd(:,1));
title('加速度');
grid on;t = robot2.fkine(q);                   %运动学正解
rpy=tr2rpy(t);                         %t中提取位置(xyz)
figure(f)
subplot(3,2,5);
plot2(rpy);%% ctraj规划轨迹 考虑末端执行器在两个笛卡尔位姿之间移动
f = 5
T0 = robot2.fkine(init_ang);           %运动学正解
T1 = robot2.fkine(targ_ang);           %运动学正解Tc = ctraj(T0,T1,step);                  %得到每一步的T阵tt = transl(Tc);
figure(f)
plot2(tt,'r');
title('直线轨迹');

基于MATLAB的关节型六轴机械臂轨迹规划仿真(2021实测完整代码)相关推荐

  1. 【机械仿真】基于matlab简化几何解法六轴机械臂位置规划【含Matlab源码 2128期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[机械仿真]基于matlab简化几何解法六轴机械臂位置规划[含Matlab源码 2128期] 点击上面蓝色字体,直接付费下载,即可. 获取 ...

  2. 【机械】基于简化几何解法的六轴机械臂位置规划附matlab代码

    1 内容介绍 基于简化几何解法的六轴机械臂位置规划附matlab代码 2 部分代码 clc; clear; %载入数据 importfile('shuiping.mat'); theta_shuipi ...

  3. 基于MATLAB与SOIDWORKS的关节型六轴机械臂仿真

    一.描述机械臂(DH参数) DH参数存在三种不同的描述.笔者在这个方面犯了一些错,所以特此记录一下.我采用的标准DH参数,不同类型的DH参数,建立的坐标系就不一样,所以需要注意一下. 标准DH参数建模 ...

  4. 基于蚁群算法的六轴机械臂路径规划(运动学模型建立)

    机器人运动学模型的建立 1 D-H参数法建立坐标系 2 机器人运动学分析 2.1 运动学正解 2.2 运动学逆解 3 机器人的轨迹仿真 1 D-H参数法建立坐标系 代码: clear; clc; %建 ...

  5. 四轴六轴机械臂基础运动仿真实验(Matlab)

    博主最近在学一本叫做<A Mathematical Introduction to Robotic Manipulation>的机器人学教材,并且在学习之余根据了老师的要求完成了一个仿真项 ...

  6. 六轴机械臂DIY(四)机械模型重建及DH法建模

    通过本系列文章的前三篇,一个小型桌面舵机机械臂我们就获得了,但一个控制单关节实现整体运动的机械臂无非就是一个桌面玩具,根本就不能称之为"机器人",因此在接下来的文章中我们会使用机器 ...

  7. 基于模型设计(MBD)工程方法开发六轴机械臂系统实战

    本课程采用基于模型设计(MBD)的工程开发方法,实现对六轴机械臂系统的开发,包括六轴机械臂的知识和控制器的软硬件实现,有助于设计串联.并联的机械臂.康复医疗机器人等其它机电设备的电控系统.目前,这种世 ...

  8. 将CAD模型通过SolidWorks导出机器人URDF文件(基于innfos六轴机械臂)

    将CAD模型通过SolidWorks导出机器人URDF文件(基于innfos六轴机械臂) 前言 也是初次接触这方面的学习,看了许多的资料,其中古月老师的有个课程挺好的,有机械臂和小车的,我们实验室有机 ...

  9. 六轴机械臂算法-引导篇

    最近一直在研究 6轴机械臂算法,整理出了如下几个计算六轴机械臂正解和逆解的关键点: 01_机器人坐标系和关节的说明 02_算法坐标系的建立 03_D-H参数表的建立 04_FK(正解)算法 05_Ma ...

最新文章

  1. 用小神经网络和光谱仪优化关键词识别
  2. linux 性能 管理 与 优化
  3. centos安装后两个启动项、_centos8的启动项配置
  4. 数据中心气流管理的基础:密闭系统的比较
  5. AB1601之iic驱动改造
  6. Netty实战 IM即时通讯系统(七)数据传输载体ByteBuf介绍
  7. java语音开源_号外!号外!百度语音开源库更新了
  8. Elastic-job使用及原理
  9. cmake gui安装教程_cmake安装与使用
  10. SGI opengl source code download
  11. Error: Can’t resolve ‘./src’ in ‘E:\ASUS\Documents\VSCode files\WebPackProject’
  12. 谈谈 Delphi 的类型与指针[2]
  13. 学一点Git--20分钟git快速上手 [Neil]
  14. Java学生成绩信息管理系统
  15. 三菱FX5U rtu方式通讯两台施耐德ATV320变频器 采用Q系列plc也支持的sp.cprtcl指令
  16. jeb 高级教程之动态调试
  17. 学习python自动化测试的好处
  18. 复制粘贴激活win10的方法--无毒
  19. 华退学博士王垠:离开是为了获得力量后再回来
  20. MySQL语句—DDL语句

热门文章

  1. 四:以理论结合实践方式梳理前端 React 框架 ——— React 高级语法
  2. 大逃杀显示服务器崩溃,绝地求生大逃杀打开后提示battlegrounds crash reporter怎么解决...
  3. 精致又实用的奇瑞小蚂蚁,你心动了嘛?
  4. mongo数据库导入导出各种方法
  5. linux挂载u盘时显示只读文件系统,不能在里面进行新建复制操作
  6. 几种基本的数字正则表达式【转】
  7. 【regression】分位数回归 quantile regression
  8. idea配置默认maven及setting文件(不用每次下载项目都重新配)
  9. Python学习(一) 进制转换、ASCLL转换
  10. 【Java】线程池的作用