Simscape Multibody 教程 —— 入门学习

Simscape Multibody 教程 —— 入门学习,第1张

Simscape Multibody 教程 —— 入门学习 写在前面

本文要点:

  • Simscape Multibody 简介
  • Simscape Multibody 入门学习的推荐学习材料和学习顺序
  • 建模仿真过程中的重要知识
    • 模型的参数设置(Model Workspaces)
    • 模型求解器(Solver)的选择

对于MATLAB系列的所有产品,个人认为最好的学习材料都是 MathWorks 公司提供的官方文档,非常清晰,也非常详尽。


本文的大部分内容也都是基于官方文档,我也极力推荐大家以阅读官方文档为先(阅读英文版更好)。


但个人学习过程中感觉学习官方文档可能存在的问题是:文档特别多,不知道该从哪个页面入手,学习顺序应该怎样。


所以在这里,我会对我探索后觉得比较合适的阅读学习顺序进行梳理。


我开始学习使用Simscape Multibody的契机是最近要做一个关于线状柔性体 (Deformable Linear Object) *** 作控制的项目,需要首先对柔性体进行物理建模。


物理建模首选当然是找一找有没有现成的仿真平台可以使用,经过调研和查找之后,发现在 Simulink 环境中有一个叫作 Simscape 的模块,其中的 Simscape Multibody 模块似乎可以达成这个目的。


于是开始学习 Simscape 和 Simscape Multibody,并探索如何使用它对线状柔性体进行简单的仿真。


现在这个仿真的 demo 已经基本做出来了,如何对线状柔性体进行仿真我将会在以后的文章中进行介绍,本文用来介绍一下如何入门 Simscape Multibody 模块。


对于Simulink我就不过多介绍了,进入大学,一定会使用到 MATLAB ,也一定会听说过 Simulink。


Simulink 是一个超级超级强大的仿真平台,除了生孩子啥都能干(笑)。


