0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

新机器视觉 来源:CSDN-mustvvvics 2023-02-08 09:12 次阅读

1.实验目的

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

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

2.实验内容

2.1标准D-H参数法

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

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

本实验给定的参数表:

24de8910-a736-11ed-bfe3-dac502259ad0.png

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.实验结果

24f0143c-a736-11ed-bfe3-dac502259ad0.jpg

2501a9fe-a736-11ed-bfe3-dac502259ad0.jpg

25202aaa-a736-11ed-bfe3-dac502259ad0.jpg

25334536-a736-11ed-bfe3-dac502259ad0.jpg2549dc56-a736-11ed-bfe3-dac502259ad0.jpg

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
    +关注

    关注

    185

    文章

    2974

    浏览量

    230448
  • 机器人
    +关注

    关注

    211

    文章

    28413

    浏览量

    207036
  • 仿真
    +关注

    关注

    50

    文章

    4080

    浏览量

    133585
  • 函数
    +关注

    关注

    3

    文章

    4331

    浏览量

    62591
  • 机械臂
    +关注

    关注

    12

    文章

    515

    浏览量

    24572

原文标题:基于MATLAB的关节型六轴机械臂轨迹规划仿真

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于LabVIEW和SolidWorks改进机械的设计流程

    `在求解机器人手臂的逆运动学方程后,无需装配物理测试平台,利用开发测试方程和NI LabVIEW VI的平台,即可仿真测试运动性能并优化设计方法。  解决方案:  使用LabVIEW NI
    发表于 02-12 15:56

    labview 上位机 机械

    大家好,我是一个labview的新人,最近我要做一个毕业设计,需要用USB摄像头采集数据,在用labview做一个上位机控制机械手,请问我要怎么实现?
    发表于 04-15 14:10

    请问水平两机械如何控制轨迹

    请问水平关节机器人,步进电机驱动的,一般都是用什么软硬件来控制呢,点到点现在可以实现,如果要求两联动末端走直线要怎么办呢?本人新手,非常感谢。
    发表于 11-30 18:35

    做毕设,需要用2812控制由舵机组成的三关节机械,求助

    题目是基于DSP的三关节机械轨迹跟踪控制系统设计主要任务是以DSP-TMS320F2812控制器作为机械
    发表于 04-10 21:42

    通过ROS控制真实机械之延时时间精确控制

    根据之前的配置,我们已经可以通过move_group发送出机械关节运动的轨迹,并且通过三次样条插补的方法,赋予各个关节在特定角度时的速度
    发表于 06-28 09:45

    如何对机械关节速度进行动态绘图?

    如何对机械关节速度进行动态绘图?
    发表于 11-03 06:05

    基于STC8H1K28双机械驱动模块设计

    ■ 前言这款双机械是应用于实验室中进行自动样品转换的执行机构。为了能够在一定范围内将试剂瓶(试管) 完成自动搬运,需要完成对样品的抓取,提升和放下、水平移动(二维) 等功能。使用带有肘关节
    发表于 02-18 06:01

    机械运动轨迹优化方法

    空间的规划机械目标点的坐标位姿函数相关,必须通过机械的逆向运动学求解,如此可获取各个关节
    发表于 11-03 10:26 10次下载
    双<b class='flag-5'>机械</b><b class='flag-5'>臂</b>运动<b class='flag-5'>轨迹</b>优化方法

    Labview关节机器人仿真robot软件下载

    Labview关节机器人仿真
    发表于 01-03 16:42 20次下载

    机械关节驱动组件

    操作器的精确运动提供技术支撑。机械关节是保证机械运动能力、运动精度、运动平稳性以及运动安全性等一系列问题的关键瞳。目前针对高精度伺服控制
    发表于 01-19 14:34 7次下载
    <b class='flag-5'>机械</b><b class='flag-5'>臂</b><b class='flag-5'>关节</b>驱动组件

    使用SimMechanics实现自由度的机械仿真研究

    仿真功能强大,可以在模型中通过改变结构,优化系统参数,在仿真环境中分析结果。利用 SimMechanics 的上述优点,以工业自由度机械
    发表于 11-12 08:00 1次下载
    使用SimMechanics实现<b class='flag-5'>六</b>自由度的<b class='flag-5'>机械</b><b class='flag-5'>臂</b><b class='flag-5'>仿真</b>研究

    机械路径规划方案的简单介绍

    解决的难题。 真尚有解决方案介绍 为了使机械在明确目标位置后能够在最短时间、最短距离准确抓取目标物体,真尚有机械路径规划方案采用多种群蚁
    发表于 07-12 17:23 2907次阅读

    机械:Arduino + Matlab

    电子发烧友网站提供《机械:Arduino + Matlab.zip》资料免费下载
    发表于 06-28 15:28 2次下载
    <b class='flag-5'>机械</b><b class='flag-5'>臂</b>:Arduino + <b class='flag-5'>Matlab</b>

    自由度机械三次多项式插值法

    对串联机械而言,轨迹规划可以分为:关节空间轨迹规划
    的头像 发表于 11-17 15:52 1277次阅读
    <b class='flag-5'>六</b>自由度<b class='flag-5'>机械</b><b class='flag-5'>臂</b>三次多项式插值法

    自由度机械轨迹规划仿真

    采用五次多项式插值法进行机械轨迹规划,基于Matlab Robotics Toolbox平台进行关节
    的头像 发表于 11-17 16:11 1386次阅读
    <b class='flag-5'>六</b>自由度<b class='flag-5'>机械</b><b class='flag-5'>臂</b><b class='flag-5'>轨迹</b><b class='flag-5'>规划</b><b class='flag-5'>仿真</b>