mirror of https://github.com/ArduPilot/ardupilot
AP_Terrain: added location_to_relative_home() function
This commit is contained in:
parent
8a48f06d18
commit
e2e41d5da7
|
@ -219,9 +219,36 @@ bool AP_Terrain::height_relative_home_equivalent(const Location &loc, float terr
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
convert a Location altitude to a relative-to-home altitude in meters
|
||||||
|
This obeys the relative_alt and terrain_alt flags in Location.flags
|
||||||
|
*/
|
||||||
|
bool AP_Terrain::location_to_relative_home(const Location &loc, float &relative_altitude)
|
||||||
|
{
|
||||||
|
if (!loc.flags.terrain_alt) {
|
||||||
|
// its not a terrain alt
|
||||||
|
relative_altitude = loc.alt*0.01f;
|
||||||
|
if (!loc.flags.relative_alt) {
|
||||||
|
relative_altitude -= ahrs.get_home().alt*0.01f;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!height_relative_home_equivalent(loc, loc.alt*0.01f, relative_altitude)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if terrain_alt is set and relative_alt is not set then Location
|
||||||
|
// is still offset by home alt
|
||||||
|
if (!loc.flags.relative_alt) {
|
||||||
|
relative_altitude -= ahrs.get_home().alt*0.01f;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
1Hz update function. This is here to ensure progress is made on disk
|
1hz update function. This is here to ensure progress is made on disk
|
||||||
IO even if no MAVLink send_request() operations are called for a
|
IO even if no MAVLink send_request() operations are called for a
|
||||||
while.
|
while.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -141,6 +141,12 @@ public:
|
||||||
*/
|
*/
|
||||||
bool height_above_terrain(const Location &loc, float &terrain_altitude);
|
bool height_above_terrain(const Location &loc, float &terrain_altitude);
|
||||||
|
|
||||||
|
/*
|
||||||
|
convert a Location altitude to a relative-to-home altitude in meters
|
||||||
|
This obeys the relative_alt and terrain_alt flags in Location.flags
|
||||||
|
*/
|
||||||
|
bool location_to_relative_home(const Location &loc, float &relative_altitude);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// allocate the terrain subsystem data
|
// allocate the terrain subsystem data
|
||||||
void allocate(void);
|
void allocate(void);
|
||||||
|
|
Loading…
Reference in New Issue