技术简介:
本发明针对高动态场景下姿态估计算法易发散及磁干扰影响的问题,提出分层解算方案:第一层采用误差状态与方向余弦矩阵最后一行解算俯仰/滚转角,降低非线性误差;第二层通过磁力计模值与磁场倾角增量乘积取对数评估磁干扰强度,动态调整观测矩阵,实现航向角精准校正。该方法有效提升算法在复杂环境下的精度与鲁棒性。
关键词:姿态估计,磁干扰抑制
一种高动态和磁干扰环境下的姿态估计算法
【技术领域】
1.本发明涉及一种姿态估计算法,具体涉及一种高动态和磁干扰环境下的姿态估计算法。
背景技术:2.卡尔曼滤波是姿态估计中应用最为广泛的一种方法,传统卡尔曼滤波只使用于线性系统,而三维旋转运动由于其转动空间是流形,无论用哪种其数学描述方法都是在非线性空间中工作。为了适应非线性系统,提出使用扩展卡尔曼滤波(ekf)进行姿态估计,其核心思想就是利用泰勒级数,将非线性系统在工作点附近进行一阶泰勒展开并忽略高阶项。但是在高动态环境中,运动方程的模型噪声和陀螺仪噪声增大,观测方程的线性化点开始远离工作点,最终导致ekf的估计结果产生偏差或不一致,甚至会导致滤波器发散。
3.由于加速度计并未包含航向信息,要想获得无累计误差的航向角则需要引入磁力计,但载体在运动过程中,不可避免的会运动到有外部磁场干扰的环境,当距离干扰源比较近时干扰磁场的强度会远远大于地磁场强度,使得磁力计数据失去参考价值。
技术实现要素:4.为了解决上述问题,本发明针对传统的姿态估计算法在高动态环境下估计值容易发散,姿态角受磁干扰影响的问题,提出一种高动态和磁干扰环境下的姿态估计算法,其将俯仰角、滚转角和航向角分层解算,解决了姿态估计算法在高动态环境下精度低、易发散,且姿态角受磁干扰影响的问题,有效提高了姿态估计的精度和鲁棒性。
5.本发明是通过以下技术方案实现的,提供一种高动态和磁干扰环境下的姿态估计算法,包括以下步骤:
6.s1第一层姿态估计算法:基于线性化程度更高的误差状态解算俯仰角、滚转角,并选用方向余弦矩阵的最后一行作为俯仰角、滚转角状态变量,选用该状态变量的误差状态在ekf框架下进行更新与校正;
7.s2第二层姿态估计算法:选用方向余弦矩阵的第一列的前两个元素作为航向角的状态变量,并选用磁力计校正航向信息,使用磁力计模值和模块磁场倾角增量相乘再取对数函数的方法度量磁干扰强度。
8.特别的,所述s1具体按照以下步骤实施:
9.s11名义状态预测
10.选用从载体坐标系b系到导航坐标系n系的姿态旋转矩阵的最后一行r作为表达俯仰θ、滚转角γ的状态变量,并将陀螺仪的零偏bg当成状态变量估计,第一层的名义状态向量x1按如下公式表示:
11.x1=[r bg]
ꢀꢀꢀ
(1),
[0012]
公式(1)中,r按如下公式计算:
[0013]
r=[-sinθ sinγcosθ cosγcosθ]
ꢀꢀꢀ
(2),
[0014]
状态向量x1的运动方程按如下公式表示:
[0015][0016]
公式(3)中,bφk为[t
k-1
,tk]时间段内的等效旋转矢量,(bφk)
^
为bφk的反对称矩阵;
[0017]
s12误差状态预测和校正
[0018]
误差状态的运动方程为:
[0019][0020][0021]
公式(4)中,δφ为r的误差状态,δbg为bg的误差状态,将公式(4)按矩阵形式表示为:
[0022][0023]
公式(5)中,f
k-1
为误差状态δx1的状态转移矩阵,其按照如下公式计算:
[0024][0025]
误差状态的先验协方差的预测方程如下:
[0026][0027]
于公式(7)中,q为预测方程的过程噪声矩阵;
[0028]
引入加速度计对预测结果进行校正,观测方程按如下公式表示:
[0029]z1,k
=h1(x
1,k
,vk)
ꢀꢀ
(8),
[0030]
公式(8)中,z
1,k
=am为加速度计测量值,vk为加速度计测量噪声,由于状态变量是选用姿态旋转矩阵的最后一行,所以h1(
·
)是一个线性函数,
[0031]
根据链式求导法则,观测方程关于δx1的雅克比矩阵如下:
[0032][0033]
公式(9)中,h
x1
=[i
3 03],
[0034]
因此,误差状态的后验校正过程按如下公式表示:
[0035][0036][0037][0038]
公式(10)中,r1为观测方程的噪声矩阵,i6为6*6的单位矩阵;
[0039]
s13误差状态的注入和复位
[0040]
将经过加速度计校正后的误差状态按如下公式注入到名义状态中:
[0041][0042][0043]
公式(11)中,exp(δφ)是误差状态到上so(3)的指数映射,其按照如下公式表示:
[0044]
exp(δφ)=i3+u
^
sinφ+(1-cosφ)(u
^
)2ꢀꢀ
(12),
[0045]
将误差状态注入到名义状态之后,需要将误差状态清零,具体按如下公式操作:
[0046][0047][0048]
特别的,所述s11中,需引入单子样+前一周期的等效旋转矢量补偿不可交换误差,具体按如下公式表示:
[0049][0050]
公式(14)中,φk为等效旋转矢量,δθk为角增量,δθk=δt
·
(bω
m,k-b
g,k-1
)
^
。
[0051]
特别的,所述s2具体按照以下步骤实施:
[0052]
s21航向信息解算
[0053]
选用从载体坐标系b系到导航坐标系n系的姿态旋转矩阵的第一列的前两个元素作为表达航向角的状态变量,其中第二层的状态向量x2为:
[0054][0055]
运动方程按如下公式表示:
[0056][0057]
公式(16)中,由和计算所得,
[0058]
状态x2的先验协方差的预测方程按如下公式表示:
[0059][0060]
s22航向信息校正
[0061]
由于磁力计数据并不能直接校正状态x2,因此需将其转换到和状态x2同一量纲,状态x2的后验校正过程按如下公式表示:
[0062][0063][0064][0065]
公式(18)中,
[0066]
s23磁干扰的检测
[0067]
使用模块磁场倾角增量和磁力计模值来评价磁干扰强度,具体评价函数按如下公式表示:
[0068]mlen
=log(||bmm||sin(|dip-dip
ref
|))
ꢀꢀꢀ
(19),
[0069]
公式(19)中,dip
ref
为无磁干扰情况下的模块磁场倾角,dip为加速度计输出矢量和磁力计输出矢量的夹角,dip按如下公式进行计算:
[0070][0071]
公式(20)中,am为加速度计的测量值,mm为磁力计的测量值。
[0072]
特别的,所述s2中,为了减小磁干扰对航向信息的影响,按如下公式将磁干扰强度和观测矩阵r2关联:
[0073][0074]
公式(21)中,σm为磁力计噪声的标准差,σd为磁干扰的基础标准差。
[0075]
本发明提供一种高动态和磁干扰环境下的姿态估计算法,其将俯仰、滚转角的解算基于线性化程度更高的误差状态进行,并选用方向余弦矩阵的最后一行作为其状态变量,减小了系统非线性;同时,磁力计只用来校正航向信息,彻底避免了磁干扰对俯仰、滚转角的影响;使用模块磁场倾角增量和磁场模值相乘再取对数函数的方法度量磁干扰强度,并用其动态调节观测噪声的大小,使得航向角在短时间的磁干扰环境中也不受影响。
【附图说明】
[0076]
图1为本发明一种高动态和磁干扰环境下的姿态估计算法的计算框图;
[0077]
图2为磁干扰检测图;
[0078]
图3为本发明与ekf算法、eskf算法在磁干扰环境下的对比结果图;
[0079]
图4为本发明与ekf算法、eskf算法在高动态环境下的对比结果图。
【具体实施方式】
[0080]
为了使本发明的目的、技术方案及优点更加清楚明白,以下对本发明进一步详细说明。
[0081]
请参阅图1,本发明针对传统的姿态估计算法在高动态环境下估计值容易发散,姿态角受磁干扰影响的问题,提出一种基于误差状态的双层解耦姿态估计算法,即一种高动态和磁干扰环境下的姿态估计算法,具体按照如下步骤实施:
[0082]
s1第一层姿态估计算法
[0083]
于本发明中,第一层姿态估计算法只对俯仰角θ、滚转角γ进行估计,且只用加速度计对预测值做校正,将磁力计和俯仰角、滚转角彻底解耦,从根本上避免了磁干扰对俯仰角、滚转角的影。为了使本发明提供的估计算法适应高动态环境,使用线性化程度更高的误差状态做更新和校正。将系统真实状态分解成名义状态(nominal-state)和误差状态(error-state),名义状态是大的状态量继承了系统的非线性,但不考虑噪声,如此就不包含不确定度,误差状态是真实状态和名义状态之差,包含了传感器噪声和模型噪声。
[0084]
s11名义状态预测
[0085]
选用从载体坐标系(b系)到导航坐标系(n系)的姿态旋转矩阵的最后一行r作为表达俯仰、滚转角的状态变量,并将陀螺仪的零偏bg也当成状态变量估计。
[0086]
其中,第一层的名义状态向量x1按如下公式表示:
[0087]
x1=[r bg]
ꢀꢀꢀ
(1),
[0088]
公式(1)中,r按如下公式进行计算:
[0089]
r=[-sinθ sinγcosθ cosγcosθ]
ꢀꢀꢀ
(2);
[0090]
状态向量x1的运动方程按如下公式表示:
[0091][0092]
公式(3)中,bφk为[t
k-1
,tk]时间段内的等效旋转矢量,(bφk)
^
为bφk的反对称矩阵,在此处使用等效旋转矢量的目的是:在高动态的环境下载体不满足定轴转动的假设,若直接假设角增量δθk≈δt
·
[bωk×
],则会引入不可交换误差降低姿态角的解算精度,因此,按如下公式引入单子样+前一周期的等效旋转矢量补偿不可交换误差:
[0093][0094]
公式(14)中,φk为等效旋转矢量,δθk为角增量,δθk=δt
·
(bω
m,k-b
g,k-1
)
^
。
[0095]
s12误差状态预测和校正
[0096]
名义状态r和bg的误差状态分别定义为δφ、δbg,其中,误差状态的运动方程如下:
[0097][0098][0099]
将公式(4)按矩阵形式表示为:
[0100][0101]
公式(5)中,f
k-1
是误差状态δx1的状态转移矩阵,按如下公式表示:
[0102][0103]
误差状态的先验协方差的预测方程按如下公式表示:
[0104][0105]
公式(7)中,q为预测方程的过程噪声矩阵;
[0106]
由于陀螺仪中存在零偏,只进行预测会造成姿态漂移,因此此处引入加速度计对预测结果进行校正,观测方程按如下公式表示:
[0107]z1,k
=h1(x
1,k
,vk)
ꢀꢀꢀ
(8),
[0108]
公式(8)中,z
1,k
=am为加速度计测量值,vk为加速度计测量噪声。由于状态变量是选用姿态旋转矩阵的最后一行,所以h1(
·
)是一个线性函数;
[0109]
根据链式求导法则,观测方程关于δx1的雅克比矩阵如下:
[0110][0111]
公式(9)中,h
x1
=[i
3 03],
[0112]
因此,误差状态的后验校正过程按如下公式表示:
[0113][0114][0115][0116]
公式(10)中,r1为观测方程的噪声矩阵,i6为6*6的单位矩阵。
[0117]
s13误差状态的注入和复位
[0118]
将经过加速度计校正后的误差状态按如下公式注入到名义状态中:
[0119][0120][0121]
公式(11)中,exp(δφ)是误差状态到上so(3)的指数映射,其计算公式根据罗德里格斯公式给出,如下:
[0122]
exp(δφ)=i3+u^sinφ+(1-cosφ)(u^)2ꢀꢀꢀ
(12),
[0123]
将误差状态注入到名义状态之后,需要将误差状态清零,具体按如下同时操作:
[0124][0125][0126]
s2第二层姿态估计算法
[0127]
第二层姿态估计算法使用kalman滤波来估计航向角使用磁力计信息校正预测值。
[0128]
s21航向信息解算
[0129]
选用从b系到n系的姿态旋转矩阵的第一列的前两个元素作为表达航向角的状态变量。其中第二层的状态向量x2为:
[0130][0131]
运动方程按如下公式表示:
[0132][0133]
公式(16)中,由和计算出来;
[0134]
状态x2的先验协方差的预测方程如下:
[0135]
[0136]
s22航向信息校正
[0137]
校正过程需要引入磁力计对航向信息进行校正,而磁力计数据并不能直接校正状态x2,因此需将其转换到和状态x2同一量纲,状态x2的后验校正过程按如下公式表示:
[0138][0139][0140][0141]
公式(18)中,
[0142]
s22磁干扰的检测
[0143]
模块磁场倾角是模块检测到的磁场通量线与地球表面之间的夹角,当磁干扰发生时模块磁场倾角会发生改变,但是其角度变化方向不确定,可能增大,也可能减小。磁力计模值可用来度量磁干扰的强度,其变化方向也不能完全确定,一般情况下,磁干扰越强,模值越大。
[0144]
鉴于磁干扰发生的情况非常复杂,为了更精准的度量磁干扰强度,本发明使用模块磁场倾角增量和磁力计模值来评价磁干扰强度,具体评价函数按如下公式表示:
[0145]mlen
=log(||bmm||sin(|dip-dip
ref
|))
ꢀꢀꢀ
(19),
[0146]
公式(19)中,dip
ref
为无磁干扰情况下的模块磁场倾角,dip为加速度计输出矢量和磁力计输出矢量的夹角,按如下公式计算:
[0147][0148]
公式(20)中,am为加速度计的测量值,mm为磁力计的测量值;
[0149]
为了减小磁干扰对航向信息的影响,本发明将磁干扰强度和观测矩阵r2按如下公式关联:
[0150][0151]
公式(21)中,σm为磁力计噪声的标准差,σd为磁干扰的基础标准差。
[0152]
为了验证本发明提供的高动态和磁干扰环境下的姿态估计算法的有效性,选用xsens公司的mti-g-710模块对其进行验证,实验过程中记录传感器模块中加速度计、陀螺仪和磁力计的原始信号,传感器模块采样频率为100hz,之后再将传感器原始信号导入到matlab进行分析和实验。以下通过磁干扰实验、高动态环境实验对本发明提供的姿态估计算法进行验证。
[0153]
1、磁干扰实验
[0154]
首先选用该实验可对本发明提到的使用模块磁场倾角增量和磁场模值相乘再取对数函数度量磁干扰强度的方法进行验证。具体实验方法如下:
[0155]
将模块放置在无磁干扰的环境中并保持静止,然后将一块磁铁由远及近靠近模块再逐渐远离。分别使用模块磁场倾角、磁力计模值、本发明提到的方法去度量磁干扰程度,对比结果如图2所示。
[0156]
由图2可知,在磁干扰实验中,模块磁场倾角没有及时反映磁干扰,而磁场强度出现了先下降而后上升的趋势,只有本发明提供的算法能及时并正确的反映磁干扰,因此本发明提供的方法明显由于前两者。
[0157]
其次验证磁干扰对姿态角的影响,此处先将模块拿到空中做小幅度运动,然后将模块保持静止,再慢慢用磁力靠近,分别运行本文算法、ekf算法、eskf算法,观察姿态角受影响程度,对比结果如图3所示。
[0158]
由图3可知,ekf算法对磁干扰没有抵抗力,不仅航向角受到影响,俯仰、横滚角也受到了影响,而本发明提供的算法和eskf算法则几乎不受磁干扰的影响,且由图3(3)可知,本发明提供的算法在磁铁靠近时抵抗力更优于eskf算法。
[0159]
2、高动态环境实验
[0160]
将模块放置在三轴转台上,控制转台进行高动态运动,将转台输出的平台角度作为真值。使用本发明所提供的算法、ekf算法、eskf算法分别进行姿态估计,并将解算出的姿态角和真值做差。对比结果如图4所示:
[0161]
由图4可知,ekf算法在高动态环境下表现很差,在运动的初期就表现出了巨大的误差;eskf算法和本发明在俯仰、滚转角上误差小于
±2°
,两者相差不大,在航向角上eskf算法虽然在运动初期可以保持良好的精度,但随着高动态环境的持续,航向角出现了10
°
的漂移。
[0162]
综上所述,本发明针对在高动态场景下由于非线性误差过大导致姿态估计算法容易发散和姿态角容易受到磁干扰影响的问题,提供了一种高动态和磁干扰环境下的姿态估计算法,其使用误差状态做更新和校正,利用误差状态是小量的特性,保证线性化一直有效;并使用旋转矩阵的最后一行作为状态变量,进一步降低了系统的非线性,使得本发明提供的算法可以适应高动态环境;通过分层计算,俯仰角、滚转角不使用磁力计校正,彻底规避了磁力计干扰对这两个角度的影响,同时通过综合考虑磁力计模值和模块磁场倾角增量来度量磁干扰程度,并将其和第二层姿态估计算法的观测矩阵关联,使得航向角也能在短时间的磁干扰环境中保持一定的精度。