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

背景

最近每天混迹于 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

### 回答1: 恭喜你,你可以使用Robotic System Toolbox来查看机器人参数指令。Robotic System Toolbox提供了一组用于设计控制、仿真和部署机器人的函数和库。它提供了一组函数,可以帮助你更好地实现你的想法。 ### 回答2: Robotic System ToolboxMATLAB的一个工具箱,用于开发和分析机器人应用程序。要查看机器人的参数,可以使用Robotic System Toolbox中的函数和工具。 首先,可以使用`robotics.RigidBodyTree`函数创建一个刚体树对象,该对象描述了机器人的运动学和动力学。在创建刚体树对象时,可以提供机器人的连接链信息,例如关节类型、坐标系和转动轴。 接下来,可以使用刚体树对象的属性和方法来查看和修改机器人的参数。例如,可以使用`BodyNames`属性获得机器人的所有刚体名称,使用`getWaypoints`方法获得机器人的所有关节位置。 可以使用`getBody`方法获取特定刚体的属性,例如坐标系和质量。使用`getJoint`方法获取特定关节的属性,例如关节类型、转动轴和限制。 还可以使用`show`方法将机器人模型可视化,以便更直观地查看机器人的参数。该方法可以显示机器人的关节、连接链和坐标系等信息。 此外,还可以使用`robotpropertydlg`函数打开一个交互式对话框,用于查看和修改机器人的参数。该对话框提供了一个图形界面,可以方便地浏览和编辑机器人的各种属性,例如关节类型、转动轴和关节限制等。 综上所述,Robotic System Toolbox提供了多种途径来查看机器人的参数,包括使用刚体树对象的属性和方法,使用`show`方法可视化机器人模型,以及使用`robotpropertydlg`函数的交互式对话框。这些功能使得用户可以方便地了解和调整机器人的各项参数。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值