技术干货 | Matlab机器人工具箱—机器人的建立、绘制与正逆运动学_当前热文

2023-04-24 18:17:03 来源:哔哩哔哩

文 | BFT机器人


(资料图)

01

引言

很多小伙伴在初学机器人学的时候,面对大量的概念和复杂的公式,往往不知道从何开始入手。一味的啃机器人学的概念和公式枯燥又无味,坚持不了几天就从入门到放弃一条龙走完了。坚持下去的动力之一就是能尽快看到自己的学习成果,而MATLAB机器人工具箱就是非常简单的机器人平台快速搭建工具。本文主要介绍如何使用matlab工具箱建立机器人模型,并对其进行绘制。这里使用的RTB工具箱10.2版本,不同版本间代码风格可能会有差异,因此请注意工具箱的使用版本。

02

rtbdemo

rtbdemo是工具箱自带的一个历程脚本,在命令行窗口输入:

就会蹦出来一个GUI界面:

如字面意思,左边一列是通用函数的例子(如:旋转,平移,轨迹等);中间主要是机械臂的基础函数,右边为移动机器人的一些历程。这些功能都写的很清楚了,都可以随便点点看,会很有意思。

本博客主要专注于机械臂的搭建和使用,因此会对前两列的函数进行展开介绍。

03

机器人的建立

以经典的4轴机械臂Scara为例(因为既有转动关节又有移动关节),介绍一下机械臂建立的步骤,首先上代码:

运行这段代码,会出现:

OK,现在可以感受下成果了。拖动左边的q1—q4就可以看到建立的机器人动起来了!

说明:q1—q4右边的数值为角度制,xyz为工具坐标系在世界坐标系的位置,rpy表示相对世界坐标系的旋转,定义可参见:

https://blog.csdn.net/lyhbkz/article/details/83542248

代码解析:

