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
a81f11acdd
mc_rate_control: don't publish thrust + torque sp if vtol
2021-12-24 20:06:13 -05:00
Beat Küng
28e995ede2
fw_att_control: publish vehicle_thrust_setpoint & vehicle_torque_setpoint
2021-12-24 20:06:13 -05:00
Beat Küng
4becd6e4c7
rover: publish vehicle_thrust_setpoint & vehicle_torque_setpoint
2021-12-24 20:06:13 -05:00
Beat Küng
5da67e2e28
vtol_att_control: publish vehicle_thrust_setpoint & vehicle_torque_setpoint
2021-12-24 20:06:13 -05:00
Beat Küng
d1abdd0f8d
output drivers: add option to generate a separate output range reversing param
...
Makes it a bit easier to configure. Reversing by setting MIN > MAX is still
supported.
2021-12-24 20:06:13 -05:00
Beat Küng
1901edf13c
actuator_motors.msg: add reversible flags & implement in mixer_module
2021-12-24 20:06:13 -05:00
Beat Küng
ccc1f0e8fa
generate_actuators_metadata: minor additions (index_offset, item_label_prefix)
2021-12-24 20:06:13 -05:00
Beat Küng
81cef522fd
generate_params.py: fix bitmask param type
2021-12-24 20:06:13 -05:00
Beat Küng
5bcc5d3a13
generate_actuators_metadata.py: add mixer rules support
2021-12-24 20:06:13 -05:00
Beat Küng
230aae580f
ROMFS: add control_allocator to all types
2021-12-24 20:06:13 -05:00
Beat Küng
86aa9f9336
Makefile: exclude src/lib/crypto/libtommath from validate_module_configs
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
20d96f3bd9
metadata: fix BOARD_WITH_IO detection
...
Wasn't correctly updated during a rebase.
2021-12-24 20:06:13 -05:00
Beat Küng
89974c46b9
mavlink streams: add return in all cases
...
Generally not needed here, but GCC produced an error when compiling with
-finstrument-functions.
2021-12-22 08:47:33 -05:00
Beat Küng
e29759d877
WorkQueueManager: explicitly convert PTHREAD_STACK_MIN to int
...
fixes a compiler error on GCC 11.2.1:
error: no matching function for call to ‘max(long int, int)’
2021-12-22 08:47:33 -05:00
Beat Küng
f6ced71d26
pps_capture: make it configurable via output functions
2021-12-17 07:56:08 +01:00
Beat Küng
f76086ffa1
microRTPS_agent_CMakeLists.txt.em: add install section
2021-12-10 09:03:08 -05:00
Beat Küng
a9e918c7b2
fix ina226: use shunt param value
2021-12-10 09:03:08 -05:00
Beat Küng
a4ca298ee9
simulator_mavlink: handle MAV_TYPE_VTOL_RESERVED3
2021-12-10 09:03:08 -05:00
Beat Küng
7aed8c4f47
sd_bench: print errno on write failure
2021-12-10 09:03:08 -05:00
Beat Küng
80300c36b4
parameter units: add 'A' (Ampere)
2021-12-10 09:03:08 -05:00
Beat Küng
10f49c99ef
px4_add_gtest.cmake: add optional COMPILE_FLAGS, INCLUDES, EXTRA_SRCS and LINKLIBS
2021-12-10 09:03:08 -05:00
Beat Küng
87ec8839c4
px4/fmu-v5x: remove unused base_phy_DP83848C build variant
2021-12-10 09:03:08 -05:00
Beat Küng
aa96e39306
kconfig: do not inherit for recovery.px4board from default.px4board
2021-12-10 09:03:08 -05:00
Beat Küng
ca6df035b4
px4/fmu-v5x: add arch_io_pins dependency (required in init.cpp)
2021-12-10 09:03:08 -05:00
Beat Küng
0d1d454a4c
mavlink: add missing 'sensor_calibration' lib dependency
2021-12-10 09:03:08 -05:00
Beat Küng
cbd6e735ad
fix console_buffer: avoid potential deadlock when using dmesg over MAVLink shell
...
dmesg was locking the console buffer, then writing to stdout (a pipe in
the case of the MAVLink shell).
This might block, waiting for mavlink to read from the pipe. If however
mavlink tries to write to the console at that time, the lock is already
taken.
This patch avoids nested locking by using a separate buffer.
2021-11-30 08:49:52 -05:00
Beat Küng
5bec3004c3
omnibus/f4sd: disable RGBLED to reduce flash
2021-11-24 11:41:33 +01:00
Beat Küng
99d3b2a4e4
omnibus/f4sd: disable modules to reduce flash
2021-11-23 12:40:22 -05:00
Beat Küng
db2a1e5fee
px4/fmu-v2: disable modules to reduce flash
2021-11-23 12:40:22 -05:00
Beat Küng
950767f1af
holybro/kakutefy: disable modules to reduce flash
2021-11-23 12:40:22 -05:00
Beat Küng
4c03def6e9
boards: add CONTROL_ALLOCATOR + ACTUATOR_TEST
2021-11-23 12:40:22 -05:00
Beat Küng
312d84ca23
metadata: run json schema validation for actuators + parameter metadata
2021-11-23 12:40:22 -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
93a54ee63d
metadata: fix generic param metadata generation
...
Adds the module.yaml params that was previously split into a separate file.
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
357a16aca6
pwm_out_sim: split module.yaml into HIL+SIM files
2021-11-23 12:40:22 -05:00
Beat Küng
b94c5db55d
component_information: add actuators json generation & CI deployment
2021-11-23 12:40:22 -05:00
Beat Küng
70b1b19902
uavcan: add configuration parameter to actuator metadata
2021-11-23 12:40:22 -05:00
Beat Küng
19b89e1d35
output_functions: add notes to camera trigger + capture & exclude from testing
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
282d35bbf0
esc_calibration: handle SYS_CTRL_ALLOC==1
2021-11-23 12:40:22 -05:00
Beat Küng
490a2cd7ae
dshot: handle VEHICLE_CMD_CONFIGURE_ACTUATOR
2021-11-23 12:40:22 -05:00
Beat Küng
21699935e8
vehicle_command: add VEHICLE_CMD_ACTUATOR_TEST and VEHICLE_CMD_CONFIGURE_ACTUATOR
2021-11-23 12:40:22 -05:00
Beat Küng
6fdcc43ea8
mixer_module: add testing for SYS_CTRL_ALLOC=1 with actuator_test cmd+uorb msg
2021-11-23 12:40:22 -05:00
Beat Küng
36296794c8
module config: add generate_actuators_metadata.py script
2021-11-23 12:40:22 -05:00
Beat Küng
36d9635518
output_functions.yaml: allow single-instance entry with 'start' but no 'count'
...
for other additional data
2021-11-23 12:40:22 -05:00
Beat Küng
5d6e785a4b
mixer_module: remove unneeded test_motor_s force init
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
Beat Küng
dbc889a2ae
rc.mc_apps: remove 'param set MPC_USE_HTE 0' for control allocation
...
this is working now
2021-11-23 12:40:22 -05:00
Beat Küng
2ff6baa250
actuator params: use module_name as prefix to channel label
2021-11-23 12:40:22 -05:00
Beat Küng
6537f480b1
module.yaml: make long param description optional
...
Some params are very simple and don't need more.
2021-11-23 12:40:22 -05:00
Beat Küng
7faaad79d0
generate_params.py: add PWM_AUX_* for boards w/o IO and >8 channels
2021-11-22 09:07:23 -05:00
Beat Küng
0622cb8857
mavlink_ftp: disallow writes outside of /fs/microsd under NuttX
...
As these files are kept in RAM, it could just fill up the RAM.
2021-11-16 12:34:16 -05:00
Beat Küng
4ba84d56c9
logger: introduce optional topics
...
The current practice of adding topics to the default set isn't scalable,
as it affects all setups.
By making sure topics are advertised on init, logger can just discard
topics that don't exist. This does not work for all topics, so topics are
specifically marked as optional. It can be extended to more topics later
on though.
This reduces the list of topics by ~35 on a pixracer configured as quad,
and reduces RAM usage by ~1KB.
2021-11-15 09:02:03 -05:00
Beat Küng
fdf8461452
ver: print PX4_BOARD_LABEL for 'ver all'
2021-11-11 08:38:42 -05:00
Beat Küng
296db60a58
camera_capture: use output functions for pin configuration if SYS_CTRL_ALLOC==1
2021-11-05 12:36:04 -04:00
Beat Küng
6d993a9301
camera_trigger: use output functions for pin configuration if SYS_CTRL_ALLOC==1
2021-11-05 12:36:04 -04:00
Beat Küng
0decdb1c7b
github action: run ./Tools/generate_board_targets_json.py in container
...
As it requires kconfiglib
2021-10-27 15:23:23 +02:00
Beat Küng
de488f0f40
omnibus/f4sd: add topic listener & change timer order
...
So it matches the usage in the channel definition order
2021-10-27 08:03:55 +02:00
Beat Küng
8476875b4d
Kconfig: add missing serial ports
2021-10-27 08:03:55 +02:00
Beat Küng
48344c6e2a
state_machine_helper: add missing 'break' (no behavior change)
2021-10-27 08:03:55 +02:00
Beat Küng
c0f75b1c79
dshot: add missing '#pragma GCC diagnostic push'
2021-10-20 08:11:07 +02:00
Beat Küng
8a2b310b83
topic_listener: avoid code generation, use existing metadata at runtime
...
This reduces flash size for v5 by ~110KB, the topic listener now only adds
about 1.2KB.
2021-10-20 08:10:05 +02:00
Beat Küng
a0e72b35a4
replay: ignore ULogMessageType::PARAMETER_DEFAULT messages
2021-10-20 08:10:05 +02:00
Beat Küng
4c73ac3805
uorb: use single byte for internal types in o_fields metadata
...
Reduces flash usage by ~9KB.
2021-10-20 08:10:05 +02:00
Beat Küng
3e9c88e48e
px4/fmu-v5 test, uavcanv0periph: disable modules to reduce flash
2021-10-18 18:45:19 -04:00
Beat Küng
da1df5352c
fix pwm: only update oneshot timers owned by the current pwm_out instance
...
This fixes the case where oneshot was enabled with multi-instance pwm_out,
triggering oneshot updates too close to each other and as a result could
lead to spinning motors while disarmed.
2021-10-18 18:45:19 -04:00
Beat Küng
cc1d24a5fe
ci compile_nuttx: disable fail-fast
...
So that all failures can be evaluated.
2021-10-18 18:45:19 -04:00
Beat Küng
d01f2b1d40
cubepilot/cubeorange test: disable uavcan to reduce flash usage
2021-10-18 18:45:19 -04:00
Beat Küng
dbd4426271
nxp/fmurt1062-v1: set CONSTRAINED_FLASH
2021-10-18 18:45:19 -04:00
Beat Küng
e36a8f3765
ROMFS: disable vtol airframes for kakutef7
2021-10-18 18:45:19 -04:00
Beat Küng
f1686b1abf
px4io: add dynamic mixing support
2021-10-18 18:45:19 -04:00
Beat Küng
837a1066e0
px4io, pwm_out: update pwm default checking
...
The defaults changed in the previous commit for per-channel params,
so we make sure that the overall params are still used as long as the
per-channel params are default.
2021-10-18 18:45:19 -04:00
Beat Küng
ab1d76ae7d
params: use PWM_MAIN_* instead of PWM_FMU_*
2021-10-18 18:45:19 -04:00
Beat Küng
ba4a1ec6c4
boards/px4/io-v2: swap timer definitions
...
So that the ordering of the generated params make more sense.
TIM1 is now for channels 2-4 instead of 5-8.
2021-10-18 18:45:19 -04:00
Beat Küng
319e90961b
output_groups_from_timer_config.py: fix timer index
...
The implementation assumed timers are defined in the same order as used
in the channels. This could lead to a mismatch between TIMx param and
actual timer config.
Now we use the actual array index, same as in the code.
2021-10-18 18:45:19 -04: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
563cf61126
module_schema.yaml: add actuator_output section
...
The parameter additions are only used internally for the pwm generator.
2021-10-18 18:45:19 -04:00
Beat Küng
8b3ab7e36d
fix pwm_out: ensure up_pwm_servo_arm() is never continuously called
...
This happened with multi-instance, when the second instance did not load
a mixer. Then the first instance would always return false in
update_pwm_out_state, and continuously call up_pwm_servo_arm.
This led to irregular pulses, e.g. with an output set to fixed 1500us, I
saw pulses of e.g. 1800us occationally (they were in a range of
[1500-2100]).
2021-10-18 18:45:19 -04:00
Beat Küng
838ec5d485
airframes: set output function params for ctrlalloc airframes
2021-10-18 18:45:19 -04:00
Beat Küng
44bbe87165
pwm_out_sim: use PWM_FMU for sitl and HIL_ACT for hitl
...
We might want to change this later, but for now it allows to use the same
airframe configs for sitl/real, and independent hitl configuration.
2021-10-18 18:45:19 -04:00
Beat Küng
2b039b2af8
px4/fmu-v6x: add capture pins to list of pwm pins
2021-10-18 18:45:19 -04:00
Beat Küng
4e0e2dec57
fmu-v6u: add capture pins to list of pwm pins
2021-10-18 18:45:19 -04:00
Beat Küng
4a4acf7ead
px4/fmu-v5x: add capture pins to list of pwm pins
2021-10-18 18:45:19 -04:00
Beat Küng
faf481df31
modalai/fc-v2: remove unused DIRECT_PWM_CAPTURE_CHANNELS define
2021-10-18 18:45:19 -04:00
Beat Küng
d28dd5cc14
holybro/pix32v5: add capture pins to list of pwm pins
2021-10-18 18:45:19 -04:00
Beat Küng
d9bf03b2dc
holybro/durandal-v1: add capture pins to list of pwm pins
2021-10-18 18:45:19 -04:00
Beat Küng
0ab4a24de8
px4/fmu-v5: add capture pins to list of pwm pins
2021-10-18 18:45:19 -04:00
Beat Küng
a01cf2efc0
rc.mc_apps: allow to set COM_PREARM_MODE with control allocation
...
This is safe now.
2021-10-18 18:45:19 -04:00
Beat Küng
21c1671693
pwm_out_sim: add dynamic mixing support
2021-10-18 18:45:19 -04:00
Beat Küng
0871b7974d
uavcan_v1: add dynamic mixing support
2021-10-18 18:45:19 -04:00
Beat Küng
ae15ad14a8
tap_esc: add dynamic mixing support
2021-10-18 18:45:19 -04:00
Beat Küng
35ce6d1b73
pca9685_pwm_out: add dynamic mixing support
2021-10-18 18:45:19 -04:00
Beat Küng
955179e992
linux_pwm_out: add dynamic mixing support
2021-10-18 18:45:19 -04:00
Beat Küng
c1e5e666f0
pwm_out, dshot: add dynamic mixing support
2021-10-18 18:45:19 -04:00