mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-31 18:47:21 +08:00
fw_pos_control_l1 reset internal takeoff and landing state when arming
This commit is contained in:
committed by
Lorenz Meier
parent
e6f1a2db12
commit
ec3bc4ee5b
@@ -297,12 +297,21 @@ FixedwingPositionControl::parameters_update()
|
|||||||
void
|
void
|
||||||
FixedwingPositionControl::vehicle_control_mode_poll()
|
FixedwingPositionControl::vehicle_control_mode_poll()
|
||||||
{
|
{
|
||||||
bool updated;
|
bool updated = false;
|
||||||
|
|
||||||
orb_check(_control_mode_sub, &updated);
|
orb_check(_control_mode_sub, &updated);
|
||||||
|
|
||||||
if (updated) {
|
if (updated) {
|
||||||
orb_copy(ORB_ID(vehicle_control_mode), _control_mode_sub, &_control_mode);
|
const bool was_armed = _control_mode.flag_armed;
|
||||||
|
|
||||||
|
if (orb_copy(ORB_ID(vehicle_control_mode), _control_mode_sub, &_control_mode) == PX4_OK) {
|
||||||
|
|
||||||
|
// reset state when arming
|
||||||
|
if (!was_armed && _control_mode.flag_armed) {
|
||||||
|
reset_takeoff_state(true);
|
||||||
|
reset_landing_state();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1870,10 +1879,10 @@ FixedwingPositionControl::run()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FixedwingPositionControl::reset_takeoff_state()
|
FixedwingPositionControl::reset_takeoff_state(bool force)
|
||||||
{
|
{
|
||||||
// only reset takeoff if !armed or just landed
|
// only reset takeoff if !armed or just landed
|
||||||
if (!_control_mode.flag_armed || (_was_in_air && _vehicle_land_detected.landed)) {
|
if (!_control_mode.flag_armed || (_was_in_air && _vehicle_land_detected.landed) || force) {
|
||||||
|
|
||||||
_runway_takeoff.reset();
|
_runway_takeoff.reset();
|
||||||
|
|
||||||
|
|||||||
@@ -447,7 +447,7 @@ private:
|
|||||||
*/
|
*/
|
||||||
void handle_command();
|
void handle_command();
|
||||||
|
|
||||||
void reset_takeoff_state();
|
void reset_takeoff_state(bool force = false);
|
||||||
void reset_landing_state();
|
void reset_landing_state();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user