Commit Graph

65846 Commits

Author SHA1 Message Date
Andrew Tridgell 4c0ef40d3b AP_Periph: fixed IMU in periph
wait_for_sample() can't handle very low sample rates without a
separate delay() by a ms value
2024-12-10 09:29:37 +11:00
Andrew Tridgell 02ea371eae hwdef: added baro in HolybroG4_GPS
new units have a ICP201XX baro

disable baro by default to avoid issues with airflow and GPS modules
installed on the outside of the aircraft
2024-12-10 09:29:37 +11:00
Andrew Tridgell 4d31a7320a AP_InertialSensor: stop sensors converging if motors arm
if the user arms within 30s of startup then stop the re-init of the
sensors. This can give less accurate frequency as the sample rate may
not have settled yet, but it is better than doing init of the filters
while the vehicle may be flying

also fix a 32 bit millis wrap
2024-12-09 07:40:48 +11:00
Andrew Tridgell 8e1acb10fd Filter: enable 4 filters on low-flash boards 2024-12-09 07:40:06 +11:00
Andrew Tridgell 7a0af16d6c Tools: allow PID filtering to be enabled on custom build server
we have a small plane with a SpeedyBeedF405Wing, 1M flash, that needs
PID filtering for some structural modes
2024-12-09 07:40:06 +11:00
Iampete1 e4de4c9b41 AP_Scripting: Examples: message_interval: give checker a hint about types 2024-12-08 08:09:06 +09:00
shen 9d21b3396e hwdef: Add AEROFOX H7 2024-12-07 18:10:09 +11:00
shen f9285112a8 Tools: add AEROFOX H7 bootloaders 2024-12-07 18:10:09 +11:00
Andy Piper ad539ffa03 AP_RCTelemetry: add missing CRSF scheduler table entry 2024-12-05 10:03:27 -06:00
Randy Mackay 1308efb9a4 AP_Scripting: promote video-stream-information to applet 2024-12-05 16:46:48 +09:00
Randy Mackay 3325bdd7df AP_Scripting: set-video-stream-info encoding binding and docs 2024-12-05 16:46:48 +09:00
Randy Mackay 6f6613fefd AP_Camera: set-stream-information loses send-text 2024-12-05 16:46:48 +09:00
Thomas Watson d7b26a2205 AC_AutoTune: fix tracking of maximum angular acceleration
Issue introduced in https://github.com/ArduPilot/ardupilot/pull/27370
and partially fixed in https://github.com/ArduPilot/ardupilot/pull/27762,
though evidently not properly tested.

Failing to track the maximum can result in dangerously low values being
calculated for `ATC_ACCEL_[RPY]_MAX` and the vehicle becoming unflyable.

Make the variable a reference so that the maximum value is preserved
between function calls.
2024-12-05 09:18:56 +09:00
George Zogopoulos 9a5f81aa95 Plane: Added check for takeoff level-off timeout
When an airspeed sensor is not used, during a takeoff, the pitch angle
is asymptotically driven to 0 as the takeoff altitude is approached.
Some airplanes will then stop climbing and fail to reach altitude.

To prevent an indefinite wait for the takeoff altitude to be reached, a
dedicated level-off timeout has been introduced.
2024-12-04 18:07:30 +11:00
George Zogopoulos 768b2eabc4 autotest: Created test for unsuccessful takeoff level off 2024-12-04 18:07:30 +11:00
Andy Piper 3ed6ada2e3 Copter: allocation failure on rate thread start 2024-12-04 07:45:05 +11:00
Andy Piper 88f6125a94 AP_InertialSensor: belt and braces checks 2024-12-04 07:45:05 +11:00
Andy Piper 277386e6e2 AP_HAL_ChibiOS: add cork()/push() check 2024-12-04 07:45:05 +11:00
Andy Piper 4b0fa15278 AP_InertialSensor: address review comments 2024-12-04 07:45:05 +11:00
Andy Piper 96a70df75b Copter: address review comments 2024-12-04 07:45:05 +11:00
Andy Piper 3d43f2053f Copter: move RTDT logging to fast path
log after motor output in fast rate thread
2024-12-04 07:45:05 +11:00
Andy Piper 8fc4a6a6e9 AP_HAL_ChibiOS: add comments to force_push on rcout 2024-12-04 07:45:05 +11:00
Andy Piper 398a70ec4b AP_InertialSensor: avoid multiple allocations of rate loop buffer
add nullptr checks and comments to FastRateBuffer
2024-12-04 07:45:05 +11:00
Andy Piper c823374986 Copter: ensure decimated rates are never 0 in rate thread 2024-12-04 07:45:05 +11:00
Andy Piper 6db09c9fdd AP_InertialSensor: keep a queue of gyro samples for use by the rate thread
decimate the gyro window locally
configure rate loop buffer based on AP_INERTIALSENSOR_FAST_SAMPLE_WINDOW_ENABLED
allow backends to be updated from rate thread
output debug error if rate loop buffer overruns
add support for updating filter parameters independently of propagating samples
add rate loop config abstraction that allows code to be elided on non-copter builds
must be using harmonic notch to use rate thread
mediate fast rate loop buffer using mutex and binary semaphore
ensure gyro samples are used when the rate loop buffer isn't

