4、PID控制基线:传统PID控制原理、在轨迹跟踪中的局限性、作为RL对比基线

各位同学,今天我们来聊聊一个老朋友——PID控制器。

说实话,做机器人控制这么多年,PID是我用得最多的算法之一。它简单、可靠,而且效果往往出人意料地好。但咱们今天不是来吹PID的,而是要客观地看看它到底能做什么,不能做什么。更重要的是,我们要把它作为强化学习的对比基线,这样才能看出RL到底强在哪里。

4.1 传统PID控制原理

PID,全称是比例-积分-微分控制。说白了,就是根据当前的误差、过去的误差累积、以及误差的变化趋势,来调整控制量。

公式很简单:

u(t) = Kp * e(t) + Ki * ∫e(τ)dτ + Kd * de(t)/dt

其中:

  • e(t):当前误差,也就是目标值减去实际值
  • Kp:比例系数,决定了对当前误差的反应强度
  • Ki:积分系数,负责消除稳态误差
  • Kd:微分系数,预测误差的变化趋势,起到阻尼作用

我个人习惯把这三个部分理解成三种性格:

  • 比例项:急性子,看到误差就猛打方向,但容易过头
  • 积分项:记仇,把过去的误差都记着,慢慢还
  • 微分项:预言家,提前刹车,防止震荡

我在项目中遇到过一个小机器人,只用P控制,结果一直在目标点附近来回晃,像个喝醉的企鹅。加上D之后,立马稳了。嗯,这就是微分项的功劳。

核心要点:PID的三个参数需要配合调优。Kp太大容易震荡,Kd太大响应变慢,Ki太大可能引起积分饱和。

4.2 在轨迹跟踪中的局限性

PID在简单的线性系统上表现很好。但轨迹跟踪,说白了就是让机器人沿着一条预设的路径走,这可比定点控制复杂多了。

为什么会这样?我总结了几个关键问题:

  1. 非线性问题:机器人系统本质上是非线性的。比如轮子打滑、关节摩擦、电机饱和,这些PID都处理不好。你想想看,一个线性控制器去控制非线性系统,就像用直尺画曲线,能画好吗?
  2. 时变特性:机器人的动力学参数会随着时间变化。比如电池电压下降,电机力矩就变小了。PID的参数是固定的,没法自适应调整。
  3. 耦合问题:多关节机器人,一个关节的运动会影响另一个关节。PID是独立控制每个关节的,没法处理这种耦合效应。
  4. 延迟问题:传感器有延迟,执行器有惯性。PID对纯延迟系统天生不擅长,容易产生超调和震荡。

避坑指南:我曾经在一个四足机器人项目里,用PID做腿部轨迹跟踪。结果在高速奔跑时,机器人直接摔了个狗啃泥。后来分析发现,PID在高速动态场景下,积分项累积了太多误差,导致控制量饱和,系统失稳。嗯,从那以后,我对PID的高速应用就格外小心了。

说白了,PID适合那些“慢悠悠、线性、单输入单输出”的场景。但轨迹跟踪往往是“快、非线性、多输入多输出”的,这就有点强人所难了。

4.3 作为RL对比基线

既然PID有这么多局限,为什么还要用它做基线呢?

原因很简单:PID是工业界最常用的控制器。如果你说你的RL算法比PID好,那得先证明它确实比PID强。否则,没人会信你。

我建议这样设置对比实验:

对比维度 PID RL
调参难度 需要手动调参,依赖经验 自动学习,但训练时间长
适应性 固定参数,无法适应变化 可以适应不同环境和任务
非线性处理 差 强(神经网络可以拟合任意函数)
实时性 高(计算量小) 中等(需要推理网络)
可解释性 高(每个参数都有物理意义) 低(黑盒模型)

你看,PID和RL各有优劣。但作为基线,PID提供了一个“最低标准”。如果你的RL算法连PID都打不过,那说明你的算法有问题,或者你的问题根本不需要RL。

我的经验:在对比时,一定要把PID的参数调好。我曾经见过有人拿一个没调好的PID去对比RL,然后说RL比PID好很多。这其实是在作弊。调好PID,是对基线的基本尊重。

下面这张图展示了PID和RL在轨迹跟踪中的核心逻辑对比:

PID控制流程 目标轨迹 r(t) 误差计算 e(t) = r(t) - y(t) PID控制律 u(t) 实际输出 y(t) 反馈 RL控制流程 状态 s(t) + 目标 策略网络 π(a|s) 动作 a(t) = π(s) 新状态 s(t+1) + 奖励 r 反馈 VS

从这张图可以看得很清楚:PID是“误差驱动”的,而RL是“状态驱动”的。PID只知道当前误差,RL知道整个状态空间。这就是为什么RL能处理更复杂的问题。

好了,关于PID基线就聊这么多。记住,PID不是敌人,而是我们衡量进步的标尺。下一节,我们会正式进入RL的世界,看看它到底是怎么解决轨迹跟踪难题的。

总结:

  • PID原理简单,但调参需要经验
  • PID在非线性、时变、耦合系统中表现不佳
  • 作为RL基线,PID提供了一个公平的对比标准
  • 调好PID参数,是对基线的基本尊重

可可精品资料库