跳到主要内容

1. 闭环与 PID

控制器最基本的问题是:目标已经给定,机器人却因为惯性、摩擦、负载、外力和模型误差不会自动到达目标。闭环反馈的作用,就是不断比较“想要的状态”和“真实状态”,再用误差修正控制输入。

1.1 开环局限

开环控制只按预先设定的命令执行:

目标命令 -> 执行器 -> 机器人运动

它不关心机器人到底有没有到达目标。比如你给一个关节固定电压,让它转 0.5 秒后停止。如果关节负载变重、摩擦变大、供电变低,它实际转过的角度都会变。

闭环控制多了传感器反馈:

目标状态 -> 比较误差 -> 控制器 -> 执行器 -> 机器人
^ |
| v
+-------- 传感器反馈 -------

它每个控制周期都问一次:

  • 当前状态是多少?
  • 目标状态是多少?
  • 差了多少?
  • 下一步应该输出多大控制量?

机器人关节、移动底盘、机械臂末端、四足足端接触,几乎都离不开这条闭环。

1.2 P 控制

比例控制是最简单的反馈:

其中 是目标和当前状态的误差。 越大,误差带来的修正越强。

直觉上,P 控制像一根弹簧:

  • 离目标越远,弹簧拉力越大。
  • 离目标越近,拉力越小。
  • 太小,系统软绵绵,回目标很慢。
  • 太大,系统容易冲过目标,来回振荡。

对一个关节位置控制,可以写成:

这里 是目标关节角, 是当前关节角, 是输出力矩。

1.3 D 控制

只用 P 控制时,关节会因为惯性冲过目标。D 项根据误差变化速度输出控制量:

在关节控制里,常写成:

如果目标速度 为 0,那么 D 项会在关节运动过快时产生反向阻尼。它像汽车避震器,主要作用是抑制振荡。

PD 控制是机器人里非常常见的底层控制器。很多强化学习 locomotion 策略并不直接输出电机电流,而是输出目标关节角,再由 PD 控制器在高频闭环里跟踪。

1.4 I 控制

积分项累计过去的误差:

它适合处理长期存在的小偏差。例如电机负载导致 P 控制总是差一点到不了目标,积分项会不断累积这个小误差,直到控制输入足够抵消负载。

但积分项也有副作用:

  • 大误差持续时间太长时,积分会越积越大。
  • 控制量已经饱和时,积分还在继续累积,会导致严重超调。
  • 传感器有偏置或低频噪声时,积分会把偏差放大。

这就是工程里常说的积分饱和。它不是理论上的小问题,而是真机上很常见的失稳来源。

1.5 PID 组合

完整 PID 写成:

三项可以这样理解:

控制项直觉主要解决常见风险
P误差越大,修正越强响应速度过大振荡,过小迟钝
I长期误差慢慢补回来稳态误差积分饱和,超调
D看误差变化趋势阻尼和稳定性放大噪声

机器人关节控制里,最常见的是 PD 或带很小积分项的 PID。原因是关节编码器速度反馈通常足够好,而积分项在高动态任务里容易带来额外风险。

1.6 离散 PD

真实控制器在固定周期内运行。假设控制周期是 dt,关节目标是 q_des,当前关节角是 q,当前关节速度是 dq

def pd_control(q_des, dq_des, q, dq, kp, kd):
position_error = q_des - q
velocity_error = dq_des - dq
torque = kp * position_error + kd * velocity_error
return torque

如果目标是定点控制,dq_des 通常设为 0。如果目标是一条轨迹,dq_des 应该来自轨迹本身,而不是简单设 0。

1.7 调参流程

PID 调参不要三个参数一起动。推荐顺序:

  1. 先只开 P,让系统能朝目标运动。
  2. 慢慢增大 P,直到响应够快但还没有严重振荡。
  3. 加 D,把过冲和振荡压下来。
  4. 如果存在稳定后的长期偏差,再少量加 I。
  5. 一旦加 I,必须考虑积分限幅和输出饱和。

下一章会把这些工程细节拆开:离散化、限幅、抗积分饱和、微分滤波和真机调参顺序。