一种基于无损卡尔曼滤波的救援清障车姿态角估计方法与流程

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

技术特征:

1.一种基于无损卡尔曼滤波的救援清障车姿态角估计方法,其特征在于采用较少的低成本MEMS加速度传感器采集救援清障车的状态信息,根据救援清障车的工作特点,基于车辆运动学模型对姿态角进行估计,并且舍弃了扩展卡尔曼滤波算法在解决非线性系统将其近似线性化的思路,而是通过无损变换使非线性系统适用于线性假设下的标准卡尔曼滤波体系,提高了滤波精度和效率,从而得到更为准确的姿态角估计值,为救援清障车提供姿态安全预警。具体步骤包括:

1)建立救援清障车的运动学模型

忽略地球旋转速度,车辆运动学方程为:

<mrow> <msub> <mover> <mi>v</mi> <mo>&CenterDot;</mo> </mover> <mi>x</mi> </msub> <mo>=</mo> <msub> <mi>a</mi> <mi>x</mi> </msub> <mo>+</mo> <msub> <mi>w</mi> <mi>z</mi> </msub> <msub> <mi>v</mi> <mi>y</mi> </msub> <mo>-</mo> <msub> <mi>w</mi> <mi>y</mi> </msub> <msub> <mi>v</mi> <mi>z</mi> </msub> <mo>+</mo> <mi>g</mi> <mi> </mi> <mi>sin</mi> <mi>&theta;</mi> </mrow>

<mrow> <msub> <mover> <mi>v</mi> <mo>&CenterDot;</mo> </mover> <mi>y</mi> </msub> <mo>=</mo> <msub> <mi>a</mi> <mi>y</mi> </msub> <mo>+</mo> <msub> <mi>w</mi> <mi>z</mi> </msub> <msub> <mi>v</mi> <mi>x</mi> </msub> <mo>-</mo> <msub> <mi>w</mi> <mi>x</mi> </msub> <msub> <mi>v</mi> <mi>z</mi> </msub> <mo>-</mo> <mi>g</mi> <mi>sin</mi> <mi>&phi;</mi> <mi>cos</mi> <mi>&theta;</mi> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msub> <mover> <mi>v</mi> <mo>&CenterDot;</mo> </mover> <mi>z</mi> </msub> <mo>=</mo> <msub> <mi>a</mi> <mi>z</mi> </msub> <mo>+</mo> <msub> <mi>w</mi> <mi>y</mi> </msub> <msub> <mi>v</mi> <mi>x</mi> </msub> <mo>-</mo> <msub> <mi>w</mi> <mi>x</mi> </msub> <msub> <mi>v</mi> <mi>y</mi> </msub> <mo>-</mo> <mi>g</mi> <mi> </mi> <mi>cos</mi> <mi>&phi;</mi> <mi>cos</mi> <mi>&theta;</mi> </mrow>

式(1)中,wx、wy和wz分别表示围绕车体坐标系纵轴、横轴以及垂向轴的角速度,vx、vy和vz分别表示沿车体坐标系纵轴、横轴以及垂向轴的线速度,ax、ay和az分别表示沿车体坐标系纵轴、横轴以及垂向轴的加速度;θ、φ分别表示俯仰角、侧倾角;g表示重力加速度;上标“·”表示微分,如表示vx的微分。

由于救援清障车在工作时,仅利用吊臂对事故车辆开展施救工作,车身部分相对于地面处于静止状态,即可以合理地认为vx、vy、vzwx、wy和wz均为零,则救援清障车的运动学模型可合理地简化为:

ax=-g sinθ (2)

ay=g sinφcosθ

2)所需车载传感器安装

由式(2)可以看出,只需测得车辆纵向加速度与横向加速度,即可对救援清障车的姿态角进行估计。因此,两个低成本MEMS加速度传感器即可满足救援清障车姿态角的测量要求。两个低成本MEMS加速度传感器应安装于车身(即除吊臂外救援清障车的其他部分)质心位置附近,一个与车体坐标系纵轴平行,用于测量纵向加速度,记为ax-m;另一个与车体坐标系横轴平行,用于测量成横向加速度,记为ay-m

3)建立无损卡尔曼滤波的状态方程和观测方程

无损卡尔曼滤波状态方程为:

xk=f(xk-1)+Wk-1 (3)

式(3)中,k表示离散化时刻,xk=[θ φ]T,其中xk为系统状态向量,θ、φ是系统的待估参数;由于救援清障车在工作过程中,侧倾角与俯仰角是连续缓慢变化的,可认为当前采样时刻的侧倾角与俯仰角等于下一采样时刻的侧倾角与俯仰角,所以f(xk-1)=xk-1;Wk-1表示对应k-1时刻零均值的系统高斯白噪声向量且W=[w1 w2]T,其中w1、w2分别表示两个系统高斯白噪声分量,Wk-1对应的系统高斯白噪声协方差阵 <mrow> <msub> <mi>Q</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> </mrow> <mrow> <mfenced open = '[' close = ']'> <mtable> <mtr> <mtd> <msubsup> <mi>&sigma;</mi> <msub> <mi>w</mi> <mn>1</mn> </msub> <mn>2</mn> </msubsup> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <msubsup> <mi>&sigma;</mi> <msub> <mi>w</mi> <mn>2</mn> </msub> <mn>2</mn> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>其中分别表示系统高斯白噪声w1、w2对应的方差;

