mirror of https://github.com/ArduPilot/ardupilot
Copter: add land_complete_maybe flag
This commit is contained in:
parent
7f9709300c
commit
5f909f1a73
|
@ -110,6 +110,21 @@ void set_land_complete(bool b)
|
||||||
|
|
||||||
// ---------------------------------------------
|
// ---------------------------------------------
|
||||||
|
|
||||||
|
// set land complete maybe flag
|
||||||
|
void set_land_complete_maybe(bool b)
|
||||||
|
{
|
||||||
|
// if no change, exit immediately
|
||||||
|
if (ap.land_complete_maybe == b)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (b) {
|
||||||
|
Log_Write_Event(DATA_LAND_COMPLETE_MAYBE);
|
||||||
|
}
|
||||||
|
ap.land_complete_maybe = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------
|
||||||
|
|
||||||
void set_pre_arm_check(bool b)
|
void set_pre_arm_check(bool b)
|
||||||
{
|
{
|
||||||
if(ap.pre_arm_check != b) {
|
if(ap.pre_arm_check != b) {
|
||||||
|
|
|
@ -389,6 +389,7 @@ static union {
|
||||||
uint8_t compass_mot : 1; // 15 // true if we are currently performing compassmot calibration
|
uint8_t compass_mot : 1; // 15 // true if we are currently performing compassmot calibration
|
||||||
uint8_t motor_test : 1; // 16 // true if we are currently performing the motors test
|
uint8_t motor_test : 1; // 16 // true if we are currently performing the motors test
|
||||||
uint8_t initialised : 1; // 17 // true once the init_ardupilot function has completed. Extended status to GCS is not sent until this completes
|
uint8_t initialised : 1; // 17 // true once the init_ardupilot function has completed. Extended status to GCS is not sent until this completes
|
||||||
|
uint8_t land_complete_maybe : 1; // 18 // true if we may have landed (less strict version of land_complete)
|
||||||
};
|
};
|
||||||
uint32_t value;
|
uint32_t value;
|
||||||
} ap;
|
} ap;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-
|
/// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
// counter to verify landings
|
// counter to verify landings
|
||||||
static uint16_t land_detector;
|
static uint16_t land_detector = LAND_DETECTOR_TRIGGER; // we assume we are landed
|
||||||
static bool land_with_gps;
|
static bool land_with_gps;
|
||||||
|
|
||||||
static uint32_t land_start_time;
|
static uint32_t land_start_time;
|
||||||
|
@ -192,9 +192,10 @@ static float get_throttle_land()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// land_maybe_complete - return true if we may have landed (used to reset loiter targets during landing)
|
||||||
static bool land_maybe_complete()
|
static bool land_maybe_complete()
|
||||||
{
|
{
|
||||||
return (ap.land_complete || land_detector > LAND_DETECTOR_MAYBE_TRIGGER);
|
return (ap.land_complete || ap.land_complete_maybe);
|
||||||
}
|
}
|
||||||
|
|
||||||
// update_land_detector - checks if we have landed and updates the ap.land_complete flag
|
// update_land_detector - checks if we have landed and updates the ap.land_complete flag
|
||||||
|
@ -210,7 +211,7 @@ static void update_land_detector()
|
||||||
land_detector++;
|
land_detector++;
|
||||||
}else{
|
}else{
|
||||||
set_land_complete(true);
|
set_land_complete(true);
|
||||||
land_detector = 0;
|
land_detector = LAND_DETECTOR_TRIGGER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -221,6 +222,9 @@ static void update_land_detector()
|
||||||
set_land_complete(false);
|
set_land_complete(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set land maybe flag
|
||||||
|
set_land_complete_maybe(land_detector >= LAND_DETECTOR_MAYBE_TRIGGER);
|
||||||
}
|
}
|
||||||
|
|
||||||
// land_do_not_use_GPS - forces land-mode to not use the GPS but instead rely on pilot input for roll and pitch
|
// land_do_not_use_GPS - forces land-mode to not use the GPS but instead rely on pilot input for roll and pitch
|
||||||
|
|
|
@ -275,6 +275,7 @@ enum FlipState {
|
||||||
#define DATA_DISARMED 11
|
#define DATA_DISARMED 11
|
||||||
#define DATA_AUTO_ARMED 15
|
#define DATA_AUTO_ARMED 15
|
||||||
#define DATA_TAKEOFF 16
|
#define DATA_TAKEOFF 16
|
||||||
|
#define DATA_LAND_COMPLETE_MAYBE 17
|
||||||
#define DATA_LAND_COMPLETE 18
|
#define DATA_LAND_COMPLETE 18
|
||||||
#define DATA_NOT_LANDED 28
|
#define DATA_NOT_LANDED 28
|
||||||
#define DATA_LOST_GPS 19
|
#define DATA_LOST_GPS 19
|
||||||
|
|
|
@ -615,6 +615,7 @@ static void init_disarm_motors()
|
||||||
|
|
||||||
// we are not in the air
|
// we are not in the air
|
||||||
set_land_complete(true);
|
set_land_complete(true);
|
||||||
|
set_land_complete_maybe(true);
|
||||||
|
|
||||||
// reset the mission
|
// reset the mission
|
||||||
mission.reset();
|
mission.reset();
|
||||||
|
|
|
@ -325,6 +325,7 @@ static void startup_ground(bool force_gyro_cal)
|
||||||
|
|
||||||
// set landed flag
|
// set landed flag
|
||||||
set_land_complete(true);
|
set_land_complete(true);
|
||||||
|
set_land_complete_maybe(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns true if the GPS is ok and home position is set
|
// returns true if the GPS is ok and home position is set
|
||||||
|
|
Loading…
Reference in New Issue