郑州大学学报(理学版)  2019, Vol. 51 Issue (1): 8-12  DOI: 10.13705/j.issn.1671-6841.2018001

引用本文  

徐丙立, 张飞, 张承钿, 等. 沉浸式虚拟维修位置追踪与动作虚实耦合研究[J]. 郑州大学学报(理学版), 2019, 51(1): 8-12.
XU Bingli, ZHANG Fei, ZHANG Chengdian, et al. The Position Tracking and Action Matching for Immersive Virtual Maintenance[J]. Journal of Zhengzhou University(Natural Science Edition), 2019, 51(1): 8-12.

基金项目

国家自然科学基金项目(41771442,41271402);装备发展部预研项目(315050501)

通信作者

张飞(1989—), 男, 湖北荆门人, 硕士研究生,主要从事虚拟现实与人机交互研究,E-mail:474812403@qq.com

作者简介

徐丙立(1975—),男,北京人,副教授,主要从事虚拟地理环境与人机交互研究,E-mail:xublmail@126.com

文章历史

收稿日期:2018-01-01
沉浸式虚拟维修位置追踪与动作虚实耦合研究
徐丙立1 , 张飞1,2 , 张承钿2 , 崔颠博1 , 李霖1 , 饶毅1     
1. 陆军装甲兵学院 信息系 北京 100072;
2. 汕头大学 工学院 广东 汕头 515063
摘要:针对沉浸式虚拟维修人机交互中的位置追踪与动作耦合问题,研究并改进了高精度快速位姿估计算法,用于解决维修操作人员骨骼节点在空间中的位姿计算问题,实现了对操作人员的关键节点的位置追踪.研究了维修操作人员与虚拟维修动作之间的耦合技术,包括坐标变换、骨骼绑定以及改进型循环坐标下降算法驱动动作.研究并构建了某雷达设备虚拟维修训练系统,通过测试表明,位置追踪精度和动作的延迟基本能够满足沉浸式虚拟维修训练的需要.
关键词沉浸式虚拟维修    定位追踪    虚拟耦合    位姿计算    
The Position Tracking and Action Matching for Immersive Virtual Maintenance
XU Bingli1 , ZHANG Fei1,2 , ZHANG Chengdian2 , CUI Dianbo1 , LI Lin1 , RAO Yi1     
1. Department of Information, Academy of Armored Force Engineering, Beijing 100072, China;
2. College of Engineering, Shantou University, Shantou 515063, China
Abstract: According to the problem of position tracking and action matching for human-computer interaction in immersive virtual maintenance, a high precision and rapid pose estimation algorithm was studied to calculate the position and pose of the operator′s skeleton precisely. Besides, a new method was studied to match the maintenance operator′s action with the human body model′s, which included coordinate transformation, bone match and improved cyclic coordinate descent algorithm. A virtual maintenance system was developed. Test results showed that the precision and time delay fulfilled the requirements of immersive virtual maintenance.
Key words: immersive virtual maintenance    position tracking    action matching    calculate position and pose    
0 引言

虚拟维修(virtual maintenance, VM)基于虚拟化手段,为装备结构认知、拆装训练、维修论证、装备保障等提供支撑,不仅在装备的设计生产阶段同步开展设备的可维修性实验,而且能够在后续的装备维修保养中节约维修训练成本、提高维修训练效率.目前,虚拟维修技术已经在航空航天[1]、国防军事[2]、装备研制[3]等诸多行业得到了广泛应用.随着虚拟现实(virtual reality, VR)技术的发展,虚拟维修模式正从桌面式虚拟维修向沉浸式虚拟维修方式演化.沉浸式虚拟维修(immersive virtual maintenance, IVM)是以计算机技术和虚拟现实技术为依托,在包含数字样机与维修人员三维人体模型的沉浸式虚拟场景中,通过现实受训对象驱动虚拟人体模型来完成对虚拟装备的故障诊断、结构拆装、故障排除等一系列动作[4].相比较桌面式虚拟维修,沉浸式虚拟维修极大地提高了沉浸感,但维修操作者无法通过传统的计算机外设与虚拟环境进行交互,因此必须研究新型的人机交互模式,通过操作人员的动作直接驱动虚拟环境中的装备维修.为此,需要解决两个关键技术,即位置追踪与动作的虚实耦合.HTC VIVE以可靠的沉浸式展示效果以及有效的人机交互模式,使得其在推出伊始即受到了虚拟维修的重视[5].本文以HTC VIVE为硬件支撑设备,研究并提出了基于高精度快速位姿估计(efficient perspective-n-point, EPnP)算法和基于坐标变换、骨骼绑定和改进型循环坐标下降(cyclic coordinate descent, CCD)算法,为解决沉浸式虚拟维修下人体定位追踪和动作的虚实耦合等问题提供支撑.

