diff --git a/TC_NAV_Zjut_post/Src/post/ps_tcpos.c b/TC_NAV_Zjut_post/Src/post/ps_tcpos.c index b604a35..f2ef800 100644 --- a/TC_NAV_Zjut_post/Src/post/ps_tcpos.c +++ b/TC_NAV_Zjut_post/Src/post/ps_tcpos.c @@ -474,7 +474,7 @@ static int tcfilter() outsolstat(&svr.rtk,&nav); } /* non-holonomic constraint */ -// nhc(&svr.rtk.ins,&svr.rtk.opt.insopt,&imud); + nhc(&svr.rtk.ins,&svr.rtk.opt.insopt,&imud); // // /* zero velocity/zero angular rate update */ // ecef2pos(svr.rtk.ins.position,pos); diff --git a/TC_NAV_Zjut_post/Src/real_time/nhc.c b/TC_NAV_Zjut_post/Src/real_time/nhc.c index a004dc9..8eb7ed8 100644 --- a/TC_NAV_Zjut_post/Src/real_time/nhc.c +++ b/TC_NAV_Zjut_post/Src/real_time/nhc.c @@ -4,7 +4,7 @@ #include "rtklib.h" #define MAXVEL 0.5 /* max velocity for using non-holonomic constraint */ -#define VARVEL SQR(0.3) /* initial variance of ins velocity ((m/s)^2) */ +#define VARVEL SQR(0.05) /* initial variance of ins velocity ((m/s)^2) */ /* measurement sensitive-matrix for non-holonomic----------------------------*/ static int bldnhc(const insopt_t *opt,const imud_t *imu,const double *Cbe, @@ -44,7 +44,7 @@ static int bldnhc(const insopt_t *opt,const imud_t *imu,const double *Cbe, trace(2,"too large vehicle turn\n"); continue; } - H[IA+nv*nx]=T[i]; H[IA+1+nv*nx]=T[i+3]; H[IA+2+nv*nx]=T[i+6]; + H[IA+nv*nx]=-T[i]; H[IA+1+nv*nx]=-T[i+3]; H[IA+2+nv*nx]=-T[i+6]; H[IV+nv*nx]=C[i]; H[IV+1+nv*nx]=C[i+3]; H[IV+2+nv*nx]=C[i+6]; v[nv ]=vb[i]; @@ -67,8 +67,8 @@ extern int nhc(ins_t *ins,const insopt_t *opt,const imud_t *imu) trace(3,"nhc:\n"); - H=zeros(2,nx); R=zeros(2,2); - v=zeros(2,1); x=zeros(1,nx); + H=zeros(nx,2); R=zeros(2,2); + v=zeros(2,1); x=zeros(nx,1); nv=bldnhc(opt,imu,ins->Cbe,ins->velocity,nx,v,H,R);