关节阻抗控制
Joint Impedance Control进阶让机器人每个关节表现得像弹簧加阻尼器,被推时顺从让开而不是硬顶。
阻抗控制由 MIT 的 Neville Hogan 在 1984–1985 年的论文中系统提出,目标不是死死跟住某个位置或力,而是规定机器人受外力时有多「软」。关节阻抗控制把这种弹簧-阻尼行为设在每个关节上,典型控制律是 τ = K(q_d − q) + D(q̇_d − q̇) + 重力与科氏力补偿,其中 τ 是关节力矩,q、q_d 是实际和期望关节角,K 是刚度,D 是阻尼。形式上像 PD 控制,区别在于它要求关节能直接输出力矩并补偿动力学,K 往往刻意调小,让机器人碰到人或物体时被推开,而不是硬顶。与之相近的笛卡尔阻抗控制把弹簧设在末端的 x、y、z 和姿态上,更直观地规定手在哪个方向软;导纳控制则反过来,先测外力再算出该怎么动,适合本身很硬的位置控制型机械臂。
例子Franka 机械臂的内置控制器默认就是关节阻抗模式,libfranka 可用 setJointImpedance 设置各关节刚度;franka_ros 的示例控制器按「科氏补偿 + k·(q_d − q) + d·(q̇_d − q̇)」计算每个关节的指令力矩,让机械臂一边画圆一边保持柔顺。
- 也叫
- 关节空间阻抗控制、Joint-space Impedance Control
- 相关
- 阻抗控制、笛卡尔阻抗控制、导纳控制、力矩控制、PD 控制、重力补偿
- 来源
- Impedance control - Wikipedia
libfranka robot.h(setJointImpedance / ControllerMode::kJointImpedance)
franka_ros joint_impedance_example_controller.cpp