Collective jerk when disarming after land

I manually do not disarm the system (not pressing any switch of bottom), it does it by himself using the PILOT_THR_BHV, and I think that it will do both things (motor interlock and disarm system).

i.e. after the “takeoff sequence”, when I put the collective stick down and with the motor interlock switch in a off position (motor engaged), it will sens that the heli has landed and will disarm the system and the motor interlock will kick in, even with the switch on the OFF position (motor engaged). after this, if I want to engage the motor again, I will need to flip the motor interlock switch to ON position (motor disengaged) and restart the sequence.

If I disable the PILOT_THR_BHV parameter, hence, will need to manually disarm the system and manually flip the motor interlock switch after a land, It will not do the Jerk on the collective.

Another thing is that the collective jerk will only happen in AltHold and Loiter mode. I have tested in Stabilize mode and will not do it.

I think it has to do with the system kicking in the motor interlock automatically.

I’m going to do more testing this afternoon to see if find any behavior related to this. Will try to do some videos too.

Thnks for taking a look to it Bill.

Carlos,
This is not a function of the motor interlock specifically. I believe it is due to the autopilot in the vertical axis. The code has the commanded descent rate go from the max allowable commanded from the collective going full down to a much smaller descent rate when the motor interlock switch is actuated. There is another thread where Chris and I discuss this issue but I can’t remember which one.

Regards,
Bill

I noticed that with the PILOT_THR_BHV set to 0 (manually disarm needed) the jerk will only happen if I turn on the motor interlock immediately, but if I wait a couple of seconds, it will not do it. Maybe its because I’m doing this on the bench, I will try it while flying and will share the results.

There are a number of people that I’ve seen this including myself on shutdown. I just didn’t realize that it was repeatable on the bench. I haven’t seen this cause the aircraft to lift back off the ground. But it definitely will surprise you the first time it happens. Now, I just wait a few seconds before hitting the motor interlock switch But it is probably something we should get fixed.

Thnks for the support, and I will report how everything goes on the field.

Certainly. Here is a link to the other thread that discusses this issue.
https://discuss.ardupilot.org/t/landing-big-heli-in-althold-mode/24468

Say, I would recommend being careful with this. That setting is not actually throttle in a heli. It is collective pitch. The landing detector can be fooled with a heli by being caught in a wind gust, the heli goes into translational lift, the system detects the “bump” from the lift and no more descent. It disarms and shuts down the engine in flight. In Stabilize no big deal - you have full collective control and can autorotate it. In any augmented mode, including Alt Hold, you have zero collective control if it happens and it will crash.

I would only leave that set to zero.

I am an old stick-in-the-mud on this. But I recommend never flying a helicopter in a critical flight profile with any augmented mode. Only use Stabilize or Acro where you have 100% control of the collective and cyclic pitch for success in never crashing your heli due to an autopilot mistake. And there is several ways the autopilot can be fooled close to the ground in critical flight profile.

Thanks Chris for your comments

I got it figured out during bench test but it will also engage the Motor Interlock, so I would say that it works with both functions (collective and motor).

I did tried today and did not liked what the aircraft did. After a couple of hovers in Stab, AltHold and Loiter, I tried a couple of landings from 1/2 meters of height with the PILOT_THR_BHV set to 4 (Disarm on land detection) but in the time between the touchdown and the disarm/spool down, the aircraft started an oscillation I think on the collective axis like if it was a ground resonance on full size aircraft. I could not got it in video but in a couple of minutes I will upload some videos of the other flights done today.

Hover test in Loiter mode:

Enabling motor interlock function while flying in Loiter mode to see aircraft reaction:


Full Auto Mission:

Just be aware that if the engine quits either in or above the dead man’s curve in any altitude controlled flight mode your heli will crash without pilot intervention. All it does is increase the collective pitch to try to hold altitude until the rotor stalls. The pilot does not have control of the collective in either Alt Hold or Loiter, even when landing. All your collective does is request a climb or descent rate to the autopilot. You only have control of the collective in Stabilize or Acro.

I completely agree with you, and understand the consequences if the motor quits in those cases. In most of the flying time, the aircraft was in line of sight and the remote control was in hand to take full control in stabilize mode if needed.

I spent couple of flights doing grid auto missions, do you have any advice on planning it to maintain a fluent forward flight even in turns? will like to have the turns made like a plane and not waste much energy stoping in WP, I notice that in some cases the aircraft will do a full stop to change heading, specially if the turn was 90 deg or more.

Thanks for your advices.

Yeah, what you’re seeing is an indirect engagement of the throttle hold (or “motor interlock” - where did that term come from anyhow?) because the FC disarms. The throttle to a helicopter can’t be active unless the FC is armed.

Because of a very strange design, all thru the code “throttle” is really collective pitch in a heli. The actual throttle that controls the engine is called the RSC (Rotor Speed Control) in ArduPilot. So even in the parameters, anything with “throttle” has nothing to do with the actual throttle for the engine.

In Helicopters we have the H_COL_LAND setting to determine auto-disarm (and simultaneous shutdown of the engine). Since the autopilot was designed primarily for multicopters, and thru further testing I’ve done, it does not like this H_COL_LAND setting that normally pulls the pitch a bit negative to make sure the heli is on the ground before shutting it down. So in an alt controlled flight mode the thing jumps the collective back up. Well, just because you shut down the engine and disarm the FC doesn’t mean a helicopter is done flying yet. Multirotor props just stop. A heli rotor has a lot of energy stored in it. So you can shut down, shove the collective up and it will jump the heli back off the ground just on what’s stored in the main rotor. With a 800 class you can shut down and disarm in Stabilize, lift the heli back off and hover it for a few seconds.

