农业机械化论文

您当前的位置:学术堂 > 农学论文 > 农业机械化论文 >

农田喷灌车模型的建立与运动仿真

来源:未知 作者:小韩
发布于:2014-09-10 共4884字
论文摘要

  引言

  伴随着信息技术的发展,虚拟现实仿真技术日益成熟。这是一门多学科融合的交叉技术和前沿科学领域,在很多领域中已经得到了应用。将农业机械与虚拟现实仿真技术相结合已成为现代化农业技术发展的趋势,也逐步成为热点研究课题。

  虚拟现实技术在农业机械上的应用是指通过计算机对农业机械的外观、功能、行为进行建模,也就是建立虚拟样机,生成逼真的三维虚拟环境。通过虚拟现实系统,能够在虚拟环境中实时观察虚拟农机的农业生产活动、实现农机的性能实验和特性评估,并且人与机械之间能进行实时的交互。

  本文在了解农田喷灌车工作过程的基础上,利用虚拟现实仿真技术在 Pro/E 环境下建立模型,导入3ds Max 中做后期处理将农田喷灌车的外观设计呈现; 利用 Unity3D 来实现行驶、喷洒机械臂的展开、折叠以及作业时虚拟环境,为用户提供一个可操作的原型农田机械,不仅可以为农业教学科研提供服务,也可以用于农业机械的观光与培训。

  1 农田喷灌车模型的建立

  1. 1 三维模型建立

  通常一个机械的完整设计包含了零件制图、装配设计模块及工程图绘制模块等,越复杂的机械模型所包含的内容越多。本文选取机械仿真的目的是实现喷灌车在田间的行驶及喷药操作,主要模拟车身的运动以及机具的操作效果,而不包含机械的内部传动原理。所以,对其内部的复杂构造( 如发动机内部结构和气压传动机构等) 没有进行建模。因此,在建模时,从展示内容的角度将农田喷灌车的模型大体分为 4部分: 机身、车轮、喷灌箱及喷洒机械臂。

  为了达到建立机械模型的精准要求,用 Sketch-Up、3ds Max 等通用建模工具是不合适的,可选用专业的机械建模软件 Pro/E 将模型的图纸导入 Pro/E 中,以线条的形式画出。建立组装好的模型在 3ds Max 中做后期处理,最后在 Unity3D 环境进行下一步仿真操作,具体流程如图 1 所示。【图1】
论文摘要

  1. 2 贴图材质处理

  在 Pro/E 环境下建立的基础模型只具有三维外观,虽然它本身自带材质,但是不符合虚拟仿真的要求。一般的模型无论光照效果还是后期渲染,若每一部分都是独立材质,做烘焙会有很多小碎面,十分混乱,所以需要在 3ds Max 中做后期处理、焊接节点。

  通过 UVW 修改器对模型进行贴图,具体步骤如下: 修改器把立体的三维模型的表面在一个平面上展开、铺平; 然后,把这个展平的表面输出到二维图形编辑软件中绘制贴图; 最后,再把画好的贴图贴回到三维模型上。

  利用 UVW 贴图可以精确地控制模型上的 UV 面,将纹理贴图准确绘制到模型表面,特别适用于不规则形状的模型和纹理贴图不规则的情况。将整个喷灌车的贴图利用 UVW 展开,效果如图 2 所示。【图2.略】
  
  在具体的建模过程中,机械模型中存在许多比较细小的结构,如螺栓和螺母。这些结构如果完全建模,不仅占用过多资源,而且在仿真过程中也会因为显卡的计算误差而产生闪烁现象。一般虚拟现实中解决的办法是尽量使用材质来代替模型,但这些处理带来的副作用是: 当近距离观察时,效果不够逼真。

  机械仿真不同于一般的游戏设计,要求保留必要的真实效果,而解决这个矛盾的办法是利用凹凸贴图来完成。例如,建立车轮模型时,模型尽量减少面数; 利用平面贴图和凹凸贴图相结合,可以描绘每个像素的法线朝向,更好地表现凹凸细节,产生出来的模型类似高多边形的效果,增加了物体细节的层次,实现了车轮上的凹凸效果,如图 3 所示。【图3.略】

  喷灌车模型经过后期处理,在保证节约资源的前提下实现了逼真的仿真效果,如图 4 所示。【图4.略】
  
  1. 3 调整零件轴心

  在机械臂的运动仿真中,大部分零件都要进行旋转运动,而旋转是依赖于零件模型的自身坐标轴进行的。由于每一级的机械臂旋转的轴心都不相同,因此针对此喷药机调轴是关键的一步。3ds Max 的场景采用右手系模式,z 轴默认向上,喷灌车机械臂的旋转很显然是以 z 轴为旋转轴旋转。以一级机械臂为例,其轴心在黄色钮的中心与下方绿色螺栓中间的连线上,如图 5( a) 所示( 为了方便观看,其余机械臂暂时隐藏) 。由于机械臂模型并不垂直于地面且稍微向机身倾斜,若轴心坐标存在微小的误差,将导致机械臂展开时无法与地面平行。

  为了使误差降到最低,可以通过辅助物体来调整轴心。在此建立辅助物体,利用空间捕捉功能,在两点之间做一条辅助线将其在场景中渲染,如图 5( b)所示。【图5.略】
  
  选择不同视角将辅助物体的轴心与辅助物体 z 轴方向彻底重合,将机械臂附加在辅助物体上,使机械臂的轴心与辅助物体一致; 最后,利用可编辑多边形的元素选择状态将辅助物体删除,其余机械臂也同样应用此方法来达到调轴目的。

  2 机械运动仿真

  2. 1 模型的层次关系

  喷洒机械臂的结构仿真运动比较复杂,各个机械零件的运动无法通过一个简单的函数关系来表达,常规的平移和旋转复合算法无法实现这一效果。通过对机械臂的运动观察发现,机械臂上的各个零件从严格意义让讲并不存在真正意义上的简单“平移”运动,其位置的移动都是由于其它零件的旋转带动的。通过合理规划机械臂相关零件的父子层次关系,然后通过对父物体的旋转,带动子物体的位移。这种方法使得后面的仿真算法得到大幅度简化。

  喷洒机械臂分别位于药箱的左右两侧,最靠近车身的部分为一级机械臂,接下来为二级、三级直至四级机械臂。每级机械臂下方都带有喷洒药物的细管,喷灌车工作时,机械臂通过链接机身与机械臂的液压杆获取展开的动力,向外侧以折叠方式一级一级展开,左右两侧同时同步,当全部张开时,暂停运动。由于本文要表达的是仿真效果而不是研究机械动力原理,在此只考虑外观的动作模拟展示。因此,以模拟机械外观仿真的角度观察,需要做模拟运动的部件,如表 1 所示。【表1】
