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

上传人:xia****o6 文档编号:4211404 上传时间:2018-09-07 格式:PDF 页数:16 大小:435.95KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110442411.2

申请日:

2011.12.26

公开号:

CN102521464A

公开日:

2012.06.27

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G06F 17/50申请日:20111226授权公告日:20130619终止日期:20161226|||授权|||公开

IPC分类号:

G06F17/50

主分类号:

G06F17/50

申请人:

北京航空航天大学

发明人:

周栋; 吕川; 陈桂玲; 张乃栋; 郭志奇; 李永祥

地址:

100191 北京市海淀区学院路37号

优先权:

专利代理机构:

北京慧泉知识产权代理有限公司 11232

代理人:

王顺荣;唐爱华

PDF下载: 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) 计算人体手指每一个肢节的姿势 ; 步骤五、 将转换完成的动作数据以 Automation API 的方式赋给 DELMIA ; 步骤六、 重复步骤二到步骤五 将动作数据转换完成并输入到 DELMIA 中的虚拟人使其动作后, 此即标志着一帧动作 的完成 ; 然后开始下一帧动作, 重复步骤二到步骤五, 直到不再进行动作捕捉或动作捕捉设 备自带软件不再发送捕捉到的动作数据为止。

说明书


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

    技术领域 本发明是基于 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 and Orientation 格式。对实时输出的 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÷180bP = 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)+Vec
     torV0(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 2 3 数值 -670.15 998.78 -114.53 序号 48 49 50 数值 15.03 -247.04 1028.98 序号 95 96 97 数值 -72.97 -108.6 -542.92 序号 142 143 144 数值 -73.6 944.1 -495.6 序号 189 190 191 数值 5.8 -174.3 917.5
     10CN 102521464 A 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 -3.76 -5.8 -0.03 0 -11.4 90.41 -425.69 1394.63 -395.35 -7.47 -62.72 33.62 -330.27 1172.44 -458.8 -63.93 -41.59 12.18 -147.52 1006.47 -498.24 -63.26 -44.84 3.17 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 53.17 71.09 -57.7 13.77 0 0 0 0 0 0 -678.96 911.52 -229.02 11.11 -65.36 5.26 -512.88 547.95 -244.3 146.93 -81.54 142.36 -563 122.64说98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121明书145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 -48 905.3 -474.6 -37.6 883.6 -455.1 -29.2 864.4 -436.5 -91.6 928.4 -503.3 -64.2 894.4 -483.4 -56.4 877 -460.3 -53.9 864.3 -436.6 -110.3 924 -508.7 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 2159/13 页 -15.7 -173 894.4 -34.7 -177.2 878.1 -54.6 -201 949.1 18 -196.1 909.2 -13.5 -201.5 890.7 -37.7 -215.1 884 -61.3 -219.1 938.6 31.8 -207.7 897.3173.66 240.45 -24.69 -35.92 -22.55 -431.35 86.15 286.77 -19.79 2.27 -6.64 -337.33 1626.28 -218.28 -2.33 -21.05 -7.74 -483.63 1324.33 -177.81 -12.25 -28.14 -5.3 -72.311CN 102521464 A 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
     0 0 0 0 0 0 0 10.78 -89.45 -421.93 1469.44 -2.43 -30.32 -66.06 -62.48 -375.06 1240.95 87.54 70.67 -57.98 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 -282.96 0.82 -37.88 -2.54 -445.37 31.05 -277.73 0.65 1.68 -3.07 -677.48 927.2 10.46 -33.21 -58.87 -32.34 -502.76 584.79 121.07 -104.87说122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141明书169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 -87.5 900.1 -490 -78.2 887.3 -473.3 -71.8 875.5 -453.4 -188.1 1010.7 -7.8 -175.7 975.1 -13 -172.8 945.4 -15.7 -184.9 956.8 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 23510/13 页 10.1 -208.6 875.4 -10.4 -215.1 860.3 -31.8 -235.1 939.2 43.6 -220 910.2 24.3 -211.9 892.9 11.5 -213.5 880 -8.7 19101351007.7 -455.2 -41.7 985.4 -451.9 -12.9 977.7 -448.5 -57.2 956.4 -489.1 -25.9 926 -474.6 -10 906.9 -457.8 -0.8 892.2 -438.4计算后得到的 iAxisComponentsArray 数组如表 2 所示。 表 2 iAxisComponentsArray 数据列表12CN 102521464 A 序号 0 1 2 3 4 5 6 7 8 9 10 11
     序号 0 1 2 3 4 5 6 7 数值 0.184038089865327 0.314926259541073 0.228952556695146 0.52138671063068 0.227933461315242 0.494767919630044 0.108195579702873 0.469603582900196 序号 46 47 48 49 50 51 52 53说数值明书11/13 页0.994880572452694 -5.20918297207002E-04 -0.101056297182946 -6.10452524088039E-03 0.997850826145967 -6.52415782411447E-02 0.1008730951631 6.55244794251704E-02 0.992739221179599 -670.15 114.53 998.78计算后得到的 opv 数组如表 3 所示。 表 3 opv 数据列表数值 0.368318556927405 -2.0644135581E-02 0.662074696957194 0.28348720341763 0.26486256556277 -3.83851851578E-02 0.44856871306601 0.240872273298108序号 92 93 94 95 96 97 98 99数值 4.38179577778E-03 0.011517098709404 1.55202948177E-02 4.381795777787E-03 0.011517098709404 0.011640221113329 4.38179577778E-03 0.01151709870940413CN 102521464 A8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 5.200344611132E-02 0.281411039034772 0.019392658381421 0.503949339142358 0.266707629876294 0.289416047746366 0.166192012934594 0.325319108556933 0.367599524708788 -3.809469252296E-02 0.41948455662883 -0.143189218987736 -7.392483536665E-03 0.128442699948092 0.934209068290847 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68说明书100 101 102 103 104 105 106 107 108 109 110 111 112 113 11412/13 页0.011640221113329 3.28634683334E-03 0.011517098709404 0.011640221113329 2.19089788889E-03 0.011517098709404 0.011640221113329 2.19089788889E-03 1.34366151609E-02 1.55202948177E-02 2.19089788889E-03 0.01727564806410 2.32804422266E-02 1.82574824074E-03 1.53561316125E-020.244905462198495 0.439883710226011 -7.69565185990E-02 6.188785089972E-04 -1.26533243869E-02 1.06099263289446 0.604670367536386 0.999677589240799 0.185309050478051 0.689144585263836 -2.97817514529E-05 6.389070761478E-05 -6.94205194977E-02 -9.62830939099E-04 2.732220729611E-0223 24 25 26 27 28 29 30 310.330568748156127 0.997281168671002 0.424639494771559 0.935886932522163 -9.478383942028E-03 2.671756652326E-03 -4.473341560137E-02 -7.391162916579E-02 0.1077912437661669 70 71 72 73 74 75 76 77-7.39564086222E-05 0.546353842667605 4.69590165000E-02 0.224666048082743 0.564081570332284 1.720730190421E-03 -0.25600674158459 -0.25207179792575 6.280665195036E-02115 116 117 118 119 120 121 122 1233.88007370444E-02 1.46059859259E-03 0.011517098709404 4.65608844533E-02 1.46059859259E-03 0.011517098709404 6.20811792710E-02 1.46059859259E-03 1.53561316125E-02
     14CN 102521464 A 32 33 34 35 36 37 38 39 40 41 42 43 44 45 -6.67776822491E-05 0.546933162630052 0.143232452622239 9.504847590137E-02 0.531884402989019 0.557300353296777 6.733604681387E-02 0.160971234191241 0.384409728372327 0.293481208379191 0.378973549561685 -4.453584371591E-02 0.43163786665231 0.482969608301604 78 79 80 81 82 83 84 85 86 87 88 89 90 91说明书124 125 126 127 128 129 130 131 132 133 134 135 13613/13 页 6.98413266799E-02 1.46059859259E-03 0.011517098709404 7.76014740888E-02 1.46059859259E-03 0.005758549354702 0.15520294817771 0 0 0 0 0 0-0.10240269663383 -2.80079775473E-02 7.30299296297E-03 0.011517098709404 1.552029481777E-02 6.207544018531E-03 0.011517098709404 1.552029481777E-02 5.477244722234E-03 0.011517098709404 1.5520294817771E-02 5.1120950740851E-03 0.011517098709404 1.5520294817771E-02
     计算后得到的 DELMIA 中的虚拟人的动作与动作捕捉系统是一致的。
     用无线光纤动作捕捉系统在 DELMIA 虚拟环境下实现沉浸式虚拟维修, 虚拟人的 操作数据完全来自真人的维修操作动作, 具有更强的真实性, 从而使得维修性分析、 评估结 果也更加有效。这样也就促使维修性设计工作的开展不再依赖于物理样机或实际装备, 可 以在产品设计同时并行考虑维修性问题, 发现可能存在的维修性设计缺陷, 提出改进建议, 进而可以在装备设计阶段就对原始设计方案进行修改, 避免对定型产品进行维修性再设计 带来的产品再设计的麻烦与经济损失。

基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法.pdf_第1页
第1页 / 共16页
基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法.pdf_第2页
第2页 / 共16页
基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法.pdf》由会员分享,可在线阅读,更多相关《基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法.pdf(16页珍藏版)》请在专利查询网上搜索。

1、(10)授权公告号 CN 102521464 B (45)授权公告日 2013.06.19 C N 1 0 2 5 2 1 4 6 4 B *CN102521464B* (21)申请号 201110442411.2 (22)申请日 2011.12.26 G06F 17/50(2006.01) (73)专利权人北京航空航天大学 地址 100191 北京市海淀区学院路37号 (72)发明人周栋 吕川 陈桂玲 张乃栋 郭志奇 李永祥 (74)专利代理机构北京慧泉知识产权代理有限 公司 11232 代理人王顺荣 唐爱华 (54) 发明名称 基于DELMIA环境下的沉浸式虚拟维修仿真 系统虚拟人控制方法。

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

3、采集的真实的维修数据对DELMIA中虚拟人动 作控制,提出了DELMIA环境下虚拟人控制的新方 案,实现用户与虚拟环境的融合。 (51)Int.Cl. 审查员 胡百乐 权利要求书1页 说明书13页 附图1页 (19)中华人民共和国国家知识产权局 (12)发明专利 权利要求书1页 说明书13页 附图1页 (10)授权公告号 CN 102521464 B CN 102521464 B 1/1页 2 1.基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,其特征在于:该方 法具体步骤如下: 步骤一、对动作捕捉软件的数据输出进行设置 选择动作捕捉设备自带的软件ShapeRecorder作为动。

4、作捕捉软件,对其数据的输出进 行设置;输出设置分为实时输出和以文件方式输出; 步骤二、进行动作捕捉,通过动作捕捉设备自带的软件实时发送数据 有两种方式,一种是人员穿上动作捕捉设备,进行动作捕捉;另一种是之前进行动作捕 捉时,用设备自带的软件对动作数据进行录制,而发送数据时则通过设备自带软件打开已 录制好的动作数据文件,向外发送数据; 步骤三、接收并临时保存动作捕捉软件输出的动作数据 以UDPSocket的方式接收数据,以数组的形式临时保存当前接收到的一帧数据;为说 明方便,该数组命名为gpo数组,该数组包含从1到235共235个数据,分别以gpo(1)、 gpo(2)、gpo(235)表示; 。

5、步骤四、对动作数据进行计算 根据临时保存的当前帧数据即gpo数组进行计算,将该数据的格式转换为DELMIA 使用的动作数据格式,临时保存在opv数组和iAxisComponentsArray数组当中;该步骤进 一步细分为:a)计算人体的方向和位置;b)计算人体不包括手指的每一个肢节的姿势;c) 计算人体手指每一个肢节的姿势; 其中,opv数组保存人体的姿态数据,iAxisComponentsArray数组保存人体的方 向和位置数据;opv数组包含从0到136共137个数据,分别以opv(0)、opv(1)、 opv(136)表示;iAxisComponentsArray数组包含从0到11共12。

