PSINS初始对准方法

该文章已生成可运行项目,

初始对准方法

初始对准方法较多,适用环境不同:
alignsb:解析式对准,适用于静基座或微晃动环境;
aligni0:惯性凝固系初始对准(间接对准),抗角晃动干扰能力强(同上);
aligncmps:罗经法精对准(基本不用了);
alignfn/vn:以比力/速度误差为观测量的Kalman滤波精对准;
aligni0vn:基于数据复用技术,惯性系粗+速度量测Kalman滤波精对准(地球人都知道的最好的初始对准方法);
还有一些示例函数:
test_align_ekf:大方位失准角EKF滤波初始对准仿真(当方位角很大,两个水平角很小时);
test_align_ukf:大失准角EKF滤波初始对准(当三个角都很大时);
test_align_two_position:双位置对准(在0位置惯导停一段时间,旋转180度(增加或减少),在对面的角位置又停了相同时间);
test_align_rotation:单轴旋转对准;
test_align_transfer:速度+姿态匹配传递对准;
test_align_methods_compare/lgimu几种对准方法比较仿真/实测数据。

惯性系粗对准+数据存储+Kalman滤波精对准例子

aligni0vn函数代码如下:

function att1 = aligni0vn(imu, pos, t1)
% SINS initial align based on inertial-frame & vn-meas method.
%
% Prototype: att0 = aligni0(imu, pos, t1)
% Inputs: imu - IMU data
%         pos - position
%         t1 - inertial-frame align time
% Output: att1 - attitude align result
%
% Example:
%     glvs;
%     [imu, avp0, ts] = imufile('lasergyro.imu');
%     att = aligni0vn(imu(1:300/ts,:), avp0(7:9)', 180);
%
% See also  aligni0, alignvn.

% Copyright(c) 2009-2020, by Gongmin Yan, All rights reserved.
% Northwestern Polytechnical University, Xi An, P.R.China
% 23/11/2020
global glv
    ts = imu(2,end)-imu(1,end);
    if nargin<3, t1 = 30; end
    if(length(pos)>4) pos=pos(4:6); end
    imu1 = imu(1:fix(min(imu(end,end)-imu(1,end),t1)/ts),:);
    [att0, res0] = aligni0(imu1, pos, ts);  % coarse align
    [att0, iatt] = attrvs(imu1, att0, pos);  % reverse attitude update
	phi = [1.1; 1.1; 10]*glv.deg;
	imuerr = imuerrset(0.002, 20, 0.001, 10);
	wvn = [0.01; 0.01; 0.01]*10;
	[att1, attk] = alignvn(imu, a2qua(att0), pos, phi, imuerr, wvn);  % fine align
    insplot(attk,'a');
    subplot(211), plot(res0.attk(:,end), res0.attk(:,1:2)/glv.deg, 'm');
    subplot(212), plot(res0.attk(:,end), res0.attk(:,3)/glv.deg, 'm');
    subplot(212), plot(iatt(:,end), iatt(:,3)/glv.deg, ':r', 'linewidth',2); legend('KF fine yaw', 'i0 coarse yaw', 'reverse yaw');
    for k=1:2  % reverse & fine iteration
        [att0, iatt] = attrvs(imu, attk(end,1:3)', pos);
        subplot(212), plot(iatt(:,end), iatt(:,3)/glv.deg, ':r', 'linewidth',2);
        phi = [0.1; 0.1; 1]/k*glv.deg;
        [att1, attk] = alignvn(imu, a2qua(att0), pos, phi, imuerr, wvn);  close(clf);
        subplot(211), plot(attk(:,end), attk(:,1:2)/glv.deg, 'linewidth',k+1);
        subplot(212), plot(attk(:,end), attk(:,3)/glv.deg, 'linewidth',k+1);
    end


示例结果如下:
在这里插入图片描述
上图为姿态/方位角收敛过程
在这里插入图片描述
在这里插入图片描述
上述对准表示对准到180s,惯性系粗对准可以得到初始时刻姿态,然后后面利用卡尔曼滤波进行对准
输入的参数为:
imu - IMU data,IMU数据
pos - position,初始位置信息
t1 - inertial-frame align time,惯性系粗对准时间

大方位失准角线性Kalman滤波与EKF滤波初始对准比较

打开例子所在文件demos\test_align_ekf.m,并运行:
在这里插入图片描述
上图为状态估计误差比较

大失准角UKF滤波初始对准

打开例子所在文件demos\test_align_ukf.m,并运行:
在这里插入图片描述
上图为状态估计及其均方误差

经验

1)通常水平失准角估计速度比较快,而方位失准角慢,采用遗忘滤波算法有利于避免状态估计方差阵和增益矩阵的退化,提高方位收敛速度;
2)滤波过程中当失准角降低至比较小时,从大失准角UKF滤波方式转到小失准角Kalman滤波方式能够降低计算量,并且不损失对准精度;
3)对于一般非线性系统,目前还很难从理论上证明UKF滤波的有效性和收敛性,而主要依靠仿真和试验验证。如果在大失准角条件下使用UKF 滤波的主要目的在于迅速辨识粗略失准角的话,在KF滤波模型中就可以不将惯性传感器误差纳入滤波模型,降低维数不仅能能够减小计算量,还有利于减小UKF 滤波发散的机会。