论文摘要
  
  模拟机械臂展开过程时,首先要确定各级机械臂的父子关系。当父子关系确定后,子物体会随着父物体的位移和旋转发生相应的改变,而子物体的改变不会影响到父物体,因此一级机械臂很显然是父物体。

  机械臂的父子关系示意图如图 6 所示。【图6】
论文摘要

  2. 2 模拟行驶

  农田喷灌车的模拟行驶是通过 Unity3D 本身自带的物理组件 WheelCollider( 车轮碰撞器) 来实现的。WheelCollider 是一个特殊的地面车辆碰撞器,具有内置的碰撞检测、车轮物理引擎和一个基于滑移的轮胎摩擦模型,是专门为有轮子的车辆设计。因此,只要给 WheelCollider 一个力,就可以自动实现滚动的物理效果,并且可以通过代码捕获它的转速。

  需要注意的是,按照传统思想,给车轮加 Wheel-Collider 属性的做法是直接选中车轮添加属性,效果如图 7 所示; 但是,此过程无法实现车轮的滚动。这是因为车轮的碰撞检测是通过自身 Y 轴的中心向下,投射一条射线; 而轮子滚动时,轴心也随之旋转,这与WheelCollider 的自身 Y 轴方向不变相违背; 若想实现车轮滚动效果,最好的方法就是将车轮碰撞器与可见轮子分开。【图7.略】
  
  具体操作步骤为: 在每一个车轮上添加 WheelCol-lider 属性,建立空物体; 选择车轮,将 WheelCollider 属性复制,粘贴至空物体,重新命名; 再将轮子上原有WheelCollider 删除。为了利于观看查找,可再建两个空物体,分别放置车轮与车轮碰撞器,如图 8 所示。【图8.略】
  
  整理完毕后,用 C#语言在 Unity3D 中编程实现喷药机的前进、后退、转弯的控制。控制的方法如表 2所示。【表2】
论文摘要
  
  使用 WheelCollider 的好处是可以方便、快捷地模拟车轮运动,并具有十分逼真的效果; 但是它还存有不足之处。比如,在现实生活中,车辆转弯时为了使转弯更省力,前方两个驱动轮的转角是不同的,而利用 WheelCollider 的车轮在转弯时转角无明显差异。做传统的赛车游戏对此没有很高的要求,所以WheelCollider 常常用来做赛车游戏的仿真。
  
  2. 3 喷洒机械臂的展开与折叠
  
  由于各级机械臂的展开与折叠原理相似,因此以第 1 级机械臂为例,对其进行模拟分析。当触动喷洒机械臂的展开按钮时,HyPreOut1 通过内部压力将HyPreIn1 顶出,HyPreIn1 的运动推动 1 级机械臂运动,过程如图 9 所示。【图9.略】
  
  显然,HyPreOut1 与 Arm1 的转速不同。HyPreIn1作为 HyPreOut1 与 Arm1 的衔接体,从仿真的角度分析,只要保证旋转过程中 HyPreOut1、HyPreIn1 时刻处于同一直线,利用父子关系和旋转运动相结合的思想,即可模拟出 HyPreIn1 的伸缩运动。

  首先,要利用数学方法弄清楚各个部分的旋转角度关系。将各物体垂直投影到平面,结合图 9 制作关系图如图 10 所示,辅助点代表含义如表 3 所示。【图10.表3】