单个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];% 移动关节需要特别指定关节类型--jointtypeL(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建立模型的方法,程序中没有说明,格式为:

文章附录->六轴机器人改进的DH方法demo中为关于此用法的demo。

以上为建立连杆时常用的函数,但工具箱对link的定义远不至此,如有更多需求,可在命令行窗口输入:

来查看官方帮助文档,说到这里不得不提一句,学习无论是机器人工具箱还是matlab基础的学习,help函数都非常有用!

建立机器人整体的解释

L为刚刚建立好的四根link,‘name’为可选项,可以不加,就是给机器人取个名字,看它骨骼惊奇,这里就叫它‘Scara’啦。

同样的,SerialLink函数还有其他的可选则项在此不一一介绍,欲了解则:

这条语句就建立了一个叫Scara的机器人类型的对象,下面就可以对他操作了。

具体含义为,把我们的Scara基部沿着z轴平移305mm,工具坐标系则以最后一个坐标为基础,沿z方向平移100mm。

transl函数涉及到工具箱中对旋转、平移以及齐次坐标的变换,可参考:

https://blog.csdn.net/weixin_43502392/article/details/105468060

字面意思,对机器人进行示教。

04

绘制

上一节已经介绍了teach()函数,本节将简要介绍一下plot函数。

在上述代码中加入:

即可绘制机器人关节变量为[pi/6 0 pi/3 150]时的机器人状态:

如果joint是一个数组,如:

则会绘制机器人运动的动画,其中joint的列数必须和关节数目相同

其中,’jointdiam‘设置关节的圆柱体直径的大小,‘fps’**设置绘制动画的帧率,,'trail’会绘制出末端的轨迹

更多plot函数的可选项,照旧help:

有时候需要像博主一样把结果展示给别人看,因此我把绘制动图的程序放在了附录-> 绘制动图中,供参考。

更多关于可视化的使用方法将在机器人轨迹规划一章中进行介绍。

05

正运动学

傻瓜式操作,输入关节角度,输出SE3类的齐次变换矩阵

06

逆运动学

T为我们刚刚正解得到的齐次变换矩阵,输出为关节向量。

常用可选项:

‘mask’,M: mask vector (6x1) that correspond to translation in X, Y and Z, and rotation about X, Y and Z respectively.这里Scara机器人只有四个自由度,在x,y两个方向的旋转不存在自由度,因此为[1 1 1 0 0 1];

’q0’,Q为求解提供一个关节初值,因为数值法逆解可能不会收敛到想要的构型,提供一个初值,可以增大得到我们想要构型的概率。

’lambda’,L :initial value of lambda (default 0.1) 数值解法的步长,如果求解失败,可以减小步长再尝试,当然减小步长意味着求解时间更长;

’tol’,T容许误差,精度要求不高的话可以适当调大一点,默认为1e^-10

’ilimit’,L迭代的最大次数,求解失败时可以适当增大重新尝试。

’transpose’,A迭代时使用雅克比的转置代替伪逆,关于这两种方法的异同和思想,可参考下面推荐的知乎链接。

其他可选项有需求可参考

Note:

令人头疼的逆解,在matlab工具箱里也是傻瓜操作。但这里是数值法,仅能求解一组解,多解情况考虑不到,且求解容易失败。

进行轨迹规划时也容易跳跃,所以熟悉值后还是自己写逆运动学的解析解吧。另外关于工具箱数值解法的解析,可以看知乎上的回答:

https://www.zhihu.com/question/41673569?sort=created

微分运动学(求雅克比矩阵)

继续傻瓜操作。

输入关节角,输出6xN的雅克比矩阵,N为机械臂的自由度数,这里N为4。

有时候需要求雅克比矩阵的逆或伪逆,顺便一提matlab矩阵求逆和伪逆的函数:

07

总结

本文主要介绍了matlab机器人工具箱一些基础函数的使用方法,主要包括机械臂的建立,绘图,以及基础的运动学方法。

篇幅和精力有限,一些函数的扩展介绍仅包括高频使用的内容,如果需要用到一些没有列举到的方法,找matlab的help文档即可。

后面会继续更新轨迹规划,动力学相关的一些用法。

08

附录

六轴机器人改进的DH方法demo

clear ; clc; close all;% 机器人各连杆参数值d1 = 670;d2 = 0;d3 = 0;d4 = 1280;d5 = 0;d6 = 215;a1 = 0;a2 = 312;a3 = 1075;a4 = 225;a5 = 0;a6 = 0;alpha1 = 0 / 180 * pi;alpha2 = -90 / 180 * pi;alpha3 = 0 / 180 * pi;alpha4 = -90 / 180 * pi;alpha5 = 90 / 180 * pi;alpha6 = -90 / 180 * pi;% 建立连杆DH参数(修正的DH)L(1)=Link([0 d1 a1 alpha1], 'modified'); L(1).qlim=[-pi,pi];L(2)=Link([0 d2 a2 alpha2], 'modified');  L(2).qlim=[-pi,pi];L(2).offset = -pi/2;L(3)=Link([0 d3 a3 alpha3], 'modified'); L(3).qlim=[-pi,pi];L(4)=Link([0 d4 a4 alpha4], 'modified'); L(4).qlim=[-pi,pi];L(5)=Link([0 d5 a5 alpha5], 'modified'); L(5).qlim=[-pi,pi];L(6)=Link([0 d6 a6 alpha6], 'modified'); L(6).qlim=[-pi,pi];% 定义机器人FANUC=SerialLink(L(1:6),'name','FANUC');FANUC.tool = transl(0,0,100);FANUC.teach();

绘制动图

版权声明:本文为CSDN博主「JY.G」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:

https://blog.csdn.net/weixin_43502392/article/details/105447785

更多精彩内容请关注公众号:BFT机器人版权归BFT机器人所有,如需转载请与我们联系。若您对该文章内容有任何疑问,请与我们联系,将及时回应。

关键词:

汤臣倍健2021年市占率10.3% 稳居行业第一

VDS行业发展空间较大、集中度较低。国内膳食营养补充剂(VDS)发展历史尚短,居民的消费意识和习惯尚未完...

2022-05-22 21:06:33

郴州安仁文旅项目集中开工 总投资1000万元

3月16日,安仁县举行文旅项目集中开工活动,县委书记王洪灿在开工仪式上宣布:湘南起义旧址群——朱毛井...

2022-03-20 15:40:46

2022年郴州计划重点推进文旅项目101个 总投资354亿元

3月16日,我市举行全市文旅项目和城市大提质大融城项目集中开工仪式,市委书记吴巨培宣布项目开工。郴州...

2022-03-20 15:39:41

宿州泗县深入推进文旅融合发展 擦亮城市品牌

近年来,泗县以争创安徽省文化旅游名县为目标,深入推进文旅融合发展,努力擦亮水韵泗州 运河名城城市...

2022-03-20 15:38:59

汽车零部件产业“领头羊” 锦州力争一季度“开门红”

3月16日,记者从锦州汽车零部件产业的领头羊——锦州万得集团获悉,今年前两个月,企业订单充足,正铆足...

2022-03-20 15:37:41

油价或有望冲击“九元”大关 宁波新能源汽车市场如何

新一轮国内成品油调价窗口于3月17日24时开启,油价或有望冲击九元大关。前一天晚上11点,鄞州区不少加油...

2022-03-20 15:34:38

从水塘到“云”端 全国最大高邮鸭养殖基地实现智慧养殖

随着新一代数字技术的蓬勃发展,以新兴技术推动现代化新农村建设正成为助力乡村振兴的重要手段。1个人能...

2022-03-20 15:33:17

淡季不忘引流 京郊民宿市场有望迎来回暖

旅游淡季中的京郊民宿有望成为市场中最先复苏的板块。3月17日,北京商报记者调查发现,虽然正值旅游淡季...

2022-03-20 15:32:01

镇江乡村一二三产业融合发展 闯出“镇江之路”

从烹饪江鲜河豚的个体小饭店到规模化的江岛乡村旅游产业集群,从白兔草莓丁庄葡萄的单个农户种植到茅山...

2022-03-20 15:31:11

总投资30亿元 盐城东台8个重大产业项目相继开工

总投资30亿元的精密电子元器件项目、同益电子项目,总投资10亿元的金利美精密组件项目、天永智能设备项...

2022-03-20 15:30:13
x 广告
x 广告

Copyright  2015-2022 东亚粮油网版权所有  备案号:琼ICP备2022009675号-13   联系邮箱:435 227 67 @qq.com