基于delmia环境下的沉浸式虚拟维修仿真系统虚拟人控制方法

文档序号:6443319阅读:489来源:国知局
专利名称:基于delmia环境下的沉浸式虚拟维修仿真系统虚拟人控制方法
技术领域
本发明是基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,具体的说,是一种利用DELMIA软件提供的沉浸式虚拟仿真系统,进行人体动作和行为的仿真, 使用户像在实际产品上一样对虚拟产品进行实时操作,从而可在物理样机产生之前及时地发现设计中存在的维修问题,它属于虚拟现实技术辅助系统维修的技术领域。
背景技术
沉浸式虚拟仿真是指设计人员在沉浸式虚拟维修环境下对产品进行“虚拟地”维修,可在物理样机生产之前及时地发现设计中存在的维修问题,进行维修性设计的分析,维修规程的确认和辅助维修训练。利用动作捕捉系统与虚拟维修仿真软件构建沉浸式虚拟维修仿真系统,不仅可以利用虚拟维修仿真软件中的产品数据,而且能够让用户像在实际产品上一样对虚拟产品进行实时操作。目前动作捕捉系统与虚拟维修仿真软件融合技术的研究进展较慢,二者还相对独立。一方面,虚拟维修软件具有很强的仿真分析功能,但其中的人体运动建模工作较为繁琐且编辑的动作不够真实有效;另一方面动作捕捉系统还只在动画制作等特殊领域应用较多,其配套的软件一般只能利用三维动画复现真人运动轨迹,而不具有其他分析处理功能, 也不能载入CAD产品数据。因此,二者集成能有效的实现真人对虚拟维修仿真软件中虚拟人的控制,为仿真分析提供更加真实有效的维修动作数据,实现真正意义上的沉浸式虚拟维修。

发明内容
(1)本发明的目的是基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,通过将动作捕捉设备所捕捉到的人体动作实时地导入到专业软件提供的虚拟维修平台当中的虚拟人上,从而可以进行沉浸式的虚拟维修活动。(2)本发明的技术方案以DELMIA虚拟仿真软件和SmpeWarp无线光纤动作捕捉系统构建沉浸式虚拟维修仿真系统,并利用DELMIA提供的Automation 二次开发技术,对二者的接口设计算法做了相应研究,实现动作捕捉系统采集的真实的维修数据对DELMIA中虚拟人动作控制,提出了 DELMIA环境下虚拟人控制的新方案,实现用户与虚拟环境的融合。以SiapeWarp无线光纤动作捕捉系统和目前航空部门普遍采用的DELMIA虚拟仿真软件构建沉浸式虚拟维修仿真系统,并对二者间的接口设计进行了深入研究,实现了动作捕捉系统对DELMIA软件中虚拟人的控制。本发明基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,通过如下步骤实现步骤一、对动作捕捉软件的数据输出进行设置
选择a^peRecorder作为动作捕捉软件,对其数据的输出进行必要的设置。主要的输出设置分为实时输出和以文件方式输出。步骤二、进行动作捕捉,通过动作捕捉设备自带的软件实时发送数据有两种方式,一种是人员穿上动作捕捉设备,进行动作捕捉;另一种是之前进行动作捕捉时,用设备自带的软件对动作数据进行录制,而发送数据时则通过设备自带软件打开已录制好的动作数据文件,向外发送数据。步骤三、接收并临时保存动作捕捉软件输出的动作数据以UDPSocket的方式接收数据,以数组的形式临时保存当前接收到的一帧数据。 为说明方便,该数组命名为gpo数组。该数组包含从1到235共235个数据,分别以gpo (1)、 gpo (2)......gpo (235)表示。步骤四、对动作数据进行计算根据临时保存的当前帧数据——即gpo数组——进行计算,可以将该数据的格式转换为DELMIA可以使用的动作数据格式,临时保存在ορν数组和iAxisComponentsArray 数组当中。该步骤可以进一步细分为a)计算人体的方向和位置;b)计算人体每一个肢节的姿势(不包括手指);c)计算人体手指每一个肢节的姿势步骤五、将转换完成的动作数据以Automation API的方式赋给DELMIA步骤六、重复步骤二到步骤五将动作数据转换完成并输入到DELMIA中的虚拟人使其动作后,此即标志着一帧动作的完成。然后开始下一帧动作,重复步骤二到步骤五,直到不再进行动作捕捉或动作捕捉设备自带软件不再发送捕捉到的动作数据为止。本发明要求的设备条件两台电脑,其中动作捕捉系统(SiapeRecorder)需要一台,虚拟环境软件平台(delmia)需要一台,两台电脑之间要有网络连接,或者是一台电脑,动作捕捉系统和虚拟环境平台都在同一台电脑上运行,此时电脑要有网卡。软件条件 Windows操作系统,且配置要能够正常运行两款软件。(3)本发明的优点本发明所采用的动作捕捉设备为Measurand公司的光纤式动作捕捉设备,采用的虚拟维修软件平台为Dassault公司的DELMIA软件。Measurand公司开发了一些数据转换插件软件,可以将其动作捕捉设备所捕捉到的人体动作实时导入到MotionBuilder软件或 Virtools软件中去。本发明通过采用DELMIA软件本身提供的接口进行开发,更为重要的是,本发明采用模块化设计思想,具备可扩展性,即对于不同的动作捕捉设备,通过选择相应的数据转换模块,可以得到同样格式的动作数据,以操纵DELMIA中的虚拟人。因此,用户可以选择多种动作捕捉设备,甚至可以同时采用不同的动作捕捉设备捕捉多人的动作,实时地导入到 DELMIA中的多个虚拟人上。


