mirror of https://github.com/ArduPilot/ardupilot
AP_NavEKF3: fixed EKF3 origin alt inconsistency
always use common origin, and adjust output posD for difference between public and local lane origin heights
This commit is contained in:
parent
0210d7c60c
commit
17d9018a91
|
@ -1375,6 +1375,10 @@ bool NavEKF3::getOriginLLH(struct Location &loc) const
|
|||
if (!core) {
|
||||
return false;
|
||||
}
|
||||
if (common_origin_valid) {
|
||||
loc = common_EKF_origin;
|
||||
return true;
|
||||
}
|
||||
return core[primary].getOriginLLH(loc);
|
||||
}
|
||||
|
||||
|
|
|
@ -268,6 +268,12 @@ bool NavEKF3_core::getPosD(float &posD) const
|
|||
posD = outputDataNew.position.z + posOffsetNED.z + 0.01f * (float)EKF_origin.alt - (float)ekfGpsRefHgt;
|
||||
}
|
||||
|
||||
// adjust posD for difference between our origin and the public_origin
|
||||
Location local_origin;
|
||||
if (getOriginLLH(local_origin)) {
|
||||
posD += (public_origin.alt - local_origin.alt) * 0.01;
|
||||
}
|
||||
|
||||
// Return the current height solution status
|
||||
return filterStatus.flags.vert_pos;
|
||||
|
||||
|
|
Loading…
Reference in New Issue