基于SIMULINK和VRML的一种简易仿真方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第5卷 第8期 中 国 水 运 Vol.5 No.8 2007年 8月 China Water Transport August 2007

收稿日期:2007-6-28

作者简介:陈 宇 男(1983-) 武汉理工大学 交通学院硕士研究生 (430063) 研究方向:船舶与海洋结构物设计制造

基于SIMULINK 和VRML 的一种简易仿真方法

陈 宇 郑绍春

摘 要:本文提出了一种简易的虚拟现实仿真方法。主要是利用MATLAB 作为计算平台,通过结合SIMULINK 仿真工具,对建立的虚拟现实标记语言VRML 模型实现仿真。并通过一个四连杆机构的运动仿真实例说明该方法的仿真思路。

关键词:SIMULINK VRML 四连杆机构

中图分类号:TP391.9 文献标识码:A 文章编号:1006-7973(2007)08-0145-02

一、仿真的思路方法描述

首先对真实的物理模型进行抽象、简化、分析得出机械的运动计算模型,利用MATLAB 强大的计算功能进行模型的运动计算。同时对真实的机械利用VRML 进行实体建模(可以是机械原型,也可以是简化了的点线面抽象模型)。然后再把机械模型和计算模型利用SIMULINK 的模块连接起来构建成整个仿真模型,输出仿真结果。

二、仿真方法的特点

基于SIMULINK 与VRML 的仿真方法,与现行的仿真方法相比有如下特点:

1.计算仿真与运动仿真的无缝结合

利用MATLAB 的平台,所有的仿真计算都可以编程实现,而且计算结果可以很好的传递到SIMULINK 的仿真模型中,可以不需要转换就直接反映在模型之中。因此数据不需要在异构软件中传递,就节省了大量的数据接口程序的编写工作,大大提高了仿真的效率。

2.仿真功能的全面,移植性通用性好

目前很多的建模软件都已经集成了运动仿真的模块,譬如Solid work 的animator 插件以及Cosmos motion 插件等,实现了一部分的仿真功能,但是对于一些特殊复杂的模型,常规的仿真项目是远远不够的,有很多特殊的仿真项目,因此在利用该方法仿真的时候,势必不能全面的实现整个模型的所有仿真,还是要通过脚本,宏,或者二次开发新的模块来实现更多的仿真功能。然而本文提出的方法可以通过编写不同的计算程序来实现不同的仿真功能,而且MATLAB 作为一种优秀的即时演算式语言,提供了大量的工具包,比通过脚本,宏等方式开发仿真模块更为方便而且快捷。还可以通过与c/c++的混编,实现模型文件在c/c++集成环境中编译,这就大大提高了仿真的通用性和移植性。

3.仿真动画更为准确

目前的动画仿真都是在当前关键帧同下一关键帧之间进行插值计算,然后生成中间的画面,但是要达到真实的效果就必须严格控制好每一关键帧,这才体现出机构在实际运动中的

各种特性,比如加速度的反映。本文提出的方法就是直接将实际计算的数据传递给模型,模型的每一个运动都是计算结果的准确反映,是真实的。很多软件是靠通过已经计算好的结果来设定关键帧,达到一定的真实效果,但是没有提供很好的计算模块直接完成计算。因此在设定的时候相当的麻烦。

4.仿真简便易学易用

目前在追求准确仿真中,最常用的还是利用底层硬件,通过OpenGL 进行编程。但是OpenGL 的强大是建立在对硬件的熟悉以及良好的编程能力上,能力要求较高。但是该种方法基本只要你能够进行手工计算,就可以进行仿真了,毕竟MATLAB 的演算式编程更为直接易懂,而且强大的工具包也为编程提供了很大的便捷。

5.建模简捷方便,适于网络传播使用

VRML 是一种虚拟现实标记语言,只需要记事本就可以进行建模,不需要在集成环境中处理,同时目前市面上的几乎所有建模软件都有VRML 格式的文件输出功能,因此也可以利用熟悉的软件进行建模,提高建模的效率。而且VRML 文件特别适合网络传播,只需要IE3.0以上或者是Netscape 浏览器就可以浏览模型。

三、实例说明

本文就常见四连杆机构运动仿真对整个方法进行说明。 1.四连杆机构的计算模型 (1)四连杆的矢量方程

对四连杆的每个杆件进行编号r i (i=1,2,3,4),如图2所示,然后建立矢量方程,得到以下矢量关系:

2314

r r r r +=+J G J G J G J G

(1)

矢量方程不便于求解,通常可以在任意的直角坐标系(X’OY’)下分解成X’ Y’轴方向的的标量方程组。上述的标量方程组有一般性,但是我们总可以找到一个坐标系,

使得某一个杆的转角总为零,这里我门可以以机架杆1

r J G

的方

向为x 轴正方向建立符合右手法则的直角坐标系(XOY),在此坐标系下,转角θ1始终为零,从而矢量方程分解为:

146 中 国 水 运 第5卷