So please leave that PILOT_THR_BHV setting to zero. That is a multicopter setting and should not even be in heli. There should be a sanity check on that for heli frames to force it to zero if a heli pilot tries to set to any other value. It can easily cause an in-flight shutdown with a heli, especially in augmented modes, in which you have NO control of the helicopter if it shuts down and disarms.

@bnsgeyer we should strongly take a look at that and hard-code disable that param for heli frames.

1 Like

I’m also seeing this issue guys. It wasn’t there in 3.3, not sure if it appeared in 3.4, but I’m seeing it now in 3.5.

From me. Because Motor Interlock is the correct technical term. Throttle Hold is an anachronism of RC helis.

No, please don’t ever do that sort of thing without checking.

I am using PILOT_THR_BHV = 1. I use self-centering throttle, the only sensible option when flying a UAV primarily in auto-collective modes.

Rob, you mean you’re using self-centering collective on heli? I never considered that anybody would do that.

What are you seeing on disarm? The collective increases immediately after it hits H_COL_LAND? That’s what I noted and I originally thought it might be a barometric pressure change issue under the main close to the ground. But I later found out it’s something else causing it. And I don’t know even what is causing it because it will happen with the collective all the way down. And it doesn’t require a disarm either - I’ve gotten it to happen simply engaging the throttle hold.

I got this to happen a few days ago. Two problems simultaneous after studying the log. I landed in Loiter (which again, I do not recommend). Everything was fine until I engaged the throttle hold at which point the heli jumped like somebody kicked it. That was the collective reaction. Simultaneous with a GPS glitch that caused an EKF switch that tried to put it into dynamic rollover in spooldown. Over which I had ZERO control even with the FC armed yet - until I switched it to Acro, hunted for the “ghost” a bit and got it square on the skids. The EKF was still switching back and forth about once every 5 seconds when I shut the engine down, and continued after shutdown, until the GPS glitch cleared. And it was making the swashplate tip back and forth like it had gone nuts.

I was since able to duplicate the issue on the bench after I figured out how to reliably create a GPS glitch by forcing the receiver to pick up a multi-pathed GPS signal that has the time stamp off.

Yes, we’re using self-centering collective. Our customers only get Alt Hold and Loiter as their manual modes, so self-centering is way better.

I personally have flown Stabilize like this as well, quite a bit actually as much of my testing is in Stabilize mode. It’s fine if you set up the collective pitch curve properly.

So what I’m seeing, is that when landing in Alt Hold or Loiter, not 100% of the time, maybe about 50%, it gives a little collective kick. The kick occurs immediately as I switch off the Interlock. Has nothing to do with Disarm as I haven’t Disarmed yet.

I suspect it’s a bug that crept in with Leonard refactored the “spool logic” but I don’t know.

What you showed in that video… holy crap! That’s scary. I’ve never seen that. It really shouldn’t do that regardless of GPS glitch. At least it didn’t used to. Used to be that it would “guess” when it’s on the ground, and would not chase a GPS glitch around like that. So I don’t know what’s going on in your case. Either your settings don’t allow it to guess that it’s disarmed. Or it is something changed in the code.

Yep, same here. But it will happen on a auto-disarm too.

I don’t think so. We’re still working on that. We did heli and we’re waiting for Randy and Leonard to go thru their part of it, then me and Bill and are going to finish the spool logic for heli. But we started that a long time ago, and now Randy is having problems rebasing it on the latest master. We’ll test it when it get to PR status, but I don’t think the problem is in the spool logic.

No, it shouldn’t do that. I’m still working on it and getting some info together for Paul R. I think we got a EKF issue. That was with 3.6-rc1.

Paul is the expert on this. But I think it’s a problem with how the GPS is fused into the EKF. A glitch doesn’t necessarily get “chased”. It means the GPS has become unreliable and the system actually does a very excellent check of that and detects an unreliable GPS every single time. I have been able to duplicate it in safe conditions with 100% success. The problem is in how the system deals with it in determining the alternative attitude solution. Paul will get it sorted out, and it’s not noticeable with a multi in spool-down like that, as they have no more thrust authority after shutting down. So I’m still working on it to get Paul the info he needs to fix it.

I land in loiter or auto the majority of the time and have never seen this. Anecdotal, I know. This is on 500/600 sized helis.

can you share your aircraft parameters?

I reproduced this issue in SITL. And made an issue in github Here. I posted a log from my test. I went thru the code but still can’t figure out what is causing this. I’ve asked Randy and Leonard to look at it.

So I did a little more digging and found the problem. It was a logic issue where switching motor interlock to disable before the land_complete flag was set caused the state of the aircraft to go from flying to motors stopped. Normally if the motor interlock is disabled after land_complete then the aircraft goes into the landed state before motors stopped.
So this should be an easy fix in the interim but I want to talk with @Leonardthall about some difference between multi and heli in how the altitude controller is programmed with the motors stopped. Heli has a descent commanded where multi just relaxes the altitude controller.