6、个数据,分别以 iAxisComponentsArray(0)、iAxisComponentsArray(1)、iAxisComponentsArray(11) 表示; 步骤五、将转换完成的动作数据以Automation API的方式赋给DELMIA; 步骤六、重复步骤二到步骤五 将动作数据转换完成并输入到DELMIA中的虚拟人使其动作后,此即标志着一帧动作 的完成;然后开始下一帧动作,重复步骤二到步骤五,直到不再进行动作捕捉或动作捕捉设 备自带软件不再发送捕捉到的动作数据为止。 权 利 要 求 书CN 102521464 B 1/13页 3 基于 DELMIA 环境下的沉浸式虚拟维修仿真系统。

7、虚拟人控 制方法 技术领域 0001 本发明是基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,具体 的说,是一种利用DELMIA软件提供的沉浸式虚拟仿真系统,进行人体动作和行为的仿真, 使用户像在实际产品上一样对虚拟产品进行实时操作,从而可在物理样机产生之前及时地 发现设计中存在的维修问题,它属于虚拟现实技术辅助系统维修的技术领域。 背景技术 0002 沉浸式虚拟仿真是指设计人员在沉浸式虚拟维修环境下对产品进行“虚拟地”维 修,可在物理样机生产之前及时地发现设计中存在的维修问题,进行维修性设计的分析,维 修规程的确认和辅助维修训练。利用动作捕捉系统与虚拟维修仿真软件构建沉浸式虚拟。

