【基于Matlab Robotics Toolbox的Dobot机械臂运动规划】系列文章是我在学习robotics toolbox中所做工作的记录,方便自己后面复习、改进
软件环境 :
Matlab R2018b 9.5;
Robotics Toolbox 10.4;
Autodesk Inventor Professional 2019.
(3)主要介绍了用Autodesk Inventor做运动可视化。
从这篇文章开始,我开始使用10.4版本的Robotics Toolbox for Matlab。我没有将本文中用到的代码在低版本中测试,10.4具体的更新说明我没有仔细研究过。遇到问题请留言,我们一起讨论解决。
0.Autodesk Inventor简介 Inventor是著名软件AutoCAD的开发公司Autodesk发行的一款用于三维机械设计、仿真、分析等的计算机辅助设计软件,与达索的Solidworks类似。
拟实现的功能是,在前面两篇文章的基础上,仿真时显示三维模型。
Robotics Toolbox for Matlab本身是有SerialLink.plot3d()函数可以显示三维模型的,同时也有人在Simulink中使用一些工具实现同样的功能。
但本人对于Inventor更熟练,以及Inventor的渲染相比Matlab会更好,所以先研究在Inventor中实现仿真。
1.在Inventor中做正运动学驱动 首先,我在Dobot官方论坛上找到了有人分享的三维模型,然后将其稍微简化后装配。
拟通过iLogic功能做正运动学驱动,我在装配需要驱动关节角时使用的是“约束”命令。装配完成后,在参数浏览器中找到各关节角,重命名并设置为关节参数。最后经过一番调试,找到这个装配体中各关节角的运动范围。
文章图片
在工具栏中找到 管理-iLogic-添加表单。在表单编辑器中将左边参数列表中的t1、t2、t3拖到右边的编辑区,然后分别在他们的 行为-编辑控件类型 中设置为滑块,并在 滑块特性 中设置最值。软件会自动生成一个对话框。这个过程与Visual Basic等可视化编程软件的操作类似。
文章图片
效果如下:
2.在Inventor中做逆运动学驱动 拟通过运动仿真功能做逆运动学驱动,我在装配需要驱动关节角时使用的是“联接”命令。因为如果使用前面提到的“约束”命令,运动仿真环境会认为这个关节的角度用户给定的定值常量,这个自由度就被限制了。而使用“联接”命令,在运动仿真环境中会被认为是自由的,并且会自动创建运动类型。
文章图片
如图,运动类型创建完成后,分别在其 右键-特性-自由度-编辑初始条件 中找到各关节角度范围。
于是,在两个软件中,各关节分别在极限位置1和极限位置2的角度如下表:
关节 | 位置1 | 位置2 |
---|---|---|
Matlab L1 | -90 | 90 |
Inventor L1 | -180 | 0 |
Matlab L2 | -90 | -5 |
Inventor L2 | 155 | 70 |
Matlab L3 | 45 | 145 |
Inventor L3 | 46 | 146 |
设Matlab中第i个关节的角度为m(i),Inventor中第i个关节的角度为i(i),于是有:
- i(1) = m(1) - 90
- i(2) = -m(2) + 64
- i(3) = m(3) + 1
%机器人初始化% %定义连杆%
%thetadaalpha
L1 = Link([0143 0-pi/2]);
L2 = Link([00 1350]);
L3 = Link([00 1470]);
%定义关节角范围%
%右中左%
%Matlab-90090%
%Inventor-180-900%
L1.qlim = [deg2rad(-90) deg2rad(90)];
%抬起到竖直L3定位位置 下降到最低 %
%Matlab-90-55-5%
%Inventor 15512070%
L2.qlim = [deg2rad(-90) deg2rad(-5)];
%上升到最高下降到竖直%
%Matlab45145%
%Inventor 46146%
L3.qlim = [deg2rad(45) deg2rad(145)];
L = [L1 L2 L3];
%连接连杆,构建机器人%
dobot = SerialLink(L,'name','Dobot');
%滑块驱动,用于找关节角范围%
%dobot.teach;
%view(135,35);
%运动规划% % Demo:画直线%
T1 = transl(200,120,100);
%起点transformation matrix
T2 = transl(220,-150,100);
%终点transformation matrix
T = ctraj(T1,T2,50);
%ctraj利用匀加速匀减速规划轨迹
Tj = transl(T);
%plot3(Tj(:,1),Tj(:,2),Tj(:,3));
%输出末端轨迹 %当反解的机器人对象的自由度少于6时,要用mask vector进行忽略某个关节自由度%
q = dobot.ikine(T,'mask',[1 1 1 0 0 0]);
%显示机器人%
dobot.plot(q,'trail',{'r','LineWidth',2});
%逆解后处理%
%Matlab to Inventor%
q1 = rad2deg(q);
q1(:,1) = q1(:,1) - 90;
q1(:,2) =-q1(:,2) + 64;
q1(:,3) = q1(:,3) + 0;
将q1中各列分别整理成如下格式的txt文件,用于导入Inventor。
文章图片
分别在各关节运动 右键-特性-自由度-编辑驱动条件 中勾选 启动驱动条件,并选择用位置进行驱动,然后在右边的输入图示器中,依次点击样条曲线、替换当前法则、加载样条曲线,会发现驱动曲线已经变成了我们从Matlab得到的逆解。
文章图片
可以在机械臂末端创建跟踪轨迹,最后播放运动仿真。
文章图片
【matlab|基于Matlab Robotics Toolbox的Dobot机械臂运动规划(3)】以下是运动仿真视频演示(视频中的demo不是画直线)
推荐阅读
- 最优化问题|改进交叉算子的自适应人工蜂群黏菌算法
- matlab|嵌入均衡池的黏菌优化算法
- 最优化问题|加入领导者的黏菌优化算法
- MATLAB图形界面|基于Matlab的汽车出入库计时计费系统
- Matlab旅程|MATLAB的结构化程序设计
- matlab 内存管理 清理内存
- matlab中使用colormap没有效果