Copter: auto mode starts or updates mission from run method
This commit is contained in:
parent
06a7086562
commit
1c350514ca
@ -394,7 +394,6 @@ protected:
|
||||
int32_t wp_bearing() const override;
|
||||
float crosstrack_error() const override { return wp_nav->crosstrack_error();}
|
||||
bool get_wp(Location &loc) override;
|
||||
void run_autopilot() override;
|
||||
|
||||
private:
|
||||
|
||||
@ -517,7 +516,7 @@ private:
|
||||
float descend_max; // centimetres
|
||||
} nav_payload_place;
|
||||
|
||||
bool waiting_for_origin; // true if waiting for origin before starting mission
|
||||
bool waiting_to_start; // true if waiting for vehicle to be armed or EKF origin before starting mission
|
||||
};
|
||||
|
||||
#if AUTOTUNE_ENABLED == ENABLED
|
||||
|
@ -40,19 +40,12 @@ bool ModeAuto::init(bool ignore_checks)
|
||||
// initialise waypoint and spline controller
|
||||
wp_nav->wp_and_spline_init();
|
||||
|
||||
// set flag to start mission
|
||||
waiting_to_start = true;
|
||||
|
||||
// clear guided limits
|
||||
copter.mode_guided.limit_clear();
|
||||
|
||||
// don't start the mission until we have an origin
|
||||
Location loc;
|
||||
if (copter.ahrs.get_origin(loc)) {
|
||||
// start/resume the mission (based on MIS_RESTART parameter)
|
||||
mission.start_or_resume();
|
||||
waiting_for_origin = false;
|
||||
} else {
|
||||
waiting_for_origin = true;
|
||||
}
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
@ -61,9 +54,21 @@ bool ModeAuto::init(bool ignore_checks)
|
||||
|
||||
// auto_run - runs the auto controller
|
||||
// should be called at 100hz or more
|
||||
// relies on run_autopilot being called at 10hz which handles decision making and non-navigation related commands
|
||||
void ModeAuto::run()
|
||||
{
|
||||
// start or update mission
|
||||
if (waiting_to_start) {
|
||||
// don't start the mission until we have an origin
|
||||
Location loc;
|
||||
if (copter.ahrs.get_origin(loc)) {
|
||||
// start/resume the mission (based on MIS_RESTART parameter)
|
||||
mission.start_or_resume();
|
||||
waiting_to_start = false;
|
||||
}
|
||||
} else {
|
||||
mission.update();
|
||||
}
|
||||
|
||||
// call the correct auto controller
|
||||
switch (_mode) {
|
||||
|
||||
@ -614,21 +619,6 @@ bool ModeAuto::get_wp(Location& destination)
|
||||
}
|
||||
}
|
||||
|
||||
// update mission
|
||||
void ModeAuto::run_autopilot()
|
||||
{
|
||||
Location loc;
|
||||
if (waiting_for_origin) {
|
||||
if (copter.ahrs.get_origin(loc)) {
|
||||
// start/resume the mission (based on MIS_RESTART parameter)
|
||||
mission.start_or_resume();
|
||||
waiting_for_origin = false;
|
||||
}
|
||||
} else {
|
||||
mission.update();
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
Verify command Handlers
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user