Tuning Recipe: Difference between revisions

From STorM32-BGC Wiki V1
Jump to navigation Jump to search
No edit summary
No edit summary
Line 31: Line 31:
Hence we need to go through the steps below for each single axis at a time.
Hence we need to go through the steps below for each single axis at a time.


== Step 1 - Starting Point ==
=== Step 1 - Starting Point ===


Set the P, I and D value to zero. Without a P and I there will now position correction at all, the motor will just hold its current position.
Set the P, I and D value to zero. Without a P and I there will now position correction at all, the motor will just hold its current position.




== Step 2 - Vmax ==
=== Step 2 - Vmax ===


With this [Vmax] parameter we control the amount of energy applied to the motor. The software has the option to increase the value if required, that is controlled by the [Voltage Correction] percentage, which would be yet another unpredictable variable impacting the tuning. Hence set this to zero for now.
With this [Vmax] parameter we control the amount of energy applied to the motor. The software has the option to increase the value if required, that is controlled by the [Voltage Correction] percentage, which would be yet another unpredictable variable impacting the tuning. Hence set this to zero for now.
Line 47: Line 47:




== Step 3 - The D-Parameter ==
=== Step 3 - The D-Parameter ===


The [D]erivative term of the PID control loop is not directly related to the movement of the gimbal, it is a high frequency correction looking ahead in order to dampen future oscillations. If this value is too high, the frequency of the correction itself gets visible. Therefore, by keeping P and I at zero and just increasing the D value, we can see at what value there is no high frequency noise on the gimbal motor. The value should be as large as possible but without noise. Once you found a good value, move the motor by hand to doublecheck this noise is not audible at any motor position the gimbal might ever reach. If you find that one value work in most positions but in some it does not, that would be an indicator for an imperfectly balanced gimbal on this axis.
The [D]erivative term of the PID control loop is not directly related to the movement of the gimbal, it is a high frequency correction looking ahead in order to dampen future oscillations. If this value is too high, the frequency of the correction itself gets visible. Therefore, by keeping P and I at zero and just increasing the D value, we can see at what value there is no high frequency noise on the gimbal motor. The value should be as large as possible but without noise. Once you found a good value, move the motor by hand to doublecheck this noise is not audible at any motor position the gimbal might ever reach. If you find that one value work in most positions but in some it does not, that would be an indicator for an imperfectly balanced gimbal on this axis.
Line 56: Line 56:




== Step 4 - The P-Parameter ==
=== Step 4 - The P-Parameter ===


Now set the I value to 5, which is the lowest non-zero value and start tuning the [P]roportional term of the PID controller. This parameter is multiplied with the difference between actual position and target position to get the correction amount. Exactly like in the example shown at the top of this page. The higher the factor is the higher the calculated input amount will be. If it is too high we will have the tendency of overshooting the target position and if it is way too high we would get even totally erratic movements. Hence our goal is to have a very high value here but a smooth movement in all motor positions.
Now set the I value to 5, which is the lowest non-zero value and start tuning the [P]roportional term of the PID controller. This parameter is multiplied with the difference between actual position and target position to get the correction amount. Exactly like in the example shown at the top of this page. The higher the factor is the higher the calculated input amount will be. If it is too high we will have the tendency of overshooting the target position and if it is way too high we would get even totally erratic movements. Hence our goal is to have a very high value here but a smooth movement in all motor positions.
Line 65: Line 65:




== Step 5 - The I-Parameter ==
=== Step 5 - The I-Parameter ===


What is annoying still is the amount of time it takes the camera to reach a horizontal position. In the previous video it is so slow that the camera cannot be kept level even when the gimbal itself is moved. The [I]ntegral term (integral over the time) is responsible for this part of the movement. So again, we want to increase that value to the maximum possible without introducing any side effects.
What is annoying still is the amount of time it takes the camera to reach a horizontal position. In the previous video it is so slow that the camera cannot be kept level even when the gimbal itself is moved. The [I]ntegral term (integral over the time) is responsible for this part of the movement. So again, we want to increase that value to the maximum possible without introducing any side effects.

Revision as of 17:18, 13 June 2014

The biggest problem for people new to brushless gimbal is finding the correct values of the PID parameters. A PID controller is a well known and frequently used method for calculating a new input value by measuring the difference between the current state compared with the target state, applying a formula to the difference and its result is the new input value. In theory after one such calculation the target state would be reached, but in reality the motor is not indefinitely fast. So in the next iteration there is a smaller error and a better input value will be calculated based on the current difference between actual and target.

Due to this iterative approach all kind of bad things might happen. For example the gimbal might look down by 15°, our formula is: motorpower = 15° * 2W/°. Due to this amount of power the motor turns 30° instead of the expected 15°. So in the next iteration the direction is inversed to -15° * 2W/° = -30W (30W in the reverse direction). The effect would be a shaking of the motor around the 0° position. The formula used by a PID control algorithm is more advanced that above example and is optimized for quick reaction without overshooting the the target position (much). But even here, if the parameters are wrong, you get all kinds of weird movement patterns.

see Wikipedia for the details

Balancing the Gimbal

Before you do any tuning, the gimbal has to be balanced. Balancing means the center of gravity of the mounted camera is in the center of all three gimbal axis. This can be tested quite easily as it would mean that no matter how you move the camera, while the gimbal motors are turned off, the camera remains in that position. A perfectly balanced gimbal has multiple advantages

  • We want to move the camera with the RC stick. When the center of gravity would be below the pitch axis, the camera would try to get into the vertical position by itself, which sounds like a good idea at first sight, but as soon as we want to look downwards or upwards, this would work against us.
  • If the gimbal as a whole is accelerated, the camera would move as well - see image below.
  • The motors need to apply more power to keep the camera in the proper position.

