计算机系统应用  2018, Vol. 27 Issue (4): 76-81   PDF    
基于VR的“农业机械学”仿真教学系统
雷文, 陈清奎, 朱肖龙, 高博, 厚国旺     
山东建筑大学 机电工程学院, 济南 250100
摘要:为改善传统农业机械教学过程中“老师难教, 学生难懂”的局面, 从虚拟仿真教学角度出发, 以现代农场为原型, 基于Unity3D虚拟现实开发平台, 设计开发了“农业机械学”仿真教学系统. 阐述了系统的设计思想、功能和结构, 并对开发流程中所涉及到的关键技术进行了介绍. 应用结果表明, 系统实现了虚拟农场中农机设备生产作业的虚拟可视化, 并且对各种主要农机设备的拆装、维修保养及工作原理进行了在线展示, 具有一定的实用性和教学价值.
关键词: 虚拟农场    仿真教学    Unity3D    农机设备    虚拟可视化    
Simulative Teaching System of “Agricultural Mechanics” Based on Virtual Reality
LEI Wen, CHEN Qing-Kui, ZHU Xiao-Long, GAO Bo, HOU Guo-Wang     
School of Electromechanical Engineering, Shandong Jianzhu University, Jinan 250100, China
Abstract: From the perspective of virtual simulation teaching, this study takes the modern farm as the object of reference and designs the simulative teaching system of " Agricultural Mechanics” based on the Unity3D engine in order to improve the situation that it is difficult for teachers to teach and for students to learn the agricultural machinery in a traditional way. This study demonstrates some of the original developing thoughts, function and structure of the system, and introduces the key technologies involved in the development process. The application result shows that the system realizes the virtual visualization of agricultural machinery equipment in the process of production operation in virtual farms, and displays online the virtual dismounting and assembly, maintenance and operating principle of all kinds of farm equipment. It has certain practicability and teaching value.
Key words: virtual farms     simulation teaching     Unity3D     agricultural equipment     virtual visualization    

“农业机械学”这门课程的实践性很强, 传统的教学难以让同学们掌握农业机械的基本知识, 对于各种现代化的农业机械的基本结构的了解也仅能从图片与文字素材上获取, 并且大部分的农机设备的主要零部件均包裹在壳体内部, 学生无法观察其内部结构以及工作状态时的内部原理. 虚拟现实技术, 是一种融合计算机图形学技术、人机交互技术、多媒体技术、网络技术及仿真技术等多种科学技术的新型技术, 具有沉浸感、交互性和构想性[1]. 如果将其应用在农业机械教学中, 将会实现传统教学中不具备或难以完成的教学功能, 并能解决实践教学中的产品成本高、工作场所受限制等一系列问题.

然而, 目前由于虚拟现实技术在农业机械教学上的应用还不广泛, 专门针对农业机械的软件屈指可数, 尽管近年来不少国内外研究者围绕虚拟农业机械进行了研究, 但是取得的成果甚微. 朱钟祥等人[2]以联合收获机的底盘为例, 利用虚拟现实软件EON及其二次开发技术实现了联合收获机底盘部件的交互性装配. 李润声等人[3]以棉花制钵机的动画制作为案例, 研究了虚拟仿真技术在农业机械课程教学中的应用, 缺点在于过分强调了虚拟仿真技术对农业机械课程教学的必要性, 但却没能给出有效的解决方式. 吴升等人[4]以Unity3D为开发平台, 实现了甘蔗种植生长周期虚拟展示以及种植过程中对农机设备的交互操作, 可以推广应用于其他农作物的虚拟生产作业培训系统的开发. 以上研究虽然将虚拟现实技术应用在农业机械教学中, 但是所开发的软件只针对某一种农机设备或某一类农作物的生产作业, 存在着资源不完善的问题, 无法勘破农业机械教学中的难题. 基于以上不足, 本文开发出一个全面、完善的仿真教学系统, 涵盖了耕地机械、整地机械、播种机械、植保机械、收割机械的拆装与设备维修保养及工作原理展示, 并且学生可以在系统实时生成的三维场景中操作机械设备, 模拟生产劳作.

1 虚拟农场农业机械学仿真教学系统的设计 1.1 系统的主体设计目的

