# Gravity compensation

I am just getting curious about this gravity compensation technique. If we could compensate the force generated by the gravity (by feeding in the exact amount of force into the opposite direction), will the mass of the robot be 0 kg?

Could we then just swing a 1000kg robot arm with our hand?

In an ideal scenario, yes, that should be the case. When gravity compensation is implemented on robots, all joints apply a torque to balance out the torque applied by the force of gravity. They should ideally turn into floating robots objects.

However, it is not always the case due to inaccurate modeling and gravity compensation implementation. Moreover, to swing a robot arm, you'll also need to overcome friction, stiction and other forces that oppose motion at the joint level.

If you have a Zero-Friction Zero-Gravity controller (you feed gravity compensation torques as well as friction torques in a tight closed loop), then the robot should be simply floating in space, massless. In such a case, you can definitely move a robot arm around with your hand, regardless of the mass. It is because all the forces that the robot needs to overcome and break into motion have already been overcome and the slightest of external efforts shall be extra input and sufficient to move the robot.

• Good answer. You will also need a method to sense the external input so the robot allows the motion instead of trying to maintain its pose. Mar 20, 2019 at 3:24

I'm afraid not, actually. Even if you have a perfect friction compensation and a perfect gravity compensation, you still need to deal with inertia. It will be extremely hard to swing it in arbitrary direction due to large inertia (and Coriolis and centrifugal forces, if your robot arm is multi-dof system).

Using equations, a generic manipulator equations of motion is given as:

$$M(q)q"+C(q,q')q'+g(q)+tau_{fric}=u_motor + u_{user}$$

Suppose perfect gravity/friction compensator, i.e., $$u_{motor} = g(q) + tau_{fric}$$. You are left with

$$M(q)q"+C(q,q')q'=u_{user}$$

To generate arbitrary motion, i.e., arbitrary $$q(t)$$, you need sufficient amount of effort to overcome inertia $$M(q)$$ and Coriolis/centrifugal $$C(q,q')$$, both of which are approximately proportional to mass.