Simscape Multibody提供了一个3D机械系统的仿真环境,可以通过物体、关节、约束、力和传感器模块组合的方式描述对象。此外,还可以将搭建的模型转换为C\C++ 代码以在其他环境中进行仿真。本文将介绍 使用Simscape Multibody搭建两轮车模型。
1 常用模块
Multibody提供的模块分为上图中这7类。首先介绍Body Elements 中的Solid模块。solid提供了一个可视的物体用来展示我们所建模型的外观。
实际解算过程中solid是一个具有质量的质点,并不具有体积。如果直接将一个球体和一个立方体相连,他们会solid与外界几何关系需要我们通过坐标转换来实现。
使用Frames and Transforms中的Rigid Transform 模块可以用旋转平移关系将两个Solid模块相连,形成一个整体。
使用Rigid Transform连接的模块直接无法产生相对运动。如果模块间有相对运动则需用关节(Joints)相连。R2018b中multibody中已经包含了17种关节。Joints模块不仅约束所连两个模块的运动,还可以约束制定自由度上的力、位置、速度等。此外,Joints还可以测量两个模块间的相对关系。详情可以参看文章最后的实例。
2 新建工程
从全新的simlink项目建立一个Simscape Multibody项目有很多基础设置和基础模块需要操作,所以开始可以直接在matlab中输入smnew打开一个示例空白程序。
3 接触力
multibody中很难描述两个物体间的接触,这里使用Steve Miller编写的Simscape Multibody Contact Forces Library。从官网下载完解压后运行其中的startup_Contact_Forces.m。运行后会自动打开一个示例程序和帮助文档,之后就可以在Simulink Library Browser中找到。之后每次用到这个库的资源都需要重新运行startup_Contact_Forces.m。
4 实例
我的github中mcar_simulink中包含了倒立摆、两轮车等几个multibody模型,可以用作参考。相对于官方实例项目,这几个项目比较简单,已于阅读。