Beat Küng
d202bf9631
control_allocator: add scope to reduce stack usage by 256B
2021-12-24 20:06:13 -05:00
Silvan Fuhrer
1ad66e606b
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>
2021-12-24 20:06:13 -05:00
Beat Küng
5259877b1b
control_allocator: update matrix normalization
...
- only normalize rpy for MC matrices
- for thrust use the 3D vector, so it works for FW and tilt rotors as well
This keeps MC unchanged.
2021-12-24 20:06:13 -05:00
Silvan Fuhrer
478724c9fe
EffectivenessTiltrotor: fix logic for matrix update
...
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-12-24 20:06:13 -05:00
Silvan Fuhrer
39d441317a
ActuatorEffectivenssTailsitterVTOL: only enable MC yaw control if more than 3 rotors
...
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-12-24 20:06:13 -05:00
Silvan Fuhrer
426aa76a59
CA/VTOL: change description of VT_ELEV_MC_LOCK as it applies to not just elevons
...
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-12-24 20:06:13 -05:00
Silvan Fuhrer
18008b2de7
CA module.yaml: add motor direction function also to UI for Tailsitter an Tiltrotor
...
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-12-24 20:06:13 -05:00
Beat Küng
8c782b7cd9
control_allocator: add Custom + MC with tilts effectiveness
...
The param group is changed to Geometry, as this reflects the naming in the
QGC UI.
2021-12-24 20:06:13 -05:00
Beat Küng
627ec0df5d
control_allocator: increase STACK_MAIN to 3000
...
It was exceeding 2000
2021-12-24 20:06:13 -05:00
Beat Küng
4d38742371
control_allocator: show VT_ELEV_MC_LOCK for vtol mixers in config ui
2021-12-24 20:06:13 -05:00
Silvan Fuhrer
07306c4be3
control_allocator: add support for Tailsitter VTOL
...
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
2021-12-24 20:06:13 -05:00
Beat Küng
4f8e6a9548
control_allocator: do not update params while armed
...
As a precaution
2021-12-24 20:06:13 -05:00
Beat Küng
e04b4a8dbf
control_allocator: add 6DOF configuration
2021-12-24 20:06:13 -05:00
Beat Küng
4c80adfaf1
control_allocator: implement trim + slew rate limits configuration
2021-12-24 20:06:13 -05:00
Beat Küng
8d9e2a28c4
control_allocator: add fixed-wing actuator effectiveness
2021-12-24 20:06:13 -05:00
Beat Küng
4d2a403afa
control_allocator: add rover actuator effectiveness
...
This can be generalized later
2021-12-24 20:06:13 -05:00
Beat Küng
ed3a115c8f
control_allocator: add status publication rate limitation comment
2021-12-24 20:06:13 -05:00
Beat Küng
70e46a194f
control_allocator: major refactoring & additions
...
- allow effectiveness matrix to select control allocator method
(desaturation algorithm)
- add actuator_servos publication
- add support for multiple matrices (for vtol)
- add updateSetpoint callback method to actuator effectiveness to allow it
to manipulate the actuator setpoint after allocation
- handle motor stopping & reversal
- add control surfaces & tilt servos
- handle standard vtol + tiltrotor
- rename MC rotors params & class to be more generically usable
- fixes and enables ActuatorEffectivenessRotorsTest
2021-12-24 20:06:13 -05:00
Beat Küng
9c767ff1ee
control_allocator: make effective source name a class member
2021-12-24 20:06:13 -05:00
Beat Küng
2809dd8944
control_allocator: remove min/max/scale params
2021-11-23 12:40:22 -05:00
Beat Küng
b29d9db7f1
control_allocator: limit status publication rate to 200Hz
...
Reduces CPU load by ~3.5% on F4 @2khz.
And compute getAllocatedControl as needed (~1.5% CPU reduction)
2021-11-23 12:40:22 -05:00
Beat Küng
bcba3dfe52
control_allocator,angular_velocity_controller: run on rate_ctrl wq
2021-11-23 12:40:22 -05:00
Beat Küng
a0e43bca96
msg: remove unused vehicle_actuator_setpoint topic
2021-11-23 12:40:22 -05:00
Beat Küng
52a2ef34fd
mixer_module: add THR_MDL_FAC for SYS_CTRL_ALLOC=1
2021-11-23 12:40:22 -05:00
Beat Küng
4346ac4a37
control_allocator: add mixer metadata
2021-11-23 12:40:22 -05:00
Beat Küng
f99c2617ad
control_allocator: add module.yaml, add CA_MC_R_COUNT param & update defaults
2021-11-23 12:40:22 -05:00
bresch
d47f9f155a
MC mixer: replace multirotor_motor_limits by control_allocator_status
...
CA: fix saturation computation
Since the CA matrix is normalized, the same scale applied to be used when using the effectiveness matrix
MCRateControl: use control_allocator_status to get saturation info
2021-11-09 10:35:10 -05:00
Beat Küng
183ab8bbe7
control_allocator: avoid default argument for virtual method getEffectivenessMatrix
...
clang tidy error:
/__w/PX4-Autopilot/PX4-Autopilot/src/modules/control_allocator/ActuatorEffectiveness/ActuatorEffectivenessMultirotor.cpp:50:34: error: default arguments on virtual or override methods are prohibited [google-default-arguments,-warnings-as-errors]
ActuatorEffectivenessMultirotor::getEffectivenessMatrix(matrix::Matrix<float, NUM_AXES, NUM_ACTUATORS> &matrix,
2021-10-18 18:45:19 -04:00
Beat Küng
38fa65a47e
control_allocator: remove direct mixer, add actuator_{motors,servos} instead
2021-10-18 18:45:19 -04:00
bresch
ba1b7f3a07
CA pseudo inverse: set all small elements in CA matrix to zero
...
This avoids problems in the sequencial desaturation method where vectors
of the CA matrix are used to desaturate the motors.
2021-10-08 09:35:40 +02:00
bresch
b18b7e84d2
CA pseudo-inverse: normalize control allocation matrix
2021-10-08 09:35:40 +02:00
Peter van der Perk
d5e3e9a7bc
[Kconfig] Decompose Kconfig, now each module has its own Kconfig
...
Which is better for versioning and decomposability
2021-10-07 10:09:01 -04:00
bresch
f09b34007e
CA: reload CA matrix to newly created CA class properly
...
Also remove the dependency of ActuatorEffectivenessMultirotor
to param update uORB topic; the CA module
sends a "force" parameter when needed
2021-09-11 15:07:49 -04:00
bresch
cf5917d188
control_allocator: restructure param update
...
recompute effectiveness on param change
clear update at the end
2021-09-11 15:07:49 -04:00
Beat Küng
291ca246d2
matrix: update submodule (improves matrix inversion)
2021-09-05 23:18:28 -04:00
Matthias Grob
b824f33ae9
battery: publish measured values also when battery not connected
2021-07-01 14:24:38 +02:00
Daniel Agar
3e5e5ab1d5
control_allocator and angular_velocity_controller throttle parameter_update subscription
2021-01-18 11:25:37 -05:00
Beat Küng
c36340d29a
ActuatorEffectivenessMultirotor: set effectiveness to zero when computing the matrix
...
Just to be on the safe side.
2021-01-18 11:25:37 -05:00
Beat Küng
212ec821b1
control_allocator: set unused actuators to trim instead of min
2021-01-18 11:25:37 -05:00
Beat Küng
3606f86518
control_allocator: ensure unused outputs are initialized to min
...
Mostly important in cases where the ouputs would change (e.g. param change)
2021-01-18 11:25:37 -05:00
Beat Küng
3dad79d8f5
control_allocator: inline one-line setters & getters
2021-01-18 11:25:37 -05:00
Beat Küng
164511a7b5
control_allocator: avoid vector copies and sqrt()
2021-01-18 11:25:37 -05:00
Beat Küng
0e66b0876b
control_allocator: change SequentialDesaturation to existing MC mixer
...
And limit the operations to the number of configured outputs.
Only using the number of configured actuators reduces CPU load by ~2% on
F7 @1khz.
2021-01-18 11:25:37 -05:00
Beat Küng
308f614735
refactor control_allocator: directly get the effectiveness matrix when updated
...
Reduces stack + RAM usage
2021-01-18 11:25:37 -05:00
Beat Küng
38782029ad
fix control_allocator: set _last_run at the correct place
2021-01-18 11:25:37 -05:00
Beat Küng
0e86ab47f6
fix control_allocator: use 'delete' instead of 'free', guard against out-of-memory
2021-01-18 11:25:37 -05:00
Beat Küng
066464c4e8
control_allocator: remove unused _task_start
2021-01-18 11:25:37 -05:00
Julien Lecoeur
343cf5603e
initial control allocation support
...
- control allocation module with multirotor, VTOL standard, and tiltrotor support
- angular_velocity_controller
- See https://github.com/PX4/PX4-Autopilot/pull/13351 for details
Co-authored-by: Silvan Fuhrer <silvan@auterion.com>
Co-authored-by: Roman Bapst <bapstroman@gmail.com>
2021-01-18 11:25:37 -05:00