Wobbling helicopter!

Ed, this is a plot of your vibration in flight and the clipping on the accelerometer. You will see why I call it stair-case clipping. When it increases steadily like this it is exceeding the 16G limit of the accelerometer and your helicopter will not handle right.

I hesitate to say to just damp the controller. A helicopter should not have vibration of this magnitude if it is properly balanced and tracked. What bothers me is this:

The above is a plot of your desired roll attitude vs actual. And the Accel Y and Gyro Y axis outputs. You can see that the desired roll attitude is pretty smooth curve. The actual is not smooth and is oscillating approx in tune with what the IMU is sensing in the helicopter frame.This indicates the helicopter is shaking due to a mechanical problem. I do not know what that problem is, but most likely would be in the main rotor system, either blades not tracking properly or out of balance causing the main rotor to wobble in flight.

For comparison sake, this is a graph from one of my piston helicopters that has had the main rotor tracked and balanced with a RPX DynaTrack, which is an instrument we use on full size helicopters to track and balance the rotor. It has a solid-mounted flight controller with no vibration damping at all. The vibration that it is measuring is coming from the helicopter’s engine.

You can see that my vibration is much lower than yours. And my desired and actual roll attitude matches almost perfectly.

There is settings called IM_STAB_COL 1, 2, 3, and 4 that will make your Stabilize collective line up with the altitude controlled modes. It is recommended to watch the ArduPilot Ground School videos to learn more about how to set those.

Chris, I examined the heli for vibration. Found many thing to correct. In doing so, I changed the tail blades from plastic to CF and checked balance. Also changed main blades from foam core plastic to CF and checked balance. I expected some change in helicopter with these different blades, but it is back to wobbling.
This morning I tested it only to find a strange behavior of the roll servo. It jumps with left or right stick movement. Since yesterday, nothing has been changed by me. I tried a different servo, same result. I tried a different (older) set parameters, same result. I think I’ll change vehicle type to arduplane for a minute then back to arducopter and the parameters of yesterday. That will give the Minipix a clean restart. Any ideas? Ed

Well, tracking of the main rotor blades is just as important as balance. A rotor out of track will exhibit very bad “wobbling” tendency due to the blades not flying in the same plane of rotation.

Tracking your rotor by eye is the usual method used in RC by either putting colored tape on the blades and hovering it, or hovering it against a background that allows you to see the edge of the rotor disc to determine a blade out of track, and then adjusting the pitch link on the affected blade.

Some people use high-speed, or high frame-rate camera. If the frame rate of the camera is a multiple of the rotation speed it will appear in the video to “freeze” the rotor and make it look like it’s not turning, sort of like the strobe on a RPX DynaTrack. Which then allows you to identify the suspect blade.

You cannot track your rotor in software. And if the rotor has never been tracked, the likelyhood of it being perfect is very low. And if they are not perfect they will vibrate.

In old days with full-size helicopters the ends of the rotor blades were marked with different color chalk. The pilot would run the helicopter up to rated speed on the ground. The A&P had a piece of tag board nailed to a 2x4 and carefully leaned the 2x4 into the edge of the rotating disc and the blades would make marks on the tag board. The marks indicate which blade(s) are out of track, adjust the pitch links and try it again. This time-proven method of tracking blades also works with RC, but the helicopter must be tied down rigid so it’s not moving around.

The above method of tracking blades on a helicopter is still taught in helicopter maintenance schools, despite modern electronic tools in common use.


I did the tracking too.

Well, in the last log you posted the autopilot was definitely not driving the “wobble” and it had severe vibration in the y-axis. That is not a problem in the software.

I am learning. YOur descriptions/explainations are marvelous.
Should the PX4 be soft mounted? Right now it is only slightly soft.
I have weighted the main rotors properly and have it running smooth. I am sure it can be better.
Can I view the vibration state with the SD card in the PX4 with MP? I think instructions say It must be done with a USB cable, not just telemetry. What is the procedure? Here is latest log.00000076.BIN (551.2 KB)

1 Like

Ed, you have made a dramatic improvement in your vibration by getting the main rotor running properly. It is mostly below 10 now, and however you have the controller mounted is perfectly fine. There is no clipping of the IMU’s and the intense shaking in the roll attitude is gone.

