mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-11-15 14:25:00 +00:00
MOD: kf filtering
This commit is contained in:
parent
f734f8ca0c
commit
f5be456f91
@ -1152,13 +1152,14 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_
|
||||
new_vtl_data.rx_dts(1) = pvt_sol.dtr[5] / 1e6; // [ppm] to [s]
|
||||
|
||||
//new_vtl_data.debug_print();
|
||||
vtl_engine.vtl_loop(new_vtl_data);
|
||||
pvt_sol.rr[0]=new_vtl_data.kf_state(0);//rx_p
|
||||
pvt_sol.rr[1]=new_vtl_data.kf_state(1);//rx_p
|
||||
pvt_sol.rr[2]=new_vtl_data.kf_state(2);//rx_p
|
||||
pvt_sol.rr[3]=new_vtl_data.kf_state(3);//rx_v
|
||||
pvt_sol.rr[4]=new_vtl_data.kf_state(4);//rx_v
|
||||
pvt_sol.rr[5]=new_vtl_data.kf_state(5);//rx_v
|
||||
pvt_sol.rr[0]=vtl_engine.vtl_loop(new_vtl_data);
|
||||
|
||||
// pvt_sol.rr[0]=new_vtl_data.rx_p(0);
|
||||
// pvt_sol.rr[1]=new_vtl_data.rx_p(1);
|
||||
// pvt_sol.rr[2]=new_vtl_data.rx_p(2);
|
||||
// pvt_sol.rr[3]=new_vtl_data.rx_v(0);
|
||||
// pvt_sol.rr[4]=new_vtl_data.rx_v(1);
|
||||
// pvt_sol.rr[5]=new_vtl_data.rx_v(2);
|
||||
//new_vtl_data.debug_print();
|
||||
}
|
||||
// compute Ground speed and COG
|
||||
|
@ -44,7 +44,7 @@ void Vtl_Data::init_storage(int n_sats)
|
||||
rx_dts = arma::mat(1, 2);
|
||||
rx_var = arma::vec(1);
|
||||
rx_pvt_var = arma::vec(8);
|
||||
kf_state = arma::vec(8);
|
||||
kf_state = arma::mat(8,1);
|
||||
kf_P = arma::mat(8,8);
|
||||
epoch_tow_s = 0;
|
||||
sample_counter = 0;
|
||||
|
@ -54,9 +54,10 @@ public:
|
||||
arma::mat rx_pvt_var; // Receiver position, velocity and time VARIANCE [m/s]
|
||||
arma::mat rx_dts; // Receiver clock bias and drift [s,s/s]
|
||||
arma::colvec rx_var; // Receiver position and clock error variance [m^2]
|
||||
arma::colvec kf_state; // KF STATE
|
||||
arma::mat kf_P; // KF STATE
|
||||
arma::mat kf_state; // KF STATE
|
||||
arma::mat kf_P; // KF STATE covariance
|
||||
// time handling
|
||||
double PV[6]; // position and Velocity
|
||||
double epoch_tow_s; // current observation RX time [s]
|
||||
uint64_t sample_counter; // current sample counter associated with RX time [samples from start]
|
||||
void debug_print();
|
||||
|
@ -62,7 +62,7 @@ bool Vtl_Engine::vtl_loop(Vtl_Data new_data)
|
||||
counter=counter+1; //uint64_t
|
||||
cout << "counter" << counter;
|
||||
|
||||
if(counter<500){ //
|
||||
if(counter<3000){ //
|
||||
// receiver solution from rtklib_solver
|
||||
kf_x(0)=new_data.rx_p(0);
|
||||
kf_x(1)=new_data.rx_p(1);
|
||||
@ -161,8 +161,8 @@ bool Vtl_Engine::vtl_loop(Vtl_Data new_data)
|
||||
for (int32_t i = 0; i < new_data.sat_number; i++) // Measurement error Covariance Matrix R assembling
|
||||
{
|
||||
// It is diagonal 2*NSatellite x 2*NSatellite (NSat psudorange error;NSat pseudo range rate error)
|
||||
kf_R(i, i) = 0.1; //TODO: fill with real values.
|
||||
kf_R(i+new_data.sat_number, i+new_data.sat_number) = 1.0;
|
||||
kf_R(i, i) = 20.0; //TODO: fill with real values.
|
||||
kf_R(i+new_data.sat_number, i+new_data.sat_number) = 10.0;
|
||||
}
|
||||
|
||||
// Kalman filter update step
|
||||
|
@ -81,11 +81,11 @@ private:
|
||||
arma::mat kf_R; // measurement error covariance matrix
|
||||
arma::mat kf_Q; // system error covariance matrix
|
||||
|
||||
arma::colvec kf_x; // state vector
|
||||
arma::colvec kf_x_pre; // predicted state vector
|
||||
arma::colvec kf_y; // measurement vector
|
||||
arma::colvec kf_yerr; // ERROR measurement vector
|
||||
arma::colvec kf_xerr; // ERROR state vector
|
||||
arma::mat kf_x; // state vector
|
||||
arma::mat kf_x_pre; // predicted state vector
|
||||
arma::mat kf_y; // measurement vector
|
||||
arma::mat kf_yerr; // ERROR measurement vector
|
||||
arma::mat kf_xerr; // ERROR state vector
|
||||
arma::mat kf_K; // Kalman gain matrix
|
||||
|
||||
// Gaussian estimator
|
||||
|
Loading…
Reference in New Issue
Block a user