diff --git a/deps/RTKLIB b/deps/RTKLIB index eac44a45c19ac56c0c031135e9818788b5993005..465a7650663d8ad3274a1565573013648822a4e9 160000 --- a/deps/RTKLIB +++ b/deps/RTKLIB @@ -1 +1 @@ -Subproject commit eac44a45c19ac56c0c031135e9818788b5993005 +Subproject commit 465a7650663d8ad3274a1565573013648822a4e9 diff --git a/include/gnss_utils/ublox_raw.h b/include/gnss_utils/ublox_raw.h index 929ccd8767017382bd520780e62e4c32140be6fb..c3e4cc15180559331f3b0732f4243eb684076b63 100644 --- a/include/gnss_utils/ublox_raw.h +++ b/include/gnss_utils/ublox_raw.h @@ -26,9 +26,9 @@ public: ~UBloxRaw(); RawDataType addDataStream(const std::vector<u_int8_t>& data_stream); - - Observations& getObservations(); - Navigation& getNavigation(); + + const Observations& getObservations(); + const Navigation& getNavigation(); RawDataType getRawDataType() const; @@ -43,12 +43,12 @@ private: void updateObservations(); }; -inline GNSSUtils::Observations& UBloxRaw::getObservations() +inline const GNSSUtils::Observations& UBloxRaw::getObservations() { return obs_; } -inline GNSSUtils::Navigation& UBloxRaw::getNavigation() +inline const GNSSUtils::Navigation& UBloxRaw::getNavigation() { return nav_; } diff --git a/src/gnss_utils.cpp b/src/gnss_utils.cpp index 5e9ee98e3df54e50bd85120818f3bc87ef5776d2..70bad327efe878de41efd6fd2c21d5f7f4e51528 100644 --- a/src/gnss_utils.cpp +++ b/src/gnss_utils.cpp @@ -19,34 +19,38 @@ ComputePosOutput computePos(const GNSSUtils::Observations& _observations, sol_t sol; sol = { { 0 } }; - output.pos_stat = pntpos( - _observations.data(), _observations.size(), &(_navigation.getNavigation()), &_prcopt, &sol, NULL, NULL, msg); - - if (output.pos_stat == 0) - { - std::cout << "computePos: error in computing positioning, message: " << msg << "\n"; - } - - output.time = sol.time.time; - output.sec = sol.time.sec; - output.pos = Eigen::Vector3d(sol.rr); - std::cout << "Compute pos: " << output.pos.transpose() << "\n"; - 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[3], sol.qr[2]; - - // XXX: segmentation fault here. - // if (sol.dtr != NULL) - // { - // output.rcv_bias << sol.dtr[0], sol.dtr[1], sol.dtr[2], sol.dtr[3], sol.dtr[4], sol.dtr[5]; - // } - 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); - - return output; + output.pos_stat = pntpos(_observations.data(), _observations.size(), + &(_navigation.getNavigation()), + &_prcopt, &sol, NULL, NULL, msg); + + if (output.pos_stat == 0) + { + std::cout << "computePos: error in computing positioning, message: " << msg << "\n"; + } + + output.time = sol.time.time; + 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]; + //std::cout << "Compute pos: " << output.pos.transpose() << "\n"; + //std::cout << "Covariance:\n" << output.pos_covar << "\n"; + + // XXX: segmentation fault here. + // if (sol.dtr != NULL) + // { + // output.rcv_bias << sol.dtr[0], sol.dtr[1], sol.dtr[2], sol.dtr[3], sol.dtr[4], sol.dtr[5]; + // } + 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); + + return output; } // ComputePosOutput computePosOwn(const GNSSUtils::Observations & _observations,