_beginthread用法_CreateThread

_beginthread用法_CreateThread本文发布在《起重运输机械》杂志,如需转载,请注明出处作者:杨 普 杨艳芳摘 要:由于门座起重机的结构复杂且体积庞大,进行实装拆卸训练、内部结构学习、工作原理认识难以满足要求。因此,文中设计了门座起重机虚拟拆卸系统,运用 MFC 与 OSG 相结合的方法,实现了虚拟拆卸系统的开发,

本文发布在《起重运输机械》杂志,如需转载,请注明出处

作者:杨 普 杨艳芳

摘 要:由于门座起重机的结构复杂且体积庞大,进行实装拆卸训练、内部结构学习、工作原理认识难以满足要求。因此,文中设计了门座起重机虚拟拆卸系统,运用 MFC 与 OSG 相结合的方法,实现了虚拟拆卸系统的开发,其功能包括起重机起升机构、运行机构、回转机构、变幅机构中的主要零部件,通过自动拆卸、手动拆卸以及相关辅助功能的配合,可用于门座起重机的企业设备报废工艺验证、员工维修技能培训、以及原理认知学习、教学等领域,这种方式既安全又经济,还可重复,具有重要意义、

0 引言

在门座起重机设计、维护、维修、报废、回收等过程中,拆卸操作是必不可少的。产品拆卸的难易程度即可拆卸性是绿色设计理念的重要评价指标之一。据统计,在产品设计过程中的拆卸成本占总成本的 25%;而在设备维护、维修过程中,拆卸更是不可避免的。在设计过程中,如果设备的拆卸性验证完全依靠物理样机,会使设计周期过长、成本过高;而传统设备维护、维修人员的培训是通过物理样机完成的,设备数量、场地大小等因素限制了训练效率,加大了训练成本,提升了训练风险。因此,如何安全、高效、经济的进行设备维护拆卸、维修拆卸、报废回收拆卸也成为了亟待解决的问题 [1]。虚拟拆卸技术以其直观、可重复、安全、环保等优势,在众多行业中得到了广泛的应用,同时也受到国内外研究人员的重视。

虚拟拆卸在维修培训方面的应用可以追溯到 20 世纪 90 年代,美国哈勃望远镜入轨后,相关技术人员发现其光学系统存在结构缺陷,美国国家航空航天局 [2] 为了保证拆卸维修工作的万无一失,通过建立虚拟拆卸维修环境,对宇航员进行沉浸式拆卸训练,经过训练后的技术人员圆满的完成了这次维修任务。德国弗劳恩霍夫协会工业工程研究所 [3] 虚拟现实实验室结合虚拟现实技术模拟拆装环境,并通过建立操作者模型实现人机交互,该系统获得了慕尼黑计算机展览会最佳系统奖。美国宾夕法尼亚大学 [4] 开发了 AVIS-MS 可视化维修仿真系统,经过科研人员的努力,实现了维修服务的可视化,系统将维修拆卸技术规程通过可视化技术展示给操作者,极大地降低了对使用者的专业要求,提升了拆卸效率。王炳达等针对目前农机设备维护存在的困难,提出了建立虚拟场景实现虚拟拆卸的方案,并得出了将虚拟现实技术应用于装备拆卸方面具有较好的实用性的结论。陈浩等 [5] 使用虚拟现实平台 Virtool 开发了一款虚拟拆卸系统,证明了虚拟拆卸可以解决实装拆卸过程繁琐、成本高、安全性低等问题。张王卫等 [6] 和康兴无等 [7] 将虚拟现实技术应用到复杂装备的拆卸训练中,验证了虚拟拆卸系统在复杂装备拆卸培训中的优越性。

从上述文献可以得出结论,虚拟拆卸应用在复杂设备、大型设备维修培训、设备结构分析等方面具有得天独厚的优势,同时也可取得很好的效果。但是,目前针对常见的虚拟拆卸培训系统还存在成本高、系统功能不完善等问题。因此,本文设计了一种桌面式虚拟拆卸系统,通过 OSG 图形引擎建立虚拟场景,以鼠标、键盘作为交互设备,完成桌面式门座起重机虚拟拆卸系统开发。最后,将 MFC(Microsoft Foundation Classes)与OSG 结合,搭建虚拟拆卸系统 UI(User Interface),高质量的虚拟样机配合友好的操作界面,通过实时人机交互操作,对于操作者掌握设备结构,完成虚拟拆卸员工培训、学生学习以及实践操作有重要意义。

1 交互式虚拟拆卸系统总体设计

