Trad Heli Attitude controller requirements - Help Requested

I don’t totally trust it because I’ve had two in-flight disarms before, one a mechanical malfunction. My particular needs are not representative of the typical electric heli flyer. I need to retain ability to disarm in flight to shut the engine down in the event of an engine fire so it stops pumping fuel on the fire. But obviously this only done in a manual flight mode (usually Stabilize) so I don’t think it has any bearing on this PR.

Disabling use of the stick arming with switch arming would have to be discussed with the multi-rotor pilots. I think @peterbarker originally wrote the code for the switch arming option. And it was highly controversial as the feeling was the stick arming is better (or something). But stick arming is dangerous with helicopters IMO. So I think that’s a separate issue that I can fix easily for the code I fly. But for the mainstream code we have do what’s best for most users.

I looked at the code for the arming switch and I see that the aircraft is not protected from disarming in a non manual mode while flying if you used the arming switch to disarm. that probably should be changed unless there is some reason why for multi’s. Not sure why that was left out.

We can also change the disarm behavior with the stick. I think I have a proposed change for both. We could make them heli only changes. Not sure if @rmackay9 and @tridge would buy off on it but it is worth a try

I think the thought was that in some countries an emergency “kill switch” is required for drones. And that arm/disarm switch does that. Maybe peter can comment on that.

Yeah, I looked thru the code and it’s easy to change that behavior. But I don’t know how it affects the multi-rotor folks. In my RC I have an interlock between the arming switch and throttle hold. The system has to be in throttle hold and arming switch off before the radio will send the signal to disarm in flight. Throttle hold on will return the engine to ground idle in flight. But arming switch off does nothing by itself once it is out of throttle hold. In the event I need to use that to shut an engine down in flight to stop the fuel pump, I would already be switched to Stabilize anyway. But without an interlock like I have in my RC, it also means multi pilots can potentially disarm in flight, and unlike a helicopter their aircraft can’t be flown with the controller in disarmed state.

So we’d need input from those folks before doing that, or find out if the thought was to provide the “kill” for the countries that require that by law.

That’s why you have the Emergency Stop Option

I know there is E-stop too. But maybe the thought was as long as we’re switch-arming leave so it also acts as the E-stop for the countries that require that. Would like to hear the thoughts from the multi-copter people on that before we’d change it.

I think the idea of switch-arming was not well received, initially, when it was done.

Switch arming got some resistance as it went in but it’s been somewhat popular since it’s gone in and I haven’t heard any complaints except that it didn’t have the de-bounce on it originally (it has it now to avoid false positives).

The arm/disarm switch and the emergency-stop (aka E-stop) are actually the same feature. Just one is the opposite switch position from the other. I think that these features shouldn’t check whether the vehicle is landed or not nor should it check what mode you’re in. It should just do what the pilot asks for.

2 Likes

Hi Randy,
Can we have the stick arm/disarm be turned off if the user is using a switch for arm/disarm?

That works for me and is the main reason I went to it. I do think, however, that it should disable the stick arm/disarm if the switch is used. Some folks that have racing or aerobatic quads with reversing ESC’s woulid probably like to have stick arming/disarming disabled as well. It seems to me that one of the more popular boards/firmware for racing quads just uses switch arming and has no stick arming feature at all. I think the stick arming concept originally came from DJI.

The disarming of the switch is a good setting, and it is more adaptable to various flight operations than pressing the rocker to unlock. I recommend to fully promote this disarmament and armed setting.

Nope. DJI definitely got the stick arming concept from Ardupilot and other OS flight controllers that predated DJI.

I think maybe they made it “two factor” by requiring an arming gesture on two sticks instead of just one.

But we were using left stick arming gesture before anybody heard of DJI.

Oh, OK. I remembered DJI getting its start in 2006 and the first controller they made came out in early 2008. It was actually for a helicopter (the early version of the NAZA-H) and not for a multirotor “drone”. It didn’t even have stabilization in it and Frank Wang invented it to fly the first emerging FBL helicopters that were becoming commercially viable.

I had thought ArduPilot’s first release was a bit later, around 2009 or so.

The NAZA-H (and Wookong-H), in its later versions around 2014 or so, remain today a pretty darn good helicopter autpilot. They remain almost the standard in scale models even today. And they use the same goofy stick arming technique, but with two sticks instead of one.

@rmackay9 @Leonardthall @Rob_Lefebvre @ChrisOlson @LuisVale

Randy and I had a discussion last night on mumble regarding spool logic which revealed some issues with implementing it to be consistent with multi’s and heli’s. I think this falls back to the basic definition of spool states. there is a significant difference in what heli and multi are calling spin when armed. it really comes down to what the motor interlock state is in that spool state. For multi’s, the motor interlock is true/enabled for spin when armed where for heli’s the motor interlock is false/disabled. Multi’s treat the spin when armed spool state as like what heli’s would consider a flight idle. Rotor is spining fast enough that in a few seconds could be at operating rotor speed for takeoff. Mostly this is done with ICE powerplants and generally could be done with a throttle curve for electric powerplants. So to ease some of the programming pain of trying to fit a round peg into a square hole, here is what I propose.