本系统的主体设计目的是以建构主义学习理论为基础, 结合《农业机械学》的课程特点, 为学习者塑造一定的情景, 学习者能在其中自主地学习专业知识, 即在虚拟农场的三维场景之下, 学习者通过操作鼠标、键盘可以清楚的查看场景中的每一个角落、每一台设备和每一处细微结构, 并且场景中的每一台设备与每一个区域标示都是一个触发点, 点击即可进入到相应的教学界面, 实现相关项目的知识点教学, 见图1.

《农业机械学》所涉及的内容主要是田间作业机械, 而且侧重于生产机械化所必须的典型设备的构造、原理、生产作业等[5] , 所以本系统的关键点在于每种农机设备教学模式的设计. 从“老师易教, 学生易学”的角度出发, 系统的设置应以交互操作为主、演示教学为辅, 并且为了让老师了解学生在自主学习状态下的学习情况和出现的问题以及学生对自我知识点的审核, 在知识点功能模块的基础上还应构建考核功能模块.

图 1 “虚拟农场”背景下“农业机械学”系统的设计图

1.2 系统开发任务

虚拟农场农业机械学仿真教学系统最终要实现场景漫游、农机设备教学与典型农作物生产线的全方位展示, 因此可将其划分为3个大模块 , 然后根据教学需要再将这3个模块进行逐次划分. 故该系统的开发主要有以下4个任务:

(1) 建立农场的三维虚拟场景. 场景模型数据库与农机设备模型数据库的建立.

(2) 实现虚拟农场的漫游行走.

(3) 实现主要农机设备的教学.

(4) 实现典型农作物的生产流程.

1.3 功能分析

虚拟农场里的主要农业机械可分为耕地、整地、播种、植保、收割5大类, 每种设备的组成结构、工作原理、维修保养方式都大不相同, 因此系统开发的难点在于前期对每台设备完整资料的收集与整理.

针对虚拟农场农业机械学仿真教学系统开发的侧重点与任务需求, 该教学系统主要需要具备如下功能: ① 农场的漫游和实体模型的可视化; ② 交互式的虚拟拆装; ③ 设备工作原理演示; ④ 交互式的维修保养; ⑤ 自定义设备的工作参数; ⑥ 知识点的检验; ⑦ 模拟劳作.

1.4 结构设计

虚拟农场仿真教学系统的设计按照软件工程设计的思路, 贯彻分层布局和模块组成的思想[6], 从系统功能分析入手, 设计系统各个功能模块. 根据需要实现场景漫游、农机设备教学、机械化生产线3个功能模块的开发, 生成界面友好、操作简单、实用性强的教学系统, 全面地实现渗透式的教学培训. 整个系统总体结构框架如图2所示.

虚拟农场仿真教学系统的主体在于农机设备, 了解每台设备的结构和工作原理是整个系统开发的目的, 分析不同农机设备的工作特性, 将其划分为主要组成模块, 以玉米联合收获机为例, 玉米联合收获机由摘穗台模块 (拨禾机构、切割装置、输送装置、摘穗机构)、脱离系统模块 (剥皮机构、分离机构、清粮装置等)、底盘模块 (行走装置、动力装置、传动系统、驾驶室与操纵控制)、卸粮装置模块等4个模块组成. 将每台设备结构进行模块划分的原因, 是在学生进行拆装学习时, 能分块操作, 对设备结构有清晰而全面的认识.

图 2 虚拟农场仿真教学系统总体结构

1.5 开发流程

本系统以Unity3D为开发平台, 应用Solidworks、3Ds Max建模软件来构建三维虚拟农场的场景模型数据库与农机设备模型数据库, 并通过Photoshops软件来处理纹理贴图和设计界面. 最后将资源融合到Unity虚拟现实平台内, 在Unity中进行场景搭建、模型大小设置以及效果调试等操作, 并编写相关代码实现交互功能, 最后对项目进行打包发布. 其具体开发步骤如图3所示.

2 系统关键技术 2.1 界面设计

为了使学生在操作虚拟农场农业机械学仿真教学系统时实现各项功能, UI界面上设置了可操作的按钮, 使用者可以通过这些按钮来“立体化”学习相关知识点, 如拆装玉米联合收获机. 根据功能分析, 主场景设置为二级界面, 由于三维场景中只能完成场景漫游, 因此农机设备的教学模块或者机械化生产作业模块的实现就需要点击场景中的标示, 即虚拟按钮, 从而加载到下一级界面. 创建好的虚拟农场界面如图4所示.