无损卡尔曼滤波观测方程为:

yk=h(xk)+Vk (4)

式(4)中,yk=[ax_m ay_m]T;由式(2)可知h(xk)=[-g sinθ g sinφcosθ]T;Vk表示与Wk互不相关的零均值测量高斯白噪声向量且V=[V1 V2]T,其中v1、v2分别表示两个测量高斯白噪声分量,Vk对应的测量高斯白噪声协方差阵 <mrow> <msub> <mi>R</mi> <mi>k</mi> </msub> <mo>=</mo> <mfenced open = '[' close = ']'> <mtable> <mtr> <mtd> <msubsup> <mi>&sigma;</mi> <msub> <mi>v</mi> <mn>1</mn> </msub> <mn>2</mn> </msubsup> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <msubsup> <mi>&sigma;</mi> <msub> <mi>v</mi> <mn>2</mn> </msub> <mn>2</mn> </msubsup> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow>其中分别表示测量高斯白噪声v1、v2对应的方差。

4)无损卡尔曼滤波算法:

根据式(3)和式(4)所描述的系统状态方程和观测方程,结合无损变换,建立无损卡尔曼滤波递推过程,如下述步骤所示:

步骤1:输入变量初始化

<mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mn>0</mn> </msub> <mo>=</mo> <mi>E</mi> <mo>&lsqb;</mo> <msub> <mi>x</mi> <mn>0</mn> </msub> <mo>&rsqb;</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msub> <mi>P</mi> <mn>0</mn> </msub> <mo>=</mo> <mi>E</mi> <mo>&lsqb;</mo> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mn>0</mn> </msub> <mo>-</mo> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mn>0</mn> </msub> <mo>)</mo> </mrow> <msup> <mrow> <mo>(</mo> <msub> <mi>x</mi> <mn>0</mn> </msub> <mo>-</mo> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mn>0</mn> </msub> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mo>&rsqb;</mo> </mrow>

步骤2:计算Sigma采样点

采用对称采样策略,产生2n+1个均值为方差为P的Sigma点集,n为状态向量维数,本发明中n=2;

<mrow> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mn>0</mn> </msubsup> <mo>=</mo> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mrow>

<mrow> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>=</mo> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msub> <mrow> <mo>(</mo> <msqrt> <mrow> <mo>(</mo> <mi>n</mi> <mo>+</mo> <mi>&lambda;</mi> <mo>)</mo> <msub> <mi>P</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mrow> </msqrt> <mo>)</mo> </mrow> <mi>i</mi> </msub> <mo>,</mo> <mi>i</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>=</mo> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mrow> <mo>(</mo> <msqrt> <mrow> <mo>(</mo> <mi>n</mi> <mo>+</mo> <mi>&lambda;</mi> <mo>)</mo> <msub> <mi>P</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </mrow> </msqrt> <mo>)</mo> </mrow> <mrow> <mi>i</mi> <mo>-</mo> <mi>n</mi> </mrow> </msub> <mo>,</mo> <mi>i</mi> <mo>=</mo> <mn>3</mn> <mo>,</mo> <mn>4</mn> </mrow>

式(6)中,为5个Sigma点;λ=α2(n+k)-n为调节Sigma点和的距离参数,调节它可提高逼近精度,其中α决定Sigma点围绕均值的散布,通常取一小正数(如:1e-4≤α≤1),本文取0.01;k为比例因数,本发明取0;为加权协方差矩阵平方根的第i列;

步骤3:无损卡尔曼滤波的时间更新方程

<mrow> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>=</mo> <mi>f</mi> <mrow> <mo>(</mo> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> <mo>-</mo> </msubsup> <mo>=</mo> <msubsup> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mn>2</mn> <mi>n</mi> </mrow> </msubsup> <msubsup> <mi>W</mi> <mi>i</mi> <mi>m</mi> </msubsup> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>8</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>P</mi> <mrow> <mi>x</mi> <mo>,</mo> <mi>k</mi> </mrow> <mo>-</mo> </msubsup> <mo>=</mo> <msubsup> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mn>2</mn> <mi>n</mi> </mrow> </msubsup> <msubsup> <mi>W</mi> <mi>i</mi> <mi>c</mi> </msubsup> <mrow> <mo>(</mo> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>-</mo> <msubsup> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> <mo>-</mo> </msubsup> <mo>)</mo> </mrow> <msup> <mrow> <mo>(</mo> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>-</mo> <msubsup> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> <mo>-</mo> </msubsup> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mo>+</mo> <msub> <mi>Q</mi> <mi>k</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>9</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>&gamma;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>=</mo> <mi>h</mi> <mrow> <mo>(</mo> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>10</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> <mo>-</mo> </msubsup> <mo>=</mo> <msubsup> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mn>2</mn> <mi>n</mi> </mrow> </msubsup> <msubsup> <mi>W</mi> <mi>i</mi> <mi>n</mi> </msubsup> <msubsup> <mi>&gamma;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>11</mn> <mo>)</mo> </mrow> </mrow>

相应的权值定义如下:

<mrow> <msubsup> <mi>W</mi> <mi>i</mi> <mi>m</mi> </msubsup> <mo>=</mo> <mfrac> <mi>&lambda;</mi> <mrow> <mi>n</mi> <mo>+</mo> <mi>&lambda;</mi> </mrow> </mfrac> <mo>,</mo> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow>

<mrow> <msubsup> <mi>W</mi> <mi>i</mi> <mi>c</mi> </msubsup> <mo>=</mo> <mfrac> <mi>&lambda;</mi> <mrow> <mi>n</mi> <mo>+</mo> <mi>&lambda;</mi> </mrow> </mfrac> <mo>+</mo> <mn>1</mn> <mo>-</mo> <msup> <mi>&alpha;</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>&beta;</mi> <mo>,</mo> <mi>i</mi> <mo>=</mo> <mn>0</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>12</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msubsup> <mi>W</mi> <mi>i</mi> <mi>m</mi> </msubsup> <mo>=</mo> <msubsup> <mi>W</mi> <mi>i</mi> <mi>c</mi> </msubsup> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <mn>2</mn> <mrow> <mo>(</mo> <mi>n</mi> <mo>+</mo> <mi>&lambda;</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>,</mo> <mi>i</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mo>...</mo> <mo>,</mo> <mn>4</mn> </mrow>

其中,β为比例因数,对于高斯分布,其最优值为2;为均值的权值,为方差的权值,

步骤4:无损卡尔曼滤波的测量更新方程

<mrow> <msub> <mi>P</mi> <mrow> <mi>y</mi> <mo>,</mo> <mi>k</mi> </mrow> </msub> <mo>=</mo> <msubsup> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mn>2</mn> <mi>n</mi> </mrow> </msubsup> <msubsup> <mi>W</mi> <mi>i</mi> <mi>c</mi> </msubsup> <mrow> <mo>(</mo> <msubsup> <mi>&gamma;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>-</mo> <msubsup> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> <mo>-</mo> </msubsup> <mo>)</mo> </mrow> <msup> <mrow> <mo>(</mo> <msubsup> <mi>&gamma;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>-</mo> <msubsup> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> <mo>-</mo> </msubsup> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mo>+</mo> <msub> <mi>R</mi> <mi>k</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>13</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msub> <mi>P</mi> <mrow> <mi>x</mi> <mi>y</mi> <mo>,</mo> <mi>k</mi> </mrow> </msub> <mo>=</mo> <msubsup> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <mn>2</mn> <mi>n</mi> </mrow> </msubsup> <msubsup> <mi>W</mi> <mi>i</mi> <mi>c</mi> </msubsup> <mrow> <mo>(</mo> <msubsup> <mi>&chi;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>-</mo> <msubsup> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> <mo>-</mo> </msubsup> <mo>)</mo> </mrow> <msup> <mrow> <mo>(</mo> <msubsup> <mi>&gamma;</mi> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>-</mo> <msubsup> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> <mo>-</mo> </msubsup> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>14</mn> <mo>)</mo> </mrow> </mrow>

Kk=Pxy,k(Py,k)-1 (15)

<mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> </msub> <mo>=</mo> <msubsup> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>k</mi> <mo>-</mo> </msubsup> <mo>+</mo> <msub> <mi>K</mi> <mi>k</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>y</mi> <mi>k</mi> </msub> <mo>-</mo> <msubsup> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>k</mi> <mo>-</mo> </msubsup> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>16</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msub> <mi>P</mi> <mrow> <mi>x</mi> <mo>,</mo> <mi>k</mi> </mrow> </msub> <mo>=</mo> <msubsup> <mi>P</mi> <mrow> <mi>x</mi> <mo>,</mo> <mi>k</mi> </mrow> <mo>-</mo> </msubsup> <mo>-</mo> <msub> <mi>K</mi> <mi>k</mi> </msub> <msub> <mi>P</mi> <mrow> <mi>y</mi> <mo>,</mo> <mi>k</mi> </mrow> </msub> <msup> <mrow> <mo>(</mo> <msub> <mi>K</mi> <mi>k</mi> </msub> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>17</mn> <mo>)</mo> </mrow> </mrow>

经过上述步骤的递推计算,可以准确实时地估计出救援清障车在每个时刻的侧倾角与俯仰角。

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