{

2233144

223344

cos cos cos sin sin sin r r r r r r r θθθθθθ+=++=

(2)

求方程组(2)对时间的1阶导,2阶导就可以分别得到角速度,角加速度的方程组,从而为进一步的仿真提供数据,进行动力学仿真。

(2)方程的求解

通过上面的分析,我们可以看到,只要给定其中一个杆的角度,就可以确定另外的两个杆件的角度,因此,我们可以把动力杆件(r2)的角度作为一个参数角,通过给定不同的参数角,得到连杆机构位置对应的解。上面的非线性代数方程组,可以用Newton-Rapson,Byonde 方法求解,但通常使用稳定性比较好的Newton-Rapson 算法,具体的函数如下:

function [theta3,theta4]=NR(theta,R) theta2=theta (1);theta3=theta (2);theta4=theta (3);

epsilon=1.0E-6;

f=[R(3)*cos(theta3)-R(4)*cos(theta4)+R (2)*cos(theta2)-R(1);

R(3)*sin(theta3)-R(4)*sin(theta4)+R(2)*sin(theta2)];

while norm(f)>epsilon

J=[-R(3)*sin(theta3) R(4)*sin(theta4); R(3)*cos(theta3) -R(4)*cos(theta4)]; delta_theta=inv(J)*(-1.0*f); theta3=theta3+delta_theta(1); theta4=theta4+delta_theta(2);

f=[R(3)*cos(theta3)-R(4)*cos(theta4)+R (2)*cos(theta2)-R(1);

R(3)*sin(theta3)-R(4)*sin(theta4)+R(2)*sin(theta2)];

End

2.四连杆机构的VRML 模型

对于四连杆这类比较简单的杆件,可以直接编写杆件的wrl 文件,也可以采用自己熟悉的参数化建模软件建模,保存为vrml97标准的模型。VRML 建立的模型,构件之间没有先后顺序,只有构件与构件之间的组织形式与层次关系。对于一个用于仿真的模型,要充分考虑模型之间的组织形式,这样才比较方便仿真模型的修改以及仿真模型之间的数据传递,以及模型构件之间的位置关系的坐标变换。下面提出四种常用的组织形式:

(1)利用VRML 的建模工具直接进行整体造型 (2)利用第三方建模软件,整体建模

(3)利用VRML 或者第三方建模软件对构件建模,然后把构件通过内联,直接作为节点读入到同一个模型中去

(4)同样是利用VRML 或者第三方建模软件对构件建模,但是在总体模型文件中使用transform 节点,内联构件模型作为transform 节点的shape 域的域值,构建整体模

型几种方式的比较如图所示:

表1 几种模型组织形式的比较

比较内容 (1) (2) (3) (4)文件大小 小 大 小 中 参数设置 一次成型一次成型 一次成型

可变参参数修改量

上述的四种组织形式中,可以发现,第四种结构形式是最有利于虚拟现实的,由于它可以很快的改变模型参数,并且改变参数的修改量在几种形式的构型方式中是最少的,而与它最接近的第三种方式中由于在直接作为节点内联进入模型中,虽然在建模的时候也是独立的建模,但是在独立建模的时候要考虑整体模型的相对位置关系,才能在整体模型中体现正确的装配,然而对于第四种方式的不考虑相对位置,只考虑构件本身的局部坐标系,然后在模型内联中通过改变局部坐标系在绝对坐标系中的位置、转角从而把构件加入模型之中,这也符合一般的零件加工装配的思想和流程。同时也便于仿真的参数化的仿真,这只要给定参数,求解出局部坐标系与绝对坐标系的坐标变换矩阵就可以了。对于四连杆机构(假定所有的杆件的都是以杆件两端点的连线作为y 轴),在SIMULINK 中建立相应的模块,通过VRsink 输入到vrml 模型中就可以实现其位置的控制了。

3.四连杆机构VRML 模型在SIMULINK 中运动仿真 VRML 本身具有动画的功能,但是由于各帧的情况都是不一样的,因此直接利用VRML 的动画功能比较麻烦,需要编写各帧的位置数据表。同时也要建立大量的传感器(censor)和路由(route)。SIMULINK 中的VR 工具包中有一个VR sink 模块,它可以直接修改VRML 模型中的各个参数,并在VRML 浏览器中实时浏览,因此利用该模块只要给定一个时间序列的输入,就可以得到一个基于时间变化的场景,从而达到仿真动画的目的。

4.过程以及结果的分析讨论

由上面的过程可以看出,本文提出的简便的仿真方法是切实可行的。在MATLAB 的平台上,数据的处理计算也是很方便的,可以做到设计-计算-仿真-修改设计-重新计算-仿真的结合,为产品开发或者研究提供了一个良好的环境。本文中主要是实现了机构的运动位置仿真,但在实际操作中,只要加入不同的计算模块就可以实现相应的仿真功能,例如碰撞干涉检查,轨迹跟踪,弹、塑性变形等。在面对一些问题的时候采用专业的大型仿真计算软件,并不一定合算,因此这种方法在教学试验或者一些研究设计中有实际的使用价值。

参考文献

[1] 阳化冰编著.《虚拟现实构造语言VRML》.北京:北京

航空航天大学出版社.2000.

[2] 周进雄,张陵译.《机构动态仿真》.西安:西安交通大学

出版社.2002.

[3] 黄永安,马路,刘慧敏编著.《MATLAB 7.0/Simulink 6.0

建模仿真开发与高级工程应用》.北京:清华大学出版社.2005.

相关文档
最新文档