转载请注明出处,谢谢
原创作者:MingruiYU
原创链接:https://www.cnblogs.com/MingruiYu/p/12305851.html
本文要点:
对于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 是 Simulink 的一个模块,而 Simscape Multibody 又是 Simscape 的一个模块。其关系如下:(官方介绍)
简言之,Simscape 是以非常直观的形式对物理系统进行仿真的,而 Simscape Multibody 是其中专门用来对机械系统进行仿真。官方有一个视频简介,可以让你很直观地了解 Simscape Multibody 的作用。我感觉,它区别于 Simscape 基础模块的一个重要内容就是,它可以在三维空间进行仿真,并且可以给出渲染后的三维系统。
注: 我现在使用的 MATLAB 版本是 R2019b(最新版),在我学习的过程中发现,像 Simscape Multibody 这种比较新的工具模块,更新是比较多的。我之前用的是 R2018a,发现其中很多内容和最新的官方文档都不完全一样(例如选项的位置,机械部件的种类等)。所以,在大家学习的过程中,非常建议将自己的 MATLAB 版本更新至与官方文档一致。
那么,如何来学习 Simscape Multibody 呢?我个人认为,以下的入门学习流程是比较合适的:
既然 Simscape Multibody 是 Simscape 的一个子模块,那当然要先了解一下 Simscape 了。建议通过官方文档中的一个例子来了解:Essential Steps for Constructing a Physical Model。这个例子讲了如何建立一个质点-弹簧-阻尼(Mass-Spring-Damper)系统,并对其进行 PID 控制。这个例子非常详细,即使之前完全没有用过 Simulink,也可以根据教程进行操作,非常适合用来入门,通过例子来对 Simscape 进行形象直观的了解。
Simscape 基础模块大概了解一下就可以了,下面直接进入对于 Simscape Multibody 的学习。还是推荐通过官方文档中的例子来了解:Getting Started with Simscape Multibody。这个例子分四步介绍了如何从零开始,建立一个单摆的仿真模型。
通过学习该示例教程,可以简单体会 Simscape Multibody 的思想,以及建模仿真的基本流程。以后遇到更复杂的模型,都是在这种简单模型的基础上,一点点叠加构成的。所以掌握好这个例子,就可以为之后学习更复杂的例子,打下很好的基础。
注: 在跟随该教程建立了一个单摆的仿真模型后,我建议,可以直接在该模型的基础上,自己动手实践,将其升级为一个双摆模型,并进行仿真实验。以此简单检验自己的掌握程度,锻炼自己的操作水平。
除了 Getting Started 之外, Simscape Multibody 的官方文档 还包括很多很多的内容。但是我个人感觉,其它的内容比较细致,也比较杂。按顺序阅读是不太现实的。建议等到需要用什么功能、什么模块的时候,再按需求查阅,进行学习。在官方文档页面的右上角搜索栏,输入需要搜索的内容,可以很方便的检索到相关的文档。
官方文档的阅读是需要不断进行的,但不动手实践,没有示例支持,学习官方文档是艰涩的。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)。
系统的仿真,必然是需要微分方程的求解的。在 Simulink 中, 微分方程的求解是自动完成的,但是需要自己选择合适的求解器(Solver),并设置合适的求解器参数。
关于如何选择合适的求解器,参考文档:(https://ww2.mathworks.cn/help/simulink/gui/solver.html)。
一般来说:
持续学习和更新中 ……
原文:https://www.cnblogs.com/MingruiYu/p/12305851.html