图1为基于DELMIA环境下的沉浸式虚拟仿真流程图;图2为Shaperecorder中的全局坐标系图;图3为Delmia中的全局坐标系具体实施例方式下面结合附图和实施例对本发明进行详细说明。本发明首先利用Measurand公司的光纤式动作捕捉设备实时地捕捉人体的动作, 并由该设备自带的SiapeRecorder软件通过UDPSocket的方式实时向外发送数据。然后本发明利用UDPSocket的方式接收该数据,接着进行数据的转换等计算,将包含人体动作的数据信息转换成DELMIA可以使用的数据格式。具体实施流程图如图1所示,不过该数据 DELMIA软件本身并不能直接使用,需要通过DELMIA提供的Automation API接口,使用一系列的API函数,对DELMIA软件进行操作。本发明是基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,具体实施步骤如下步骤一、对动作捕捉软件的数据输出进行设置选择a^peRecorder作为动作捕捉软件,对其数据的输出进行必要的设置。 ShapeRecorder软件有2种数据输出方式,一种为实时输出,一种输出为文件,选择实时输出;该软件有4种数据输出格式,分别为Global Position and Orientation格式、C3D格式、BVH 格式和 MotionBuilder/Quest3D/Virtools Quaternion) format 格式,选择 Global Position and Orientation格式。对实时输出的UDPSocket的属性进行设置,如IP地址、 端口号等,具体以实施例为例。步骤二、进行动作捕捉,通过动作捕捉设备自带的软件实时发送数据有两种方式,一种是人员穿上动作捕捉设备,进行动作捕捉,同时该设备自带的软件实时地发送数据;另一种是之前进行动作捕捉时,用设备自带的软件对动作数据进行录制,而发送数据时则通过设备自带软件打开已录制好的动作数据文件,向外发送数据。这两种方式都是可行的。均通过UDPSocket的方式发送数据。步骤三、接收并临时保存动作捕捉软件输出的动作数据以UDPSocket的方式接收数据。以数组的形式临时保存当前接收到的一帧数据。 为说明方便,该数组命名为gpo数组。该数组包含从1到235共235个数据,分别以gpo (1)、 gpo (2)......gpo (235)表示。同时,再建立2个数组,这2个数组将临时保存数据转换的计算结果,为说明方便, 将这2个数组命名为ορν数组和iAxisComponentsArray数组。ορν数组保存人体的姿态数据,iAxisComponentsArray数组保存人体的方向和位置数据。ορν数组包含从O到136共
137 个数据,分别以 opv (0)、ορν (1)......ορν (136)表示。iAxisComponentsArray 数组包含从
O 至Ij 11 共 12 个数据,分另Ij 以 iAxisComponentsArray (0) >iAxisComponentsArray (1)、......
iAxisComponentsArray(11)表不。步骤四、对动作数据进行计算根据临时保存的当前帧数据——即gpo数组——进行计算,可以将该数据的格式转换为DELMIA可以使用的动作数据格式,临时保存在ορν数组和iAxisComponentsArray 数组当中,转换的关系图如图2所示该步骤可以进一步细分为1)计算人体的方向和位置令
Yaw = gpo (6) X 3. 1415926 + 180Pitch = gpo (5) X 3. 1415926 + 180Roll = gpo (4) X 3. 1415926 + 180Xp = gpo(l)Yp = gpo (2)Zp = gpo (3)然后,令cy = cos (Yaw)sY = Sin(Yaw)cP = cos (Pitch)sP = Sin(Pitch)cR = cos (Roll)sR = Sin(Roll)再令iAxisComponentsArray (0) = cy X cPiAxisComponentsArray (1) = sYX cPiAxisComponentsArray (2) = sPiAxisComponentsArray (3) = -sYX cR-cy X sPX sRiAxisComponentsArray (4) = cy X cR-sYX sPX sRiAxisComponentsArray (5) = cPX sRiAxisComponentsArray (6) = sYX sR-cy X sPX cRiAxisComponentsArray (7) = -cy X sR-sYX sPX cRiAxisComponentsArray (8) = cPXcRiAxisComponentsArray (9) =XpiAxisComponentsArray(10) = -ZpiAxisComponentsArray (11) =Yp则iAxisComponentsArray数组将临时保存人体的方向和位置数据。2)计算人体每一个肢节的姿势(不包括手指)假设人体的某部分有两个相邻的肢节,则这两个肢节间存在着类似于“树干—— 树枝”的关系,而人体的总“树干”肢节则为人体的臀部。例如,人的左前臂和左上臂这两个肢节,左上臂为“树干”,左前臂为“树枝”;人的臀部、腰部和胸部间,腰部既是臀部的“树枝”,又是胸部的“树干”。假设有某两个相邻的肢节,令“树干”肢节为a肢节,“树枝”肢节为b肢节。则gpo 数组中a肢节的翻滚角、俯仰角、偏航角数据分别为gpo (iar)、gpo (iap)、gpo (iay),b肢节的翻滚角、俯仰角、偏航角数据分别为gpo (ibr)、gpo (ibp)、gpo (iby)。令aR = gpo (iar) X 3. 1415926 + 180aP = gpo (iap) X 3. 1415926 + 180aY = gpo (iay) X 3. 1415926 + 180bR = gpo (ibr) X 3. 1415926 + 1800074]bP = gpo(ibp) X3. 1415926+1800075]by = gpo(iby) X 3. 1415926 + 1800076]然后令0077]cYa =cos(aY)0078]sYa =Sin(aY)0079]cPa =cos(aP)0080]sPa =Sin(aP)0081]c Ra =cos (aR)0082]sRa =Sin(aR)0083]c Yb =cos (by)0084]s Yb =Sin (by)0085]cPb =cos (bP)0086]sPb =Sin(bP)0087]cRb =cos (bR)0088]sRb =Sin(bR)0089]再令0090]MaT (0=c Ya XcPa0091]MaT (1=-sYa X cRa-cYa X sPa X sRa0092]MaT (2=sYa X sRa-cYa X sPa X cRa0093]MaT (3=s Ya XcPa0094]MaT (4=cYa X cRa-sYa X sPa X sRa0095]MaT (5=-cYa X sRa-sYa X sPa X cRa0096]MaT (6=sPa0097]MaT (7=cPaX sRa0098]MaT (8=cPaX cRa0099]Mb(O)=cYb XcPb0100]Mb(I)=sYbXcPb0101]Mb (2)=sPb0102]Mb (3)=-sYbXcRb-cYbXsPbXsRb0103]Mb (4)=cYb XcRb-sYbXsPbXsRb0104]Mb (5)=cPbXsRb0105]Mb (6)=sYb XsRb-cYbXsPbXcRb0106]Mb (7)=-cYbXsRb-sYbXsPbXcRb0107]Mb (8)=cPbXcRb0108]然后令0109]MatrixA (0) = Mb(O) XMaT (0)+Mb(I) XMaT (3)+Mb (2) XMaT (6)0110]MatrixA(I) = Mb(O) XMaT (1)+Mb (1) XMaT (4)+Mb (2) XMaT (7)0111]MatrixA (2) = Mb(O) XMaT (2)+Mb (1) XMaT (5)+Mb (2) XMaT (8)0112]MatrixA (3) = Mb (3) X MaT (0) +Mb (4) X MaT (3) +Mb (5) X MaT (6)
MatrixA (4) = Mb (3) XMaT (1) +Mb (4) XMaT (4) +Mb (5) XMaT (7)MatrixA (5) = Mb (3) X MaT (2) +Mb (4) X MaT (5) +Mb (5) X MaT (8)MatrixA (6) = Mb (6) X MaT (0) +Mb (7) X MaT (3) +Mb (8) X MaT (6)MatrixA (7) = Mb (6) XMaT (1) +Mb (7) XMaT (4) +Mb (8) XMaT (7)MatrixA (8) = Mb (6) X MaT (2) +Mb (7) X MaT (5) +Mb (8) X MaT (8)其中,MatrixA是一个代表3X3矩阵的数组。这个矩阵的值代表了 b肢节相对于 a肢节的方向变换,即在肢节物体坐标系3个坐标轴(也即自由度)方向上的转动的变换的叠加。令3个自由度的转动角顺序为先α,再β,最后Y,则α = arctan (-MatrixA (6) +MatrixA (8))β = arcsin (-MatrixA (7))y = arctan (MatrixA(l) +MatrixA (4))最后,如果具体肢节的转动方向和坐标轴正轴的方向相同,则将α、β、Y临时保存在OpV(bl)、OpV032)、OpV(b3)中,其中bl和α相对应,是b肢节相对于a肢节最先转动的自由度,同理和β相对应、b3和γ相对应;如果相反,则将-α、-β、-γ临时保存在 opv (bl)、opv (b2)、opv (b3)中。3)计算人体手指每一个肢节的姿势手指和其它肢节的计算有一些不同,一是因为进行动作捕捉时未必会捕捉两只手的数据,二是因为动作捕捉设备自带软件输出的手指数据只包括手指关节的位置数据,不包括欧拉角形式的、手指肢节的方向数据。所以,如果在动作捕捉时不捕捉手部的动作,则可以省略此步骤;如果在捕捉时只捕捉一只手的动作,则只计算一只手的数据,另一只不进行计算;如果捕捉了两只手的动作,则计算两只手的数据。具体的计算方法以右手为例进行说明,左手参照右手。令gpo (r)、gpo (p)、gpo (y)分别为右手的翻滚角、俯仰角和偏航角,则Yaw = gpo (y) X 3. 1415926 + 180Pitch = gpo (ρ) X 3. 1415926 + 180Roll = gpo (r) X 3. 1415926 + 180再令cy = cos(Yaw)sY = Sin(Yaw)cP = cos (Pitch)sP = Sin(Pitch)cR = cos (Roll)sR = Sin(Roll)再令Matrix00_Hand(0)Matrix00_Hand(l)MatrixOO_Hand(2)MatrixOO_Hand(3)Matrix00_Hand(4)
=cyXcP =sYXcP =sP
=-sYXcR-cyXsPXsR =cyXcR-sYXsPXsR
MatrixOO_Hand(5) = cPXsRMatrixOO_Hand(6) = sYX sR-cy X sPX cRMatrix00_Hand(7) = -cyX sR-sYXsPXcRMatrixOO_Hand(8) = cPXcR^gpo(ax),gpo(ay),gpo(az)分别表示手指根部关节 a 的 x、y、ζ 坐标,gpo(bx)、 gpo (by)、gpo (bz)分别表示手指除根部关节外离手掌较近的关节b的χ、y、ζ坐标,则dx = gpo (bx)-gpo (ax)dy = gpo (az) _gpo (bz)dz = gpo (by)-gpo (ay)再令v(0) = dx X Matrix00_Hand(0)+dy X Matrix00_Hand(1)+dz X Matrix00_Hand(2)v(l) = dx X Matrix00_Hand(3)+dy X Matrix00_Hand(4)+dz X Matrix00_Hand(5)ν (2) = dxX Matrix00_Hand (6) +dy X Matrix00_Hand (7) +dz X Matrix00_Hand (8)再令opv(y) = arcsin(v(1) + (sqr(v(0) Xv(0)+v(l) Xv(I))))opv(p) = -arcsin(v(2) + (sqr(v(0) Xν(0) +ν(2) Xv(2))))同时令oneoverModule = 1 + (sqr (dx X dx+dy X dy+dz X dz))再令VectorVO (0) = dxXoneoverModuleVectorVO(I) = dyXoneoverModuleVectorVO(2) = dzXoneoverModule其中,0pV(y)、0pV(p)分别表示手指根部关节相对于手掌的偏航角、俯仰角。需注意左手时opv(y) = -arcsin(ν(1) + (sqr(ν(0) Χν(0)+ν(1) Xv(I))))计算手指除根部外的其它关节的角度的方法是令gpo (ax)、gpo (ay)、gpo (az)分别表示手指离手掌较近的关节a的χ、y、ζ坐标,gpo (bx)、gpo (by)、gpo (bz)分别表示手指离手掌较远的关节b的χ、y、ζ坐标,令dx = gpo (bx) -gpo (ax)dy = gpo (az) _gpo (bz)dz = gpo (by) -gpo (ay)再令oneoverModule = 1 + (sqr (dx X dx+dy X dy+dz X dz))再令VectorVl (0) = dxXoneoverModuleVectorVl(1) = dyXoneoverModuleVectorVl(2) = dzXoneoverModule最后令opv (p) = arccos(VectorVO(0)XVectorVl(0)+VectorVO(1)XVectorVl (1)+VectorVO(2)XVectorVl(2))opv(p)即为a关节的弯曲角度。同时,再令VectorVO (0) = VectorVl (0)VectorVO(I) =VectorVl(I)VectorVO (2) = VectorVl (2)将其进行迭代运算,可直至求出手指最末端关节的角度。步骤五、将转换完成的动作数据以Automation API的方式赋给DELMIADELMIA提供了两种主要的方式可对其进行二次开发,一种是出售CAA开发包,但价格非常昂贵,甚至比DELMIA软件还要贵;另一种是DELMIA本身免费提供的Automation API方式,本发明即采用此方式。通过该方式,DELMIA提供了一系列函数,可以对其进行调用、操作。其中,可以操作DELMIA里虚拟人的姿态的函数为ktPostureValues函数,其参数即为ορν数组;可以操作虚拟人方向和位置的函数为ktPosition函数,其参数即为 iAxisComponentsArray 数组。赋值后,DELMIA中的虚拟人的动作即和动作捕捉设备自带软件输出的人体动作相一致。由于动作捕捉设备所捕捉的人体动作和其自带软件记录、输出的人体动作之间有可能存在一定的误差,当这种误差小到肉眼可以忽略不计的时候,DELMIA中的虚拟人的动作即和穿着动作捕捉设备的人员的实际动作相一致。步骤六、重复步骤二到步骤五将动作数据转换完成并输入到DELMIA中的虚拟人使其动作后,此即标志着一帧动作的完成。然后开始下一帧动作,重复步骤二到步骤五,直到不再进行动作捕捉或动作捕捉设备自带软件不再发送捕捉到的动作数据为止。实施例本实施例以Measurand公司的光纤式动作捕捉设备所捕捉到的一帧动作数据为例进行说明。其自带软件SiapeRecorder所捕捉到的人体动作如错误!未找到引用源。所
7J\ ο该设备包含了两只手套,所以可以捕捉到两只手的动作。接收到的动作数据临时保存在gpo数组中,共有从1到2;35共2;35个数据,如表1所示。表Igpo数据列表
权利要求
1.基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,其特征在于该方法具体步骤如下步骤一、对动作捕捉软件的数据输出进行设置选择ampeRecorder作为动作捕捉软件,对其数据的输出进行设置;输出设置分为实时输出和以文件方式输出;步骤二、进行动作捕捉,通过动作捕捉设备自带的软件实时发送数据有两种方式,一种是人员穿上动作捕捉设备,进行动作捕捉;另一种是之前进行动作捕捉时,用设备自带的软件对动作数据进行录制,而发送数据时则通过设备自带软件打开已录制好的动作数据文件,向外发送数据;步骤三、接收并临时保存动作捕捉软件输出的动作数据以UDPSocket的方式接收数据,以数组的形式临时保存当前接收到的一帧数据;为说明方便,该数组命名为gpo数组,该数组包含从1到235共235个数据,分别以gpo (1)、gpo (2)......gpo (235)表示;步骤四、对动作数据进行计算根据临时保存的当前帧数据——即gpo数组——进行计算,将该数据的格式转换为 DELMIA使用的动作数据格式,临时保存在ορν数组和iAxisComponentsArray数组当中;该步骤进一步细分为a)计算人体的方向和位置;b)计算人体不包括手指的每一个肢节的姿势;c)计算人体手指每一个肢节的姿势;步骤五、将转换完成的动作数据以Automation API的方式赋给DELMIA ; 步骤六、重复步骤二到步骤五将动作数据转换完成并输入到DELMIA中的虚拟人使其动作后,此即标志着一帧动作的完成;然后开始下一帧动作,重复步骤二到步骤五,直到不再进行动作捕捉或动作捕捉设备自带软件不再发送捕捉到的动作数据为止。
全文摘要
本发明基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,它有六大步骤如一、对动作捕捉软件的数据输出进行设置;二、进行动作捕捉,通过动作捕捉设备自带的软件实时发送数据;三、接收并临时保存动作捕捉软件输出的动作数据;四、对动作数据进行计算;五、将转换完成的动作数据以Automation API的方式赋给DELMIA;六、重复二到五的步骤。本发明以DELMIA虚拟仿真软件和ShapeWarp无线光纤动作捕捉系统构建沉浸式虚拟维修仿真系统,并利用DELMIA提供的Automation二次开发技术,对二者的接口设计算法做了相应研究,实现动作捕捉系统采集的真实的维修数据对DELMIA中虚拟人动作控制,提出了DELMIA环境下虚拟人控制的新方案,实现用户与虚拟环境的融合。
文档编号G06F17/50GK102521464SQ20111044241
公开日2012年6月27日 申请日期2011年12月26日 优先权日2011年12月26日
发明者吕川, 周栋, 张乃栋, 李永祥, 郭志奇, 陈桂玲 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1