matlab|基于Matlab Robotics Toolbox的Dobot机械臂运动规划(3)

【基于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功能做正运动学驱动,我在装配需要驱动关节角时使用的是“约束”命令。装配完成后,在参数浏览器中找到各关节角,重命名并设置为关节参数。最后经过一番调试,找到这个装配体中各关节角的运动范围。
matlab|基于Matlab Robotics Toolbox的Dobot机械臂运动规划(3)
文章图片

在工具栏中找到 管理-iLogic-添加表单。在表单编辑器中将左边参数列表中的t1、t2、t3拖到右边的编辑区,然后分别在他们的 行为-编辑控件类型 中设置为滑块,并在 滑块特性 中设置最值。软件会自动生成一个对话框。这个过程与Visual Basic等可视化编程软件的操作类似。
matlab|基于Matlab Robotics Toolbox的Dobot机械臂运动规划(3)
文章图片

效果如下:



2.在Inventor中做逆运动学驱动 拟通过运动仿真功能做逆运动学驱动,我在装配需要驱动关节角时使用的是“联接”命令。因为如果使用前面提到的“约束”命令,运动仿真环境会认为这个关节的角度用户给定的定值常量,这个自由度就被限制了。而使用“联接”命令,在运动仿真环境中会被认为是自由的,并且会自动创建运动类型。
matlab|基于Matlab Robotics Toolbox的Dobot机械臂运动规划(3)
文章图片

如图,运动类型创建完成后,分别在其 右键-特性-自由度-编辑初始条件 中找到各关节角度范围。
于是,在两个软件中,各关节分别在极限位置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中得到的逆解适用于Inventor。
设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 Robotics Toolbox的Dobot机械臂运动规划(3)
文章图片

分别在各关节运动 右键-特性-自由度-编辑驱动条件 中勾选 启动驱动条件,并选择用位置进行驱动,然后在右边的输入图示器中,依次点击样条曲线、替换当前法则、加载样条曲线,会发现驱动曲线已经变成了我们从Matlab得到的逆解。matlab|基于Matlab Robotics Toolbox的Dobot机械臂运动规划(3)
文章图片

可以在机械臂末端创建跟踪轨迹,最后播放运动仿真。
matlab|基于Matlab Robotics Toolbox的Dobot机械臂运动规划(3)
文章图片

【matlab|基于Matlab Robotics Toolbox的Dobot机械臂运动规划(3)】以下是运动仿真视频演示(视频中的demo不是画直线)



    推荐阅读