普通车床是主要用车刀对旋转的工件进行车削加工的机床. 主要由工人手工操作, 生产效率低, 适用于单件、小批生产和修配车间. 目前国内绝大多数高校将普通车床实训课程作为必须课程.
普通机床操作学习相比于数控机床具有一定的危险性[1], 尤其在高校教学过程中, 受到实训场地、实训设备和授课教师等诸多方面的限制, 不能做到在保证每一位学生安全的同时又很好的掌握机床操作知识. 随着计算机技术和信息技术的高速发展, 采用更为新颖的教学方式, 已成为克服上述机床教学技术困难的一大重要手段, 而虚拟现实技术(virtual reality)的出现能有效解决传统教学存在的诸多问题[2,3].
何福本[4]虚拟仿真技术应用于普通车床加工工艺实训教学环节, 程松[5]结合Quest3D技术开发了虚拟车床教学系统, 库祥臣[6]在Visual Studio 2012环境下, 以三维开放图形库Open GL为工具, 研究开发了异形螺杆车削动态仿真系统, 杨洋[7]开发了车床主轴箱虚拟拆装系统, 唐亚平[8]通过3D虚拟技术与先进电子电路对机床设备进行虚拟仿真, 丁科[9]阐述了仿真机床建立的过程和方法, 王倩[10]利用Pro/E软件及内嵌eDrawings技术可视化展现了车床中主要部件的结构. 目前国内外大部分学者对车床的研究都是从性能角度考虑, 鲜有从安全性能角度出发进行研究, 事实上普通车床安全操作至关重要, 而虚拟现实技术是实现车床安全操作的有效技术手段.
本文以普通车床(CA6132)为研究对象, 把虚拟现实技术与传统的车床操作学习相结合, 利用SolidWorks软件建立模型、3DMAX软件贴纹理和添加动画、Unity3D引擎开发系统开发车床结构观察、典型表面加工以及零件加工工序操作演示等模块, 采用国外虚拟现实设备zSpace和zView开发出具有交互性和沉浸性等特点的立体显示系统.
1 总体研究思路首先研究车床学习内容和虚拟仿真系统开发方法, 根据车床出厂CAD图纸进行三维建模, 采用3DVIA数据转换技术更改模型格式, 运用3DMAX软件进行模型贴图或者渲染, 将处理好的模型导入Unity3D开发引擎中进行虚拟车床学系场景设计, 最后应用虚拟现实设备zSpace实现带有VR功能的车床教学系统, 具体开发流程如图1所示.
2 基于Unity3D的虚拟车床开发 2.1 图像立面分割技术
在对车床模型进行贴纹理时, 一般采集用于贴纹理的图像都需要矫正, 图像矫正通常使用立面分割技术[11,12], 它是通过水平和垂直分割, 逐步分割出最小单位的图像元素, 水平和垂直分割线确定函数为:
$\begin{aligned}hor(x,y) &= \max \{ {(\frac{{\partial I}}{{\partial y}})^2} - \alpha {\left| {\nabla I} \right|^2},0\} \\ & =\max \{ (1 - \alpha ){(\frac{{\partial I}}{{\partial y}})^2} - \alpha {(\frac{{\partial I}}{{\partial x}})^2},0\} \end{aligned}$ | (1) |
$\begin{aligned}ver(x,y) &= \max \{ {(\frac{{\partial I}}{{\partial x}})^2} - \alpha {\left| {\nabla I} \right|^2},0\} \\ &=\max \{ (1 - \alpha ){(\frac{{\partial I}}{{\partial x}})^2} - \alpha {(\frac{{\partial I}}{{\partial y}})^2},0\} \end{aligned}$ | (2) |
式中I代表图像强度intensity,
$ver(y) = ({\sum _x}ver(x,y)) * {g_\sigma }(y) - \beta ({\sum _x}hor(x,y)) * {g_\sigma }(y)$ | (3) |
$hor(x) = ({\sum _y}hor(x,y)) * {g_\sigma }(x) - \beta ({\sum _x}ver(x,y)) * {g_\sigma }(x)$ | (4) |
其中
$\{ {Y_i}\} = \arg {\min _{\left\{ {\widehat {{y_i}}} \right\}}}\frac{{{\sum _i}ver(\widehat {{y_i}})}}{{\left\| {\left\{ {\widehat {{y_i}}} \right\}} \right\|}},3 < \nabla \widehat {{y_i}} < 5,\left\{ {\widehat {{y_i}}} \right\} \subset \{ {y_i}\} $ | (5) |
其中, ‖·‖表示集合中的元素个数,
$\{ {X_i}\} = \arg {\min _{\left\{ {\widehat {{x_i}}} \right\}}}\frac{{{\sum _i}ver(\widehat {{x_i}})}}{{\left\| {\left\{ {\widehat {{x_i}}} \right\}} \right\|}},0.3 < \nabla \widehat {{x_i}} < 0.5,\left\{ {\widehat {{x_i}}} \right\} \subset \{ {x_i}\} $ | (6) |
根据以上的函数, 可以确定最优水平垂直分割线的位置, 机床操作面板的立面分割效果如图2.
2.2 虚拟车床主要功能实现过程(1) 虚拟车床学习系统的人机界面设计是通过OnGUI函数实现, 包括车床的主轴的旋转按钮、溜板的运动按钮等均通过OnGUI函数实现.
(2) 虚拟车床的旋转缩放功能通过调用射线函数和Lerp函数实现, 函数调用语句如下:
ray = Camera.main.ScreenPointToRay (Input.mousePosition); transform.rotation = Quaternion.Lerp (transform.rotation, mRotation, Time.deltaTime * Damping).
(3) 虚拟车床零部件的移动和旋转通过Unity3D的iTween函数实现, 车床溜板沿导轨的移动程序如下:
iTween.MoveBy(gameObject, iTween.Hash("y", 5, "easeType", "easeInOutExpo", "loopType", "none", "delay", .5)).
(4) 虚拟车床刀具切削工件通过碰撞函数OnTriggerEnter实现, 当刀具碰到工件时进行碰撞检测, 改变工件的标签属性, 当刀具检测到工件的标签名称, 则认为工件与刀具发生碰撞, 此时该时刻工件的切削状态将会被隐藏, 工件表现为下一时刻的切削状态, 具体函数调用如下:
void OnTriggerEnter(Collider other){
if (other.gameObject.CompareTag("part1"))
{
other.gameObject.SetActive(false);
}
}
3 基于zSpace的虚拟车床开发 3.1 虚拟现实基本原理虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统, 它利用计算机生成一种模拟环境, 是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中.
图3[13]描述了zSpace立体显示(图4)的基本原理, 假设眼睛自上而下视角的固定点F, 通过固定点的双目(Panum的融合区), 存在对象X和对象Y, 当点F固定时, F图像刺激两个眼睛对应的视网膜点并产生融合, 对象X位于双眼单视前产生交叉视差, 对象X刺激视网膜差异点在双眼融合, 因为X落Panum的融合区内, 对象Y处于前面的两眼视界, 还带有一个交叉视差, 图像从对象Y刺激两只眼睛的视网膜差异点被视为双, 因为Y处在Panum融合区外. 因为Y有两个视网膜图像且处在非常不同的视网膜区域, 左眼的Y图像可能刺激与右眼视野中的一个区域对应的视网膜区域, 该图像来自视野中不同物体的Z图像, 从而导致双眼竞争, 形成立体显示效果.
3.2 虚拟车床模型建立
Unity3D软件本身并不具备建立模型功能, 所以在开发前必须根据实物建立相应的三维模型, 图5是教学中实际使用的车床模型.
3.3 虚拟车床学习场景开发在Unity3D软件中进行虚拟学习场景的开发, 主要包括对虚拟车床结构认识和车床加工学习的场景开发, 下面对虚拟车床学习场景做简要说明.
图6为车床结构认识界面, 将普通机床分解为十大部件, 并可进行拆解、观测各部件结构和名称.
图7为车床加工切削界面, 学习普通车床加工操作步骤, 并设置多个视角观测加工过程.
3.4 系统开发特点
应用zSpace进行虚拟现实系统开发, 相对于Unity3D开发的系统, 最重要的便是体现新系统自然的交互性、沉浸性的特点.
3.4.1 系统交互性和沉浸性开发基于Unity3D的开发交互设计是通过调用OnGUI()函数实现, 即通过鼠标点击按钮实现, 这样虽然相比传统的多媒体课件略有智能感, 但是无论从交互成都和沉浸程度均不能让学习者有身临其境之感, 本节则尝试调用某些函数将实现物体对物体的交互方式. 如图8, 当工件(灰色)靠近毛坯件(白色)时测算模型间的距离, 如果二者距离小于既定数值, 则可实现场景间的交互功能, 实现交互的关键程序为:
float dist1 = Vector3.Distance (lathe.position, Room.position);
if (dist1 < 0.035)
{
Application.LoadLevel("interduction");
}
首先获得测距物体的位置信息, 而后调用距离函数, 如果物体间的距离小于0.035则可实现场景间的交互, 此种切换场景的方法更为自然.
3.4.2 虚拟车床立体学习场景
按照实际车床的学习要求, 本文开发了基于虚拟现实设备zSpace的完整虚拟车床立体学习系统, 包括了系统总界面、车床结构界面、车床主要加工表面和实例加工学习界面, 主界面如图9所示.
3.5 增强现实技术应用
zSpace还具有增强现实功能, 配合zSpace使用的zView设备能让学生分享虚拟技术的学习体验, zView以高清摄像头作为硬件屏幕重叠技术作为软件, 将zSpace画面进行重叠处理, 该技术的目的是在屏幕上把虚拟世界套在现实世界并进行互动. 图10为车床外部结构增强现实效果, 借助zView能让机床虚拟模型“跑出”屏幕达到分享学习体验的目的.
4 结束语
本文开发了普通车床虚拟仿真系统, 提出系统开发的一般流程, 阐述立面分割技术的一般原理, 应用虚拟现实设备zSpace和增强现实设备zView开发了带有交互性和沉浸性的虚拟车床学习系统, 改进了机床操作的教学方式, 实践证明, 虚拟教学软件与实践教学相结合能更改善教学效果, 同时也可为虚拟仿真以及虚拟现实技术在教育教学领域的应用提供指导.
[1] |
张新庄. 基于Unity3D的车床虚拟仿真实训系统开发. 数字技术与应用, 2015(1): 140. |
[2] |
郭建, 汪广扩, 刘莹. 基于虚拟现实技术的车床教学训练系统的研究. 激光杂志, 2013, 34(1): 59-60. |
[3] |
李静, 张立军, 任天猛. 交互式发动机虚拟装配系统研究. 制造业自动化, 2017, 39(2): 109-113. |
[4] |
何福本, 梁延德, 张红哲, 等. 增强现实技术在车削加工实训教学中的应用. 实验技术与管理, 2017, 34(3): 127-129, 150. |
[5] |
程松, 付宏鸽. 基于Quest3D的虚拟现实技术在车床实验教学中的应用. 电脑迷, 2016(4): 143-144. |
[6] |
库祥臣, 曹贝贝, 张国庆. 基于OpenGL的异形螺杆虚拟车床加工仿真系统研究. 制造技术与机床, 2017(5): 74-77. |
[7] |
杨洋, 曲晓海, 李晓春, 等. 车床主轴箱虚拟拆装系统在拆装实训教学中的应用. 装备制造技术, 2013(7): 254-255. |
[8] |
唐亚平. 一种软硬件结合的仿真机床实训系统. 信息技术与信息化, 2015(4): 174-175. |
[9] |
丁科, 邓奕, 宁立伟. 基于VERICUT的虚拟机床建模及应用. 湖南工程学院学报, 2016, 26(2): 24-28. |
[10] |
王倩, 叶安英, 李颖芝. Pro/E虚拟仿真在车床拆装实训教学中的应用. 制造技术与机床, 2012(2): 29-31. |
[11] |
韩福波, 汪云海, 南亮亮, 等. 数据驱动的建筑物立面重建. 计算机辅助设计与图形学学报, 2015, 27(11): 2025-2030. |
[12] |
Le Tran HN, Sornum K, Seah HS, et al. A systematic approach for rapid 3D reconstruction from photosets. Proceedings of the 11th International Conference on Control Automation Robotics & Vision. Singapore. 2010. 1167–1174.
|
[13] |
Patterson R. Human factors of stereo displays: An update. Journal of the Society for Information Display, 2009, 17(12): 987-996. DOI:10.1889/JSID17.12.987 |