I have three identical setups that are installed on different kinds of floor. Two on concrete floors in the office of two different customers, and a third one in our office which is mounted on a large wooden board sitting on top of a concrete floor. The floor is the only difference between the three setups. The setup in Italy behaves differently: When in certain positions, the robot appears to go into self-oscillation and vibrate at frequencies around 30 Hz.
This can be seen on both the force sensor’s input and the joint’s actual power consumption reported back over RTDE. Here’s a plot of appx. 6 seconds of the elbow joint’s actual power consumption. The elbow is the one that vibrates the most. The shoulder also vibrates to some degree:
The joint’s target power consumption does not show these oscillations, which makes sense because the movej commands I’m sending do not contain any vibrations. The movement shown here is not guided by input from the force sensor in any way. It’s a simple “move from A to B” movement guided by RTDE at 500 Hz.
My guess is that the robot has an idea of where it should be mathematically, and that it auto-corrects any deviation by moving slightly counter to that deviation. And this causes the self-resonating behavior.
In other words: The vibrations reflect a difference between what I tell the robot to do vs. what it actually does. And this difference only exists in Italy, on a concrete floor of questionable quality.
My main theory is that the specific floor in Italy has a resonance frequency around 30 Hz, causing this to happen. The effect is more pronounced when the robot arm is in certain positions, which I believe is because of the robot’s own resonance frequency changing depending on whether it is stretched out or more folded together. (Stretched out far actually works well, the shaking happens when the robot is in a more folded in position.)
The big question is: What options do I have to prevent this self-oscillation? Does the “gain” value of servoj have an impact on the “stiffness” of the robot? Are there any settings in the robot itself (tool weight etc.) that may change how the robot reacts to a wobbly floor?
Any ideas?