1 基于EPnP算法的跟踪定位

跟踪定位技术就是在现实世界中的人体关键骨骼部位固定定位器,持续跟踪记录定位器的空间坐标信息,达到捕获人体关键骨骼部位的位置与姿势的目的[6].在沉浸式虚拟环境中,跟踪定位是实现沉浸感和交互的关键,为实现维修动作的虚拟耦合提供坐标数据.跟踪定位过程如图 1所示,在需要跟踪定位的物体表面固定n个特征点(ν0, ν1, …,νn).当物体在空间中运动时,用[R(w), t]表示其运动过程,w表示角度的变化,t表示位移的变化.

图 1 虚拟环境中的追踪定位 Fig. 1 Tracking in the virtual environment

在虚拟维修过程中,维修人员的交互动作会使特征点之间的相对位置产生变化,因此PnP求解得到的结果稳定性差,易收到噪声.本文采用PnP的改进型算法EPnP来计算虚拟维修人员的位姿信息[6]. PnP问题是指,在虚拟环境中,假设被跟踪的人体关键骨骼部位有n个特征点(ν0, ν1, …,νn),并已知它们的相对位置信息,n个特征点在透视平面中的投影点为(c1, c2, …, cn),从投影点求解物体相对于相机的位置和姿态信息[7],如图 2所示.这样,当我们分别求得多个不同拍摄时刻下物体相对于相机的位置和姿态,就可以求出这段时间内物体相对于相机的平移和旋转.

图 2 PnP问题中相机、对象与参考面 Fig. 2 Camera, object and reference surface in PnP problem

EPnP算法的思想是使用4个非共面的虚拟参照点表示空间中的特征点,通过特征点和定位设备之间的关系求解虚拟参照点的坐标,进而求得空间特征点的位姿信息.我们采用激光定位设备实现相机的功能,维修人员关键骨骼节点固定追踪器作为特征点.虚拟维修人员所在局部坐标系用Fc表示,相机所在世界坐标系用Fw表示,空间中4个非共面虚拟参考点为c1, c2, c3, c4,世界坐标系中的点Piw用参考点表示为$\mathit{\boldsymbol{P}}_i^w = \sum\limits_{j = 1}^4 {{\alpha _{ij}}\mathit{\boldsymbol{c}}_j^w}, \sum\limits_{j = 1}^4 {{\alpha _{ij}} = 1}.$同理,在局部坐标系下的点可表示为$\mathit{\boldsymbol{P}}_i^c = \sum\limits_{j = 1}^4 {{\alpha _{ij}}\mathit{\boldsymbol{c}}_j^c}, \sum\limits_{j = 1}^4 {{\alpha _{ij}} = 1}$.根据投影方程得到局部坐标系与世界坐标系中参考点的约束关系∀iωi[vi, 1]=APic=$A\sum\limits_{j = 1}^4 {{\alpha _{ij}}\mathit{\boldsymbol{c}}_j^c}$, A为常系数.写成矩阵形式为∀iωi[vi, 1]= $\left[{\begin{array}{*{20}{c}} f&0&{{\mathit{\boldsymbol{v}}_c}}\\ 0&{{f_\nu }}&{{\mathit{\boldsymbol{\nu }}_c}}\\ 0&0&1 \end{array}} \right]\sum\limits_{j = 1}^4 {{\alpha _{ij}}\left[{x_j^c, y_j^c, z_j^c} \right]} $.将等式的第3列代入第1,2列,计算可以得到方程组Mx =0,x=[(c1c)T, (c2c)T, (c3c)T, (c4c)T],在方程组中,4个参考点共有12个变量,M为2n×12的矩阵.所以x属于M的右零空间,vi为矩阵M的右奇异向量,可以通过求解MTM的零空间特征值得到x=$\sum\limits_{i = 1}^N {{\beta _i}{\mathit{\boldsymbol{\nu }}_i}}$.