针对门座起重机的运行机构、变幅机构、起升机构、回转机构的部分零部件,搭建虚拟拆卸系统。如图 1 所示,门座起重机虚拟拆卸系统主要包括自动拆卸模块、手动拆卸模块和辅助功能挂件模块等;该系统以鼠标、键盘为交互设备,在自动拆卸过程中可通过键盘控制拆卸进程,并可利用鼠标切换视角,多角度、全方位地观察拆卸过程,提高设备结构熟悉的速度。手动拆卸需要用户选择目标零件进行拆卸,通过添加的拆卸过程路径记录和工具切换功能,共同对拆卸过程进行记录和评价。

_beginthread用法_CreateThread

另外,系统加入了场景漫游、立体显示等拆卸辅助挂件,进一步提升了拆卸系统的实用价值,使用户身临其境感 受拆卸过程。

2 关键技术研究

OSG 是一款具备开源、平台无关以及渲染质量高等优良特性的三维图形渲染引擎,通过 OSG 图形引擎可以快速完成高质量的交互式场景程序开发。为了保证虚拟拆卸系统功能的完整性,通过应用 OSG 完成自动拆卸、手动拆卸以及部分辅助功能的设计。开发自动拆卸的主要目的是为了让用户能够更好地了解门座起重机的设备结构,通过添加场景漫游实现设备结构的全方位观察,提升学习效率。手动拆卸是通过鼠标拖曳实现设备拆卸,与考核机制配套使用可以帮助用户完成拆卸训练。

2.1 拆卸路径规划

拆卸路径、序列规划是虚拟拆卸系统搭建的关键问题,其主要目的是为了保证拆卸过程的可行性。虚拟拆卸规划主要包括对零部件拆卸顺序规划和拆卸路径规划。虚拟拆卸路径规划确保了拆卸的真实性,避免拆卸过程中出现零部件穿透的情况,由碰撞检测机制实现。本文旨在构建一个可视化虚拟现实人机交互拆卸系统,采用规范的路径规划方法,使培训者在虚拟三维环境中对虚拟设备进行拆卸训练,以达到熟悉装备结构和拆卸路径的目的。

虚拟拆卸路径规划在保证零部件拆卸顺序的基础上,要能体现出零部件的约束和装配关系,并生成一条从拆卸开始到拆卸结束的无碰撞路径。培训者通过虚拟拆卸学习到的不仅仅是拆卸的顺序,还能了解装备的外形、结构以及配合关系,这样在实际操作的时候就能游刃有余。对于虚拟拆卸路径规划,关键是在最短时间内、最小内存消耗下确定无碰撞路径。本文使用射线检测算法确定最佳路径,射线检测算法是 OSG 独有的检测机制,简化了碰撞检测的过程。

算法的原理是沿拆卸路径的方向产生一条射线,除拆卸零部件之外剩下的部件生成包围盒,通过碰撞检测机制检测射线与包围盒相交的情况,如无碰撞则该路径为最佳拆卸路径;否则,重新改变拆卸方向,继续检测,直至生成无碰撞的路径,但此时的路径需要进行光滑处理。射线检测算法对路径进行规划的原理如图 2 所示。

_beginthread用法_CreateThread

该算法可减少碰撞检测的频率,减轻计算机运行负担,加快虚拟场景的运行速度。在虚拟拆卸路径规划时,某时刻碰撞检测的次数最多只有一次,即射线与装备整体的碰撞检测,避免了拆卸零部件对整体各个零部件的碰撞检测。该算法具有实用性,在很多形式下均可共用(如运动的物体检测前方是否存在障碍物)。

2.2 交互式拆卸关键技术

1)自动拆卸模块

自动拆卸功能的主要包含运动设计和键盘交互两方面,如图 3 所示。首先要完成动画设计,即零件拆卸动画路径以及序列的安排;然后,通过事件适配器完成交互操作,让使用者可以控制设备自动拆卸过程,切换观看角度以更好地了解设备结构。

_beginthread用法_CreateThread

①复合运动

在虚拟拆卸场景中,实现自动拆卸的无碰撞路径设计主要通过动画路径规划方法。动画的本质是虚拟物体的空间坐标变换,具体来说就是物体顶点坐标经过位置变换,完成物体的移动。三维空间中的运动都可以通过平移、缩放、旋转等运动形式表示出来,也就是复合运动。

在自动拆卸过程中,主要涉及的运动方式有两种,一种是位移,另外一种是位移与旋转的复合运动。复合运动是通过平移、旋转、缩放矩阵的级联完成的。如图 4 所示,在拆卸中常见的螺钉,螺钉的运动就是位移与旋转的级联。首先将位移变换矩阵与旋转变换矩阵级联成一个变换矩阵,而不需要分别完成两次变换,极大地提高了变换效率。

_beginthread用法_CreateThread

②键盘交互

