diff --git a/src/modules/ekf2/EKF/estimator_interface.cpp b/src/modules/ekf2/EKF/estimator_interface.cpp index f7a6c70dec..84ced94c80 100644 --- a/src/modules/ekf2/EKF/estimator_interface.cpp +++ b/src/modules/ekf2/EKF/estimator_interface.cpp @@ -568,6 +568,26 @@ bool EstimatorInterface::initialise_interface(uint64_t timestamp) return true; } +Vector3f EstimatorInterface::getPosition() const +{ + LatLonAlt lla = _output_predictor.getLatLonAlt(); + float x; + float y; + + if (_local_origin_lat_lon.isInitialized()) { + _local_origin_lat_lon.project(lla.latitude_deg(), lla.longitude_deg(), x, y); + + } else { + MapProjection zero_ref; + zero_ref.initReference(0.0, 0.0); + zero_ref.project(lla.latitude_deg(), lla.longitude_deg(), x, y); + } + + const float z = -(lla.altitude() - getEkfGlobalOriginAltitude()); + + return Vector3f(x, y, z); +} + bool EstimatorInterface::isOnlyActiveSourceOfHorizontalAiding(const bool aiding_flag) const { return aiding_flag && !isOtherSourceOfHorizontalAidingThan(aiding_flag); diff --git a/src/modules/ekf2/EKF/estimator_interface.h b/src/modules/ekf2/EKF/estimator_interface.h index 5322fe0997..90c26d6083 100644 --- a/src/modules/ekf2/EKF/estimator_interface.h +++ b/src/modules/ekf2/EKF/estimator_interface.h @@ -242,25 +242,7 @@ public: Vector3f getVelocity() const { return _output_predictor.getVelocity(); } const Vector3f &getVelocityDerivative() const { return _output_predictor.getVelocityDerivative(); } float getVerticalPositionDerivative() const { return _output_predictor.getVerticalPositionDerivative(); } - Vector3f getPosition() const - { - LatLonAlt lla = _output_predictor.getLatLonAlt(); - float x; - float y; - - if (_local_origin_lat_lon.isInitialized()) { - _local_origin_lat_lon.project(lla.latitude_deg(), lla.longitude_deg(), x, y); - - } else { - MapProjection zero_ref; - zero_ref.initReference(0.0, 0.0); - zero_ref.project(lla.latitude_deg(), lla.longitude_deg(), x, y); - } - - const float z = -(lla.altitude() - getEkfGlobalOriginAltitude()); - - return Vector3f(x, y, z); - } + Vector3f getPosition() const; LatLonAlt getLatLonAlt() const { return _output_predictor.getLatLonAlt(); } const Vector3f &getOutputTrackingError() const { return _output_predictor.getOutputTrackingError(); }