数学建模社区-数学中国

标题: 使用Matlab/Simulink实现运动可视化技术 [打印本页]

作者: 建不了的模。    时间: 2014-12-10 09:52
标题: 使用Matlab/Simulink实现运动可视化技术
使用Matlab/Simulink实现运动可视化技术
还在为不知道如何使自己的仿真结果更容易让人接受而烦恼吗?
       还在为用一条条曲线所表示的运动太过抽象而苦不堪言吗?
       建个3D模型,使用Matlab平台,投资小,利润高!小本经营,无限回报,赶快继续阅读吧,依托强大的Matlab平台支持,帮你解决仿真过程中遇到的这些烦恼~~
       试想一下,无论是学术活动还是各种汇报,一个会动的仿真结果和一组组曲线相比哪个更直观,再配以必要的文字、数字说明,相信下面介绍的方法所得到的结果,无论从哪个角度来讲可能都会更具说服力。是个不错的选择~~   ^_^
===================================分割线===============================
       广告打完了,言归正传。运动可视化使用到的是虚拟现实技术。虚拟现实(Virtual Reality,VR)顾名思义就是使用电脑模拟一个三维空间,让观察者有身临其境感觉的一项可视化技术。如果其中物体的运动是受外界控制的,那么就实现了运动的可视化,使运动不再抽象,控制效果也不再是一条条仿真曲线,可以从3D模型的运动中直观地反映出来。
       运动可视化技术可以应用于很多领域,如控制中可以用它来反映被控对象的运动情况,机械中借助于外界输入设备(鼠标、操纵杆等)可以观察复杂机械设备的联动情况。做出来的虚拟现实系统也可以应用于虚拟训练、虚拟地图等场合。
        虚拟现实所使用到的语言为VRML(Virtual Reality Modeling Language)即虚拟现实建模语言。由于早期的网络使用的语言HTML (HyperText Mark-up Language)无法满足巨大信息量的要求,为了解决这个问题,就应运而生了VRML语言,此处的运动可视化技术是借用VRML的强大建模的功能,在Matlab平台上实现虚拟现实。
        那么下面就介绍一下虚拟现实的实现流程吧
205203iaazjijrpxpj888a.jpg.thumb.jpg
[img]file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\TempPic\Y]~]QT2[7SFIAYT]_6@@4U4.tmp[/img]
        从流程图上看,操作过程并不复杂,实际上也是这样的,下面介绍的这样方法,即使没有VRML语言基础也能建立很好的虚拟现实场景。
        首先是VRML建模工具的选择。
        建模工具有很多种,比如V-Realm Builder 2.0(Matlab自带的VR建模工具),3D Max(功能强大,操作相对简单的工具,强烈推荐),如果对VRML语言十分精通,甚至可以使用记事本进行建模,虽然看起来最拽,但前期需要投入相当多的精力研究VRML语言。我使用的工具是3D Max和V-Realm Builder 2.0兼用,前者是在初期建模时使用的工具,后者是在对模型修改时所使用到的工具。
        其次是虚拟现实浏览器的选择。
        虚拟现实浏览器可以理解为VRML语言编译的编译器,通过虚拟现实浏览器可以将VRML语言编译成为3D模型。至于VRML浏览器的选择也有很多种,但如果是基于Matlab平台的系统,推荐使用Matlab/Simulink/Simulink 3D Animation工具箱中自带的VR Sink浏览器,使用这种浏览器不用考虑与Matlab的接口问题。
        工具选择好之后,那么就举个例子看一下到底怎么用吧
1.建立3D模型
        使用3D Max建立3D模型
210115cfxxjescecmomxnj.jpg.thumb.jpg
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\TempPic\I2~W6K9ZY}8DVV%@]0IADM7.tmp
        3D Max建模过程相对简单,效果可以做到相当逼真的程度,完全可以满足虚拟现实中对模型精度的要求。如果不想自己建模也可以借助网络资源,使用搜索引擎搜索“3D模型”,可以找到大量现成的模型。
2.生成VRML 97格式文件
        为了能在虚拟现实浏览器中反映出使用3D Max建立出的3D模型,需要将模型转换生成VRML97格式的文件。导出的方法很简单,选择文件→导出→VRML97格式的文件就行了。
3.使用虚拟现实浏览器
        将Matlab/Simulink/Simulink 3D Animation/VR Sink模块拖拽到新建文件中,双击,出现如下界面
