一种人体动作映射方法、装置、计算机设备和存储介质转让专利

申请号 : CN202110724802.7

文献号 : CN113450903B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘天鑫蒿杰梁俊刘嘉瑞舒琳黄玉清叶渐豪

申请人 : 广东人工智能与先进计算研究院中国科学院自动化研究所芯跳科技(广州)有限公司

摘要 :

本发明实施例提供了一种人体动作映射方法、装置、计算机设备和存储介质,该方法包括:在本实施例中,从多个惯性测量单元读取惯性数据,多个惯性测量单元贴装在用户的身体部位上,部分相邻两个惯性测量单元之间间隔用户的身体关节,将惯性数据融合为惯性测量单元在空间中的姿态,根据相邻两个惯性测量单元对应的姿态计算身体关节的关节角,将关节角映射至机器人的机器关节,驱动机器人移动,直至相邻机器关节到达关节角,通过直接计算惯性测量单元的姿态计算身体关节的关节角,将关节角映射至机器人的机器关节,操作简单,减少计算复杂度,提高计算频率,使得机器人跟随的程度高、相应的速度快,可以指导机器人实现多种灵巧动作。

权利要求 :

1.一种人体动作映射方法,其特征在于,包括:从多个惯性测量单元读取惯性数据,多个所述惯性测量单元贴装在用户的身体部位上,部分相邻两个所述惯性测量单元之间间隔所述用户的身体关节;

将所述惯性数据融合为所述惯性测量单元在空间中的姿态;

根据相邻两个所述惯性测量单元对应的所述姿态计算所述身体关节的关节角;

将所述关节角映射至机器人的机器关节;

驱动所述机器人移动,直至相邻所述机器关节到达所述关节角;

所述将所述惯性数据融合为所述惯性测量单元在空间中的姿态,包括:确定所述惯性数据的类型;

按照所述类型对所述惯性数据进行标定;

若标定完成,则基于滤波的方式将所述惯性数据融合为所述惯性测量单元在空间中的姿态;

所述按照所述类型对所述惯性数据进行标定,包括:若所述类型为角速度,则查询第一偏置误差;

将所述角速度减去所述第一偏置误差,作为标定后的角速度;

和/或,

若所述类型为加速度,则查询第二偏置误差、第一比例误差;

将所述加速度与所述第二偏置误差之间的差值乘以所述第一比例误差,作为标定后的加速度;

和/或,

若所述类型为磁场强度,则获取在所述惯性测量单元在空间转动时记录的磁场强度;

对所述磁场强度计算变化速率;

对所述变化速率计算平均值、标准差;

在所述平均值的基础上,分别向上扩展多个所述标准差、向下扩展多个所述标准差,获得变化范围;

若所述变化速率超过所述变化范围,则记录所述变化速率对应的时间;

删除处于所述时间的所述磁场强度;

针对多个轴,分别查询第一目标强度、第二目标强度,其中,第一目标强度为数值最大的磁场强度,第二目标强度为数值最小的磁场强度;

针对多个轴,分别对所述第一目标强度与所述第二目标强度计算平均值,作为第三偏置误差;

针对多个轴,分别所述第一目标强度与所述第二目标强度之间的差值,作为所述磁场强度的变化幅度;

选择数值最大的所述变化幅度,作为目标幅度;

针对多个轴,分别计算所述变化幅度与所述目标幅度之间的比值,作为第二比例误差;

将所述磁场强度与所述第三偏置误差之间的差值乘以所述第二比例误差,作为修正后的磁场强度;

将当前时间修正后的磁场强度与上一时间修正后的磁场强度进行一阶互补滤波,作为标定后的磁场强度。

2.根据权利要求1所述的方法,其特征在于,所述根据相邻两个所述惯性测量单元对应的所述姿态计算所述身体关节的关节角,包括:查询相邻两个所述惯性测量单元对应的两个所述姿态,作为第一目标姿态、第二目标姿态;

确定相邻两个所述惯性测量单元在一个或多个自由度下转动的模式,作为转动模式;

计算所述第二目标姿态相对于所述第一目标姿态的关系,作为第三目标姿态;

将表示所述转动模式的参考向量绕所述第三目标姿态旋转,得到目标向量;

计算所述目标向量与所述参考向量之间的夹角,作为相邻两个所述身体部位之间的关节角。

3.根据权利要求2所述的方法,其特征在于,所述计算所述第二目标姿态相对于所述第一目标姿态的关系,作为第三目标姿态,包括:计算所述第一目标姿态的逆;

将所述第二目标姿态与所述第一目标姿态的逆相乘,得到第三目标姿态。

4.根据权利要求2所述的方法,其特征在于,所述将表示所述转动模式的参考向量绕所述第三目标姿态旋转,得到目标向量,包括:设置表示所述转动模式的向量,作为参考向量;

计算所述第三目标姿态的逆;

将所述第三目标姿态、所述参考向量与所述第三目标姿态的逆相乘,得到目标向量。

5.根据权利要求4所述的方法,其特征在于,所述设置表示所述转动模式的向量,作为参考向量,包括:在参考向量中,对相邻两个所述惯性测量单元转动的自由度对应的维度设置为0;

在参考向量中,对相邻两个所述惯性测量单元非转动的自由度对应的维度设置为1。

6.根据权利要求2所述的方法,其特征在于,所述计算所述目标向量与所述参考向量之间的夹角,作为相邻两个所述身体部位之间的关节角,包括:对所述目标向量与所述参考向量进行反余弦处理,得到相邻两个所述身体部位之间的关节角。

7.根据权利要求1、3‑6中任一项所述的方法,其特征在于,所述将所述关节角映射至机器人的机器关节,包括:查询预设的映射关系,所述映射关系中记录从所述惯性测量单元的第一编号映射至机器人的机器关节的第二编号的关系;

查询相邻两个所述惯性测量单元的两个第一编号;

在所述映射关系中,查询相邻两个所述惯性测量单元的两个第一编号共同映射的第二编号;

将相邻两个所述惯性测量单元的所述关节角映射至所述第二编号对应的机器关节。

8.根据权利要求1、3‑6中任一项所述的方法,其特征在于,所述驱动所述机器人移动,直至相邻所述机器关节到达所述关节角,包括:规划所述机器关节到达所述关节角的轨迹;

控制所述机器人按照所述轨迹转动,直至相邻所述机器关节到达所述关节角。

9.根据权利要求1、3‑6中任一项所述的方法,其特征在于,还包括:加载业务场景;

