【基于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中得到的逆解适用于Inventor。

设Matlab中第i个关节的角度为m(i),Inventor中第i个关节的角度为i(i),于是有:

  • i(1) = m(1) - 90
  • i(2) = -m(2) + 64
  • i(3) = m(3) + 1

从构建机器人,到输出逆解,代码如下:

 %机器人初始化%%定义连杆%%        theta  d  a  alphaL1 = Link([0   143 0  -pi/2]);L2 = Link([0    0 135   0]);L3 = Link([0    0 147   0]);%定义关节角范围%%          右     中  左  %%Matlab   -90     0      90  %%Inventor-180   -90       0     %L1.qlim = [deg2rad(-90) deg2rad(90)];%       抬起到竖直  L3定位位置 下降到最低 %%Matlab   -90         -55        -5     %%Inventor 155         120        70     %L2.qlim = [deg2rad(-90) deg2rad(-5)];%     上升到最高      下降到竖直  %%Matlab   45            145     %%Inventor 46            146     %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 matrixT2 = transl(220,-150,100);  %终点transformation matrixT = 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得到的逆解。
可以在机械臂末端创建跟踪轨迹,最后播放运动仿真。

以下是运动仿真视频演示(视频中的demo不是画直线)

基于Matlab Robotics Toolbox的Dobot机械臂运动规划(3)相关推荐

  1. 基于Matlab Robotics Toolbox的Dobot机械臂运动规划(4)

    [基于Matlab Robotics Toolbox的Dobot机械臂运动规划]系列文章是我在学习robotics toolbox中所做工作的记录,方便自己后面复习.改进 软件环境 : Matlab ...

  2. 基于Matlab Robotics Toolbox的Dobot机械臂运动规划(1)

    [基于Matlab Robotics Toolbox的Dobot机械臂运动规划] 系列文章是我在学习robotics toolbox中所做工作的记录,方便自己后面复习.改进. 基于Matlab R20 ...

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

    [基于Matlab Robotics Toolbox的Dobot机械臂运动规划]系列文章是我在学习robotics toolbox中所做工作的记录,方便自己后面复习.改进. 基于Matlab R201 ...

  4. 基于matlab的mk2三自由度机械臂轨迹规划及控制器仿真设计

    基于matlab的mk2三自由度机械臂轨迹规划及控制器仿真设计(报告+ppt) 摘 要:本文的研究对象为EEZYbotARM MK2三自由度机械臂,分析了其机械结构,建立D-H参数表,同时在MATLA ...

  5. 实例介绍机械臂运动规划及前沿研究方向

    origin: https://www.leiphone.com/news/201703/0JJyEB2eqdRe9XS8.html 雷锋网新智造按:运动规划 (Motion Planning) ,有 ...

  6. MATLAB算法实战应用案例精讲-【人工智能】基于机器视觉的机器人及机械臂运动规划

    目录 前言 几个高频面试题目 移动机器人的移动和机械臂的路径规划之间的异同

  7. MATLAB算法实战应用案例精讲-【人工智能】基于机器视觉的机器人及机械臂运动规划(补充篇)

    目录 前言 几个高频面试题目 机器人抓取时怎么定位的?用什么传感器来检测? 相机标定

  8. 机械臂运动空间的计算_机械臂运动规划(Motion Planning)

    写作说明: 本文主要介绍一下机械臂的运动规划(Motion Planning on Manipulators).之所以写这篇文章,是因为受到人邀请回答相应问题,而刚好最近在学<Modern Ro ...

  9. 使用MoveIt配置机械臂运动规划-1.导入URDF文件

    以gluon6L3机械臂为模型来进行操作,已经默认导出urdf文件,存在gluon_6l3_description文件夹下. 一.配置rviz 1.将gluon_6l3_description文件夹移 ...

最新文章

  1. 越心虚越藏着掖着,越藏越掖越脱节
  2. Linux管道用法示例
  3. 程序2:word count
  4. onresize事件会被多次触发_如何修复移动浏览器上 touchend 事件不触发的bug
  5. 《计算机应用基础实训教程》,《计算机应用基础实训教程》修改稿(文).doc
  6. java序列化与反序列化总结
  7. apache+tomcat+jk配置负载均衡
  8. rds基于什么开发_玩物得志: 基于DataWorks+MaxCompute+MC-Hologres 构建大数据平台
  9. 普洛斯库列科夫 线性代数习题集_转载)科大学长对数学系学弟学妹的忠告
  10. VS2015编译eXosip2-4.1.0 osip2-4.1.0
  11. 小米路由器3无线网连接到服务器,小米路由器3无线中继(桥接)怎么设置?
  12. 主机电源供电端口-24PIN
  13. 锁定计算机后等于睡眠吗,详细教你电脑休眠和睡眠的区别
  14. 为什么程序员怕改需求?
  15. java随机生成26个字母_js随机生成26个大小写字母
  16. Vue项目引入animated
  17. 数学之美-读书笔记6-10章
  18. 企业分公司与总部之间的网络连通高效方案
  19. 【AI视野·今日CV 计算机视觉论文速览 第182期】Fri, 10 Apr 2020
  20. 整理Eclipse常用快捷键

热门文章

  1. A 0.18um CMOS SOC for a 100-m-Range 10-Frame/s 200x96 pixel time-of-flight Depth Sensor翻译
  2. 使用DOM4J解析XML文档,输出所有学员信息和添加学生信息
  3. 用户登录 JWT TOKEN
  4. leaflet-自定义底图
  5. C语言学习基础(day06)(达内)
  6. Android Studio打包APK安装失败:应用是非正式版本,当前设备不支持安装
  7. 在Git上如何强推代码规范
  8. Winform发布wss
  9. 【TSP问题】基于蜜蜂算法求解旅行商问题附matlab代码
  10. Jetpack:Lifecycle 和 LiveData