forked from Archive/PX4-Autopilot
ControlAllocation: introduce convention for control surface deflection sign
- horizontal control surfaces: up=positive deflection - vertical control surfaces (rudder): right=positive deflection - mixed (V-Tail): up=positive deflection Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
This commit is contained in:
parent
5259877b1b
commit
1ad66e606b
|
@ -50,26 +50,24 @@ param set-default CA_ROTOR_COUNT 1
|
||||||
param set-default CA_ROTOR0_PX 0.3
|
param set-default CA_ROTOR0_PX 0.3
|
||||||
|
|
||||||
param set-default CA_SV_CS_COUNT 6
|
param set-default CA_SV_CS_COUNT 6
|
||||||
param set-default CA_SV_CS0_TRQ_Y 1.0000
|
param set-default CA_SV_CS0_TRQ_R -0.5
|
||||||
param set-default CA_SV_CS0_TYPE 2
|
param set-default CA_SV_CS0_TYPE 1
|
||||||
param set-default CA_SV_CS1_TYPE 7
|
param set-default CA_SV_CS1_TRQ_R 0.5
|
||||||
param set-default CA_SV_CS2_TRQ_P -1.0000
|
param set-default CA_SV_CS1_TYPE 2
|
||||||
param set-default CA_SV_CS2_TRQ_R 1.0000
|
param set-default CA_SV_CS2_TRQ_P 1.0
|
||||||
param set-default CA_SV_CS2_TYPE 9
|
param set-default CA_SV_CS2_TYPE 3
|
||||||
param set-default CA_SV_CS3_TRQ_P 1.0000
|
param set-default CA_SV_CS3_TRQ_Y 1.0
|
||||||
param set-default CA_SV_CS3_TRQ_R 1.0000
|
param set-default CA_SV_CS3_TYPE 4
|
||||||
param set-default CA_SV_CS3_TYPE 10
|
param set-default CA_SV_CS4_TYPE 9
|
||||||
param set-default CA_SV_CS4_TRQ_P 1.0000
|
param set-default CA_SV_CS5_TYPE 10
|
||||||
param set-default CA_SV_CS5_TYPE 8
|
param set-default PWM_MAIN_FUNC3 204
|
||||||
|
param set-default PWM_MAIN_FUNC4 205
|
||||||
param set-default PWM_MAIN_FUNC3 201
|
|
||||||
param set-default PWM_MAIN_FUNC4 202
|
|
||||||
param set-default PWM_MAIN_FUNC5 101
|
param set-default PWM_MAIN_FUNC5 101
|
||||||
param set-default PWM_MAIN_FUNC6 203
|
param set-default PWM_MAIN_FUNC6 201
|
||||||
param set-default PWM_MAIN_FUNC7 204
|
param set-default PWM_MAIN_FUNC7 202
|
||||||
param set-default PWM_MAIN_FUNC8 205
|
param set-default PWM_MAIN_FUNC8 203
|
||||||
param set-default PWM_MAIN_FUNC9 206
|
param set-default PWM_MAIN_FUNC9 206
|
||||||
param set-default PWM_MAIN_REV 288
|
param set-default PWM_MAIN_REV 256
|
||||||
|
|
||||||
|
|
||||||
set MIXER_FILE etc/mixers-sitl/plane_sitl.main.mix
|
set MIXER_FILE etc/mixers-sitl/plane_sitl.main.mix
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
. ${R}etc/init.d/rc.vtol_defaults
|
. ${R}etc/init.d/rc.vtol_defaults
|
||||||
|
|
||||||
#param set-default SYS_CTRL_ALLOC 1
|
# param set-default SYS_CTRL_ALLOC 1
|
||||||
param set-default CA_AIRFRAME 2
|
param set-default CA_AIRFRAME 2
|
||||||
|
|
||||||
param set-default CA_ROTOR_COUNT 4
|
param set-default CA_ROTOR_COUNT 4
|
||||||
|
@ -25,11 +25,12 @@ param set-default CA_ROTOR3_PY 0.1875
|
||||||
param set-default CA_ROTOR3_KM -0.05
|
param set-default CA_ROTOR3_KM -0.05
|
||||||
|
|
||||||
param set-default CA_SV_CS_COUNT 3
|
param set-default CA_SV_CS_COUNT 3
|
||||||
param set-default CA_SV_CS0_TRQ_R 1.0000
|
param set-default CA_SV_CS0_TYPE 1
|
||||||
param set-default CA_SV_CS0_TYPE 9
|
param set-default CA_SV_CS0_TRQ_R -0.5
|
||||||
param set-default CA_SV_CS1_TRQ_R 1.0000
|
param set-default CA_SV_CS1_TYPE 2
|
||||||
param set-default CA_SV_CS1_TYPE 10
|
param set-default CA_SV_CS1_TRQ_R 0.5
|
||||||
param set-default CA_SV_CS2_TRQ_P 1.0000
|
param set-default CA_SV_CS2_TYPE 3
|
||||||
|
param set-default CA_SV_CS2_TRQ_P 1.0
|
||||||
param set-default PWM_MAIN_FUNC1 101
|
param set-default PWM_MAIN_FUNC1 101
|
||||||
param set-default PWM_MAIN_FUNC2 102
|
param set-default PWM_MAIN_FUNC2 102
|
||||||
param set-default PWM_MAIN_FUNC3 103
|
param set-default PWM_MAIN_FUNC3 103
|
||||||
|
@ -38,8 +39,6 @@ param set-default PWM_MAIN_FUNC5 105
|
||||||
param set-default PWM_MAIN_FUNC6 201
|
param set-default PWM_MAIN_FUNC6 201
|
||||||
param set-default PWM_MAIN_FUNC7 202
|
param set-default PWM_MAIN_FUNC7 202
|
||||||
param set-default PWM_MAIN_FUNC8 203
|
param set-default PWM_MAIN_FUNC8 203
|
||||||
param set-default PWM_MAIN_REV 32
|
|
||||||
|
|
||||||
|
|
||||||
param set-default FW_L1_PERIOD 12
|
param set-default FW_L1_PERIOD 12
|
||||||
param set-default FW_MAN_P_MAX 30
|
param set-default FW_MAN_P_MAX 30
|
||||||
|
|
|
@ -25,12 +25,12 @@ param set-default CA_ROTOR3_PY 1
|
||||||
param set-default CA_ROTOR3_KM -0.05
|
param set-default CA_ROTOR3_KM -0.05
|
||||||
|
|
||||||
param set-default CA_SV_CS_COUNT 2
|
param set-default CA_SV_CS_COUNT 2
|
||||||
param set-default CA_SV_CS0_TYPE 9
|
param set-default CA_SV_CS0_TYPE 5
|
||||||
param set-default CA_SV_CS0_TRQ_P -1
|
param set-default CA_SV_CS0_TRQ_P 0.5
|
||||||
param set-default CA_SV_CS0_TRQ_Y -1
|
param set-default CA_SV_CS0_TRQ_Y -0.5
|
||||||
param set-default CA_SV_CS1_TYPE 10
|
param set-default CA_SV_CS1_TYPE 6
|
||||||
param set-default CA_SV_CS1_TRQ_P -1
|
param set-default CA_SV_CS1_TRQ_P 0.5
|
||||||
param set-default CA_SV_CS1_TRQ_Y 1
|
param set-default CA_SV_CS1_TRQ_Y 0.5
|
||||||
|
|
||||||
param set-default PWM_MAIN_FUNC1 101
|
param set-default PWM_MAIN_FUNC1 101
|
||||||
param set-default PWM_MAIN_FUNC2 102
|
param set-default PWM_MAIN_FUNC2 102
|
||||||
|
@ -39,6 +39,7 @@ param set-default PWM_MAIN_FUNC4 104
|
||||||
param set-default PWM_MAIN_FUNC5 0
|
param set-default PWM_MAIN_FUNC5 0
|
||||||
param set-default PWM_MAIN_FUNC6 201
|
param set-default PWM_MAIN_FUNC6 201
|
||||||
param set-default PWM_MAIN_FUNC7 202
|
param set-default PWM_MAIN_FUNC7 202
|
||||||
|
param set-default PWM_MAIN_REV 96 # invert both elevons
|
||||||
|
|
||||||
param set-default FW_L1_PERIOD 12
|
param set-default FW_L1_PERIOD 12
|
||||||
param set-default FW_MAN_P_MAX 30
|
param set-default FW_MAN_P_MAX 30
|
||||||
|
|
|
@ -28,11 +28,12 @@ param set-default CA_ROTOR0_TILT 1
|
||||||
param set-default CA_ROTOR1_TILT 2
|
param set-default CA_ROTOR1_TILT 2
|
||||||
param set-default CA_ROTOR2_TILT 3
|
param set-default CA_ROTOR2_TILT 3
|
||||||
param set-default CA_ROTOR3_TILT 4
|
param set-default CA_ROTOR3_TILT 4
|
||||||
param set-default CA_SV_CS0_TRQ_R 1.0000
|
param set-default CA_SV_CS0_TRQ_R -0.5
|
||||||
param set-default CA_SV_CS0_TYPE 9
|
param set-default CA_SV_CS0_TYPE 1
|
||||||
param set-default CA_SV_CS1_TRQ_R 1.0000
|
param set-default CA_SV_CS1_TRQ_R 0.5
|
||||||
param set-default CA_SV_CS1_TYPE 10
|
param set-default CA_SV_CS1_TYPE 2
|
||||||
param set-default CA_SV_CS2_TRQ_P 1.0000
|
param set-default CA_SV_CS2_TRQ_P 1.0
|
||||||
|
param set-default CA_SV_CS2_TYPE 3
|
||||||
param set-default CA_SV_CS_COUNT 3
|
param set-default CA_SV_CS_COUNT 3
|
||||||
param set-default CA_SV_TL0_CT 0
|
param set-default CA_SV_TL0_CT 0
|
||||||
param set-default CA_SV_TL1_CT 0
|
param set-default CA_SV_TL1_CT 0
|
||||||
|
@ -51,7 +52,6 @@ param set-default PWM_MAIN_FUNC8 207
|
||||||
param set-default PWM_MAIN_FUNC9 201
|
param set-default PWM_MAIN_FUNC9 201
|
||||||
param set-default PWM_MAIN_FUNC10 202
|
param set-default PWM_MAIN_FUNC10 202
|
||||||
param set-default PWM_MAIN_FUNC11 203
|
param set-default PWM_MAIN_FUNC11 203
|
||||||
param set-default PWM_MAIN_REV 256
|
|
||||||
|
|
||||||
param set-default FW_L1_PERIOD 12
|
param set-default FW_L1_PERIOD 12
|
||||||
param set-default FW_MAN_P_MAX 30
|
param set-default FW_MAN_P_MAX 30
|
||||||
|
|
|
@ -82,8 +82,15 @@ void ActuatorEffectivenessControlSurfaces::updateParams()
|
||||||
|
|
||||||
param_get(_param_handles[i].trim, &_params[i].trim);
|
param_get(_param_handles[i].trim, &_params[i].trim);
|
||||||
|
|
||||||
// TODO: enforce limits?
|
// TODO: enforce limits (note that tailsitter uses different limits)?
|
||||||
switch (_params[i].type) {
|
switch (_params[i].type) {
|
||||||
|
|
||||||
|
case Type::LeftAileron:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Type::RightAileron:
|
||||||
|
break;
|
||||||
|
|
||||||
case Type::Elevator:
|
case Type::Elevator:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -107,12 +114,6 @@ void ActuatorEffectivenessControlSurfaces::updateParams()
|
||||||
torque.setZero();
|
torque.setZero();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Type::LeftAileron:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Type::RightAileron:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Type::Airbrakes:
|
case Type::Airbrakes:
|
||||||
torque.setZero();
|
torque.setZero();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -45,16 +45,16 @@ public:
|
||||||
|
|
||||||
enum class Type : int32_t {
|
enum class Type : int32_t {
|
||||||
// This matches with the parameter
|
// This matches with the parameter
|
||||||
Elevator = 1,
|
LeftAileron = 1,
|
||||||
Rudder = 2,
|
RightAileron = 2,
|
||||||
LeftElevon = 3,
|
Elevator = 3,
|
||||||
RightElevon = 4,
|
Rudder = 4,
|
||||||
LeftVTail = 5,
|
LeftElevon = 5,
|
||||||
RightVTail = 6,
|
RightElevon = 6,
|
||||||
LeftFlaps = 7,
|
LeftVTail = 7,
|
||||||
RightFlaps = 8,
|
RightVTail = 8,
|
||||||
LeftAileron = 9,
|
LeftFlaps = 9,
|
||||||
RightAileron = 10,
|
RightFlaps = 10,
|
||||||
Airbrakes = 11,
|
Airbrakes = 11,
|
||||||
Custom = 12,
|
Custom = 12,
|
||||||
};
|
};
|
||||||
|
|
|
@ -246,16 +246,16 @@ parameters:
|
||||||
short: Control Surface ${i} type
|
short: Control Surface ${i} type
|
||||||
type: enum
|
type: enum
|
||||||
values:
|
values:
|
||||||
1: Elevator
|
1: Left Aileron
|
||||||
2: Rudder
|
2: Right Aileron
|
||||||
3: Left Elevon
|
3: Elevator
|
||||||
4: Right Elevon
|
4: Rudder
|
||||||
5: Left V-Tail
|
5: Left Elevon
|
||||||
6: Right V-Tail
|
6: Right Elevon
|
||||||
7: Left Flaps
|
7: Left V-Tail
|
||||||
8: Right Flaps
|
8: Right V-Tail
|
||||||
9: Left Aileron
|
9: Left Flap
|
||||||
10: Right Aileron
|
10: Right Flap
|
||||||
11: Airbrakes
|
11: Airbrakes
|
||||||
12: Custom
|
12: Custom
|
||||||
num_instances: *max_num_servos
|
num_instances: *max_num_servos
|
||||||
|
@ -423,23 +423,55 @@ mixer:
|
||||||
- select_identifier: 'servo-type' # restrict torque based on servo type
|
- select_identifier: 'servo-type' # restrict torque based on servo type
|
||||||
apply_identifiers: ['servo-torque-roll', 'servo-torque-pitch', 'servo-torque-yaw']
|
apply_identifiers: ['servo-torque-roll', 'servo-torque-pitch', 'servo-torque-yaw']
|
||||||
items:
|
items:
|
||||||
# TODO
|
# Convention: horizontal surfaces: up=positive, vertical: right=positive, mixed: up=positive.
|
||||||
1: # Elevator
|
# By default the scale is set to 1/N, where N is the amount of actuators with an effect on
|
||||||
|
# the corresponding axis. With that we are using all the available servo moving range.
|
||||||
|
1: # Left Aileron
|
||||||
|
- { 'min': -1.0, 'max': 0.0, 'default': -0.5 } # roll
|
||||||
|
- { 'hidden': True, 'default': 0.0 } # pitch
|
||||||
|
- { 'hidden': True, 'default': 0.0 } # yaw
|
||||||
|
2: # Right Aileron
|
||||||
|
- { 'min': 0.0, 'max': 1.0, 'default': 0.5 } # roll
|
||||||
|
- { 'hidden': True, 'default': 0.0 } # pitch
|
||||||
|
- { 'hidden': True, 'default': 0.0 } # yaw
|
||||||
|
3: # Elevator
|
||||||
- { 'hidden': True, 'default': 0.0 } # roll
|
- { 'hidden': True, 'default': 0.0 } # roll
|
||||||
- { 'min': 0.0, 'max': 1.0, 'default': 1.0 } # pitch
|
- { 'min': 0.0, 'max': 1.0, 'default': 1.0 } # pitch
|
||||||
- { 'hidden': True, 'default': 0.0 } # yaw
|
- { 'hidden': True, 'default': 0.0 } # yaw
|
||||||
2: # Rudder
|
4: # Rudder
|
||||||
- { 'hidden': True, 'default': 0.0 } # roll
|
- { 'hidden': True, 'default': 0.0 } # roll
|
||||||
- { 'hidden': True, 'default': 0.0 } # pitch
|
- { 'hidden': True, 'default': 0.0 } # pitch
|
||||||
- { 'min': 0.0, 'max': 1.0, 'default': 1.0 } # yaw
|
- { 'min': 0.0, 'max': 1.0, 'default': 1.0 } # yaw
|
||||||
3: # Left elevon
|
5: # Left Elevon
|
||||||
- { 'min': 0.0, 'max': 1.0, 'default': 1.0 } # roll
|
- { 'min': -1.0, 'max': 0.0, 'default': -0.5 } # roll
|
||||||
- { 'min': -1.0, 'max': 0.0, 'default': -1.0 } # pitch
|
- { 'min': 0.0, 'max': 1.0, 'default': 0.5 } # pitch
|
||||||
- { 'hidden': True, 'default': 0.0 } # yaw
|
- { 'hidden': True, 'default': 0.0 } # yaw
|
||||||
4: # Right elevon
|
6: # Right Elevon
|
||||||
- { 'min': 0.0, 'max': 1.0, 'default': 1.0 } # roll
|
- { 'min': 0.0, 'max': 1.0, 'default': 0.5 } # roll
|
||||||
- { 'min': 0.0, 'max': 1.0, 'default': 1.0 } # pitch
|
- { 'min': 0.0, 'max': 1.0, 'default': 0.5 } # pitch
|
||||||
- { 'hidden': True, 'default': 0.0 } # yaw
|
- { 'hidden': True, 'default': 0.0 } # yaw
|
||||||
|
7: # Left V Tail
|
||||||
|
- { 'hidden': True, 'default': 0.0 } # roll
|
||||||
|
- { 'min': 0.0, 'max': 1.0, 'default': 0.5 } # pitch
|
||||||
|
- { 'min': 0.0, 'max': 1.0, 'default': 0.5 } # yaw
|
||||||
|
8: # Right V Tail
|
||||||
|
- { 'hidden': True, 'default': 0.0 } # roll
|
||||||
|
- { 'min': 0.0, 'max': 1.0, 'default': 0.5 } # pitch
|
||||||
|
- { 'min': -1.0, 'max': 0.0, 'default': -0.5 } # yaw
|
||||||
|
|
||||||
|
- select_identifier: 'servo-type-tailsitter' # restrict torque based on servo type for tailsitters
|
||||||
|
apply_identifiers: ['servo-torque-roll-tailsitter', 'servo-torque-pitch-tailsitter', 'servo-torque-yaw-tailsitter']
|
||||||
|
items:
|
||||||
|
# Convention: horizontal surfaces: up=positive, vertical: right=positive, mixed: up=positive.
|
||||||
|
# No rules for control surfaces on tailsitter beside elevons.
|
||||||
|
5: # Left Elevon (Tailsitter --> wing vertical, so affects pitch and yaw)
|
||||||
|
- { 'hidden': True, 'default': 0.0 } # roll
|
||||||
|
- { 'min': 0.0, 'max': 1.0, 'default': 0.5 } # pitch
|
||||||
|
- { 'min': 0.0, 'max': 1.0, 'default': 0.5 } # yaw
|
||||||
|
6: # Right Elevon (Tailsitter -->wing vertical, so affects pitch and yaw)
|
||||||
|
- { 'hidden': True, 'default': 0.0 } # roll
|
||||||
|
- { 'min': 0.0, 'max': 1.0, 'default': 0.5 } # pitch
|
||||||
|
- { 'min': -1.0, 'max': 0.0, 'default': -0.5 } # yaw
|
||||||
|
|
||||||
config:
|
config:
|
||||||
param: CA_AIRFRAME
|
param: CA_AIRFRAME
|
||||||
|
@ -604,16 +636,16 @@ mixer:
|
||||||
- name: 'CA_SV_CS${i}_TYPE'
|
- name: 'CA_SV_CS${i}_TYPE'
|
||||||
label: 'Type'
|
label: 'Type'
|
||||||
function: 'type'
|
function: 'type'
|
||||||
identifier: 'servo-type'
|
identifier: 'servo-type-tailsitter'
|
||||||
- name: 'CA_SV_CS${i}_TRQ_R'
|
- name: 'CA_SV_CS${i}_TRQ_R'
|
||||||
label: 'Roll Scale'
|
label: 'Roll Scale'
|
||||||
identifier: 'servo-torque-roll'
|
identifier: 'servo-torque-roll-tailsitter'
|
||||||
- name: 'CA_SV_CS${i}_TRQ_P'
|
- name: 'CA_SV_CS${i}_TRQ_P'
|
||||||
label: 'Pitch Scale'
|
label: 'Pitch Scale'
|
||||||
identifier: 'servo-torque-pitch'
|
identifier: 'servo-torque-pitch-tailsitter'
|
||||||
- name: 'CA_SV_CS${i}_TRQ_Y'
|
- name: 'CA_SV_CS${i}_TRQ_Y'
|
||||||
label: 'Yaw Scale'
|
label: 'Yaw Scale'
|
||||||
identifier: 'servo-torque-yaw'
|
identifier: 'servo-torque-yaw-tailsitter'
|
||||||
- name: 'CA_SV_CS${i}_TRIM'
|
- name: 'CA_SV_CS${i}_TRIM'
|
||||||
label: 'Trim'
|
label: 'Trim'
|
||||||
parameters:
|
parameters:
|
||||||
|
|
Loading…
Reference in New Issue