ekf2: perform GNSS checks at delayed-time horizon

- never fuse a measurement that is not passing the checks
- cleanup and simplify GNSS vel/pos control logic
This commit is contained in:
bresch
2023-12-18 18:11:20 +01:00
committed by Mathieu Bresciani
parent b0566cd8aa
commit a653073d4f
15 changed files with 371 additions and 419 deletions
+6 -6
View File
@@ -51,13 +51,13 @@ public:
Gps(std::shared_ptr<Ekf> ekf);
~Gps();
void setData(const gpsMessage &gps);
void setData(const gnssSample &gps);
void stepHeightByMeters(const float hgt_change);
void stepHorizontalPositionByMeters(const Vector2f hpos_change);
void setPositionRateNED(const Vector3f &rate);
void setAltitude(const int32_t alt);
void setLatitude(const int32_t lat);
void setLongitude(const int32_t lon);
void setAltitude(const float alt);
void setLatitude(const double lat);
void setLongitude(const double lon);
void setVelocity(const Vector3f &vel);
void setYaw(const float yaw);
void setYawOffset(const float yaw);
@@ -65,12 +65,12 @@ public:
void setNumberOfSatellites(const int num_satellites);
void setPdop(const float pdop);
gpsMessage getDefaultGpsData();
gnssSample getDefaultGpsData();
private:
void send(uint64_t time) override;
gpsMessage _gps_data{};
gnssSample _gps_data{};
Vector3f _gps_pos_rate{};
};