Position Control jitters around target position
Posted: Thu Mar 07, 2019 9:03 am
Next question
Again using Command 65, i'm moving to some target position. Works so far, deccelerates, crawls to target (depending on Ki and MaxI).
As soon as the Target position is reached (the position error changes its sign), RoboClaw suddenly speeds up a little bit, overshooting the target (e.g. Pos 100000) by e.g. 800 steps. Then it reverses, crawls again to the target and the cycle repeats. I can reduce the behaviour by lowering Ki and/or MaxI till the DeadZone stops the motor, but i would really like to understand what's happening.
Release-notes show that You dropped the Leaky Integrator. I have yet to understand what the Back Calculation thing does.
Parameters are:
Velocity Kp = 0.953690
Velocity Ki = 0.059158
Velocity Kd = 0.000000
QPPS = 50000
Position Kp = 10.000000
Position Ki = 0.029297
Position Kd = 0.000000
Max I = 100000
Deadzone = 30
Min Position = 0
Max Position = 1163000
S3 Pin Func = 0 / 0x00
S4 Pin Func = 2 / 0x02
S5 Pin Func = 2 / 0x02
These are the values given to the Arduino/Linux library, so the PID values are the floating point ones. The Velocity PID values are from the AutoTune, the Position ones are handcrafted till positioning was fairly ok.
Many Thanks in advance.
Christof
Again using Command 65, i'm moving to some target position. Works so far, deccelerates, crawls to target (depending on Ki and MaxI).
As soon as the Target position is reached (the position error changes its sign), RoboClaw suddenly speeds up a little bit, overshooting the target (e.g. Pos 100000) by e.g. 800 steps. Then it reverses, crawls again to the target and the cycle repeats. I can reduce the behaviour by lowering Ki and/or MaxI till the DeadZone stops the motor, but i would really like to understand what's happening.
Release-notes show that You dropped the Leaky Integrator. I have yet to understand what the Back Calculation thing does.
Parameters are:
Velocity Kp = 0.953690
Velocity Ki = 0.059158
Velocity Kd = 0.000000
QPPS = 50000
Position Kp = 10.000000
Position Ki = 0.029297
Position Kd = 0.000000
Max I = 100000
Deadzone = 30
Min Position = 0
Max Position = 1163000
S3 Pin Func = 0 / 0x00
S4 Pin Func = 2 / 0x02
S5 Pin Func = 2 / 0x02
These are the values given to the Arduino/Linux library, so the PID values are the floating point ones. The Velocity PID values are from the AutoTune, the Position ones are handcrafted till positioning was fairly ok.
Many Thanks in advance.
Christof