发明名称 一种基于ESOQPF和UKF主从滤波的微小卫星姿态确定方法
摘要 本发明涉及一种基于ESOQPF和UKF主从滤波的微小卫星姿态确定方法。首先建立微小卫星系统状态空间模型,进行姿态确定滤波初始化;然后以姿态四元数为状态变量,将ESOQPF作为主滤波器估计姿态四元数,将估计出来的四元数转换为相应的姿态角;以陀螺漂移为状态变量,将UKF作为从滤波器估计陀螺漂移。本发明在保证姿态估计精度的同时,从两个方面降低了计算量,缩短了定姿过程。一方面,利用ESOQPF和UKF进行主从滤波,即将姿态四元数与陀螺漂移分开估计;另一方面,ESOQPF估计姿态四元数时将QPF算法与ESOQ2算法相结合,利用QPF算法计算出Davenport矩阵,然后利用ESOQ2算法直接计算出该矩阵最大特征值所对应的特征向量。该方法适用于有陀螺配置模式下,基于矢量观测的微小卫星姿态确定。
申请公布号 CN101982732B 申请公布日期 2012.02.01
申请号 CN201010281990.2 申请日期 2010.09.14
申请人 北京航空航天大学 发明人 崔培玲;张会娟;全伟;房建成;郭雷
分类号 G01C1/00(2006.01)I;G01C21/18(2006.01)I 主分类号 G01C1/00(2006.01)I
代理机构 北京科迪生专利代理有限责任公司 11251 代理人 成金玉
主权项 1.一种基于ESOQPF和UKF主从滤波的微小卫星姿态确定方法,其特征在于包括以下步骤:(1)建立微小卫星系统状态空间模型微小卫星系统状态空间模型包括姿态四元数运动学方程、陀螺数学模型、矢量观测模型;a.姿态四元数运动学方程q<sub>k+1</sub>=Ω(ω<sub>k</sub>)q<sub>k</sub>式中,q<sub>k</sub>和q<sub>k+1</sub>分别为第k时刻和第k+1时刻卫星本体坐标系相对于参考坐标系的姿态四元数,<img file="FSB00000636088800011.GIF" wi="389" he="73" /><img file="FSB00000636088800012.GIF" wi="39" he="49" />和q<sub>4k</sub>分别为四元数的矢量部分和标量部分;ω<sub>k</sub>为第k时刻本体坐标系相对参考坐标系的姿态角速度;假设在采样周期Δt内ω<sub>k</sub>保持不变,则<maths num="0001"><![CDATA[<math><mrow><mi>&Omega;</mi><mrow><mo>(</mo><msub><mi>&omega;</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>=</mo><msub><mfenced open='[' close=']'><mtable><mtr><mtd><mi>cos</mi><mrow><mo>(</mo><mn>0.5</mn><mo>|</mo><mo>|</mo><msub><mi>&omega;</mi><mi>k</mi></msub><mo>|</mo><mo>|</mo><mi>&Delta;t</mi><mo>)</mo></mrow><msub><mi>I</mi><mrow><mn>3</mn><mo>&times;</mo><mn>3</mn></mrow></msub><mo>-</mo><mo>[</mo><msub><mi>&psi;</mi><mi>k</mi></msub><mo>&times;</mo><mo>]</mo></mtd><mtd><msub><mi>&psi;</mi><mi>k</mi></msub></mtd></mtr><mtr><mtd><mo>-</mo><msubsup><mi>&psi;</mi><mi>k</mi><mi>T</mi></msubsup></mtd><mtd><mi>cos</mi><mrow><mo>(</mo><mn>0.5</mn><mo>|</mo><mo>|</mo><msub><mi>&omega;</mi><mi>k</mi></msub><mo>|</mo><mo>|</mo><mi>&Delta;t</mi><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mrow><mn>4</mn><mo>&times;</mo><mn>4</mn></mrow></msub></mrow></math>]]></maths>式中,I<sub>3×3</sub>为3×3的单位阵;<img file="FSB00000636088800014.GIF" wi="497" he="144" />[ψ<sub>k</sub>×]为ψ<sub>k</sub>的反对称矩阵;b.陀螺数学模型<maths num="0002"><![CDATA[<math><mrow><msub><mover><mi>&omega;</mi><mo>~</mo></mover><mi>k</mi></msub><mo>=</mo><msub><mi>&omega;</mi><mi>k</mi></msub><mo>+</mo><msub><mi>&beta;</mi><mi>k</mi></msub><mo>+</mo><msub><mi>&eta;</mi><mrow><mi>v</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>,</mo></mrow></math>]]></maths>β<sub>k+1</sub>=β<sub>k</sub>+η<sub>u,k</sub>式中,<img file="FSB00000636088800016.GIF" wi="47" he="52" />为陀螺的测量输出值;ω<sub>k</sub>为真实的姿态角速度;β<sub>k</sub>和β<sub>k+1</sub>分别为第k时刻和第k+1时刻的陀螺漂移;η<sub>v,k</sub>与η<sub>u,k</sub>是互不相关的零均值高斯白噪声,η<sub>v,k</sub>和η<sub>u,k</sub>的方差分别为σ<sub>v</sub><sup>2</sup>与σ<sub>u</sub><sup>2</sup>;c.矢量观测模型b<sub>k</sub>=A(q<sub>k</sub>)r<sub>k</sub>+δb<sub>k</sub>式中,b<sub>k</sub>为观测矢量;r<sub>k</sub>为参考矢量;δb<sub>k</sub>为测量噪声,且δb<sub>k</sub>服从概率分布<img file="FSB00000636088800017.GIF" wi="98" he="44" /><img file="FSB00000636088800018.GIF" wi="216" he="57" />A(q<sub>k</sub>)为参考坐标系到卫星本体坐标系的姿态转移矩阵;(2)基于步骤(1)建立的系统状态空间模型,进行滤波初始化滤波初始化要基于步骤(1)建立的系统状态空间模型,包括ESOQPF主滤波器初始化和UKF从滤波器初始化两部分;ESOQPF主滤波器的初始化主要是初始化N个粒子及粒子权值;UKF从滤波器的初始化是对陀螺漂移估计值和估计误差方差阵进行初始化;(3)以姿态四元数为状态变量,基于步骤(1)中的四元数运动学方程和矢量观测模型建立主滤波器的状态空间模型,利用ESOQPF主滤波器估计第k时刻的姿态四元数<img file="FSB00000636088800021.GIF" wi="64" he="53" />此外,主滤波器估计第k时刻姿态四元数<img file="FSB00000636088800022.GIF" wi="40" he="53" />时,要利用从滤波器第k-1时刻估计的陀螺漂移<img file="FSB00000636088800023.GIF" wi="97" he="65" />(4)四元数转换为姿态角根据四元数与姿态角之间的关系,将步骤(3)估计出的姿态四元数<img file="FSB00000636088800024.GIF" wi="39" he="53" />转换为姿态四元数对应的姿态角:横滚角<img file="FSB00000636088800025.GIF" wi="65" he="41" />俯仰角θ<sub>k</sub>,偏航角ψ<sub>k</sub>;(5)以陀螺漂移为状态变量,基于步骤(1)中的陀螺漂移数学模型和矢量观测模型建立从滤波器的状态空间模型,利用UKF从滤波器估计第k时刻的陀螺漂移<img file="FSB00000636088800026.GIF" wi="68" he="64" />此外,从滤波器估计第k时刻陀螺漂移<img file="FSB00000636088800027.GIF" wi="44" he="65" />时,要利用主滤波器第k-1时刻估计的姿态四元数<img file="FSB00000636088800028.GIF" wi="89" he="56" />(6)当有新的观测值时,重复步骤(3)~(5)进行姿态确定,得到姿态角估计值和陀螺漂移估计值;所述步骤(3)中ESOQPF主滤波器将QPF算法与ESOQ2算法相结合来估计姿态四元数;ESOQPF主滤波器首先利用QPF算法计算出Davenport矩阵,然后利用ESOQ2算法直接计算出该矩阵的最大特征值,最后计算出最大特征值对应的特征向量,即姿态四元数;具体实现步骤如下:(31)QPF算法计算Davenport矩阵K利用第k-1时刻的四元数粒子q<sub>k-1</sub>(i)、归一化的粒子权值<img file="FSB00000636088800029.GIF" wi="163" he="62" />陀螺漂移估计值<img file="FSB000006360888000210.GIF" wi="72" he="66" />和第k时刻的观测值b<sub>k</sub>计算Davenport矩阵K;a.时间更新根据姿态四元数运动学方程,由第k-1时刻的四元数粒子q<sub>k-1</sub>(i)求各粒子第k时刻的预测值<img file="FSB000006360888000211.GIF" wi="165" he="67" />i=1,...,N;b.测量更新测量更新即粒子权值更新,利用第k-1时刻的归一化的粒子权值<img file="FSB000006360888000212.GIF" wi="131" he="61" />和第k时刻的观测值b<sub>k</sub>计算第k时刻的各粒子权值W<sub>k</sub>(i)为:<maths num="0003"><![CDATA[<math><mrow><msub><mi>W</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>&Proportional;</mo><msub><mi>p</mi><mrow><msub><mi>b</mi><mi>k</mi></msub><mo>|</mo><msub><mi>q</mi><mi>k</mi></msub></mrow></msub><mrow><mo>(</mo><msub><mi>b</mi><mi>k</mi></msub><mo>|</mo><msub><mover><mi>q</mi><mo>^</mo></mover><mrow><mi>k</mi><mo>|</mo><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>)</mo></mrow><msub><mover><mi>W</mi><mo>~</mo></mover><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>p</mi><mrow><mi>&delta;</mi><msub><mi>b</mi><mi>k</mi></msub></mrow></msub><mrow><mo>(</mo><msub><mi>b</mi><mi>k</mi></msub><mo>-</mo><mi>A</mi><mrow><mo>(</mo><msub><mover><mi>q</mi><mo>^</mo></mover><mrow><mi>k</mi><mo>|</mo><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>)</mo></mrow><msub><mi>r</mi><mi>k</mi></msub><mo>)</mo></mrow><msub><mover><mi>W</mi><mo>~</mo></mover><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow></math>]]></maths>式中,i=1,...,N;<img file="FSB00000636088800031.GIF" wi="331" he="85" />为<img file="FSB00000636088800032.GIF" wi="143" he="64" />的似然概率;<img file="FSB00000636088800033.GIF" wi="446" he="65" />为<img file="FSB00000636088800034.GIF" wi="327" he="64" />的概率;将上式各粒子权值W<sub>k</sub>(i)归一化为:<maths num="0004"><![CDATA[<math><mrow><msub><mover><mi>W</mi><mo>~</mo></mover><mi>k</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>W</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>/</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>W</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>i=1,...,Nc.计算Davenport矩阵K<maths num="0005"><![CDATA[<math><mrow><mi>K</mi><mover><mo>=</mo><mi>&Delta;</mi></mover><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>B</mi><mi>k</mi></msub><mo>+</mo><msup><msub><mi>B</mi><mi>k</mi></msub><mi>T</mi></msup><mo>-</mo><msub><mi>I</mi><mrow><mn>3</mn><mo>&times;</mo><mn>3</mn></mrow></msub><mi>tr</mi><mrow><mo>(</mo><msub><mi>B</mi><mi>k</mi></msub><mo>)</mo></mrow></mtd><mtd><mi>z</mi></mtd></mtr><mtr><mtd><msup><mi>z</mi><mi>T</mi></msup></mtd><mtd><mi>tr</mi><mrow><mo>(</mo><msub><mi>B</mi><mi>k</mi></msub><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>其中,<maths num="0006"><![CDATA[<math><mrow><msub><mi>B</mi><mi>k</mi></msub><mover><mo>=</mo><mi>&Delta;</mi></mover><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mover><mi>W</mi><mo>~</mo></mover><mi>k</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mi>A</mi><mrow><mo>(</mo><msub><mover><mi>q</mi><mo>^</mo></mover><mrow><mi>k</mi><mo>|</mo><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0007"><![CDATA[<math><mrow><mi>z</mi><mover><mo>=</mo><mi>&Delta;</mi></mover><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>B</mi><mi>k</mi></msub><mrow><mo>(</mo><mn>3,2</mn><mo>)</mo></mrow><mo>-</mo><msub><mi>B</mi><mi>k</mi></msub><mrow><mo>(</mo><mn>2,3</mn><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>B</mi><mi>k</mi></msub><mrow><mo>(</mo><mn>1,3</mn><mo>)</mo></mrow><mo>-</mo><msub><mi>B</mi><mi>k</mi></msub><mrow><mo>(</mo><mn>3,1</mn><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>B</mi><mi>k</mi></msub><mrow><mo>(</mo><mn>2,1</mn><mo>)</mo></mrow><mo>-</mo><msub><mi>B</mi><mi>k</mi></msub><mrow><mo>(</mo><mn>1,2</mn><mo>)</mo></mrow></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>式中,tr(B<sub>k</sub>)为矩阵B<sub>k</sub>的迹;(32)ESOQ2算法估计姿态四元数<img file="FSB00000636088800039.GIF" wi="39" he="53" />a.求矩阵K的最大特征值λ<sub>max</sub><maths num="0008"><![CDATA[<math><mrow><msub><mi>&lambda;</mi><mi>max</mi></msub><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mrow><mo>(</mo><msqrt><mn>2</mn><msqrt><mi>d</mi></msqrt><mo>-</mo><mi>b</mi></msqrt><mo>+</mo><msqrt><mo>-</mo><mn>2</mn><msqrt><mi>d</mi></msqrt><mo>-</mo><mi>b</mi></msqrt><mo>)</mo></mrow></mrow></math>]]></maths>式中,b=-2tr(B<sub>k</sub>)+tr(adj(B<sub>k</sub>+B<sub>k</sub><sup>T</sup>))-z<sup>T</sup>z;d=det(K);adj(B<sub>k</sub>+B<sub>k</sub><sup>T</sup>)为矩阵(B<sub>k</sub>+B<sub>k</sub><sup>T</sup>)的伴随矩阵;tr(adj(B<sub>k</sub>+B<sub>k</sub><sup>T</sup>))为矩阵adj(B<sub>k</sub>+B<sub>k</sub><sup>T</sup>)的迹;det(K)为矩阵K的行列式;b.求姿态四元数估计值<img file="FSB000006360888000311.GIF" wi="39" he="52" />矩阵K最大特征值λ<sub>max</sub>对应的特征向量<img file="FSB000006360888000312.GIF" wi="39" he="51" />为:<maths num="0009"><![CDATA[<math><mrow><msub><mover><mi>q</mi><mo>~</mo></mover><mi>k</mi></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mrow><mo>(</mo><msub><mi>&lambda;</mi><mi>max</mi></msub><mo>-</mo><mi>tr</mi><mrow><mo>(</mo><msub><mi>B</mi><mi>k</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow><msub><mi>e</mi><mi>k</mi></msub></mtd></mtr><mtr><mtd><msup><mi>z</mi><mi>T</mi></msup><msub><mi>e</mi><mi>k</mi></msub></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>式中,e<sub>k</sub>为四元数<img file="FSB000006360888000314.GIF" wi="40" he="52" />对应的欧拉旋转轴矢量;将<img file="FSB000006360888000315.GIF" wi="40" he="50" />归一化,求得第k时刻姿态四元数估计值<img file="FSB000006360888000316.GIF" wi="40" he="54" />为:<maths num="0010"><![CDATA[<math><mrow><msub><mover><mi>q</mi><mo>^</mo></mover><mi>k</mi></msub><mo>=</mo><msub><mover><mi>q</mi><mo>~</mo></mover><mi>k</mi></msub><mo>/</mo><msqrt><msup><msub><mover><mi>q</mi><mo>~</mo></mover><mi>k</mi></msub><mi>T</mi></msup><msub><mover><mi>q</mi><mo>~</mo></mover><mi>k</mi></msub></msqrt></mrow></math>]]></maths>估计出的姿态四元数将在步骤(4)转换为姿态四元数对应的姿态角。
地址 100191 北京市海淀区学院路37号