发明名称 一种用于低成本小型无人机的姿态航向参考系统
摘要 本发明涉及一种用于低成本小型无人机的姿态航向参考系统,包括角速率陀螺、加速度计、GPS、角速率陀螺运算模块、校正模块和卡尔曼滤波器,其中角速率陀螺测量飞机的滚转角速率、俯仰角速率和偏航角速率;加速度计测量重力在机体坐标轴系下的分量;GPS测量飞机的航迹方位角;角速率陀螺运算模块得到带偏移的滚转角φ<sub>1</sub>、俯仰角θ<sub>1</sub>和偏航角ψ<sub>1</sub>;校正模块得到估计的滚转角φ<sub>2</sub>、俯仰角θ<sub>2</sub>,并将GPS测量得到的航迹方位角作为估计的偏航角ψ<sub>2</sub>;卡尔曼滤波器将角速率陀螺运算模块和校正模块产生的数据进行融合,得到最终的姿态角[φ θ ψ]<sup>T</sup>。本发明降低了小型无人机系统的成本;减小了航向参考系统的复杂程度;提高了航姿估计的精度。
申请公布号 CN102692225B 申请公布日期 2015.03.11
申请号 CN201110072606.2 申请日期 2011.03.24
申请人 北京理工大学 发明人 杜小菁;李蒙;李怀建;涂海峰;郭康
分类号 G01C21/18(2006.01)I 主分类号 G01C21/18(2006.01)I
代理机构 代理人
主权项 一种用于低成本小型无人机的姿态航向参考系统,其特征在于,包括角速率陀螺、加速度计、GPS、角速率陀螺运算模块、校正模块和卡尔曼滤波器,其中:角速率陀螺测量飞机的滚转角速率、俯仰角速率和偏航角速率;加速度计测量重力在机体坐标轴系下的分量;GPS测量飞机的航迹方位角;角速率陀螺运算模块通过角速率陀螺测量的滚转角速率、俯仰角速率和偏航角速率,得到带偏移的滚转角φ<sub>1</sub>、俯仰角θ<sub>1</sub>和偏航角ψ<sub>1</sub>;校正模块通过加速度计测量的重力在机体坐标轴系下的分量得到校正模块估计的滚转角φ<sub>2</sub>、俯仰角θ<sub>2</sub>,并将GPS测量得到的航迹方位角作为估计的偏航角ψ<sub>2</sub>;卡尔曼滤波器将角速率陀螺运算模块和校正模块产生的数据进行融合,得到最终的姿态角[φ θ ψ]<sup>T</sup>;所述角速率陀螺运算模块使用四元数法建模,首先定义姿态四元数q:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>q</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>q</mi><mn>0</mn></msub></mtd></mtr><mtr><mtd><mover><mi>q</mi><mo>&RightArrow;</mo></mover></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000578866300000011.GIF" wi="185" he="156" /></maths>其中q<sub>0</sub>称为四元数q的标量部分,<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mover><mi>q</mi><mo>&RightArrow;</mo></mover><mo>=</mo><msup><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>q</mi><mn>1</mn></msub></mtd><mtd><msub><mi>q</mi><mn>2</mn></msub></mtd><mtd><msub><mi>q</mi><mn>3</mn></msub></mtd></mtr></mtable></mfenced><mi>T</mi></msup></mrow>]]></math><img file="FDA0000578866300000012.GIF" wi="367" he="90" /></maths>称为四元数q的矢量部分,通过角速率陀螺的测量值实时更新四元数:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mover><mi>q</mi><mo>&CenterDot;</mo></mover><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mi>&Omega;</mi><mo>&CenterDot;</mo><mi>q</mi><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mfenced open='[' close=']'><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mo>-</mo><mi>p</mi></mtd><mtd><mo>-</mo><mi>q</mi></mtd><mtd><mo>-</mo><mi>r</mi></mtd></mtr><mtr><mtd><mi>p</mi></mtd><mtd><mn>0</mn></mtd><mtd><mi>r</mi></mtd><mtd><mo>-</mo><mi>q</mi></mtd></mtr><mtr><mtd><mi>q</mi></mtd><mtd><mo>-</mo><mi>r</mi></mtd><mtd><mn>0</mn></mtd><mtd><mi>p</mi></mtd></mtr><mtr><mtd><mi>r</mi></mtd><mtd><mi>q</mi></mtd><mtd><mo>-</mo><mi>p</mi></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>q</mi><mn>0</mn></msub></mtd></mtr><mtr><mtd><msub><mi>q</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>q</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mi>q</mi><mn>3</mn></msub></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000578866300000013.GIF" wi="808" he="308" /></maths>其中,p为滚转角速率,q俯仰角速率,r为偏航角速率;然后通过以下公式得到载体姿态角<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mfenced open='' close=''><mtable><mtr><mtd><msub><mi>&phi;</mi><mn>1</mn></msub><mo>=</mo><mi>arctan</mi><mfrac><mrow><mn>2</mn><mrow><mo>(</mo><msub><mi>q</mi><mn>1</mn></msub><msub><mi>q</mi><mn>3</mn></msub><mo>+</mo><msub><mi>q</mi><mn>0</mn></msub><msub><mi>q</mi><mn>1</mn></msub><mo>)</mo></mrow></mrow><mrow><mn>1</mn><mo>-</mo><mn>2</mn><mrow><mo>(</mo><msubsup><mi>q</mi><mn>1</mn><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>q</mi><mn>2</mn><mn>2</mn></msubsup><mo>)</mo></mrow></mrow></mfrac></mtd></mtr><mtr><mtd><msub><mi>&theta;</mi><mn>1</mn></msub><mo>=</mo><mi>arcsin</mi><mn>2</mn><mrow><mo>(</mo><mo>-</mo><msub><mi>q</mi><mn>1</mn></msub><msub><mi>q</mi><mn>3</mn></msub><mo>+</mo><msub><mi>q</mi><mn>2</mn></msub><msub><mi>q</mi><mn>0</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>&psi;</mi><mn>1</mn></msub><mo>=</mo><mi>arctan</mi><mfrac><mrow><mn>2</mn><mrow><mo>(</mo><msub><mi>q</mi><mn>1</mn></msub><msub><mi>q</mi><mn>2</mn></msub><mo>+</mo><msub><mi>q</mi><mn>3</mn></msub><msub><mi>q</mi><mn>0</mn></msub><mo>)</mo></mrow></mrow><mrow><mn>1</mn><mo>-</mo><mn>2</mn><mrow><mo>(</mo><msubsup><mi>q</mi><mn>2</mn><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>q</mi><mn>3</mn><mn>2</mn></msubsup><mo>)</mo></mrow></mrow></mfrac></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0000578866300000014.GIF" wi="686" he="366" /></maths>所述卡尔曼滤波器工作步骤为:在确定初始条件后,就利用角速率陀螺的测量数据积分,进行姿态估计,这一步骤称为“时间更新”,提供了高带宽的姿态信息;在时间更新阶段,由于陀螺数据存在噪声,使得估计姿态的误差随时间累积,因而不能靠单纯的陀螺数据积分确定姿态,为了抑制陀螺误差,需要引入校正系统对陀螺数据进行周期性的修正,这一步骤称为“量测更新”,状态误差的协方差矩阵以及陀螺漂移估计也在该步骤校正;接下来,进行新一轮的时间更新,如此周期性重复;所述卡尔曼滤波器进行数据融合的具体方法为:第一步:利用角速率陀螺测量数据计算姿态四元数<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msup><mover><mi>q</mi><mover><mo>^</mo><mo>&CenterDot;</mo></mover></mover><mo>-</mo></msup><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mi>&Omega;</mi><mo>&CenterDot;</mo><msup><mover><mi>q</mi><mo>^</mo></mover><mo>-</mo></msup></mrow>]]></math><img file="FDA0000578866300000021.GIF" wi="269" he="128" /></maths>第二步:预测状态误差协方差矩阵P<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><msubsup><mi>P</mi><mi>k</mi><mo>-</mo></msubsup><mo>=</mo><msub><mi>F</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub><msubsup><mi>P</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><mo>+</mo></msubsup><msubsup><mi>F</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><mi>T</mi></msubsup><mo>+</mo><msub><mi>G</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub><msub><mi>Q</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub><msubsup><mi>G</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow><mi>T</mi></msubsup></mrow>]]></math><img file="FDA0000578866300000022.GIF" wi="643" he="78" /></maths>式中,Q<sub>k‑1</sub>为过程噪声协方差矩阵,F和G为雅克比矩阵;第三步:在校正系统中,利用加速度计及GPS,得到由校正系统估计的姿态角信息[φ<sub>2</sub> θ<sub>2</sub> ψ<sub>2</sub>]<sup>T</sup>;第四步:利用上一时间步长估计的系统姿态角信息<maths num="0007" id="cmaths0007"><math><![CDATA[<msup><mfenced open='[' close=']'><mtable><mtr><mtd><mover><mi>&phi;</mi><mo>^</mo></mover></mtd><mtd><mover><mi>&theta;</mi><mo>^</mo></mover></mtd><mtd><mover><mi>&Psi;</mi><mo>^</mo></mover></mtd></mtr></mtable></mfenced><mi>T</mi></msup>]]></math><img file="FDA0000578866300000023.GIF" wi="259" he="114" /></maths>同校正系统得到的姿态角信息作差,得到卡尔曼滤波器的观测量<maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><mi>Z</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mi>&delta;&phi;</mi></mtd></mtr><mtr><mtd><mi>&delta;&theta;</mi></mtd></mtr><mtr><mtd><mi>&delta;&psi;</mi></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>&phi;</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mi>&theta;</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mi>&psi;</mi><mn>2</mn></msub></mtd></mtr></mtable></mfenced><mo>-</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mover><mi>&phi;</mi><mo>^</mo></mover></mtd></mtr><mtr><mtd><mover><mi>&theta;</mi><mo>^</mo></mover></mtd></mtr><mtr><mtd><mover><mi>&psi;</mi><mo>^</mo></mover></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000578866300000024.GIF" wi="483" he="290" /></maths>第五步:计算卡尔曼增益矩阵<maths num="0009" id="cmaths0009"><math><![CDATA[<mrow><msub><mi>K</mi><mi>k</mi></msub><mo>=</mo><msub><mi>P</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub><msubsup><mi>H</mi><mi>k</mi><mi>T</mi></msubsup><msup><mrow><mo>(</mo><msub><mi>H</mi><mi>k</mi></msub><msub><mi>P</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub><msubsup><mi>H</mi><mi>k</mi><mi>T</mi></msubsup><mo>+</mo><msub><mi>R</mi><mi>k</mi></msub><mo>)</mo></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msup></mrow>]]></math><img file="FDA0000578866300000025.GIF" wi="643" he="79" /></maths>式中,R<sub>k</sub>为量测噪声协方差矩阵,H为雅克比矩阵;第六步:更新状态误差协方差矩阵<maths num="0010" id="cmaths0010"><math><![CDATA[<mrow><msubsup><mi>P</mi><mi>k</mi><mo>+</mo></msubsup><mo>=</mo><mrow><mo>(</mo><mi>I</mi><mo>-</mo><msub><mi>K</mi><mi>k</mi></msub><msub><mi>H</mi><mi>k</mi></msub><mo>)</mo></mrow><msubsup><mi>P</mi><mi>k</mi><mo>-</mo></msubsup><msup><mrow><mo>(</mo><mi>I</mi><mo>-</mo><msub><mi>K</mi><mi>k</mi></msub><msub><mi>H</mi><mi>k</mi></msub><mo>)</mo></mrow><mi>T</mi></msup><mo>+</mo><msub><mi>K</mi><mi>k</mi></msub><msub><mi>R</mi><mi>k</mi></msub><msubsup><mi>K</mi><mi>k</mi><mi>T</mi></msubsup></mrow>]]></math><img file="FDA0000578866300000026.GIF" wi="888" he="78" /></maths>第七步:更新状态向量<maths num="0011" id="cmaths0011"><math><![CDATA[<mrow><msubsup><mover><mi>X</mi><mo>^</mo></mover><mi>k</mi><mo>+</mo></msubsup><mo>=</mo><msup><mfenced open='[' close=']'><mtable><mtr><mtd><msubsup><mover><mi>q</mi><mover><mo>&RightArrow;</mo><mo>^</mo></mover></mover><mi>ek</mi><mo>+</mo></msubsup></mtd><mtd><msubsup><mrow><mi>&delta;</mi><mover><mi>b</mi><mo>^</mo></mover></mrow><mi>pk</mi><mo>+</mo></msubsup></mtd><mtd><msubsup><mrow><mi>&delta;</mi><mover><mi>b</mi><mo>^</mo></mover></mrow><mi>qk</mi><mo>+</mo></msubsup></mtd><mtd><msubsup><mrow><mi>&delta;</mi><mover><mi>b</mi><mo>^</mo></mover></mrow><mi>rk</mi><mo>+</mo></msubsup></mtd></mtr></mtable></mfenced><mi>T</mi></msup><mo>=</mo><msub><mi>K</mi><mi>k</mi></msub><msub><mi>Z</mi><mi>k</mi></msub></mrow>]]></math><img file="FDA0000578866300000027.GIF" wi="821" he="114" /></maths>第八步:使用估计的误差四元数<img file="FDA0000578866300000031.GIF" wi="68" he="86" />及陀螺漂移<img file="FDA0000578866300000032.GIF" wi="254" he="90" />和<img file="FDA0000578866300000033.GIF" wi="96" he="85" />修正时间更新步骤中所得姿态四元数<img file="FDA0000578866300000034.GIF" wi="54" he="73" />及角速率陀螺测量值<img file="FDA0000578866300000035.GIF" wi="67" he="73" /><maths num="0012" id="cmaths0012"><math><![CDATA[<mrow><msubsup><mover><mi>q</mi><mo>^</mo></mover><mi>k</mi><mo>+</mo></msubsup><mo>=</mo><msubsup><mover><mi>q</mi><mo>^</mo></mover><mi>k</mi><mo>-</mo></msubsup><mo>&CircleTimes;</mo><msup><mfenced open='[' close=']'><mtable><mtr><mtd><mn>1</mn></mtd><mtd><msubsup><mover><mi>q</mi><mover><mo>&RightArrow;</mo><mo>^</mo></mover></mover><mi>ek</mi><mo>+</mo></msubsup></mtd></mtr></mtable></mfenced><mi>T</mi></msup></mrow>]]></math><img file="FDA0000578866300000036.GIF" wi="407" he="104" /></maths><maths num="0013" id="cmaths0013"><math><![CDATA[<mrow><msubsup><mover><mi>b</mi><mo>^</mo></mover><mi>k</mi><mo>+</mo></msubsup><mo>=</mo><msubsup><mover><mi>b</mi><mo>^</mo></mover><mi>k</mi><mo>-</mo></msubsup><msubsup><mrow><mo>+</mo><mi>&delta;</mi><mover><mi>b</mi><mo>^</mo></mover></mrow><mi>k</mi><mo>+</mo></msubsup></mrow>]]></math><img file="FDA00005788663000000314.GIF" wi="271" he="85" /></maths><maths num="0014" id="cmaths0014"><math><![CDATA[<mrow><msubsup><mover><mi>&omega;</mi><mo>^</mo></mover><mi>k</mi><mo>+</mo></msubsup><mo>=</mo><msubsup><mover><mi>&omega;</mi><mo>^</mo></mover><mi>k</mi><mo>-</mo></msubsup><mo>-</mo><msubsup><mover><mi>b</mi><mo>^</mo></mover><mi>k</mi><mo>+</mo></msubsup></mrow>]]></math><img file="FDA0000578866300000037.GIF" wi="274" he="79" /></maths>第九步:由姿态四元数<img file="FDA0000578866300000038.GIF" wi="60" he="72" />即可计算出姿态角[φ θ ψ]<sup>T</sup>。
地址 100081 北京市海淀区中关村南大街5号