8、维 修仿真系统,不仅可以利用虚拟维修仿真软件中的产品数据,而且能够让用户像在实际产 品上一样对虚拟产品进行实时操作。 0003 目前动作捕捉系统与虚拟维修仿真软件融合技术的研究进展较慢,二者还相对独 立。一方面,虚拟维修软件具有很强的仿真分析功能,但其中的人体运动建模工作较为繁 琐且编辑的动作不够真实有效;另一方面动作捕捉系统还只在动画制作等特殊领域应用较 多,其配套的软件一般只能利用三维动画复现真人运动轨迹,而不具有其他分析处理功能, 也不能载入CAD产品数据。因此,二者集成能有效的实现真人对虚拟维修仿真软件中虚拟 人的控制,为仿真分析提供更加真实有效的维修动作数据,实现真正意义上的沉浸式虚。

9、拟 维修。 发明内容 0004 (1)本发明的目的是基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制 方法,通过将动作捕捉设备所捕捉到的人体动作实时地导入到专业软件提供的虚拟维修平 台当中的虚拟人上,从而可以进行沉浸式的虚拟维修活动。 0005 (2)本发明的技术方案: 0006 以DELMIA虚拟仿真软件和ShapeWarp无线光纤动作捕捉系统构建沉浸式虚拟维 修仿真系统,并利用DELMIA提供的Automation二次开发技术,对二者的接口设计算法做了 相应研究,实现动作捕捉系统采集的真实的维修数据对DELMIA中虚拟人动作控制,提出了 DELMIA环境下虚拟人控制的新方案,实现用。

