PX4 Sapog - advanced open source ESC from the PX4 team

Hi everyone,

A part of the PX4 team has been working on an open source ESC since late 2013. The objectives we had in mind were roughly as follows:

  • BSD licensed codebase.
  • CAN bus interface (using UAVCAN as a high level protocol), with specific sub-goals:
    • low latency;
    • ESC status monitoring, at least health, temperature and RPM;
    • automatic and transparent for the user firmware upgrades.
  • Better alternative to the popular RCPWM BLDC controllers in terms of reliability and response characteristics.

The project was first known as PX4ESC, later renamed into Sapog for reasons of clarity. After about two and half years of development and experimenting, the first, for-developers-only release was announced at the ELC 2016 (slides here). Now, a few months after that, we're announcing that the project is finally ready for public release, and that the first ESC based on this project - Zubax Orel 20 - is now available from Titan Elite, Inc.

Zubax Orel 20, pictured on the right, is rated for supply voltage 9~18 V (3~4S LiPo) and continuous motor currents up to 20 A. More info can be gathered from the documentation page at the Zubax Docs website.

We welcome all companies that specialize in electric drive systems for UAV to consider extending their product portfolio with UAVCAN enabled solutions. In order to encourage this move, we're planning to release the reference hardware sources under a permissive Creative Commons license.

It should be emphasized that all of the features of Sapog are exposed via UAVCAN, an open and royalty-free protocol standard. We encourage all vendors of UAV avionics to support it, since relying on a common and open ecosystem is beneficial for everyone. For ease of migration we're providing MIT-licensed libraries in C++, C, and Python. Here we have a small collection of demo scripts that demonstrate how to access the capabilities of Sapog, or any other UAVCAN-interfaced ESC, using plain Python from a regular desktop computer: https://docs.zubax.com/sapog/direct_control_via_uavcan.

More information:

Views: 5221

Comment by Johnatan on August 20, 2016 at 2:50pm

What are the differences between Zubax orel 20 and the new CANESC from AUAV (http://www.auav.co/product-p/esc-30.htm)?

Why the one from AUAV is cheaper even though it has higher AMP?

Do not they both use same firmware?

Comment by Pavel Kirienko on August 20, 2016 at 2:52pm

CANESC from AUAV has no firmware, it's hardware only. I guess it is targeted for developers. Sapog is not compatible with CANESC from AUAV.

Comment by Johnatan on August 20, 2016 at 3:18pm

A 40-50a and 50$ would be a better suit for most of applications.

Comment by Subatomic on August 20, 2016 at 6:08pm

Hate to be the newbie here, but can anyone briefly explain what advantages this ESC has over others in the market. Especially, what is FOC in layman terms.  I'm always looking for an advantage for my 250 racing quads and have no problem paying the price, but what advantage will these ESCs provide other than improved reliability? How is the performance improved over others. Thanks in advance!

Comment by Gary McCray on August 20, 2016 at 7:16pm

Hi Subatomic,

These are CAN bus interfaced instead of standard PWM of other ESCs.

For the most part unless you are using a flight controller that can output to CAN based ESCs you can't even use these.

CAN bus control potentially offers several advantages, but right now I'd say these are more for commercial use and these are a bit anemic for the larger copters even there.

In standard PWM ESCs KDE are probably about the best you can get and do have some interesting enable-able features such as dynamic braking which really might be be an asset for racing.

They are not cheap, even for their smallest 20 amp one but they do come in a variety of sizes and capabilities. They do not have an on board BEC because they are opto isolated but there are inexpensive add on UBECs if you need one (You don't need KDEs overpriced really high current one.)

If I am stating anything inaccurately here, please feel free to correct it.

Best Regards,

Gary McCray

Comment by Digital Wings on August 20, 2016 at 7:57pm
I like where you are going with this. I like the health feedback feature.

Comment by DavidJames on August 20, 2016 at 8:14pm

I just noticed that these ESCs have a PPM input and can be configured to run off the standard PPM interface.    No health feedback unless the UAVCAN interface is used though.

This ESC might be have an advantage for racing because it has PID control of prop speed.   This ESC controls the motor speed in response to the command not just the applied PWM duty cycle.

Comment by Gary McCray on August 20, 2016 at 8:52pm

Sorry, I didn't notice it has PWM control as well.

And certainly if you can simply use PWM as indicator and program motor response curve separately that is a worthwhile capability.

What would be even better is true feedback control like bigger brushless motors using Hall devices.

Unfortunately RC type brushless motors that do that are few and far between. - Like - Zero.

Best Regards,


Comment by John Arne Birkeland on August 21, 2016 at 5:58am

20A continuous (100A peak) is more then enough for most applications including heavy lifters. If your need more then 20A continuous per motor (160A total for an octo) just to fly your should seriously look for a more efficient setup.

But the 4S limit is a deal breaker. 6S is pretty much the standard for larger 15" propeller setups, especially heavy lifters. Using 6S is also why you should not need more then 20A (6S * 20A = ~450W per motor). And using a conservative 200W/kg for lift, that translated to 18kg max lift for a octo setup.

Another thing to consider is that for most propellers, especially large ones they do not really benefit from improved controller latency. Simply because physics dictate how fast they can change speed. And for FPV racers spinning small propellers that could possibly take advantage of the latency, the price range does not fit. So ESC telemetry is the main selling point here. Which granted is an important one.

Comment by DavidJames on August 21, 2016 at 9:20am


In looking through the code on Firmware on GitHub I am not finding a place where I can adjust the Field Oriented Control(FOC) for different motor parameters.    Can you point out where to these parameters are?


You need to be a member of DIY Drones to add comments!

Join DIY Drones

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service