Embodied AI Glossary中文

Gravity Compensation

重力补偿Common

Precomputing the joint torque needed to hold up the robot's own weight and adding it feedforward so the arm doesn't sag.

Every joint in a robot arm must continuously supply torque to hold up the weight of the links beyond it, and the torque needed changes with pose — written as g(q), where q is the vector of joint angles. Gravity compensation computes g(q) in real time from each link's mass and center of mass, then adds it as a feedforward term (supplied before any error appears, rather than in response to one) to the control output. With plain PD control alone, the needed anti-gravity torque only shows up through leftover position error, so the end-effector sags slightly; adding gravity compensation removes that sag. If the controller outputs only g(q) with no position feedback, the arm can be pushed anywhere by hand and stays put — this ‘gravity compensation mode’ (free-drive) is found on collaborative arms and underlies kinesthetic teaching. Once a gripper or a heavy payload is attached, its mass and center of mass must be told to the controller, or the compensation will be off.

ExampleOn Franka arms, the libfranka interface expects the user's joint-torque commands to exclude gravity and friction terms — the controller adds those internally; its dynamics library's gravity() function needs the end-effector load's mass and center of mass to compute the gravity torque correctly.

Also called
Gravity Comp, Gravity Compensation Mode
Related
Zero-Force Drag · Proportional-Derivative Control · Feedforward Control · Computed Torque Control · Kinesthetic Teaching · Friction Compensation
Sources
Modern Robotics 11.5: Force Control(τ = g(θ) + JᵀF_tip,含重力模型) (Chinese)
Modern Robotics 11.4: Motion Control with Torque or Force Inputs (Part 3 of 3)
libfranka robot.h(joint-level torque commands without gravity and friction)

See it in the full glossary →