10、户与虚拟环境的融合。 0007 以ShapeWarp无线光纤动作捕捉系统和目前航空部门普遍采用的DELMIA虚拟仿 真软件构建沉浸式虚拟维修仿真系统,并对二者间的接口设计进行了深入研究,实现了动 作捕捉系统对DELMIA软件中虚拟人的控制。 0008 本发明基于DELMIA环境下的沉浸式虚拟维修仿真系统虚拟人控制方法,通过如 下步骤实现: 0009 步骤一、对动作捕捉软件的数据输出进行设置 说 明 书CN 102521464 B 2/13页 4 0010 选择ShapeRecorder作为动作捕捉软件,对其数据的输出进行必要的设置。主要 的输出设置分为实时输出和以文件方式输出。 0011 步骤。

11、二、进行动作捕捉,通过动作捕捉设备自带的软件实时发送数据 0012 有两种方式,一种是人员穿上动作捕捉设备,进行动作捕捉;另一种是之前进行动 作捕捉时,用设备自带的软件对动作数据进行录制,而发送数据时则通过设备自带软件打 开已录制好的动作数据文件,向外发送数据。 0013 步骤三、接收并临时保存动作捕捉软件输出的动作数据 0014 以UDPSocket的方式接收数据,以数组的形式临时保存当前接收到的一帧数据。 为说明方便,该数组命名为gpo数组。该数组包含从1到235共235个数据,分别以gpo(1)、 gpo(2)gpo(235)表示。 0015 步骤四、对动作数据进行计算 0016 根据临。

