Attendees (unique): 7
UTC0700
master ← rmackay9:tools-param-check-whitelist-update
opened 11:11AM - 09 Dec 25 UTC
This follow-up to PR https://github.com/ArduPilot/ardupilot/pull/31653 shortens … the [param_check_all.py](https://github.com/ArduPilot/ardupilot/blob/master/Tools/scripts/param_check_all.py) script's list of skipped files.
A number of the files were already fixed by the previous [PR](https://github.com/ArduPilot/ardupilot/pull/31653) but I've also corrected some obvious mistakes in other files.
The remaining files are QuadPlane and TradHeli files so perhaps I can ask the experts in those areas to tell me what's the parameters shown below should be changed to and then we can shorten the skip list further
Errors in Tools/Frame_params/**WLToys_V383_HeliQuad.param**:
H_COL_MID not found in metadata
H_LAND_COL_MIN not found in metadata
H_RSC_PWM_MAX not found in metadata
H_RSC_PWM_MIN not found in metadata
H_RSC_PWM_REV not found in metadata
IM_STAB_COL_1 not found in metadata
IM_STAB_COL_2 not found in metadata
IM_STAB_COL_3 not found in metadata
IM_STAB_COL_4 not found in metadata
Errors in Tools/Frame_params/**SkyWalkerX8.param**:
ELEVON_CH1_REV not found in metadata
ELEVON_CH2_REV not found in metadata
ELEVON_MIXING not found in metadata
ELEVON_OUTPUT not found in metadata
ELEVON_REVERSE not found in metadata
FBWA_TDRAG_CHAN not found in metadata
TRIM_AUTO not found in metadata
TRIM_RC_AT_START not found in metadata
Errors in Tools/Frame_params/**SkyWalkerX8_ReverseThrust.param**:
ELEVON_CH1_REV not found in metadata
ELEVON_CH2_REV not found in metadata
ELEVON_MIXING not found in metadata
ELEVON_OUTPUT not found in metadata
ELEVON_REVERSE not found in metadata
FBWA_TDRAG_CHAN not found in metadata
TRIM_AUTO not found in metadata
TRIM_RC_AT_START not found in metadata
Errors in Tools/Frame_params/**EFlight_Convergence.param**:
Q_A_RAT_PIT_FILT not found in metadata
Q_A_RAT_RLL_FILT not found in metadata
Q_A_RAT_YAW_FILT not found in metadata
Q_VXY_I not found in metadata
Q_VXY_P not found in metadata
Merged!
UTC0707
master ← IamPete1:syntheticAirspeedNudge
opened 03:18PM - 07 Dec 25 UTC
There is a mis-match between what plane was using to check for throttle vs airsp… eed nudge vs what TECS was using. This is a problem when using `TECS_SYNAIRSPEED` without a real sensor. The fix is to add a method to TECS and use it in plane.
This has been tested in SITL with `TECS_SYNAIRSPEED` 1, `ARSPD_USE` 0. Before the fix throttle nudge did not work, now it does.
Note that there is another change in behavior here, the `_update_pitch` TECS function was not using the `_use_synthetic_airspeed_once` flag.
Peter : The reset after use flag now isn’t getting reset after use, it’s used multiple times in the loop.
George : It’s meant to be used “once” per loop, not per use.
But now I’m a bit worried because the flag is used now both for the update control loop and the update 50Hz. But I think it’s ok.
Merged.
UTC0718
master ← peterbarker:pr/aeromind6x-unused-define
opened 02:59AM - 03 Dec 25 UTC
remnant from when this was copied sideways from Pixhawk6X - there's no user of t… his define except within hwdefs.
```
Board,blimp,bootloader,copter,heli,plane,rover,sub
Aeromind6X,-72,*,-80,-80,-72,-72,-72
```
(reduces size of embedded hwdef)
Merged!
UTC0719
master ← Georacer:pr/tecs_flare_sink_init
opened 12:42PM - 27 Nov 25 UTC
# Summary
This PR modifies the flare landing stage and the climb rate control… , to initialize the climb rate demand not from the current climb (sink) rate, but from the current climb rate **demand**.
# Details
I noticed in a [log posted in the forum](https://discuss.ardupilot.org/t/plane-4-6-release/134619/30?u=georacer) that when the flare starts, we snap the demanded climb rate to the current climb rate.
The original idea is to progressively fade in the flare climb rate, which is usually 0.
But what actually can happen is that if the current sink rate is different to the sink rate demand, it can result in abrupt pitch up or down demand. It can also lead to unintended loss of altitude at a very critical state of the landing.
A couple of examples from that log:
<img width="724" height="925" alt="Screenshot from 2025-11-27 13-21-25" src="https://github.com/user-attachments/assets/29d3468f-f457-483b-84e5-f37673e1cc86" />
<img width="724" height="925" alt="image" src="https://github.com/user-attachments/assets/125d3303-6138-4039-93bc-98cc6e403531" />
I think it's a better idea to initialize with the similar quantity of the climb rate demand instead.
# Testing
Tested in SITL, using the `MAV_CMD_DO_LAND_START` autotest.
Before:
<img width="724" height="925" alt="Screenshot from 2025-11-27 13-58-40" src="https://github.com/user-attachments/assets/85ef6d1a-41a5-4928-b0c2-607e92e62ba6" />
After:
<img width="724" height="925" alt="image" src="https://github.com/user-attachments/assets/6c005123-27b6-4bb4-bd4f-71443bbe3928" />
# Potential improvements
It would be better perhaps if we were holding on to `_hgt_rate_dem_prev`, but there's no such quantity yet.
Merged!
UTC0719
master ← peterbarker:pr/compass-helpers
opened 04:59AM - 27 Nov 25 UTC
(and adjust backends to take HAL::Device rather than HAL::I2CDevice)
This is … primarily to reduce the number of calls to `i2c_mgr->get_device` and `hal.spi->get_device` so moving away from OwnPtr is easier.
However, we also:
- remove memory leaks when driver disabled (the check for enablement is done inside add_backend, and we don't free the allocated backend if the thing is disabled via parameter
- save flash
- allow for more refactoring of the probing to avoid the FOR_EACH code generation
```
Board AP_Periph blimp bootloader copter heli iofirmware plane rover sub
CubeOrange-periph-heavy -2160 *
Durandal -2136 * -2136 -2136 -2136 -2136 -2136
Hitec-Airspeed * *
KakuteH7-bdshot -2064 * -2064 -2072 -2064 -2064 -2064
MatekF405 -1816 * -1824 -1816 -1816 -1816 -1816
Pixhawk1-1M-bdshot -1896 -1888 -1888 -1896 -1896 -1896
SITL_x86_64_linux_gnu * * * * * *
f103-QiotekPeriph 0 *
f303-MatekGPS 0 *
f303-Universal -1448 *
iomcu *
revo-mini 0 * 0 0 0 0 0
skyviper-v2450 0
speedybeef4 -1816 * -1816 -1824 -1816 -1816 -1816
```
Merge on CI Pass.
UTC0723
master ← TompsonTan:pr_add_board_X-MAV-AP-H743r1
opened 08:06AM - 24 Nov 25 UTC
Dear ArduPilot-Autopilot Developer, We are X-MAV, a new manufacturer of flight c… ontrollers. We have developed a flight controller AP-H743r1, We will keep developing it and want to add our flight controller to supported hardware.
Best regard!
Andy : I’ll review.
P : You should be able to set BOARD_SAFETY_ENABLE_DEFAULT and save yourself some memory, instead of setting it in the defaults.parm.
Merge on CI Pass.
UTC0729
master ← Georacer:pr/loweheiser_disable_autostart
opened 04:17PM - 22 Oct 25 UTC
# Summary
This PR removes support for auto-starting the Loweheiser generator.…
Now the user has to assign a starter switch channel and start the engine during IDLE state.
# Details
The reason is that, according to the manufacturer and a commercial user, it's not 100% reliable to use the starter (which is optional, as an alternative to a ripcord) so it's preferable for the user to trigger it intentionally.
Note: This PR has been re-written and re-coded from scratch.
This is a follow-up to https://github.com/ArduPilot/ardupilot/pull/29587.
# Known issues
After this PR, the engine won't auto-start any longer if the engine stalls mid-flight.
Also the user can't re-start it in-flight either, as starting is allowed only in IDLE state, and state changes are not allowed while armed.
Andrew : The subname LH is missing an underscore.
Peter : Not acting on NaN on the temperatures, means that the EFI might be powered off and we need to get off STOP and into IDLE, so as to turn the EFI on again.
UTC0748
master ← andyp1per:pr-height-baro-reset-rng
opened 03:21PM - 28 Sep 25 UTC
Trying to avoid EKF induced fly-aways indoors
Randy : There’s really no need for any mode to use GPS, if another position information source is available.
It’s not nice UX to have to disable the GPS cheks.
P : Why is GPS special; we could be checking for general location availability, there’s no need to be specific about it.
R : We do extra checks for GPS health, and these should not apply when AHRS doesn’t use GPS as its source.
Matt : This is very specific for the application, we probably need an option to ignore the GPS health during prearm checks.
P : Regarding the GPS checks, why not set HDOP_GOOD to 0 in order to ignore the check?
R : A user doing optical flow, they shoulnd’t be messing with irrelevant parameters.
P : It feels wrong to reach to AHRS and ask for its solution source, in order to decide on whether it’s okay to arm or not.
Andy : For Copter we might not have another way to do it correctly.
P : EKF3 is not the only AHRS source we support. How about external estimators?
R : As a counter argument, we are already doing this with use_compass().
P : Why is this specific to Copter, and not QuadPlane too?
Andy : Fair point.
P : It would be nice if the GPS checks were re-worked from Copter to up higher.
UTC0821
master ← peterbarker:pr/constrain-value-sanity-check
opened 08:49AM - 03 Aug 25 UTC
We have some code which can call constrain_float with the parameters around the … wrong way - and the method isn't really set up for that.
This will raise an error.
Alternatively we could rename "low" and "high" to "boundary1" and "boundary2" and magically switch them around depending on which is higher.
R : I’ll have to test this again.
Why are we changing this again?
P : Because this sanity check now triggers true negative in the autotests.
UTC0825
master ← peterbarker:pr/Write_MSG-chunk
opened 10:56AM - 25 Jun 25 UTC
MAVLink's STATUSTEXT has had these fields for years, but MSG has not.
When we… try to log a message we will break it into chunks which fit into MSG packets and add extra information so a tool can reassemble the long text.
This is MAVExplorer looking at the logs from the new autotest:
New:
```
2025-06-25 20:52:47.900 SRC=250/250:AT-0002.2: ##################################################################################
2025-06-25 20:52:47.900 SRC=250/250:AT-0002.2: ########## LoggerMsgChunks (create MSG dataflash entries for very long messages) ##########
2025-06-25 20:52:47.920 SRC=250/250:AT-0002.2: ##################################################################################
2025-06-25 20:52:47.920 SRC=250/250:AT-0002.2: Doing timesync roundtrip
2025-06-25 20:52:48.900 SRC=250/250:AT-0002.3: Received: TIMESYNC {tc1 : 9104781000, ts1 : 142250}
2025-06-25 20:52:48.900 SRC=250/250:AT-0002.3: Received TIMESYNC response after 0.000000s
2025-06-25 20:52:51.000 GPS 1: probing for u-blox at 230400 baud
2025-06-25 20:52:51.100 GPS 1: detected u-blox
2025-06-25 20:52:51.860 SRC=250/250:AT-0002.3: RC values good
2025-06-25 20:52:52.820 SRC=250/250:AT-0002.3: Changing mode to AUTO
2025-06-25 20:52:52.820 SRC=250/250:AT-0002.3: Sending COMMAND_LONG to (2,1) (MAV_CMD_DO_SET_MODE=176) (p1=1.000000 p2=10.000000 p3=0.000000 p4=0.000000 p5=0.000000 p6=0.000000 p7=0.000000)
2025-06-25 20:52:54.820 SRC=250/250:AT-0002.3: Got mode AUTO
2025-06-25 20:52:54.880 SRC=250/250:AT-0002.3: Sending param_request_read for (LOG_DISARMED)
2025-06-25 20:52:56.020 SRC=250/250:AT-0002.3: get_parameter(LOG_DISARMED): PARAM_VALUE {param_id : LOG_DISARMED, param_value : 1.0, param_type : 2, param_count : 1041, param_index : 65535}
2025-06-25 20:52:56.040 SRC=250/250:AT-0002.3: LOG_DISARMED has expected value 1.000000
2025-06-25 20:52:56.040 SRC=250/250:This is a short message
2025-06-25 20:52:56.040 SRC=250/250:This is undubitably a ridiculously verbose and needlessly wordy missive, unavoidably designed to exceed disappointingly miniscule log buffers
2025-06-25 20:52:56.920 SRC=250/250:AT-0002.3: Delaying 10.000000 seconds
2025-06-25 20:53:01.420 EKF3 IMU0 origin set
2025-06-25 20:53:02.000 Event: DATA_SET_HOME
2025-06-25 20:53:01.420 EKF3 IMU1 origin set
2025-06-25 20:53:06.940 SRC=250/250:AT-0002.5: log list: ['logs/00000001.BIN', 'logs/00000002.BIN']
2025-06-25 20:53:08.020 SRC=250/250:AT-0002.5: Disarm motors with MAVLink cmd
2025-06-25 20:53:08.920 SRC=250/250:AT-0002.5: Sending COMMAND_LONG to (2,1) (MAV_CMD_COMPONENT_ARM_DISARM=400) (p1=0.000000 p2=0.000000 p3=0.000000 p4=0.000000 p5=0.000000 p6=0.000000 p7=0.000000)
2025-06-25 20:53:08.940 SRC=250/250:AT-0002.5: ACK received: COMMAND_ACK {command : 400, result : 0, progress : 0, result_param2 : 0, target_system : 250, target_component : 250} (0.000000s)
2025-06-25 20:53:08.940 SRC=250/250:AT-0002.5: Waiting for DISARM
2025-06-25 20:53:09.000 Field Elevation Set: 343m
2025-06-25 20:53:09.900 SRC=250/250:AT-0002.5: Waiting for disarm (0.00s so far of allowed 30.00)
2025-06-25 20:53:09.999 PreArm: 3D Accel calibration needed
2025-06-25 20:53:10.820 SRC=250/250:AT-0002.5: DISARMED after 0.00 seconds (allowed=30.00)
2025-06-25 20:53:11.840 SRC=250/250:AT-0002.5: Rebooting SITL
2025-06-25 20:53:11.840 SRC=250/250:AT-0002.5: Sending param_request_read for (STAT_RESET)
2025-06-25 20:53:12.059 SRC=250/250:AT-0002.5: get_parameter(STAT_RESET): PARAM_VALUE {param_id : STAT_RESET, param_value : 1.0, param_type : 6, param_count : 1041, param_index : 65535}
2025-06-25 20:53:12.079 SRC=250/250:AT-0002.5: Sending param_request_read for (STAT_BOOTCNT)
```
Old:
```
1970-01-01 10:00:05.791 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:AT-0002.3: #####
1970-01-01 10:00:05.791 ##################################'
1970-01-01 10:00:05.791 SRC=250/250:AT-0003.6: m.Message='############################
1970-01-01 10:00:05.791 ###############'
1970-01-01 10:00:05.791 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:AT-0002.3: #####
1970-01-01 10:00:05.791 ##### LoggerMsgChunks (create MSG '
1970-01-01 10:00:05.791 SRC=250/250:AT-0003.6: m.Message='dataflash entries for very l
1970-01-01 10:00:05.791 ong messages) #######'
1970-01-01 10:00:05.791 SRC=250/250:AT-0003.6: m.Message='###'
1970-01-01 10:00:05.811 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:AT-0002.3: #####
1970-01-01 10:00:05.811 ##################################'
1970-01-01 10:00:05.811 SRC=250/250:AT-0003.6: m.Message='############################
1970-01-01 10:00:05.811 ###############'
1970-01-01 10:00:05.811 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:AT-0002.3: Doing
1970-01-01 10:00:05.811 timesync roundtrip'
1970-01-01 10:00:05.811 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:AT-0002.3: Recei
1970-01-01 10:00:05.811 ved: TIMESYNC {tc1 : 9122274000, t'
1970-01-01 10:00:05.811 SRC=250/250:AT-0003.6: m.Message='s1 : 142250}'
1970-01-01 10:00:05.811 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:AT-0002.3: Recei
1970-01-01 10:00:05.811 ved TIMESYNC response after 0.0000'
1970-01-01 10:00:05.811 SRC=250/250:AT-0003.6: m.Message='00s'
1970-01-01 10:00:05.811 SRC=250/250:AT-0003.6: m.Message='GPS 1: probing for u-blox at
1970-01-01 10:00:05.811 230400 baud'
1970-01-01 10:00:05.831 SRC=250/250:AT-0003.6: m.Message='GPS 1: detected u-blox'
1970-01-01 10:00:05.831 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:AT-0002.3: RC va
1970-01-01 10:00:05.831 lues good'
1970-01-01 10:00:05.831 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:AT-0002.3: Chang
1970-01-01 10:00:05.831 ing mode to AUTO'
1970-01-01 10:00:05.831 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:AT-0002.3: Sendi
1970-01-01 10:00:05.831 ng COMMAND_LONG to (2,1) (MAV_CMD_'
1970-01-01 10:00:05.831 SRC=250/250:AT-0003.6: m.Message='DO_SET_MODE=176) (p1=1.00000
1970-01-01 10:00:05.831 0 p2=10.000000 p3=0.00'
1970-01-01 10:00:05.831 SRC=250/250:AT-0003.6: m.Message='0000 p4=0.000000 p5=0.000000
1970-01-01 10:00:05.831 p6=0.000000 p7=0.000'
1970-01-01 10:00:05.851 SRC=250/250:AT-0003.6: m.Message='000)'
1970-01-01 10:00:05.851 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:AT-0002.3: Got m
1970-01-01 10:00:05.851 ode AUTO'
1970-01-01 10:00:05.851 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:AT-0002.3: Sendi
1970-01-01 10:00:05.851 ng param_request_read for (LOG_DIS'
1970-01-01 10:00:05.851 SRC=250/250:AT-0003.6: m.Message='ARMED)'
1970-01-01 10:00:05.851 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:AT-0002.4: get_p
1970-01-01 10:00:05.851 arameter(LOG_DISARMED): PARAM_VALU'
1970-01-01 10:00:05.851 SRC=250/250:AT-0003.6: m.Message='E {param_id : LOG_DISARMED,
1970-01-01 10:00:05.851 param_value : 1.0, par'
1970-01-01 10:00:05.851 SRC=250/250:AT-0003.6: m.Message='am_type : 2, param_count : 1
1970-01-01 10:00:05.851 041, param_index : 655'
1970-01-01 10:00:05.851 SRC=250/250:AT-0003.6: m.Message='35}'
1970-01-01 10:00:05.851 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:AT-0002.4: LOG_D
1970-01-01 10:00:05.871 ISARMED has expected value 1.00000'
1970-01-01 10:00:05.871 SRC=250/250:AT-0003.6: m.Message='0'
1970-01-01 10:00:05.871 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:This is a short
1970-01-01 10:00:05.871 message'
1970-01-01 10:00:05.871 SRC=250/250:AT-0003.6: Received short message
1970-01-01 10:00:05.871 SRC=250/250:AT-0003.6: m.Message='SRC=250/250:This is undubita
1970-01-01 10:00:05.871 bly a ridiculously verbose and nee'
1970-01-01 10:00:05.871 SRC=250/250:AT-0003.6: Text: This is undubitably a ridiculousl
1970-01-01 10:00:05.871 y verbose and nee
1970-01-01 10:00:05.871 SRC=250/250:AT-0003.6: m.Message='dlessly wordy missive, unavo
1970-01-01 10:00:05.871 idably designed to exc'
1970-01-01 10:00:05.871 SRC=250/250:AT-0003.6: Text: This is undubitably a ridiculousl
1970-01-01 10:00:05.871 y verbose and needlessly wordy missive, unavoidabl
1970-01-01 10:00:05.871 y designed to exc
1970-01-01 10:00:05.891 SRC=250/250:AT-0003.6: m.Message='eed disappointingly miniscul
1970-01-01 10:00:05.891 e log buffers'
1970-01-01 10:00:05.891 SRC=250/250:AT-0003.6: Text: This is undubitably a ridiculousl
1970-01-01 10:00:05.891 y verbose and needlessly wordy missive, unavoidabl
1970-01-01 10:00:05.891 y designed to exceed disappointingly miniscule log
1970-01-01 10:00:05.891 buffers
1970-01-01 10:00:06.051 SRC=250/250:AT-0003.6: set_parameters: ({})
1970-01-01 10:00:06.111 SRC=250/250:AT-0003.6: Doing implicit context-pop reboot
1970-01-01 10:00:06.111 SRC=250/250:AT-0003.6: Disarm motors with MAVLink cmd
1970-01-01 10:00:06.271 AHRS: EKF3 active
1970-01-01 10:00:06.871 EKF3 IMU0 tilt alignment complete
1970-01-01 10:00:06.871 EKF3 IMU1 tilt alignment complete
1970-01-01 10:00:06.951 EKF3 IMU0 MAG0 initial yaw alignment complete
1970-01-01 10:00:06.951 EKF3 IMU1 MAG0 initial yaw alignment complete
1970-01-01 10:00:07.111 SRC=250/250:AT-0003.6: Sending COMMAND_LONG to (2,1) (MAV_CMD_
1970-01-01 10:00:07.111 COMPONENT_ARM_DISARM=400) (p1=0.000000 p2=0.000000
1970-01-01 10:00:07.111 p3=0.000000 p4=0.000000 p5=0.000000 p6=0.000000
1970-01-01 10:00:07.111 p7=0.000000)
1970-01-01 10:00:07.131 SRC=250/250:AT-0003.6: ACK received: COMMAND_ACK {command : 40
1970-01-01 10:00:07.131 0, result : 0, progress : 0, result_param2 : 0, ta
1970-01-01 10:00:07.131 rget_system : 250, target_component : 250} (0.0000
1970-01-01 10:00:07.131 00s)
1970-01-01 10:00:07.131 SRC=250/250:AT-0003.6: Waiting for DISARM
1970-01-01 10:00:08.131 SRC=250/250:AT-0003.6: Waiting for disarm (0.00s so far of all
1970-01-01 10:00:08.131 owed 30.00)
1970-01-01 10:00:09.071 SRC=250/250:AT-0003.6: DISARMED after 0.00 seconds (allowed=30
1970-01-01 10:00:09.071 .00)
1970-01-01 10:00:10.071 SRC=250/250:AT-0003.7: Rebooting SITL
1970-01-01 10:00:10.071 SRC=250/250:AT-0003.7: Sending param_request_read for (STAT_RE
1970-01-01 10:00:10.071 SET)
1970-01-01 10:00:10.251 SRC=250/250:AT-0003.7: get_parameter(STAT_RESET): PARAM_VALUE
1970-01-01 10:00:10.251 {param_id : STAT_RESET, param_value : 1.0, param_t
1970-01-01 10:00:10.251 ype : 6, param_count : 1041, param_index : 65535}
1970-01-01 10:00:10.251 SRC=250/250:AT-0003.7: Sending param_request_read for (STAT_BO
1970-01-01 10:00:10.251 OTCNT)
1970-01-01 10:00:11.231 GPS 1: probing for u-blox at 230400 baud
1970-01-01 10:00:11.251 SRC=250/250:AT-0003.7: get_parameter(STAT_BOOTCNT): PARAM_VALU
1970-01-01 10:00:11.251 E {param_id : STAT_BOOTCNT, param_value : 3.0, par
1970-01-01 10:00:11.251 am_type : 4, param_count : 1041, param_index : 655
1970-01-01 10:00:11.251 35}
1970-01-01 10:00:11.271 SRC=250/250:AT-0003.7: Sending reboot command
```
Needs a little more work.
UTC0828
master ← andyp1per:pr-real-flight-stable-gyro
opened 07:54AM - 29 Apr 25 UTC
The current RealFlight approach means that we get highly variable loops and inte… r-loop dt's. This seems to significantly impact attitude control under arduous conditions. This PR generates high rate synthetic gyro samples that are sync'ed to the main loop's requests for samples. This results in very even loop dts whilst still ensuring that the latest data is always being used and appears to significantly help with attitude control.
A : I don’t understand what the frame number has to do there.
Andy : We had the IMU based on time, while they need to check whether the simulation is progressing in frames.
A : Wny not have a flag in SITL_State that is set in SIM_FlightAxis, to indicate whether we need to do frame-locking or not.
Andy : What we’re trying to do, is check if we have advanced a frame, not whether we are on lockstep.
A : Okay… but why is frame_num a value that needs to be checked.
UTC0834
master ← Georacer:pr/log_rangefinder_state
opened 10:12PM - 24 Nov 25 UTC
I've recently tried to debug some landing logs and I've always stumbled guessing… the rangefinder state information.
This PR adds logging of the whole structure.
P : Why not log it all the time?
G : I agree, but Pete wanted to constrain it.
P : Ah, okay then.