mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-23 07:37:36 +08:00
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:
committed by
Daniel Agar
parent
bc58bed960
commit
9c50f5ea08
@@ -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();
|
||||
|
||||
@@ -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) */
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user