机器人控制器分类总览
1. 位置控制(Position Control)
原理:
最基础的方式 —— 控制器不断将当前关节位置向目标位置调整,类似于 PID 控制器中的 P 控制项。
Python tau = kp * (q_desired - q_current) |
特点:
易实现,稳定性好
不依赖机器人动力学建模
精度取决于位置控制回路的频率和增益设置
局限:
无视真实外力和接触力
对于刚性接触场景(例如抓取、插入)容易震荡甚至损坏物体
应用:
初始标定
简单轨迹跟随
无需接触感知的任务
2. 速度控制(Velocity Control)
原理:
让关节以指定的速度变化,属于一种低惯性的动态控制。
Python q_dot_command = q_dot_desired |
特点:
平滑动作,不易抖动
适合软路径规划的执行
可以组合 PID 的速度环调节精度
局限:
若轨迹非平滑,容易导致末端运动不连续
无触觉反馈,仍不适合复杂接触
应用:
避障中的路径跟随
路径平滑插值执行(如 DMP)
3. 力矩控制(Torque Control)
原理:
控制器直接输出关节力矩,完全由策略或上层控制器决定力矩值。
Python tau = tau_desired |
特点:
最大自由度,控制灵活
可表达所有动态行为(震动、弹跳等)
局限:
非常容易不稳定(小错误就会放大)
对硬件要求高:高频采样、高稳定性
应用:
仿真训练强化学习策略
复杂真实操作(如精细打击、快速反应)
4. 阻抗控制(Impedance Control)
原理:
模拟一个弹簧+阻尼系统,使机器人末端“弹性”地向目标靠近,可以自然吸收外力并响应。
Plain Text F = k_p * (x_desired - x) + k_d * (v_desired - v) tau = J.T @ F |
其中:
x 是末端实际位置,x_desired 是目标位置
F 是等效控制力
J 是雅可比矩阵
特点:
支持软接触,控制自然
可以灵活设定“刚性”或“柔软性”
广泛应用于人机协作、擦拭、抓取等
局限:
实现复杂(涉及雅可比、力矩转换)
如果参数不调好(刚度、阻尼),可能会不稳定或表现迟钝
应用:
人机协作(人推动机器人)
遇到外力变化的任务
拖动示教 / 轨迹模仿学习
5. 力/力矩控制(Wrench Controller)
原理:
策略或控制器直接控制末端坐标系下的期望力(Fx, Fy, Fz)和力矩(Tx, Ty, Tz),通过雅可比矩阵转为关节力矩。
Python tau = J.T @ wrench_desired |
特点:
精确控制与环境交互的力
适合需要“推动”或“维持接触力”的任务
可以直接做力反馈或力控制回路
局限:
对机器人建模要求高
对误差敏感(姿态误差会导致力误差)
容易不稳定(需要高频+力传感器)
应用:
插孔(插头插座)、摩擦滑动
推动门、拖动物体
与刚性障碍物精确交互
6. 伺服控制(Operational Space / Cartesian Servo)
原理:
目标是在笛卡尔空间中实现期望轨迹/速度/加速度,然后通过动力学模型将其映射为关节空间力矩。
如 Operational Space Control(OSC)就属于伺服控制的代表。
Python tau = M(q) * x_ddot_desired + C(q, q_dot) * q_dot + G(q) |
特点:
直接控制末端路径
高动态性能,适合复杂轨迹
支持多任务协同(例如同时控制姿态 + 力)
局限:
动力学建模复杂
雅可比、惯量矩阵都必须在线计算
适合高性能机器人,不适合资源有限平台
应用:
快速抓取、空中翻转
同时控制多个目标点(多任务)
总结比较(建议收藏)
总结学习建议
初学阶段:建议从位置/速度控制入手,便于理解反馈闭环;
应用阶段:逐步引入阻抗控制,理解其自然交互能力;
研究或挑战阶段:学习力/力矩控制和 Operational Space Control,实现高级动态任务。

