Matlab - Solidworks 机器人模型联合仿真(1)—— 浅谈Matlab机器人建模思路

本文的讨论对象仅局限于刚体模型
Matlab建立机器人模型主要有两个方面(当然不排除有其他的,我只说我知道的):

  1. Rigidbody tree 坐标系模型
  2. Simsacpe 物理模型
建立rigidbody tree模型主要是为了能够使用matlab自带的一些机器人函数,减少我们的工作量,因为这个建模方法本质上是定义好了机器人内部的坐标系关系。比如说Matlab 2019b里面就自带了帮你计算机器人FK,IK以及动力学方程的函数。这样的话你只需要知道如何正确地使用这些函数,你就不需要自己推导那些复杂的正逆运动学动力学方程,直接开始仿真。下图展示了Matlab robotics system toolbox里面的一些功能模块
Matlab - Solidworks 机器人模型联合仿真(1)—— 浅谈Matlab机器人建模思路
文章图片

而 Simscape 模型主要是模型可视化,方便你仿真时看到模型是如何响应和如何运动的。我个人目前的使用习惯是结合两个建模方法,就是说先建好rigidbody tree模型以能够使用自带函数,再得到Simscape模型来可视化仿真。在仿真的时候前面正逆运动学,动力学算法部分用 rigidbody tree 模型结合matlab函数得到轨迹信号,控制信号等等,接着在模型部分用 Simscape 模型来代表我们实际的机器人模型接收控制信号进行仿真。
那么问题来了:
  1. 我怎么得到 rigidbody tree模型?
  2. 我又怎么得到simsacpe模型?
你要是头比较铁,rigidbody tree 模型和 simscape 模型都可以从最基本的坐标系,基本结构块生建出来。但我相信没有人会这么做。Matlab 和 solidworks 提供了很方便的模型转化功能。方便我们通过solidworks机械模型来转换出我们需要的matlab模型。
转换方向有这几种:
  1. solidworks 机械模型直接转换成 simscape 模型,想了解的可以看这个文章 《如何把solidworks模型转换成simscape模型》
  2. solidworks转换成urdf模型,再从urdf模型分别转换成rigidbody tree模型以及simscape模型。想了解的可以看《如何把cad文件转化成urdf》,以及《如何把urdf导入到matlab》
【Matlab - Solidworks 机器人模型联合仿真(1)—— 浅谈Matlab机器人建模思路】建议直接采用方法2的转换方式,原因有:
  • 方法1转换出来的模型没法配置关节连杆之间的关系,导出来的结构很玄学。
  • 方法1导出来的模型里面的各种参数不是用数字表示,而是用变量表示的。虽然方便同步修改同名参数,但是很不直观。
  • 方法2导出来的 simscape 模型各种参数直接用数字表示,比较直观方便修改。
  • 方法1并没有给我们rigidbody tree模型,运动学和动力学等等方程需要你自己提前算好才能去部署,另外部署起来也不容易
  • 方法2可以同时获得rigidbody tree模型和simscape模型,且这两个模型之间坐标关系是对应的。rigidbody tree模型可以让我们方便的使用自带机器人学工具模块

    推荐阅读