图 3 虚拟农场仿真教学系统开发流程

2.2 模型的建立与优化处理

虚拟农场农业机械学仿真教学系统是一个数据庞大, 结构复杂的综合系统, 包含多种模型组件. 农场的场景模型数据库的模型包括: 地形、农作物、房屋建筑、自然指示牌、道路、天空等. 农业机械设备模型数据库的模型包括: 耕地机械、整地机械、播种机械、植保机械、收割机械, 其具体表现为: 拖拉机、旋耕机、播种机、喷雾机械、小麦联合收获机、玉米联合收获机、采棉机、苹果分级机、青贮收获机、干燥机、铧式犁、农机配套附件等.

系统采用Solidworks和3Ds Max共同来完成场景模型与农机设备模型的构建. 模型的面数制约着系统渲染处理的响应速度和系统的逼真性, 当模型的面数越高时, 能获得更强的沉浸感, 但是系统所占内存就会越大, 导致响应变慢, 所以为了兼顾视觉与效率的平衡, 需要对模型进行优化处理[7], 图5为优化处理前后的青贮收获机的对比图. 本系统的模型采用的优化方式如下:

(1) 对于各种复杂农机设备, 在保留模型的几何形状特征的同时对模型的重要细节局部优化, 忽略次要部分, 即用简单的轮廓来代替复杂的形状[8]. 如青贮收获机, 分析其工作原理, 对其基本组成模块的各部分机构, 如割台机构、切割调质装置、输送装置等进行精确化建模, 对其他次要部分进行简化处理, 删除一些隐藏的面.

图 4 界面展示

(2) 系统中各种农机设备的模型从Solidworks以.stl的格式导入到3Ds Max之后, 四边面会被转变为三角面, 模型的三角面数及顶点数会急剧增加, 例如青贮收获机的三角面数就高达90多万. 利用 3Ds Max中内置的脚本语言MaxScript, 编写一个后缀为.ms文件并运行程序, 3DS Max将自动的把模型中的三角面转换为四边面, 根据此种方式, 青贮收获机的模型的面数锐减到了40多万. .ms文件的具体内容如下:

obj_files = getFiles "F://NN//*.stl" //模型存至F盘的NN文件之中

for f in obj_files do

(

  if (doesfileexist f) do

   importFile f #noPrompt using:Wavefront_Object

  for geo in geometry

   where (matchPattern geo.name pattern:"3D_Object*") do

  (

   --geo.name = (f as string)

   pathaa = filterString (f as string) "//"

   geo.name = pathaa[pathaa.count]

  )

)

图 5 优化处理前后的青贮收获机的对比图

(3) 使用纹理来代替细节描述, 将二维图像映射到几何形状上减少环境模型的多边形数目. 系统对较简单的模型采用直接贴图渲染的方式, 如农场的地面、建筑物的花纹、农作物、维修工具等; 而对各种复杂的农机设备模型, 系统采用则外部指定式贴图坐标的方式, 分别对模型的每一个对象都进行贴图渲染.

2.3 交互技术

系统交互功能的实现最主要是交互脚本的设计, 只有当场景中的农机设备、标示框按钮等被赋予脚本组件并关联之后, 才能实现相关的交互操作. Unity3D支持Java和C#两种脚本语言, 其中C#的应用更为广泛, 因此本平台采用C#语言编写脚本来进行复杂的场景逻辑控制. 以二级界面虚拟农场场景中的“玉米联合收获机”触发按钮为例, 点击之后进入到三级的玉米联合收获机教学模块界面, 其功能实现创建顺序如下:

(1) 新建一个名为yumishouhuoji的C#脚本程序, 在程序中定义两个变量: canvas_scence02 , canvas_yumi03, 创建名为enter_yumi03的函数, 并在其中添加实现的功能代码语句; 实现代码如下:

using UnityEngine;

using System.Collections;

using UnityEngine.UI;

using UnityEngine.EventSystems;

public class yumishouhuoji: MonoBehaviour //脚本名为yumishouhuoji

{

public GameObject canvas_scence02; //定义名为canvas_scence02的变量

public GameObject canvas_yumi03; //定义名为canvas_yumi03的变量

public void enter_yumi03() //函数名为enter_yumi03

{

canvas_scence02.gameObject.SetActive(false); //二级界面关闭

canvas_yumi03.gameObject.SetActive(true); //进入到三级的玉米联合收获机教学界面

}}

