mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-04-14 10:07:39 +08:00
Sticks: globalize MPC_HOLD_DZ to MAN_DEADZONE
This commit is contained in:
parent
a9720cf1ef
commit
2bf9fce577
@ -645,7 +645,6 @@
|
||||
1 1 MPC_ACC_HOR_MAX 5.000000000000000000 9
|
||||
1 1 MPC_ACC_UP_MAX 4.000000000000000000 9
|
||||
1 1 MPC_ALT_MODE 2 6
|
||||
1 1 MPC_HOLD_DZ 0.100000001490116119 9
|
||||
1 1 MPC_HOLD_MAX_XY 0.800000011920928955 9
|
||||
1 1 MPC_HOLD_MAX_Z 0.600000023841857910 9
|
||||
1 1 MPC_JERK_AUTO 4.000000000000000000 9
|
||||
|
||||
@ -43,7 +43,7 @@ While very rare on a well calibrated vehicle, sometimes there may be problems wi
|
||||
RC mode where roll, pitch, throttle (RPT) sticks control movement in corresponding axes/directions.
|
||||
Centered sticks level vehicle and hold it to fixed altitude and position against wind.
|
||||
|
||||
- Centered roll, pitch, throttle sticks (within RC deadzone [MPC_HOLD_DZ](../advanced_config/parameter_reference.md#MPC_HOLD_DZ)) hold x, y, z position steady against any disturbance like wind.
|
||||
- Centered roll, pitch, throttle sticks (within RC deadzone [MAN_DEADZONE](../advanced_config/parameter_reference.md#MAN_DEADZONE)) hold x, y, z position steady against any disturbance like wind.
|
||||
- Outside center:
|
||||
- Roll/Pitch sticks control horizontal acceleration over ground in the vehicle's left-right and forward-back directions (respectively).
|
||||
- Throttle stick controls speed of ascent-descent.
|
||||
@ -51,10 +51,10 @@ Centered sticks level vehicle and hold it to fixed altitude and position against
|
||||
- Takeoff:
|
||||
- When landed, the vehicle will take off if the throttle stick is raised above 62.5% percent (of the full range from bottom).
|
||||
- Global position estimate is required.
|
||||
- Manual control input is required (such as RC control, joystick).
|
||||
- Roll, Pitch, Throttle: Assistance from autopilot to hold position against wind.
|
||||
- Yaw: Assistance from autopilot to stabilize the attitude rate.
|
||||
Position of RC stick maps to the rate of rotation of vehicle in that orientation.
|
||||
- Manual control input is required (such as RC control, joystick).
|
||||
- Roll, Pitch, Throttle: Assistance from autopilot to hold position against wind.
|
||||
- Yaw: Assistance from autopilot to stabilize the attitude rate.
|
||||
Position of RC stick maps to the rate of rotation of vehicle in that orientation.
|
||||
|
||||
### Parameters
|
||||
|
||||
@ -62,7 +62,7 @@ All the parameters in the [Multicopter Position Control](../advanced_config/para
|
||||
|
||||
| Parameter | Description |
|
||||
| ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| <a id="MPC_HOLD_DZ"></a>[MPC_HOLD_DZ](../advanced_config/parameter_reference.md#MPC_HOLD_DZ) | Deadzone of sticks where position hold is enabled. Default: 0.1 (10% of full stick range). |
|
||||
| <a id="MAN_DEADZONE"></a>[MAN_DEADZONE](../advanced_config/parameter_reference.md#MAN_DEADZONE) | Deadzone of sticks where position hold is enabled. Default: 0.1 (10% of full stick range). |
|
||||
| <a id="MPC_Z_VEL_MAX_UP"></a>[MPC_Z_VEL_MAX_UP](../advanced_config/parameter_reference.md#MPC_Z_VEL_MAX_UP) | Maximum vertical ascent velocity. Default: 3 m/s. |
|
||||
| <a id="MPC_Z_VEL_MAX_DN"></a>[MPC_Z_VEL_MAX_DN](../advanced_config/parameter_reference.md#MPC_Z_VEL_MAX_DN) | Maximum vertical descent velocity. Default: 1 m/s. |
|
||||
| <a id="MPC_LAND_ALT1"></a>[MPC_LAND_ALT1](../advanced_config/parameter_reference.md#MPC_LAND_ALT1) | Altitude for triggering first phase of slow landing. Below this altitude descending velocity gets limited to a value between [MPC_Z_VEL_MAX_DN](#MPC_Z_VEL_MAX_DN) (or `MPC_Z_V_AUTO_DN`) and [MPC_LAND_SPEED](#MPC_LAND_SPEED). Value needs to be higher than [MPC_LAND_ALT2](#MPC_LAND_ALT2). Default 10m. |
|
||||
|
||||
@ -57,10 +57,10 @@ bool Sticks::checkAndUpdateStickInputs()
|
||||
_positions(3) = manual_control_setpoint.yaw;
|
||||
|
||||
// Exponential scale
|
||||
_positions_expo(0) = math::expo_deadzone(_positions(0), _param_mpc_xy_man_expo.get(), _param_mpc_hold_dz.get());
|
||||
_positions_expo(1) = math::expo_deadzone(_positions(1), _param_mpc_xy_man_expo.get(), _param_mpc_hold_dz.get());
|
||||
_positions_expo(2) = math::expo_deadzone(_positions(2), _param_mpc_z_man_expo.get(), _param_mpc_hold_dz.get());
|
||||
_positions_expo(3) = math::expo_deadzone(_positions(3), _param_mpc_yaw_expo.get(), _param_mpc_hold_dz.get());
|
||||
_positions_expo(0) = math::expo_deadzone(_positions(0), _param_mpc_xy_man_expo.get(), _param_man_deadzone.get());
|
||||
_positions_expo(1) = math::expo_deadzone(_positions(1), _param_mpc_xy_man_expo.get(), _param_man_deadzone.get());
|
||||
_positions_expo(2) = math::expo_deadzone(_positions(2), _param_mpc_z_man_expo.get(), _param_man_deadzone.get());
|
||||
_positions_expo(3) = math::expo_deadzone(_positions(3), _param_mpc_yaw_expo.get(), _param_man_deadzone.get());
|
||||
|
||||
_aux_positions(0) = manual_control_setpoint.aux1;
|
||||
_aux_positions(1) = manual_control_setpoint.aux2;
|
||||
|
||||
@ -101,7 +101,7 @@ private:
|
||||
uORB::Subscription _failsafe_flags_sub{ORB_ID(failsafe_flags)};
|
||||
|
||||
DEFINE_PARAMETERS(
|
||||
(ParamFloat<px4::params::MPC_HOLD_DZ>) _param_mpc_hold_dz,
|
||||
(ParamFloat<px4::params::MAN_DEADZONE>) _param_man_deadzone,
|
||||
(ParamFloat<px4::params::MPC_XY_MAN_EXPO>) _param_mpc_xy_man_expo,
|
||||
(ParamFloat<px4::params::MPC_Z_MAN_EXPO>) _param_mpc_z_man_expo,
|
||||
(ParamFloat<px4::params::MPC_YAW_EXPO>) _param_mpc_yaw_expo
|
||||
|
||||
@ -58,3 +58,20 @@ PARAM_DEFINE_INT32(MAN_ARM_GESTURE, 1);
|
||||
* @max 15
|
||||
*/
|
||||
PARAM_DEFINE_FLOAT(MAN_KILL_GEST_T, -1.f);
|
||||
|
||||
/**
|
||||
* Deadzone for sticks (only specific use cases)
|
||||
*
|
||||
* Range around stick center ignored to prevent
|
||||
* vehicle drift from stick hardware inaccuracy.
|
||||
*
|
||||
* Does not apply to any precise constant input like
|
||||
* throttle and attitude or rate piloting.
|
||||
*
|
||||
* @min 0
|
||||
* @max 1
|
||||
* @decimal 2
|
||||
* @increment 0.01
|
||||
* @group Manual Control
|
||||
*/
|
||||
PARAM_DEFINE_FLOAT(MAN_DEADZONE, 0.1f);
|
||||
|
||||
@ -161,7 +161,7 @@ private:
|
||||
(ParamFloat<px4::params::MC_YAWRATE_MAX>) _param_mc_yawrate_max,
|
||||
|
||||
/* Stabilized mode params */
|
||||
(ParamFloat<px4::params::MPC_HOLD_DZ>) _param_mpc_hold_dz,
|
||||
(ParamFloat<px4::params::MAN_DEADZONE>) _param_man_deadzone,
|
||||
(ParamFloat<px4::params::MPC_MAN_TILT_MAX>) _param_mpc_man_tilt_max,
|
||||
(ParamFloat<px4::params::MPC_MANTHR_MIN>) _param_mpc_manthr_min,
|
||||
(ParamFloat<px4::params::MPC_THR_MAX>) _param_mpc_thr_max,
|
||||
|
||||
@ -147,7 +147,7 @@ MulticopterAttitudeControl::generate_attitude_setpoint(const Quatf &q, float dt)
|
||||
|
||||
const float yaw = Eulerf(q).psi();
|
||||
const float yaw_stick_input = math::expo_deadzone(_manual_control_setpoint.yaw, _param_mpc_yaw_expo.get(),
|
||||
_param_mpc_hold_dz.get());
|
||||
_param_man_deadzone.get());
|
||||
_stick_yaw.generateYawSetpoint(attitude_setpoint.yaw_sp_move_rate, _yaw_setpoint_stabilized, yaw_stick_input, yaw, dt,
|
||||
_unaided_heading);
|
||||
|
||||
|
||||
@ -130,19 +130,6 @@ PARAM_DEFINE_FLOAT(MPC_ACC_HOR_MAX, 5.f);
|
||||
*/
|
||||
PARAM_DEFINE_FLOAT(MPC_JERK_MAX, 8.f);
|
||||
|
||||
/**
|
||||
* Deadzone for sticks in manual piloted modes
|
||||
*
|
||||
* Does not apply to manual throttle and direct attitude piloting by stick.
|
||||
*
|
||||
* @min 0
|
||||
* @max 1
|
||||
* @decimal 2
|
||||
* @increment 0.01
|
||||
* @group Multicopter Position Control
|
||||
*/
|
||||
PARAM_DEFINE_FLOAT(MPC_HOLD_DZ, 0.1f);
|
||||
|
||||
/**
|
||||
* Manual position control stick exponential curve sensitivity
|
||||
*
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user