本发明涉及动作捕捉及识别技术领域,特别是涉及一种用于手臂姿态重建的校准方法及系统。
背景技术:
随着深度学习技术的发展,在对人体的进行动作捕捉、动作识别时,深度学习算法应用的越来越广泛。基于惯性测量的手臂姿态重建是研究人体的动作捕捉、动作识别的一个重要分支。当前的深度学习算法需要大量的预先采集的数据集样本,由于测试者每次采集样本的时候佩戴惯性测量单元的位置和角度都会与上一次存在较大差别,数据集的一致性差,难以适应深度学习类算法的需要。
现有的大部分手臂姿态重建研究中,并未考虑安装佩戴坐标系误差对姿态重建以及数据采集的影响,这样会导致动作捕捉、动作识别的准确性不高。目前,也存在解决数据集一致性问题的简易办法,例如通过使用者做出双手平举,双手侧举等动作来人为标定坐标系。这种标定方法存在动作复杂、需要重复多次、主观性强等缺点,不仅繁琐复杂,而且不利于数据的一致性和标准化,其标定的准确度也不高。
技术实现要素:
基于此,有必要提供一种用于手臂姿态重建的校准方法及系统,以在手臂姿态重建时,实现准确校准,进而提高动作捕捉和动作识别的准确性。
为实现上述目的,本发明提供了如下方案:
一种用于手臂姿态重建的校准方法,包括:
获取手臂姿态数据和手臂末端移动数据;所述手臂姿态数据包括大臂姿态数据和小臂姿态数据;所述大臂姿态数据是手臂末端在已知面上随意移动时,佩戴在大臂上的惯性测量单元测量到的数据;所述小臂姿态数据是手臂末端在已知面上随意移动时,佩戴在小臂上的惯性测量单元测量到的数据;所述手臂末端移动数据由手臂末端在已知面上随意移动的位置点组成;所述已知面为已知空间分布特征的平面或曲面;
依据所述手臂姿态数据构建第一捷联矩阵;所述第一捷联矩阵包括大臂捷联矩阵和小臂捷联矩阵;所述大臂捷联矩阵为佩戴在大臂上的惯性测量单元到大地坐标参考系的捷联矩阵;所述小臂捷联矩阵为佩戴在小臂上的惯性测量单元到大地坐标参考系的捷联矩阵;
根据不重合角度,构建第二捷联矩阵;所述第二捷联矩阵包括大臂旋转变换捷联矩阵和小臂旋转变换捷联矩阵;所述大臂旋转变换捷联矩阵为佩戴在大臂上的惯性测量单元到手臂关节坐标系的捷联矩阵;所述小臂旋转变换捷联矩阵为佩戴在小臂上的惯性测量单元到手臂关节坐标系的捷联矩阵;所述不重合角度为惯性测量单元的姿态轴与手臂关节的姿态轴之间不重合的角度;
由大臂长度、小臂长度、所述手臂末端移动数据、所述第一捷联矩阵和所述第二捷联矩阵构建校准目标函数,并采用梯度下降法对所述校准目标函数进行求解,得到最优解;所述最优解包括最优不重合角度、最优大臂长度和最优小臂长度;
由所述最优解对手臂空间移动数据进行校正,得到校正后的手臂空间移动数据;所述手臂空间移动数据由手臂在空间中作出设定动作时移动的位置点组成。
可选的,所述依据所述手臂姿态数据构建第一捷联矩阵,具体包括:
依据所述大臂姿态数据构建大臂捷联矩阵;所述大臂捷联矩阵
其中,n表示第n次移动手臂末端,(pitchn1yawn1rolln1)表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂姿态数据,pitchn1表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂俯仰角,yawn1表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂偏航角,rolln1表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂滚转角;
依据所述小臂姿态数据构建大臂捷联矩阵;所述小臂捷联矩阵
其中,(pitchn2yawn2rolln2)表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂姿态数据,pitchn2表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂俯仰角,yawn2表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂偏航角,rolln2表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂滚转角。
可选的,所述根据不重合角度,构建第二捷联矩阵,具体包括:
构建大臂旋转变换捷联矩阵;所述大臂旋转变换捷联矩阵
其中,(α1,β1,γ1)表示佩戴在大臂上的惯性测量单元的姿态轴与手臂关节的姿态轴之间的不重合的角度,α1表示佩戴在大臂上的惯性测量单元的偏航轴与手臂关节的偏航轴之间的不重合的角度,β1表示佩戴在大臂上的惯性测量单元的滚转轴与手臂关节的滚转轴之间的不重合的角度,γ1表示佩戴在大臂上的惯性测量单元的俯仰轴与手臂关节的俯仰轴之间的不重合的角度;
构建小臂旋转变换捷联矩阵;所述小臂旋转变换捷联矩阵
其中,(α2,β2,γ2)表示佩戴在小臂上的惯性测量单元的姿态轴与手臂关节的姿态轴之间的不重合的角度,α2表示佩戴在小臂上的惯性测量单元的偏航轴与手臂关节的偏航轴之间的不重合的角度,β2表示佩戴在小臂上的惯性测量单元的滚转轴与手臂关节的滚转轴之间的不重合的角度,γ2表示佩戴在小臂上的惯性测量单元的俯仰轴与手臂关节的俯仰轴之间的不重合的角度。
可选的,所述由大臂长度、小臂长度、所述手臂末端移动数据、所述第一捷联矩阵和所述第二捷联矩阵构建校准目标函数,并采用梯度下降法对所述校准目标函数进行求解,得到最优解,具体包括:
由大臂长度、小臂长度、所述手臂末端移动数据、所述第一捷联矩阵和所述第二捷联矩阵构建校准目标函数;所述校准目标函数
其中,(xn,yn,zn)表示第n次移动手臂末端后的位置点在大地坐标参考系下的坐标;xn表示第n次移动手臂末端后的位置点在大地坐标参考系x轴上的坐标,yn表示第n次移动手臂末端后的位置点在大地坐标参考系y轴上的坐标,zn表示第n次移动手臂末端后的位置点在大地坐标参考系z轴上的坐标;[c]nimu1toe表示大臂捷联矩阵,[c]nimu2toe表示小臂捷联矩阵,[c]jtoimu1表示大臂旋转变换捷联矩阵,[c]jtoimu2表示小臂旋转变换捷联矩阵;l1表示大臂长度,l2表示小臂长度;
构建损失函数loss({pn})=1-r(x,y,z)({pn}),其中,{pn=(xn,yn,zn)|n=1,2,3,······n};n表示手臂末端移动的总次数,r(x,y,z)表示相关系数函数,r(x,y,z)({pn})∈(0,1);
由所述损失函数构建迭代方程
其中,inputi(αi1,βi1,γi1,αi2,βi2,γi2,li1,li2)表示第i次迭代的输出值;αi1,βi1,γi1,αi2,βi2,γi2,li1,li2分别表示第i次迭代输出的α1,β1,γ1,α2,β2,γ2,l1,l2;inputi+1(αi+11,βi+11,γi+11,αi+12,βi+12,γi+12,li+11,li+12)表示第i+1次迭代的输出值;αi+11,βi+11,γi+11,αi+12,βi+12,γi+12,li+11,li+12分别表示第i+1次迭代输出的α1,β1,γ1,α2,β2,γ2,l1,l2;▽loss({pin})表示损失函数的梯度;step表示迭代步长;
判断当前迭代次数下的损失函数是否小于或等于设定值;若否,则按照所述迭代方程进行下次迭代,若是,则停止迭代,并将当前迭代次数下的输出值作为最优解。
可选的,所述由所述最优解对手臂空间移动数据进行校正,得到校正后的手臂空间移动数据,具体为:
其中,(xr,yr,zr)表示手臂第r次在空间中作出设定动作后移动的位置点的校正值;[c]rimu1toe表示手臂第r次在空间中作出设定动作后,佩戴在大臂上的惯性测量单元输出的大臂姿态数据,[c]rimu2toe表示手臂第r次在空间中作出设定动作后,佩戴在小臂上的惯性测量单元输出的小臂姿态数据;[c]kjtoimu1表示最优大臂旋转变换捷联矩阵,[c]kjtoimu1是由大臂对应的最优不重合角度确定的;[c]kjtoimu2表示最优小臂旋转变换捷联矩阵,[c]kjtoimu2是由小臂对应的最优不重合角度确定的;lk1表示最优大臂长度;lk2表示最优小臂长度。
本发明还提供了一种用于手臂姿态重建的校准系统,包括:
数据获取模块,用于获取手臂姿态数据和手臂末端移动数据;所述手臂姿态数据包括大臂姿态数据和小臂姿态数据;所述大臂姿态数据是手臂末端在已知面上随意移动时,佩戴在大臂上的惯性测量单元测量到的数据;所述小臂姿态数据是手臂末端在已知面上随意移动时,佩戴在小臂上的惯性测量单元测量到的数据;所述手臂末端移动数据由手臂末端在已知面上随意移动的位置点组成;所述已知面为已知空间分布特征的平面或曲面;
第一捷联矩阵构建模块,用于依据所述手臂姿态数据构建第一捷联矩阵;所述第一捷联矩阵包括大臂捷联矩阵和小臂捷联矩阵;所述大臂捷联矩阵为佩戴在大臂上的惯性测量单元到大地坐标参考系的捷联矩阵;所述小臂捷联矩阵为佩戴在小臂上的惯性测量单元到大地坐标参考系的捷联矩阵;
第二捷联矩阵构建模块,用于根据不重合角度,构建第二捷联矩阵;所述第二捷联矩阵包括大臂旋转变换捷联矩阵和小臂旋转变换捷联矩阵;所述大臂旋转变换捷联矩阵为佩戴在大臂上的惯性测量单元到手臂关节坐标系的捷联矩阵;所述小臂旋转变换捷联矩阵为佩戴在小臂上的惯性测量单元到手臂关节坐标系的捷联矩阵;所述不重合角度为惯性测量单元的姿态轴与手臂关节的姿态轴之间不重合的角度;
目标函数构建及求解模块,用于由大臂长度、小臂长度、所述手臂末端移动数据、所述第一捷联矩阵和所述第二捷联矩阵构建校准目标函数,并采用梯度下降法对所述校准目标函数进行求解,得到最优解;所述最优解包括最优不重合角度、最优大臂长度和最优小臂长度;
校正模块,用于由所述最优解对手臂空间移动数据进行校正,得到校正后的手臂空间移动数据;所述手臂空间移动数据由手臂在空间中作出设定动作时移动的位置点组成。
可选的,第一捷联矩阵构建模块,具体包括:
大臂捷联矩阵构建单元,用于依据所述大臂姿态数据构建大臂捷联矩阵;所述大臂捷联矩阵
其中,n表示第n次移动手臂末端,(pitchn1yawn1rolln1)表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂姿态数据,pitchn1表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂俯仰角,yawn1表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂偏航角,rolln1表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂滚转角;
小臂捷联矩阵构建单元,用于依据所述小臂姿态数据构建大臂捷联矩阵;所述小臂捷联矩阵
其中,(pitchn2yawn2rolln2)表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂姿态数据,pitchn2表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂俯仰角,yawn2表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂偏航角,rolln2表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂滚转角。
可选的,第二捷联矩阵构建单元,具体包括:
大臂旋转变换捷联矩阵构建单元,用于构建大臂旋转变换捷联矩阵;所述大臂旋转变换捷联矩阵
其中,(α1,β1,γ1)表示佩戴在大臂上的惯性测量单元的姿态轴与手臂关节的姿态轴之间的不重合的角度,α1表示佩戴在大臂上的惯性测量单元的偏航轴与手臂关节的偏航轴之间的不重合的角度,β1表示佩戴在大臂上的惯性测量单元的滚转轴与手臂关节的滚转轴之间的不重合的角度,γ1表示佩戴在大臂上的惯性测量单元的俯仰轴与手臂关节的俯仰轴之间的不重合的角度;
小臂旋转变换捷联矩阵构建单元,用于构建小臂旋转变换捷联矩阵;所述小臂旋转变换捷联矩阵
其中,(α2,β2,γ2)表示佩戴在小臂上的惯性测量单元的姿态轴与手臂关节的姿态轴之间的不重合的角度,α2表示佩戴在小臂上的惯性测量单元的偏航轴与手臂关节的偏航轴之间的不重合的角度,β2表示佩戴在小臂上的惯性测量单元的滚转轴与手臂关节的滚转轴之间的不重合的角度,γ2表示佩戴在小臂上的惯性测量单元的俯仰轴与手臂关节的俯仰轴之间的不重合的角度。
可选的,所述目标函数构建及求解模块,具体包括:
目标函数构建单元,用于由大臂长度、小臂长度、所述手臂末端移动数据、所述第一捷联矩阵和所述第二捷联矩阵构建校准目标函数;所述校准目标函数
其中,(xn,yn,zn)表示第n次移动手臂末端后的位置点在大地坐标参考系下的坐标;xn表示第n次移动手臂末端后的位置点在大地坐标参考系x轴上的坐标,yn表示第n次移动手臂末端后的位置点在大地坐标参考系y轴上的坐标,zn表示第n次移动手臂末端后的位置点在大地坐标参考系z轴上的坐标;[c]nimu1toe表示大臂捷联矩阵,[c]nimu2toe表示小臂捷联矩阵,[c]jtoimu1表示大臂旋转变换捷联矩阵,[c]jtoimu2表示小臂旋转变换捷联矩阵;l1表示大臂长度,l2表示小臂长度;
损失函数构建单元,用于构建损失函数loss({pn})=1-r(x,y,z)({pn}),其中,{pn=(xn,yn,zn)|n=1,2,3,······n};n表示手臂末端移动的总次数,r(x,y,z)表示相关系数函数,r(x,y,z)({pn})∈(0,1);
迭代方程构建单元,用于由所述损失函数构建迭代方程
其中,inputi(αi1,βi1,γi1,αi2,βi2,γi2,li1,li2)表示第i次迭代的输出值;αi1,βi1,γi1,αi2,βi2,γi2,li1,li2分别表示第i次迭代输出的α1,β1,γ1,α2,β2,γ2,l1,l2;inputi+1(αi+11,βi+11,γi+11,αi+12,βi+12,γi+12,li+11,li+12)表示第i+1次迭代的输出值;αi+11,βi+11,γi+11,αi+12,βi+12,γi+12,li+11,li+12分别表示第i+1次迭代输出的α1,β1,γ1,α2,β2,γ2,l1,l2;▽loss({pin})表示损失函数的梯度;step表示迭代步长;
判断单元,用于判断当前迭代次数下的损失函数是否小于或等于设定值;若否,则按照所述迭代方程进行下次迭代,若是,则停止迭代,并将当前迭代次数下的输出值作为最优解。
可选的,所述校正模块,具体为:
其中,(xr,yr,zr)表示手臂第r次在空间中作出设定动作后移动的位置点的校正值;[c]rimu1toe表示手臂第r次在空间中作出设定动作后,佩戴在大臂上的惯性测量单元输出的大臂姿态数据,[c]rimu2toe表示手臂第r次在空间中作出设定动作后,佩戴在小臂上的惯性测量单元输出的小臂姿态数据;[c]kjtoimu1表示最优大臂旋转变换捷联矩阵,[c]kjtoimu1是由大臂对应的最优不重合角度确定的;[c]kjtoimu2表示最优小臂旋转变换捷联矩阵,[c]kjtoimu2是由小臂对应的最优不重合角度确定的;lk1表示最优大臂长度;lk2表示最优小臂长度。
与现有技术相比,本发明的有益效果是:
本发明提出了一种用于手臂姿态重建的校准方法及系统。通过在一个已知平面上随意移动手臂末端,采用本发明的手臂姿态重建的校准方法就可以计算出佩戴过程中传感器的安装误差参数,已知安装误差参数就可以反推校正本次测试采集到的数据集,得到消除了安装误差的测量数据集。这样提升了数据集的精度,改善了数据集的一致性,进而提高了动作捕捉和动作识别的准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一种用于手臂姿态重建的校准方法的流程图;
图2为本发明实施例一种用于手臂姿态重建的校准系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明实施例一种用于手臂姿态重建的校准方法的流程图。
参见图1,实施例的用于手臂姿态重建的校准方法,包括:
步骤s1:获取手臂姿态数据和手臂末端移动数据;所述手臂姿态数据包括大臂姿态数据和小臂姿态数据。
在使用者的大臂和小臂的任意位置以任意的姿态佩戴惯性测量单元,并预先放置已知面。所述大臂姿态数据是手臂末端在已知面上随意移动时,佩戴在大臂上的惯性测量单元测量到的数据;所述小臂姿态数据是手臂末端在已知面上随意移动时,佩戴在小臂上的惯性测量单元测量到的数据;所述手臂末端移动数据由手臂末端在已知面上随意移动的位置点组成;所述已知面为已知空间分布特征的平面或曲面,具体的,所述已知面可以为用有限个数学参数和方程来描述的平面或曲面,例如桌面,地面,墙面,网格,或已知三维坐标的有穷或无穷空间点集。
本实施例中,记录使用者在已知平面或曲面上随意移动手臂末端所得到的每个惯性测量单元输出的多次(次数记为n)俯仰角、偏航角、滚转角数据。大臂所佩戴的惯性测量单元编号为1,输出的俯仰角、偏航角、滚转角分别记为pitchn1yawn1rolln1,小臂所佩戴的惯性测量单元编号为2,输出的俯仰角、偏航角、滚转角分别记为pitchn2yawn2rolln2。惯性测量单元第n(n≤n)次输出的以上一组数据(pitchn1yawn1rolln1pitchn2yawn2rolln2)均对应了手臂末端在参考曲面或平面上的一个点pn=(xn,yn,zn)。
步骤s2:依据所述手臂姿态数据构建第一捷联矩阵;所述第一捷联矩阵包括大臂捷联矩阵和小臂捷联矩阵。
所述大臂捷联矩阵为佩戴在大臂上的惯性测量单元到大地坐标参考系(东-北-天坐标系下的坐标)的捷联矩阵;所述小臂捷联矩阵为佩戴在小臂上的惯性测量单元到大地坐标参考系的捷联矩阵。
所述步骤s2,具体包括:
依据所述大臂姿态数据构建大臂捷联矩阵;所述大臂捷联矩阵
其中,n表示第n次移动手臂末端,imu是惯性测量单元的缩写,e是大地的缩写,下标“imutoe”表示imu本体坐标系到大地坐标参考系,(pitchn1yawn1rolln1)表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂姿态数据,pitchn1表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂俯仰角,yawn1表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂偏航角,rolln1表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂滚转角。
依据所述小臂姿态数据构建大臂捷联矩阵;所述小臂捷联矩阵
其中,(pitchn2yawn2rolln2)表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂姿态数据,pitchn2表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂俯仰角,yawn2表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂偏航角,rolln2表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂滚转角。
由于手臂肌肉的运动,手臂肌肉的粗细变化,以及本身人体结构的原因造成了惯性测量单元的本体坐标系和手臂的关节坐标系之间的不重合,该不重合的误差可以通过旋转变换将两者坐标系校正为重合。因此,下面进行步骤s3。
步骤s3:根据不重合角度,构建第二捷联矩阵;所述第二捷联矩阵包括大臂旋转变换捷联矩阵和小臂旋转变换捷联矩阵。
所述大臂旋转变换捷联矩阵为佩戴在大臂上的惯性测量单元到手臂关节坐标系的捷联矩阵;所述小臂旋转变换捷联矩阵为佩戴在小臂上的惯性测量单元到手臂关节坐标系的捷联矩阵;所述不重合角度为惯性测量单元的姿态轴与手臂关节的姿态轴之间不重合的角度。
所述步骤s3,具体包括:
构建大臂旋转变换捷联矩阵;所述大臂旋转变换捷联矩阵
其中,(α1,β1,γ1)表示佩戴在大臂上的惯性测量单元的姿态轴与手臂关节的姿态轴之间的不重合的角度,α1表示佩戴在大臂上的惯性测量单元的偏航轴与手臂关节的偏航轴之间的不重合的角度,β1表示佩戴在大臂上的惯性测量单元的滚转轴与手臂关节的滚转轴之间的不重合的角度,γ1表示佩戴在大臂上的惯性测量单元的俯仰轴与手臂关节的俯仰轴之间的不重合的角度。
构建小臂旋转变换捷联矩阵;所述小臂旋转变换捷联矩阵
其中,(α2,β2,γ2)表示佩戴在小臂上的惯性测量单元的姿态轴与手臂关节的姿态轴之间的不重合的角度,α2表示佩戴在小臂上的惯性测量单元的偏航轴与手臂关节的偏航轴之间的不重合的角度,β2表示佩戴在小臂上的惯性测量单元的滚转轴与手臂关节的滚转轴之间的不重合的角度,γ2表示佩戴在小臂上的惯性测量单元的俯仰轴与手臂关节的俯仰轴之间的不重合的角度。
步骤s4:由大臂长度、小臂长度、所述手臂末端移动数据、所述第一捷联矩阵和所述第二捷联矩阵构建校准目标函数,并采用梯度下降法对所述校准目标函数进行求解,得到最优解;所述最优解包括最优不重合角度、最优大臂长度和最优小臂长度。
所述步骤s4,具体包括:
由大臂长度、小臂长度、所述手臂末端移动数据、所述第一捷联矩阵和所述第二捷联矩阵构建校准目标函数;所述校准目标函数
其中,(xn,yn,zn)表示第n次移动手臂末端后的位置点在大地坐标参考系下的坐标;xn表示第n次移动手臂末端后的位置点在大地坐标参考系x轴上的坐标,yn表示第n次移动手臂末端后的位置点在大地坐标参考系y轴上的坐标,zn表示第n次移动手臂末端后的位置点在大地坐标参考系z轴上的坐标;[c]nimu1toe表示大臂捷联矩阵,[c]nimu2toe表示小臂捷联矩阵,[c]jtoimu1表示大臂旋转变换捷联矩阵,[c]jtoimu2表示小臂旋转变换捷联矩阵;l1表示大臂长度,l2表示小臂长度。
构建损失函数loss({pn})=1-r(x,y,z)({pn}),其中,{pn=(xn,yn,zn)|n=1,2,3,······n};n表示手臂末端移动的总次数,r(x,y,z)表示相关系数函数,r(x,y,z)({pn})∈(0,1)用于衡量由n个点组成的平面或曲面与参考平面或曲面两者拟合的误差。
定义迭代计算向量:input(α1,β1,γ1,α2,β2,γ2,l1,l2),定义初始迭代向量为:
input0=(α01,β01,γ01,α02,β02,γ02,l01,l02)=(0,0,0,0,0,0,0.5,0.5)。
定义迭代计算步长为step=0.001。
定义迭代方程:
其中,inputi(αi1,βi1,γi1,αi2,βi2,γi2,li1,li2)表示第i次迭代的输出值;αi1,βi1,γi1,αi2,βi2,γi2,li1,li2分别表示第i次迭代输出的α1,β1,γ1,α2,β2,γ2,l1,l2;inputi+1(αi+11,βi+11,γi+11,αi+12,βi+12,γi+12,li+11,li+12)表示第i+1次迭代的输出值;αi+11,βi+11,γi+11,αi+12,βi+12,γi+12,li+11,li+12分别表示第i+1次迭代输出的α1,β1,γ1,α2,β2,γ2,l1,l2;▽loss({pin})表示损失函数的梯度;step表示迭代步长。
其中{pin}为第i次计算得到的点集合
其中第i次惯性测量单元1到关节坐标系的捷联矩阵[c]ijtoimu1为:
其中第i次惯性测量单元2到关节坐标系的捷联矩阵[c]ijtoimu2为:
判断当前迭代次数下的损失函数是否小于或等于设定值;若否,则按照所述迭代方程进行下次迭代,若是,则停止迭代,并将当前迭代次数下的输出值作为最优解。本实施例中,设定值为0.2。
若第k次迭代后结束,则inputk(αk1,βk1,γk1,αk2,βk2,γk2,lk1,lk2)为最后计算得到的误差数据。
其中第k次惯性测量单元1到关节坐标系的捷联矩阵[c]kjtoimu1为:
其中第k次惯性测量单元2到关节坐标系的捷联矩阵[c]kjtoimu2为:
步骤s5:由所述最优解对手臂空间移动数据进行校正,得到校正后的手臂空间移动数据。
所述手臂空间移动数据由手臂在空间中作出设定动作时移动的位置点组成。
所述步骤s5,具体为:
其中,(xr,yr,zr)表示手臂第r次在空间中作出设定动作后移动的位置点的校正值;[c]rimu1toe表示手臂第r次在空间中作出设定动作后,佩戴在大臂上的惯性测量单元输出的大臂姿态数据,[c]rimu2toe表示手臂第r次在空间中作出设定动作后,佩戴在小臂上的惯性测量单元输出的小臂姿态数据;[c]kjtoimu1表示最优大臂旋转变换捷联矩阵,[c]kjtoimu1是由大臂对应的最优不重合角度确定的;[c]kjtoimu2表示最优小臂旋转变换捷联矩阵,[c]kjtoimu2是由小臂对应的最优不重合角度确定的;lk1表示最优大臂长度;lk2表示最优小臂长度。
其中,
本实施例的用于手臂姿态重建的校准方法,通过采集以任意姿态分别佩戴在测试者手臂上臂和手臂下臂上的惯性测量单元输出的俯仰角、偏航角、滚转角数据,记录使用者在预先放置的已知空间分布特征的平面或曲面上随意移动手臂末端所得到的以上数据,通过使用本方法提出的数学模型,并使用梯度下降法,最后估计出每个手臂上惯性测量单元的安装误差姿态角以及使用者的手臂的几何长度。该方法通过预设以已知特征的曲面,在实际使用场景下,可以选择桌面、地面、墙面等,简单易得;不用作出重复的动作,只需要随意在曲面上移动手臂即可,便于操作。校正过程完全实现了自动化,使用者移动手臂的同时计算机自动采集传感器数据,并最终计算出标定结果,实现了对标定过程的量化以及标准化,无主观人为因素影响。
本发明还提供了一种用于手臂姿态重建的校准系统,图2为本发明实施例一种用于手臂姿态重建的校准系统的结构示意图。
参见图2,实施例的用于手臂姿态重建的校准系统,包括:
数据获取模块201,用于获取手臂姿态数据和手臂末端移动数据;所述手臂姿态数据包括大臂姿态数据和小臂姿态数据;所述大臂姿态数据是手臂末端在已知面上随意移动时,佩戴在大臂上的惯性测量单元测量到的数据;所述小臂姿态数据是手臂末端在已知面上随意移动时,佩戴在小臂上的惯性测量单元测量到的数据;所述手臂末端移动数据由手臂末端在已知面上随意移动的位置点组成;所述已知面为已知空间分布特征的平面或曲面。
第一捷联矩阵构建模块202,用于依据所述手臂姿态数据构建第一捷联矩阵;所述第一捷联矩阵包括大臂捷联矩阵和小臂捷联矩阵;所述大臂捷联矩阵为佩戴在大臂上的惯性测量单元到大地坐标参考系的捷联矩阵;所述小臂捷联矩阵为佩戴在小臂上的惯性测量单元到大地坐标参考系的捷联矩阵。
第二捷联矩阵构建模块203,用于根据不重合角度,构建第二捷联矩阵;所述第二捷联矩阵包括大臂旋转变换捷联矩阵和小臂旋转变换捷联矩阵;所述大臂旋转变换捷联矩阵为佩戴在大臂上的惯性测量单元到手臂关节坐标系的捷联矩阵;所述小臂旋转变换捷联矩阵为佩戴在小臂上的惯性测量单元到手臂关节坐标系的捷联矩阵;所述不重合角度为惯性测量单元的姿态轴与手臂关节的姿态轴之间不重合的角度。
目标函数构建及求解模块204,用于由大臂长度、小臂长度、所述手臂末端移动数据、所述第一捷联矩阵和所述第二捷联矩阵构建校准目标函数,并采用梯度下降法对所述校准目标函数进行求解,得到最优解;所述最优解包括最优不重合角度、最优大臂长度和最优小臂长度。
校正模块205,用于由所述最优解对手臂空间移动数据进行校正,得到校正后的手臂空间移动数据;所述手臂空间移动数据由手臂在空间中作出设定动作时移动的位置点组成。
作为一种可选的实施方式,第一捷联矩阵构建模块202,具体包括:
大臂捷联矩阵构建单元,用于依据所述大臂姿态数据构建大臂捷联矩阵;所述大臂捷联矩阵
其中,n表示第n次移动手臂末端,(pitchn1yawn1rolln1)表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂姿态数据,pitchn1表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂俯仰角,yawn1表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂偏航角,rolln1表示第n次移动手臂末端时,佩戴在大臂上的惯性测量单元输出的大臂滚转角。
小臂捷联矩阵构建单元,用于依据所述小臂姿态数据构建大臂捷联矩阵;所述小臂捷联矩阵
其中,(pitchn2yawn2rolln2)表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂姿态数据,pitchn2表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂俯仰角,yawn2表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂偏航角,rolln2表示第n次移动手臂末端时,佩戴在小臂上的惯性测量单元输出的小臂滚转角。
作为一种可选的实施方式,第二捷联矩阵构建单元203,具体包括:
大臂旋转变换捷联矩阵构建单元,用于构建大臂旋转变换捷联矩阵;所述大臂旋转变换捷联矩阵
其中,(α1,β1,γ1)表示佩戴在大臂上的惯性测量单元的姿态轴与手臂关节的姿态轴之间的不重合的角度,α1表示佩戴在大臂上的惯性测量单元的偏航轴与手臂关节的偏航轴之间的不重合的角度,β1表示佩戴在大臂上的惯性测量单元的滚转轴与手臂关节的滚转轴之间的不重合的角度,γ1表示佩戴在大臂上的惯性测量单元的俯仰轴与手臂关节的俯仰轴之间的不重合的角度。
小臂旋转变换捷联矩阵构建单元,用于构建小臂旋转变换捷联矩阵;所述小臂旋转变换捷联矩阵
其中,(α2,β2,γ2)表示佩戴在小臂上的惯性测量单元的姿态轴与手臂关节的姿态轴之间的不重合的角度,α2表示佩戴在小臂上的惯性测量单元的偏航轴与手臂关节的偏航轴之间的不重合的角度,β2表示佩戴在小臂上的惯性测量单元的滚转轴与手臂关节的滚转轴之间的不重合的角度,γ2表示佩戴在小臂上的惯性测量单元的俯仰轴与手臂关节的俯仰轴之间的不重合的角度。
作为一种可选的实施方式,所述目标函数构建及求解模块204,具体包括:
目标函数构建单元,用于由大臂长度、小臂长度、所述手臂末端移动数据、所述第一捷联矩阵和所述第二捷联矩阵构建校准目标函数;所述校准目标函数
其中,(xn,yn,zn)表示第n次移动手臂末端后的位置点在大地坐标参考系下的坐标;xn表示第n次移动手臂末端后的位置点在大地坐标参考系x轴上的坐标,yn表示第n次移动手臂末端后的位置点在大地坐标参考系y轴上的坐标,zn表示第n次移动手臂末端后的位置点在大地坐标参考系z轴上的坐标;[c]nimu1toe表示大臂捷联矩阵,[c]nimu2toe表示小臂捷联矩阵,[c]jtoimu1表示大臂旋转变换捷联矩阵,[c]jtoimu2表示小臂旋转变换捷联矩阵;l1表示大臂长度,l2表示小臂长度。
损失函数构建单元,用于构建损失函数loss({pn})=1-r(x,y,z)({pn}),其中,{pn=(xn,yn,zn)|n=1,2,3,······n};n表示手臂末端移动的总次数,r(x,y,z)表示相关系数函数,r(x,y,z)({pn})∈(0,1)。
迭代方程构建单元,用于由所述损失函数构建迭代方程
其中,inputi(αi1,βi1,γi1,αi2,βi2,γi2,li1,li2)表示第i次迭代的输出值;αi1,βi1,γi1,αi2,βi2,γi2,li1,li2分别表示第i次迭代输出的α1,β1,γ1,α2,β2,γ2,l1,l2;inputi+1(αi+11,βi+11,γi+11,αi+12,βi+12,γi+12,li+11,li+12)表示第i+1次迭代的输出值;αi+11,βi+11,γi+11,αi+12,βi+12,γi+12,li+11,li+12分别表示第i+1次迭代输出的α1,β1,γ1,α2,β2,γ2,l1,l2;▽loss({pin})表示损失函数的梯度;step表示迭代步长。
判断单元,用于判断当前迭代次数下的损失函数是否小于或等于设定值;若否,则按照所述迭代方程进行下次迭代,若是,则停止迭代,并将当前迭代次数下的输出值作为最优解。
作为一种可选的实施方式,所述校正模块205,具体为:
其中,(xr,yr,zr)表示手臂第r次在空间中作出设定动作后移动的位置点的校正值;[c]rimu1toe表示手臂第r次在空间中作出设定动作后,佩戴在大臂上的惯性测量单元输出的大臂姿态数据,[c]rimu2toe表示手臂第r次在空间中作出设定动作后,佩戴在小臂上的惯性测量单元输出的小臂姿态数据;[c]kjtoimu1表示最优大臂旋转变换捷联矩阵,[c]kjtoimu1是由大臂对应的最优不重合角度确定的;[c]kjtoimu2表示最优小臂旋转变换捷联矩阵,[c]kjtoimu2是由小臂对应的最优不重合角度确定的;lk1表示最优大臂长度;lk2表示最优小臂长度。
本发明的用于手臂姿态重建的校准系统,能够在手臂姿态重建时,实现准确校准,进而提高动作捕捉和动作识别的准确性。
对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。