mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-28 19:03:34 +08:00
navigator: loiter: allow without global position
This commit is contained in:
@@ -95,7 +95,6 @@ void getModeRequirements(uint8_t vehicle_type, failsafe_flags_s &flags)
|
|||||||
setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_angular_velocity);
|
setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_angular_velocity);
|
||||||
setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_attitude);
|
setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_attitude);
|
||||||
setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_local_position);
|
setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_local_position);
|
||||||
setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_global_position);
|
|
||||||
setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_local_alt);
|
setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_local_alt);
|
||||||
setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_wind_and_flight_time_compliance);
|
setRequirement(vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER, flags.mode_req_wind_and_flight_time_compliance);
|
||||||
|
|
||||||
|
|||||||
@@ -736,11 +736,20 @@ MissionBlock::setLoiterItemFromCurrentPositionWithBraking(struct mission_item_s
|
|||||||
{
|
{
|
||||||
setLoiterItemCommonFields(item);
|
setLoiterItemCommonFields(item);
|
||||||
|
|
||||||
_navigator->preproject_stop_point(item->lat, item->lon);
|
auto global = _navigator->get_global_position();
|
||||||
|
|
||||||
item->altitude = _navigator->get_global_position()->alt;
|
if (global->lat_lon_valid && global->alt_valid) {
|
||||||
item->loiter_radius = _navigator->get_loiter_radius();
|
_navigator->preproject_stop_point(item->lat, item->lon);
|
||||||
item->yaw = NAN;
|
item->altitude = global->alt;
|
||||||
|
item->loiter_radius = _navigator->get_loiter_radius();
|
||||||
|
item->yaw = NAN;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
item->lat = NAN;
|
||||||
|
item->lon = NAN;
|
||||||
|
item->altitude = NAN;
|
||||||
|
item->loiter_radius = NAN;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user