本文的讨论对象仅局限于刚体模型
Matlab建立机器人模型主要有两个方面(当然不排除有其他的,我只说我知道的):
- Rigidbody tree 坐标系模型
- Simsacpe 物理模型
文章图片
而 Simscape 模型主要是模型可视化,方便你仿真时看到模型是如何响应和如何运动的。我个人目前的使用习惯是结合两个建模方法,就是说先建好rigidbody tree模型以能够使用自带函数,再得到Simscape模型来可视化仿真。在仿真的时候前面正逆运动学,动力学算法部分用 rigidbody tree 模型结合matlab函数得到轨迹信号,控制信号等等,接着在模型部分用 Simscape 模型来代表我们实际的机器人模型接收控制信号进行仿真。
那么问题来了:
- 我怎么得到 rigidbody tree模型?
- 我又怎么得到simsacpe模型?
转换方向有这几种:
- solidworks 机械模型直接转换成 simscape 模型,想了解的可以看这个文章 《如何把solidworks模型转换成simscape模型》
- solidworks转换成urdf模型,再从urdf模型分别转换成rigidbody tree模型以及simscape模型。想了解的可以看《如何把cad文件转化成urdf》,以及《如何把urdf导入到matlab》
- 方法1转换出来的模型没法配置关节连杆之间的关系,导出来的结构很玄学。
- 方法1导出来的模型里面的各种参数不是用数字表示,而是用变量表示的。虽然方便同步修改同名参数,但是很不直观。
- 方法2导出来的 simscape 模型各种参数直接用数字表示,比较直观方便修改。
- 方法1并没有给我们rigidbody tree模型,运动学和动力学等等方程需要你自己提前算好才能去部署,另外部署起来也不容易
- 方法2可以同时获得rigidbody tree模型和simscape模型,且这两个模型之间坐标关系是对应的。rigidbody tree模型可以让我们方便的使用自带机器人学工具模块
推荐阅读
- Matlab - Solidworks 机器人模型联合仿真(2)如何把CAD文件转化成URDF文件
- Matlab - Solidworks 机器人模型联合仿真(3)如何把URDF文件导入到Matlab
- Matlab - Solidworks 机器人模型联合仿真(5)—— 给模型添加摩擦力