当前位置:网站首页>Detailed explanation of 19 dimensional integrated navigation module sinsgps in psins (initial assignment part)
Detailed explanation of 19 dimensional integrated navigation module sinsgps in psins (initial assignment part)
2022-07-07 02:48:00 【Python Xiaobai (Xiaohei in the next stage)】
19 Dimensional integrated navigation module sinsgps
Initial assignment part
1.[nn, ts, nts] = nnts(2, diff(imu(1:2,end)));
Used for setting up nn
Number of samples 、ts
The sampling interval and the previous two are multiplied nts
2.if size(gps,2)<=5, gpspos_only=1; pos0=gps(1,1:3)'; else, gpspos_only=0; pos0=gps(1,4:6)'; end
Judge the incoming GPS Whether the data has speed results , Only position ,gpspos_only=1
, And speed ,gpspos_only=0
3.
if ~exist('rk', 'var'),
if gpspos_only==1, rk=poserrset([10,30]);
else, rk=vperrset([0.1;0.3],[10,30]); end
end
The above code block is used to assign the initial variance to the measured value , If there are only position observations , Only position error is needed ; If there are velocity observations , The variance of speed position should be set ; Note that there , The value of position error is entered in meters , The unit of value of speed error is meters per second
4.
if ~exist('dT', 'var'), dT = 0.01; end; if length(dT)==1, dT(2,1)=1; end
if ~exist('lever', 'var'), lever = rep3(1); else, lever=rep3(lever); end; if length(lever)==3, lever(4)=1; end
if ~exist('imuerr', 'var'), imuerr = imuerrset(0.05, 500, 0.001, [10;10;100]); end
if ~exist('davp', 'var'), davp = avperrset([10;300], 1, [10;30]); end
if ~exist('ins', 'var'), ins=100; end
if ~isstruct(ins) % sinsgps(imu, gps, T); T=ins align time
[~, res0] = aligni0(imu(1:fix(ins/ts),:), pos0); imu(1:fix(ins/ts),:)=[];
ins = insinit([res0.attk(1,1:3)'; 0;0;0; pos0], ts); ins.nts=nts;
end
The above code block is to assign initial values to variables that are not provided :dT
Default (0.01,1)s; lever
Default [1;1;1]m; Others, such as default settings ;
most important of all ins
The default is 100, It is used to judge whether to carry out ins
Initialization of
5. ins.lever = lever(1:3); ins.tDelay = dT(1);
Set the lever arm and time delay parameters
6. ins = inslever(ins, -ins.lever); ins.vn = ins.vnL; ins.pos = ins.posL;
Compensation of lever arm error for speed and position
7. psinstypedef(196-gpspos_only*3);
Preparing for the integrated navigation dimension type
8.
kf = [];
kf.Qt = diag([imuerr.web; imuerr.wdb; zeros(3,1); imuerr.sqg; imuerr.sqa; zeros(3,1); 0])^2;
The above code block is the construction of system noise variance matrix .imuerr.web Random walk for angle ;imuerr.wdb Random walk for speed ; imuerr.sqg Is the angular rate random walk correlation deviation ;imuerr.sqa Is the correlation deviation of specific random walk .
9.kf.Rk = diag(rk)^2;
To set the measurement noise matrix .
10. kf.Pxk = diag([davp; imuerr.eb; imuerr.db; lever(1:3)*lever(4); dT(1)*dT(2)]*1.0)^2;
To set the state variance matrix
11. kf.Hk = zeros(length(rk),19);
Set the coefficient matrix for
12. kf = kfinit0(kf, nts);
Initialize the Kalman filter
13.
if exist('Pmin', 'var'),
if sum(Pmin)<=0, kf.pconstrain=0;
else kf.Pmin = Pmin; kf.pconstrain = 1; end
end
kf.adaptive = 1;
if exist('Rmin', 'var'),
if sum(Rmin)<=0, kf.adaptive=0; end
if kf.adaptive==1,
if length(Rmin)==1, kf.Rmin = kf.Rk*Rmin;
else kf.Rmin = diag(Rmin); end
end
end
The above code is to set the lower limit of the limit state variance and the lower limit of the measurement noise matrix of the adaptive filter
14.
if exist('fbstr', 'var'), kf.fbstr=fbstr; end
kf.xtau = [ [1;1;1]; [1;1;1]; [1;1;1]; [1;1;1]; [1;1;1]; [1;1;1]; 1]*1;
The above code is to set relevant parameters
Time synchronization initialization part
imugpssyn(imu(:,end), gps(:,end));
Time synchronization will be introduced in detail in the next article
边栏推荐
- Difference and the difference between array and array structure and linked list
- Google Earth Engine(GEE)——Landsat 全球土地调查 1975年数据集
- 数论 --- 快速幂、快速幂求逆元
- Safety delivery engineer
- The 8 element positioning methods of selenium that you have to know are simple and practical
- Derivative, partial derivative, directional derivative
- Common fitting models and application methods of PCL
- Planning and design of double click hot standby layer 2 network based on ENSP firewall
- leetcode:5. Longest palindrome substring [DP + holding the tail of timeout]
- CDB PDB 用户权限管理
猜你喜欢
Read fast RCNN in one article
The annual salary of general test is 15W, and the annual salary of test and development is 30w+. What is the difference between the two?
Redis入门完整教程:复制原理
What management points should be paid attention to when implementing MES management system
Electrical engineering and automation
Argo workflows source code analysis
Apifox,你的API接口文档卷成这样了吗?
Classify the features of pictures with full connection +softmax
AWS学习笔记(一)
Huitong programming introductory course - 2A breakthrough
随机推荐
QT常见概念-1
Ali yunyili: how does yunyuansheng solve the problem of reducing costs and improving efficiency?
The annual salary of general test is 15W, and the annual salary of test and development is 30w+. What is the difference between the two?
MySQL
LeetCode 77:组合
安全交付工程师
QT common Concepts-1
Electrical engineering and automation
Remember the problem analysis of oom caused by a Jap query
Here comes a white paper to uncover the technology behind Clickhouse, a node with 10000 bytes!
Derivative, partial derivative, directional derivative
Google Earth engine (GEE) -- 1975 dataset of Landsat global land survey
哈希表及完整注释
Oracle中日期的使用方法实例
wireshark安装
运维管理系统有哪些特色
fasterxml ToStringSerializerBase报错
Andrews - multimedia programming
MySQL - common functions - string functions
The panel floating with the mouse in unity can adapt to the size of text content