The helicopter banked at a large Angle during takeoff

@bnsgeyer @Leonardthall


Our helicopter tilted a lot when it took off from the ground. I noticed that in Stabilize mode the helicopter was smooth off the ground, but in Loiter mode and Auto mode when it took off from the ground, the helicopter tilted at a large Angle.

By analyzing the log data, I found that the helicopter has a relatively large attitude control integral value when it is off the ground. I guess the reason is that the helicopter has a large integral correction when it is on the ground.

My flight control version is 4.1.5. H_OPTIONS parameter is 0. This is my flight log data.
The helicopter banked at a large Angle as it lifted off the ground

Hope to get help, thank you very much!

When the collective pitch starts to increase, the helicopter is actually still on the ground, but the integral control has already begun. As a result, the final integral control quantity is relatively large, and the helicopter tilts at a large Angle when it lifts off the ground.

Is it possible to set a takeoff parameter value with respect to collective pitch in the flight control firmware? When the collective pitch is greater than this parameter, the take-off is judged to be successful. Thus, the start time of integral control is delayed and the amount of integral control is reduced when taking off and leaving the ground

@Flying2015 good job on your analysis. It all makes sense. @Leonardthall has already made a change to the code to fix this issue. This change causes the throttle to be raised at a constant rate and the not landed flag is set when the aircraft determines it is flying rather than just setting the not landed flag at the beginning of the takeoff sequence. With the new change, the integrator is not released until the aircraft determines it is off the ground. This new behavior will come out with version 4.3.0 which is currently in beta at the moment.

Wow, that’s great. It’s an exciting new release. We are looking forward to it. Thank you for your wonderful and creative contributions!

By the way, in loiter mode, what parameters can be adjusted to shorten the take-off time and accelerate the take-off process? We tried it a little bit, but it didn’t work very well. By data, it is found that the take-off timeis 1~2 seconds in Stabilize mode, while it takes 5~6 seconds in Loiter mode. In version 4.1.5, we suspect that shortening the take-off time should significantly reduce the impact of points.

The other thing to consider is to set the WP_NAVALT_MIN to 50 cm. This will keep the flight controller from trying to control the aircraft before liftoff. Be aware though that you may see it start to drift on takeoff and then it will quickly correct once it gets above 50 cm.

Best wishes.

That is a good hint for me too. Always good to read the posts from you :wink:

Does this parameter also influence the behavior during start in Loiter-mode?


@bnsgeyer @Leonardthall
Hello,I’m bothered, but I really need your guidance and help.

I updated the version of the flight controller firmware to 4.3.5, but the helicopter still experienced a very serious large angle tilt problem when taking off in loiter mode, which is normal in stabilize mode.

This is the flight log:

Especially when the helicopter took off again after the loiter mode dropped, the helicopter tilted very much, causing the aircraft to almost roll over and mechanical damage.

This is the flight log:

By analyzing the flight log, I found that when the helicopter was still on the ground, the desired position changed considerably, resulting in an inexplicable desired attitude angle. At the same time, the integral value of attitude control also accumulates a very large value, which leads to roll during takeoff. Is there a way to eliminate these deviations and integral values on the ground?

The takeoff problem in this loiter mode is really too torturous, I think many people will encounter similar problems, look forward to the guidance of friends, thank you very much!

Good luck!

The cause for the drift is the vibration during take-off cause the position holder to initialise moving at 0.5m/s.

We should be able to fix this using @bnsgeyer suggestion:

The new take-off code should also help this if it is setup correctly.

Hmmmmm. It looks like it is triggering immediately due to the noise on the ground.

I think Bill’s suggestion is the best way forward, something like:

1 Like

Thank you very much for your reply. Then I’ll try the WP_NAVALT_MIN by @bnsgeyer.

When I analyzed the flight log, I also found that the helicopter took 7 seconds to take off from the ground, but I set the take-off time parameter to 1.5 seconds. I don’t know why this is happening. It is not known if this is related to the roll over of the helicopter.

This is the flight log:WeTransfer - Send Large Files & Share Photos Online - Up to 2GB Free

The description of this parameter WP_NAVALT_MIN is “This is the altitude in meters above which for navigation can begin. This applies in auto takeoff and auto landing.” Does it also work in loiter mode?

Bill GeyerDeveloper

Oct '22

The other thing to consider is to set the WP_NAVALT_MIN to 50 cm. This will keep the flight controller from trying to control the aircraft before liftoff. Be aware though that you may see it start to drift on takeoff and then it will quickly correct once it gets above 50 cm.

It may not. I am going to talk to Bill about this in an hour or so.

You may have highlighted a little window where we can do better here…

Thanks for your time very much.

I’m sorry that I don’t get the meaning of this sentence"You may have highlighted a little window where we can do better here…". * Could you please explain it again?

Hi @Flying2015, @Leonardthall and I just spoke about this. It may not directly affect your case. As Leonard pointed out, the higher vibrations in you helicopter cause the logic to declare not landed much earlier and because of that, the manner in which the aircraft controls the takeoff is similar to the old logic. So that is why it takes longer for your heli to get off of the ground. Here is a takeoff in one of my heli’s in althold.

You can see that the aircraft has started it’s climb when the “not landed” flag is posted. Looking at the CTUN.ThO signal (yellow line) you can see when the collective starts to ramp which is when the controller would start navigating in loiter mode (which I wasn’t using). In this case, there was only 1 second from that time until liftoff which would minimize the drift of the navigation controller before takeoff

In your case, it takes 5-6 seconds for the aircraft to takeoff because the vibration causes the controller to falsely detect takeoff which slows the advancement of the collective.

Thanks. Because helicopters use internal combustion engines, it’s hard to get the vibrations down. So far the helicopter is flying normally in enhanced stability mode. Is there a way to improve take-off in Loiter mode? Or can the parameter be set to change the vibration caused by this kind of takeoff miscalculation?

In particular, is there a way to turn off the attitude and altitude control integral when the helicopter is on the ground?

Could you please upload this flight log?

There are things we are doing for Auto take-off that we aren’t doing for Loiter like the no-navigation altitude and relaxing the position until we move to the “flying” state. However none of this is relevant to you because your main problem is it is moving to the “flying” state immediately due to the large vibration.

Yes. This is what we attempt to do. The problem is due to the vibrations the aircraft thinks it has left the ground.

Thanks. What variable did the vibration affect to make it think the helicopter was off the ground?

The autopilot is looking for a reasonable vertical acceleration that would indicate it has left the ground. In this case it is half PILOT_ACCEL_Z (250 cm/s/s). Your vibration is 2 to 4 m/s^2 peek to peek. So enough to trigger it easily.

The other test is 10% your maximum climb rate PILOT_SPEED_DN 100 cm/s. You are getting about 0.5 m/s peek to peek. So this is probably enough too.

@bnsgeyer Is it possible the collective hasn’t been set up properly and the take-off is triggering from a high collective value? (motors->get_takeoff_collective())