从URDF文件到可执行应用程序--基于Matlab工具箱 Robotic System Toolbox(RST)和 Compiler Runtime(MCR)的机器人可视化界面

从URDF文件到第三方独立可执行应用程序exe

  • 背景
  • 方案
  • 涉及到的软件、工具、平台、语言
  • 一些关键点
  • 后续
  • 结束语
  • 参考

背景

最近每天混迹于 Mathworks 公司的视频研讨、问答、file exchange板块,此外CSDN也有一些关于机器人运动可视化的博文,都是大家辛勤的实践记录,看着大家一路的历程,自己也决定将实现过程记录下来,一是自我整理、记录、提醒;二是希望正在做类似工作的人一起有个参考,相互学习吧!
前期比对过Adams、Webots、Simulink、Grep、Gazebo等多款可以和Matlab/Simulink进行联合仿真的机器人仿真平台[1][2],最终选择了入坑Matlab/Simulink,主要原因就是从运动学到动力学、到轨迹规划、运动控制,都可以在一个环境下完成。而且,2005年RST工具箱[^3] 推出至今,MathWorks官网已经有了很多工业机械臂、协作机器人、足式移动机器人方面的完整项目源码[^4],对于初学者而言,使用Matlab来入门机器人运动算法,周期相对短,更容易快速将算法部署到机器人,少受一些锤(生活就是一个缓慢受锤的过程-王小波)。
另外,需指出,RST不同于Peter Corke 的Robotics Toolbox,RT是一个第三方插件,需要单独下载安装,详情参见[^5]petercorke.com,是入门机器人学的好工具,CSDN上面有很多简单的入门实例,读者可以拿来练习。个人觉得该工具箱相对简单且不开源,其主要作用还是用来对比检查自己设计的运动学以及动力学模型的正确性。此外,Peter Corke还写了一本书,可以参照该书学习该手册,读者自行了解去吧,而RST提供了Matlab/Simulink与机器人操作系统Ros的接口,对于想循序渐进入门Ros/Gazebo[^6]的初学者也是一大利器。
东扯西拉说了这么多,言归正传,本人想要基于Matlab,整一个机械臂运动学(正逆运动学C与Matlab混合编程)、工作空间可视化、动力学(混合编程)、轨迹规划(电机加减速算法,轨迹插补)、运动控制(位置控制、力矩控制、拖动示教等)等基本算法实现的轻量级可视化界面,作为机械臂上位机软件(收发指令,控制实物机械臂的运动)的一个补充。大体思路如此,今后会根据进度,不定期更新,目前实现了UR5正逆运动学、六自由度并联6RUU正逆运动学、UR5三维模型到URDF文件到Matlab可视化、七段S加减速、直线插补、圆弧插补。
本篇要实现的功能如下:从URDF文件到独立可执行应用程序APP,即,对于给定的机械臂三维模型(Solidworks等),主要运用Matlab工具箱RST和MCR(Compiler Runtime),以及Matlab GUI 、UDP通讯等,实现上位机数据监测与机器人运动可视化。主要要求如下:
一)可独立于Matlab环境运行;
二)TCP/UDP通讯实现对真实机器人运动状态的实时监测;
三)基本的正逆运动学建模、动力学建模、轨迹规划、运动控制功能;
四)后期可以加入Simulink和Ros/Gazebo接口;
五)任意给定机器人三维模型,就能得到相应的可视化模型,并且尽量逼真,不是简单地棍棒模型、骨架模型,或者只有空间坐标系,而且能够在可视化界面描绘运动曲线

方案

首先通过Solidwoks生成机器人相应的URDF描述文件(参见另外一篇博文,以UR5为例进行分析并实现,目前还没有时间进行整理);然后在Matlab环境下使用工具箱RST的importrobot函数和show函数显示到figure并获取句柄;第三步,Matlab里使用guide方式设计GUI,并将第二步的句柄设置到GUI里的handles.axes,使用GUI基本命令patch函数和line3函数初始化机器人模型(由于URDF不支持并联机构,参见WIKI:,这里仅对并联机械臂采取这种模型可视化方案),使用set函数和drawnow函数进行实时更新UDP数据(接受、解析、转换成绘图指令);最后一步,使用工具箱 APP package 生成相应的.exe应用程序,这里要注意配置Matlab编译环境(参考),使用了自带的编译器****,如果要在其他没有安装Matlab的电脑上运行,需要安装链接库Matlab RunTime (最好手动修改一下环境变量)(参考https://ww2.mathworks.cn/products/compiler/matlab-runtime.html)。然后就大功告成啦。
上述所有步骤,除了第三步,都可以在CSDN里面找到详尽的操作过程,这里不再赘述。

涉及到的软件、工具、平台、语言

一些关键点

后续

完善建立好的正逆运动学模型、动力学模型、轨迹规划(直线圆弧);
完善可视化界面轨迹显示;
完善机器人运动参数plot(位置,速度加速度这些);
优化,一次更新至少需要0.2s,显然太慢,会导致界面出现卡顿,运动不流畅。

结束语

Matlab很强大;
学会利用Mathworks官网上面的一些模块(主要有:file exchange(项目源码), answers(技术答疑,看别人提出的类似问题), example(项目源码)),stackexchange(技术答疑) 网站也不错;
学会,英文提问;
Matlab最基本操作问度娘,工具箱不了解不会用看自带的Help 文档,里面有详尽的案例,度娘就靠边了。

参考

[^1]知乎话题:V-Rep、Open HRP、Gazebo、Webots这四种机器人仿真软件各自有何特点和优缺点?
[^2]CSDN博客:ROS数据可视化工具Rviz和三维物理引擎机器人仿真工具V-rep Morse Gazebo Webots USARSimRos等概述-By zhangrelay
[^3]Matlab 命令行窗口输入 doc:Manipulator Algorithms -》Examples
[^4]
[^5]Peter Corke

你可能感兴趣的:(个人原创,机械臂,URDF,可视化,独立应用程序,Matlab,APP)