Proper tracking and balance of the main rotor is extremely important in helicopters.

Although I don’t use Mission Planner very much, yes you can look at your logs and graph the vibration with it. I believe there is a button you can click on below the HUD that says Dataflash Logs, you can download a log with the USB with that, open it and look at it.

Trying to download a log with telemetry radios usually won’t work due the data rate being too low and it will time out. Simply connecting your USB cable should work fine for downloading the logs from your controller.

Thank you for the encouragement.
Here are two logs just taken. I removed the main blades and tested the heli with just the tail blades installed. I found an out-of-balance condition and fixed it. Then did these two tests with different mounting pads for the PX4. During the tests, I picked up the heli to see if there was and change in results from just sitting still on the ground.
You observations?
00000078.BIN (428 KB)
00000079.BIN (260 KB)

It’s really hard to draw any conclusions from those logs. While vibration in the tail rotor is certainly bad, it’s usually noticeable in the tail boom so you know there’s a problem that needs to be fixed. Main rotor vibration is the main problem usually.

On some poorly built helicopters you can get vibration from the transmission too. The gears are sometimes injection molded and they are not accurate so you get varying backlash around the main gear, or the main gear wobbles on the pinion.

It is also good to check the straightness of the mainshaft if the helicopter is pre-owned and it is not known if it has been crashed and fixed in the past. And I’ve seen some new mainshafts come from the factory pre-bent and they shake.

Another thing to look at is the dampers in the feathering shaft(s). How worn are they? And slop in the swashplate bearing and/or pitch links and feathering shaft bearings. If the blade grips can move on the feathering shafts due to worn bearings, your attempts at tracking the rotor will be fruitless.

Good points. Actually I did those checks and found things to make better. I have a blade balancer coming in a few days. Meanwhile, on the heli, I can get the mains pretty well balanced. No heli or shaft wobbling. Here is a log of it now. It looks way better to me.
New problem is not much heading hold of the tail rotor. Do you see anything to adjust?00000082.BIN (846.5 KB)

It looks like the yaw controller is responding quite respectable to changes in yaw. However, the servo ratio looks low. I see a change in servo output of 100 pwm to counter a 10 degree change in yaw.


  • The allowable yaw rate is too low (turn up the ATC_RATE_Y_MAX from 180 to maybe 360)
  • headspeed is too low causing the tail to be sloppy and ineffective
  • servo speed or linkage ratio is too slow - either lengthen the servo arm or put on a faster servo
  • slop in the tail slider pitch yoke assy causing it to use excessive servo travel to correct yaw angle

thanks, I will up the max.
I keep trying to get a better relationship between collective pitch and throttle curve. As I recall, there is also a setting that limits the speed at which the throttle increases from off to around mid stick. Where is that setting? Right now, spool up is too fast. The log I sent probably shows the values. I have collective at 0, 541 620 and 800 with throttle at 0 400 700 800. Lift off is below half stick. I’d like to put it at mid stick. Do I change servo6 mid stick value/position? Now at 1500.

How fast the engine throttle comes on via collective is controlled by the throttle curve. The helicopter’s rotor should be to full speed before you reach takeoff pitch.

To adjust the collective position in Stabilize there is settings called IM_STAB_COL_2 and IM_STAB_COL_3. Those two settings determine how much collective pitch is applied in Stabilize mode at ~40% and ~60% stick position. Adjusting those down will cause the helicopter to take off at a higher stick position in Stabilize. Making them closer together will flatten the collective curve at mid-stick. Making them further apart will cause the collective to be more “touchy” at mid-stick.

Chris, That is exactly what I thought and tried.
I am trying to up the rotor rpm by increasing the throttle curve and reducing collective pitch.
Throttle start up at left stick all the way down requires that collective pitch is at 0. Then throttle is raised to the 40% then 60% and finally to the top setting. I assume 50% stick position would be in between the 40% and 60% settings.
When I do this, the helicopter starts wobbling???
The JCZK helicopter has a setting that brought the rotor RPM up slowly to avoid tail swing. Where is that setting?
As I increase throttle curve and before the pitch curve is above 0, the tail swings. By raising the left stick slloowwlly I avoid the tail swing. I want the lift off to occur just before 50% stick position and hover at 50%. What I am trying is to arrive at a throttle/collective setting at 50% for hover. Then dial the rest for higher and lower stick position.
I only use a very slight amount of negative pitch at lower stick positions.
I hope I have not contused.

