ignav中紧组合对INS初始化

具体代码:在源文件ins-init-rt.cc中的insinirtobs函数中(line:148)
对INS初始化,主要是给出载体相对于导航坐标系的初始位置、初始速度和初始姿态信息,
求初始姿态最及求出载体坐标系相对导航坐标系的欧拉角即可
此程序中
认为pitch和roll这两个角都为0,用载体在导航坐标系下的速度矢量求yaw

1.求出合格的RTK定位结果,然后用结果求速度矢量(此时的速度矢量是在e-frame)

先把RTK计算出的结果存在sols里面;
for (i=0;i<MAXSOL-1;i++) sols[i]=sols[i+1]; sols[i]=rtk.sol;
储存满后,检查储存的结果是否符合标准
for (i=0;i<MAXSOL;i++) {
if (sols[i].stat>popt.insopt.iisu||sols[i].stat==SOLQ_NONE) {
trace(2,"check solution status fail ");
return 0;
}
}
popt.insopt.iisu”是配置文件中设定的,作者设置的是2,固定解和浮点解符合标准,自己可以根据自己数据质量具体设置;
ins-iisu           =2          # initial ins state use rtk options (SOLQ_???)#define SOLQ_NONE    0                  /* solution status: no solution */
#define SOLQ_FIX 1 /* solution status: fix */
#define SOLQ_FLOAT 2 /* solution status: float */
#define SOLQ_SBAS 3 /* solution status: SBAS */
#define SOLQ_DGPS 4 /* solution status: DGPS/DGNSS */
#define SOLQ_SINGLE 5 /* solution status: single */
#define SOLQ_PPP 6 /* solution status: PPP */
#define SOLQ_DR 7 /* solution status: dead reconing */
#define SOLQ_DOP 8 /* solution status: doppler measurement aid */
#define SOLQ_INHERIT 9 /* solution status: ambiguity inherit fix status */
如果数据都是固定解,再检查它们的时间间隔有没有超限;

for (i=0;i<MAXSOL-1;i++) {
if (timediff(sols[i+1].time,sols[i].time)>MAXDIFF) {
return 0;
}
}

2.根据位置(GNSS求出的载体位置)求出Cne(n-frame-->e-frame的方向余弦阵) ,把速度矢量转到n-frame
然后yaw = arctan(Ve/Vn)/*Ve:东向速度,Vn:北向速度*/

认为roll、pitch为零,即可求出Cnb(n-frame-->b-frame的方向余弦阵)




原文地址:https://www.cnblogs.com/y-z-h/p/13832493.html