12、时保存的当前帧数据即gpo数组进行计算,可以将该数据的格式 转换为DELMIA可以使用的动作数据格式,临时保存在opv数组和iAxisComponentsArray 数组当中。该步骤可以进一步细分为:a)计算人体的方向和位置;b)计算人体每一个肢节 的姿势(不包括手指);c)计算人体手指每一个肢节的姿势 0017 步骤五、将转换完成的动作数据以Automation API的方式赋给DELMIA 0018 步骤六、重复步骤二到步骤五 0019 将动作数据转换完成并输入到DELMIA中的虚拟人使其动作后,此即标志着一帧 动作的完成。然后开始下一帧动作,重复步骤二到步骤五,直到不再进行动作捕捉或动作。

13、捕 捉设备自带软件不再发送捕捉到的动作数据为止。 0020 本发明要求的设备条件:两台电脑,其中动作捕捉系统(ShapeRecorder)需要 一台,虚拟环境软件平台(delmia)需要一台,两台电脑之间要有网络连接,或者是一台电 脑,动作捕捉系统和虚拟环境平台都在同一台电脑上运行,此时电脑要有网卡。软件条件: Windows操作系统,且配置要能够正常运行两款软件。 0021 (3)本发明的优点: 0022 本发明所采用的动作捕捉设备为Measurand公司的光纤式动作捕捉设备,采用的 虚拟维修软件平台为Dassault公司的DELMIA软件。Measurand公司开发了一些数据转换 插件软件。

14、,可以将其动作捕捉设备所捕捉到的人体动作实时导入到MotionBuilder软件或 Virtools软件中去。 0023 本发明通过采用DELMIA软件本身提供的接口进行开发,更为重要的是,本发明采 用模块化设计思想,具备可扩展性,即对于不同的动作捕捉设备,通过选择相应的数据转换 模块,可以得到同样格式的动作数据,以操纵DELMIA中的虚拟人。因此,用户可以选择多 种动作捕捉设备,甚至可以同时采用不同的动作捕捉设备捕捉多人的动作,实时地导入到 DELMIA中的多个虚拟人上。 附图说明 0024 图1为基于DELMIA环境下的沉浸式虚拟仿真流程图; 0025 图2为Shaperecorder中的。

15、全局坐标系图; 0026 图3为Delmia中的全局坐标系图; 说 明 书CN 102521464 B 3/13页 5 具体实施方式 0027 下面结合附图和实施例对本发明进行详细说明。 0028 本发明首先利用Measurand公司的光纤式动作捕捉设备实时地捕捉人体的动作, 并由该设备自带的ShapeRecorder软件通过UDPSocket的方式实时向外发送数据。然后本 发明利用UDPSocket的方式接收该数据,接着进行数据的转换等计算,将包含人体动作的 数据信息转换成DELMIA可以使用的数据格式。具体实施流程图如图1所示,不过该数据 DELMIA软件本身并不能直接使用,需要通过DEL。

