Sawyer robot Gravity Compensation issue


Recommended Posts

Hi all, 

Recently, we have acquired two robot sawyers for research and now we are developing some new dynamic controllers, by using the joint torques functionality of the SDK.

The problem is that when zero torques are applied in open loop, the robot does not remain stationary, but moves up. We guess that this behavior is produced because of the gravity compensation module provided by the robot is not accurate enough.

We did run the calibration script and, also it improved a little bit, the robot still not behaving correctly.

So here, we thought in two possibilities:

1) Modify the mass of some joints. Is this possible? We  think it is not, though.

2) Suppress the gravity compensation provided by the SDK and model us that module.

We tried 2) using the data provided by the URDF (masses and position of the center of gravity of each joint) but it looks like our model is  even worst, too ideal.

The question is, have anyone faced up this problem before?

Thanks in advance,


Link to comment
Share on other sites

  • 2 months later...


I recently started working on Sawyer and I am also trying to use my own dynamic model to control the arm using the joint torque control.

@ErnestoDid you manage to solve this "moving up" motion while zero torques are applied? I tried to apply an opposite torque to counter this "upward" motion, but the amount of torque that I am applying is defined very approximately (try/error), since I do not know where the problem is coming from....

Regarding the dynamic model of Sawyer, I tested out some path tracking using either a joint position control or a joint torque control. With the joint position control everything works. With the joint torque control, it seems that some torques that i've computed do not manage to move the arm as I want it. In order to have a better estimation of the torque that I have to apply, I am now trying to improve my model by considering the stiffness and viscous friction in the joints. However, I could not find dynamical parameter of the springs (of the series elastic actuators) in the "Download" section of this Forum. Are these springs parameters available? could it be possible to have them for each joint?



Link to comment
Share on other sites

  • 5 months later...

I am also finding the same problem as you guys, when I apply zero torques in a loop, the arm floats upwards. I know that torque control gives us access to the lower levels of the robot, but is there any way to get the proper gravity compensation torques such that the arm does float with small torques? Does anyone have a fix for this? It would be a great if someone from rethink could also weigh in on this! 


Link to comment
Share on other sites

Hi mdalal,

With Gravity Compensation enabled, applying a Zero torque to every joint will cause the arm to either float up or float down,  for the following reasons:

- The spring deflection sensors have small amounts of signal noise that can contribute to a small torque bias. Even when the robot is perfectly calibrated, this is to be expected.

- When commanding the arm in Torque mode, the arm is attempting to achieve the torque value you supplied, before accounting for gravity compensation. This is typically what you want: e.g. you might want to apply 2 N-m of force on right_j3, while accounting for gravity. If the robot is not completely level, or well calibrated, the Gravity Compensation calculation will deviate slightly from the real gravity affecting the arm.

- When you are supplying Zero Torque to every joint, you are not telling the arm "don't move", you're telling the arm "do not add any additional torques besides Gravity Compensation". Due to the above explanations, you will find the arm will move slightly.

The best solution to achieving no motion when applying Zero Torque to every joint, is to wrap your Torque controller in a small position loop, to calculate any movement and apply small proportional torques to stop the movement. For a more detailed look at the Torque control mode, please consult the wiki:

Hope this helps!

~ Ian

Link to comment
Share on other sites


This topic is now archived and is closed to further replies.