mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +08:00
Change RC override to affect offboard mode as well
-Defines COM_RC_OVERRIDE as a bitmask -Changes RC override to affect auto modes, offboard mode, or both
This commit is contained in:
parent
fee7f69d63
commit
d54ab5f6eb
@ -1743,15 +1743,20 @@ Commander::run()
|
||||
// but only if not in a low battery handling action
|
||||
const bool low_battery_reaction = _battery_warning >= battery_status_s::BATTERY_WARNING_CRITICAL;
|
||||
const bool is_rotary_wing = status.vehicle_type == vehicle_status_s::VEHICLE_TYPE_ROTARY_WING;
|
||||
const bool in_auto_mode =
|
||||
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_LAND ||
|
||||
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_RTL ||
|
||||
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_MISSION ||
|
||||
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_LOITER;
|
||||
|
||||
if (_param_rc_override.get() && is_rotary_wing && !low_battery_reaction
|
||||
&& !_geofence_warning_action_on && in_auto_mode) {
|
||||
const bool override_auto_mode =
|
||||
(_param_rc_override.get() & OVERRIDE_AUTO_MODE_BIT) &&
|
||||
(_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_LAND ||
|
||||
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_RTL ||
|
||||
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_MISSION ||
|
||||
_internal_state.main_state == commander_state_s::MAIN_STATE_AUTO_LOITER);
|
||||
|
||||
const bool override_offboard_mode =
|
||||
(_param_rc_override.get() & OVERRIDE_OFFBOARD_MODE_BIT) &&
|
||||
_internal_state.main_state == commander_state_s::MAIN_STATE_OFFBOARD;
|
||||
|
||||
if ((override_auto_mode || override_offboard_mode) && is_rotary_wing
|
||||
&& !low_battery_reaction && !_geofence_warning_action_on) {
|
||||
// transition to previous state if sticks are touched
|
||||
if ((_last_sp_man.timestamp != _sp_man.timestamp) &&
|
||||
((fabsf(_sp_man.x - _last_sp_man.x) > _min_stick_change) ||
|
||||
|
||||
@ -223,7 +223,7 @@ private:
|
||||
(ParamInt<px4::params::COM_FLIGHT_UUID>) _param_flight_uuid,
|
||||
(ParamInt<px4::params::COM_TAKEOFF_ACT>) _param_takeoff_finished_action,
|
||||
|
||||
(ParamBool<px4::params::COM_RC_OVERRIDE>) _param_rc_override,
|
||||
(ParamInt<px4::params::COM_RC_OVERRIDE>) _param_rc_override,
|
||||
(ParamInt<px4::params::COM_RC_IN_MODE>) _param_rc_in_off,
|
||||
(ParamInt<px4::params::COM_RC_ARM_HYST>) _param_rc_arm_hyst,
|
||||
(ParamFloat<px4::params::COM_RC_STICK_OV>) _param_min_stick_change,
|
||||
@ -258,6 +258,12 @@ private:
|
||||
ALWAYS = 2
|
||||
};
|
||||
|
||||
enum OverrideMode {
|
||||
OVERRIDE_DISABLED = 0,
|
||||
OVERRIDE_AUTO_MODE_BIT = (1 << 0),
|
||||
OVERRIDE_OFFBOARD_MODE_BIT = (1 << 1)
|
||||
};
|
||||
|
||||
/* Decouple update interval and hysteresis counters, all depends on intervals */
|
||||
static constexpr uint64_t COMMANDER_MONITORING_INTERVAL{10_ms};
|
||||
static constexpr float COMMANDER_MONITORING_LOOPSPERMSEC{1 / (COMMANDER_MONITORING_INTERVAL / 1000.0f)};
|
||||
|
||||
@ -631,13 +631,18 @@ PARAM_DEFINE_INT32(COM_ARM_MAG_STR, 1);
|
||||
|
||||
/**
|
||||
* Enable RC stick override of auto modes
|
||||
* Enable RC stick override of auto or offboard modes
|
||||
*
|
||||
* When an auto mode is active (except a critical battery reaction) moving the RC sticks
|
||||
* gives control back to the pilot in manual position mode immediately.
|
||||
* Moving the RC sticks gives control back to the pilot in manual position mode immediately when:
|
||||
* 0: an auto mode is active (except a critical battery reaction)
|
||||
* 1: offboard mode is active
|
||||
*
|
||||
* Only has an effect on multicopters and VTOLS in multicopter mode.
|
||||
*
|
||||
* @boolean
|
||||
* @min 0
|
||||
* @max 3
|
||||
* @bit 0 Enable override of auto modes
|
||||
* @bit 1 Enable override of offboard mode
|
||||
* @group Commander
|
||||
*/
|
||||
PARAM_DEFINE_INT32(COM_RC_OVERRIDE, 1);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user