16、MIA提供的Automation API接口,使用一系 列的API函数,对DELMIA软件进行操作。本发明是基于DELMIA环境下的沉浸式虚拟维修 仿真系统虚拟人控制方法,具体实施步骤如下: 0029 步骤一、对动作捕捉软件的数据输出进行设置 0030 选择ShapeRecorder作为动作捕捉软件,对其数据的输出进行必要的设置。 ShapeRecorder软件有2种数据输出方式,一种为实时输出,一种输出为文件,选择实时输 出;该软件有4种数据输出格式,分别为Global Position and Orientation格式、C3D格 式、BVH格式和MotionBuilder/Quest3D。

17、/Virtools(Quaternion)Format格式,选择Global Position and Orientation格式。对实时输出的UDPSocket的属性进行设置,如IP地址、 端口号等,具体以实施例为例。 0031 步骤二、进行动作捕捉,通过动作捕捉设备自带的软件实时发送数据 0032 有两种方式,一种是人员穿上动作捕捉设备,进行动作捕捉,同时该设备自带的软 件实时地发送数据;另一种是之前进行动作捕捉时,用设备自带的软件对动作数据进行录 制,而发送数据时则通过设备自带软件打开已录制好的动作数据文件,向外发送数据。这两 种方式都是可行的。均通过UDPSocket的方式发送数据。 。

18、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个数据,分别以op。

19、v(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)计算人体的方向和。

20、位置 0040 令 说 明 书CN 102521464 B 4/13页 6 0041 Yawgpo(6)3.1415926180 0042 Pitchgpo(5)3.1415926180 0043 Rollgpo(4)3.1415926180 0044 Xpgpo(1) 0045 Ypgpo(2) 0046 Zpgpo(3) 0047 然后,令 0048 cycos(Yaw) 0049 sYSin(Yaw) 0050 cPcos(Pitch) 0051 sPSin(Pitch) 0052 cRcos(Roll) 0053 sRSin(Roll) 0054 再令 0055 iAxisCompon。

21、entsArray(0)cycP 0056 iAxisComponentsArray(1)sYcP 0057 iAxisComponentsArray(2)sP 0058 iAxisComponentsArray(3)-sYcR-cysPsR 0059 iAxisComponentsArray(4)cycR-sYsPsR 0060 iAxisComponentsArray(5)cPsR 0061 iAxisComponentsArray(6)sYsR-cysPcR 0062 iAxisComponentsArray(7)-cysR-sYsPcR 0063 iAxisComponentsArra。

22、y(8)cPcR 0064 iAxisComponentsArray(9)Xp 0065 iAxisComponentsArray(10)-Zp 0066 iAxisComponentsArray(11)Yp 0067 则iAxisComponentsArray数组将临时保存人体的方向和位置数据。2)计算人体 每一个肢节的姿势(不包括手指) 0068 假设人体的某部分有两个相邻的肢节,则这两个肢节间存在着类似于“树干 树枝”的关系,而人体的总“树干”肢节则为人体的臀部。例如,人的左前臂和左上臂这两 个肢节,左上臂为“树干”,左前臂为“树枝”;人的臀部、腰部和胸部间,腰部既是臀部的“树 枝”,又。

23、是胸部的“树干”。 0069 假设有某两个相邻的肢节,令“树干”肢节为a肢节,“树枝”肢节为b肢节。则gpo 数组中a肢节的翻滚角、俯仰角、偏航角数据分别为gpo(iar)、gpo(iap)、gpo(iay),b肢节 的翻滚角、俯仰角、偏航角数据分别为gpo(ibr)、gpo(ibp)、gpo(iby)。令 0070 aRgpo(iar)3.1415926180 0071 aPgpo(iap)3.1415926180 0072 aYgpo(iay)3.1415926180 0073 bRgpo(ibr)3.1415926180 说 明 书CN 102521464 B 5/13页 7 0074 。

