基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法转让专利

申请号 : CN201110442411.2

文献号 : CN102521464B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周栋吕川陈桂玲张乃栋郭志奇李永祥

申请人 : 北京航空航天大学

摘要 :

本发明基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,它有六大步骤如:一、对动作捕捉软件的数据输出进行设置;二、进行动作捕捉,通过动作捕捉设备自带的软件实时发送数据;三、接收并临时保存动作捕捉软件输出的动作数据;四、对动作数据进行计算;五、将转换完成的动作数据以Automation API的方式赋给DELMIA;六、重复二到五的步骤。本发明以DELMIA虚拟仿真软件和ShapeWarp无线光纤动作捕捉系统构建沉浸式虚拟维修仿真系统,并利用DELMIA提供的Automation二次开发技术,对二者的接口设计算法做了相应研究,实现动作捕捉系统采集的真实的维修数据对DELMIA中虚拟人动作控制,提出了DELMIA环境下虚拟人控制的新方案,实现用户与虚拟环境的融合。

权利要求 :

1.基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,其特征在于:该方法具体步骤如下:步骤一、对动作捕捉软件的数据输出进行设置

选择动作捕捉设备自带的软件ShapeRecorder作为动作捕捉软件,对其数据的输出进行设置;输出设置分为实时输出和以文件方式输出;

步骤二、进行动作捕捉,通过动作捕捉设备自带的软件实时发送数据

有两种方式,一种是人员穿上动作捕捉设备,进行动作捕捉;另一种是之前进行动作捕捉时,用设备自带的软件对动作数据进行录制,而发送数据时则通过设备自带软件打开已录制好的动作数据文件,向外发送数据;

步骤三、接收并临时保存动作捕捉软件输出的动作数据

以UDPSocket的方式接收数据,以数组的形式临时保存当前接收到的一帧数据;为说明方便,该数组命名为gpo数组,该数组包含从1到235共235个数据,分别以gpo(1)、gpo(2)、……、gpo(235)表示;

步骤四、对动作数据进行计算

根据临时保存的当前帧数据——即gpo数组进行计算,将该数据的格式转换为DELMIA使用的动作数据格式,临时保存在opv数组和iAxisComponentsArray数组当中;该步骤进一步细分为:a)计算人体的方向和位置;b)计算人体不包括手指的每一个肢节的姿势;c)计算人体手指每一个肢节的姿势;

其中,opv数组保存人体的姿态数据,iAxisComponentsArray数组保存人体的方向和位置数据;opv数组包含从0到136共137个数据,分别以opv(0)、opv(1)、……、opv(136)表示;iAxisComponentsArray数 组包含从0到11共12个数据,分 别以iAxisComponentsArray(0)、iAxisComponentsArray(1)、……、iAxisComponentsArray(11)表示;

步骤五、将转换完成的动作数据以Automation API的方式赋给DELMIA;

步骤六、重复步骤二到步骤五

将动作数据转换完成并输入到DELMIA中的虚拟人使其动作后,此即标志着一帧动作的完成;然后开始下一帧动作,重复步骤二到步骤五,直到不再进行动作捕捉或动作捕捉设备自带软件不再发送捕捉到的动作数据为止。

说明书 :

基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控

制方法

技术领域

[0001] 本发明是基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,具体的说,是一种利用DELMIA软件提供的沉浸式虚拟仿真系统,进行人体动作和行为的仿真,使用户像在实际产品上一样对虚拟产品进行实时操作,从而可在物理样机产生之前及时地发现设计中存在的维修问题,它属于虚拟现实技术辅助系统维修的技术领域。

背景技术

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

发明内容

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

附图说明

[0024] 图1为基于DELMIA环境下的沉浸式虚拟仿真流程图;
[0025] 图2为Shaperecorder中的全局坐标系图;
[0026] 图3为Delmia中的全局坐标系图;

具体实施方式

