一种融合室内定位数据与动作捕捉数据的方法与流程

文档序号:12663124阅读:来源:国知局

技术特征:

1.一种融合室内定位数据与动作捕捉数据的方法,其特征在于:包括如下步骤:

步骤1,动作捕捉数据采集:通过虚拟现实综合系统中的动作捕捉传感器获得人体的动作捕捉数据;虚拟现实综合系统中设置有惯性动作捕捉装置,惯性动作捕捉装置包括若干个均能固定在人体上的动作捕捉传感器,动作捕捉传感器将能自动捕捉与采集人体接触部位的动作数据,也即骨骼姿态数据;

步骤2,室内定位数据采集:通过UWB室内定位系统获得室内定位数据;

步骤3,获取融合位移:采用卡尔曼滤波算法将步骤1采集的动作捕捉数据与步骤2采集的室内定位数据进行融合,获得融合位移;

步骤4,位移纠偏:解析虚拟现实综合系统中各个动作捕捉传感器所捕捉的各个骨骼姿态数据,计算各个骨骼相对位移坐标;根据步骤3获取的融合位移与骨骼相对位移坐标对虚拟现实综合系统中各个动作捕捉传感器进行位移纠偏,形成姿态重组位移;

步骤5,形成最终输出位移:步骤3获取的融合位移与步骤4形成的姿态重组位移构成初步输出位移,将该初步输出位移进行卡尔曼滤波,去除位移纠偏过程中产生的闪跳点,形成平滑的各个动作捕捉传感器的最终输出位移。

2.根据权利要求1所述的融合室内定位数据与动作捕捉数据的方法,其特征在于:所述步骤3中,假设骤1采集的动作捕捉数据中的坐标数据与步骤2采集的室内定位数据均是一个二维坐标点(x,y)的集合,其中,x和y分别表示该点的横纵坐标,则融合位移的具体获取方法包括如下步骤:

步骤31,状态方程建立:将步骤1采集的动作捕捉数据的位移增量作为状态量,建立如下所示的状态方程:

<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mover> <mi>x</mi> <mo>&OverBar;</mo> </mover> <mrow> <mi>k</mi> <mo>,</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mover> <mi>y</mi> <mo>&OverBar;</mo> </mover> <mrow> <mi>k</mi> <mo>,</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mi>A</mi> <mo>*</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mover> <mi>x</mi> <mo>&OverBar;</mo> </mover> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mover> <mi>y</mi> <mo>&OverBar;</mo> </mover> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>+</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <msub> <mi>&sigma;x</mi> <mi>k</mi> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>&sigma;y</mi> <mi>k</mi> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>+</mo> <msub> <mi>w</mi> <mi>k</mi> </msub> </mrow>

上式中,向量为k时刻动作捕捉数据的先验估计,A取单位矩阵为k-1时刻动作捕捉数据的后验估计,为步骤1采集的动作捕捉数据的位移增量,wk为过程噪声的协方差矩阵,由实验测得,为可调参数;

步骤32,观测方程建立:将步骤2采集的室内定位数据作为观测量,建立如下所示的观测方程:

<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mi>C</mi> <mo>*</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>x</mi> <mi>k</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mi>k</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>+</mo> <msub> <mi>r</mi> <mi>k</mi> </msub> </mrow>

上式中,向量为k时刻室内定位数据的后验估计;C为观测矩阵;表示UWB室内定位系统的输入坐标数据;rk为观测噪声矩阵,由实验测得,为可调参数;

步骤33,计算融合位移:通过步骤31建立的状态方程与步骤32建立的观测方程进行求解,获得融合位移。

3.根据权利要求1所述的融合室内定位数据与动作捕捉数据的方法,其特征在于:所述步骤4中,位移纠偏时,为使步骤3中获取的融合位移与原有骨骼姿态相匹配,以人体是否有着地点为依据进行判断;在人体有着地的情况下,以着地点为原点计算全身各骨骼位置;如果纠偏过程中没有新的着地点产生,则保持原点不变;如果纠偏过程中产生新的着地点,原点变为当前时刻的融合位移。

4.根据权利要求3所述的融合室内定位数据与动作捕捉数据的方法,其特征在于:所述步骤4中,在人体有着地的情况下,以着地点为原点,采用位姿矩阵来计算全身各骨骼位置;其中,位姿矩阵T表示如下:

<mrow> <mi>T</mi> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>n</mi> <mi>x</mi> </msub> </mtd> <mtd> <msub> <mi>o</mi> <mi>x</mi> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mi>x</mi> </msub> </mtd> <mtd> <msub> <mi>p</mi> <mi>x</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>n</mi> <mi>y</mi> </msub> </mtd> <mtd> <msub> <mi>o</mi> <mi>y</mi> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mi>y</mi> </msub> </mtd> <mtd> <msub> <mi>p</mi> <mi>y</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>n</mi> <mi>z</mi> </msub> </mtd> <mtd> <msub> <mi>o</mi> <mi>z</mi> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mi>z</mi> </msub> </mtd> <mtd> <msub> <mi>p</mi> <mi>z</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>R</mi> </mtd> <mtd> <mi>P</mi> </mtd> </mtr> <mtr> <mtd> <mi>O</mi> </mtd> <mtd> <mi>I</mi> </mtd> </mtr> </mtable> </mfenced> </mrow>

其中,O=[0 0 0],I=1

上式中,T表示位姿矩阵,n表示法线矢量,o表示方向矢量,a表示接近矢量,p表示平移矢量,R表示旋转矩阵,P表示位置矩阵,O表示透视矩阵,I表示比例变换;x,y,z表示三个坐标轴方向。

5.根据权利要求1所述的融合室内定位数据与动作捕捉数据的方法,其特征在于:所述步骤5,将初步输出位移进行卡尔曼滤波时,卡尔曼滤波状态方程为:

<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mover> <msub> <mi>x</mi> <mi>k</mi> </msub> <mo>&OverBar;</mo> </mover> </mtd> </mtr> <mtr> <mtd> <mover> <msub> <mover> <mi>x</mi> <mo>&CenterDot;</mo> </mover> <mi>k</mi> </msub> <mo>&OverBar;</mo> </mover> </mtd> </mtr> <mtr> <mtd> <mover> <msub> <mi>y</mi> <mi>k</mi> </msub> <mo>&OverBar;</mo> </mover> </mtd> </mtr> <mtr> <mtd> <mover> <msub> <mover> <mi>y</mi> <mo>&CenterDot;</mo> </mover> <mi>k</mi> </msub> <mo>&OverBar;</mo> </mover> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>t</mi> <mi>s</mi> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>t</mi> <mi>s</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>*</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mover> <msub> <mi>x</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>&OverBar;</mo> </mover> </mtd> </mtr> <mtr> <mtd> <mover> <msub> <mover> <mi>x</mi> <mo>&CenterDot;</mo> </mover> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>&OverBar;</mo> </mover> </mtd> </mtr> <mtr> <mtd> <mover> <msub> <mi>y</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>&OverBar;</mo> </mover> </mtd> </mtr> <mtr> <mtd> <mover> <msub> <mover> <mi>y</mi> <mo>&CenterDot;</mo> </mover> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>&OverBar;</mo> </mover> </mtd> </mtr> </mtable> </mfenced> </mrow>

上式中,为k时刻初步输出位移的状态量;的一阶导数;为状态矩阵;ts表示动作捕捉传感器的采样频率,为固定参数;为k-1时刻初步输出位移的状态量;

卡尔曼滤波观测方程:

<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mover> <msub> <mi>x</mi> <mi>k</mi> </msub> <mo>^</mo> </mover> </mtd> </mtr> <mtr> <mtd> <mover> <msub> <mover> <mi>x</mi> <mo>&CenterDot;</mo> </mover> <mi>k</mi> </msub> <mo>^</mo> </mover> </mtd> </mtr> <mtr> <mtd> <mover> <msub> <mi>y</mi> <mi>k</mi> </msub> <mo>^</mo> </mover> </mtd> </mtr> <mtr> <mtd> <mover> <msub> <mover> <mi>y</mi> <mo>&CenterDot;</mo> </mover> <mi>k</mi> </msub> <mo>^</mo> </mover> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mi>C</mi> <mo>*</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>x</mi> <mi>k</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mover> <mi>x</mi> <mo>&CenterDot;</mo> </mover> <mi>k</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>y</mi> <mi>k</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mover> <mi>y</mi> <mo>&CenterDot;</mo> </mover> <mi>k</mi> </msub> </mtd> </mtr> </mtable> </mfenced> </mrow>

上式中,为初步输出位移的后验估计,的一阶导数;C为观测矩阵,取为观测量。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1