24、bPgpo(ibp)3.1415926180 0075 bygpo(iby)3.1415926180 0076 然后令 0077 cYacos(aY) 0078 sYaSin(aY) 0079 cPacos(aP) 0080 sPaSin(aP) 0081 cRacos(aR) 0082 sRaSin(aR) 0083 cYbcos(by) 0084 sYbSin(by) 0085 cPbcos(bP) 0086 sPbSin(bP) 0087 cRbcos(bR) 0088 sRbSin(bR) 0089 再令 0090 MaT(0)cYacPa 0091 MaT(1)-sYacRa-cYa。

25、sPasRa 0092 MaT(2)sYasRa-cYasPacRa 0093 MaT(3)sYacPa 0094 MaT(4)cYacRa-sYasPasRa 0095 MaT(5)-cYasRa-sYasPacRa 0096 MaT(6)sPa 0097 MaT(7)cPasRa 0098 MaT(8)cPacRa 0099 Mb(0)cYbcPb 0100 Mb(1)sYbcPb 0101 Mb(2)sPb 0102 Mb(3)-sYbcRb-cYbsPbsRb 0103 Mb(4)cYbcRb-sYbsPbsRb 0104 Mb(5)cPbsRb 0105 Mb(6)sYbsRb-cY。

26、bsPbcRb 0106 Mb(7)-cYbsRb-sYbsPbcRb 0107 Mb(8)cPbcRb 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) 说 明 书CN 102521464 B 6/13页 8 0113 M。

27、atrixA(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是一个代表33矩阵的数组。这个矩阵的值代表了b肢节相对于 a肢节的方向变。

28、换,即在肢节物体坐标系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(b。

29、3)中。 0123 3)计算人体手指每一个肢节的姿势 0124 手指和其它肢节的计算有一些不同,一是因为进行动作捕捉时未必会捕捉两只手 的数据,二是因为动作捕捉设备自带软件输出的手指数据只包括手指关节的位置数据,不 包括欧拉角形式的、手指肢节的方向数据。所以,如果在动作捕捉时不捕捉手部的动作,则 可以省略此步骤;如果在捕捉时只捕捉一只手的动作,则只计算一只手的数据,另一只不进 行计算;如果捕捉了两只手的动作,则计算两只手的数据。具体的计算方法以右手为例进行 说明,左手参照右手。 0125 令gpo(r)、gpo(p)、gpo(y)分别为右手的翻滚角、俯仰角和偏航角,则: 0126 Yawgpo。

30、(y)3.1415926180 0127 Pitchgpo(p)3.1415926180 0128 Rollgpo(r)3.1415926180 0129 再令 0130 cycos(Yaw) 0131 sYSin(Yaw) 0132 cPcos(Pitch) 0133 sPSin(Pitch) 0134 cRcos(Roll) 0135 sRSin(Roll) 0136 再令 0137 MatrixO0_Hand(0)cycP 0138 MatrixO0_Hand(1)sYcP 0139 MatrixO0_Hand(2)sP 0140 MatrixO0_Hand(3)-sYcR-cysPsR。