[0027] 下面结合附图和实施例对本发明进行详细说明。
[0028] 本发明首先利用Measurand公司的光纤式动作捕捉设备实时地捕捉人体的动作,并由该设备自带的ShapeRecorder软件通过UDPSocket的方式实时向外发送数据。然后本发明利用UDPSocket的方式接收该数据,接着进行数据的转换等计算,将包含人体动作的数据信息转换成DELMIA可以使用的数据格式。具体实施流程图如图1所示,不过该数据DELMIA软件本身并不能直接使用,需要通过DELMIA提供的Automation API接口,使用一系列的API函数,对DELMIA软件进行操作。本发明是基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,具体实施步骤如下:
[0029] 步骤一、对动作捕捉软件的数据输出进行设置
[0030] 选择ShapeRecorder作为动作捕捉软件,对其数据的输出进行必要的设置。ShapeRecorder软件有2种数据输出方式,一种为实时输出,一种输出为文件,选择实时输出;该软件有4种数据输出格式,分别为Global Position and Orientation格式、C3D格式、BVH格式和MotionBuilder/Quest3D/Virtools(Quaternion)Format格式,选择Global Position and Orientation格式。对实时输出的UDPSocket的属性进行设置,如IP地址、端口号等,具体以实施例为例。
[0031] 步骤二、进行动作捕捉,通过动作捕捉设备自带的软件实时发送数据[0032] 有两种方式,一种是人员穿上动作捕捉设备,进行动作捕捉,同时该设备自带的软件实时地发送数据;另一种是之前进行动作捕捉时,用设备自带的软件对动作数据进行录制,而发送数据时则通过设备自带软件打开已录制好的动作数据文件,向外发送数据。这两种方式都是可行的。均通过UDPSocket的方式发送数据。
[0033] 步骤三、接收并临时保存动作捕捉软件输出的动作数据
[0034] 以UDPSocket的方式接收数据。以数组的形式临时保存当前接收到的一帧数据。为说明方便,该数组命名为gpo数组。该数组包含从1到235共235个数据,分别以gpo(1)、gpo(2)……gpo(235)表示。
[0035] 同时,再建立2个数组,这2个数组将临时保存数据转换的计算结果,为说明方便,将这2个数组命名为opv数组和iAxisComponentsArray数组。opv数组保存人体的姿态数据,iAxisComponentsArray数组保存人体的方向和位置数据。opv数组包含从0到136共137个数据,分别以opv(0)、opv(1)……opv(136)表示。iAxisComponentsArray数组包含从
0到11共12个数据,分别以iAxisComponentsArray(0)、iAxisComponentsArray(1)、……iAxisComponentsArray(11)表示。
[0036] 步骤四、对动作数据进行计算
[0037] 根据临时保存的当前帧数据——即gpo数组——进行计算,可以将该数据的格式转换为DELMIA可以使用的动作数据格式,临时保存在opv数组和iAxisComponentsArray数组当中,转换的关系图如图2所示:
[0038] 该步骤可以进一步细分为:
[0039] 1)计算人体的方向和位置
[0040] 令
[0041] Yaw=gpo(6)×3.1415926÷180
[0042] Pitch=gpo(5)×3.1415926÷180
[0043] Roll=gpo(4)×3.1415926÷180
[0044] Xp=gpo(1)
[0045] Yp=gpo(2)
[0046] Zp=gpo(3)
[0047] 然后,令
[0048] cy=cos(Yaw)
[0049] sY=Sin(Yaw)
[0050] cP=cos(Pitch)
[0051] sP=Sin(Pitch)
[0052] cR=cos(Roll)
[0053] sR=Sin(Roll)
[0054] 再令
[0055] iAxisComponentsArray(0)=cy×cP
[0056] iAxisComponentsArray(1)=sY×cP
[0057] iAxisComponentsArray(2)=sP
[0058] iAxisComponentsArray(3)=-sY×cR-cy×sP×sR
[0059] iAxisComponentsArray(4)=cy×cR-sY×sP×sR
[0060] iAxisComponentsArray(5)=cP×sR
[0061] iAxisComponentsArray(6)=sY×sR-cy×sP×cR
[0062] iAxisComponentsArray(7)=-cy×sR-sY×sP×cR
[0063] iAxisComponentsArray(8)=cP×cR
[0064] iAxisComponentsArray(9)=Xp
[0065] iAxisComponentsArray(10)=-Zp
[0066] iAxisComponentsArray(11)=Yp
[0067] 则iAxisComponentsArray数组将临时保存人体的方向和位置数据。2)计算人体每一个肢节的姿势(不包括手指)
[0068] 假设人体的某部分有两个相邻的肢节,则这两个肢节间存在着类似于“树干——树枝”的关系,而人体的总“树干”肢节则为人体的臀部。例如,人的左前臂和左上臂这两个肢节,左上臂为“树干”,左前臂为“树枝”;人的臀部、腰部和胸部间,腰部既是臀部的“树枝”,又是胸部的“树干”。
[0069] 假设有某两个相邻的肢节,令“树干”肢节为a肢节,“树枝”肢节为b肢节。则gpo数组中a肢节的翻滚角、俯仰角、偏航角数据分别为gpo(iar)、gpo(iap)、gpo(iay),b肢节的翻滚角、俯仰角、偏航角数据分别为gpo(ibr)、gpo(ibp)、gpo(iby)。令
[0070] aR=gpo(iar)×3.1415926÷180
[0071] aP=gpo(iap)×3.1415926÷180
[0072] aY=gpo(iay)×3.1415926÷180
[0073] bR=gpo(ibr)×3.1415926÷180
[0074] bP=gpo(ibp)×3.1415926÷180
[0075] by=gpo(iby)×3.1415926÷180
[0076] 然后令
[0077] cYa=cos(aY)
[0078] sYa=Sin(aY)
[0079] cPa=cos(aP)
[0080] sPa=Sin(aP)
[0081] cRa=cos(aR)
[0082] sRa=Sin(aR)
[0083] cYb=cos(by)
[0084] sYb=Sin(by)
[0085] cPb=cos(bP)
[0086] sPb=Sin(bP)
[0087] cRb=cos(bR)
[0088] sRb=Sin(bR)
[0089] 再令
[0090] MaT(0)=cYa×cPa
[0091] MaT(1)=-sYa×cRa-cYa×sPa×sRa
[0092] MaT(2)=sYa×sRa-cYa×sPa×cRa
[0093] MaT(3)=sYa×cPa
[0094] MaT(4)=cYa×cRa-sYa×sPa×sRa
[0095] MaT(5)=-cYa×sRa-sYa×sPa×cRa
[0096] MaT(6)=sPa
[0097] MaT(7)=cPa×sRa
[0098] MaT(8)=cPa×cRa
[0099] Mb(0)=cYb×cPb
[0100] Mb(1)=sYb×cPb
[0101] Mb(2)=sPb
[0102] Mb(3)=-sYb×cRb-cYb×sPb×sRb
[0103] Mb(4)=cYb×cRb-sYb×sPb×sRb
[0104] Mb(5)=cPb×sRb
[0105] Mb(6)=sYb×sRb-cYb×sPb×cRb
[0106] Mb(7)=-cYb×sRb-sYb×sPb×cRb
[0107] Mb(8)=cPb×cRb
[0108] 然后令
[0109] MatrixA(0)=Mb(0)×MaT(0)+Mb(1)×MaT(3)+Mb(2)×MaT(6)
[0110] MatrixA(1)=Mb(0)×MaT(1)+Mb(1)×MaT(4)+Mb(2)×MaT(7)
[0111] MatrixA(2)=Mb(0)×MaT(2)+Mb(1)×MaT(5)+Mb(2)×MaT(8)
[0112] MatrixA(3)=Mb(3)×MaT(0)+Mb(4)×MaT(3)+Mb(5)×MaT(6)
[0113] MatrixA(4)=Mb(3)×MaT(1)+Mb(4)×MaT(4)+Mb(5)×MaT(7)
[0114] MatrixA(5)=Mb(3)×MaT(2)+Mb(4)×MaT(5)+Mb(5)×MaT(8)
[0115] MatrixA(6)=Mb(6)×MaT(0)+Mb(7)×MaT(3)+Mb(8)×MaT(6)
[0116] MatrixA(7)=Mb(6)×MaT(1)+Mb(7)×MaT(4)+Mb(8)×MaT(7)
[0117] MatrixA(8)=Mb(6)×MaT(2)+Mb(7)×MaT(5)+Mb(8)×MaT(8)
[0118] 其中,MatrixA是一个代表3×3矩阵的数组。这个矩阵的值代表了b肢节相对于a肢节的方向变换,即在肢节物体坐标系3个坐标轴(也即自由度)方向上的转动的变换的叠加。令3个自由度的转动角顺序为先α,再β,最后γ,则:
[0119] α=arctan(-MatrixA(6)÷MatrixA(8))
[0120] β=arcsin(-MatrixA(7))
[0121] γ=arctan(MatrixA(1)÷MatrixA(4))
[0122] 最后,如果具体肢节的转动方向和坐标轴正轴的方向相同,则将α、β、γ临时保存在opv(b1)、opv(b2)、opv(b3)中,其中b1和α相对应,是b肢节相对于a肢节最先转动的自由度,同理b2和β相对应、b3和γ相对应;如果相反,则将-α、-β、-γ临时保存在opv(b1)、opv(b2)、opv(b3)中。
[0123] 3)计算人体手指每一个肢节的姿势
[0124] 手指和其它肢节的计算有一些不同,一是因为进行动作捕捉时未必会捕捉两只手的数据,二是因为动作捕捉设备自带软件输出的手指数据只包括手指关节的位置数据,不包括欧拉角形式的、手指肢节的方向数据。所以,如果在动作捕捉时不捕捉手部的动作,则可以省略此步骤;如果在捕捉时只捕捉一只手的动作,则只计算一只手的数据,另一只不进行计算;如果捕捉了两只手的动作,则计算两只手的数据。具体的计算方法以右手为例进行说明,左手参照右手。
[0125] 令gpo(r)、gpo(p)、gpo(y)分别为右手的翻滚角、俯仰角和偏航角,则:
[0126] Yaw=gpo(y)×3.1415926÷180
[0127] Pitch=gpo(p)×3.1415926÷180
[0128] Roll=gpo(r)×3.1415926÷180
[0129] 再令
[0130] cy=cos(Yaw)
[0131] sY=Sin(Yaw)
[0132] cP=cos(Pitch)
[0133] sP=Sin(Pitch)
[0134] cR=cos(Roll)
[0135] sR=Sin(Roll)
[0136] 再令
[0137] MatrixO0_Hand(0)=cy×cP
[0138] MatrixO0_Hand(1)=sY×cP
[0139] MatrixO0_Hand(2)=sP
[0140] MatrixO0_Hand(3)=-sY×cR-cy×sP×sR
[0141] MatrixO0_Hand(4)=cy×cR-sY×sP×sR
[0142] MatrixO0_Hand(5)=cP×sR
[0143] MatrixO0_Hand(6)=sY×sR-cy×sP×cR
[0144] MatrixO0_Hand(7)=-cy×sR-sY×sP×cR
[0145] MatrixO0_Hand(8)=cP×cR
[0146] 令gpo(ax)、gpo(ay)、gpo(az)分别表示手指根部关节a的x、y、z坐标,gpo(bx)、gpo(by)、gpo(bz)分别表示手指除根部关节外离手掌较近的关节b的x、y、z坐标,则:
[0147] dx=gpo(bx)-gpo(ax)
[0148] dy=gpo(az)-gpo(bz)
[0149] dz=gpo(by)-gpo(ay)
[0150] 再令
[0151] v(0)=dx×MatrixO0_Hand(0)+dy×MatrixO0_Hand(1)+dz×MatrixO0_Hand(2)[0152] v(1)=dx×MatrixO0_Hand(3)+dy×MatrixO0_Hand(4)+dz×MatrixO0_Hand(5)[0153] v(2)=dx×MatrixO0_Hand(6)+dy×MatrixO0_Hand(7)+dz×MatrixO0_Hand(8)[0154] 再令
[0155] opv(y)=arcsin(v(1)÷(sqr(v(0)×v(0)+v(1)×v(1))))
[0156] opv(p)=-arcsin(v(2)÷(sqr(v(0)×v(0)+v(2)×v(2))))
[0157] 同时令
[0158] oneoverModule=1÷(sqr(dx×dx+dy×dy+dz×dz))
[0159] 再令
[0160] VectorV0(0)=dx×oneoverModule
[0161] VectorV0(1)=dy×oneoverModule
[0162] VectorV0(2)=dz×oneoverModule
[0163] 其中,opv(y)、opv(p)分别表示手指根部关节相对于手掌的偏航角、俯仰角。需注意左手时:
[0164] opv(y)=-arcsin(v(1)÷(sqr(v(0)×v(0)+v(1)×v(1))))
[0165] 计算手指除根部外的其它关节的角度的方法是:令gpo(ax)、gpo(ay)、gpo(az)分别表示手指离手掌较近的关节a的x、y、z坐标,gpo(bx)、gpo(by)、gpo(bz)分别表示手指离手掌较远的关节b的x、y、z坐标,令
[0166] dx=gpo(bx)-gpo(ax)
[0167] dy=gpo(az)-gpo(bz)
[0168] dz=gpo(by)-gpo(ay)
[0169] 再令
[0170] oneoverModule=1÷(sqr(dx×dx+dy×dy+dz×dz))
[0171] 再令
[0172] VectorV1(0)=dx×oneoverModule
[0173] VectorV1(1)=dy×oneoverModule
[0174] VectorV1(2)=dz×oneoverModule
[0175] 最后令
[0176] opv(p)= arccos(VectorV0(0)×VectorV1(0)+VectorV0(1)×VectorV1(1)+VectorV0(2)×VectorV1(2))
[0177] opv(p)即为a关节的弯曲角度。
[0178] 同时,再令
[0179] VectorV0(0)=VectorV1(0)
[0180] VectorV0(1)=VectorV1(1)
[0181] VectorV0(2)=VectorV1(2)
[0182] 将其进行迭代运算,可直至求出手指最末端关节的角度。
[0183] 步骤五、将转换完成的动作数据以Automation API的方式赋给DELMIA[0184] DELMIA提供了两种主要的方式可对其进行二次开发,一种是出售CAA开发包,但价格非常昂贵,甚至比DELMIA软件还要贵;另一种是DELMIA本身免费提供的Automation API方式,本发明即采用此方式。通过该方式,DELMIA提供了一系列函数,可以对其进行调用、操作。其中,可以操作DELMIA里虚拟人的姿态的函数为SetPostureValues函数,其参数即为opv数组;可以操作虚拟人方向和位置的函数为SetPosition函数,其参数即为iAxisComponentsArray数组。
[0185] 赋值后,DELMIA中的虚拟人的动作即和动作捕捉设备自带软件输出的人体动作相一致。由于动作捕捉设备所捕捉的人体动作和其自带软件记录、输出的人体动作之间有可能存在一定的误差,当这种误差小到肉眼可以忽略不计的时候,DELMIA中的虚拟人的动作即和穿着动作捕捉设备的人员的实际动作相一致。
[0186] 步骤六、重复步骤二到步骤五
[0187] 将动作数据转换完成并输入到DELMIA中的虚拟人使其动作后,此即标志着一帧动作的完成。然后开始下一帧动作,重复步骤二到步骤五,直到不再进行动作捕捉或动作捕捉设备自带软件不再发送捕捉到的动作数据为止。
[0188] 实施例
[0189] 本实施例以Measurand公司的光纤式动作捕捉设备所捕捉到的一帧动作数据为例进行说明。其自带软件ShapeRecorder所捕捉到的人体动作如错误!未找到引用源。所示。
[0190] 该设备包含了两只手套,所以可以捕捉到两只手的动作。接收到的动作数据临时保存在gpo数组中,共有从1到235共235个数据,如表1所示。
[0191] 表1 gpo数据列表
[0192]序号 数值 序号 数值 序号 数值 序号 数值 序号 数值
1 -670.15 48 15.03 95 -72.97 142 -73.6 189 5.8
2 998.78 49 -247.04 96 -108.6 143 944.1 190 -174.3
3 -114.53 50 1028.98 97 -542.92 144 -495.6 191 917.5
4 -3.76 51 53.17 98 173.66 145 -48 192 -15.7
5 -5.8 52 71.09 99 240.45 146 905.3 193 -173
6 -0.03 53 -57.7 100 -24.69 147 -474.6 194 894.4
7 0 54 13.77 101 -35.92 148 -37.6 195 -34.7
8 -11.4 55 0 102 -22.55 149 883.6 196 -177.2
9 90.41 56 0 103 -431.35 150 -455.1 197 878.1
10 -425.69 57 0 104 86.15 151 -29.2 198 -54.6
11 1394.63 58 0 105 286.77 152 864.4 199 -201
12 -395.35 59 0 106 -19.79 153 -436.5 200 949.1
13 -7.47 60 0 107 2.27 154 -91.6 201 18
14 -62.72 61 -678.96 108 -6.64 155 928.4 202 -196.1
15 33.62 62 911.52 109 -337.33 156 -503.3 203 909.2
16 -330.27 63 -229.02 110 1626.28 157 -64.2 204 -13.5
17 1172.44 64 11.11 111 -218.28 158 894.4 205 -201.5
18 -458.8 65 -65.36 112 -2.33 159 -483.4 206 890.7
19 -63.93 66 5.26 113 -21.05 160 -56.4 207 -37.7
20 -41.59 67 -512.88 114 -7.74 161 877 208 -215.1
21 12.18 68 547.95 115 -483.63 162 -460.3 209 884
22 -147.52 69 -244.3 116 1324.33 163 -53.9 210 -61.3
23 1006.47 70 146.93 117 -177.81 164 864.3 211 -219.1
24 -498.24 71 -81.54 118 -12.25 165 -436.6 212 938.6
25 -63.26 72 142.36 119 -28.14 166 -110.3 213 31.8
26 -44.84 73 -563 120 -5.3 167 924 214 -207.7
27 3.17 74 122.64 121 -72.3 168 -508.7 215 897.3
28 0 75 -282.96 122 1007.7 169 -87.5 216 10.1
29 0 76 0.82 123 -455.2 170 900.1 217 -208.6
30 0 77 -37.88 124 -41.7 171 -490 218 875.4
31 0 78 -2.54 125 985.4 172 -78.2 219 -10.4
32 0 79 -445.37 126 -451.9 173 887.3 220 -215.1
33 0 80 31.05 127 -12.9 174 -473.3 221 860.3
34 0 81 -277.73 128 977.7 175 -71.8 222 -31.8
35 10.78 82 0.65 129 -448.5 176 875.5 223 -235.1
36 -89.45 83 1.68 130 -57.2 177 -453.4 224 939.2
37 -421.93 84 -3.07 131 956.4 178 -188.1 225 43.6
38 1469.44 85 -677.48 132 -489.1 179 1010.7 226 -220
39 -2.43 86 927.2 133 -25.9 180 -7.8 227 910.2
40 -30.32 87 10.46 134 926 181 -175.7 228 24.3
41 -66.06 88 -33.21 135 -474.6 182 975.1 229 -211.9
42 -62.48 89 -58.87 136 -10 183 -13 230 892.9
43 -375.06 90 -32.34 137 906.9 184 -172.8 231 11.5
44 1240.95 91 -502.76 138 -457.8 185 945.4 232 -213.5
45 87.54 92 584.79 139 -0.8 186 -15.7 233 880
46 70.67 93 121.07 140 892.2 187 -184.9 234 -8.7
47 -57.98 94 -104.87 141 -438.4 188 956.8 235 1910135[0193] 计算后得到的iAxisComponentsArray数组如表2所示。
[0194] 表2 iAxisComponentsArray数据列表
[0195]序号 数值
0 0.994880572452694
1 -5.20918297207002E-04
2 -0.101056297182946
3 -6.10452524088039E-03
4 0.997850826145967
5 -6.52415782411447E-02
6 0.1008730951631
7 6.55244794251704E-02
8 0.992739221179599
9 -670.15
10 114.53
11 998.78
[0196] 计算后得到的opv数组如表3所示。
[0197] 表3 opv数据列表
[0198]序号 数值 序号 数值 序号 数值
0 0.184038089865327 46 0.368318556927405 92 4.38179577778E-03
1 0.314926259541073 47 -2.0644135581E-02 93 0.011517098709404
2 0.228952556695146 48 0.662074696957194 94 1.55202948177E-02
3 0.52138671063068 49 0.28348720341763 95 4.381795777787E-03
4 0.227933461315242 50 0.26486256556277 96 0.011517098709404
5 0.494767919630044 51 -3.83851851578E-02 97 0.011640221113329
6 0.108195579702873 52 0.44856871306601 98 4.38179577778E-03
7 0.469603582900196 53 0.240872273298108 99 0.011517098709404
8 5.200344611132E-02 54 0.244905462198495 100 0.011640221113329
9 0.281411039034772 55 0.439883710226011 101 3.28634683334E-03
10 0.019392658381421 56 -7.69565185990E-02 102 0.011517098709404
11 0.503949339142358 57 6.188785089972E-04 103 0.011640221113329
12 0.266707629876294 58 -1.26533243869E-02 104 2.19089788889E-03
13 0.289416047746366 59 1.06099263289446 105 0.011517098709404
14 0.166192012934594 60 0.604670367536386 106 0.011640221113329
15 0.325319108556933 61 0.999677589240799 107 2.19089788889E-03
16 0.367599524708788 62 0.185309050478051 108 1.34366151609E-02
17 -3.809469252296E-02 63 0.689144585263836 109 1.55202948177E-02
18 0.41948455662883 64 -2.97817514529E-05 110 2.19089788889E-03
19 -0.143189218987736 65 6.389070761478E-05 111 0.01727564806410
20 -7.392483536665E-03 66 -6.94205194977E-02 112 2.32804422266E-02
21 0.128442699948092 67 -9.62830939099E-04 113 1.82574824074E-03
22 0.934209068290847 68 2.732220729611E-02 114 1.53561316125E-02
23 0.330568748156127 69 -7.39564086222E-05 115 3.88007370444E-02
24 0.997281168671002 70 0.546353842667605 116 1.46059859259E-03
25 0.424639494771559 71 4.69590165000E-02 117 0.011517098709404
26 0.935886932522163 72 0.224666048082743 118 4.65608844533E-02
27 -9.478383942028E-03 73 0.564081570332284 119 1.46059859259E-03
28 2.671756652326E-03 74 1.720730190421E-03 120 0.011517098709404
29 -4.473341560137E-02 75 -0.25600674158459 121 6.20811792710E-02
30 -7.391162916579E-02 76 -0.25207179792575 122 1.46059859259E-03
31 0.10779124376616 77 6.280665195036E-02 123 1.53561316125E-02
32 -6.67776822491E-05 78 -0.10240269663383 124 6.98413266799E-02
33 0.546933162630052 79 -2.80079775473E-02 125 1.46059859259E-03
34 0.143232452622239 80 7.30299296297E-03 126 0.011517098709404
35 9.504847590137E-02 81 0.011517098709404 127 7.76014740888E-02
36 0.531884402989019 82 1.552029481777E-02 128 1.46059859259E-03
37 0.557300353296777 83 6.207544018531E-03 129 0.005758549354702
38 6.733604681387E-02 84 0.011517098709404 130 0.15520294817771
39 0.160971234191241 85 1.552029481777E-02 131 0
40 0.384409728372327 86 5.477244722234E-03 132 0
41 0.293481208379191 87 0.011517098709404 133 0
42 0.378973549561685 88 1.5520294817771E-02 134 0
43 -4.453584371591E-02 89 5.1120950740851E-03 135 0
44 0.43163786665231 90 0.011517098709404 136 0
45 0.482969608301604 91 1.5520294817771E-02
[0199] 计算后得到的DELMIA中的虚拟人的动作与动作捕捉系统是一致的。
[0200] 用无线光纤动作捕捉系统在DELMIA虚拟环境下实现沉浸式虚拟维修,虚拟人的操作数据完全来自真人的维修操作动作,具有更强的真实性,从而使得维修性分析、评估结果也更加有效。这样也就促使维修性设计工作的开展不再依赖于物理样机或实际装备,可以在产品设计同时并行考虑维修性问题,发现可能存在的维修性设计缺陷,提出改进建议,进而可以在装备设计阶段就对原始设计方案进行修改,避免对定型产品进行维修性再设计带来的产品再设计的麻烦与经济损失。