Hi,
I would like to start using PixHawk-compatible SW for trying some ideas, which require modifying the code. I know that you can upload Ardupilot or PX4 into these things, but I am pretty confused about differences between the two options.
I thought that PX4 is built for potentially more powerful HW with research purposes in mind, and the main differences are in reliability and in the fact that you get e.g. event-based processing, HAL, SITL, HITL, easy custom motor mixing etc. But I was told that the Ardupilot actually shares most of the code with PX4.
I would like to ask you: Is there some good comparison of pros/cons between Ardupilot and PX4, so that I can make a reasonable decision what to use, without reading the code bases? E.g. what is in PX4 and not in Ardupilot?
(I would like to keep this general, but my use case would be some custom VTOL frame - something between this and Joby Lotus. I bought PixRacer. I am not aiming for any advanced vision/lidar/SLAM now, but rather for good aerobatic flight characteristics (nonstop plane/copter motor mixing) and some missions/planning. And the thing should be testable in some good simulator.)
Thank you for any input!
Asked the same here, but without much luck yet.
fundamentally they’ll both fly most things, but it’s the peripheral things where they probably vary more. I’ll try to stay with facts here as much as I can:
1 - license - PX4 is BSD, ArduPilot is GPL; this means that people modifying and then selling ardupilot are obligated to make their modifications open. ( but only if you sell product with ardupilot in it ). Any company who forks px4 is essentially closing their modifications off from the world and doing their own thing with it.
2 - ArduPilot runs on a bunch of hardware, including Linux. Last I heard px4 was moving to run on linux, but couldn’t yet. http://ardupilot.org/copter/docs/common-autopilots.html
3 - ArduPilot is more mature, having been in development for a longer time ( circa 2009 ). px4 didn’t exist till 2012.
4 - ArduPilot dev team flight test every single release, including having multiple beta/s before each release. We take crashes very seriously, especially betas, and won’t go from beta to release if we have known crash-causing issues. This takes a lot of time, so we typically release in the order of every 1-6 months ( vehicle specific ) for “release” builds that normal users fly. https://github.com/ArduPilot/ardupilot/blob/master/ArduCopter/ReleaseNotes.txt I’m not an expert of px4, but I see them dropping releases sometimes daily. https://github.com/PX4/Firmware/releases I don’t know how they flight-test all that.
5 - Ardupilot is very proud of it’s real-world “position hold” (loiter) for copter/s, including outdoors, in the wind and turbulence. It’s a very complex algorithm that gives great results. I’ve never flown px4 myself, but I’ve seen plenty of videos, and I’ve never seen it perform as well as ardupilot does… unless they are flying indoors with nil wind, or have improved it recently.
I’m sure there’s more, but that’s some of the reasons I stay with ArduPilot.
This is interesting, I was under the impression that PX4 was an iteration between APM and Pixhawk. So, Mission Planner “is” Ardupilot, correct?
I am running MP 1.3.41 and having some issues with the Alt Hold and Loiter. I am trying to access my logs but MP is not cooperating. I am near the step of reflashing the whole thing again, maybe there is an update I do not know about.
This has been somewhat educational, but I don’t want to thread jack this post so… Thanx.
Anyway, thank you for a great explanation (now I moved from “almost certainly PX4” to “seems that it will be Ardupilot”).
So with your description I see two main differences now:
different licensing, which leads to
more features available in Ardupilot, more users and more reliable code base.
Now from the side of features, are you aware of something worth noticing that is missing in Ardupilot?
E.g. is there custom motor mixing comparably easy with the PX4?
Thanks!
@bd5wingnut: I believe that it is the case of parts of the common code. They both use MAVLINK, so that Ardupilot and PX4 are both compatible with MissionPlanner.
The custom/easy mixer in PX4 is both a strength, and a massive weakness. It makes it quick and easy to get new vehicle types flying. But it also means that PX4’s flight controls are nothing more than really simple PID loops. This is highly over-simplified. This is why you will usually only see PX4 flight video in a laboratory, or on a windless days, and at low speeds, etc. Generally low performance flight.
Ardupilot has extremely sophisticated control systems. This prevents using flexible mixers. But, results in high performance flight.
Here’s a clear example of the relative performance. Here’s the state of the art flight performance for PX4 on a helicopter:
And here’s what Ardupilot is doing:
Basically, PX4 gets you little more than a basic UAV operating system. Ardupilot, is ready to go to work. Just that simple.
Ok, now this makes a perfect sense and it is probably the most important aspect for deciding what to use.
So for fast testing new frames (what is not in Ardupilot) PX4 is a way to go. If the prototype is proven to be good, then it is good to try to employ the Ardupilot advanced &a less flexible stuff.
The Airbus drone delivery challenge project moved from PX4 to Ardupilot when they finally found out that PX4 couldn’t fly the big quad-plane properly. So you could ask them.
I’m trying to find information about the subject too, but he comments here seem outdated. The video posted above clearly shows the data of the Pixhawk helicopter as 2009… we are in 2018. So is not fair to compare those videos.
It may be true that indeed ArduPilot is more mature, but I’m those videos are no proof.
@Jose_Colmenares it’s like anything where most people invest their limited time in one thing or the other, but not both. Android users will tell you Android is better, iPhone users will tell you iPhone is better. Most normal people don’t own both. I don’t think you’re going to find any good information where someone tried both and compared things side by side with a detailed write up.
Like most things the truth is probably somewhere in between. Android will be better in some areas, iPhone in others. How that aligns with your specific requirements and expectations is even harder to answer. For most of the core use cases you’ll likely be fine either way. Things get more interesting when you get to the point that you need to extend what either platform currently offers.
+1 on what Dagar wrote.
Here’s something I wrote a while back on the subject, a bit long-ish and possibly biased (yet I sure tried not to), it might help …
It is worth noting that Ardupilot is now moving to a ChibiOS operating system - improving the efficiency of the code significantly. The current Ardupilot development on ChibiOS allows smaller/slower processors to be used far more efficiently than PX4 can.
There hasn’t been a side by side test afaik, so whilst the ChibiOS switch is looking awesome for ArduPilot, unless we have data we can’t really compare to px4: basically I think what @dagar said above remains true, as besides personal opinion and preference, no one has published a detailed performance (or even feature) comparison that I’m aware of.
Highly inaccurate though. The two key points in that article are the code structure and license — both of which are more matters of opinion or context than of objective merit.
Almost everything else applies to both code stacks, or is wrong.
I found PX4 was slightly quicker and easier to set up for a first-timer, and relatively easy to get to first flight. Overall a good starting point and could still be employed professionally. There was nothing really wrong with using PX4 but we wanted spline waypoints and it was reported that AC had better performance in wind.
Ardupilot ( copter for me ) has been a jump up from PX4 with more features, more setup and LOTS more learning. It’s been a tougher road but rewarding.
One of the best things about Ardupilot is the continuous development, the community, and especially how close the developers and end-users are.
Agree with PX4 and first setup ! But it’s more about GCS configuration than firmware.
(I found Qgroundcontrol more intuitive than Mission Planner, may be because I’m a linux guy … Mission planner looks like more a windows thing, all you look for is not here in the first time :-/ ! Example on camera trigger with Qgroundcontrol is evident whereas in Mission Planner for the first time is an headache.)
PX4 on copter report to have poor performance in windy condition (If we watch video on youtube about yuneec, it’s not like that ! 8-9 beaufort scale and copter still stable) but what about flying wing ? Wingtra uses PX4 firmware and handle wind in hover and flying wing, with high power 8S but it works !
I don’t understand “ardupilot is [in] continuous development” because PX4 seems to be also in continuous development. But support seems less important due to less users IMO and confusing for some (less messages on forum and social network, people don’t know there is 2 different firmware).
Please note that in my case, I’m not selling any drone and I don’t want to act that one fw is better than another, I’m just a user.
Yes I agree about QGC, it seems like the obvious choice when you’re on Linux.
Much of the rest of the points, as you say, are perception and not actually any real faults or negatives with either ecosystem.
The wind peformance thing was just something we’d been told and not necessarily fact, but it influenced our shift to Arducopter.