ArduPilot EU Dev Call 2026-09-23

Attendees (unique): 13

UTC0802

Reminder for Randy.


UTC0802

Peter: AI asks for changes.
Amilcar: The AI decided to request changes after I squashed.

  • There are a lot of new tests, which correspond to actual issues I stumbled upon.

UTC0806

Andrew: We can’t move MAVProxy to use pymavlink’s MAVFTP. FTP is still under development and I’d like to have the freedom to iterate more quickly, instead of going through pymavlink.
P: What’s the reasoning there? Why not use pymavlink?
A: I’d still like to evolve FTP to get more performance.

  • We’d need to split ArduPilot’s FTP in its own thread. In Plane at 50Hz scheduler rate the performance is just not there.

UTC0812

A: I don’t like this tool. Devs shouldn’t need this because they know to let the FC do the conversions.

  • Plain users should use a WebTool, which we would need to build, similar to the PID updage tool which is still getting used.

George: My issue is that this is not a solution for updating existing defeaults.parm files, typically found next to hwdef.bats.
Andy: I have the same issue.
Michelle: How do we know it catches all conversions?
G: We don’t. We can only build confidence through use.
M: What if someone tries to use it in a future patch with more param changes?
G: It won’t work.

Merged!


UTC0822


UTC0827

A: Renode is a valid test for covering logic changes. But its cache hierarchy is different, so the execution speed will be different.


UTC0835

Andy: Reading a pin also sets the pin mode. Under load in RPi the timings could be such that pin resets brown out the camera.
A: The fix should be in the HAL, not in the library. That glitch does not exist in the STM32.

  • Also, this re-apply logic is not exclusive to the relay, we do it in a bunch of places.
  • It will also break cases where Scripting sets the pin mode.
  • We are setting the pin mode each time because we can’t guarantee exclusive access of a pin to a library.

Closed!


UTC0842

P: Some increase in binary size.
A: I think the last time you would fuse 0 velocity, instead of not fusing at all.
Andy: I think I addressed that.
A: I don’t see an early return.

  • Ah, yes, it is controlled by flowDataToFuse.
  • As the PR stands, it will fuse data when you are landed. Is this intentional?

Andy: IIRC there would be an issue when you land, where the fusion would toggle rapidly.
Rishabh: Why not do the gating on the driver side, instead of the EKF? The EKF change increases complexity quite a bit.
Andy: Isn’t this a layering violation? I think it needs the EKF altitude to decide.
P: That probably won’t work well when you use the optical flow to fuze height.

  • Also it would not be nice if another estimator does want that data, but EK3 doesn’t want that data published.
    - Irrelevant: It seems we have broken the use of _HGT_OVR.

A: What if we put it in the input of the EKF, instead of the fusion step?
P: It’s not much different.

Summary: Andy will try to generalize for other types of altitude estimation.


UTC0906

Needs test/response from the author.

Merged!


UTC0907

Merged!


UTC0911

P: It would be nice to test it in renode, for LittleFS and SDCard boards.
A: This is actually not directly related to LittleFS.


UTC0919

Adds a tickmark on the Github repo security dashboard.

Merged!


UTC0920

Rishabh: I’ll review this after the call.

Approved!


UTC0926

P: We are essentially renaming the takeoff detected flag into movement detected. Is this correct and safe?
Rishabh: The threshold values seem arbitrary.
P: Seems the takeoff_detected flag is only used for logging.
Rishabh: TakeOffDetected is used for logic in the fusion of optical flow.
Andy: So in all only the optical flow library cares about this check.
Rishabh: Yes. Let’s rename it to hint to that, so that the flag is not re-used elsewhere in the EKF.


UTC0940

A: It’s a huge PR. Is it zero-binary change?
Andy: No, it’s not very simple to make it so.
A: Still, it would be nice to have the changes in a separate place, for easier inspection.

  • Similarly, splitting the bulk changes in a separate .c file would be more reassuring and easier to the file.

P: It would be reassuring to see the refactoring as a first commit. Then we could check if the most dangerous changes (for other boards) have adverse effects.
A: But that would be a lot of work to flip things around. Let’s not push for that too hard.
P: What is c1_main.c?
Buzz: It’s the main for the 2nd core.
A: It’s strange to have C-code in a board definition is quite strange.
P: That file looks like raw ARM instructions.
B: It’s basically initialization code for that 2nd core.
Andy: The 2nd core still runs ChibiOS stuff.
A: How about the new OSD features living in the RPi, insteadof AP_OSD?
Andy: Some is specific to the RPi.
A: They could easilly be living in AP_OSD, no?
Andy: This is stuff that lives directly in the processor, it’s not a separate chip.
A: Still, we want to try to create a more clear separation.
P: What loop rates can you sustain without a fast rate thread?
Andy: I can’t answer that, it’s not a simple question. Currently the setup requires fast rates and them executing on the 2nd core.
B: The execution speed would depend on the RAM layout in the core 0, so it’s complex. Perhaps we could do 200Hz?
A: So it sounds like it’s not a complete ArduPilot port, but a Copter with fast-rates port.
Andy: Gotta start somewhere.
A: So scripting is out of the question?
Andy: Yes. Primarilly to the lack of RAM.
Buzz: The internal RAM is 512kB. No external RAM. We currently use practically all of it, especially for the 1st core.
P: So this is less powerful than the F4 boards we want to deprecate.
A: That’s why I initially didn’t want to support these ships.
Andy: However, the general performance, with the way it’s setup, we get performance that is closer to H7. The chip is much cheaper too.
A: Yes, but only for your specific features and hardware configuration.
Andy: Next steps?
A: Addressing the review comments we made.

  • To be honest, my nightmare is for this port to become popular. It is very very focused on a particular feature configuration and users are going to raise a ton of questions and help requests when the feature they want doesn’t work well on their boards. It will make ArduPilot fragile and it’s a maintenance overhead. We’d have to juggle memory allocations any time the codebase changes just the wrong way.
  • That’s the reason we dropped the AVR boards.
  • How do we guarantee that future PRs won’t affect the performance of all the RPi boards?

Buzz: That’s not your problem, that’s mine and Andy’s.
A: The board will end up in master and thus in all future stables.
P: When we merge PRs the assumption is that the project as a whole will be responsible for regressions, not particular persons.
Andy: I don’t see how things would completely break. You could have performance degradation, but not a complete breakdown.

G: What if we create a very restrictive set of #define includes with just what Andy and Buzz have tested?
A: We would probably have to do that.

  • I’m looking at your log. The CPU hovers around 80% for LOITER. The free memory seems to be 165kB. But sys memory sayd you have 3.7kB free. What is wrong there? If that’s true, then you can’t do rally, smart RT and lots of other stuff.

Andy: That doesn’t sound right, I’ll go and verify that memory report.
A: There seems to be quite some free stack memory, which could be given back to memory.
Andy: Okay, we’ll address the existing comments and try to fly a more representative Copter configuration.


UTC1312

End