安 明,刘玉庆,周伯河,胡福超
(1.中国航天员科研训练中心人因工程重点实验室,北京100094;2.中国航天员科研训练中心,北京100094)
神舟十号任务中,航天员在太空中的精彩授课鼓舞人心举世瞩目,尤其通过旋转陀螺的定轴运动浅显易懂地展示了陀螺仪定向的物理原理[1],向世人展现了太空的神奇魅力。
我国载人航天的实践表明,事先对任务的设计和训练可以为任务规划和顺利开展提供重要的支持,是改善和预防航天活动操作欠缺的根本保障所在[2-3]。而太空中最显著的特点是失重,目前在地面采用实物模拟失重环境主要有中性浮力水槽[4]、失重飞机[5]等方法,但中性浮力水槽中存在水的阻力和黏性作用无法呈现太空授课中如陀螺的高速旋转等现象,失重飞机采用抛物线飞行每次只能形成约15~40 s失重时间,一般只用于失重的体验性训练。
近年来,随着虚拟现实技术的发展,虚拟训练已广泛应用于国外载人航天领域,并起着越来越重要的作用,美国航天局NASA早在20世纪80年代就开始了航天员虚拟训练的研究[6],其约翰逊航天中心开发的虚拟训练系统可进行舱外活动卫星捕获训练以及空间站任务训练,国内中国航天员中心刘玉庆等人开发了航天员舱外活动虚拟训练原型系统,可用于舱外活动全流程的训练[7],上海交通大学范秀敏[8]等人以载人机动装置的设计与开发为背景,开发了一个进行预测、训练的虚拟样机仿真实验环境。
为将虚拟现实技术应用于旋转陀螺交互操作训练,需要解决精度较高的人体运动跟踪方法,以及建立符合失重特性的人体及操作物体的动力学模型的关键技术问题。本文在研究人机交互技术和PhysX物理引擎的基础上,使用虚拟现实设备数据手套和位置跟踪仪获取人体精细的实时运动数据,并使用物理引擎进行动力学仿真,最终使用计算出的物体运动状态实时驱动虚拟场景中的三维模型,从而实现了旋转陀螺的实时交互操作仿真。
图1 上肢运动跟踪中传感器放置Fig.1 Allocation of sensors in tracking the upper limb motion
由于在地面训练时受训者基本采用坐姿并主要使用手进行交互操作,因此对使用Flock Of Bird电磁式位置跟踪仪采集人体上肢运动进行了研究。
2.1.1 跟踪仪传感器佩戴方式设计[9]
位置跟踪仪传感器r1,r2,r3能同时获取位置和姿态数据,其放置如图1所示,图1中B代表躯体(Body),S代表肩关节(Shoulder),E代表肘关节(Elbow),W代表腕关节(Wrist)。r1用于获取躯体B体坐标系的全局位置和姿态,并作为人体基坐标系,r2和r3分别用于获取左右前臂末端腕关节W体坐标系的全局位置和姿态,同时不受腕关节活动影响。
2.1.2 基于预设姿势的传感器校正
由于人体各关节位置和姿态解算需要上臂长度LSE和前臂长度LEW作为输入,通过记录3个如图2所示的预设姿势的测量值来计算当前受训人员上臂和前臂的长度,并实现对传感器的校正。
图2 上肢运动跟踪预设姿势1-3Fig.2 Preset posture 1 - 3 for upper limb motion tracking
三种姿势下上肢各节段所成位置和角度关系,如图3所示,其中字母上标表示对应的预设姿势i。
图3 预设姿势下上肢各节段位置和角度关系Fig.3 Position and angle relationship of different segments of the upper limb with preset posture
从而得到式(1)所示受训者上臂和前臂的计算公式:
利用上臂和前臂的尺寸数据,以及传感器的实时捕获数据,可直接求解躯体和肘关节的位置和姿态。
2.1.3 基于逆向运动学的肩关节姿态求解
对于肩关节的姿态,研究采用基于逆向运动学的方法进行解算,以右臂为例,根据人体关节运动特性,肩关节有弯曲/伸展及内收/外展两个自由度,设为分别绕x轴和z轴转动的欧拉角变换,旋转顺序为先绕x轴旋转角度γ,再绕z轴旋转角度α,肩关节旋转变换的效果是使肘关节从姿势1的初始位置变换到当前位置,即要满足如式(2)所示约束方程:
为避免SPE0和SPE0init可能出现向量长度不同而导致计算出现无解或多解的情况,先对两向量进行单位化,其中SPE0init为姿势1下肘关节位置在肩关节坐标系下的单位化坐标向量,绕x轴旋转角度γ,再绕z轴旋转角度α后,将其变换为当前点SPE0的单位化向量,进行单位化之后,该变换就转化为对一个单位化向量的旋转变换,该方程组的关联矩阵Rx(g)Rz(a)为两个旋转矩阵的乘积,同样满足旋转矩阵的性质,因此该关联矩阵可逆,方程组有解。为避免多重解的问题,根据三角函数性质,分SPE0.y≤ 0和SPE0.y > 0两种情况求解。
受训者与虚拟物体的交互主要依赖手部,且进行触碰、抓握等均需要精细的手部操作,因此重点对基于数据手套的手部运动精确跟踪进行研究。
根据手部的解剖学特性,将每只手分解为16个节段,各节段间采用相应的关节进行连接,相邻节段靠近腕部节段作为父节段,靠近指端节段为子节段,父节段的运动直接传递到子节段,从而实现正向运动控制。考虑不同人手间差异,为使采集数据符合人手部的个性特征,设计并实现了基于7个预设手势的数据手套校正,7个预设手势如图4所示。
图4 数据手套标定手势Fig.4 Calibration gestures of the data gloves
其中手势1为标准手势,记录标准手势对应手部各传感器的读取数据为数组Offset,并通过其余不同手势分别记录手部各关节相对手势1的最大弯曲幅值,记为数组maxData,结合文献和实际测量试验得人手各关节相对标准手势的最大张开角度,记为数组maxAngle,则可得手部各关节校准参数数组Gain如式(3)所示。
则根据校准参数Gain和Offset,以及当前读取的传感器原始数值rawData,即可求解得到如式(4)所示的各关节角度值(弧度表示)radianData。
物理引擎是用于仿真物理系统的软件,最初应用于游戏领域,后随着引擎的发展,其计算功能和仿真能力越来越强大,近年来在工程仿真领域的应用也逐渐成为研究热点,其主要功能模块包括碰撞检测、刚体动力学以及数值计算等[10]。
其中碰撞检测模块用于获取虚拟物体间的接触情况,包括接触点、刺入深度以及接触点法向量等数据,根据这些数据可计算得出相互间的接触力大小及方向。刚体动力学将现实世界中变形很小或变形可忽略的物体简化看作刚体,并将其运动分解为质心的平移运动和绕质心的旋转运动,相应建立两套微分方程组对其进行描述。
对于质心的平移运动,可采用质点运动定律,即牛顿第二运动定律F=ma进行描述,而加速度a即为位置 x对时间t的二阶导数,由此可得式(5)。
对于刚体绕质心的转动规律,如式(6)描述。
式中L(t)为刚体的角动量,I(t)为惯性张量,用来描述物体的质量分布,引擎会根据物体的形状及质量、密度等设置计算得出,ω(t)为刚体的角速度。
在一个物理仿真流程中,对于每一个仿真的刚体,引擎会计算得出其所受合外力,如力的作用方向未指向质心,就会分解为作用于质心的力和扭转力矩,分别用于上述方程进行解算,对于高阶微分方程的数值解,一般采用降解、离散化等方法进行优化求解。
使用3D Max软件对人体分别建立骨骼和皮肤层模型,并通过骨骼绑定技术将皮肤层模型与骨骼绑定到一起,如图5所示,从而通过设置骨骼姿态实现皮肤层的变形随动。
图5 人体骨骼及皮肤层模型Fig.5 Human skeleton and skin model
人体的碰撞体是建立在人体的内骨骼模型基础上,如此不仅提高了建模效率,且保证了碰撞体和骨骼控制系统的一致性。PhysX物理引擎对可移动物体只支持凸多面体形状,且要求单个碰撞体的三角面片数限制在256以内,因此注意碰撞体在满足基本形体的前提下应尽量简化,以提高碰撞检测的实时性。对各骨骼节段分别生成其碰撞体模型,并通过脚本技术灵活设定各碰撞体的质量、密度、质心位置等动力学参数,使用PhysX引擎中的D6Joint关节将各碰撞体连接到一起,并为关节系统添加slerp_drive驱动器,该驱动器可直接设置关节的姿态来逆向求解使关节转动到该角度所需力矩,从而可直接采用人体运动跟踪的数据来驱动物理学人体的运动[11]。
对陀螺的碰撞体建模,分别建立陀螺内转轴和外环模型,如图6所示,采用设置group的方式将各部分固连到一起,从而可作为一个整体进行物理仿真。
图6 陀螺的物理碰撞体建模Fig.6 Modelling of top’s physical collision body
为体现失重状态,在物理引擎中首先通过场景描述对象将重力设置为0,程序编写如下:
sceneDesc.gravity.set(0,0,0);
对于旋转的陀螺,如不受外力矩的作用,则它的转动轴总指向确定的方向,即旋转陀螺的定轴特性[1],对该特性的仿真,采用在每一物理仿真流程结束时,采用setAngularVelocity()方法手动设置其旋转角速度为固定值实现。
在每一物理仿真步长内,如图7所示,首先获取人体实时的运动跟踪数据,用以驱动人体各节段碰撞体,接下来通过精确的碰撞检测结果得到的碰撞点及刺入深度,计算陀螺的受力方向及受力大小,最终通过刚体动力学算法计算此次仿真结束后物体的位置和姿态,如当前接触陀螺处于旋转状态,则手动设置其旋转角速度为初始值。
平台硬件部分包括:移动图形工作站一台(HP EliteBook 8770w),CyberGlove数据手套(22传感器)两只,Flock Of Bird位置跟踪仪一套(4传感器);软件部分包括3Ds Max建模软件、PhysX SDK开发包,OGRE图形引擎以及其他功能插件,开发环境采用Microsoft Visual Studio 2008。
根据神舟十号任务中太空授课视频录像,如图8所示,航天员在天宫一号实验舱中演示了旋转陀螺的定轴特性,具体为航天员用手指分别触碰面前的静止和绕定轴旋转陀螺后,静止陀螺发生平动和不规则转动,而绕定轴旋转的陀螺产生平动且仍保持原有轴向转动。
图7 物理计算仿真流程Fig.7 Flowchart of physical calcuation simulation
图8 神舟十号太空授课任务中陀螺操作Fig.8 Top operation during space class in Shenzhou 10 mission
本文以此作为验证实验情景,建立天宫一号实验舱、航天员及实验陀螺的三维模型,实验开始前受训者穿戴位置跟踪仪和数据手套进行预设姿势的标定,仿真开始后视镜显示切换到虚拟航天员的第一视角,受训者通过运动跟踪实时控制虚拟航天员的运动,并分别用虚拟手触碰面前的两个陀螺(左侧为旋转,右侧为静止)。从图9所示的实验截图可以看出,虚拟手与两个陀螺触碰后,左侧旋转陀螺保持了定轴的性质产生平动和定轴转动,右侧静止陀螺则不仅产生平动,且根据接触位置发生了轴向变化即不规则转动,实验结果与实际太空授课任务中表现基本一致,程序帧速率保持在200帧/秒以上。
图9 陀螺交互操作仿真实验Fig.9 Simulaiton experiment of interactive top operation
仿真结果表明:
1)通过人机交互技术及物理仿真技术,实现了太空失重环境的模拟,很好的实现了陀螺的交互操作仿真;
2)人机交互流畅且无卡顿现象,其实时性和准确性都满足虚拟训练的要求;
3)该仿真方法可应用于后续空间站任务中,进行空间操作任务演练及航天员的技能及流程性训练。
[1]王楚,李椿,周乐柱,等.力学[M].北京:北京大学出版社,1999:95-97.
[2]贾司光,梁宏.航天员舱外活动的工效学问题[J].中华航空航天医学杂志,2001,12(4):246-249.
[3]Comfort D,Fowler B,Bock O.Is dual task performance impaired in space Proceedings of the Human Factors and Ergonomics[C]//Society 43rd Annual Meting,1999:1383.
[4]冯庆义,李俊峰,王天舒.水下模拟失重动力学研究综述[J].力学与实践,2004,26(3):10-14.
[5]刘巍,张磊,赵维.载人低重力模拟技术现状与研究进展[J]. 航天医学与医学工程,2012,25(6):463-468
[6]周前祥,曲战胜.航天虚拟现实仿真技术的研究进展[J].科学导报,1998:35-37
[7]An M,Chen S,Liu Y.Study on Extra Vehicular Spacewalk Simulation Technology[C]//Proceedings of the 2011 Workshop on Digital Media and Digital Content Management.IEEE Computer Society,2011:53-56.
[8]徐安,范秀敏,洪鑫,等.交互式宇航员太空行走仿真系统的研究与开发[J].系统仿真学报,2004,16(9):1953-1956.
[9]安明,陈善广,刘玉庆.基于数据手套的虚拟手精确建模的研究与实现[J].计算机仿真,2010,27(1):241-244.
[10]有人,陈定方.虚拟现实环境中的物理模拟及物理引擎应用的研究[J].湖北工业大学学报,2008,23(2):7-9.
[11]于佳民,刘玉庆,周伯河.PhysX物理引擎在航天员虚拟现实训练系统中的应用[J].计算机应用,2011,31(s):155-159.