对于 Simulink 的学习,首先建议阅读 [Simulink 官方文档](https://ww2.mathworks.cn/help/simulink/index.html),另外如果想深入学习 Simulink 作为以后安身立命的家伙事儿的话,可以阅读《Simulink仿真及代码生成技术入门到精通》书籍。


Simscape Multibody 简介

Simscape 是 Simulink 的一个模块,而 Simscape Multibody 又是 Simscape 的一个模块。


其关系如下:(官方介绍)

  • Simulink一个模块图环境,用于多域仿真以及基于模型的设计。


    它支持系统级设计、仿真、自动代码生成以及嵌入式系统的连续测试和验证。


    Simulink 提供图形编辑器、可自定义的模块库以及求解器,能够进行动态系统建模和仿真。


    Simulink 与 MATLAB 相集成,这样您不仅能够在 Simulink 中将 MATLAB 算法融入模型,还能将仿真结果导出至 MATLAB 做进一步分析。


    • Simscape: 可让您在 Simulink 环境中迅速创建物理系统的模型。


      通过 Simscape,您可以基于物理连接直接相连模块框图建立物理组件模型。


      通过将基础组件依照原理图装配,为电机、桥式整流器、液压致动器和制冷系统等系统建模。


      Simscape 附加产品提供了更多复杂组件和分析功能。


      • Simscape Multibody: (前身为 SimMechanics)提供了适用于 3D 机械系统(例如机器人、汽车悬架、建筑设备和飞机起落架)的多体仿真环境。


        您可以使用表示刚体、关节、约束、力元件和传感器的模块对多体系统进行建模。


        Simscape Multibody 会建立整个机械系统的运动方程并进行求解。


        您可将完整的 CAD 装配件(包括质量、惯性、关节、约束和 3D 几何结构)导入到模型。


        您可在自动生成的 3D 动画中查看系统动态。


        Simscape Multibody 可帮助您开发控制系统并测试系统级性能。


简言之,Simscape 是以非常直观的形式对物理系统进行仿真的,而 Simscape Multibody 是其中专门用来对机械系统进行仿真。


官方有一个视频简介,可以让你很直观地了解 Simscape Multibody 的作用。


我感觉,它区别于 Simscape 基础模块的一个重要内容就是,它可以在三维空间进行仿真,并且可以给出渲染后的三维系统。


注: 我现在使用的 MATLAB 版本是 R2019b(最新版),在我学习的过程中发现,像 Simscape Multibody 这种比较新的工具模块,更新是比较多的。


我之前用的是 R2018a,发现其中很多内容和最新的官方文档都不完全一样(例如选项的位置,机械部件的种类等)。


所以,在大家学习的过程中,非常建议将自己的 MATLAB 版本更新至于官方文档一致。


Simscape Multibody 入门学习

那么,如何来学习 Simscape Multibody 呢?我个人认为,以下的入门学习流程是比较合适的:

  1. 通过官方文档中的例子初步了解 Simscape
  2. 通过官方文档中的例子初步了解 Simscape Multibody
  3. (根据需要,阅读其它的官方文档)
  4. 通过官方提供的 examples 进行学习
通过例子初步了解 Simscape

既然 Simscape Multibody 是 Simscape 的一个子模块,那当然要先了解一下 Simscape 了。


建议通过官方文档中的一个例子来了解:Essential Steps for Constructing a Physical Model。


这个例子讲了如何建立一个质点-d簧-阻尼(Mass-Spring-Damper)系统,并对其进行 PID 控制。


这个例子非常详细,即使之前完全没有用过 Simulink,也可以根据教程进行 *** 作,非常适合用来入门,通过例子来对 Simscape 进行形象直观的了解。


通过例子初步了解 Simscape Multibody

Simscape 基础模块大概了解一下就可以了,下面直接进入对于 Simscape Multibody 的学习。


还是推荐通过官方文档中的例子来了解:Getting Started with Simscape Multibody。


这个例子分四步介绍了如何从零开始,建立一个单摆的仿真模型。


通过学习该示例教程,可以简单体会 Simscape Multibody 的思想,以及建模仿真的基本流程。


以后遇到更复杂的模型,都是在这种简单模型的基础上,一点点叠加构成的。


所以掌握好这个例子,就可以为之后学习更复杂的例子,打下很好的基础。


注: 在跟随该教程建立了一个单摆的仿真模型后,我建议,可以直接在该模型的基础上,自己动手实践,将其升级为一个双摆模型,并进行仿真实验。


以此简单检验自己的掌握程度,锻炼自己的 *** 作水平。


(根据需要,阅读其它的官方文档)

除了 Getting Started 之外, Simscape Multibody 的官方文档 还包括很多很多的内容。


但是我个人感觉,其它的内容比较细致,也比较杂。


按顺序阅读是不太现实的。


建议等到需要用什么功能、什么模块的时候,再按需求查阅,进行学习。


在官方文档页面的右上角搜索栏,输入需要搜索的内容,可以很方便的检索到相关的文档。


通过官方提供的 examples 进行学习

官方文档的阅读是需要不断进行的,但不动手实践,没有示例支持,学习官方文档是艰涩的。


Simscape Multibody 提供了很多个 Examples,个人感觉,通过这些已建立好的模型进行学习,是特别直观和有效的(就好像刷点题之后,对概念的理解会更加深入)。


点进某一个模型后,有对这个模型的简单介绍。


再点击页面右上角View MATLAB Command图标,会显示该模型的命令,在MATLAB软件的命令行窗口中输入该命令,就可以直接大概该模型的Simulink界面。


对官方模型的每一个细节都好好研究一番,对建立自己的模型是非常有帮助的。


同时,Examples 中的模型的复杂程度也是由简入繁,适合循序渐进的学习。


后面的模型已经很复杂了,大家可以根据自己的情况,研究到自己觉得够用了就可以了。


自此,对于 Simscape Multibody 的入门学习基本就完成了。


我学完这些内容大概用了两天时间(因为在探索怎么学,所以效率较低),相信大家的学习速度肯定会快很多。


建模仿真过程中的重要知识

下面记录一些自己在学习建模仿真过程中,觉得比较基础也比较重要,有必要展开了详细学习的内容。


我也是刚刚开始探索和学习,这也是我掌握程度不断提升的过程。


这些知识的列举顺序,大概就是我在学习和实践中遇到这些问题的顺序,所以对大家应该也有些参考价值。


依然是以官方文档为最高参考资料。


模型中的参数设置

模型中肯定少不了参数,那么怎么对模型中的参数进行设置(或者说,模型中的参数是从哪里读取的)呢?

模型中的参数是存储在 model workspaces 中的。


就像 MATLAB 有工作区(Base Workspaces)一样,每一个模型也有自己的工作区。


model workspaces 的相关介绍: (https://ww2.mathworks.cn/help/simulink/ug/using-model-workspaces.html?lang=en),页面下方的 Related topics 中有更详细的介绍。


关于如何更改 model workspaces 中存储的 data,参考文档:(https://ww2.mathworks.cn/help/simulink/ug/change-model-workspace-data.html?lang=en)。


求解器(Solver)的设置

系统的仿真,必然是需要微分方程的求解的。


在 Simulink 中, 微分方程的求解是自动完成的,但是需要自己选择合适的求解器(Solver),并设置合适的求解器参数。


关于如何选择合适的求解器,参考文档:(https://ww2.mathworks.cn/help/simulink/gui/solver.html)。


一般来说:

  1. 首先尝试 ode45
  2. ode45 失败或低效,则尝试 ode15s(最适合刚性问题)
  3. ode15s 难以处理的问题,可尝试 ode23t(容差较宽松的条件下,更高效)

持续学习和更新中 ……

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/586012.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存