Skip to content
Snippets Groups Projects
Commit e3b7e712 authored by Joan Vallvé Navarro's avatar Joan Vallvé Navarro
Browse files

ouptut covariance on clock bias

parent 03207e00
No related branches found
No related tags found
No related merge requests found
Pipeline #14397 failed
......@@ -52,16 +52,16 @@ struct ComputePosOutput
{
time_t time;
double sec;
Eigen::Vector3d pos; // position (m)
Eigen::Vector3d vel; // velocity (m/s)
Eigen::Matrix3d pos_covar; // position covariance (m^2)
// {c_xx,c_yy,c_zz,c_xy,c_yz,c_zx}
Eigen::VectorXd rcv_bias; // receiver clock bias to time systems (s) 0: receiver clock bias (s), 1: glo-gps time offset (s), 2: gal-gps time offset (s), 3: bds-gps time offset (s)
int type; // coordinates used (0:xyz-ecef,1:enu-baseline)
int stat; // solution status (SOLQ_???)
int ns; // number of valid satellites
double age; // age of differential (s)
double ratio; // AR ratio factor for valiation
Eigen::Vector3d pos; // position (m)
Eigen::Vector3d vel; // velocity (m/s)
Eigen::Matrix4d sol_cov; // solution covariance [x, y, z, dt] (m², s²)
Eigen::Vector4d rcv_bias; // receiver clock bias to time systems (s) 0: receiver clock bias (s), 1: glo-gps time offset (s), 2: gal-gps time offset (s), 3: bds-gps time offset (s)
Eigen::Vector4d rcv_bias_var; // receiver clock bias variances 0: receiver clock bias (s), 1: glo-gps time offset (s), 2: gal-gps time offset (s), 3: bds-gps time offset (s)
int type; // coordinates used (0:xyz-ecef,1:enu-baseline)
int stat; // solution status (SOLQ_???)
int ns; // number of valid satellites
double age; // age of differential (s)
double ratio; // AR ratio factor for valiation
bool success; // return from pntpos true/false
std::string msg; // message returned (in case of error)
......
......@@ -72,20 +72,21 @@ ComputePosOutput computePos(const GnssUtils::Observations& _observations,
output.sec = sol.time.sec;
output.pos = Eigen::Vector3d(sol.rr);
output.vel = Eigen::Vector3d(&sol.rr[3]);
output.pos_covar << sol.qr[0], sol.qr[3], sol.qr[5], sol.qr[3], sol.qr[1], sol.qr[4], sol.qr[5], sol.qr[4], sol.qr[2];
output.sol_cov << sol.qr[0], sol.qr[3], sol.qr[5], sol.qdtr[4],
sol.qr[3], sol.qr[1], sol.qr[4], sol.qdtr[5],
sol.qr[5], sol.qr[4], sol.qr[2], sol.qdtr[6],
sol.qdtr[4], sol.qdtr[5], sol.qdtr[6], sol.qdtr[0];
// std::cout << "Compute pos: " << output.pos.transpose() << "\n";
// std::cout << "Covariance:\n" << output.pos_covar << "\n";
if (sol.dtr != NULL)
output.rcv_bias =
(Eigen::Matrix<double, 6, 1>() << sol.dtr[0], sol.dtr[1], sol.dtr[2], sol.dtr[3], sol.dtr[4], sol.dtr[5])
.finished();
output.type = sol.type;
output.stat = sol.stat;
output.ns = sol.ns;
output.age = sol.age;
output.ratio = sol.ratio;
output.lat_lon = ecefToLatLonAlt(output.pos);
output.rcv_bias = Eigen::Vector4d(sol.dtr); // all 4 elements
output.rcv_bias_var << sol.qdtr[0], sol.qdtr[1], sol.qdtr[2], sol.qdtr[3]; // cannot use constructor from reference because it is float)
output.type = sol.type;
output.stat = sol.stat;
output.ns = sol.ns;
output.age = sol.age;
output.ratio = sol.ratio;
output.lat_lon = ecefToLatLonAlt(output.pos);
for (auto i = 0; i < _observations.size(); i++)
output.sat_azel.emplace(_observations.getObservationByIdx(i).sat,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment