New ArduPilot Acro VBar Mode For Helicopters

This project was born kinda due to my wife getting a new Trex 700N helicopter with a gas engine conversion. She chose a HeliCommand (Bavarian Demon) AXON FBL unit for it instead of using ArduPilot. She does not like how ArduPilot handles. We built her new helicopter and after I flew it I’ve been jealous as all get-out over the way her Rex 700 gasser with that AXON handles. It is the epitome of smooth yet accurate handling.

Gotta do something about this. My wife, learning to fly RC heli with ArduPilot, then trying out some of the commercial FBL units and deciding the FBL units are better, indicates there’s a problem.

Myself, @bnsgeyer and @Ferrosan put our heads together, threw ideas out on the table, and discussed how this has to work. We looked at the commercial FBL units that have accomplished this and pored over how did they do it? Thru true team effort, ideas, trying different things, we came up with VBar (Virtual Bar).

VBar is awesome for helicopter pilots that like a true manual flying mode that feels and handles like the real thing. Make no mistake, 3D pilots and race quad pilots will probably not like it. It’s not robotic enough. Scale pilots will love it. ArduPilot is definitely heavy into automation and robotics. But the scale pilots that fly for fun, or anybody that wants to learn how to fly a helicopter and have the controls respond like the big ones, are important too.

Here’s an intro video that explains it and how it works

I have built binaries for the most popular controllers for folks who would like to try out and fly VBar. These builds are Copter 3.6.7 with the VBar feature added. The firmware builds are here ->


This feature has made scale flight smoothness come true ( which eventually might be appreciated by fpv helicopter pilots as well) . After some tuning and a lot testing I came to this with my test platform:
For those who come from old school mechanics with flybar, this performs exactly like that! With the possibility to sort of " change" the weights of the flybar on the go, matching our own flight style.


Thanks for posting your video, Ferruccio! The onboard FPV gives a different perspective of how well VBar handles and how smooth it is. I’m hoping it can give ArduPilot a little respect among the FBL crowd that likes sport aerobatics. And for FPV under goggles don’t have to worry about tipping your heli over on the ground with it because it actually handles like Igor Sikorsky intended for helicopters to handle.

You can modify the switch positions for the ACRO_MODE select by using offsets in your RC. I now have mine configured so VBAR is switch down (default), it stays in VBAR with switch middle, and switch high changes it to LIMITED. I have no use for RATE mode.

1 Like

I have updated the link and binaries in the first post to reflect the latest changes to the virtual flybar Acro mode for heli. We have changed the code so the new virtual flybar is now default for heli. The decay rate of the simulated flybar can be set with the ACRO_BAL_ROLL/PITCH params. Both set to the zero, you get the same pure rate control the multicopters use. Set to higher values you can adjust the “feel” of the virtual flybar to your liking.

The wild swashplate tipping on the bench during bench testing is gone in this build. You can make cyclic inputs on the ground during ground run all you want and you have 100% control of your helicopter. There is no rate command buildup that will cause it to tip over (unless you set the ACRO_BAL_PITCH/ROLL to zero for the multi-rotor experience).

Nothing has been changed for the multi-rotors with this build - they are the same as they always were, and multi-rotors do not have access to the heli virtual_flybar.

In this build the acro trainer is as it always has been in Copter, with no changes. Be aware Acro Trainer Leveling DOES NOT WORK in this build. It does not work in Copter 3.6.7 either and has been broken for a long time. I discovered this during testing, Bill fixed it and we submitted the fix to 3.7 with a backport to fix it in Copter 3.6. But since this code is built on Copter 3.6.7 I did not include the Trainer Leveling fix. And, basically, nobody uses it anyway or it would’ve been discovered long before I found the issue with it.

Acro Trainer Leveling and Limited does work for Leveling, but be aware the Limiting feature DOES NOT WORK. It is supposed to limit the the frame angle of your helicopter to ANGLE_MAX as described in the Wiki. But it doesn’t. This has also been broken for a long time, I discovered it during testing. It looks like it was coded the way it is on purpose. We don’t know why. It isn’t our department so we didn’t dig deeper into why it doesn’t work.

