Offboard failsafe actions: add DISABLED, LOCKDOWN and TERMINATE options

This commit is contained in:
Julien Lecoeur
2019-08-21 07:56:20 -07:00
committed by Julian Oes
parent 4c9288d993
commit 84eeacfb38
3 changed files with 40 additions and 12 deletions
+2 -2
View File
@@ -2308,8 +2308,8 @@ Commander::run()
status_flags,
land_detector.landed,
(link_loss_actions_t)_param_nav_rcl_act.get(),
_param_com_obl_act.get(),
_param_com_obl_rc_act.get(),
(offboard_loss_actions_t)_param_com_obl_act.get(),
(offboard_loss_rc_actions_t)_param_com_obl_rc_act.get(),
(position_nav_loss_actions_t)_param_com_posctl_navl.get());
if (status.failsafe != failsafe_old) {
+15 -9
View File
@@ -344,9 +344,12 @@ PARAM_DEFINE_FLOAT(COM_OF_LOSS_T, 0.0f);
* The offboard loss failsafe will only be entered after a timeout,
* set by COM_OF_LOSS_T in seconds.
*
* @value 0 Land mode
* @value 1 Hold mode
* @value 2 Return mode
* @value -1 Disabled
* @value 0 Land mode
* @value 1 Hold mode
* @value 2 Return mode
* @value 3 Terminate
* @value 4 Lockdown
*
* @group Commander
*/
@@ -358,12 +361,15 @@ PARAM_DEFINE_INT32(COM_OBL_ACT, 0);
* The offboard loss failsafe will only be entered after a timeout,
* set by COM_OF_LOSS_T in seconds.
*
* @value 0 Position mode
* @value 1 Altitude mode
* @value 2 Manual
* @value 3 Return mode
* @value 4 Land mode
* @value 5 Hold mode
* @value -1 Disabled
* @value 0 Position mode
* @value 1 Altitude mode
* @value 2 Manual
* @value 3 Return mode
* @value 4 Land mode
* @value 5 Hold mode
* @value 6 Terminate
* @value 7 Lockdown
* @group Commander
*/
PARAM_DEFINE_INT32(COM_OBL_RC_ACT, 0);
+23 -1
View File
@@ -68,6 +68,27 @@ enum class link_loss_actions_t {
LOCKDOWN = 6, // Kill the motors, same result as kill switch
};
enum class offboard_loss_actions_t {
DISABLED = -1,
AUTO_LAND = 0, // Land mode
AUTO_LOITER = 1, // Hold mode
AUTO_RTL = 2, // Return mode
TERMINATE = 3, // Turn off all controllers and set PWM outputs to failsafe value
LOCKDOWN = 4, // Kill the motors, same result as kill switch
};
enum class offboard_loss_rc_actions_t {
DISABLED = -1, // Disabled
MANUAL_POSITION = 0, // Position mode
MANUAL_ALTITUDE = 1, // Altitude mode
MANUAL_ATTITUDE = 2, // Manual
AUTO_RTL = 3, // Return mode
AUTO_LAND = 4, // Land mode
AUTO_LOITER = 5, // Hold mode
TERMINATE = 6, // Turn off all controllers and set PWM outputs to failsafe value
LOCKDOWN = 7, // Kill the motors, same result as kill switch
};
enum class position_nav_loss_actions_t {
ALTITUDE_MANUAL = 0, // Altitude/Manual. Assume use of remote control after fallback. Switch to Altitude mode if a height estimate is available, else switch to MANUAL.
LAND_TERMINATE = 1, // Land/Terminate. Assume no use of remote control after fallback. Switch to Land mode if a height estimate is available, else switch to TERMINATION.
@@ -99,7 +120,8 @@ void enable_failsafe(vehicle_status_s *status, bool old_failsafe, orb_advert_t *
bool set_nav_state(vehicle_status_s *status, actuator_armed_s *armed, commander_state_s *internal_state,
orb_advert_t *mavlink_log_pub, const link_loss_actions_t data_link_loss_act, const bool mission_finished,
const bool stay_in_failsafe, const vehicle_status_flags_s &status_flags, bool landed,
const link_loss_actions_t rc_loss_act, const int offb_loss_act, const int offb_loss_rc_act,
const link_loss_actions_t rc_loss_act, const offboard_loss_actions_t offb_loss_act,
const offboard_loss_rc_actions_t offb_loss_rc_act,
const position_nav_loss_actions_t posctl_nav_loss_act);
/*