OSG 提 供 的 图 形 用 户 接 口(Graphics User Interface,GUI)封装了大部分常用操作系统的交互动作捕捉接口函数。为了避开系统底层复杂的交互定义,OSG提供了一种适配机制,能将系统底层的交互定义统一到OSG 交互定义中来,这就是事件适配器。在这里,通过重载 osgGA 库中的事件处理函数 handle()开发具体的交互功能。通过 GUIEventAdapter 类下的 getKey()函数以及 getEventType()函数获取按键类型以及事件类型,进而通过 switch 函数实现不同情况下的对应功能。

上述复合运动与键盘交互分别是自动拆卸的两个关键问题,通过平移、旋转、缩放变换对目标对象进行坐标变换,控制设备模型的运动,而键盘交互是用户控制拆卸进程的方式,以达到具有交互功能的自动拆卸,如图 5 所示。

_beginthread用法_CreateThread

图 5 回转机构自动拆卸

2)手动拆卸模块

①拖曳器

拖曳器是用户通过鼠标将虚拟场景中被选中的对象进行移动、旋转操作的工具。OSG 中的拖曳器并不是直接对目标物体的坐标进行修改,而是基于 OSG 的节点场景管理方式,将一节点设置为目标物体的父节点,然后对父节点进行矩阵变换操作,进而表现为目标物体的位移、旋转、缩放操作。

OSG 提供了平面拖曳器、平面轨迹球拖曳器、轨迹球拖曳器、平移拖曳器、盒式拖曳器等多种类型的拖曳器,如图 6 所示。机械设备在设计时为了方便拆装,拆卸方向一般比较固定,故为了可以自由设定设备拆卸的约束方向,选择设置 3 个一维平移拖曳器实现设备X、Y、Z 方向的拖曳拆卸。手动拆卸通过单击拖曳器并拖动实现,在 Windows系统环境下,用户使用鼠标单击左键,系统将此事件封装后放入消息队列中等待响应。

_beginthread用法_CreateThread

图 6 手动拆卸

其主要原理是:单击鼠标左键时,触发 GUIEventAdapter 方法下的 Push 事件,再用 LineSegment Intersector 创建线段交集检测函数,事件适配器 ea 通过 get 方法得到左键单击事件发生的坐标位置,检测是否与某一虚拟物体的X、Y 坐标一致,如果一致则选中拖曳器,完成拖曳操作。

②物体高亮

目前,大多数桌面式虚拟拆卸系统因计算机显示器分辨率限制对类似于门座起重机的大型设备不能做到小零件的快速选择,为了解决这一问题,本文使用了一种基于线框显示的辅助对象选择方法,如图 7 所示。

_beginthread用法_CreateThread

图 7 设备模型的高亮显示

通过设备模型的线框显示,用户可以更方便快捷地选取目标零件,避免误操作的发生,提升了拆卸训练的效率。

3)辅助功能模块

①场景漫游

在虚拟拆卸场景中,场景漫游是通过设置漫游器实现的,漫游器其实就是改变观察者(相机)的坐标位置和观察角度。OSG 图形引擎根据用户的不同需求提供了多种漫游方式:轨迹球漫游、飞行漫游、驾驶漫游等。

交互式场景漫游器就是通过事件响应完成相机窗口的矩阵变换,从而达到操作者通过键盘鼠标等外部输入控制视角的目的。漫游器的场景更新原理如图 8 所示。

_beginthread用法_CreateThread

图 8 场景漫游器原理及实现流程

在进行漫游时,场景核心管理器 Viewer 中使用SetCameraManipulator 自定义一个单独的场景漫游操作器,当收到外部键盘 / 鼠标输入后,EventHandle 启动事件响应机制,调用 handle 函数,之后根据用户按键相机位置发生变化,至于场景漫游器的灵敏度,可以通过设置移动、旋转步长进行控制,最后 Viewer 在帧绘制时获取到已经改变的视口位置矩阵并更新相机位置。

②相机路径记录

为了更好地通过虚拟拆卸系统观察自动拆卸过程,设置路径记录与回放功能,在拆卸进行时按下“R”或“r”键开始记录。在拆卸进行完毕后,再次该按键即可对记录拆卸过程进行回放。 手动拆卸过程中的路径记录可记录拆卸过程,方便后期对于拆卸操作的评价以及纠错。

相机路径记录的原理是使用 Animation Path Manipulator 类的 insert() 函数将相机在某一时间段内的关键点信息保存到一个 PATH 文件内,主要包括时间、位置以及运动方式信息等。计算机依据这些信息,对关键点进行基于插值算法的平滑连接过度,形成流畅的动画效果,实现拆卸过程的回放。

③工具库

在实际拆卸过程中,不同的零件需要不同的拆卸工具,为了更好地提升虚拟拆卸系统的实用性,建立拆卸工具库,在工具库中存放一定数量的常用工具(两用扳手、螺丝刀等)。在虚拟拆卸过程中,需要特定工具时,如果操作者没有选择对应拆卸工具,则通过非模态窗口进行错误操作提示。