本文章已经生成可运行项目
align/aligncmps.m , 2830 align/alignfn.m , 2902 align/aligni0.m , 3339 align/alignsb.m , 1091 align/alignvn.m , 3267 align/alignWahba.m , 1575 base0/a2caw.m , 638 base0/a2cwa.m , 614 base0/a2mat.m , 704 base0/a2qua.m , 1039 base0/a2qua1.m , 782 base0/aa2mu.m , 1548 base0/aa2phi.m , 1546 base0/aaddmu.m , 1299 base0/askew.m , 577 base0/blh2xyz.m , 999 base0/cros.m , 861 base0/d2r.m , 393 base0/datt2mu.m , 606 base0/dm2r.m , 954 base0/dms2r.m , 1107 base0/dv2atti.m , 1170 base0/iaskew.m , 604 base0/lq2m.m , 577 base0/m2att.m , 551 base0/m2qua.m , 1203 base0/m2rv.m , 1320 base0/m2rv1.m , 1433 base0/m2rv2.m , 956 base0/mnormlz.m , 630 base0/mupdt.m , 1047 base0/p2cne.m , 675 base0/q2att.m , 916 base0/q2att1.m , 1119 base0/q2mat.m , 843 base0/q2rv.m , 643 base0/qaddafa.m , 715 base0/qaddphi.m , 754 base0/qconj.m , 417 base0/qdelafa.m , 671 base0/qdelphi.m , 754 base0/qmul.m , 692 base0/qmulv.m , 1760 base0/qnormlz.m , 416 base0/qq2afa.m , 693 base0/qq2phi.m , 782 base0/qupdt.m , 1119 base0/qupdt2.m , 2337 base0/r2d.m , 393 base0/r2dm.m , 885 base0/r2dms.m , 983 base0/rotv.m , 1198 base0/rq2m.m , 577 base0/rv2m.m , 1139 base0/rv2q.m , 824 base0/sv2atti.m , 1114 base0/vnormlz.m , 404 base0/xyz2blh.m , 1053 base1/altfilt.m , 1554 base1/attsyn.m , 1729 base1/bhsimu.m , 1299 base1/cnscl.m , 2895 base1/cnscl0.m , 2040 base1/conecoef.m , 1373 base1/conedrift.m , 1399 base1/conepolyn.m , 1116 base1/conesimu.m , 1442 base1/conetwospeed.m , 1200 base1/drinit.m , 1063 base1/drupdate.m , 1074 base1/dsins.m , 1185 base1/earth.m , 1484 base1/ethinit.m , 803 base1/ethupdate.m , 2104 base1/fusion.m , 971 base1/gcctrl.m , 1053 base1/gpssimu.m , 2747 base1/imulever.m , 646 base1/imurfu.m , 1998 base1/imurot.m , 621 base1/insextrap.m , 599 base1/insinit.m , 2232 base1/inslever.m , 969 base1/insupdate.m , 2257 base1/invbc.m , 577 base1/la2dpos.m , 901 base1/odsimu.m , 2475 base1/olsins.m , 798 base1/pp2vn
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十八与她

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值