CN102521464B - 基于delmia环境下的沉浸式虚拟维修仿真系统虚拟人控制方法 - Google Patents
基于delmia环境下的沉浸式虚拟维修仿真系统虚拟人控制方法 Download PDFInfo
- Publication number
- CN102521464B CN102521464B CN 201110442411 CN201110442411A CN102521464B CN 102521464 B CN102521464 B CN 102521464B CN 201110442411 CN201110442411 CN 201110442411 CN 201110442411 A CN201110442411 A CN 201110442411A CN 102521464 B CN102521464 B CN 102521464B
- Authority
- CN
- China
- Prior art keywords
- data
- motion capture
- delmia
- software
- array
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,它有六大步骤如:一、对动作捕捉软件的数据输出进行设置;二、进行动作捕捉,通过动作捕捉设备自带的软件实时发送数据;三、接收并临时保存动作捕捉软件输出的动作数据;四、对动作数据进行计算;五、将转换完成的动作数据以Automation API的方式赋给DELMIA;六、重复二到五的步骤。本发明以DELMIA虚拟仿真软件和ShapeWarp无线光纤动作捕捉系统构建沉浸式虚拟维修仿真系统,并利用DELMIA提供的Automation二次开发技术,对二者的接口设计算法做了相应研究,实现动作捕捉系统采集的真实的维修数据对DELMIA中虚拟人动作控制,提出了DELMIA环境下虚拟人控制的新方案,实现用户与虚拟环境的融合。
Description
技术领域
本发明是基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,具体的说,是一种利用DELMIA软件提供的沉浸式虚拟仿真系统,进行人体动作和行为的仿真,使用户像在实际产品上一样对虚拟产品进行实时操作,从而可在物理样机产生之前及时地发现设计中存在的维修问题,它属于虚拟现实技术辅助系统维修的技术领域。
背景技术
沉浸式虚拟仿真是指设计人员在沉浸式虚拟维修环境下对产品进行“虚拟地”维修,可在物理样机生产之前及时地发现设计中存在的维修问题,进行维修性设计的分析,维修规程的确认和辅助维修训练。利用动作捕捉系统与虚拟维修仿真软件构建沉浸式虚拟维修仿真系统,不仅可以利用虚拟维修仿真软件中的产品数据,而且能够让用户像在实际产品上一样对虚拟产品进行实时操作。
目前动作捕捉系统与虚拟维修仿真软件融合技术的研究进展较慢,二者还相对独立。一方面,虚拟维修软件具有很强的仿真分析功能,但其中的人体运动建模工作较为繁琐且编辑的动作不够真实有效;另一方面动作捕捉系统还只在动画制作等特殊领域应用较多,其配套的软件一般只能利用三维动画复现真人运动轨迹,而不具有其他分析处理功能,也不能载入CAD产品数据。因此,二者集成能有效的实现真人对虚拟维修仿真软件中虚拟人的控制,为仿真分析提供更加真实有效的维修动作数据,实现真正意义上的沉浸式虚拟维修。
发明内容
(1)本发明的目的是基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,通过将动作捕捉设备所捕捉到的人体动作实时地导入到专业软件提供的虚拟维修平台当中的虚拟人上,从而可以进行沉浸式的虚拟维修活动。
(2)本发明的技术方案:
以DELMIA虚拟仿真软件和ShapeWarp无线光纤动作捕捉系统构建沉浸式虚拟维修仿真系统,并利用DELMIA提供的Automation二次开发技术,对二者的接口设计算法做了相应研究,实现动作捕捉系统采集的真实的维修数据对DELMIA中虚拟人动作控制,提出了DELMIA环境下虚拟人控制的新方案,实现用户与虚拟环境的融合。
以ShapeWarp无线光纤动作捕捉系统和目前航空部门普遍采用的DELMIA虚拟仿真软件构建沉浸式虚拟维修仿真系统,并对二者间的接口设计进行了深入研究,实现了动作捕捉系统对DELMIA软件中虚拟人的控制。
本发明基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,通过如下步骤实现:
步骤一、对动作捕捉软件的数据输出进行设置
选择ShapeRecorder作为动作捕捉软件,对其数据的输出进行必要的设置。主要的输出设置分为实时输出和以文件方式输出。
步骤二、进行动作捕捉,通过动作捕捉设备自带的软件实时发送数据
有两种方式,一种是人员穿上动作捕捉设备,进行动作捕捉;另一种是之前进行动作捕捉时,用设备自带的软件对动作数据进行录制,而发送数据时则通过设备自带软件打开已录制好的动作数据文件,向外发送数据。
步骤三、接收并临时保存动作捕捉软件输出的动作数据
以UDPSocket的方式接收数据,以数组的形式临时保存当前接收到的一帧数据。为说明方便,该数组命名为gpo数组。该数组包含从1到235共235个数据,分别以gpo(1)、gpo(2)……gpo(235)表示。
步骤四、对动作数据进行计算
根据临时保存的当前帧数据——即gpo数组——进行计算,可以将该数据的格式转换为DELMIA可以使用的动作数据格式,临时保存在opv数组和iAxisComponentsArray数组当中。该步骤可以进一步细分为:a)计算人体的方向和位置;b)计算人体每一个肢节的姿势(不包括手指);c)计算人体手指每一个肢节的姿势
步骤五、将转换完成的动作数据以Automation API的方式赋给DELMIA
步骤六、重复步骤二到步骤五
将动作数据转换完成并输入到DELMIA中的虚拟人使其动作后,此即标志着一帧动作的完成。然后开始下一帧动作,重复步骤二到步骤五,直到不再进行动作捕捉或动作捕捉设备自带软件不再发送捕捉到的动作数据为止。
本发明要求的设备条件:两台电脑,其中动作捕捉系统(ShapeRecorder)需要一台,虚拟环境软件平台(delmia)需要一台,两台电脑之间要有网络连接,或者是一台电脑,动作捕捉系统和虚拟环境平台都在同一台电脑上运行,此时电脑要有网卡。软件条件:Windows操作系统,且配置要能够正常运行两款软件。
(3)本发明的优点:
本发明所采用的动作捕捉设备为Measurand公司的光纤式动作捕捉设备,采用的虚拟维修软件平台为Dassault公司的DELMIA软件。Measurand公司开发了一些数据转换插件软件,可以将其动作捕捉设备所捕捉到的人体动作实时导入到MotionBuilder软件或Virtools软件中去。
本发明通过采用DELMIA软件本身提供的接口进行开发,更为重要的是,本发明采用模块化设计思想,具备可扩展性,即对于不同的动作捕捉设备,通过选择相应的数据转换模块,可以得到同样格式的动作数据,以操纵DELMIA中的虚拟人。因此,用户可以选择多种动作捕捉设备,甚至可以同时采用不同的动作捕捉设备捕捉多人的动作,实时地导入到DELMIA中的多个虚拟人上。
附图说明
图1为基于DELMIA环境下的沉浸式虚拟仿真流程图;
图2为Shaperecorder中的全局坐标系图;
图3为Delmia中的全局坐标系图;
具体实施方式
下面结合附图和实施例对本发明进行详细说明。
本发明首先利用Measurand公司的光纤式动作捕捉设备实时地捕捉人体的动作,并由该设备自带的ShapeRecorder软件通过UDPSocket的方式实时向外发送数据。然后本发明利用UDPSocket的方式接收该数据,接着进行数据的转换等计算,将包含人体动作的数据信息转换成DELMIA可以使用的数据格式。具体实施流程图如图1所示,不过该数据DELMIA软件本身并不能直接使用,需要通过DELMIA提供的Automation API接口,使用一系列的API函数,对DELMIA软件进行操作。本发明是基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,具体实施步骤如下:
步骤一、对动作捕捉软件的数据输出进行设置
选择ShapeRecorder作为动作捕捉软件,对其数据的输出进行必要的设置。ShapeRecorder软件有2种数据输出方式,一种为实时输出,一种输出为文件,选择实时输出;该软件有4种数据输出格式,分别为Global Position and Orientation格式、C3D格式、BVH格式和MotionBuilder/Quest3D/Virtools(Quaternion)Format格式,选择Global Position andOrientation格式。对实时输出的UDPSocket的属性进行设置,如IP地址、端口号等,具体以实施例为例。
步骤二、进行动作捕捉,通过动作捕捉设备自带的软件实时发送数据
有两种方式,一种是人员穿上动作捕捉设备,进行动作捕捉,同时该设备自带的软件实时地发送数据;另一种是之前进行动作捕捉时,用设备自带的软件对动作数据进行录制,而发送数据时则通过设备自带软件打开已录制好的动作数据文件,向外发送数据。这两种方式都是可行的。均通过UDPSocket的方式发送数据。
步骤三、接收并临时保存动作捕捉软件输出的动作数据
以UDPSocket的方式接收数据。以数组的形式临时保存当前接收到的一帧数据。为说明方便,该数组命名为gpo数组。该数组包含从1到235共235个数据,分别以gpo(1)、gpo(2)……gpo(235)表示。
同时,再建立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)表示。
步骤四、对动作数据进行计算
根据临时保存的当前帧数据——即gpo数组——进行计算,可以将该数据的格式转换为DELMIA可以使用的动作数据格式,临时保存在opv数组和iAxisComponentsArray数组当中,转换的关系图如图2所示:
该步骤可以进一步细分为:
1)计算人体的方向和位置
令
Yaw=gpo(6)×3.1415926÷180
Pitch=gpo(5)×3.1415926÷180
Roll=gpo(4)×3.1415926÷180
Xp=gpo(1)
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×cP
iAxisComponentsArray(1)=sY×cP
iAxisComponentsArray(2)=sP
iAxisComponentsArray(3)=-sY×cR-cy×sP×sR
iAxisComponentsArray(4)=cy×cR-sY×sP×sR
iAxisComponentsArray(5)=cP×sR
iAxisComponentsArray(6)=sY×sR-cy×sP×cR
iAxisComponentsArray(7)=-cy×sR-sY×sP×cR
iAxisComponentsArray(8)=cP×cR
iAxisComponentsArray(9)=Xp
iAxisComponentsArray(10)=-Zp
iAxisComponentsArray(11)=Yp
则iAxisComponentsArray数组将临时保存人体的方向和位置数据。2)计算人体每一个肢节的姿势(不包括手指)
假设人体的某部分有两个相邻的肢节,则这两个肢节间存在着类似于“树干——树枝”的关系,而人体的总“树干”肢节则为人体的臀部。例如,人的左前臂和左上臂这两个肢节,左上臂为“树干”,左前臂为“树枝”;人的臀部、腰部和胸部间,腰部既是臀部的“树枝”,又是胸部的“树干”。
假设有某两个相邻的肢节,令“树干”肢节为a肢节,“树枝”肢节为b肢节。则gpo数组中a肢节的翻滚角、俯仰角、偏航角数据分别为gpo(iar)、gpo(iap)、gpo(iay),b肢节的翻滚角、俯仰角、偏航角数据分别为gpo(ibr)、gpo(ibp)、gpo(iby)。令
aR=gpo(iar)×3.1415926÷180
aP=gpo(iap)×3.1415926÷180
aY=gpo(iay)×3.1415926÷180
bR=gpo(ibr)×3.1415926÷180
bP=gpo(ibp)×3.1415926÷180
by=gpo(iby)×3.1415926÷180
然后令
cYa=cos(aY)
sYa=Sin(aY)
cPa=cos(aP)
sPa=Sin(aP)
cRa=cos(aR)
sRa=Sin(aR)
cYb=cos(by)
sYb=Sin(by)
cPb=cos(bP)
sPb=Sin(bP)
cRb=cos(bR)
sRb=Sin(bR)
再令
MaT(0)=cYa×cPa
MaT(1)=-sYa×cRa-cYa×sPa×sRa
MaT(2)=sYa×sRa-cYa×sPa×cRa
MaT(3)=sYa×cPa
MaT(4)=cYa×cRa-sYa×sPa×sRa
MaT(5)=-cYa×sRa-sYa×sPa×cRa
MaT(6)=sPa
MaT(7)=cPa×sRa
MaT(8)=cPa×cRa
Mb(0)=cYb×cPb
Mb(1)=sYb×cPb
Mb(2)=sPb
Mb(3)=-sYb×cRb-cYb×sPb×sRb
Mb(4)=cYb×cRb-sYb×sPb×sRb
Mb(5)=cPb×sRb
Mb(6)=sYb×sRb-cYb×sPb×cRb
Mb(7)=-cYb×sRb-sYb×sPb×cRb
Mb(8)=cPb×cRb
然后令
MatrixA(0)=Mb(0)×MaT(0)+Mb(1)×MaT(3)+Mb(2)×MaT(6)
MatrixA(1)=Mb(0)×MaT(1)+Mb(1)×MaT(4)+Mb(2)×MaT(7)
MatrixA(2)=Mb(0)×MaT(2)+Mb(1)×MaT(5)+Mb(2)×MaT(8)
MatrixA(3)=Mb(3)×MaT(0)+Mb(4)×MaT(3)+Mb(5)×MaT(6)
MatrixA(4)=Mb(3)×MaT(1)+Mb(4)×MaT(4)+Mb(5)×MaT(7)
MatrixA(5)=Mb(3)×MaT(2)+Mb(4)×MaT(5)+Mb(5)×MaT(8)
MatrixA(6)=Mb(6)×MaT(0)+Mb(7)×MaT(3)+Mb(8)×MaT(6)
MatrixA(7)=Mb(6)×MaT(1)+Mb(7)×MaT(4)+Mb(8)×MaT(7)
MatrixA(8)=Mb(6)×MaT(2)+Mb(7)×MaT(5)+Mb(8)×MaT(8)
其中,MatrixA是一个代表3×3矩阵的数组。这个矩阵的值代表了b肢节相对于a肢节的方向变换,即在肢节物体坐标系3个坐标轴(也即自由度)方向上的转动的变换的叠加。令3个自由度的转动角顺序为先α,再β,最后γ,则:
α=arctan(-MatrixA(6)÷MatrixA(8))
β=arcsin(-MatrixA(7))
γ=arctan(MatrixA(1)÷MatrixA(4))
最后,如果具体肢节的转动方向和坐标轴正轴的方向相同,则将α、β、γ临时保存在opv(b1)、opv(b2)、opv(b3)中,其中b1和α相对应,是b肢节相对于a肢节最先转动的自由度,同理b2和β相对应、b3和γ相对应;如果相反,则将-α、-β、-γ临时保存在opv(b1)、opv(b2)、opv(b3)中。
3)计算人体手指每一个肢节的姿势
手指和其它肢节的计算有一些不同,一是因为进行动作捕捉时未必会捕捉两只手的数据,二是因为动作捕捉设备自带软件输出的手指数据只包括手指关节的位置数据,不包括欧拉角形式的、手指肢节的方向数据。所以,如果在动作捕捉时不捕捉手部的动作,则可以省略此步骤;如果在捕捉时只捕捉一只手的动作,则只计算一只手的数据,另一只不进行计算;如果捕捉了两只手的动作,则计算两只手的数据。具体的计算方法以右手为例进行说明,左手参照右手。
令gpo(r)、gpo(p)、gpo(y)分别为右手的翻滚角、俯仰角和偏航角,则:
Yaw=gpo(y)×3.1415926÷180
Pitch=gpo(p)×3.1415926÷180
Roll=gpo(r)×3.1415926÷180
再令
cy=cos(Yaw)
sY=Sin(Yaw)
cP=cos(Pitch)
sP=Sin(Pitch)
cR=cos(Roll)
sR=Sin(Roll)
再令
MatrixO0_Hand(0)=cy×cP
MatrixO0_Hand(1)=sY×cP
MatrixO0_Hand(2)=sP
MatrixO0_Hand(3)=-sY×cR-cy×sP×sR
MatrixO0_Hand(4)=cy×cR-sY×sP×sR
MatrixO0_Hand(5)=cP×sR
MatrixO0_Hand(6)=sY×sR-cy×sP×cR
MatrixO0_Hand(7)=-cy×sR-sY×sP×cR
MatrixO0_Hand(8)=cP×cR
令gpo(ax)、gpo(ay)、gpo(az)分别表示手指根部关节a的x、y、z坐标,gpo(bx)、gpo(by)、gpo(bz)分别表示手指除根部关节外离手掌较近的关节b的x、y、z坐标,则:
dx=gpo(bx)-gpo(ax)
dy=gpo(az)-gpo(bz)
dz=gpo(by)-gpo(ay)
再令
v(0)=dx×MatrixO0_Hand(0)+dy×MatrixO0_Hand(1)+dz×MatrixO0_Hand(2)
v(1)=dx×MatrixO0_Hand(3)+dy×MatrixO0_Hand(4)+dz×MatrixO0_Hand(5)
v(2)=dx×MatrixO0_Hand(6)+dy×MatrixO0_Hand(7)+dz×MatrixO0_Hand(8)
再令
opv(y)=arcsin(v(1)÷(sqr(v(0)×v(0)+v(1)×v(1))))
opv(p)=-arcsin(v(2)÷(sqr(v(0)×v(0)+v(2)×v(2))))
同时令
oneoverModule=1÷(sqr(dx×dx+dy×dy+dz×dz))
再令
VectorV0(0)=dx×oneoverModule
VectorV0(1)=dy×oneoverModule
VectorV0(2)=dz×oneoverModule
其中,opv(y)、opv(p)分别表示手指根部关节相对于手掌的偏航角、俯仰角。需注意左手时:
opv(y)=-arcsin(v(1)÷(sqr(v(0)×v(0)+v(1)×v(1))))
计算手指除根部外的其它关节的角度的方法是:令gpo(ax)、gpo(ay)、gpo(az)分别表示手指离手掌较近的关节a的x、y、z坐标,gpo(bx)、gpo(by)、gpo(bz)分别表示手指离手掌较远的关节b的x、y、z坐标,令
dx=gpo(bx)-gpo(ax)
dy=gpo(az)-gpo(bz)
dz=gpo(by)-gpo(ay)
再令
oneoverModule=1÷(sqr(dx×dx+dy×dy+dz×dz))
再令
VectorV1(0)=dx×oneoverModule
VectorV1(1)=dy×oneoverModule
VectorV1(2)=dz×oneoverModule
最后令
opv(p)=arccos(VectorV0(0)×VectorV1(0)+VectorV0(1)×VectorV1(1)+VectorV0(2)×VectorV1(2))
opv(p)即为a关节的弯曲角度。
同时,再令
VectorV0(0)=VectorV1(0)
VectorV0(1)=VectorV1(1)
VectorV0(2)=VectorV1(2)
将其进行迭代运算,可直至求出手指最末端关节的角度。
步骤五、将转换完成的动作数据以Automation API的方式赋给DELMIA
DELMIA提供了两种主要的方式可对其进行二次开发,一种是出售CAA开发包,但价格非常昂贵,甚至比DELMIA软件还要贵;另一种是DELMIA本身免费提供的Automation API方式,本发明即采用此方式。通过该方式,DELMIA提供了一系列函数,可以对其进行调用、操作。其中,可以操作DELMIA里虚拟人的姿态的函数为SetPostureValues函数,其参数即为opv数组;可以操作虚拟人方向和位置的函数为SetPosition函数,其参数即为iAxisComponentsArray数组。
赋值后,DELMIA中的虚拟人的动作即和动作捕捉设备自带软件输出的人体动作相一致。由于动作捕捉设备所捕捉的人体动作和其自带软件记录、输出的人体动作之间有可能存在一定的误差,当这种误差小到肉眼可以忽略不计的时候,DELMIA中的虚拟人的动作即和穿着动作捕捉设备的人员的实际动作相一致。
步骤六、重复步骤二到步骤五
将动作数据转换完成并输入到DELMIA中的虚拟人使其动作后,此即标志着一帧动作的完成。然后开始下一帧动作,重复步骤二到步骤五,直到不再进行动作捕捉或动作捕捉设备自带软件不再发送捕捉到的动作数据为止。
实施例
本实施例以Measurand公司的光纤式动作捕捉设备所捕捉到的一帧动作数据为例进行说明。其自带软件ShapeRecorder所捕捉到的人体动作如错误!未找到引用源。所示。
该设备包含了两只手套,所以可以捕捉到两只手的动作。接收到的动作数据临时保存在gpo数组中,共有从1到235共235个数据,如表1所示。
表1 gpo数据列表
序号 | 数值 | 序号 | 数值 | 序号 | 数值 | 序号 | 数值 | 序号 | 数值 |
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 |
计算后得到的iAxisComponentsArray数组如表2所示。
表2 iAxisComponentsArray数据列表
序号 | 数值 |
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 |
计算后得到的opv数组如表3所示。
表3 opv数据列表
序号 | 数值 | 序号 | 数值 | 序号 | 数值 |
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 |
计算后得到的DELMIA中的虚拟人的动作与动作捕捉系统是一致的。
用无线光纤动作捕捉系统在DELMIA虚拟环境下实现沉浸式虚拟维修,虚拟人的操作数据完全来自真人的维修操作动作,具有更强的真实性,从而使得维修性分析、评估结果也更加有效。这样也就促使维修性设计工作的开展不再依赖于物理样机或实际装备,可以在产品设计同时并行考虑维修性问题,发现可能存在的维修性设计缺陷,提出改进建议,进而可以在装备设计阶段就对原始设计方案进行修改,避免对定型产品进行维修性再设计带来的产品再设计的麻烦与经济损失。
Claims (1)
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中的虚拟人使其动作后,此即标志着一帧动作的完成;然后开始下一帧动作,重复步骤二到步骤五,直到不再进行动作捕捉或动作捕捉设备自带软件不再发送捕捉到的动作数据为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110442411 CN102521464B (zh) | 2011-12-26 | 2011-12-26 | 基于delmia环境下的沉浸式虚拟维修仿真系统虚拟人控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110442411 CN102521464B (zh) | 2011-12-26 | 2011-12-26 | 基于delmia环境下的沉浸式虚拟维修仿真系统虚拟人控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102521464A CN102521464A (zh) | 2012-06-27 |
CN102521464B true CN102521464B (zh) | 2013-06-19 |
Family
ID=46292377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110442411 Expired - Fee Related CN102521464B (zh) | 2011-12-26 | 2011-12-26 | 基于delmia环境下的沉浸式虚拟维修仿真系统虚拟人控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102521464B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819863B (zh) * | 2012-07-31 | 2015-01-21 | 中国科学院计算技术研究所 | 一种三维人体运动的实时在线获取方法及其系统 |
CN103258078B (zh) * | 2013-04-02 | 2016-03-02 | 上海交通大学 | 融合Kinect设备和Delmia环境的人机交互虚拟装配系统及装配方法 |
CN103678821B (zh) * | 2013-12-25 | 2016-09-07 | 北京航空航天大学 | 一种基于虚拟维修仿真过程的维修时间预计方法 |
CN104008256B (zh) * | 2014-06-13 | 2018-07-24 | 北京航空航天大学 | 一种基于delmia的电缆维修仿真的工程实践方法 |
CN104156068B (zh) * | 2014-08-04 | 2017-04-12 | 北京航空航天大学 | 一种基于虚拟手交互特征层模型的虚拟维修交互操作方法 |
CN104778750B (zh) * | 2015-04-13 | 2018-12-18 | 北京迪生数字娱乐科技股份有限公司 | 一种面部表情捕捉系统及实现方法 |
CN105045989A (zh) * | 2015-07-09 | 2015-11-11 | 西北工业大学 | 一种基于虚拟维修的飞行器零部件维修性分析方法 |
CN106055386A (zh) * | 2016-06-14 | 2016-10-26 | 中国空间技术研究院 | 一种基于Delmia的虚拟人逆序偏移仿真方法 |
CN106200414A (zh) * | 2016-06-29 | 2016-12-07 | 北京致臻科技有限公司 | 一种基于delmia二次开发的非沉浸式虚拟维修快速仿真方法 |
CN106469467A (zh) * | 2016-09-05 | 2017-03-01 | 北京航空航天大学 | 一种基于人体功能部位的虚拟维修行为合成方法及系统 |
CN107067340B (zh) * | 2017-01-18 | 2024-02-13 | 上海核工程研究设计院股份有限公司 | 一种核电厂快速人因工程验证方法 |
CN112182705B (zh) * | 2020-09-28 | 2023-06-09 | 成都希盟泰克科技发展有限公司 | 基于bim技术的仿真模拟模型数据解析方法 |
-
2011
- 2011-12-26 CN CN 201110442411 patent/CN102521464B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN102521464A (zh) | 2012-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521464B (zh) | 基于delmia环境下的沉浸式虚拟维修仿真系统虚拟人控制方法 | |
CN107820593A (zh) | 一种虚拟现实交互方法、装置及系统 | |
CN109934881B (zh) | 图像编码方法、动作识别的方法及计算机设备 | |
Kokkas et al. | An Augmented Reality approach to factory layout design embedding operation simulation | |
JP2015214012A (ja) | ロボットを用いて物品を整列させる物品整列装置及び物品整列方法、並びに物品整列装置を備えた物品移送システム | |
CN109816773A (zh) | 一种虚拟人物的骨骼模型的驱动方法、插件及终端设备 | |
CN109446927A (zh) | 基于先验知识的双人交互行为识别方法 | |
CN113327281A (zh) | 运动捕捉方法、装置、电子设备以及拉花系统 | |
CN109840508A (zh) | 一个基于深度网络架构自动搜索的机器人视觉控制方法,设备及存储介质 | |
WO2020061432A1 (en) | Markerless human movement tracking in virtual simulation | |
CN110471409A (zh) | 机器人巡检方法、装置、计算机可读存储介质及机器人 | |
JP2015102913A (ja) | 姿勢推定装置及び姿勢推定方法 | |
CN113352338A (zh) | 机械臂控制方法、装置、电子设备以及拉花系统 | |
CN109732593A (zh) | 一种机器人的远端控制方法、装置及终端设备 | |
CN108687773A (zh) | 柔性机械臂遥操作装置及遥操作方法 | |
CN113119104A (zh) | 机械臂控制方法、机械臂控制装置、计算设备及系统 | |
CN111433783B (zh) | 手部模型生成方法、装置、终端设备及手部动作捕捉方法 | |
CN103700128B (zh) | 移动设备及其增强显示方法 | |
CN107643820A (zh) | Vr被动型机器人及其实现方法 | |
CN113084791B (zh) | 机械臂控制方法、机械臂控制装置及终端设备 | |
CN111055292B (zh) | 人机交互安全保障方法、装置及计算机可读存储介质 | |
Young et al. | A novel teaching and training system for industrial applications based on augmented reality | |
Rajpathak et al. | End-user framework for robot control | |
CN115481489A (zh) | 基于增强现实的白车身与生产线适配性验证系统及方法 | |
Tucakov et al. | Spinoza: A stereoscopic visually guided mobile robot |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130619 Termination date: 20161226 |