Hi Ed,
No, I understand what you’re saying. I think your throttle curve is a little aggressive for an electric helicopter. You have a 0-50-70-80-100 curve.


Now, pistons and turbines will typically use full throttle at 100% collective load. But electrics usually don’t because electric motor can produce 100% torque at zero rpm (if the motor is stalled). Most electric helicopters will like to fly with the ESC at or above 75% throttle (a setting of 750 in ArduPilot). Higher headspeed will be maybe 85%, etc…

So the procedure involves setting the throttle curve to match load to maintain a constant headspeed no matter what the collective load is. At the bottom of the throttle curve you can have an “idle-down” that reduces power as you pull the pitch into the slight negative range (called Flight Idle in full-size helicopters) - which I actually recommend because it prevents hammering the helicopter into the ground in negative pitch range with the head speeding up when you set down, and you never fly at full power at zero pitch anyway. The only time you will use full power in negative pitch with RC is to fly inverted, and that’s not the case here.

So the problem you currently have is that when you throw the throttle hold switch you have the bottom of the curve set to zero so if the collective lever is down the motor won’t start. It advances to 50% throttle by the time you move the collective only 1/4 of the way up. This is going to be very rapid acceleration of the rotor with an electric and it will cause 'er to torque-twist on the ground.

So what I would do, assuming your helicopter likes to fly at ~75% throttle, is set the throttle curve to something like 25-50-75-75-80 (add an extra zero for ArduPilot’s settings) to start with. You can top the throttle curve out at 80% with an electric because electric motor will produce full rated power (in watts) at 80% throttle if you try to lug it.

So, now. You see a couple other settings there - the H_RSC_RAMP_TIME and H_RSC_RUNUP_TIME. What these do is ramp up your throttle for what ever seconds you set them to.

So, let’s set the ramp time to say 10 seconds. With the collective all the way down you’re going to have 25% throttle with the above curve. When you throw the throttle hold switch it ramps smoothly up to 25% throttle over 10 seconds. Not all ESC’s will start right away at just off zero throttle. So when you throw the switch it may not do anything for the first couple seconds, and then start to turn and ramp it up to whatever you have for collective position on your stick. If you want, you can move your collective to zero pitch (which will be about 30% throttle with the above curve), and set it ramp it up over 20 seconds if want it to spin up slower and smoother.

The runup time must be set at least 1 second longer than ramp. So if you set ramp to 10, set runup to 11. The runup time only really applies to pistons and turbines where we’re engaging the clutch and spinning huge mass in the rotor that takes more time to get up to speed and warm up the engine, etc… Electrics are pretty much “push button” - they will runup at the same rate as ramp within a couple seconds.

So those are the settings you can play with to get the startup you want. Once you get it starting smoothly, then adjust your throttle curve points to get the headspeed you want. But is very rare that an electric would use 100% throttle on the curve unless you want to run it balls out at like 90% throttle in hover and punch it to 100% on a hard pitch pull to maintain headspeed. Again, the reason for this is that electric motor will produce 100% torque at less than 100% throttle if you lug it. Piston engines produce 100% torque at wide open throttle, pulled to the knee of their torque curve. Turbines produce 100% torque at max fuel flow to N1 (the gas generator) with N2 (the power section) at 100% rated speed.

So each type of different powerplant requires a different throttle curve.

Once you get it running perfectly, now adjust these (and I see you have been adjusting them)


The 2 & 3 will determine where the collective stick position is in hover. Make those two values about 80-100 apart and move them up or down as required to move the collective stick position in hover to get it to hover at mid-stick in Stabilize. You must have your headspeed nailed in before setting these, as changing the headspeed changes how the IM_STAB_COL’s interact in Stabilize flight mode. Ideally you want your helicopter to hover from 4.5 to 5.5 degrees of pitch with symmetrical blades. This provides the best efficiency in power and performance (lift/drag ratio) for symmetrical airfoils. Theoretically you can hover at 7.5-8 degrees of pitch and get more flight time with an electric. But the helicopter will handle like a slug and be unstable, and will autorotate about as good as a brick.

