转载+六轴机器人建模方法、正逆解、轨迹规划实例与Matalb Robotic Toolbox 的实现

         转载:           https://blog.youkuaiyun.com/jldemanman/article/details/79229312                
                                              摘要 
本文主要是给大家一个系统的概念,如何用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:偏移

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姿态123456789101112

本段代码取名为代码段1,效果图如下: 
 
在代码段1的后面加入display函数可以输出模型的一些参数

 

robot.display();1

 
其中表格为D-H参数,grav为重力加速度矢量,base为基坐标系的齐次矩阵,tool为工具坐标系和末端连杆的坐标系之间的变换矩阵。 
在代码段1的后面加入teach指令,则可调整各个关节角度,能够让初学者更好的了解六轴机器人的结构。

 

teach(robot);1

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

 

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
theta=[0,0,0,0,0,0];%指定的关节角
p=robot.fkine(theta)%fkine正解函数,根据我们给定的关节角theta,求解出末端位姿p
q=robot.ikine(p)%ikine逆解函数,根据我们给定的末端位姿p,求解出关节角q1234567891011121314

我们可以查看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);%动画演示123456789101112131415161718192021

 
蓝色细线就是规划的轨迹,六轴机器人manman将会动态演示从起始点到终止点的过程。 
PS:本文的所有程序都是调用现成的函数,仅为大家建立一个概念,后面的博客将给大家讲解各个函数写法。
 

MATLAB运动学是指使用MATLAB编程语言来实现机器人运动学求运动学是指根据机器人末端执行器的目标位姿(位置和姿态),计算出机器人各个关节的转角或坐标。运动学在机器人控制和路径规划中起着重要的作用。 MATLAB提供了机器人工具箱(Robotics Toolbox)来支持运动学求。该工具箱提供了一系列函数和工具,可以用于建立机器人模型、计算雅克比矩阵、进行向运动学和向运动学的求运动学的求方法可以有多种,常见的方法包括Pieper法和常规法。Pieper法是一种基于几何推导和析几何的方法,适用于自由度机器人。常规法是一种基于数值计算和迭代求方法,适用于各种类型的机器人。在MATLAB中,可以根据具体的机器人模型和需求选择合适的方法进行编程实现。 要实现MATLAB运动学,首先需要建立机器人模型,包括关节类型、关节参数和DH参数等。然后,可以使用函数对机器人运动学进行求,计算出关节的转角或坐标。 通过编写MATLAB运动学代码,可以实现机器人运动的精确控制和路径规划。这样,就可以根据需要设定机器人的目标位姿,自动计算出对应的关节转角或坐标,实现机器人的精确定位和运动控制。 参考文献: : MATLAB机器人工具箱【1】——建模 运动学 雅克比矩阵机器人matlab写运动学函数(改进DH模型) 机器人建模方法轨迹规划实例Matalb Robotic Toolbox实现。 : 在博主读研期间,刚开始对机器人运动学不甚了,但在经历一次自己完全去钻研、尝试,独立写出属于自己的运动学后,对机器人的结构有更加深刻的理。因此希望初学机器人的朋友们也能够尝试独立去编写、尝试出自己的代码,我相信,当你看到出的角度完全符合预期,也能够产生相当的成就感。下面是运动学文内容,主要讲述运动学的方式和公式推算,最后进行代码的实现。 : 【Matlab 自由度机器人】求运动学 往期回顾前言文一、运动学1. Pieper 法2. 《机器人学》常规求 二、代码实现1. 机器人模型的建立2. Pieper 法求自由度机器人3. 常规法求自由度机器人 总结参考文献。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【Matlab 自由度机器人】运动学(附MATLAB机器人代码)](https://blog.youkuaiyun.com/AlbertDS/article/details/123679114)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值