工业机器人(4)-- Matlab Robot Toolbox运动学正、逆解
【Matlab Robotics Toolbox】robotics toolbox学习及使用记录,方便自己后面复习、改进。
基于Matlab R2019b 9.5; Peter Corke的Robotics Toolbox 10.3.1
目录
0. 前言
Robot toolbox- rtbdemo
1. 依据D-H参数建立机器人模型
2. 代码解释
单个Link的解释
建立机器人整体的解释
运动学正解
绘图
运动学逆解
微分运动学(求雅克比矩阵)
0. 前言
在初学机器人学的时候,面对大量的概念和复杂的公式,往往不知道从何开始入手。一味的啃机器人学的概念和公式枯燥又无味,坚持不了几天就从入门到放弃一条龙走完了。坚持下去的动力之一就是能尽快看到自己的学习成果,而MATLAB机器人工具箱就是非常简单的机器人平台快速搭建工具。
本文主要介绍如何使用matlab工具箱建立机器人模型,并对其进行绘制。这里使用的RTB工具箱10.3版本,不同版本间代码风格可能会有差异,因此请注意工具箱的使用版本。
Robot toolbox- rtbdemo
rtbdemo是工具箱自带的一个历程脚本,在命令行窗口输入:
rtbdemo
RTB GUI界面:
如字面意思,左边一列是通用函数的例子(如:旋转,平移,轨迹等);中间主要是机械臂的基础函数,右边为移动机器人的一些历程。这些功能都写的很清楚了,都可以随便点点看,会很有意思。
本博客主要专注于机械臂的搭建和使用,因此会对前两列的函数进行展开介绍。
1. 依据D-H参数建立机器人模型
标准D-H参数示意图
以经典的4轴机械臂Scara为例(因为既有转动关节又有移动关节),介绍一下机械臂建立的步骤,首先上代码:
clear ; clc; close all;
% 机器人各连杆DH参数
% Scara机械臂连杆偏距参数d
d1 = 200;
d2 = 86;
d3 = -92;
% 由于关节4为移动关节,故d4为变量,theta4为常量
theta4 = 0;% Scara机械臂连杆长度参数a
a1 = 400;
a2 = 250;
a3 = 0;
a4 = 0;% Scara机械臂关节偏角参数alpha
alpha1 = 0 / 180 * pi;
alpha2 = 0 / 180 * pi;
alpha3 = 180 / 180 * pi;
alpha4 = 0 / 180 * pi;
% 定义各个连杆以及关节类型,默认为转动关节
% theta d a alpha
L(1)=Link([ 0 d1 a1 alpha1]); L(1).qlim=[-pi,pi];
L(2)=Link([ 0 d2 a2 alpha2]); L(2).qlim=[-pi,pi]; L(2).offset=pi/2;
L(3)=Link([ 0 d3 a3 alpha3]); L(3).qlim=[-pi,pi];
% 移动关节需要特别指定关节类型--jointtype
L(4)=Link([theta4 0 a4 alpha4]); L(4).qlim=[0,180]; L(4).jointtype='P';
% 把上述连杆“串起来”
Scara=SerialLink(L,'name','Scara');
Scara.display(); % 显示Scara机器人关节数以及D_H参数列表
% Scara:: 4 axis, RRRP, stdDH, slowRNE % 定义机器人基坐标和工具坐标的变换
Scara.base = transl(0 ,0 ,305);
Scara.tool = transl(0 ,0 ,100);
Scara.teach(); % 运动学正解
pose_0=[pi/4,-pi/3,pi/2,100];
T=Scara.fkine(pose_0);
cchain=Scara.trchain;% 运动学逆解
% 当反解的机器人对象的自由度少于6时,要用mask vector进行忽略某个关节自由度%
mask_vector = [1,1,1,0,0,1];
axi_val = Scara.ikine(T,'mask',mask_vector,'pinv');
% We can help the solution along by using the 'pinv' option% 雅可比矩阵
% j0=robot.jacob0(pose_0);
命令行显示Scara机器人信息和D-H参数表:
GUI显示机器人模型
2. 代码解释
单个Link的解释
% theta d a alpha
L(1)=Link([ 0 d1 a1 alpha1]); L(1).qlim=[-pi,pi];
L(2)=Link([ 0 d2 a2 alpha2]); L(2).qlim=[-pi,pi]; L(2).offset=pi/2;
L(3)=Link([ 0 d3 a3 alpha3]); L(3).qlim=[-pi,pi];
% 移动关节需要特别指定关节类型--jointtype
L(4)=Link([theta4 0 a4 alpha4]); L(4).qlim=[0,180]; L(4).jointtype='P';
Link函数是根据DH参数建立连杆,其中包含了关节的信息,DH的输入顺序见代码;
qlim指定关节极限,注意,工具箱中的移动关节变量不允许有负值;
jointtype指定关节类型,默认为转动关节,L(4).jointtype='P’意味着第四根link是由移动关节连接的;
offset为关节初始值的偏置。这里要注意的是,定义好关节类型后,相应的变量必须为0,初值必须由offset定义,例如,关节2为转动关节,那么L(2)的theta必须为0,但是我们又希望初始状态下关节2能有一个偏置,那么就通过 L(2).offset=pi/2;来实现。
另外这里还有一个常用的基于改进的DH建立模型的方法,程序中没有说明,格式为:
L(1)=Link([0 d1 a1 alpha1], 'modified');
建立机器人整体的解释
Scara=SerialLink(L,'name','Scara');
help SerialLink
这条语句就建立了一个叫Scara的机器人类型的对象,下面就可以对他操作了。
% 定义机器人基坐标和工具坐标的变换
Scara.base = transl(0 ,0 ,305);
Scara.tool = transl(0 ,0 ,100);
Scara.teach();
运动学正解
% 运动学正解
pose_0=[pi/4,-pi/3,pi/2,100];
T=Scara.fkine(pose_0);
cchain=Scara.trchain;
绘图
joint(: , 1) = linspace(-pi/8,pi,200);
joint(: , 2) = linspace(-pi,pi/4,200);
joint(: , 3) = linspace(pi/3,-pi/2,200);
joint(: , 4) = linspace(0,360,200);
Scara.plot(joint ,'jointdiam',1,'fps',100,'trail','r-')
运动学逆解
% 运动学逆解
% 当反解的机器人对象的自由度少于6时,要用mask vector进行忽略某个关节自由度%
mask_vector = [1,1,1,0,0,1];
axi_val = Scara.ikine(T,'mask',mask_vector,'pinv');
% We can help the solution along by using the 'pinv' option
微分运动学(求雅克比矩阵)
Scara.jacob0(joint)
继续傻瓜操作。
输入关节角,输出6xN的雅克比矩阵,N为机械臂的自由度数,这里N为4。
有时候需要求雅克比矩阵的逆或伪逆,顺便一提matlab矩阵求逆和伪逆的函数:
% 矩阵求逆,mat为待求解的矩阵
inv(mat)
% 矩阵求伪逆
pinv(mat)
https://blog.csdn.net/weixin_43502392/article/details/105447785
https://blog.csdn.net/weixin_45629652/article/details/103831764
工业机器人(4)-- Matlab Robot Toolbox运动学正、逆解相关推荐
- 多自由度机械臂运动学正-逆解|空间轨迹规划控制|MATLAB仿真+实际机器调试
多自由度机械臂运动学正-逆解|空间轨迹规划控制|MATLAB仿真+实际机器调试 ) DH建模法可以参考这个博客: 还有<机器人>这本书,一定要理论实践相结合,理解后可以用几何法建模也可以用 ...
- MATLAB机器人机械臂运动学正逆解、动力学建模仿真与轨迹规划
MATLAB机器人机械臂运动学正逆解.动力学建模仿真与轨迹规划,雅克比矩阵求解.蒙特卡洛采样画出末端执行器工作空间 基于时间最优的改进粒子群优化算法机械臂轨迹规划设计 ID:4610679190520 ...
- 基于Robotics toolbox的定制/非标机构的运动学正逆解
建立坐标系 这一步很重要,如果发现DH参数无法确定,可能是坐标系的建立有问题,返回来重新建立. 我发现网上基本都是六自由度全转动机器人,很少有定制机构的机器人建模,特别是移动+转动的,这也给我DH参数 ...
- Puma560机器人运动学正逆解
puma560机器人D-H参数 puma560采用的是改进D-H参数,其DH参数表如下: i αi ai di θi 1 0 0 0 t1 2 -90 0 0 t2 3 0 r2 d3 t3 4 -9 ...
- 工业机械人运动学正逆解,简单粗暴!!!!!!
ur机械臂是六自由度机械臂,由D-H参数法确定它的运动学模型,连杆坐标系的建立如上图所示. 转动关节θi是关节变量,连杆偏移di是常数. 关节编号 α(绕x轴) a(沿x轴) θ(绕z轴) d(沿z轴 ...
- 6轴机器人运动学逆解matlab,六轴机器人建模方法、正逆解、轨迹规划实例与Matalb Robotic Toolbox 的实现...
摘要 本文主要是给大家一个系统的概念,如何用Matlab实现六轴机器人的建模和实现轨迹规划.以后将会给大家讲解如何手写正逆解以及轨迹插补的程序.程序是基于Matlab2016a,工具箱版本为Robot ...
- 【机器人原理与实践(三)】六轴机械臂正逆解控制
文章目录 3.1 空间转换矩阵的理解 3.1.1平移变换 3.1.2旋转变换 3.2 D-H参数法 3.3 建立机械臂模型 3.3.1 机械臂模型介绍 3.3.2 使用Matlab进行示教仿真 3.4 ...
- MATLAB机器人正逆解
MATLAB机器人求正逆解 手把手教你MATLAB Robotics Toolbox工具箱③ Matlab RoboticToolBox(一)Link参数.三自由度/四自由度逆运动学 https:// ...
- 和ur的区别_UR机械臂simscape正逆解仿真
最近在看相关的课程,把作业做一下,还是蛮有意思的.(课程代码所以涉及版权问题,经过同意后我上传代码) UR机械臂的物理模型文件是根据SolidWorks插件simscape导出的xml文件,课程直接提 ...
最新文章
- css中flex布局
- (chap6 Http首部) 响应首部字段 LocationProxy-AuthenticateRetry-After
- 编辑器扩展_关于MediaWiki的编辑器
- 贪吃蛇系列之一——引入
- angularjs初始化时不显示模板内容, 不显示html, 不显示template
- NUMTRYE - Number Theory (Easy)
- hibernate 映射四多对一双向映射
- 一个封装了的选项卡效果js
- java判断是否空值
- UE4使用自定义字体
- 零元学Expression Blend 4 - Chapter 7 什麽?影片不再是印象中的方框框!!!看Blend 4如何把影片镶入字里...
- vijos:旅行家的预算[贪心]
- LeetCode1139. 最大的以 1 为边界的正方形 (二维滑动窗口待优化)
- Gradle删除本地库文件
- excel单元格调用mysql数据,excel表格自动调用数据库-如何把Excel表格当做数据库处理...
- 「案例分享」工程总承包模式下对分包单位管理和控制的做法
- dos2unix命令详解
- 使用 Python 进行数据清洗的完整指南
- word分节符设置与不同页眉页脚页码设置
- 华为服务器2488H V6的ibmc接口配置
热门文章
- 如何利用CNN实现图像识别的任务?
- 使用ROS控制罗技F701游戏手柄
- 这篇文章告诉你用于制作思维导图的软件有什么?
- 用python简单实现百度查关键词排名工具并生成截图--精准无比
- 别浪费自己的高学历!
- 使用类共享提高性能,探索 IBM JRE 中最新的类共享特性
- 中国联通开源AI平台 CubeAI智立方-AI模型库(本人微信号:yudajiangshan)
- flutter全屏时钟!Flutter尽然还能有这种操作!薪资翻倍
- pm模式 raid_H3C案例查看:H3C RAID-1000 阵列卡多种模式的配置和功能
- python爬虫(三)——多线程+正则匹配下载图片(wallheaven图片网站)