论文摘要

  ΔABC 为 机 械 臂 静 止 时 辅 助 点 形 成 的 关 系,ΔBCD 为机械臂转过一定角度时形成的关系。将 CD旋转的角度设为随着每一帧逐渐增加的角( 即∠C 作为主动角) ,随着主动角的每一帧的角度变化,求得HyPreOut1 和 HyPreIn1 转过的角度,保证 A、B、C 始终构成三角形。具体数学计算方法如下:1) 在 ΔABC 中,已知 AB、BC、AC,利用余弦定理求出∠A、∠B、∠C;2) 在 ΔBCD 中,已知新的角 C 为 new ∠C,已知BC、A'C,求得∠A'、∠B';3) 随着一级机械臂旋转的角度增加,HyPreOut1转过的角度为∠B-∠B',HyPreIn1 相对于 1 级机械臂转过的角度为∠A'-∠A。

  有了上述理论基础,设计在 Unity3D 中的编程思想,以 1 级机械臂为例,HyPreOut1 最大的转角为 90°。这一编程思想的流程如图 11 所示。【图11】
论文摘要
  
  3 建立虚拟环境

  3. 1 构建基本农田环境

  喷灌车一般工作在农场的垄田里,机械臂的展开范围大,比较适合在面积宽广规则的田地里作业。为此,首先创建一个具有农田效果的土地,将具有垄田纹理的图片放入 Unity3D 自带纹理图片的贴图文件下,点击创建地形并为地形附加贴图材质; 设置土地的解析度和图片的大小,使其具有规整垄田凸起的效果; 添加 Skybox( 天空盒) 创建天空效果,利用光照照明使场景看起来更加明亮,根据农田的分布位置可在农田旁边创建道路、树木等地表环境,使场景看起来更接近真实的农场生活环境。
  
  3. 2 地表变化模拟

  喷灌车喷洒液体时,液体沿着喷洒机械臂下方的细管喷出,喷洒的展示利用 Unity3D 自带的 ParticleSystems( 粒子系统) 实现,调整系统的参数即模拟喷洒液体效果。

  模拟环境的重点是模拟地表变化。喷灌车向地面喷洒液体时,地面会有变湿的迹象,实现这一过程需要根据喷灌车一帧所行驶的步长计算更换地面的贴图材质的面积,利用其中标准的类结构 Terrain. data更换图片材质。该类存储高度图、细节网格、树实例和地形纹理 alpha 贴图,由于每一张贴图都对应自己的透明度,因此通过纹理可以获得贴图的位置,实现贴图变换过程。

  Unity3D 中,地块由很多小网格组成,是个很大的二维数组,设置网格解析度、车的坐标和地形可以产生一个映射关系。当打开喷灌车喷洒开关时,触动粒子系统,判断车是否运动。若运动,则以喷药机本身的 localPosition 计算一个矩形框,计算变换的土地范围,利用 Terrain. terrainData 取得所有图片基础数据存入数组中,干土地材质为 0,湿土地为 1; 利用 GetAl-phamaps 将图片数据取出变换由 0 序号材质变为 1 序号材质,将更换的图片数据通过 SetAlphamaps 赋予回数组中。如此循环,直到喷药机运动停止关闭喷洒按钮。最终实现喷灌车展开喷洒的效果如图 12 所示。【图12.略】
  
  4 结论

  通过多个三维建模工具及材质处理工具的综合运用,实现了符合虚拟仿真要求的农田喷灌车三维模型。利用比较成熟的虚拟物理引擎以及对车轮转弯运动的分析,实现了农田喷灌车的模拟行驶效果。在观察机械臂伸缩运动规律的基础上,通过合理规划模型对象的父子关系,利用旋转运动实现了机械臂复杂运动仿真。由于一般的机械运动都是这种旋转操作,因此“父子关系加旋转”的设计方法可以推广到大部分机械运动仿真算法中。

  参考文献:

  [1] 王凯湛,马瑞峻. 虚拟现实技术及其在农业机械设计上的应用[J]. 系统仿真学报,2006,18( 2) : 500-503.
  [2] 王凯湛,马瑞峻. 基于 Pro/E 的机械手式水稻抛秧机的虚拟样机设计[J]. 农机化研究,2008( 6) : 89-92.
  [3] 赵玲. 基于 3DMAX 的模型优化的研究[J]. 科学技术与工程,2010,26( 10) : 6566-6568.
  [4] 徐钟明,苏张志飞,余烽. 车辆转弯制动横向轨迹控制驾驶员模型研究[J]. 公路交通科技,2008,25( 7) : 147-150.
  [5] 淮永建,王梅峰,左正兴,等. 基于多体动力学理论的赛车游戏引擎的设计与实现[J]. 计算机应用,2005,25( 2) :415-417.

作者单位:
相关内容推荐
相关标签:
返回:农业机械化论文