在所述业务场景中,按照所述姿态生成与所述身体部位匹配的虚拟部位。

10.一种人体动作映射装置,其特征在于,包括:惯性数据读取模块,用于从多个惯性测量单元读取惯性数据,多个所述惯性测量单元贴装在用户的身体部位上,部分相邻两个所述惯性测量单元之间间隔所述用户的身体关节;

姿态融合模块,用于将所述惯性数据融合为所述惯性测量单元在空间中的姿态;

关节角计算模块,用于根据相邻两个所述惯性测量单元对应的所述姿态计算所述身体关节的关节角;

关节角映射模块,用于将所述关节角映射至机器人的机器关节;

机器人驱动模块,用于驱动所述机器人移动,直至相邻所述机器关节到达所述关节角;

所述姿态融合模块包括:

类型确定模块,用于确定所述惯性数据的类型;

数据标定模块,用于按照所述类型对所述惯性数据进行标定;

数据滤波模块,用于若标定完成,则基于滤波的方式将所述惯性数据融合为所述惯性测量单元在空间中的姿态;

所述数据标定模块包括:

第一标定参数查询模块,用于若所述类型为角速度,则查询第一偏置误差;

角速度标定模块,用于将所述角速度减去所述第一偏置误差,作为标定后的角速度;

和/或,

第二标定参数查询模块,用于若所述类型为加速度,则查询第二偏置误差、第一比例误差;

加速度标定模块,用于将所述加速度与所述第二偏置误差之间的差值乘以所述第一比例误差,作为标定后的加速度;

和/或,

磁场强度获取模块,用于若所述类型为磁场强度,则获取在所述惯性测量单元在空间转动时记录的磁场强度;

变化速率计算模块,用于对所述磁场强度计算变化速率;

变化差异计算模块,用于对所述变化速率计算平均值、标准差;

变化范围计算模块,用于在所述平均值的基础上,分别向上扩展多个所述标准差、向下扩展多个所述标准差,获得变化范围;

时间记录模块,用于若所述变化速率超过所述变化范围,则记录所述变化速率对应的时间;

磁场强度删除模块,用于删除处于所述时间的所述磁场强度;

极值查询模块,用于针对多个轴,分别查询第一目标强度、第二目标强度,其中,第一目标强度为数值最大的磁场强度,第二目标强度为数值最小的磁场强度;

偏置误差计算模块,用于针对多个轴,分别对所述第一目标强度与所述第二目标强度计算平均值,作为第三偏置误差;

变化幅度计算模块,用于针对多个轴,分别所述第一目标强度与所述第二目标强度之间的差值,作为所述磁场强度的变化幅度;

目标幅度选择模块,用于选择数值最大的所述变化幅度,作为目标幅度;

比例误差计算模块,用于针对多个轴,分别计算所述变化幅度与所述目标幅度之间的比值,作为第二比例误差;

磁场强度修正模块,用于将所述磁场强度与所述第三偏置误差之间的差值乘以所述第二比例误差,作为修正后的磁场强度;

磁场强度标定模块,用于将当前时间修正后的磁场强度与上一时间修正后的磁场强度进行一阶互补滤波,作为标定后的磁场强度。

11.一种计算机设备,其特征在于,所述计算机设备包括:一个或多个处理器;

存储器,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1‑9中任一项所述的人体动作映射方法。

12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1‑9中任一项所述的人体动作映射方法。

说明书 :

一种人体动作映射方法、装置、计算机设备和存储介质

技术领域

[0001] 本发明实施例涉及自动化的技术领域,尤其涉及一种人体动作映射方法、装置、计算机设备和存储介质。

背景技术

[0002] 随着科技的发展,学习人体动作,将人体动作映射到机器人,由机器人执行该动作,可广泛应用到多个业务场景。
[0003] 例如,在消防救灾的业务场景中,消防类的机器人可以帮助消防人员远程进行援救工作;在医疗的业务场景,医生的动作可以远程映射到千里之外的医院中的医疗类的机器人,实现远程手术或者虚拟手术。
[0004] 提取人体动作的方式主要有光学动作捕捉、曲度传感器动作捕捉和IMU(Inertial Measurement Unit,惯性测量单元)动作捕捉等,其中,光学动作捕捉受到光照、遮挡和精度等问题的困扰,而曲度传感器的动作捕捉需要传感器和关节达到高精度的贴合,其测量的自由度也受到限制,因此,目前多应用IMU动作捕捉人体动作。
[0005] 人体动作提取完成后机器人随动,一般是指人体和机器人在笛卡尔空间随动,这种方法在采集人体动作产生的数据后,每一帧实时进行运动学的计算,计算较为复杂,耗时较长,导致跟随的精度较低、响应的速度较低。

发明内容

[0006] 本发明实施例提出了一种人体动作映射方法、装置、计算机设备和存储介质,以解决机器人随动计算较为复杂,耗时较长的问题。
[0007] 第一方面,本发明实施例提供了一种人体动作映射方法,包括:
[0008] 从多个惯性测量单元读取惯性数据,多个所述惯性测量单元贴装在用户的身体部位上,部分相邻两个所述惯性测量单元之间间隔所述用户的身体关节;
[0009] 将所述惯性数据融合为所述惯性测量单元在空间中的姿态;
[0010] 根据相邻两个所述惯性测量单元对应的所述姿态计算所述身体关节的关节角;
[0011] 将所述关节角映射至机器人的机器关节;
[0012] 驱动所述机器人移动,直至相邻所述机器关节到达所述关节角。
[0013] 第二方面,本发明实施例还提供了一种人体动作映射装置,包括:
[0014] 惯性数据读取模块,用于从多个惯性测量单元读取惯性数据,多个所述惯性测量单元贴装在用户的身体部位上,部分相邻两个所述惯性测量单元之间间隔所述用户的身体关节;
[0015] 姿态融合模块,用于将所述惯性数据融合为所述惯性测量单元在空间中的姿态;
[0016] 关节角计算模块,用于根据相邻两个所述惯性测量单元对应的所述姿态计算所述身体关节的关节角;
[0017] 关节角映射模块,用于将所述关节角映射至机器人的机器关节;
[0018] 机器人驱动模块,用于驱动所述机器人移动,直至相邻所述机器关节到达所述关节角。
[0019] 第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:
[0020] 一个或多个处理器;
[0021] 存储器,用于存储一个或多个程序,
[0022] 当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的人体动作映射方法。
[0023] 第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的人体动作映射方法。
[0024] 在本实施例中,从多个惯性测量单元读取惯性数据,多个惯性测量单元贴装在用户的身体部位上,部分相邻两个惯性测量单元之间间隔用户的身体关节,将惯性数据融合为惯性测量单元在空间中的姿态,根据相邻两个惯性测量单元对应的姿态计算身体关节的关节角,将关节角映射至机器人的机器关节,驱动机器人移动,直至相邻机器关节到达关节角,通过直接计算惯性测量单元的姿态计算身体关节的关节角,将关节角映射至机器人的机器关节,操作简单,减少计算复杂度,提高计算频率,使得机器人跟随的程度高、相应的速度快,可以指导机器人实现多种灵巧动作。

