基于osg的作业仿真设计

基于osg的作业仿真设计

ID:10093457

大小:29.00 KB

页数:7页

时间:2018-05-25

基于osg的作业仿真设计_第1页
基于osg的作业仿真设计_第2页
基于osg的作业仿真设计_第3页
基于osg的作业仿真设计_第4页
基于osg的作业仿真设计_第5页
资源描述:

《基于osg的作业仿真设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于OSG的作业仿真设计【摘要】随着我国各项经济的发展,人们对主要用于工程建设的――挖掘机的自动化程度、安全性要求越来越高,传统的工作模式已经无法适应。如用于垃圾清理场地、酿酒厂的挖掘机,由于其工作环境的特殊性,仅仅依靠摄像头作为操作人员的操作依据已经远远不够了,此时就需要一种不需要摄像头,又可以为操作人员提供操作依据的仿真技术。本文以VS2008为开发平台,结合OpenSceneGraph(以下简称OSG)技术实现挖掘机的作业过程仿真功能。本文以液式挖掘机为研究对象,构造了详细的挖掘机三维模型,采

2、用一定的方法完成场景组织工作,接下来利用更新、回调技术完成挖掘机作业的仿真。【关键词】OSG;作业仿真;更新回调1.挖掘机作业仿真系统体系框架挖掘机作业仿真系统的构建可以分以下几步完成:(1)对挖掘机作业环境进行建模,其中主要包括挖掘机、物料及其周围环境等对象的建模。在建模过程中要根据对象类型的特性,选择不同的方法进行分别建模,然后再利用编写的加载模型的函数将其导入到虚拟场景中,最后再根据系统预设的每个模型的位置完成真个虚拟场景组织构建。7(2)获取挖掘机作业情况的运行参数,根据这些实际运动参数,实

3、时绘制场景图形,实现对挖掘机作业过程的仿真。现场挖掘机作业情况的运行参数,如回转支撑、铲斗以及履带等的位置、运行速度、方向等,可以通过软硬件系统的交互接口获取。(3)通过以上两步就可以实现对挖掘机作业过程的仿真,若要进一步提高虚拟场景的渲染速度,就需要对场景内的不同模型进行合理的组织和管理。另外为了增强虚拟场景的逼真程度,还需要采用碰撞检测等技术来达到此效果。根据以上分析,绘制了作业仿真设计的体系框架,如图1所示。图1系统框架架构图2.挖掘机作业环境建模挖掘机作业环境建模就是利用相关技术生产和真实环

4、境形状相似的虚拟场景,这个是实现作业过程的仿真的非常重要任务。虚拟环境一般由三部分构成[3]:内容、几何特性以及动态特性。内容由对象构成,这些对象构成了整个虚拟场景;几何特性包括维度、度量以及和环境的范围或边界;动态特性由对象之间的交互规则组成。环境模型的生成主要有两种方法:基于几何的建模方法和基于图像的建模方法[4]。基于几何的建模方法采用数学几何知识对对象的结构进行描述,并产生相应的图形。本文模型的构建主要采用基于几何的建模方法。7挖掘机模型主要包括下部行走体、上部回转体以及前端工作装置三部分。

5、环境模型主要是指挖掘机作业的周围环境。为了方便实现,把该部分模型部分都作为刚性构件处理,本文采用Solidworks软件来构建这些模型,完成之后将生成的模型导入3DSMax中进行渲染处理,然后再利用相应的插件把模型以*.ive或者*.osg格式的文件导出来,是因为这两个文件格式便于模型的加载和显示。对于挖掘机下部行走体中的履带,属于柔性构件,可以利用OSG自带的绘图功能进行实时绘制。在虚拟场景中,柔性构件多利用OSG自带的绘图功能实时地绘制柔性构件,如OSG中自带的四棱柱(Box)、圆锥(Cone)

6、、圆柱(Cylinder)、球形(Sphere)、组合型(CompositeShape)以及用更通用的三角面片(TriangleMesh)等来勾勒出几何体等方法来绘制出场景中用到的柔性构件。3.挖掘机作业仿真设计3.1场景模型的组织和管理在实现的过程中,采用层次建模的方法进行各种模型的管理。层次建模方法利用自上而下的树形结构来表示物体的各个组成部分,可以有效地描述、表示整个虚拟环境中的三维空间关系、场景图绘制与渲染的顺序及属性。按照场景图理论[5-6],结合实际研究对象,本文设计了一个派生自osg:

7、:MatrixTrans7form的挖掘机类,使其成为OSG的一个节点类型。然后将该节点直接加入到场景节点中,成为场景根节点的一个子节点;并将环境场景整合在一起之后加入到场景中;另外还有一些辅助节点如灯光、文字节点也要加入场景中。场景组织图如图2所示。图中环境组节点下的省略号表示作业环境中的其他设备、设施等;挖掘机组节点下的省略号表示动臂、回转支撑、泵室、电机以及车轮等。从图2中可以清楚地了解整个挖掘机作业过程的场景结构设计,整个虚拟场景从场景根节点开始构建,自顶而下一直到最后面的每一个模型节点。在

8、这里场景节点被命名为“sceneRoot”,它是整个场景的根节点,在下面可以利用addChild(Node*child)函数为其添加任意数量的子成员,所以它必须是组节点。在OSG库中,组节点类(osg::Group)是所有可分支节点的基类,它的最主要的功能就是添加任意数量的子节点。同样也可以利用voidremoveChild(Node*child)方法从相应的场景组节点中去除指定的节点。然后通过调用函数setSceneData(vp_sceneRoot),将其设置为场

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。