Mike Warner found there is the problem of torque in the plant/load dynamics block. He put the scopes in the torque input, Gravity Compensation, and Friction/Damping Compensation, and noticed that the sum of both Compensations is similar to the maximum torque, and there is no torque left to get a motion started (marked as TTorque, see the following figure:
To fix it, he inserted a gain of 0.5 to the Coulomb Friction output and the system seems to work fine.
He has no idea what the friction value should be, maybe this is something we need to bring up with MOOG, as the sum of both compensations exceeds the available torque in this particular situation. He contacted Ghavimi, Ali to see he could help this or not.
I asked the following questions and Mike Warner replied:
1. What will happen for the positive point-to-point movement (positionSet 1.5)? It looks like this gain value will affect all control modes globally.
This change should have a minimal effect in the performance of the system, Coulomb Friction, also called Stiction, is usually destabilizing in a control loop, if anything the system should be more stable, I tried the positive motion with no problems.
2. Why is this an asymmetric behavior? I thought the plant model should be symmetric. But why it is not?
The system is not really symmetrical, as it includes a gravity compensation, which sometimes might push/pull the system in one direction, in this case a positive motion it helped, and a negative motion it was pulling, and it needed more torque that was available causing the failure.
3. If there is no other concern, should we just put this gain=0.5 correction and claim the bug is fixed? Will it affect other subsystem's behavior in the plant model? I do not understand the meaning of Coulomb friction here. Can you explain to me what is that? And what will happen if we assume the Coulomb friction was original half?
I have no concerns, as the real hardware was tested and seems to work fine, maybe we can get telemetry and refine the actual Coulomb Friction model eventually, the values used in the model could be an unrealistic worst case.