附图说明

[0025] 图1为本发明实施例一提供的一种人体动作映射方法的流程图;
[0026] 图2A为本发明实施例一提供的一种在人体贴装惯性测量单元的示例图;
[0027] 图2B为本发明实施例一提供的一种机器人的示例图;
[0028] 图2C为本发明实施例一提供的另一种在人体贴装惯性测量单元的示例图;
[0029] 图2D为本发明实施例一提供的另一种机器人的示例图;
[0030] 图3是本发明实施例二提供的一种人体动作映射方法的流程图;
[0031] 图4为本发明实施例三提供的一种人体动作映射装置的结构示意图;
[0032] 图5为本发明实施例四提供的一种计算机设备的结构示意图。

具体实施方式

[0033] 下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0034] 实施例一
[0035] 图1为本发明实施例一提供的一种人体动作映射方法的流程图,本实施例可适用于使用IMU采集用户指定关节的动作并计算姿态,将其实时映射至机器人的机器关节的情况,该方法可以由人体动作映射装置来执行,该人体动作映射装置可以由软件和/或硬件实现,可配置在计算机设备中,例如,个人计算机、服务器、工作站,等等,具体包括如下步骤:
[0036] 步骤101、从多个惯性测量单元读取惯性数据。
[0037] 在本实施例中,可预先配置多个惯性测量单元,惯性测量单元为测量载体运动时产生的数据(即惯性数据)的传感器或传感器的集合,该惯性测量单元包括如下类型:
[0038] 1、六轴惯性测量单元
[0039] 六轴惯性测量单元安装有三轴陀螺仪、三轴加速度计,可以感知载体的pitch(围绕X轴旋转,也叫做俯仰角)、yaw(围绕Y轴旋转,也叫偏航角)、roll(围绕Z轴旋转,也叫翻滚角)共3个自由度的,,也可以还能感知载体3个自由度的加速度。
[0040] 2、九轴惯性测量单元
[0041] 九轴惯性测量单元安装有三轴陀螺仪、三轴加速度计、三轴磁强计,除了可以感知载体的pitch、yaw、roll共3个自由度的,3个自由度的加速度之外,还可以还能感知载体3个自由度的磁场强度。
[0042] 由于九轴惯性测量单元所采集的数据维度的数量均六轴惯性测量单元所采集的数据维度的数量多,使得应用九轴惯性测量单元映射人体动作的精确度均比应用六轴惯性测量单元映射人体动作的精确度高,因此,可以选择九轴惯性测量单元映射人体动作,当然,为了减少数据的处理量、提高响应的速度,也可以选择六轴惯性测量单元映射人体动作,本实施例对此不加以限制。
[0043] 在具体实现中,可以将多个惯性测量单元贴装在用户的身体部位上,该身体部位可以包括头部、手部、脚部、背部,等等。
[0044] 进一步而言,对于同一个身体部位,该惯性测量单元可以贴装在不同的位置,以骨骼作为划分,在同一个骨骼所处的身体部位上可以贴装至少一个惯性测量单元,尤其是在贴装在身体关节的边缘,其中,该身体关节是指能活动的骨连结,因此,至少部分相邻两个惯性测量单元之间间隔用户的身体关节。
[0045] 以手臂作为其中一个示例,如图2A所示,针对用户210的背部设置一个默认静止的惯性测量单元作为参考,在用户210的手臂上分别贴装4个惯性测量单元,肩关节(身体关节)与肘关节(身体关节)之间贴装惯性测量单元211,肘关节(身体关节)与腕关节(身体关节)之间贴装惯性测量单元212与惯性测量单元213,惯性测量单元212位于肘关节的边缘,惯性测量单元213位于腕关节的边缘,在手背贴装惯性测量单元214。
[0046] 那么,在背部静止的惯性测量单元与惯性测量单元211之间间隔肩关节,在惯性测量单元211与惯性测量单元212之间间隔肘关节,在惯性测量单元213与惯性测量单元214之间间隔腕关节。
[0047] 以手掌作为另一个示例,如图2C所示,在用户的手掌背分别贴装13个惯性测量单元,为便于理解,图2C以手掌心的形式进行表示,在本示例中,针对用户的手掌背中心设置一个默认静止的惯性测量单元2300作为参考。
[0048] 在用户的拇指上分别贴装惯性测量单元2311、惯性测量单元2312、惯性测量单元2313,惯性测量单元2311与惯性测量单元2312之间间隔一个指关节、惯性测量单元2312与惯性测量单元2313之间间隔一个指关节,惯性测量单元2300与惯性测量单元2313之间间隔一个指关节。
[0049] 在用户的食指上分别贴装惯性测量单元2321、惯性测量单元2322、惯性测量单元2323,惯性测量单元2321与惯性测量单元2322之间间隔一个指关节、惯性测量单元2322与惯性测量单元2323之间间隔一个指关节,惯性测量单元2300与惯性测量单元2323之间间隔一个指关节。
[0050] 在用户的中指上分别贴装惯性测量单元2331、惯性测量单元2332、惯性测量单元2333,惯性测量单元2331与惯性测量单元2332之间间隔一个指关节、惯性测量单元2332与惯性测量单元2333之间间隔一个指关节,惯性测量单元2300与惯性测量单元2333之间间隔一个指关节。
[0051] 在用户的无名指上分别贴装惯性测量单元2341、惯性测量单元2342、惯性测量单元2343,惯性测量单元2341与惯性测量单元2342之间间隔一个指关节、惯性测量单元2342与惯性测量单元2343之间间隔一个指关节,惯性测量单元2300与惯性测量单元2343之间间隔一个指关节。
[0052] 当然,上述惯性测量单元的贴装方式只是作为示例,在实施本发明实施例时,可以根据实际情况设置其它惯性测量单元的贴装方式,本发明实施例对此不加以限制。另外,除了上述惯性测量单元的贴装方式外,本领域技术人员还可以根据实际需要采用其它惯性测量单元的贴装方式,本发明实施例对此也不加以限制。
[0053] 在运行时,一方面,可以分别向多个惯性测量单元发送启动指令,多个惯性测量单元响应启动指令,实时采集惯性数据,例如,3个自由度的角速度,3个自由度上的加速度,3个自由度的磁场强度,另一方面,用户根据业务场景的需求而执行动作,此时,可分别从多个惯性测量单元读取惯性数据,在惯性数据缓存在内存中。
[0054] 步骤102、将惯性数据融合为惯性测量单元在空间中的姿态。
[0055] 一般情况下,惯性测量单元可以测量多种类型的惯性数据,这些惯性数据都能在一定程度上测量角度关系,因此,可以通过Complementary、Madgwick、Mahony、Kalman、Extended Kalman Filter等姿态融合算法,将不同类型的惯性数据融合为惯性测量单元在三维的空间中旋转的姿态,从而得到用户在执行动作时,各个惯性测量单元所在用户的身体部位在三维的空间中旋转的姿态。
[0056] 其中,该姿态可以以四元数(Quaternions)、欧拉角、旋转矩阵等形式表示。
[0057] 在本发明的一个实施例中,步骤102包括如下步骤:
[0058] 步骤1021、确定惯性数据的类型。
[0059] 步骤1022、按照类型对惯性数据进行标定。
[0060] 由于惯性测量单元可以测量多种类型的惯性数据,这些惯性数据或多或少存在一定的误差,可以预先针对不同类型的惯性数据设置不同的标定方式,即,对惯性测量单元中不同传感器进行标度的方式。
[0061] 对于惯性测量单元所检测到的惯性数据,可以基于惯性数据来源的传感器(如陀螺仪、加速度计、磁强计等)获知其类型,按照其类型查询相应的标定方式,按照该标定方式对该惯性数据进行标定。
[0062] 在一个示例中,若惯性数据的类型为陀螺仪采集的角速度,其单位为degree/second(度/秒),则可以查询第一偏置误差,该第一偏置误差可以预先在陀螺仪(惯性测量单元)静止时,多次(如1000次)读取该陀螺仪采集的多个角速度,针对每个轴计算多个角速度的平均值,作为第一偏置误差。
[0063] 此后,将陀螺仪采集的每个角速度减去该第一偏置误差,作为标定后的角速度。
[0064] 在另一个示例中,若惯性数据的类型为加速度计采集的加速度,加速度表示为与2
重力加速度(9.8m/s)的比值,则可以查询第二偏置误差bias、第一比例误差scale,若加速度计出厂前未经过良好标定,则可以将加速度计(惯性测量单元)分别朝6个面静止放置并采集多个加速度,基于最小二乘法的椭球拟合分别求出每个轴的第二偏置误差bias、第一比例误差scale。
[0065] 此后,将加速度与第二偏置误差bias之间的差值乘以第一比例误差scale,作为标定后的加速度。
[0066] 在又一个示例中,若惯性数据的类型为磁强计采集的磁场强度,则可以预先将磁力计(惯性测量单元)在三维的空间中绕“8”字转动,同时采集磁力计在空间转动时记录的磁场强度,为了保证磁场强度的数量,采样可持续一段时间,如30秒。
[0067] 在标定时,可以获取在惯性测量单元在空间转动时记录的磁场强度,对磁场强度的标定氛围如下两个部分:
[0068] 1、去除毛刺
[0069] 在本部分,对一维离散的磁场强度进行求导,从而对磁场强度计算一系列的变化速率,即,针对当前时间,将当前时间的磁场强度减去上一时间的磁场强度,得到当前时间的变化速率。
[0070] 对变化速率计算平均值mean、标准差std,在平均值的基础上,分别向上扩展多个标准差、向下扩展多个标准差,获得变化范围[mean‑m×std,mean+n×std],其中,m、n为正数,m与n可以相等(如m与n均为3),也可以不相等。
[0071] 该变化范围属于变化速率置信的范围,可以将各个时间的变化速率与该变化范围进行比较。
[0072] 若变化速率在变化范围内,则可以认为该变化速率正常。
[0073] 若变化速率超过变化范围,即该变化速率小于该变化范围的下限值(mean‑m×std)或者该变化速率大于该变化范围的上限值(mean+n×std),则可以认为该变化速度异常,记录变化速率对应的时间,从而删除处于该时间的磁场强度。
[0074] 2、纠正
[0075] 在删除部分属于毛刺的磁场强度之后,针对剩余的磁场强度,从剩余的磁场强度中,针对多个轴(即X轴、Y轴、Z轴),分别查询第一目标强度Max、第二目标强度Min,其中,第一目标强度Max为数值最大的磁场强度,第二目标强度Min为数值最小的磁场强度。
[0076] 针对多个轴,分别对第一目标强度Max与第二目标强度Min计算平均值,作为在多个轴上的多个第三偏置误差bias,即bias=(Max+Min)/2。
[0077] 针对多个轴,分别第一目标强度Max与第二目标强度Min之间的差值,作为磁场强度在多个轴上的多个变化幅度(Max‑Min)。
[0078] 对比多个轴上的变化幅度,选择数值最大的变化幅度,作为目标幅度,记为A。
[0079] 针对多个轴,分别计算变化幅度与目标幅度之间的比值,作为第二比例误差scale,具体而言,对于X轴,记变化幅度为Ax,第二比例误差scale_X=Ax/A,对于Y轴,记变化幅度为Ay,第二比例误差scale_Y=Ay/A,对于Z轴,记变化幅度为Az,第二比例误差scale_Z=Az/A。
[0080] 将原始的磁场强度与第三偏置误差bias之间的差值乘以第二比例误差scale,作为修正后的磁场强度,修正后的磁场强度可认为是真实的磁场强度,记原始的磁场强度为m,可表达为m_ture=(m‑bias)*scale。
[0081] 将当前时间修正后的磁场强度m_ture与上一时间修正后的磁场强度m_ture进行一阶互补滤波,作为标定后的磁场强度。
[0082] 在本实施例中,标定磁场强度的方式计算复杂度低,稳定性好,可以做到实时在线标定。
[0083] 当然,上述标定方法只是作为示例,在实施本发明实施例时,可以根据实际情况设置其它标定方法,例如,为了消除安装惯性测量单元时产生的误差,对于加速度计的加速度、磁场计的磁场强度,均可以计算夹角,将该夹角减去偏置误差,即,将加速度、磁场强度映射到X轴、Y轴、Z轴上,等等,本发明实施例对此不加以限制。另外,除了上述标定方法外,本领域技术人员还可以根据实际需要采用其它标定方法,本发明实施例对此也不加以限制。
[0084] 步骤1023、若标定完成,则基于滤波的方式将惯性数据融合为惯性测量单元在空间中的姿态。
[0085] 针对不同类型的惯性数据,其置信度也有不同,在短时间内陀螺仪的角速度的置信度均比加速度计的加速度、磁力计的磁场强度的置信度高,可以使用加速度计的加速度和磁力计的磁场强度对陀螺仪的角速度基于滤波的方式进行修正,从而将所有惯性数据融合为惯性测量单元在三维的空间中的姿态,滤波的方式在保证较高的准确性的情况下,时间的复杂度较低、空间的复杂度较低,可以在线实时融合。
[0086] 以RTQF(richards‑tech)算法对六轴惯性测量单元惯性数据进行融合作为示例,RTQF(richards‑tech)算法利用加速度计和磁力计算出的姿态作为测量值,再和陀螺仪进行龙格库塔积分得到四元数,对该四元数进行做球面插值得到最终的姿态。
[0087] 考虑到惯性测量单元测量的姿态具有偏差,因此,可以预先记录惯性测量单元在静止时采集的姿态,作为偏差姿态,针对每个惯性测量单元,计算惯性测量单元对应的偏差姿态的逆,将该偏差姿态的逆乘以该惯性测量单元对应的姿态,从而更新姿态、消除初始偏差。
[0088] 对此,更新过程可记为:
[0089] Q=Qinv‑1Qupdate
[0090] 其中,Qinv为偏差姿态,Qinv‑1为偏差姿态的逆,Q为更新前的姿态,Qupdate为更新后的姿态。
[0091] 步骤103、根据相邻两个惯性测量单元对应的姿态计算身体关节的关节角。
[0092] 针对相邻两个惯性测量单元之间间隔用户的身体关节的情况,考虑到组成身体关节的骨骼整体较为直,相邻两个惯性测量单元之间的角度,可以认为是相邻两个惯性测量单元所在身体部位的角度,即该身体部位组成的身体关节的关节角,因此,将相邻两个惯性测量单元对应的姿态换算成在三维的空间中的夹角,可以计算得到相邻两个惯性测量单元所在身体部位之间的关节角。
[0093] 在本发明的一个实施例中,步骤103可以包括如下步骤:
[0094] 步骤1031、查询相邻两个惯性测量单元对应的两个姿态,作为第一目标姿态、第二目标姿态。
[0095] 在本实施例中,可以查询相邻且间隔用户的身体关节的两个惯性测量单元,提取器姿态,分别记为第一目标姿态、第二目标姿态。
[0096] 步骤1032、确定相邻两个惯性测量单元在一个或多个自由度下转动的模式,作为转动模式。
[0097] 在本实施例中,可以预先基于惯性测量单元的类型对惯性测量单元在一个或多个自由度下转动的模式,作为转动模式,该转动模式可以以硬编码的方式记录在计算机设备中,也可以以可配置的参数记录在计算机设备中,本实施例对此不加以限制。
[0098] 例如,对于六轴惯性测量单元,可以设置单自由度,分别为X轴、Y轴、Z轴,可以记为kx(即绕X轴旋转)、ky(即绕Y轴旋转)、kz(即绕Z轴旋转)。
[0099] 又例如,对于九轴惯性测量单元,可以设置双自由度,分别为X轴与Z轴、Y轴与Z轴,可以记为xz(即绕X轴、Z轴旋转)、yz(即绕Y轴、Z轴旋转)。
[0100] 步骤1033、计算第二目标姿态相对于第一目标姿态的关系,作为第三目标姿态。
[0101] 一般情况下,在三维的空间中,针对用户的身体部位设置一个默认静止的惯性测量单元作为参考,例如,在用户的背部设置一个惯性测量单元,以该静止的惯性测量单元作为起点,计算排序在后的惯性测量单元的姿态(第二目标姿态)相对于排序在先的惯性测量单元的姿态(第一目标姿态)的关系,得到第三目标姿态。
[0102] 在具体实现中,可以计算第一目标姿态的逆,将第二目标姿态与第一目标姿态的逆相乘,得到第三目标姿态,记第一目标姿态为Q1、第二目标姿态为Q2,那么,第一目标姿态‑1 ‑1的逆为Q1 ,则第三目标姿态Q=Q2Q1 。
[0103] 步骤1034、将表示转动模式的参考向量绕第三目标姿态旋转,得到目标向量。
[0104] 在本实施例中可以设置表示转动模式的向量,作为参考向量,为便于运算,该参考向量可以为单位向量,角速度并且,为提高准确性,可以将转动模式中除自由度之外的其他轴的角速度设置为0,即,在参考向量中,对相邻两个惯性测量单元转动的自由度对应的维度设置为0,在参考向量中,对相邻两个惯性测量单元非转动的自由度对应的维度设置为1。
[0105] 例如,对于转动模式ky,可设置参考向量V=(1,0,0),对于转动模式kx,可设置参考向量V=(0,1,0),对于转动模式kz,可设置参考向量V=(0,1,0),对于转动模式xz,可设置参考向量V=(0,1,0),对于转动模式yz,可设置参考向量V=(1,0,0)。
[0106] 通过第三目标姿态的算子操作,对参考向量进行旋转,得到目标向量。
[0107] 在具体实现中,可以计算第三目标姿态的逆,将第三目标姿态、参考向量与第三目标姿态的逆相乘,得到目标向量。
[0108] 记第三目标姿态为Q、参考向量为V,那么,第三目标姿态的逆为Q‑1,则目标向量Vnew‑1=QVQ 。
[0109] 步骤1035、计算目标向量与参考向量之间的夹角,作为相邻两个身体部位之间的关节角。
[0110] 目标向量与单位向量之间形成的夹角,可以认为是相邻两个惯性测量单元之间在三维的空间中形成的夹角,作为相邻两个惯性测量单元所在身体部位之间在三维的空间中形成的关节角。
[0111] 在具体实现中,对目标向量与参考向量进行反余弦处理,得到相邻两个身体部位之间的关节角,即目标向量为Vnew,参考向量为V,则关节角θ=acos(Vnew,V),其中,关节角θ的方向由V和Vnew按照右手定则确定,一般情况下,关节角θ的方向与Vnew的Z轴的方向相同。
[0112] 步骤104、将关节角映射至机器人的机器关节。
[0113] 在机器人中,可以设置与用户的部分或全部人体关节适配的机器关节,所谓适配,可以指机器关节之间的相对位置与人体关节之间的相对位置相同、机器关节的转动模式与人体关节的转动模式相同。
[0114] 以机械手臂220作为机器人的其中一个示例,如图2B所示,机械臂设置的机器关节分别有肩关节211、肘关节222、腕关节223。
[0115] 以机械手掌作为机器人的另外一个示例,如图2D所示,机械臂设置的机器关节分别有12个,其中,机械手掌中机械拇指的机器关节包括Joint_11=<2400,2413>,Joint_12=<2413,2412>,Joint_13=<2412,2411>,机械手掌中机械食指的机器关节包括Joint_21=<2400,2423>,Joint_22=<2423,2422>,Joint_23=<2422,2421>,机械手掌中机械中指的机器关节包括Joint_31=<2400,2433>,Joint_32=<2433,2432>,Joint_33=<2432,2431>,机械手掌中机械无名指的机器关节包括Joint_41=<2400,2443>,Joint_42=<
2443,2442>,Joint_43=<2442,2441>。
[0116] 将当前测量到的人体关节的关节角映射至机器人的机器关节,使得机器人的机器关节实时跟随人体关节的关节角。
[0117] 在具体实现中,可以预先设置机器关节与人体关节的映射关系,在该映射关系中,人体关节以计算该人体关节的惯性测量单元的第一编号标识,机器关节以第二编号标识,即,在映射关系中记录从惯性测量单元的第一编号映射至机器人的机器关节的第二编号的关系。
[0118] 例如,如图2A与图2B所示,背部静止的惯性测量单元与惯性测量单元211之间的关节角可映射至肩关节221,惯性测量单元211与惯性测量单元212之间的关节角可映射至肘关节222,惯性测量单元213与惯性测量单元214之间的关节角可映射至腕关节223。
[0119] 又例如,如图2C与图2D所示,惯性测量单元2311与惯性测量单元2312之间间隔的指关节可映射至机器关节Joint_11=<2400,2413>、惯性测量单元2312与惯性测量单元2313之间间隔的指关节可映射至机器关节Joint_12=<2413,2412>,惯性测量单元2300与惯性测量单元2313之间间隔的指关节可映射至机器关节Joint_13=<2412,2411>。
[0120] 惯性测量单元2321与惯性测量单元2322之间间隔的指关节可映射至机器关节Joint_21=<2400,2423>、惯性测量单元2322与惯性测量单元2323之间间隔的指关节可映射至机器关节Joint_22=<2423,2422>,惯性测量单元2300与惯性测量单元2323之间间隔的指关节可映射至机器关节Joint_23=<2422,2421>。
[0121] 惯性测量单元2331与惯性测量单元2332之间间隔的指关节可映射至机器关节Joint_31=<2400,2433>、惯性测量单元2332与惯性测量单元2333之间间隔的指关节可映射至机器关节Joint_32=<2433,2432>,惯性测量单元2300与惯性测量单元2333之间间隔的指关节可映射至机器关节Joint_33=<2432,2431>。
[0122] 惯性测量单元2341与惯性测量单元2342之间间隔的指关节可映射至机器关节Joint_41=<2400,2443>、惯性测量单元2342与惯性测量单元2343之间间隔的指关节可映射至机器关节Joint_42=<2443,2442>,惯性测量单元2300与惯性测量单元2343之间间隔的指关节可映射至机器关节Joint_43=<2442,2441>。
[0123] 那么,在实时映射人体关节的关节角时,可查询预设的映射关系,查询当前相邻两个惯性测量单元的两个第一编号,在映射关系中,查询相邻两个惯性测量单元的两个第一编号共同映射的第二编号,从而将相邻两个惯性测量单元的关节角映射至第二编号对应的机器关节。
[0124] 步骤105、驱动机器人移动,直至相邻机器关节到达关节角。
[0125] 针对机器人中各个机器关节的关节角,可以启动机器人的控制箱执行移动的操作,直至相邻机器关节到达关节角,使得机器人与用户随动、完成动作,从而实现了机器人的遥控操作。
[0126] 在具体实现中,可以在线进行实时地规划机器关节到达关节角的轨迹,将该规则输入机器人的控制箱,控制机器人按照该轨迹转动,直至相邻机器关节到达关节角,使得机器人的运动更加平滑。
[0127] 在本实例中,可使用多项式插值方式进行轨迹的规划。
[0128] 由惯性测量单元计算得到的关节角是捕捉人体关节运动的原始数据,由于机器人运动性能的约束,直接向机器人输入原始数据作为指令,往往造成机器人运动过冲,震动等现象。
[0129] 在本实施例中,利用基于多项式插值的方法实时地给机器人的全部机器关节规划出平滑轨迹且能紧密跟随人体动作。
[0130] 具体而言,将机器人当前机器关节反馈状态的角度作为起点(p0),并从惯性测量单元获取的关节角的正负性作为方向判断,将该方向的极限位置角度作为终点(p1)。起点速度为机器人当前反馈速度(v0),终点速度设为0(v1)。对每间隔一定的时间(T,如40ms)的惯性测量单元给出的姿态采用多项式进行曲线插值。通过五个参数(p0,p1,v0,v1,T)插值出的轨迹保证了机器人在运动过程中速度及加速度都不会突变。
[0131] 基于以上轨迹规划的结果,本实例可使用机器人的控制系统建立TCP(Transmission Control Protocol,传输控制协议)客户端,及时接收服务器的网络报文并通过队列传给机器人的协议解析模块。
[0132] 协议解析模块按照既有协议解析出机器人的机器关节的关节角,并分别通过队列传给机器关节的控制模块。
[0133] 对于机械臂的情况,控制模块将关节角结合机械臂反馈的位置和速度状态进行轨迹规划生成后续时刻的路径,并通过ros节点发布给机器关节。机器关节的运动控制基于CB3,API(Application Programming Interface,应用程序接口)使用servoj指令,使得控制方式直接,机械臂运动平稳。
[0134] 对于机械手的请,控制模块将相对应的关节角通过ROS节点发布给机器关节。
[0135] 在本实施例中,从多个惯性测量单元读取惯性数据,多个惯性测量单元贴装在用户的身体部位上,部分相邻两个惯性测量单元之间间隔用户的身体关节,将惯性数据融合为惯性测量单元在空间中的姿态,根据相邻两个惯性测量单元对应的姿态计算身体关节的关节角,将关节角映射至机器人的机器关节,驱动机器人移动,直至相邻机器关节到达关节角,通过直接计算惯性测量单元的姿态计算身体关节的关节角,将关节角映射至机器人的机器关节,操作简单,减少计算复杂度,提高计算频率,使得机器人跟随的程度高、相应的速度快,可以指导机器人实现多种灵巧动作。
[0136] 实施例二
[0137] 图3为本发明实施例二提供的一种人体动作映射方法的流程图,本实施例以前述实施例为基础,进一步增加虚拟现实人体动作的操作,该方法具体包括如下步骤:
[0138] 步骤301、从多个惯性测量单元读取惯性数据。
[0139] 其中,多个惯性测量单元贴装在用户的身体部位上,部分相邻两个惯性测量单元之间间隔用户的身体关节。
[0140] 步骤302、将惯性数据融合为惯性测量单元在空间中的姿态。
[0141] 步骤303、加载业务场景。
[0142] 步骤304、在业务场景中,按照姿态生成与身体部位匹配的虚拟部位。
[0143] 在某些业务场景中,可以启动3D引擎,例如,Unity引擎、虚幻引擎、Cocos2dx引擎、自研引擎,等等,由3D引擎渲染与业务场景相关的业务场景,这些业务场景可以为虚拟的场景,也可以为由机器人现实采集的场景,本实施例对此不加以限制。
[0144] 在业务场景中,可以加载与用户的身体部位相同的虚拟部位,即,以虚拟现实的方式显示的身体部位。
[0145] 对于惯性测量单元的姿态,可实时以四元数等形式传入3D引擎中,将该姿态映射到业务场景中、与该惯性测量单元所处人体部位相同的虚拟部位,使得该虚拟部位表现为该姿态,实时显示用户的动作,通过实现实时姿态相同的虚拟部位,可以保证在某些业务场景中随动的效果。
[0146] 以Unity引擎为例,Unity引擎通过网络接收数据包,解包数据后将数据转换成Unity的四元数,对四元数进行坐标轴变换,从惯性测量单元各传感器的坐标系变换到Unity的世界坐标系,以方便后续的处理。
[0147] 因为不同用户使用时惯性测量单元的位置和姿态会有一点差异,Unity引擎还会进行姿态的校准对齐。在Unity引擎中有另外一个脚本引导用户完成校准流程,并记录校准数据。校准时,界面显示出校准动作的模型,引导用户做出相应的动作并持续一段时间,Unity引擎记录此时的全部惯性测量单元的姿态作为校准数据。
[0148] 经过校准后的姿态会在Unity引擎的工程中分发。模拟身体部位的模型可以添加了相应的脚本接收分发的数据,然后应用于对应的模型骨骼,控制模型的各个骨骼旋转姿态就可以在显示出用户的实时动作。
[0149] 根据模型骨骼的位置和姿态,计算出骨骼间的距离和角度关系,可以用于判断当前的手势,实现手势识别。另外模型上会添加碰撞体,检测手和物体的碰撞情况。结合当前手势和物体与手指碰撞体的接触情况,可以实现物体和虚拟人手的多种交互,例如拾取、放下、扔、捏等动作。对于特定的工具,还会设定特定的使用方式,例如开合剪刀、按压喷壶等。
[0150] 进一步而言,在Unity引擎中,虚拟部位可以通过骨骼蒙皮动画(Skinned Mesh)的方式生成的,所谓骨骼蒙皮动画,是指在骨骼控制下,通过顶点混合动态计算蒙皮网格的顶点,而骨骼的运动相对于其父骨骼,并由动画关键帧数据驱动。一个骨骼蒙皮动画通常包括骨骼层次结构数据,网格(Mesh)数据,网格蒙皮数据(skin info)和骨骼(bone)的动画(关键帧)数据。
[0151] 在Unity引擎中,针对指定的虚拟部位传入身体部位的姿态,使用BindPose(姿态绑定,BindPose用于在骨骼变换前预制一些骨骼变换,使得人物可以在同一动画上有不同的骨骼位置表现,简化工作流等)算法渲染虚拟部位,BindPose算法如下表示:
[0152] OneBoneBindPose=bone.worldToLocalMatrix*transform.localToWorldMatrix[0153] 其中,姿态为骨骼的世界转局部坐标系矩阵worldToLocalMatrix乘上Mesh的局部转世界矩阵localToWorldMatrix。
[0154] 通常将计算Mesh的顶点受bone影响而产生的变化的过程称之为蒙皮,一般过程为:
[0155] 将顶点从mesh空间变换到bone空间:
[0156] vbone=vmesh*bindpose
[0157] 将bone空间下的顶点经过当前bone的变换矩阵,从bone空间变换到mesh空间:
[0158] vout=vbone*boneToMeshMatrix
[0159] 一个顶点可能受到多根骨骼的影响,所以最终是对受影响的几根骨骼进行变换,乘以boneWeights中的权重相加混合得到:
[0160] vout0=boneToMeshMatrix0*bindpose0*vmesh
[0161] vout1=boneToMeshMatrix1*bindpose1*vmesh
[0162] vout2=boneToMeshMatrix2*bindpose2*vmesh
[0163] vout3=boneToMeshMatrix3*bindpose3*vmesh
[0164] vout=vout0*weight0+vout1*weight1+vout2*weight2+vout3*weight3[0165] 步骤305、根据相邻两个惯性测量单元对应的姿态计算身体关节的关节角。
[0166] 步骤306、将关节角映射至机器人的机器关节。
[0167] 步骤307、驱动机器人移动,直至相邻机器关节到达关节角。
[0168] 需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0169] 实施例三
[0170] 图4为本发明实施例三提供的一种人体动作映射装置的结构框图,具体可以包括如下模块:
[0171] 惯性数据读取模块401,用于从多个惯性测量单元读取惯性数据,多个所述惯性测量单元贴装在用户的身体部位上,部分相邻两个所述惯性测量单元之间间隔所述用户的身体关节;
[0172] 姿态融合模块402,用于将所述惯性数据融合为所述惯性测量单元在空间中的姿态;
[0173] 关节角计算模块403,用于根据相邻两个所述惯性测量单元对应的所述姿态计算所述身体关节的关节角;
[0174] 关节角映射模块404,用于将所述关节角映射至机器人的机器关节;
[0175] 机器人驱动模块405,用于驱动所述机器人移动,直至相邻所述机器关节到达所述关节角。
[0176] 在本发明的一个实施例中,所述姿态融合模块402包括:
[0177] 类型确定模块,用于确定所述惯性数据的类型;
[0178] 数据标定模块,用于按照所述类型对所述惯性数据进行标定;
[0179] 数据滤波模块,用于若标定完成,则基于滤波的方式将所述惯性数据融合为所述惯性测量单元在空间中的姿态。
[0180] 在本发明实施例的一个示例中,所述数据标定模块包括:
[0181] 第一标定参数查询模块,用于若所述类型为角速度,则查询第一偏置误差;
[0182] 角速度标定模块,用于将所述角速度减去所述第一偏置误差,作为标定后的角速度;
[0183] 和/或,
[0184] 第二标定参数查询模块,用于若所述类型为加速度,则查询第二偏置误差、第一比例误差;
[0185] 加速度标定模块,用于将所述加速度与所述第二偏置误差之间的差值乘以所述第一比例误差,作为标定后的加速度;
[0186] 和/或,
[0187] 磁场强度获取模块,用于若所述类型为磁场强度,则获取在所述惯性测量单元在空间转动时记录的磁场强度;
[0188] 变化速率计算模块,用于对所述磁场强度计算变化速率;
[0189] 变化差异计算模块,用于对所述变化速率计算平均值、标准差;
[0190] 变化范围计算模块,用于在所述平均值的基础上,分别向上扩展多个所述标准差、向下扩展多个所述标准差,获得变化范围;
[0191] 时间记录模块,用于若所述变化速率超过所述变化范围,则记录所述变化速率对应的时间;
[0192] 磁场强度删除模块,用于删除处于所述时间的所述磁场强度;
[0193] 极值查询模块,用于针对多个轴,分别查询第一目标强度、第二目标强度,其中,第一目标强度为数值最大的磁场强度,第二目标强度为数值最小的磁场强度;
[0194] 偏置误差计算模块,用于针对多个轴,分别对所述第一目标强度与所述第二目标强度计算平均值,作为第三偏置误差;
[0195] 变化幅度计算模块,用于针对多个轴,分别所述第一目标强度与所述第二目标强度之间的差值,作为所述磁场强度的变化幅度;
[0196] 目标幅度选择模块,用于选择数值最大的所述变化幅度,作为目标幅度;
[0197] 比例误差计算模块,用于针对多个轴,分别计算所述变化幅度与所述目标幅度之间的比值,作为第二比例误差;
[0198] 磁场强度修正模块,用于将所述磁场强度与所述第三偏置误差之间的差值乘以所述第二比例误差,作为修正后的磁场强度;
[0199] 磁场强度标定模块,用于将当前时间修正后的磁场强度与上一时间修正后的磁场强度进行一阶互补滤波,作为标定后的磁场强度。
[0200] 在本发明的一个实施例中,所述关节角计算模块403包括:
[0201] 目标姿态查询模块,用于查询相邻两个所述惯性测量单元对应的两个所述姿态,作为第一目标姿态、第二目标姿态;
[0202] 转动模式确定模块,用于确定相邻两个所述惯性测量单元在一个或多个自由度下转动的模式,作为转动模式;
[0203] 相对关系计算模块,用于计算所述第二目标姿态相对于所述第一目标姿态的关系,作为第三目标姿态;
[0204] 向量转动模块,用于将表示所述转动模式的参考向量绕所述第三目标姿态旋转,得到目标向量;
[0205] 夹角计算模块,用于计算所述目标向量与所述参考向量之间的夹角,作为相邻两个所述身体部位之间的关节角。
[0206] 在本发明的一个实施例中,所述相对关系计算模块包括:
[0207] 第一逆计算模块,用于计算所述第一目标姿态的逆;
[0208] 第一相乘模块,用于将所述第二目标姿态与所述第一目标姿态的逆相乘,得到第三目标姿态。
[0209] 在本发明的一个实施例中,所述向量转动模块包括:
[0210] 参考向量设置模块,用于设置表示所述转动模式的向量,作为参考向量;
[0211] 第二逆计算模块,用于计算所述第三目标姿态的逆;
[0212] 第二相乘模块,用于将所述第三目标姿态、所述参考向量与所述第三目标姿态的逆相乘,得到目标向量。
[0213] 在本发明的一个实施例中,所述参考向量设置模块包括:
[0214] 自由度设置模块,用于在参考向量中,对相邻两个所述惯性测量单元转动的自由度对应的维度设置为0;
[0215] 非自由度设置模块,用于在参考向量中,对相邻两个所述惯性测量单元非转动的自由度对应的维度设置为1。
[0216] 在本发明的一个实施例中,所述夹角计算模块包括:
[0217] 反余弦处理模块,用于对所述目标向量与所述参考向量进行反余弦处理,得到相邻两个所述身体部位之间的关节角。
[0218] 在本发明的一个实施例中,所述关节角映射模块404包括:
[0219] 映射关系查询模块,用于查询预设的映射关系,所述映射关系中记录从所述惯性测量单元的第一编号映射至机器人的机器关节的第二编号的关系;
[0220] 第一编号查询模块,用于查询相邻两个所述惯性测量单元的两个第一编号;
[0221] 第二编号查询模块,用于在所述映射关系中,查询相邻两个所述惯性测量单元的两个第一编号共同映射的第二编号;
[0222] 编号映射模块,用于将相邻两个所述惯性测量单元的所述关节角映射至所述第二编号对应的机器关节。
[0223] 在本发明的一个实施例中,所述机器人驱动模块405包括:
[0224] 轨迹规划模块,用于规划所述机器关节到达所述关节角的轨迹;
[0225] 轨迹转动模块,用于控制所述机器人按照所述轨迹转动,直至相邻所述机器关节到达所述关节角。
[0226] 在本发明的一个实施例中,还包括:
[0227] 业务场景加载模块,用于加载业务场景;
[0228] 虚拟部位生成模块,用于在所述业务场景中,按照所述姿态生成与所述身体部位匹配的虚拟部位。
[0229] 本发明实施例所提供的人体动作映射装置可执行本发明任意实施例所提供的人体动作映射方法,具备执行方法相应的功能模块和有益效果。
[0230] 实施例四
[0231] 图5为本发明实施例四提供的一种计算机设备的结构示意图。图5示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图5显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0232] 如图5所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0233] 总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0234] 计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0235] 系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD‑ROM,DVD‑ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0236] 具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0237] 计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0238] 处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的人体动作映射方法。
[0239] 实施例五
[0240] 本发明实施例五还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述人体动作映射方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0241] 其中,计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0242] 注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。