spool%20states

I think this is a more elegant solution that gives more flexibility in the greater code because multi and heli can then define each of those states in their motors class. We may have to be careful when getting the spool mode from the motors class in that we ensure that the operation in the greater code that it is need for covers both heli and multi since we may not use one of the defined spool states.

thoughts??

Ok, somewhat confusing. The standard terms in helicopters are ground idle, flight idle, throttle hold, and flight power. Throttle hold is used for starting turbine engines. It is your emergency shutdown and is guarded during start (until the engine goes self-sustaining) if you get a hot start, hung start, engine fire, parts fall off the helicopter, whatever. And the engine won’t start until it is released. Throttle hold in RC came from the big ones. The term “motor interlock” has been confusing to me from the beginning.

So in autorotation, as far as the code is concerned, helicopters would go from flight power (Throttle Unlimited) to ground idle (Throttle Idle).

Flight idle (Rotor engage/disengage) is normal minimum flight power with the clutch still engaged (even if the main is autorotating in flight).

Flight idle is also used on the ground for warmup and cooldown of piston and turbine engines, and for idling a helicopter on the ground without shutting down when takeoff is going to happen again. This is unique to heli obviously.

I don’t understand the spool up/down for multi? Does that really apply? Once they are “spin when armed” aren’t they actually in a throttle unlimited (flight power) state? They can go to full power faster than a helicopter because they got no comparative mass in their rotor.

Helicopters on the other hand spool up/down from flight idle to flight power (usually on-governor) as they have rotor mass to deal with. Spool up with a heli (in full size) is a very specific procedure of splitting needles to check the auto clutch, governor is not engaged (on some helicopters) until rated rotor speed is reached, etc…

So it seems to me spool up/down would apply to heli and not multi?

The terminology is what is confusing when you’re used to the big ones and what these things are called in the flight manuals.

I understand that but I’m just trying to fit into the structure they already established. We can put notifications to the user in helicopter specific terms if necessary. Thinking about this further, the heli will keep the spin when armed spool state to use as the flight idle if we ever have the need. I can change the throttle idle to ground idle to be consistent since this a new spool state.

So we are dealing with many different types of heli’s so flight idle doesn’t really apply to electric heli’s when on a governor and doing autos. In the case of a electric heli, practice autos would be done with going to ground idle state, which is effectively motor off. Even for ICE, throttle hold would be ground idle. and moving from ground idle to flight idle would be using the motor interlock switch or throttle hold switch. I am considering adding an autorotation spool state which would be triggered by the greater code when the throttle hold is activated and the aircraft is not landed. the good thing about that is then the RSC could be triggered to do a faster spool up to do a bail out. once the land complete flag is true then the spool state would be set to ground idle to trigger a normal rotor engagement. These names would be behind the scenes and adding an extra state would not affect multi’s because their motors class would just disregard it.

Yes, it does apply with the way Leonard coded it. Their spin when armed is comparable to our flight idle and as you said it only takes them a matter of a split second to spool up to throttle unlimited.

That is why I tried to put as much detail on the state of the rotor and motors as possible. I will clean up the table and try to make it clearer.

Here is an updated table with the heli terms included

To me, this new table now makes more sense. I’m not sure why Leonard coded the spoolup/spooldown for multicopter. But it definitely doesn’t hurt anything.

Here is an update to the spool logic development. After speaking with Leonard, we decided to not add the additional spool states. Leonard explained that spin when armed for multi’s was intended to be more like a ground idle that we defined above even though for multi’s the motor interlock is enabled. Spin when armed is a unstabilized state meaning the attitude controller is relaxed when on the ground. This would not be the case for heli’s of course if they were not on the ground. This simplifies the logic too. And this is more for the greater code to determine how to handle the attitude controller. So we are either ground idle and not flying so we relax the controller. For heli’s if we are in ground idle and not landed then we are flying and stabilizing. OR we are in throttle unlimited and we are stabilizing the rotor.
Things that deal with cooling down the engine and spool up difference between normal and bailout from autorotation can be handled by the motors library for each aircraft type.
I will cleanup the table and post it soon.

1 Like

Did the DJI Ace One use arming? Or did it use a throttle kill switch like RC helis in the day?

2006 is a bit earlier than I thought they got started with that anyway. Funny, Wikipedia doesn’t even mention the Ace One at all, but it says he started the company in 2006, so I doubt he was selling the Ace One in 2006.

Ok, just looked at the owners manual. There is no arming gesture. I think they rely on the pilot to start/stop the motor in the usual RC heli ways.

I got started with Ardupilot in 2010, and it had already been around a few years before that. And then there were others out there as well, Multiwii for example.

From what I read of users reviews, they are pretty much junk, with serious bugs that have never been fixed even to this day.

Love this idea!

Apparently I need to have 20 characters to post so…

It’s not confusing, it’s just different than what you are used to. I wrote it, coming from an industrial machinery background, not manned helicopter background.