Hope this all helps. It’s a fun learning experience to tune a heli up with a throttle curve. It’s real traditional helicopter stuff like the old days, before they came up with “push button” ESC governors and all that for electric helicopters. :grinning:

Chris, Please look at these two logs. The motor won’t spool up. I have not changed any parameters that could affect start-up, that I know of.
QGC does not announce anything has failed arming test.
In MP or QGC there was a parameter setting for arming the helicopter where I could choose what to sample for arming. I can not find that again. Ed

00000115.BIN (520 KB)
00000116.BIN (172 KB)

Ed, please re-read my above post. You can’t have the bottom of the throttle curve set to zero. The reason the motor won’t start is because you got the bottom of the throttle curve set to zero, and your range for SERVO6 is not right. So the SERVO6 OUT never gets above 921 pwm.

This is not enough to even initialize the ESC. The range for SERVO6 should be set from 1000 to 2000. And the H_RSC_THRCRV_0 needs to be set to at least 250. The way you got it set it will be so touchy on spoolup that it will jerk the heli around in a circle on the ground. Look how steep your throttle curve is to 25% collective.


The rotor needs to start turning with the collective all the way down when you throw the throttle switch, or you’ll have nothing but problems.

Your understanding of the way PX4 works is amazing.
The methodology is not at all the same as setting up any brand of flybarless helicopter controllers. In these, I could adjust throttle and collective pitch independently at the transmitter just the way I liked it. In fact, there was always the switch that cut off the motor for practicing autos and another switch to change mode from aerobatic, normal and for landing/take off. In the take off mode, left stick all the way down turned off the motor as the helicopter is now landed.
That said, I must change my thinking to conform to Arducopter!
Your new reply is very informative. When the channel 8 switch is on, (up) the rotor starts turning to a minimum level of 250 with the spool up set for 10 seconds. So, the only way to shut down the motor is to move the channel 8 to off (down)!
Now I get it!
I did not like this in the setup for the JCZK heli. As delivered, the transmitter’s left stick is spring centered. When the left stick is released the helicopter is flying, usually climbing. What a horrible problem when landing!!! The only way is to get it on the ground then, was to reach across with the right hand to flip the channel 8 switch. Gads! I removed the spring. Much better.
I see what you noted, that servo6 minimum setting must be high enough for engaging the ESC. My mistake.

Yep, now you got it. That bottom of the throttle curve setting should be flight idle power. In theory, at that power setting, the helicopter should be able to lift off and hover at full collective pitch. It wouldn’t fly very good, but that is the minimum power setting for in flight to prevent it from suddenly shutting down just because you pull the collective down.

Then set your RSC_RAMP_TIME to spool it up the way you want. Set RUNUP time to a second longer than RAMP for an electric. It will make a big difference on this torque twisting you are getting on the ground due to having too sensitive of a throttle curve.

Remember that helicopters are not like multi-rotors. You don’t shut off the helicopter’s motor by pulling the “throttle stick” down! That is not a throttle stick. Helicopters have collective pitch and the rotor should run at constant speed all the time, and vary the thrust with the pitch. To shut it off, you got the switch :grinning:

Chris, Have you seen or flown a G400 by Walkera?
It has been off the market for years. I have two. They are really the last helicopter product from Walkera before they abandoned that market for quadcopters. It is a 400 size traditional heli with 6 axis stabilization and GPS. Rotor starts with throttle/collective stick. Has four modes: normal/acro, stabilized, GPS positioning, and RTH. Pilot can guide heli in all modes. It is a heli not a quad. Flies like a heli. But, you can “steer” it around like a quad too. Walkera also used their tech like the G400 to make a pusher airplane with GPS, it was called E-Eyes.
I still have an excellent GAUI 425 with a NAZA H. Setup is odd. Have not flown it in several years.
Helis are so much more challenging than quads or planes, Ed