Add parameter COM_PREARM_MODE

Condition to enter the prearmed state, an intermediate state between disarmed and armed
 * in which non-throttling actuators are active.
 *
 * @value 0 Disabled
 * @value 1 Safety button
 * @value 2 Always
This commit is contained in:
Julien Lecoeur
2019-08-21 20:38:08 +02:00
committed by Daniel Agar
parent bc58bed960
commit 9c50f5ea08
3 changed files with 49 additions and 10 deletions
+26 -9
View File
@@ -2333,18 +2333,35 @@ Commander::run()
status.timestamp = hrt_absolute_time();
_status_pub.publish(status);
/* set prearmed state if safety is off, or safety is not present and 5 seconds passed */
if (safety.safety_switch_available) {
switch ((PrearmedMode)_param_com_prearm_mode.get()) {
case PrearmedMode::DISABLED:
/* skip prearmed state */
armed.prearmed = false;
break;
/* safety is off, go into prearmed */
armed.prearmed = safety.safety_off;
} else {
case PrearmedMode::ALWAYS:
/* safety is not present, go into prearmed
* (all output drivers should be started / unlocked last in the boot process
* when the rest of the system is fully initialized)
*/
* (all output drivers should be started / unlocked last in the boot process
* when the rest of the system is fully initialized)
*/
armed.prearmed = (hrt_elapsed_time(&commander_boot_timestamp) > 5_s);
break;
case PrearmedMode::SAFETY_BUTTON:
if (safety.safety_switch_available) {
/* safety is off, go into prearmed */
armed.prearmed = safety.safety_off;
} else {
/* safety is not present, do not go into prearmed */
armed.prearmed = false;
}
break;
default:
armed.prearmed = false;
break;
}
armed.timestamp = hrt_absolute_time();
+9 -1
View File
@@ -140,10 +140,18 @@ private:
(ParamFloat<px4::params::COM_OF_LOSS_T>) _param_com_of_loss_t,
(ParamInt<px4::params::COM_OBL_ACT>) _param_com_obl_act,
(ParamInt<px4::params::COM_OBL_RC_ACT>) _param_com_obl_rc_act
(ParamInt<px4::params::COM_OBL_RC_ACT>) _param_com_obl_rc_act,
(ParamInt<px4::params::COM_PREARM_MODE>) _param_com_prearm_mode
)
enum class PrearmedMode {
DISABLED = 0,
SAFETY_BUTTON = 1,
ALWAYS = 2
};
const int64_t POSVEL_PROBATION_MIN = 1_s; /**< minimum probation duration (usec) */
const int64_t POSVEL_PROBATION_MAX = 100_s; /**< maximum probation duration (usec) */
+14
View File
@@ -953,3 +953,17 @@ PARAM_DEFINE_INT32(COM_FLT_PROFILE, 0);
* @boolean
*/
PARAM_DEFINE_INT32(COM_ARM_CHK_ESCS, 1);
/**
* Condition to enter prearmed mode
*
* Condition to enter the prearmed state, an intermediate state between disarmed and armed
* in which non-throttling actuators are active.
*
* @value 0 Disabled
* @value 1 Safety button
* @value 2 Always
*
* @group Commander
*/
PARAM_DEFINE_INT32(COM_PREARM_MODE, 1);