212815wqallghdnqbennwz.jpg.thumb.jpg
[img]file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\TempPic\NS1}SHQ2(A[HP4O)AY6GFVC.tmp[/img]
        单击Browse按钮,选择上步所生成的VRML97格式文件,之后界面变成如下形式
212922wdeto6no6ebn6bfb.jpg.thumb.jpg
[img]file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\TempPic\}J{}}65~0PL[%WM6YD8X0`V.tmp[/img]
        这时窗口的右侧VRML Tree中就显示了很多节点,这些节点和VRML语言中的节点是一一对应的,这里面对于控制而言经常用到两个节点为rotation(旋转),translation(位置)。
        需要注意的是,在建模过程中需要将一起运动的部件分到一个“组”中,控制时控制这个组的“旋转”和“位置”就行了。
4.虚拟现实浏览器的数据接口
        常用的数据接口主要是针对rotation节点和translation节点的。
        对于rotation节点需要四维数据,前三维定义绕哪个轴旋转,定义方法如下[1,0,0]表示绕x轴旋转,[0,1,0] 表示绕y轴旋转,[0,0,1] 表示绕z轴旋转;最后一维定义转动角度,以弧度为单位。坐标轴定义如下
21272659m7lurqnz9zqus4.jpg.thumb.jpg
[img]file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\TempPic\P[]G73LV`YFR@J84NH5_G@8.tmp[/img]
        对于translation节点只需要三维数据,即三个当前时刻中心的坐标。
        由于rotation是经常需要使用到的节点,所以,每次都写很多0,1很麻烦,可以将rotation的接口用一个模块来替代,使用之前只需要选择绕哪个轴即可,输入由原来的四维变成了一维,可以大大提高建模效率。模块参数如下
2130211cqy6cq1up6u7uqu.jpg.thumb.jpg
file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\TempPic\9D6GNC89XLIA9(9]PQ6I2@H.tmp
        做好一切准备工作之后,剩下的就是按动开始仿真的按钮了,让我们一起看一下效果吧~~
213142fy5wwyhqppzyquq3.jpg.thumb.jpg
[img]file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\TempPic\Q%`I_$TL1CX(6`9L79@QMVF.tmp[/img]
        模型是使4个轮子旋转,并且整体移动,如果这样的试验通过了,下一步就是接入能使车真正运动起来的数据,进而可以仿真真实车辆行驶的全过程了
        上图中左侧的图就是Matlab自带的虚拟现实浏览器,其中下方有许许多多按钮,下方的这些按钮是控制观察者的视角的,类似一些RPG游戏一样,观察者也可以通过鼠标任意调整视角,360°看到虚拟现实世界中的一切,不过前提是场景得做的十分精细,附件中的模型我指贴了一面的贴图,如果大家好奇心特别重,旋转了视角,将会看到另一个世界~~
==================================分割线================================
        上面介绍了VRML建模的全过程,如果遇到复杂的模型,耗费时间的地方在于对真实模型和环境的刻画,Matlab这边的工作,Simulink 3D Animation工具箱已经做了足够多,不需要更改什么,设置一些参数就能直接用了。
        此外,Simulink 3D Animation工具箱还提供了很多其他强大的功能,例如在虚拟现实世界中显示文字(VR Text Output),将运动物体的运动后的轨迹记录并在浏览器中显示(VR Tracer),一些外部输入设备的驱动(Joystick Input,Space Mouse Input)。最经典的是Demos模块中提供了各式各样的例子,里面不同类型的应用,基本能够满足简单的要求,同时也是学习虚拟现实一个很好的工具。

下载:

附件使用方法:将压缩文件解压生成car.WRL文件,打开car.mdl,双击VR Sink,单击Brown找到car.WRL文件,在左侧节点列表中下找到如下节点
SUV/children.rotation      整车的旋转
SUV/children.translation  整车的位置
Reifen_VL.rotation          左前轮旋转
Reifen_HL.rotation          左后轮旋转
Reifen_VR.rotation          右前轮旋转
Reifen_HL.rotation          左后轮旋转
勾选上述节点,旋转需要四维数据(格式见上文所述),位置需要三维数据,输入相应数据,即可观察到相应的运动


21272659m7lurqnz9zqus4.jpg.thumb.jpg (12.78 KB, 下载次数: 224)

21272659m7lurqnz9zqus4.jpg.thumb.jpg


作者: 张银银    时间: 2014-12-10 21:51
做机械的,还是多学习这个···

作者: 励俊07    时间: 2014-12-11 20:50
学习学习!!!!!

作者: w785485068    时间: 2014-12-12 17:09
顶一下。。。。。

作者: yqybsd    时间: 2015-7-27 11:02
好棒啊 感觉棒棒的

作者: 1024973593    时间: 2021-10-18 14:19
找了好久终于找到,感谢楼主的教程





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5