mirror of https://github.com/ArduPilot/ardupilot
Copter: fixed parachute checks for sink rate
ensure is_flying is set, setup sink rate at the right position, force disarm if chute releases
This commit is contained in:
parent
b04844ca13
commit
dbf6f6f4b1
|
@ -517,6 +517,10 @@ void Copter::one_hz_loop()
|
||||||
adsb.set_is_flying(!ap.land_complete);
|
adsb.set_is_flying(!ap.land_complete);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if PARACHUTE == ENABLED
|
||||||
|
parachute.set_is_flying(!ap.land_complete);
|
||||||
|
#endif
|
||||||
|
|
||||||
AP_Notify::flags.flying = !ap.land_complete;
|
AP_Notify::flags.flying = !ap.land_complete;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -192,6 +192,11 @@ void Copter::parachute_check()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parachute.release_initiated()) {
|
||||||
|
copter.arming.disarm(AP_Arming::Method::PARACHUTE_RELEASE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// return immediately if we are not in an angle stabilize flight mode or we are flipping
|
// return immediately if we are not in an angle stabilize flight mode or we are flipping
|
||||||
if (control_mode == Mode::Number::ACRO || control_mode == Mode::Number::FLIP) {
|
if (control_mode == Mode::Number::ACRO || control_mode == Mode::Number::FLIP) {
|
||||||
control_loss_count = 0;
|
control_loss_count = 0;
|
||||||
|
@ -209,6 +214,9 @@ void Copter::parachute_check()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// pass sink rate to parachute library
|
||||||
|
parachute.set_sink_rate(-inertial_nav.get_velocity_z() * 0.01);
|
||||||
|
|
||||||
// check for angle error over 30 degrees
|
// check for angle error over 30 degrees
|
||||||
const float angle_error = attitude_control->get_att_error_angle_deg();
|
const float angle_error = attitude_control->get_att_error_angle_deg();
|
||||||
if (angle_error <= CRASH_CHECK_ANGLE_DEVIATION_DEG) {
|
if (angle_error <= CRASH_CHECK_ANGLE_DEVIATION_DEG) {
|
||||||
|
@ -242,9 +250,6 @@ void Copter::parachute_check()
|
||||||
// release parachute
|
// release parachute
|
||||||
parachute_release();
|
parachute_release();
|
||||||
}
|
}
|
||||||
|
|
||||||
// pass sink rate to parachute library
|
|
||||||
parachute.set_sink_rate(-inertial_nav.get_velocity_z() * 0.01);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// parachute_release - trigger the release of the parachute, disarm the motors and notify the user
|
// parachute_release - trigger the release of the parachute, disarm the motors and notify the user
|
||||||
|
|
Loading…
Reference in New Issue