This build also includes the internal rotor speed governor feature which is not in Copter (yet).

I asume the build is ok for flybar copters also?
Should I set ACRO_BAL_PITCH/ROLL to zero for a flybar?

Flybar is like it always was. Set H_FLYBAR_MODE to 1 and it is passthru control. The virtual flybar is not used in flybar helicopters.

Hi Chris, will this be merged into the main code?
Looks really interesting, I have just designed a new heli flight controller using STM32H7 with 2 imu and a few other bits, dual stacked boards that keeps the footprint small and this was just the sort of modes I was looking for, saves running a FBL controller (cgy750 etc) and an FC.

Looking forward to trying your changes on a newly bought goblin 570 and my FC.

@ukmook Chris submitted a Pull Request to have this merged into Master. Here is the pull request. He has also back ported this to his repository of ArduHeli 3.6 as this PR will not make it into 3.6 on the main repository. We will first see it in ArduCopter 3.7.0. So you can download Chris’ version of 3.6 with many of the new heli features that we’ve been working on. you can download a binary for your board here.

Yes, it does. I suspect it will be quite popular with pilots that like the FBL type “feel” and smoothness. As Bill noted, you can fly it on 3.6 with the firmware in the link he provided. The two latest ones are rebased on the Copter 3.6.7 code version, which is the latest stable.

The one with just the governor in it was built on Copter 3.6.6, so it is one point release behind the latest Copter stable.

I would suggest the ArduHeli 3.6.7 version as the 3.6.8 version has changes to support four-servo swashplates and will confuse the current ground stations due to different parameters. That one is there for folks to fly their four-servo helicopters.

Thanks for the info guys, i can build from the PR, as i need to build for my hwdef. Shame that i added an Sbus out feature on the servo rail but it may come in handy. Looking forward to testing, if you want to see a render of the board then drop me a line…


Hi @ukmook

Would be nice to see that prototype. As you know, even Big Helis are somewhat restricted to use “regular” flight controllers :slight_smile:

Hi Luis I have messaged you…


@ChrisOlson i have tried several ways to implement your code but the “heli” page on either MP (greyed out) or QGC (no settable swash plate) do not work for me, Does the Ground Station need to have specific code for your 3.6.8 branch ?

I can wait until its put in the main master repo but would be nice to test…


The heli page on Mission Planner does not work at all. Do not use that. The heli page in QGC will only be partially functional with that code because of so many parameters that changed from the stock code due to changes in the throttle/governor control.

Settings must be made in the Full Parameter List. All the helicopter ones start with H_

All the Acro ones start with ACRO_

The swashplate configurations are not changed in the build linked above. If you downloaded the 3.6.8 build then we have different swashplate configurations in that build that also support four-servo swashplates. Which build did you get?

Hi Chris, i ended up cloning your repo and checking out ArduHeli-3.6 which i believe is 3.6.8 … because i was having difficulty setting up the swash just building master with your PR…

Ah, if you cloned the repo then you got the whole works with the swash changes. So, there is notes on the Release page where you can download the builds that tells about the new settings. And this is the code you actually have ->

There seems to be a few issues, QGC is telling me that most of the H_ params are missing…

I’ll go back and build with ./waf heli

1 Like

Yeah, there’s a lot of H_ params missing in that build - that was done on purpose. None of the servo position settings will be there if you select any other swashplates other than 0: for the H3 generic one.

And the names of other params have been changed. Refer to the link above for the notes on what the new params are.

1 Like

Hi Chris, got it, there was no issue it was me thinking that the heli page in ground station would work i can see them all in front of me now… sorry for the confusion on my side…

No problem! Enjoy the new Acro. You can set the “feel” of the flybar decay with the ACRO_BAL_ROLL and PITCH settings. 0 makes it pure rate mode. The higher you set it the more direct stick to swash it gets. I like 2.5 on pitch and 2.0 on roll.