Commit Graph

65783 Commits

Author SHA1 Message Date
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
Tom Pittenger 5503ac204e Tools: update WSL2 use in uploader.py 2024-12-02 11:31:35 -08:00
Thomas Watson da4fee5a9a autotest: fix testing and simulated register scaling
* make test actually test something

* fix scaling to match datasheet values
2024-12-02 10:10:01 -06:00
Thomas Watson adfc415cff SITL: fix testing and simulated register scaling
* make test actually test something

* fix scaling to match datasheet values
2024-12-02 10:10:01 -06:00
Thomas Watson 6abbefde12 autotest: allow assertion of mavlink message array elements 2024-12-02 10:10:01 -06:00
Thomas Watson 190c3aa7ab AP_BattMonitor: INA3221: fix up based on real experience
* correctly validate channel parameter and improve other parameter
access

* dynamically enable channels to avoid spending time converting unused
channels

* implement tracking of reading health

* correct reading scaling by using datasheet values

* accumulate measured current to track used mAh and Wh

* make configurable using #defines (and hwdef) for integrators

* correctly separate and lock frontend and backend state. Note that
_state of frontend can only be accessed in `read()` method.
2024-12-02 10:10:01 -06:00
Peter Barker cc4110140c Tools: add support for ina3221 triple-channel current/voltage sensor 2024-12-02 10:10:01 -06:00
Peter Barker 4cfbeb11e3 SITL: add support for ina3221 triple-channel current/voltage sensor 2024-12-02 10:10:01 -06:00
Peter Barker 5bc3b629f4 AP_BattMonitor: add support for ina3221 triple-channel current/voltage sensor 2024-12-02 10:10:01 -06:00
Baris 6efeef9cec Tools: added name to GIT_Success.txt 2024-12-02 13:11:21 +00:00
Andrew Tridgell 53ee7d6e75 AP_InertialSensor: fixed check for changes to notch filters
if the configured freq changes on any type of notch then A and Q
change, so init must be called. This does not affect only Fixed
notches
2024-11-30 17:59:47 +11:00
Jonathan Challinger 564879594e AP_NavEKF3: fix computation of rho 2024-11-29 19:20:05 +11:00
Andrew Tridgell 10209a2a13 AP_Scripting: added UltraMotion servo driver 2024-11-28 09:24:03 +11:00
Andrew Tridgell 1c6ac0990c AP_Scripting: added UltraMotion servo driver
see https://www.ultramotion.com/servo-cylinder/
2024-11-28 09:24:03 +11:00