Attendees (unique) : 13
UTC0702
master ← peterbarker:pr/vagrant-test-fixes
opened 03:46AM - 08 Apr 26 UTC
### Summary
Avoids copying the builds directory when making the local copy du… ring testing
### Classification & Testing (check all that apply and add your own)
- [x] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [x] Infrastructure change (e.g. unit tests, helper scripts)
- [ ] Automated test(s) verify changes (e.g. unit test, autotest)
- [x] Tested manually, description below (e.g. SITL)
- [ ] Tested on hardware
- [ ] Logs attached
- [ ] Logs available on request
### Description
we do this copy for speed - but having the build directory makes your configures fail until you remove it.
So just don't copy it in the first place.
Merged!
UTC0703
master ← peterbarker:pr/prereqs-tidy
opened 03:44AM - 08 Apr 26 UTC
### Summary
forces any supported OS to be listed in install_prereqs_ubuntu.sh… before we will attempt to install on it
### Classification & Testing (check all that apply and add your own)
- [x] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [x] Infrastructure change (e.g. unit tests, helper scripts)
- [ ] Automated test(s) verify changes (e.g. unit test, autotest)
- [x] Tested manually, description below (e.g. SITL)
- [ ] Tested on hardware
- [ ] Logs attached
- [ ] Logs available on request
### Description
this change will mean that you can't run on some derivative we do not actually understand exists.
We almost certainly would not have run on such a platform.
This will allow us to retire code from this file which is completely stale.
Peter : We don’t support the latest (and undocumented) Ubuntu releases. This was true before, but through breaking operations. Now we gracefully fail.
There is another PR to add the next Ubuntu release.
Merged!
UTC0709
master ← peterbarker:pr-claude/skyviper-v2450-inline-fmuv3
opened 12:40AM - 08 Apr 26 UTC
### Summary
SkyViper-v2450 inherits from fmuv3, but it actually doesn't bear … a huge similarity to it.
Inline the fmuv3 hwdef then prune out the obvious stuff but keep binary-output identical.
### Classification & Testing (check all that apply and add your own)
- [x] Checked by a human programmer
- [x] Non-functional change
- [x] No-binary change
- [ ] Infrastructure change (e.g. unit tests, helper scripts)
- [ ] Automated test(s) verify changes (e.g. unit test, autotest)
- [ ] Tested manually, description below (e.g. SITL)
- [ ] Tested on hardware
- [ ] Logs attached
- [ ] Logs available on request
```
Board,copter
skyviper-v2450,*
```
### Description
This only removes the obvious stuff - where fmuv3 set something and this unset it.
Future PRs will save at least 32kB and remove a whole bunch more lines, and simplify this hwdef making it a good example for other similar projects in the future.
These include:
``` ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬────────────┐
│ Item │ Size │
│ │ change │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────┤
│ 19 unused SPIDEV entries (ms5611, hmc5843, lsm9ds0_*, mpu9250*, icm20948*, icm20602_ext, ramtron, external0m*, │ -936 B │
│ pixartPC15, pixartflow) │ │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────┤
│ 6 unused CS pins (MAG_CS, GYRO_EXT_CS, BARO_EXT_CS, ACCEL_EXT_CS, BARO_CS, MPU_EXT_CS) — must go with SPIDEVs, build │ bundled │
│ fails otherwise │ │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────┤
│ HAL_HAVE_IMU_HEATER 1 │ -992 B │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────┤
│ BOARD_CHECK_F427_USE_1M │ -112 B │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────┤
│ PA15 TIM2_CH1 ALARM (buzzer) │ -248 B │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────┤
│ ROMFS io_firmware.bin (IOMCU firmware) │ -29208 B │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┴────────────┘
```
P : Still no binary change, in the future will remove IOMCU.
Merged!
UTC0711
master ← katzfey:qurt-apps-side-msgs
opened 04:23PM - 07 Apr 26 UTC
### Summary
1. Added console printf message output to apps side for display s… o that mini-dm isn't always required to see messages.
2. Added an option to use adb to load code onto target instead of just rsync
### Classification & Testing (check all that apply and add your own)
- [ X] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [ X] Infrastructure change (e.g. unit tests, helper scripts)
- [ ] Automated test(s) verify changes (e.g. unit test, autotest)
- [ X] Tested manually, description below (e.g. SITL)
- [ X] Tested on hardware
- [ ] Logs attached
- [ ] Logs available on request
P : This is well-tested.
Merged!
UTC0713
master ← tpwrules:pr/ek3-update-state-first
opened 07:20PM - 06 Apr 26 UTC
### Summary
Update `stateStruct` before calling `ConstrainVariances` as the l… atter can change `stateStruct` in rare cases. Some functions do this already so not all needed to be updated. Mainly this is to make all the fusion functions look the same, it is unlikely this has a meaningful runtime benefit.
### Classification & Testing (check all that apply and add your own)
- [X] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [ ] Infrastructure change (e.g. unit tests, helper scripts)
- [X] Automated test(s) verify changes (e.g. unit test, autotest)
- [X] Tested manually, description below (e.g. SITL)
- [ ] Tested on hardware
- [ ] Logs attached
- [ ] Logs available on request
No replay change.
### Description
As above.
We think it looks ok, but we’ll give Paul some time to answer too.
UTC0723
master ← peterbarker:pr-claude/start-flying-mission
opened 01:27AM - 05 Apr 26 UTC
### Summary
De-duplicate code used to start flying mission
### Classificat… ion & Testing
- [x] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [x] Infrastructure change (e.g. unit tests, helper scripts)
- [x] Automated test(s) verify changes (e.g. unit test, autotest)
- [ ] Tested manually, description below (e.g. SITL)
- [ ] Tested on hardware
- [ ] Logs attached
- [ ] Logs available on request
### Description
De-duplicate the load_mission → change_mode('AUTO') → wait_ready_to_arm → arm_vehicle sequence that appeared in five places in arduplane.py and one place in quadplane.py.
Merged!
UTC0724
master ← Huibean:pr-fix-sdmmc1-axi-alloc-alt-ram-map
opened 01:31AM - 02 Apr 26 UTC
### Summary
fix DMA buffer allocation for SDMMC1 with USE_ALT_RAM_MAP
### … Classification & Testing (check all that apply and add your own)
- [x] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [ ] Infrastructure change (e.g. unit tests, helper scripts)
- [ ] Automated test(s) verify changes (e.g. unit test, autotest)
- [ ] Tested manually, description below (e.g. SITL)
- [x] Tested on hardware
- [ ] Logs attached
- [x] Logs available on request
### Description
To fix a bug that casue SDCard mount failed when enable ```USE_ALT_RAM_MAP``` on H7 board with SDMMC1
`USE_ALT_RAM_MAP` places AXI SRAM as `memory_regions[0]`, but `malloc_flags()` has no fast-path for `MEM_REGION_FLAG_AXI_BUS`, causing SDMMC1's IDMA buffer to be allocated in inaccessible memory. Fix by adding the missing fast-path, mirroring the existing `MEM_REGION_FLAG_DMA_OK` logic.
Tested on STM32H743 with `USE_ALT_RAM_MAP`. SDMMC1 SD card mounts successfully.
How to reproduce:
add ```env USE_ALT_RAM_MAP 1``` in hwdef.dat with H7 board using SDMMC1 for SDCard
related issue:
- https://discuss.ardupilot.org/t/sdmmc-not-working-on-h7-controller/123375
- https://github.com/ArduPilot/ardupilot/issues/31546
<img width="1996" height="1582" alt="image" src="https://github.com/user-attachments/assets/db2fd63d-6cd7-4da2-b433-156c907082b9" />
Huibean presented live a hardware debug session of the issue.
Andrew : Approved!
In the future we want to deprecate the SRAM1 map, not handle it specially.
UTC0735
master ← Huibean:pr-lte-modem-improve-re-registration-handling
opened 11:17AM - 03 Apr 26 UTC
### Summary
improve LTE Modem registration handling
### Classification & T… esting (check all that apply and add your own)
- [x] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [ ] Infrastructure change (e.g. unit tests, helper scripts)
- [ ] Automated test(s) verify changes (e.g. unit test, autotest)
- [x] Tested manually, description below (e.g. SITL)
- [x] Tested on hardware
- [ ] Logs attached
- [x] Logs available on request
### Description
Allow re-registration, when registration failed instead of stuck in loop
Before:
To Reproduce below issue, keep connection for hours(over night)
```
[11:04:01.017 ] Info: LTE_modem: step CREG
[11:04:00.017 ] Info: CREG: 3: registration denied
[11:04:00.017 ] Info: LTE_modem: step CREG
[11:03:59.017 ] Info: CREG: 3: registration denied
```
To Reproduce below issue, unplug antenna and plug back
```
AP: CREG: 0: not registered, not searching
AP: LTE_modem: step CREG
AP: CREG: 0: not registered, not searching
AP: LTE_modem: step CREG
AP: CREG: 0: not registered, not searching
```
After fixed:
```
AP: LTE_modem: step CREG
AP: CREG: 3: registration denied
AP: LTE_modem: re-registering
AP: LTE_modem: step CREG
AP: CREG: 0: not registered, not searching
AP: LTE_modem: re-registering
AP: LTE_modem: step CREG
AP: CREG: 2: not registered, searching
AP: LTE_modem: step CREG
AP: LTE_modem: CREG OK
AP: LTE_modem: step CIPMODE
AP: LTE_modem: transparent mode set
AP: LTE_modem: step NETOPEN
AP: LTE_modem: network opened
```
A : I wonder if it will also work for other LTE modems.
Better use the section with steps specific to each modem, at the top of the file. Make it specific to SimCom modems.
UTC0740
master ← andyp1per:pr-spoolup-reporting
opened 07:50PM - 18 Mar 26 UTC
Some timing changes in the spool-up code and refactoring of the spool-up block m… ean that we get spurious errors on arming. This PR changes the checks to only start happening once spin min is reached which is the point at which the motors are ready to go unlimited. The timeout has also been changed to start timing from that point giving the motors a little time to settle before erroring to the user.
## Testing (more checks increases chance of being merged)
- [X] Checked by a human programmer
- [X] Tested in SITL
- [X] Tested on hardware
P : Let’s have Leonard approve as well.
R : Does the problem highlighted here affect 4.7 too?
Andy : Yes, I’m running my tests on top of 4.6.
UTC0743
master ← andyp1per:pr-ekf3-height-datum
opened 08:59PM - 08 Mar 26 UTC
## Summary
Fix baro drift accumulating as permanent altitude error when arming,… particularly for indoor/no-GPS flight where baro is the sole height source.
### Problem
When a vehicle sits on the ground, baro drifts from temperature changes. On master, resetHeightDatum() is only called when home is not yet set. If home was already set (from GPS before going indoors, or from AHRS_ORIGIN parameters), the accumulated baro drift persists as altitude error after arming -- up to several metres on small copters.
### Changes
**AP_NavEKF3: Fix baro height datum reset bug** (Paul Riseborough)
- Clear baro data buffer, output buffers, and velocity state in resetHeightDatum() to prevent stale data from corrupting the reset
**AP_NavEKF3: fix resetHeightDatum guards and height fusion during ground effect**
- Use inFlight guard instead of !onGround -- baro drift can make onGround false while the vehicle is stationary on the ground
- Allow datum reset with rangefinder active when onGroundNotMoving (EK3_RNG_USE_HGT blending sets active source to rangefinder on ground)
- Do not adjust EKF_origin altitude in resetHeightDatum -- changing it puts origin out of sync with baro field elevation, causing persistent altitude errors in the baro fallback path
- Guard lastHgtPassTime_ms reset on baro availability to prevent false height validity when baro is disabled
- Suppress ResetHeight() during ground effect when baro is available
- Support negative EK3_GND_EFF_DZ as baro observation noise floor in metres
**AP_NavEKF3: ensure EK3 does not read GPS when disabled**
- Add missing core_index to getPosXYSource() / getPosZSource() calls
**Copter: always reset EKF height datum on arming**
- Call resetHeightDatum() unconditionally on arming so altitude starts at zero
- When set_home_to_current_location fails (no GPS), update home altitude to match origin
- Reset ground effect takeoff timer while land_complete is true so timeout counts from actual liftoff
**autotest: add BaroDriftResetOnArm test**
- GPS-lost scenario: GPS sets home, GPS disabled, baro drifts 9m, arm -- verifies altitude resets to zero
- AHRS origin scenario: no GPS, origin from AHRS_ORIGIN parameters, baro drifts 9m, arm -- verifies fix works for indoor flight
- Both subtests fail on master (drift persists at ~9m), pass with fix (altitude resets to ~0m)
## Test plan
- [x] BaroDriftResetOnArm -- passes on PR, fails on master
- [x] AltEstimation -- passes
- [x] FarOrigin -- passes
- [x] EKFSource -- passes
- [x] Build for SITL
A : We’ll need Paul to re-review the most recent changes.
Randy : I’m worried that the first commit (skipping measurements when GPS is not enabled) should not be part of this PR. It’s notionally irrelevant. And I think it’s now fixed elsewhere by Rishabh.
Andy : Yes, it’s strictly not part of this PR.
R : I think the scope of this PR is too wide. I would really want it to be about one bug and one fix.
Another case which will break after this PR: You take off from your garden, you fly to the mountain. You land and disarm. You re-arm, and suddenly your home is still in your garden, but your home altitude is on the mountain.
A : In Plane, we allow small barometer offset changes, to adapt to the atmospheric changes, but not large ones, which are more likely actual changes in home altitude.
UTC0817
master ← andyp1per:pr-ins-low-noise
opened 08:57PM - 08 Mar 26 UTC
## Summary
- Add `AP_INERTIALSENSOR_LOW_NOISE` define that boards can set in … their hwdef to indicate a low-noise IMU configuration
- When enabled, reduce EKF3 gyro bias learning limits (`GYRO_BIAS_LIMIT` from 0.5 to `radians(2.0)` and `InitialGyroBiasUncertainty` from 2.5 to 1.0) since low-noise IMUs don't need as wide bias estimation range
This allows boards with known low-noise IMUs (e.g. ICM-42688-P with good vibration isolation) to get tighter EKF tuning automatically, improving convergence speed and reducing false bias estimates.
## Test plan
- [x] Build with `AP_INERTIALSENSOR_LOW_NOISE0` (default) - verify unchanged behavior
- [x] Build with `AP_INERTIALSENSOR_LOW_NOISE1` in hwdef - verify tighter bias limits
- [x] SITL test comparing EKF3 gyro bias convergence with and without the flag
- [x] Verify no build warnings or errors on common boards
A : I was expecting a method that returns the drift estimate as a float number.
I wonder how those two bias levels came to be.
Andy : Paul gave them to me.
A : Based on the datasheet, it is reasonable that he used the maximum temperature range, doubled the corresponding bias and rounded it. OK.
UTC00837
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.
Peter : You might end up with an EFI turned off, while on the ground disarmed.
George : How?
Peter : Don’t remember.
UTC0849
master ← andyp1per:pr-ekf3-zervel
opened 08:55PM - 08 Mar 26 UTC
## Summary
- Fuse synthetic zero velocity when stationary on the ground to cons… train gyro bias and Z-axis accel bias learning. XY accel biases remain unobservable on the ground and are inhibited by dvelBiasAxisInhibit
- Applies in all aiding modes: AID_NONE uses zero velocity instead of the large _noaidHorizNoise fake velocity, and AID_RELATIVE/AID_ABSOLUTE modes fuse zero velocity when no real velocity sensor data is available (e.g. optical flow configured but stationary)
- Gated on onGroundNotMoving to avoid injecting zero velocity when the vehicle is being moved
- **Inhibit all accel bias learning when on ground and moving** (e.g. carried on a utility belt or on a boat). Previously only the gravity-alignment check was used, which allowed the gravity-aligned axis to learn biases from external motion. Adding onGroundNotMoving to dvelBiasAxisInhibit prevents incorrect biases that could cause velocity drift after takeoff
- Broaden updateMovementCheck() to run unconditionally when on ground (previously gated on yaw source type)
## Test plan
- [x] EK3_AccelBiasInhibitOnGroundMoving - verifies bias NOT learned during ground movement (SIM_SHIP), and IS learned when stationary. **Fails on master, passes with fix**
- [x] EK3_AccelBiasZeroVelOptFlow - verifies Z-bias convergence with optical flow config (no GPS) via zero velocity fusion
- [x] EK3AccelBias - existing test still passes (no regression)
- [x] Verify no regression in normal GPS flight
A : I’m happy with it.
P : Let’s wait for Pete Hall’s approval.
(George had to drop off)