(3) 给子物体yumishouhuoji添加一个Button组件, 将PS处理过的玉米联合收获机的提示文本框贴图以Sprite类型添加到Button组件里的Source Image中, 并将这个按钮组件的On click作为事件接口与canvas_scence02、enter_yumi03关联上.

(3) 给子物体yumishouhuoji添加一个Button组件, 将PS处理过的玉米联合收获机的提示文本框贴图以Sprite类型添加到Button组件里的Source Image中, 并将这个按钮组件的On click作为事件接口与canvas_scence02、enter_yumi03关联上.

3 效果演示 3.1 场景漫游

本系统依照一般网络游戏的漫游方式, 即按住键盘上的“W”、“A”、“S”、“D”键, 可以在虚拟农场中进行“前”、“左”、“后”、“右”的漫游操作, 从而对场景进行全方位的浏览; 同时鼠标点击2.5D热点地图上的区域, 可以快速的进行场景切换, 农场的区域效果如图6所示.

图 6 虚拟农场的区域效果图

3.2 教学演示

系统中的每一种农机设备的教学由拆装教学模块、拆装练习模块、工作原理模块、故障检测模块以及维修保养模块组成. 其中拆装教学模块是以动画播放的形式来将每种设备的主要组成结构来进行拆卸、装配的演示说明; 针对拆装练习模块, 设置了工具栏和零件栏, 以交互的方式来完成每种设备的主要组成结构的拆卸与装配的训练. 以小麦联合收获机为例, 其各个功能模块截图如图7所示.

3.3 生产作业

系统中的每一种农作物的机械化生产作业教学由耕地作业、播种作业、植保作业、收获作业等4大模块组成. 耕地作业以小麦机械化生产作业为例, 其操作时效果如图8所示.

图 7 小麦联合收获机教学展示

4 结论

本文利用计算机建模与仿真技术、虚拟现实及可视化技术, 以现代农场为原型, 从虚拟仿真教学的角度出发, 在Unity平台上开发了虚拟农场农业机械学仿真教学系统, 实现了真实的机械化生产作业的虚拟可视化, 并且对各种主要农机设备的拆装、维修保养及工作原理进行了在线展示. 操作者可以通过虚拟环境内反复对各种农机进行拆装以及故障维修训练, 掌握各式农机的内部结构、工作原理、维修保养等方面的知识, 并且该系统考核模块的设置更是对学生知识理解程度的检验. 应用结果表明, 该系统实现了“老师易教, 学生易学”的教学目的, “画面感”的场景设置提高了学生的学习兴趣, 有效促进学生对知识点的深层次理解以及实践能力的增强, 是农业机械教学模式的新突破.

图 8 耕地作业

参考文献
[1]
邹湘军, 孙健, 何汉武, 等. 虚拟现实技术的演变发展与展望. 系统仿真学报, 2004, 16(9): 1905-1909.
[2]
朱忠祥, 陈莉, 李山山, 等. 基于虚拟现实的联合收获机底盘虚拟装配关键技术. 农业机械学报, 2013, 44(S2): 262-267.
[3]
李润声, 林卫国, 王树才. 虚拟仿真技术在农业机械课程教学中的应用. 农业工程, 2015, 5(3): 112-114.
[4]
吴升, 郭新宇, 贺谊, 等. 基于Unity3D的甘蔗种植虚拟教育培训系统设计与实现. 中国农业科技导报, 2014, 16(6): 96-102.
[5]
李兵. 农业机械学省级精品课程建设的教学实践. 安徽农业科学, 2015, 43(25): 391-392. DOI:10.3969/j.issn.0517-6611.2015.25.141
[6]
杨雪松. 基于Unity 3D的发动机虚拟拆装系统研究. 机械, 2016(1): 32-35. DOI:10.3969/j.issn.1674-8530.15.0065
[7]
王秀萍, 程文明, 梁晓波, 等. 基于VR的起重运输机械培训仿真系统的研究. 机械设计与制造, 2015(7): 223-226.
[8]
万华明, 杨丽, 邹湘军, 等. 基于VR技术的几何建模与优化. 苏州科技学院学报(自然科学版), 2009, 26(4): 20-24.