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: 可让您在 Simulink 环境中迅速创建物理系统的模型。通过 Simscape,您可以基于物理连接直接相连模块框图建立物理组件模型。通过将基础组件依照原理图装配,为电机、桥式整流器、液压致动器和制冷系统等系统建模。Simscape 附加产品提供了更多复杂组件和分析功能。
简言之,Simscape 是以非常直观的形式对物理系统进行仿真的,而 Simscape Multibody 是其中专门用来对机械系统进行仿真。官方有一个视频简介,可以让你很直观地了解 Simscape Multibody 的作用。我感觉,它区别于 Simscape 基础模块的一个重要内容就是,它可以在三维空间进行仿真,并且可以给出渲染后的三维系统。
注: 我现在使用的 MATLAB 版本是 R2019b(最新版),在我学习的过程中发现,像 Simscape Multibody 这种比较新的工具模块,更新是比较多的。我之前用的是 R2018a,发现其中很多内容和最新的官方文档都不完全一样(例如选项的位置,机械部件的种类等)。所以,在大家学习的过程中,非常建议将自己的 MATLAB 版本更新至于官方文档一致。
Simscape Multibody 入门学习
那么,如何来学习 Simscape Multibody 呢?我个人认为,以下的入门学习流程是比较合适的:
- 通过官方文档中的例子初步了解 Simscape
- 通过官方文档中的例子初步了解 Simscape Multibody
- (根据需要,阅读其它的官方文档)
- 通过官方提供的 examples 进行学习
通过例子初步了解 Simscape
既然 Simscape Multibody 是 Simscape 的一个子模块,那当然要先了解一下 Simscape 了。建议通过官方文档中的一个例子来了解:Essential Steps for Constructing a Physical Model。这个例子讲了如何建立一个质点-弹簧-阻尼(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)。
一般来说:
- 首先尝试 ode45
- ode45 失败或低效,则尝试 ode15s(最适合刚性问题)
- ode15s 难以处理的问题,可尝试 ode23t(容差较宽松的条件下,更高效)
持续学习和更新中 ……
Simscape Multibody 教程 —— 入门学习的更多相关文章
- MyBatis入门学习教程-使用MyBatis对表执行CRUD操作
上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...
- 【特别推荐】Node.js 入门教程和学习资源汇总
这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...
- Node.js 入门教程和学习资源汇总
这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...
- Linux入门学习教程:虚拟机体验之KVM篇
本文中可以学习到的命令: 1. aptitude 是apt-get 不会产生垃圾的版本 2. dpkg -L virtualbox 显示属于该包的文件 lsmod | grep kvmfi ...
- Nginx 入门学习教程
昨天听一个前同事说他们公司老大让他去研究下关于Nginx 方面的知识,我想了下Nginx 在如今的开发技术栈中应该会很大可能会用到,所以写篇博文记录总结下官网学习教程吧. 1. 什么是Nginx? 我 ...
- PHP 入门学习教程及进阶(源于知乎网友的智慧)
思过崖历程: 自学的动机.自学的技巧.自学的目标三个方面描述学习PHP的经历 一.自学的动机: 一定要有浓厚的兴趣,兴趣是最后的老师,可以在你迷茫的时候不断地支撑着你走下去. 自学不是为了工作,不是为 ...
- 【Python教程】《零基础入门学习Python》(小甲鱼)
[Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609
- PyQt4入门学习笔记(一)
PyQt4入门学习笔记(一) 一直没有找到什么好的pyqt4的教程,偶然在google上搜到一篇不错的入门文档,翻译过来,留以后再复习. 原始链接如下: http://zetcode.com/gui/ ...
- opengl入门学习
OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...
随机推荐
- requests-html库render方法的使用
一.render的使用 from requests_html import HTMLSession session =HTMLSession() response = session.get('htt ...
- 1088 三人行 (20分)C语言
子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲的能力值的 2 个数字调换位置就是乙的能 ...
- 注解@ConfigurationProperties使用方法
注解@ConfigurationProperties使用方法 前言 最近在思考使用java config的方式进行配置,java config是指基于java配置的spring.传统的Spring一般 ...
- VS Code配置C/C++环境
VS Code配置C/C++环境 一.下载和安装VS Code 1.访问VS Code官网下载安装包 2.安装VS Code 3. 安装后, 打开VS Code是英文,按住Ctrl+shift+x进入 ...
- C语言---总结
基础 程序结构是三种: 顺序结构.选择结构(分支结构).循环结构. 读程序都要从 main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数. 计算机的数据 ...
- es lucene搜索及聚合流程源码分析
本文以TermQuery,GlobalOrdinalsStringTermsAggregator为例,通过代码,分析es,lucene搜索及聚合流程.1:协调节点收到请求后,将search任务发到相关 ...
- 关于Mach-O类型文件那点事
Mach-O文件简介 Mach-O是一种文件格式,是Mach Object文件格式的缩写. 它通常应用于可执行文件,目标代码,动态库,内核转储等中. Mach-O作为大部分基于Mach核心的操 ...
- JavaScript面向对象 实例与原型
JavaScript 面向对象 和 C# 不太一样,js 的对象是继承自原型的如下: 首先创建一个 js 实例 new function function f () {} 这个函数 会继承 Func ...
- cogs 1963. [HAOI 2015] 树上操作 树链剖分+线段树
1963. [HAOI 2015] 树上操作 ★★★☆ 输入文件:haoi2015_t2.in 输出文件:haoi2015_t2.out 简单对比时间限制:1 s 内存限制:256 M ...
- 6441. 【GDOI2020模拟01.17】小 ω 维护序列
Description Input Output 输出到标准输出流中. 若干行,对于每个操作 1 和操作 5,输出一个数表示答案. Sample Input Sample Input1 5 8 1 2 ...