④立体显示

立体显示可分为眼睛和头盔显示技术、自动分光立体显示技术和体三维立体显示技术等。本文所用硬件设备为立体眼镜,通过立体眼镜实现三维显示的方法主要有分时、分色和分光等。本文使用 OSG 图形引擎实现虚拟拆卸系统的立体显示功能,立体显示主要包括互补色、水平分割、水平交错、垂直分割、垂直交错以及左右眼显示等模式,通过设置按键响应设计了显示模式的交互切换功能。虚拟拆卸环境中的立体显示效果如图 9所示。

_beginthread用法_CreateThread

图 9 起升机构轴承座立体显示效果图

2.3 MFC 与 OSG 的结合

系统使用 MFC 作为交互界面开发工具,实现的关键是完成 OSG 与 MFC 之间的结合。OSG 是一套基于C++ 平台的应用程序接口,而 MFC 是微软开发的基础类库,它基于 C++ 封装了多个 Windows API,专门用于图形界面开发。MFC 通过线程机制可以创建两种不同的线程,分别为工作者线程和用户界面线程。工作线程不具备消息机制,不参与程序运行过程中相关任务的维护,只作为后台执行相关的计算任务。用户界面线程有完整的消息循环和处理机制,用于处理用户输入和响应界面交互。二者都是基于 C++ 语言的,都是基于线程工作的,使 MFC 与 OSG 的结合成为可能。

实现结合的关键是 OSG 如何在指定的窗口渲染场景图形,实现原理如图 10 所示。MFC 程序在处理培训人员单击事件时,响应函数里会运行 _beginthread 线程创建函数,函数里的第一个参数指向新线程的起始地址,即新线程是对 OSG 场景进行渲染。场景渲染包括场景拣选、场景更新和场景绘制,在渲染之前,OSG 线程会处理来自 MFC 主线程传递来的事件,从而实现交互的功能。

_beginthread用法_CreateThread

图 10 OSG 与 MFC 实现结合

3 系统实现

应用 MFC 开发虚拟拆卸系统交互界面,打开后可根据自身需求选择不同拆卸模式。系统主要模块包括交互式自动拆卸、手动拆卸以及操作手册等 3 部分,每个模式都包含门座起重机起升机构、运行机构、回转机构、变幅机构的典型设备零部件。

为了达到起重机拆卸训练和学习的目的,面向门座起重机的虚拟拆卸系统设置了用于用户学习的自动拆卸模块,用户可通过键盘控制拆卸过程的进行,使用场景漫游全面的观察设备结构,配合文字提示快速熟悉设备结构;手动拆卸需要用户自主选择拆卸目标零件,由于起重机体积庞大,而部分零件相对较小,通过高亮显示的选择辅助可方便快捷地选中目标零件,提高效率,立体显示功能配合三维眼镜还可进一步提升场景的视觉体验。

4 结束语

针对门座起重机工况复杂,设备维修、维护拆卸频率相对较高的问题,搭建了包括起升机构、运行机构、回转机构、变幅机构的门座起重机虚拟拆卸系统,通过图形引擎 OSG 完成了虚拟拆卸系统自动拆卸、手动拆卸功能的开发,为提升系统的实用性添加了一系列辅助功能。最后,结合 MFC 完成了系统交互界面的开发,实现了系统的集成,对实际拆卸培训、教学等工作具有一定的指导意义。

参考文献

[1] 乐矣天,丁海君 . 门座起重机回转下支承维修与保养 [J].港口装卸,2016(5):43,44.

[2] MIL-HDBK-470A.Designing and Developing Maintainable Products and Systems [Z].Department of Defense Handbook,1997(8).

[3] Srinivasan H,Shyamsundar N,Gadh R.A framework for virtual disassembly analysis[J].Journal of Intelligent Manufacturing,1997,8(4):277-295.

[4] Wang H,Zeng H,Zhang J,et al.Modeling of Virtual Assembly and Disassembly Process Based on Selective Disassembly[J].Journal of Graphics,2015.

[5] 陈浩,张桂香,张庆洪 . 基于 Virtools 的机械装备虚拟拆卸系统研究 [J]. 现代制造工程,2015(1):30-34,29.

[6] 张王卫,苏群星,刘鹏远,等 . 面向装备维修的虚拟拆卸系统关键技术研究 [J]. 系统仿真学报,2013,25(12):2 879-2 885.

[7] 康兴无,黄顺勇,王永年,等 . 复杂装备虚拟拆卸 / 装配训练及考核技术 [J]. 四川兵工学报,2011,32(6):25-27,30.

[8] 陈定方 . 五彩缤纷的虚拟现实世界 [M]. 北京:中国水利水电出版社,2015.

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/17403.html

(0)
上一篇 2024年 9月 16日
下一篇 2024年 9月 16日

相关推荐

关注微信