31、 0141 MatrixO0_Hand(4)cycR-sYsPsR 说 明 书CN 102521464 B 7/13页 9 0142 MatrixO0_Hand(5)cPsR 0143 MatrixO0_Hand(6)sYsR-cysPcR 0144 MatrixO0_Hand(7)-cysR-sYsPcR 0145 MatrixO0_Hand(8)cPcR 0146 令gpo(ax)、gpo(ay)、gpo(az)分别表示手指根部关节a的x、y、z坐标,gpo(bx)、 gpo(by)、gpo(bz)分别表示手指除根部关节外离手掌较近的关节b的x、y、z坐标,则: 0147 dxgpo(bx。

32、)-gpo(ax) 0148 dygpo(az)-gpo(bz) 0149 dzgpo(by)-gpo(ay) 0150 再令 0151 v(0)dxMatrixO0_Hand(0)+dyMatrixO0_Hand(1)+dzMatrixO0_Hand(2) 0152 v(1)dxMatrixO0_Hand(3)+dyMatrixO0_Hand(4)+dzMatrixO0_Hand(5) 0153 v(2)dxMatrixO0_Hand(6)+dyMatrixO0_Hand(7)+dzMatrixO0_Hand(8) 0154 再令 0155 opv(y)arcsin(v(1)(sqr(v(0。

33、)v(0)+v(1)v(1) 0156 opv(p)-arcsin(v(2)(sqr(v(0)v(0)+v(2)v(2) 0157 同时令 0158 oneoverModule1(sqr(dxdx+dydy+dzdz) 0159 再令 0160 VectorV0(0)dxoneoverModule 0161 VectorV0(1)dyoneoverModule 0162 VectorV0(2)dzoneoverModule 0163 其中,opv(y)、opv(p)分别表示手指根部关节相对于手掌的偏航角、俯仰角。需注 意左手时: 0164 opv(y)-arcsin(v(1)(sqr(v(0)。

34、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 dxgpo(bx)-gpo(ax) 0167 dygpo(az)-gpo(bz) 0168 dzgpo(by)-gpo(ay) 0169 再令 0170 oneoverModule1(sqr(dxdx+dydy+dzdz) 0171 再令 0172 VectorV1(0)dxoneoverModule 0173。

35、 VectorV1(1)dyoneoverModule 0174 VectorV1(2)dzoneoverModule 0175 最后令 0176 opv(p)arccos(VectorV0(0)VectorV1(0)+VectorV0(1)VectorV1(1)+Vec 说 明 书CN 102521464 B 8/13页 10 torV0(2)VectorV1(2) 0177 opv(p)即为a关节的弯曲角度。 0178 同时,再令 0179 VectorV0(0)VectorV1(0) 0180 VectorV0(1)VectorV1(1) 0181 VectorV0(2)VectorV1。

36、(2) 0182 将其进行迭代运算,可直至求出手指最末端关节的角度。 0183 步骤五、将转换完成的动作数据以Automation API的方式赋给DELMIA 0184 DELMIA提供了两种主要的方式可对其进行二次开发,一种是出售CAA开发包,但 价格非常昂贵,甚至比DELMIA软件还要贵;另一种是DELMIA本身免费提供的Automation API方式,本发明即采用此方式。通过该方式,DELMIA提供了一系列函数,可以对其进行 调用、操作。其中,可以操作DELMIA里虚拟人的姿态的函数为SetPostureValues函数,其 参数即为opv数组;可以操作虚拟人方向和位置的函数为Set。

37、Position函数,其参数即为 iAxisComponentsArray数组。 0185 赋值后,DELMIA中的虚拟人的动作即和动作捕捉设备自带软件输出的人体动作相 一致。由于动作捕捉设备所捕捉的人体动作和其自带软件记录、输出的人体动作之间有可 能存在一定的误差,当这种误差小到肉眼可以忽略不计的时候,DELMIA中的虚拟人的动作 即和穿着动作捕捉设备的人员的实际动作相一致。 0186 步骤六、重复步骤二到步骤五 0187 将动作数据转换完成并输入到DELMIA中的虚拟人使其动作后,此即标志着一帧 动作的完成。然后开始下一帧动作,重复步骤二到步骤五,直到不再进行动作捕捉或动作捕 捉设备自带软。

38、件不再发送捕捉到的动作数据为止。 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 。

39、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 说 明 书CN 102521464 B 10 9/13页 11 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 。

40、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.9。

41、6 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.5。

42、9 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。

43、.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 说 明 书CN 102521464 B 11 10/13页 12 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 。

44、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 。

45、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。

46、.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 说 明 书CN 102521464 B 12 11/13页 13 2。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1