mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +08:00
fix(navigator): fix alt setpoint after home-alt reset (#26662)
fix(navigator): skip mission alt update for non-position items
This commit is contained in:
parent
3aa499dfce
commit
3e396f65e5
@ -1460,25 +1460,26 @@ bool MissionBase::canRunMissionFeasibility()
|
||||
void MissionBase::updateMissionAltAfterHomeChanged()
|
||||
{
|
||||
if (_navigator->get_home_position()->update_count > _home_update_counter) {
|
||||
float new_alt = get_absolute_altitude_for_item(_mission_item);
|
||||
float altitude_diff = new_alt - _navigator->get_position_setpoint_triplet()->current.alt;
|
||||
|
||||
if (_navigator->get_position_setpoint_triplet()->previous.valid
|
||||
&& PX4_ISFINITE(_navigator->get_position_setpoint_triplet()->previous.alt)) {
|
||||
_navigator->get_position_setpoint_triplet()->previous.alt = _navigator->get_position_setpoint_triplet()->previous.alt +
|
||||
altitude_diff;
|
||||
if (item_contains_position(_mission_item)) {
|
||||
const float new_alt = get_absolute_altitude_for_item(_mission_item);
|
||||
const float altitude_diff = new_alt - _navigator->get_position_setpoint_triplet()->current.alt;
|
||||
|
||||
if (_navigator->get_position_setpoint_triplet()->previous.valid
|
||||
&& PX4_ISFINITE(_navigator->get_position_setpoint_triplet()->previous.alt)) {
|
||||
_navigator->get_position_setpoint_triplet()->previous.alt += altitude_diff;
|
||||
}
|
||||
|
||||
_navigator->get_position_setpoint_triplet()->current.alt += altitude_diff;
|
||||
|
||||
if (_navigator->get_position_setpoint_triplet()->next.valid
|
||||
&& PX4_ISFINITE(_navigator->get_position_setpoint_triplet()->next.alt)) {
|
||||
_navigator->get_position_setpoint_triplet()->next.alt += altitude_diff;
|
||||
}
|
||||
|
||||
_navigator->set_position_setpoint_triplet_updated();
|
||||
}
|
||||
|
||||
_navigator->get_position_setpoint_triplet()->current.alt = _navigator->get_position_setpoint_triplet()->current.alt +
|
||||
altitude_diff;
|
||||
|
||||
if (_navigator->get_position_setpoint_triplet()->next.valid
|
||||
&& PX4_ISFINITE(_navigator->get_position_setpoint_triplet()->next.alt)) {
|
||||
_navigator->get_position_setpoint_triplet()->next.alt = _navigator->get_position_setpoint_triplet()->next.alt +
|
||||
altitude_diff;
|
||||
}
|
||||
|
||||
_navigator->set_position_setpoint_triplet_updated();
|
||||
_home_update_counter = _navigator->get_home_position()->update_count;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user