In reality you will always need to compromise here, e.g. the Nex Camera has a lens that moves in and out when zooming, the gimbal does not allow infinite adjustments etc. Hence take considerable effort to balance the gimbal but at some point it will be good enough. The stronger the motors are in relationship to the camera the more reserve you have, for weaker motors a perfect balance will be a hard requirement.

DSC 7111.jpg

Imagine the copter would accelerate to the right. Because the center of gravity is below the pitch axis, the camera would look a bit downward then.


Tuning Procedure

As each value on every axis might impact the other axis, best approach is to enable one axis after the other. Hence the first step in tuning a brand new gimbal would be to disable all motors except the Roll motor and find the proper parameters for that. Then enable the Pitch motor and tune its parameters and as a final step the Yaw axis.

1main.png

Hence we need to go through the steps below for each single axis at a time.

Step 1 - Starting Point

Set the P, I and D value to zero. Without a P and I there will now position correction at all, the motor will just hold its current position.


Step 2 - Vmax

With this [Vmax] parameter we control the amount of energy applied to the motor. The software has the option to increase the value if required, that is controlled by the [Voltage Correction] percentage, which would be yet another unpredictable variable impacting the tuning. Hence set this to zero for now. Now turn the motor by hand and predict how much force will be required to hold the camera in a steady position at any time.

In this example video the starting value is 190 and there is a clear resistance to any manual movement. Then the value gets reduced to 55 and you can see that the motor can be turned almost freely. In fact it does not even have enough power to keep the current position - so much about my gimbal being balanced perfectly, right? And finally the value is set to its max of 255. In principle using the max value would be okay, except that it is a waste of battery and the motor might get hot. Therefore the advice is to define a useful low Vmax value, in case this is too low in extreme situations, we can allow temporarily higher values later by using the [Voltage Correction] option.


Step 3 - The D-Parameter

The [D]erivative term of the PID control loop is not directly related to the movement of the gimbal, it is a high frequency correction looking ahead in order to dampen future oscillations. If this value is too high, the frequency of the correction itself gets visible. Therefore, by keeping P and I at zero and just increasing the D value, we can see at what value there is no high frequency noise on the gimbal motor. The value should be as large as possible but without noise. Once you found a good value, move the motor by hand to doublecheck this noise is not audible at any motor position the gimbal might ever reach. If you find that one value work in most positions but in some it does not, that would be an indicator for an imperfectly balanced gimbal on this axis.

Listen to this video here. Initially D=0.17 and the gimbal is shaking like mad. Then the value is reduced to D=0.10 which lets the position to be stable but the high frequency noise can be heard clearly. With D=0.05 the frequency is even higher, we want the frequency to be so high that no noise is audible. At D=0.04 the noise is suddenly gone.


Step 4 - The P-Parameter

Now set the I value to 5, which is the lowest non-zero value and start tuning the [P]roportional term of the PID controller. This parameter is multiplied with the difference between actual position and target position to get the correction amount. Exactly like in the example shown at the top of this page. The higher the factor is the higher the calculated input amount will be. If it is too high we will have the tendency of overshooting the target position and if it is way too high we would get even totally erratic movements. Hence our goal is to have a very high value here but a smooth movement in all motor positions.

The video below shows the procedure. As soon as P and I are set to values greater than zero, the Gimbal moves into the target position automatically. Then the P value is increased and we keep seeing the same behavior. Once P=15 there are some weird shakes when the motor is released from a tilted position, which gets worse and worse and with P=23 the camera does shake for a while. Only once the P value is down at 13.0 a smooth movement from all positions is achieved.


Step 5 - The I-Parameter

What is annoying still is the amount of time it takes the camera to reach a horizontal position. In the previous video it is so slow that the camera cannot be kept level even when the gimbal itself is moved. The [I]ntegral term (integral over the time) is responsible for this part of the movement. So again, we want to increase that value to the maximum possible without introducing any side effects.

Initially the I value is increased to 480 and in comparison you can see the same movement with I=5. Perfect movement. The camera remains horizontal, it truly is horizontal, everything fine. But maybe we can increase it even further. At 700 the same situation, everything looks nice. But at I=1200 you can see that the camera no longer is horizontally aligned, the "time" aspect of the control loop starts to overcompensate. IF you look careful at the yellow cable of the IMU connector, it is vibrating - sorry, not very visible in the video. So 1200 is too high for sure. There were slight vibrations in some positions of the camera at 700 even, so I got set to 620 at the end.


Repeat above 5 steps

First with the roll axis and at the end with the Yaw axis. Yaw is somewhat differently as there is no "horizontal" or zero position in Yaw. And because the Yaw axis has to carry the most weight, the power values are usually higher there, or a larger motor is used.


Next step - RC Inputs

With these settings we have a self leveling gimbal. No matter what movements the gimbal support is undergoing, the camera remains stable. While this might be perfectly sufficient for basic operation, normally the gimbal shall also be moved via a RC stick or, on a hand-held gimbal, via a joystick, or functions such as switching between hold and pan modes or releasing the shutter of the camera remotely are desired.

You can learn about these possibilities in the next chapters; continue with Configure the RC Input.