求解x的过程中,确定了βi也就确定了合适的线性组合.根据参考点位置的不同,矩阵MTM的零空间维数N可能为1~4维.求解β的策略是控制点在坐标系FcFw中,两两距离相等.而x的分量坐标分别表示不同的参考点在坐标系中的坐标,共有6个约束.

前面的步骤可以得到目标点在局部坐标系中的闭式解,作为G-N优化的初始值,优化的变量为β=[β1,…, βN]T,目标函数为Error(β)=$\sum\limits_{\left( {i, j} \right)s.t.i < j} {\left( {{{\left\| {\mathit{\boldsymbol{c}}_i^c - \mathit{\boldsymbol{c}}_j^c} \right\|}^2} - {{\left\| {\mathit{\boldsymbol{c}}_i^w - \mathit{\boldsymbol{c}}_j^w} \right\|}^2}} \right)} $。该优化过程与参考点的数目无关,优化步骤和时间是常数.

计算不同维数的零空间的误差,选择误差数最小维数对应的β,得到x,恢复控制点在局部坐标系中的坐标,并根据质心坐标系得到参考点的局部坐标系的坐标.求两个坐标系的位姿变换Rt的步骤如下.

(1) 求中心点,Pcc=(∑Pci)/N, Pwc=(∑Pwi)/N; (2)去中心,Qci=Pci-Pcc, Qwi=Pwi-Pwc;(3)计算H矩阵,H= $\sum\limits_{i = 1}^N {\mathit{\boldsymbol{Q}}_c^i{{\left( {\mathit{\boldsymbol{Q}}_w^i} \right)}^{\rm{T}}}}$; (4)进行奇异值分解,H=UVT,计算x=VUT, 如果det(x)=1,则R=x, t=Pcc-RPwc.否则R(2, .)=-R(2, .).

2 维修动作虚实耦合技术

沉浸式虚拟维修是由人体模型主导,是人体模型和虚拟装备动态交互的过程[8].当维修人员被追踪定位之后,其关键骨骼节点的位姿数据传递给虚拟人体模型,驱动人体模型进行相应的维修动作.虚拟动作耦合就是维修人员驱动人体模型的过程,即将现实世界中的动作映射到虚拟环境中人体模型上.耦合过程分为3个部分:坐标系变换、骨骼绑定和动作的实时驱动.

2.1 坐标系变换

坐标系变换就是将维修人员所在局部坐标系中的点映射到虚拟环境世界坐标系中的过程.维修人员和虚拟环境处在两个不同的坐标系,如图 3所示.虚拟环境的坐标系为世界坐标系,坐标系中的点用(x, y, z)表示.虚拟人员的坐标系为局部坐标系,坐标系中的点用(ux, uy, uz)表示.以局部坐标系的原点为原点,坐标轴平行于世界坐标系坐标轴建立惯性坐标系(X′, Y′, Z′).局部坐标系变换到世界坐标系分为两步:1)旋转.局部坐标系3个坐标轴旋转角度分别为α, β, γ, 方向与惯性坐标系方向重合;2)平移.将局部坐标系坐标原点平移到世界坐标系原点完成变换.坐标系的变换公式为Pglbal=Plocal·W.其中:Pglbal为虚拟环境世界坐标系中的点;Plocal为维修人员局部坐标系中的点;W为转置矩阵,W=RTR表示按照单位坐标向量构成的旋转矩阵,T表示平移矩阵.为了方便计算,公式中坐标与向量均用四元数表示.

$ \mathit{\boldsymbol{R = }}\left[{\begin{array}{*{20}{c}} {{R_x}}&{{R_y}}&{{R_z}}&0\\ {{U_x}}&{{U_y}}&{{U_z}}&0\\ {{F_x}}&{{F_y}}&{{F_z}}&0\\ 0&0&0&1 \end{array}} \right], \mathit{\boldsymbol{T = }}\left[{\begin{array}{*{20}{c}} 1&0&0&0\\ 0&1&0&0\\ 0&0&1&0\\ {{R_x}}&{{R_y}}&{{R_z}}&1 \end{array}} \right]. $
图 3 三维空间中坐标对应关系 Fig. 3 Correspondence between coordinates in 3D space
2.2 骨骼绑定

