浅谈基于VPython的机构运动仿真研究及实现

时间:2022-08-04 02:49:47

浅谈基于VPython的机构运动仿真研究及实现

摘要:近年来有许多针对机构运动学虚拟仿真技术的研究,用来辅助教学。其中,采用VPython对机构运动学教学进行三维图形编程是一种易学易用、功能强大的选择。通过建立机构运动的数学模型和参数化绘图,实现了常用平面连杆机构的运动分析和仿真,展示了VPython用于辅助教学的设计思想与实现方法,从而降低仿真开发难度,提高了机构研究设计的效率和效果。关键词:曲柄滑块机构;Python;VPython;虚拟仿真;三维图像编程1引言在机构运动学的教学中,人们经常用虚拟的三维软件来形象直观地表达机构运动过程。用于机械动态模拟的方法和软件很多,其中VPython是建构在Python程序设计语言之上的一个模块,它在可视觉化方面有丰富的功能及方便的操作介面。应用VPython我们可以创造一个能够实现交互的虚拟世界,可编写某一机构的具有交互作用的三维动画,进而更加形象地表示机构的外形、运动过程、工作状态等[1]。同时,由于VPython的简单易学,在机械设计课程中加入简单的VPython程序编写,可以使那些非程序设计人员体验到编程的乐趣。基于这样的设计思想,本文介绍了用vpython虚拟仿真曲柄滑块机构运动设计与实现。2基本技术介绍2.1PythonPython是一种面向对象的程序语言(OOP),于1990年由荷兰科学家GuidovanRossem所发明。相较于其它编程语言,Python极其简单易学。它内置了许多常用的高级数据结构(如字典、列表、集合等)和功能模块(如文本处理、网络、多媒体、数据库和GUI等),使人们可以把精力集中在要解决的问题算法上,而不用考虑低层实现细节。Python开发效率非常高,据估计,实现同样功能程序,Python的开发周期比Java开发的缩短4~6倍。初学者通过很短时间的学习即可写出复杂的程序[2,3]。2.2VPythonVPython是一个建立在Python上的视觉化图形模块,其创立者是美国卡内基美隆学生DavidSherer。VPython能使三维可视编程更容易。它提供了一组三维元件(素材),如球状体,柱状体和线型等。通过Vector操作函数可以很容易进行时空变换。进而,允许用户用鼠标直接操作屏幕上[1]对象。目前,VPython广泛应用于高等数学、平面几何、地理和物理等教学中,并取得了较好的教学效果[2]。3机构运动分析的数学模型3.1机构运动建模该曲柄滑块机构包括3个运动构件,各构件和杆矢的方位角如图l所示。构件l(OB)作匀角速圆周运动,构件2(BC)作复杂的平面运动,其运动方式可分解为随同构件l的转动和绕B点的转动。构件3(C)为往复运动[4,5]。假定C块中心点与A处于同一水平面上。图1曲柄滑块机构示意图3.2运动分析经分析得知,只要确定了各构件在某一时刻相对于初始位置的转动角度,就可以确定各构件在这一时刻的位置及运动方向,进而模拟出整个机构的运动。下面用矢量方程解析法来分析各构件转角之间的关系:如图1所示,在机构示意图中建立直角坐标系,以O为原点,OC为x轴,在O点垂直OC向上为y轴。并标出各杆矢的方位角。其中,BO与X轴正向夹角为α;BC与X轴正向夹角为β。杆1匀角速度转动,其转角大小随时间变化。杆1是原动件,其它各杆都随杆l运动。可视α为已知,O点坐标为(0,0),设OB与BC的长度分别为r1与r2,且是设定量,则可求在任意时刻,B点(XB,YB),C点(Xc,Yc)的运动轨迹。由已知可得:转角β与转角α的关系式:r1sinα=r2sinβ(1)B点坐标为:XB=r1cosα(2)YB=r1sinα(3)C点坐标为:Xc=r1cosα r2cosβ(4)Yc=0(5)由(1)式得出:β=arcsin(r1sinα/r2)(6)把(6)式代入(4)得:Xc=r1cosα r2cos[arcsin(r1sinα/r2)](7)所以可知在任意时刻,B与C点轨迹都是r1r2及α的关系式。因为杆1为等角速圆周运动,设角速度为ω,ω为常量,α0为杆1初始角,故α=α0 ωt。又r1、r2已知,故B、C两点的坐标是随α也即随时间t变化的函数。4仿真及实现4.1程序设计思想首先我们在VPythonforidle开发环境中导入Visual与math模块,三维物体都处在Visual的scene类中显示与控制。(程序中出现在“#”后的为程序的注释,以增加程序的可读性与可维护性,程序运行时会忽略。下同。)先进行scene相关属性的设置。如中心坐标,屏幕大小,显示比例等。为了简化演示与编程,可以设r1、r2为某固定值,需确保r1图2程序流程图4.2程序主体代码fromvisualimport*frommathimport*#设置显示屏幕大小和背景色:scene.x,scene.y=0,0scene.width=640scene.height=380autoscale=0#给r1、r2赋值,确保r1r1,r2=0.5,1#初始化dt=0.01dtime=0seta0=0n=30#转速/分种omiga=n*pi/30seta=seta0 omiga*dtime#设置曲柄滑杆的初始位置pointa=sphere(pos=(0,0,0),radius=0.06,color=color.red)pointb=sphere(pos=(r1cos(seta),r1sin(seta),0),radius=0.06,color=color.red)pointc=sphere(pos=(r2cos(asin(r1sin(seta)/r2)) r1cos(seta),0,0),radius=0.06,color=color.red)lineab=curve(pos=[(0,0,0),(r1cos(seta),r1sin(seta),0)],radius=0.04,color=color.blue)linebc=curve(pos=[(r1cos(seta),r1sin(seta),0),(r2cos(asin(r1sin(seta)/r2)) r1cos(seta),0,0)],radius=0.04,color=color.blue)box1=box(pos=(r2cos(asin(r1sin(seta)/r2)) r1cos(seta),0,0),length=0.3,height=0.1,width=0.02,color=color.green)#循环,使各构件随时间调整其pos属性,动态绘制及显示whileTrue:rate(100)#每秒种最多循环的次数seta=seta0 omiga*dtimepointb.pos=(r1*cos(seta),r1*sin(seta),0)pointc.pos=(r2*cos(asin(r1*sin(seta)/r2)) r1*cos(seta),0,0)lineab .pos[0]=pointa.poslineab.pos[1]=pointb.poslinebc.pos[0]=pointb.poslinebc.pos[1]=pointc.posbox1.pos=pointc.posdtime =dt#增加时间4.3程序运行及效果说明编辑完成后,在VPythonforidle开发环境中,按F5运行程序。曲柄滑块仿真程序运行达到预期效果。图3为程序运行至某一时刻截图。图3VPython中曲柄滑块截图5结语VPython是一种开源免费、易学易用且又功能强大的、基于Vector操作的三维编程软件[6]。通过在教学中应用VPython技术,能够有效的降低软件开发的难度和强度,提高非编程人员教学演示及交互控制能力,为机械设计中的虚拟仿真教学奠定一定的实践基础。如果配合NumPy,ScientificPython等科学计算模块,则能在摇杆、凸轮、碰撞、约束等具备规律展示的教学主题上发挥更大作用。参考文献[1]LensylD.Urbano,JenniferL.Houghton.AnInteractiveComputerModelforCoriolisDemonstrations[J].JournalofGeoscienceEducation,20__,54(1):54-60.[2]徐爱凤.VPython在数学教学上的应用[J].中华理工学刊vol.3,n.4,1994.7[3]AhlexMartelli.Python技术手册(影印版)[M].O’Reilly,东南大学出版社20__[4]任继文,吴志强,张会明.基于VRML的发动机机构运动仿真技术的研究[J].组合机床与自动化加工技术.20__,16:130-131.[5]杨化书.机械基础[M].河南郑州:黄河水利出版社,20__:137-160.[6]D.Schere,P.Dubois,andB.Sherwood.Vpython:3DInteractiveScienceGraphicsforStudent[J].ComputinginScienceandEngineering,20__,2(5):55-62.苗志锋:广西南宁长岗路99号广西水利电力职业技术学院计算机与信息工程系。电话:13877180157.Email:赵春平(1978-),女,吉林长岭人,助教,研究方向为机械设计及CAD技术;苗志锋(1979-),男,河北邯郸人,助教,硕士研究生,研究方向为网络协议及分布式系统、虚拟现实技术;

上一篇:MRPII实施过程若干问题研究 下一篇:关于网络经济的研究综述