mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-18 04:27:34 +08:00
sensor_simulator: add possibility to set GPS position rate
one can set the position rate = velocity to obtain consistent gps data
This commit is contained in:
committed by
Mathieu Bresciani
parent
b3dc06d0cb
commit
5d6a72e383
@@ -15,7 +15,17 @@ Gps::~Gps()
|
|||||||
|
|
||||||
void Gps::send(uint64_t time)
|
void Gps::send(uint64_t time)
|
||||||
{
|
{
|
||||||
|
const float dt = static_cast<float>(time - _gps_data.time_usec) * 1e-6f;
|
||||||
|
|
||||||
_gps_data.time_usec = time;
|
_gps_data.time_usec = time;
|
||||||
|
|
||||||
|
if (fabsf(_gps_pos_rate(0)) > FLT_EPSILON || fabsf(_gps_pos_rate(1)) > FLT_EPSILON) {
|
||||||
|
stepHorizontalPositionByMeters(Vector2f(_gps_pos_rate) * dt);
|
||||||
|
}
|
||||||
|
if (fabsf(_gps_pos_rate(2)) > FLT_EPSILON) {
|
||||||
|
stepHeightByMeters(-_gps_pos_rate(2) * dt);
|
||||||
|
}
|
||||||
|
|
||||||
_ekf->setGpsData(_gps_data);
|
_ekf->setGpsData(_gps_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +95,6 @@ void Gps::stepHorizontalPositionByMeters(Vector2f hpos_change)
|
|||||||
_gps_data.lat = static_cast<int32_t>(lat_new * 1e7);
|
_gps_data.lat = static_cast<int32_t>(lat_new * 1e7);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
gps_message Gps::getDefaultGpsData()
|
gps_message Gps::getDefaultGpsData()
|
||||||
{
|
{
|
||||||
gps_message gps_data{};
|
gps_message gps_data{};
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ public:
|
|||||||
void setData(const gps_message& gps);
|
void setData(const gps_message& gps);
|
||||||
void stepHeightByMeters(float hgt_change);
|
void stepHeightByMeters(float hgt_change);
|
||||||
void stepHorizontalPositionByMeters(Vector2f hpos_change);
|
void stepHorizontalPositionByMeters(Vector2f hpos_change);
|
||||||
|
void setPositionRateNED(const Vector3f& rate) { _gps_pos_rate = rate; }
|
||||||
void setAltitude(int32_t alt);
|
void setAltitude(int32_t alt);
|
||||||
void setLatitude(int32_t lat);
|
void setLatitude(int32_t lat);
|
||||||
void setLongitude(int32_t lon);
|
void setLongitude(int32_t lon);
|
||||||
@@ -66,6 +67,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
gps_message _gps_data;
|
gps_message _gps_data;
|
||||||
|
Vector3f _gps_pos_rate{};
|
||||||
|
|
||||||
void send(uint64_t time) override;
|
void send(uint64_t time) override;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user