骨骼绑定就是将维修人员的关键骨骼数据与虚拟人体模型的关键骨骼数据进行一一对应绑定的过程[9].虚拟人体模型是沉浸式虚拟维修环境中基本的交互实体,坐标系转换之后,维修人员需要和虚拟中的人体模型进行骨骼绑定,才能驱动虚拟中的人进行交互.在维修参与者的手、腕、头、腰、腿、脚踝等关键骨骼部位固定跟踪点,跟踪点的坐标代表了现实中人体的骨骼位置信息.这些坐标信息将分别与虚拟人体模型的手、腕、头、腰、腿、脚踝等关键骨骼部位进行对应绑定.

2.3 动作的实时驱动

动作的实时驱动就是保持虚拟环境中的人体模型的动作和现实世界中虚拟维修人员的动作保持一致的过程.在骨骼绑定阶段,只是得到了虚拟人体模型关键骨骼部位的位姿信息,而人体模型其他骨骼的位姿信息需要通过计算得到.本文采用反向运动学的方式,根据关键骨骼节点坐标数据实时计算人体模型其他部位骨骼的位置信息,完成现实中的人对虚拟人体模型的实时驱动.反向运动学方式首先获得人体模型手、足和头部的末端骨骼位置信息,根据这些信息反向计算出人体模型的膝盖、腿部、手肘、肩部和胸部等骨骼节点的位姿信息.反向计算常用CCD算法实现,即沿着末端骨骼节点的运动链,逆向依次调整每个关节的旋转角度,逐渐逼近最终的目标.CCD算法有一个根节点,通常是以人体模型的胸部骨骼节点作为根节点.CCD算法便于在链中加入新的节点,但是由于每次计算都需要回溯到根节点,计算量大.在沉浸式维修过程中,大部分维修动作不需要走动,只需要手、腕、肩、头部等关节的适度运动即可,而不必每次计算到根节点.因此,本文提出了改进型CCD算法来进行反向运动学计算.

改进型CCD算法就是以肩关节和臀部关节为次根节点,方向计算只计算到次根节点,而不需要计算到根节点.虚拟维修人员的交互动作幅度比较小,或者交互距离比较近时,采用改进型CCD算法能显著减少回溯计算的工作量.以腿部关节求解过程说明改进型CCD算法的工作原理.为简化计算,计算转为在二维平面上进行.当脚踝和臀部中心的坐标点确定之后,根据改进型CCD算法快速计算出腿部关节角度.如图 4所示,假设维修过程中人的脚踝骨骼节点坐标为P2(xc, yc),盆骨骨骼节点坐标为P1(xb, yb),膝关节坐标P(x, y),大腿长度Llap,小腿长度为Lcalf,盆骨弯曲度为θhip,膝盖弯曲度为θknee,脚踝弯曲度θank.大腿长度Llap和小腿长度Lcalf的求解公式为

$ {\left( {{x_b} - x} \right)^2} + {\left( {{y_b} - y} \right)^2} = L_{{\rm{lap}}}^2, {\left( {{x_c} - x} \right)^2} + {\left( {{y_c} - y} \right)^2} = L_{{\rm{calf}}}^2. $
图 4 腿部关节求解过程 Fig. 4 Leg joint solution process

在由PP1P2构成的三角形内,用反余弦函数求膝关节旋转的角度,计算公式为θknee=arccos (((xb-xc)2+(yb-yc)2-Llap2-Lcalf2)/(2LlapLcalf)).臀部骨骼节点的旋转角度为θhip=arctan((xb-x)/(yb-y)).脚踝骨骼的旋转角度为θank=θhip+θknee.

综合以上改进型CCD算法如下.

1) 获取人体模型主要骨骼节点P1P2P的位置信息,以及各个关节点的初值与骨骼的长度信息;目标位置D;设置允许误差ε,循环变量i(i=0, 1, …, Jroot);