Co-Authored-By: Andrew Tridgell <andrew@tridgell.net>
2024-12-04 07:45:05 +11:00
Andy Piper dcf25200c6 Copter: correctly set fast rate thread rates 2024-12-04 07:45:05 +11:00
Andy Piper 21106380b3 waf: add rate loop config abstraction that allows code to be elided on non-copter builds 2024-12-04 07:45:05 +11:00
Andy Piper ba6da82f07 scripts: add AP_INERTIALSENSOR_FAST_SAMPLE_WINDOW_ENABLED to build_options.py and extract_features.py 2024-12-04 07:45:05 +11:00
Andy Piper a3de217dee AP_HAL_ChibiOS: ensure dshot rate can be set dynamically
honour the requested dshot rate as near as possible
2024-12-04 07:45:05 +11:00
Andy Piper 3cc4b1991c AP_HAL_ChibiOS: compile MambaH743v4 at -O2 2024-12-04 07:45:05 +11:00
Andy Piper 048a3af785 AP_HAL_ChibiOS: allow forcing of trigger_groups() 2024-12-04 07:45:05 +11:00
Andy Piper 76897e9674 AP_HAL: set HAL_INS_RATE_LOOP in boards
restrict rate loop to H7 and F7
2024-12-04 07:45:05 +11:00
Andy Piper c4ab8e25c4 AP_HAL: allow forcing of trigger_groups() 2024-12-04 07:45:05 +11:00
Andrew Tridgell 6ac35ce9af AP_Vehicle: use update_dynamic_notch() directly in rate loop 2024-12-04 07:45:05 +11:00
Andy Piper 31dc7a85bf autotest: add rate thread autotest 2024-12-04 07:45:05 +11:00
Andy Piper f84c855dd1 Copter: run copter attitude control with separate rate thread
run motors output at rate thread loop rate
allow rate thread to be enabled/disabled at runtime for in-flight impact testing
setup the right PID notch sample rate when using the rate thread the PID notches
 run at a very different sample rate
call update_dynamic_notch_at_specified_rate() in rate thread
log RTDT messages to track rate loop performance
set dt each cycle of the rate loop thread
run rate controller on samples as soon as they are ready
detect overload conditions in both the rate loop and main loop
decimate the rate thread if the CPU appears overloaded
decimate the gyro window inside the IMU
add in gyro drift to attitude rate thread
add fixed-rate thread option
configure rate loop based on AP_INERTIALSENSOR_FAST_SAMPLE_WINDOW_ENABLED
better rate loop thread decimation management
ensure fix rate attitude is enabled on arming
add rate loop timing debug
update backend filters rather than all the backends
provide more options around attitude rates
only log attitude and IMU from main loop
force trigger_groups() and reduce attitude thread priority
migrate fast rate enablement to FSTRATE_ENABLE
remove rate thread logging configuration and choose sensible logging rates
conditionally compile rate thread pieces
allow fast rate decimation to be user throttled
if target rate changes immediately jump to target rate
recover quickly from rate changes
ensure fixed rate always prints the rate on arming and is always up to date
add support for fixed rate attitude that does not change when disarmed
only push to subsystems at main loop rate
add logging and motor timing debug
correctly round gyro decimation rates
set dshot rate when changing attitude rate
fallback to higher dshot rates at lower loop rates
re-factor rate loop rate updates
log rates in systemid mode
reset target modifiers at loop rate
don't compile in support on tradheli
move rate thread into its own compilation unit
add rate loop config abstraction that allows code to be elided on non-copter builds
dynamically enable/disable rate thread correctly
add design comment for the rate thread

Co-authored-by: Andrew Tridgell <andrew@tridgell.net>
2024-12-04 07:45:05 +11:00
Randy Mackay eaf20db6ea AP_Scripting: ahrs/ekf origin script promoted to an applet 2024-12-03 11:15:00 +11:00
Iampete1 a79fcdbfcd Plane: support DO_RETURN_PATH_START misison item and command 2024-12-03 10:31:02 +11:00
Andrew Tridgell 445c03c69c AP_ServoTelem: added active mask
and fixed typo in logging
2024-12-03 07:38:17 +11:00
Andrew Tridgell bf5555ccd3 AP_DroneCAN: actuator status is measured, not commanded 2024-12-03 07:38:17 +11:00
Andrew Tridgell 13807f24d7 AP_Periph: added simulation of DroneCAN servo status
allows for testing of DroneCAN servo logging in SITL
2024-12-03 07:38:17 +11:00
Iampete1 a47aaef2b4 Tools: scripts: build options and extract features: add `AP_Servo_Telem` 2024-12-03 07:38:17 +11:00
Iampete1 b9dd814935 Tools: ardupilotwaf: add `AP_Servo_Telem` to common vehicle libraries 2024-12-03 07:38:17 +11:00
Iampete1 38c3257151 AP_Vechicle: add `AP_Servo_Telem` and call at 50Hz 2024-12-03 07:38:17 +11:00
Iampete1 e003cc511d add `AP_Servo_Telem` 2024-12-03 07:38:17 +11:00
Iampete1 d0bbc02995 AP_Logger: remove `Write_ServoStatus` and `CSRV` definition 2024-12-03 07:38:17 +11:00
Iampete1 9be1a751da AP_Volz_Protocol: send incomming servo telem data to new `AP_Servo_Telem` lib 2024-12-03 07:38:17 +11:00
Iampete1 71137dac31 AP_PiccoloCAN: send incomming servo telem data to new `AP_Servo_Telem` lib 2024-12-03 07:38:17 +11:00
Iampete1 d5c29735d6 AP_DroneCAN: send incomming servo telem data to new `AP_Servo_Telem` lib 2024-12-03 07:38:17 +11:00
Iampete1 2863dcfb94 AP_Logger: add new unit `t` for torque in N.m 2024-12-03 07:38:17 +11:00