重力补偿
Gravity Compensation常用按模型算出托住机器人自重所需的关节力矩并提前加上,让手臂不因重力下垂。
机械臂每个关节都要持续出力托住后面连杆的重量,所需力矩随姿态变化,记作 g(q)(q 为关节角)。重力补偿就是用各连杆质量、质心等模型参数实时算出 g(q),作为前馈量(不等误差出现就提前给出的量)加到控制输出上。只用 PD 控制时,要靠残留的位置误差才能产生抵抗重力的力矩,末端会略微下垂,加上重力补偿即可消除。若只输出 g(q)、不加位置反馈,手臂能停在任意位置,人一推就动,这就是协作臂的重力补偿模式,也是拖动示教的基础。装了夹爪或抓着重物时要把负载质量和质心告诉控制器,否则补偿不准。
例子Franka 机械臂的 libfranka 接口里,用户发送的关节力矩指令不含重力和摩擦项,由控制器内部补上;其模型库的 gravity() 函数算重力矩时要传入末端负载的质量和质心位置。
- 也叫
- 重力补偿模式、重力矩补偿、Gravity Comp
- 相关
- 零力拖动、PD 控制、前馈控制、计算力矩控制、拖动示教、摩擦补偿
- 来源
- Modern Robotics 11.5: Force Control(τ = g(θ) + JᵀF_tip,含重力模型)
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)