Minimalist ArduPilot firmware

Currently, ardupilot has a vast and amazing feature set, and can handle anything from scripting to in-flight processor recovery (Internal WD).

However, what if someone only intends on using it as a mere intermediary? For example, the flight controller just takes basic high level position / attitude commands from a companoin computer and its sole job is to keep the copter / plane / vehicle at that attitude / move it to that position.

Heres an example case: There is an onboard computer running some sort AI or computer vision algorithm, or maybe a SLAM, and tells the flight controller where it wants the drone to be. This will be very useful when developing fully autonomous AI pathfinding drones as we cannot get the machine learning algorithm running on an embedded processor due to resource limitations.

We can bring back the old apm / avr boards by doing this as this minimalist versoin may be light enoupgh to run on them (most of the heavy features can be stripped down).

Another use case for this is as a backup flight controller, in case the main one fails due to some reason (redundancy).

Before I get to work on the code and create a pull request, I would like to hear you guys’ opinion on this.

[edit]: Heres a survey done on companion computer usage: Companion Computer Trends 2020
(Thanks @stephendade !)
It strongly points towards what I have described.


1 Like

Don’t bother trying to port back onto the 8 bit boards. It’s not really worth explaining all the reasons not to: don’t waste your time on it, the results will not be worth it.
If you have the time and ability to create a minimal build, I’d suggest a flash constrained target with plenty of cpu, like the STM32F722.


I see… right, that sounds great. Thanks for the heads up! I do have a few stm32f4 's around, and i can try and get my hands on an f7. Thanks again!

1 Like

Plenty of people doing that. Typically, they’ll use GUIDED mode on ArduPilot, which responds to a stream of position commands. No needs to do any modifications to ArduPilot.


GUIDED from a companion is the way to go. If you insist on wanting to minimize, then u can easily build your own variant. I’d start by HAL_MINIMIZE_FEATURES , and if I want to go further look at APM_Config.h which has a big list of things you could disable if it makes you feel better… but I wouldn’t both, just use stock firmware and GUIDED till u know what u want

1 Like

RIght… I see. A miniamlist version would indeed be redundant…
But how about as a backup FMU, just a barebones, keep the drone from crashing, maybe RTL sort of thing that can run on a mediocre processor like an stm32f1 or similar?

That sounds great. How do your goals relate to competitions like “Rescuing Joe” as described here [] and UAV Challenge described here [] ?

1 Like

Right. So I went through the AP source, and as you guys have suggested, this is quite pointless (redundant) because the “guided” mode takes care of this very well… And there arent enough features to remove that really warrants a whole different release.

Thanks a lot for your help guys! I learned a lot about AP from this.

@stephendade, I was just wondering… How fast can this stream of position commands be? Are you talking about the MAVlink protocol or are there other (faster) ways to communicate with AP and control the attitude of the drone directly? (I’m aware MAVlink is capable of this, but is there a faster way?)

MAVLink is the supported method to send commands to the AP. There’s a list of position and attitude commands you can send at

I suspect you could get up to 10-30Hz streams.

1 Like

I suspect you could get up to 10-30Hz streams.

@stephendade I see… 30Hz is not too bad I guess.

There’s a list of position and attitude commands you can send at

Thanks for that!

@Vincent_Randal seems intresting! Thanks for giving me the details… I was looking for them.

Yeah, competitions like these will require the autopilot to act as an intermediary. But then again, GUIDED mode has got it covered.

Unless it is used as some form of backup FMU…