不可交换(圆锥/划桨)误差补偿
多子样不可交换误差补偿
使用 cnscl(coning-sculling)函数,进行多子样(2-6、单子样+前一周期)误差补偿补偿,调用子方法有:
优化不可交换误差补偿(适用圆锥运动条件);
一般方法不可交换误差补偿(适用多项式运动条件,调用conepolyn);
扩展形式不可交换误差补偿(调用coneuncomp);
高阶误差补偿(调用conehighorder)。
其中 cnscl(coning-sculling)函数内容如下:
function [phim, dvbm, dphim, rotm, scullm] = cnscl(imu, coneoptimal)
% Coning & sculling compensation.
%
% Prototype: [phim, dvbm, dphim, rotm, scullm] = cnscl(imu, coneoptimal)
% Inputs: imu(:,1:3) - gyro angular increments
% imu(:,4:6) - acc velocity increments (may not exist)
% coneoptimal - 0 for optimal coning compensation method,
% 1 for polinomial compensation method.
% 2 single sample+previous sample
% 3 high order coning compensation
% Outputs: phim - rotation vector after coning compensation
% dvbm - velocity increment after rotation & sculling compensation
% dphim - attitude coning error
% rotm - velocity rotation error
% scullm - velocity sculling error
%
% See also cnscl0, conepolyn, scullpolyn, conetwospeed, conecoef,
% insupdate, DR, imuadderr.
% Copyright(c) 2009-2014, by Gongmin Yan, All rights reserved.
% Northwestern Polytechnical University, Xi An, P.R.China
% 07/12/2012, 04/12/2016
global glv
if nargin<2, coneoptimal=0; end
[n, m] = size(imu);
if n>glv.csmax % the maximun subsample number is glv.csmax, if n exceeds, then reshape imu
[imu, n] = imureshape(imu, n, m);
end
%% coning compensation
wm = imu(:,1:3);
if n==1
wmm = wm;
if coneoptimal==2
dphim = 1/12*cros(glv.wm_1,wm); if m<6, glv.wm_1 = wm; end
else
dphim = [0, 0, 0];
end
else
wmm = sum(wm,1);
if coneoptimal==0
cm = glv.cs(n-1,1:n-1)*wm(1:n-1,:);
dphim = cros(cm,wm(n,:));
elseif coneoptimal==1 % else: using polynomial fitting coning compensation method
dphim = conepolyn(wm)

最低0.47元/天 解锁文章
195

被折叠的 条评论
为什么被折叠?