2) 计算末端骨骼节点的位置E,如|D-E|≤ε,则算法结束;

3) 从节点Ji向末端骨骼节点E与目标点D分别做向量VE, VD

4) 计算两个向量的夹角θ(VE, VD)以及旋转轴,使得Ji下的子链绕轴旋转角度θ(VE, VD)调整;

5) 按步骤2)~4)计算各关节旋转角度θ0, …, θi; 根据约束条件修正不满足要求的旋转角;

6) 按θ0, …, θi控制各个关节的运动;

7) 若循环变量i=i+1, iJroot, 转到2),否则结束.

3 原型系统实现与测试

原型系统以某雷达设备为例,研究并构建该设备的沉浸虚拟维修训练环境,通过耦合HTC VIVE硬件设备,实现沉浸式虚拟维修能力.原型系统框架如图 5所示.系统基于Unity 3D引擎开发,语言为C#,平台为64位Windows 7操作系统,支撑设备为HTC VIVE,数据库为Sql.运行效果图如图 6所示.通过实际操作,系统运行良好.虚拟维修人员进行故障维修时,能对维修人员的动作实时定位追踪,并且维修人员与虚拟人体模型动作保持一致,基本实现了沉浸式虚拟维修要求.

图 5 某型雷达的沉浸式虚拟维修系统 Fig. 5 An immersive virtual maintenance system for a type of radar

图 6 沉浸式虚拟维修系统 Fig. 6 Immersive virtual maintenance system
4 小结

追踪定位和虚实动作耦合是沉浸式虚拟维修人机交互中两个关键技术.针对追踪定位,本文提出了基于EPnP特征点定位算法,用来计算当维修操作人员身体表面特征点位置相对不固定时的坐标信息.经过多次测试试验,在EPnP算法下,维修人员的定位精度满足了沉浸式虚拟维修追踪的要求.针对虚实动作的耦合,首先,维修人员自身局部坐标系变换到虚拟环境世界坐标系;其次,维修人员关键骨骼点与虚拟人体模型关键骨骼点匹配;最后,提出了改进型的CCD算法驱动虚拟人体模型完成维修动作.经过多次测试试验,虚实动作耦合的时间延迟基本满足虚拟维修的要求.

本文基于某型雷达设备,利用HTC VIVE构建沉浸式虚拟维修系统,维修人员的追踪定位和维修动作的虚实进行耦合,增加了虚拟维修的沉浸感和交互性,降低了人的眩晕感,强化了虚拟维修训练的效果.

参考文献
[1]
张鼎煜. 虚拟环境下民用飞机维修性评估与验证技术[J]. 科技展望, 2016, 26(35): 123. DOI:10.3969/j.issn.1672-8289.2016.35.106 (0)
[2]
段勇军, 沈文军. 雷达虚拟维修性仿真试验研究[J]. 现代雷达, 2017, 39(1): 17-21. (0)
[3]
孙志勇, 潘军军, 朱亚伟, 等. 某型装备电控系统维修训练软件开发[J]. 机械与电子, 2016, 34(11): 74-76. DOI:10.3969/j.issn.1001-2257.2016.11.019 (0)
[4]
周栋, 霍琳, 王美慧, 等. 虚拟维修技术研究与应用[J]. 北京航空航天大学学报, 2011, 37(2): 231-236. (0)
[5]
LOUISON C, FERLAY F, KELLER D. Operators′ accessibility studies for assembly and maintenance scenarios using virtual reality[J]. Fusion engineering and design, 2017, 124(3): 610-614. (0)
[6]
李书杰, 刘晓平. 摄像机位姿的高精度快速求解[J]. 中国图象图形学报, 2014, 19(1): 20-27. (0)
[7]
FISCHLER M A, BOLLES R C. Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography[J]. Readings in computer vision, 1987, 24(6): 726-40. (0)
[8]
刘钡钡, 田凌, 杨宇航, 等. 基于知识的航空虚拟维修技术[J]. 计算机集成制造系统, 2016, 22(6): 1509-1528. (0)
[9]
李想.骨骼皮肤绑定技术的研究及实现[D].杭州: 浙江大学, 2006. http://cdmd.cnki.com.cn/Article/CDMD-10335-2006033372.htm (0)