mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-19 15:23:34 +08:00
Implement RC and DL failsafe action handling for multirotors
Move RC and DL failsafe actions handling from navigator to commander (credits to @AndreasAntener) Separate manual kill switch handling via manual_lockdown to prevent override and release of software lockdown by RC switch Other changes: Add failsafe tune Fix LED blinking for Pixracer Return back support for rc inputs in simulator but now it is configurable via cmake
This commit is contained in:
committed by
Lorenz Meier
parent
964dabe179
commit
3a17c07b1e
@@ -297,8 +297,6 @@ private:
|
||||
control::BlockParamFloat _param_acceptance_radius; /**< acceptance for takeoff */
|
||||
control::BlockParamFloat _param_fw_alt_acceptance_radius; /**< acceptance radius for fixedwing altitude */
|
||||
control::BlockParamFloat _param_mc_alt_acceptance_radius; /**< acceptance radius for multicopter altitude */
|
||||
control::BlockParamInt _param_datalinkloss_act; /**< select data link loss action */
|
||||
control::BlockParamInt _param_rcloss_act; /**< select data link loss action */
|
||||
|
||||
control::BlockParamFloat _param_cruising_speed_hover;
|
||||
control::BlockParamFloat _param_cruising_speed_plane;
|
||||
|
||||
@@ -158,8 +158,6 @@ Navigator::Navigator() :
|
||||
_param_acceptance_radius(this, "ACC_RAD"),
|
||||
_param_fw_alt_acceptance_radius(this, "FW_ALT_RAD"),
|
||||
_param_mc_alt_acceptance_radius(this, "MC_ALT_RAD"),
|
||||
_param_datalinkloss_act(this, "DLL_ACT"),
|
||||
_param_rcloss_act(this, "RCL_ACT"),
|
||||
_param_cruising_speed_hover(this, "MPC_XY_CRUISE", false),
|
||||
_param_cruising_speed_plane(this, "FW_AIRSPD_TRIM", false),
|
||||
_param_cruising_throttle_plane(this, "FW_THR_CRUISE", false),
|
||||
@@ -565,15 +563,7 @@ Navigator::task_main()
|
||||
break;
|
||||
case vehicle_status_s::NAVIGATION_STATE_AUTO_RCRECOVER:
|
||||
_pos_sp_triplet_published_invalid_once = false;
|
||||
if (_param_rcloss_act.get() == 1) {
|
||||
_navigation_mode = &_loiter;
|
||||
} else if (_param_rcloss_act.get() == 3) {
|
||||
_navigation_mode = &_land;
|
||||
} else if (_param_rcloss_act.get() == 4) {
|
||||
_navigation_mode = &_rcLoss;
|
||||
} else { /* if == 2 or unknown, RTL */
|
||||
_navigation_mode = &_rtl;
|
||||
}
|
||||
_navigation_mode = &_rcLoss;
|
||||
break;
|
||||
case vehicle_status_s::NAVIGATION_STATE_AUTO_RTL:
|
||||
_pos_sp_triplet_published_invalid_once = false;
|
||||
@@ -592,18 +582,8 @@ Navigator::task_main()
|
||||
_navigation_mode = &_land;
|
||||
break;
|
||||
case vehicle_status_s::NAVIGATION_STATE_AUTO_RTGS:
|
||||
/* Use complex data link loss mode only when enabled via param
|
||||
* otherwise use rtl */
|
||||
_pos_sp_triplet_published_invalid_once = false;
|
||||
if (_param_datalinkloss_act.get() == 1) {
|
||||
_navigation_mode = &_loiter;
|
||||
} else if (_param_datalinkloss_act.get() == 3) {
|
||||
_navigation_mode = &_land;
|
||||
} else if (_param_datalinkloss_act.get() == 4) {
|
||||
_navigation_mode = &_dataLinkLoss;
|
||||
} else { /* if == 2 or unknown, RTL */
|
||||
_navigation_mode = &_rtl;
|
||||
}
|
||||
_navigation_mode = &_dataLinkLoss;
|
||||
break;
|
||||
case vehicle_status_s::NAVIGATION_STATE_AUTO_LANDENGFAIL:
|
||||
_pos_sp_triplet_published_invalid_once = false;
|
||||
|
||||
@@ -110,6 +110,9 @@ PARAM_DEFINE_FLOAT(NAV_MC_ALT_RAD, 3.0f);
|
||||
* @value 1 Loiter
|
||||
* @value 2 Return to Land
|
||||
* @value 3 Land at current position
|
||||
* @value 4 Data Link Auto Recovery (CASA Outback Challenge rules)
|
||||
* @value 5 Terminate
|
||||
* @value 6 Lockdown
|
||||
*
|
||||
* @group Mission
|
||||
*/
|
||||
@@ -128,6 +131,9 @@ PARAM_DEFINE_INT32(NAV_DLL_ACT, 0);
|
||||
* @value 1 Loiter
|
||||
* @value 2 Return to Land
|
||||
* @value 3 Land at current position
|
||||
* @value 4 RC Auto Recovery (CASA Outback Challenge rules)
|
||||
* @value 5 Terminate
|
||||
* @value 6 Lockdown
|
||||
*
|
||||
* @group Mission
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user