浅谈基于VPython的机构运动仿真研究及实现
关键词:曲柄滑块机构;Python;VPython;虚拟仿真;三维图像编程
1 引言
在机构运动学的教学中,人们经常用虚拟的三维软件来形象直观地表达机构运动过程。用于机械动态模拟的方法和软件很多,其中VPython是建构在Python程序设计语言之上的一个模块,它在可视觉化方面有丰富的功能及方便的操作介面。应用VPython我们可以创造一个能够实现交互的虚拟世界,可编写某一机构的具有交互作用的三维动画,进而更加形象地表示机构的外形、运动过程、工作状态等 [1]。同时,由于VPython的简单易学,在机械设计课程中加入简单的VPython程序编写,可以使那些非程序设计人员体验到编程的乐趣。
基于这样的设计思想,本文介绍了用VPython虚拟仿真曲柄滑块机构的运动设计与实现。
2 基本技术介绍
2.1 Python
Python是一种面向对象的程序语言(OOP),于1990年由荷兰科学家Guido van Rossem所发明。相较于其它编程语言,Python极其简单易学。它内置了许多常用的高级数据结构(如字典、列表、集合等)和功能模块(如文本处理、网络、多媒体、数据库和GUI等),使人们可以把精力集中在要解决的问题算法上,而不用考虑低层实现细节。Python开发效率非常高,据估计,实现同样功能程序,Python的开发周期比Java开发的缩短4~6倍。初学者通过很短时间的学习即可写出复杂的程序[2,3]。
2.2 VPython
VPython是一个建立在Python上的视觉化图形模块,其创立者是美国卡内基美隆学生David Sherer。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)的运动轨迹。
由已知可得:转角β与转角α的关系式:
r1 sinα = r2 sinβ (1)
B点坐标为:
XB = r1 cosα (2)
YB = r1 sinα (3)
C点坐标为:
Xc = r1 cosα+ r2cosβ (4)
Yc = 0 (5)
由(1)式得出:
β= arcsin(r1 sinα/ r2) (6)
把(6)式代入(4)得:
Xc = r1 cosα+ r2cos[arcsin(r1 sinα/ r2)] (7)
所以可知在任意时刻,B与C点轨迹都是r1 r2及α的关系式。
因为杆1为等角速圆周运动,设角速度为ω, ω为常量,α0为杆1初始角,故α=α0+ωt。又r1、r2已知,故B、C两点的坐标是随α也即随时间t变化的函数。
4 仿真及实现
4.1 程序设计思想
首先我们在VPython for idle开发环境中导入Visual与math模块,三维物体都处在Visual的scene类中显示与控制。(程序中出现在“#”后的为程序的注释,以增加程序的可读性与可维护性,程序运行时会忽略。下同。)先进行scene相关属性的设置。如中心坐标,屏幕大小,显示比例等。为了简化演示与编程,可以设r1、r2为某固定值,需确保r1<r2。其次,对角速度,间距时间等进行初始化,确定O、B、C三点最初的位置。其中,杆用curve()绘制粗线来模拟,各交点使用sphere()绘制球体代替,滑块用box()函数绘制长方体来模拟。最后,每间隔时间t,改变各绘制函数的pos属性,从而完成三维图形的动态显示与控制。程序流程图见图2。
图2 程序流程图
4.2 程序主体代码
from visual import *
from math import *
#设置显示屏幕大小和背景色:
scene.x, scene.y = 0,0
scene.width = 640
scene.height = 380
autoscale=0
#给r1、r2赋值,确保r1<r2
r1, r2= 0.5, 1
#初始化
dt=0.01
dtime = 0
seta0 = 0
n = 30 # 转速/分种
omiga = n*pi/30
seta = 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属性,动态绘制及显示
while True:
rate(100)#每秒种最多循环的次数
seta = seta0+omiga*dtime
pointb.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.pos
lineab.pos[1] = pointb.pos
linebc.pos[0] = pointb.pos
linebc.pos[1] = pointc.pos
box1.pos = pointc.pos
dtime+=dt # 增加时间
4.3程序运行及效果说明
编辑完成后,在VPython for idle开发环境中,按F5运行程序。曲柄滑块仿真程序运行达到预期效果。图3为程序运行至某一时刻截图。
图3 VPython中曲柄滑块截图
5 结语
VPython是一种开源免费、易学易用且又功能强大的、基于Vector操作的三维编程软件[6]。通过在教学中应用VPython技术,能够有效的降低软件开发的难度和强度,提高非编程人员教学演示及交互控制能力,为机械设计中的虚拟仿真教学奠定一定的实践基础。如果配合NumPy,ScientificPython等科学计算模块,则能在摇杆、凸轮、碰撞、约束等具备规律展示的教学主题上发挥更大作用。
参考文献
[1] Lensyl D. Urbano,Jennifer L.Houghton. An Interactive Computer Model for Coriolis Demonstrations[J].Journal of Geoscience Education,2006, 54(1): 54-60.
[2] 徐爱凤.VPython在数学教学上的应用[J].中华理工学刊 vol.3,n.4,1994.7
[3] Ahlex Martelli. Python技术手册(影印版)[M].O’Reilly,东南大学出版社 2006
[4] 任继文,吴志强,张会明.基于 VRML的发动机机构运动仿真技术的研究[J].组合机床与自动化加工技术.2006,16: 130-131.
[5] 杨化书.机械基础[M]. 河南郑州:黄河水利出版社,2002:137-160.
[6] D.Schere, P.Dubois,and B. Sherwood. Vpython:3D Interactive Science Graphicsfor Student[J]. Computing in Science and Engineering, 2000,2(5): 55-62.
苗志锋:广西南宁长岗路99号广西水利电力职业技术学院计算机与信息工程系。
电话:13877180157.
Email:miaozhaozhao200@163.com
赵春平(1978-),女,吉林长岭人,助教,研究方向为机械设计及CAD技术;苗志锋(1979-),男,河北邯郸人,助教,硕士研究生,研究方向为网络协议及分布式系统、虚拟现实技术;
相关热词搜索: 浅谈 仿真 机构 运动 研究热门文章:
- 2024年(8篇)工作述职报告汇...2025-01-11
- (2篇)2024年工作计划汇编2025-01-11
- (9篇)党支部工作特色亮点党...2025-01-10
- 2024年XX图书馆工作总结报告...2025-01-08
- 2024年-政工工作个人三年工...2025-01-07
- 2024年第三季度个人工作小结...2025-01-07
- 2024年度工作总结及2024年工作打算2025-01-06
- 2024年街道党工委工作总结暨2...2025-01-06
- 2024年度党支部党建工作总结...2025-01-06
- 2024年度在全市市场监管工作...2025-01-05
相关文章:
- 浅谈煤矿安全生产评价体系构建2021-08-27
- 浅谈农村有线电视网络故障维修2021-08-27
- 浅谈医院成本核算精细化管理2021-08-27
- 浅谈生态建筑建筑设计应用2021-08-27
- 浅谈WiFi智能灯光控制系统设计2021-08-27
- 浅谈初中历史教学德育渗透2021-08-27
- 浅谈计算机教育教学创新2021-08-27
- 浅谈历史教学学生责任意识培养2021-08-27
- 浅谈临床医学检验重要环节质...2021-08-27
- 浅谈初中德育教育工作论文2021-08-27
- 基础医学实验虚拟仿真教学平...2021-08-27
- 风力与光伏混合发电下微网建...2021-10-18
- 基于“3S”技术的三维仿真应...2022-02-21
- 应用ANSYS建立短肢剪力墙仿真模型2022-03-06
- 基于Altium,Designer的电路仿真2022-03-08
- 仿真支撑软件DCOSE系统特点简析2022-03-13
- 基于计算机虚拟制造焊接工艺...2022-10-21
- 论经济仿真实验在辅助初级宏...2022-10-21
- 论机构编制信息调研的作用及...2021-10-09
- 机构编制会议讲话之一2021-10-09
- 县区机构改革调整任前集体廉...2021-10-24
- 略谈税收管理机构改革2021-12-23
- 医疗机构设置项目可行性报告2022-01-23
- 编办机构改革工作汇报2022-01-29
- 学校运动会程序册(完整)2021-08-27
- 运动会广播稿100字120202021-08-27
- 800米运动会通讯稿20篇2021-08-27
- 小学秋季运动会广播稿100字2021-08-27
- 运动会加油稿2021-08-28
- 2021运动会加油稿(15篇)2021-08-31
- 2021春季运动会颁奖主持词【5篇】2021-08-31
- 中学生运动会广播稿15篇2021-08-31
- 运动会100米加油稿集锦2021-08-31
- 小学春季运动会通讯稿精选篇2021-08-31
- 产品设计中形研究论文&产品品...2021-08-27
- 计算机维护系统软件应用研究2021-08-27
- 五年级下册语文研究报告对于姓氏2021-08-27
- 研究生课程学习总结2021-08-27
- 科学研究工作能力自我评价2021-08-31
- 研究性学习的理论与实践简介2021-09-09
- 党建研究会工作报告2021-09-09
- 后勤工作研究课题2021-09-11
- 国际税收研究会秘书长事迹2021-09-13
- 优秀研究成果评选奖励办法2021-09-14