发明名称 一种卫星导航系统中基于卡尔曼滤波的RAIM算法
摘要 本发明公开了一种卫星导航中基于卡尔曼滤波的RAIM算法。该方法根据导航电文计算卫星位置、速度。接收机根据遮蔽角,剔除低仰角卫星,同时求得测量关系矩阵。根据GDOP值,选择解算卫星。首次解算时利用最小二乘法估计接收机的位置速度信息后,切换至卡尔曼滤波,同时卡尔曼滤波架构下的RAIM算法开始工作。若发现故障,接收机进行局部检测,并将故障卫星隔离。待故障卫星隔离之后,利用最小二乘法的定位结果重置卡尔曼滤波器,系统再次进入卡尔曼滤波和监测工作状态。该发明将RAIM算法运用到卡尔曼滤波中,增加了卡尔曼滤波定位的连续性、稳定性和鲁棒性,同时最小二乘法和卡尔曼滤波相结合,互相补充,充分发挥了二者的优势。
申请公布号 CN105487088A 申请公布日期 2016.04.13
申请号 CN201510580633.9 申请日期 2015.09.12
申请人 北京大学 发明人 孙俊忍;谭思远;朱柏承
分类号 G01S19/20(2010.01)I 主分类号 G01S19/20(2010.01)I
代理机构 代理人
主权项 卫星定位导航联合RAIM算法,具体的实施步骤如下:第一步:提取卫星的信息根据导航电文得到卫星的轨道参数,计算出卫星的位置,同时从接收机的位置计算出卫星的高度角、方位角,剔除低仰角卫星。第二步:确定测量关系矩阵将剔除低仰角卫星和错误数据卫星后的卫星数据与系统的状态向量之间建立关系矩阵,并建立观测方程。第三步:依次选取若干颗卫星,计算它们的几何精度因子(GDOP)值,GDOP计算公式为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>G</mi><mi>D</mi><mi>O</mi><mi>P</mi><mo>=</mo><msqrt><mrow><mi>t</mi><mi>r</mi><mi>a</mi><mi>c</mi><mi>e</mi><mrow><mo>(</mo><msup><mrow><mo>(</mo><mrow><msup><mi>G</mi><mi>T</mi></msup><mi>G</mi></mrow><mo>)</mo></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>)</mo></mrow></mrow></msqrt></mrow>]]></math><img file="FDA0000801399510000011.GIF" wi="538" he="94" /></maths>其中,G是卫星观测矩阵,trace是矩阵的求迹运算。从P颗卫星中选取N颗,共需要计算<img file="FDA0000801399510000012.GIF" wi="73" he="78" />次,选取GDOP值最小的一组,相应的卫星作为解算卫星。第四步:利用最小二乘法估计接收机的首次位置速度信息采用牛顿迭代法,每次迭代的增量为:Δx=(G<sup>T</sup>G)<sup>‑1</sup>G<sup>T</sup>b其中,b矢量代表伪距残余。第五步:切换到卡尔曼滤波方法实时估计位置,速度信息初始化卡尔曼滤波器的参数,用最小二乘法的解给卡尔曼滤波器赋予初值,卡尔曼滤波器给出定位结果。第六步:启动RAIM算法进行全局故障的检测在卡尔曼滤波中,观测量残余定义为:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>b</mi><mo>=</mo><msub><mi>y</mi><mi>k</mi></msub><mo>-</mo><mi>C</mi><msubsup><mover><mi>x</mi><mo>^</mo></mover><mi>k</mi><mo>-</mo></msubsup></mrow>]]></math><img file="FDA0000801399510000013.GIF" wi="262" he="78" /></maths>检测量T:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>T</mi><mo>=</mo><msup><mi>b</mi><mi>T</mi></msup><msup><mrow><mo>(</mo><msubsup><mi>CP</mi><mi>k</mi><mo>-</mo></msubsup><msup><mi>C</mi><mi>T</mi></msup><mo>+</mo><mi>R</mi><mo>)</mo></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msup><mi>b</mi></mrow>]]></math><img file="FDA0000801399510000014.GIF" wi="470" he="77" /></maths>服从卡方分布,自由度n为接收到正确数据卫星的个数。设置虚警率P<sub>fa</sub>,可得检测的门限为<img file="FDA0000801399510000015.GIF" wi="413" he="95" />如果T没有超过门限值,说明定位结果可靠,跳至第三步进行下一历元的解算。如果T超过了门限值,则进行下一步局部检测。第七步:监测算法报告故障后,启动局部检测算法,进行故障的识别与隔离令<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mi>S</mi><mo>=</mo><msup><mrow><mo>(</mo><msubsup><mi>CP</mi><mi>k</mi><mo>-</mo></msubsup><msup><mi>C</mi><mi>T</mi></msup><mo>+</mo><mi>R</mi><mo>)</mo></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>,</mo></mrow>]]></math><img file="FDA0000801399510000023.GIF" wi="399" he="87" /></maths>那么标志量:<img file="FDA0000801399510000021.GIF" wi="309" he="150" />作为故障识别量,一个定位时刻中标志量<img file="FDA0000801399510000022.GIF" wi="94" he="71" />最大的第i颗卫星,发生了故障。其中,e<sub>i</sub>是单位矩阵的第i列。将数据出错的卫星数据从数据阵列中剔除,重新整合数据矩阵。第八步:判断最小二乘法的可用性,利用最小二乘法的解重置卡尔曼滤波器若卫星数目小于4,则无法实现定位,警告卫星的数目不足。卫星数目大于等于4时,用最小二乘法进行定位解算,得到定位结果,并将这一结果赋值给重置的卡尔曼滤波器,使卡尔曼滤波器能够快速收敛,得到稳定的定位结果。重置过程中,需要重新计算测量关系矩阵。
地址 100871 北京市海淀区颐和园路5号