嵌入式

轮腿调参经验总结

2026-04-23 更新 · 10 分钟阅读 轮腿嵌入式调参

以玺佬的六变量模型为例,整理一套从悬空到落地、从腿部到整车的轮腿参数调节思路。

基础内容

轮腿控制通常由多个控制环共同完成。本文讨论的调参流程主要包括:

  • 腿长控制:单环 PID。
  • 劈叉抑制:单环 PD 或 PID。
  • Yaw 控制:双环 PID。
  • 平衡控制:基于六变量模型的 LQR。

LQR 部分使用状态向量:

$$ \mathbf{x} = \begin{bmatrix} \theta & \dot{\theta} & x & \dot{x} & \phi & \dot{\phi} \end{bmatrix}^T $$

以及控制向量:

$$ \mathbf{u} = \begin{bmatrix} T & T_p \end{bmatrix}^T $$

其中,各变量含义通常可以理解为:

  • $\theta$:腿部摆角。
  • $\dot{\theta}$:腿部摆角角速度。
  • $x$:轮端位移或车体位移。
  • $\dot{x}$:轮端速度或车体速度。
  • $\phi$:机体 pitch 角。
  • $\dot{\phi}$:机体 pitch 角速度。
  • $T$:轮端输出力矩。
  • $T_p$:髋关节输出力矩。

实际工程中变量定义可能略有差异,应以自己的建模方式和代码实现为准。

Q 和 R 的作用

LQR 的代价函数可以写成:

$$ J = \int ( \mathbf{x}^T Q \mathbf{x} + \mathbf{u}^T R \mathbf{u} ) dt $$

离散形式则常写成:

$$ J = \sum (\mathbf{x}_k^T Q \mathbf{x}_k + \mathbf{u}_k^T R \mathbf{u}_k) $$

其中:

  • $Q$ 矩阵用于惩罚状态误差,矩阵中的变量与 $\mathbf{x}$ 对应。
  • $R$ 矩阵用于惩罚控制输入,矩阵中的变量与 $\mathbf{u}$ 对应。

增大某个状态对应的 $Q$ 值,控制器会更重视该状态的收敛。例如增大 $Q_{\phi}$,机体 pitch 会被更强地拉回目标角度,响应通常更快,但控制也会更激进。

增大某个控制量对应的 $R$ 值,控制器会更不愿意使用该控制量。例如增大 $R_T$,轮端力矩输出会更保守,响应更柔和,但速度和位移收敛可能变慢。

可以简单记为:

  • 增大 $Q$:更重视状态收敛,响应更快,控制更激进。
  • 减小 $Q$:允许状态慢慢收敛,控制更温和。
  • 增大 $R$:控制输入更贵,输出更保守。
  • 减小 $R$:控制输入更便宜,输出更激进。

需要注意的是,LQR 更关注 $Q$ 和 $R$ 的相对比例。在线性、无限幅的理想情况下,如果同时把 $Q$ 和 $R$ 乘以同一个倍数,反馈增益 $K$ 理论上不会改变。

调参前检查

正式上车调试之前,应先确认 $\mathbf{x}$ 和 $\mathbf{u}$ 中每个量的方向是否正确。方向错误会导致反馈变成正反馈,轻则震荡,重则直接炸车。

建议至少检查以下内容:

  • $\theta$、$\phi$ 的正方向是否与建模一致。
  • $\dot{\theta}$、$\dot{\phi}$ 的正方向是否与角度微分一致。
  • $x$、$\dot{x}$ 的正方向是否与轮端运动方向一致。
  • $T$、$T_p$ 的输出方向是否能产生预期的运动趋势。
  • 电机限幅、力矩限幅、腿长限幅是否已经配置。
  • 遥控器急停、保护落地、异常断使能逻辑是否可靠。

这也是仿真的重要意义:可以先在仿真中观察各状态量和控制量的运动趋势,提前发现方向、符号和量纲问题,避免在实车上造成损失。

开始调参

下面给出一套从零开始逐步调出轮腿参数的流程。

强烈建议先在仿真环境中完整跑一遍,熟悉参数变化对系统行为的影响,再上实车调试。

1. 悬空状态,先调腿长

首先将机体悬空,只关注腿长控制。

腿长控制一般是单环 PID:

  • 输入:目标腿长与实际腿长的误差。
  • 输出:沿杆方向的支撑力或等效力 $F_0$。

调参目标是:

  • 腿长能稳定跟踪目标值。
  • 阶跃响应不过度震荡。
  • 左右腿表现尽量一致。
  • 输出不过早打满。

这个阶段不要急着加入 LQR。先确保腿长环本身稳定,否则后面的平衡控制会叠加在一个不可靠的底层执行系统上,调参会非常困难。

2. 悬空状态,调腿部摆角

腿长稳定后,保持机体悬空,开始调腿部摆角控制。

此时可以只启用 $\theta$ 和 $\dot{\theta}$:

$$ \mathbf{x} = \begin{bmatrix} \theta & \dot{\theta} & 0 & 0 & 0 & 0 \end{bmatrix}^T $$

控制量只保留髋关节力矩 $T_p$:

$$ \mathbf{u} = \begin{bmatrix} 0 & T_p \end{bmatrix}^T $$

调参目标是让腿部摆角能够稳定、快速地跟踪目标值。

此时主要调整:

  • $Q_{\theta}$:腿部摆角误差权重。
  • $Q_{\dot{\theta}}$:腿部摆角角速度权重。
  • $R_{T_p}$:髋关节力矩惩罚。

如果腿摆得太慢,可以适当增大 $Q_{\theta}$ 或减小 $R_{T_p}$。如果腿部抖动明显,或髋关节输出过大,可以增大 $R_{T_p}$,并适当调整 $Q_{\dot{\theta}}$。

完成这一步后,腿部在离地状态下应当已经具备基本的摆角稳定能力。

3. 落地后,保障腿的基础控制

接下来让轮腿落地,先不要加入完整状态量,而是继续围绕腿部基础控制调试。

落地后需要重新优化腿长 PID,因为悬空状态和承重状态下的负载完全不同。此时调参目标是:

  • 腿长能够撑起整车。
  • 静止时腿长无明显塌陷。
  • 支撑力输出不过度震荡。
  • 左右腿高度一致,受力接近。

同时继续调整 $Q_{\theta}$、$Q_{\dot{\theta}}$ 和 $R_{T_p}$,让腿部能在落地状态下维持竖直。这个阶段的重点不是让整车运动,而是确保腿能稳定支撑,并且不会因为地面接触引入明显震荡。

4. 加入机体 pitch 控制

腿部落地稳定后,再加入机体 pitch 控制。不要一开始就把所有状态量全部打开,应逐步增加状态量,方便定位问题。

此时启用:

$$ \mathbf{x} = \begin{bmatrix} \theta & \dot{\theta} & 0 & 0 & \phi & \dot{\phi} \end{bmatrix}^T $$

控制量使用完整形式:

$$ \mathbf{u} = \begin{bmatrix} T & T_p \end{bmatrix}^T $$

这个阶段的目标是让机体 pitch 保持水平,同时腿部摆角也能稳定收敛。

主要调整:

  • $Q_{\phi}$:机体 pitch 角误差权重。
  • $Q_{\dot{\phi}}$:机体 pitch 角速度权重。
  • $R_T$:轮端力矩惩罚。
  • $R_{T_p}$:髋关节力矩惩罚。

如果机体回正太慢,可以适当增大 $Q_{\phi}$ 或减小 $R_T$。如果车体前后抽动明显,或者轮端力矩频繁打满,则需要增大 $R_T$,同时检查 pitch 角速度反馈是否过强。

完成此阶段后,系统应当表现为:腿摆杆稳定,机体 pitch 能够回正,整车可以保持基本平衡。

5. 最后加入位移和速度

在腿部和机体 pitch 都能稳定后,再加入 $x$ 和 $\dot{x}$,构成完整状态向量:

$$ \mathbf{x} = \begin{bmatrix} \theta & \dot{\theta} & x & \dot{x} & \phi & \dot{\phi} \end{bmatrix}^T $$

此时重点调整:

  • $Q_x$:位移误差权重。
  • $Q_{\dot{x}}$:速度误差权重。
  • $R_T$:轮端力矩惩罚。
  • $R_{T_p}$:髋关节力矩惩罚。

通常建议先让速度稳定,再考虑位移回正。因为位移权重过大时,车会强烈试图回到原点,容易出现来回拉扯;速度权重合适时,车体运动会更可控。

调参目标是:

  • 速度指令能平稳跟踪。
  • 松杆后速度能稳定回零。
  • 位移不会持续漂移。
  • 轮端力矩不过早饱和。
  • pitch 和腿摆角不会被位移控制明显带崩。

完成这一步后,LQR 主体参数基本就调整完毕了。

细节优化

当轮腿已经能够稳定站立和运动后,再加入细节控制。不要在主平衡参数还不稳定时过早加入太多补偿项,否则问题来源会变得很难判断。

腿部劈叉抑制

劈叉抑制用于减少左右腿角度或位置不一致带来的结构扭动。常见做法是对左右腿的摆角差、腿长差或髋关节相对误差做 PD 控制。

调参目标是:

  • 左右腿不会明显向外或向内分开。
  • 机体不会因为左右腿不一致产生横向扭动。
  • 抑制力矩不过度干扰主 LQR 控制。

建议从较小的 P、D 开始逐步增加。P 太大容易让左右腿互相拉扯,D 太大则可能放大噪声,导致髋关节高频抖动。

Yaw 控制

Yaw 通常使用双环 PID:

  • 外环:yaw 角度环。
  • 内环:yaw 角速度环。

调参时建议先调角速度内环,再调角度外环。内环目标是让车体转向响应稳定、不过冲;外环目标是让车体能够回到目标朝向。

需要注意:

  • Yaw 输出不要明显干扰左右腿支撑。
  • 转向时轮端力矩不要长时间饱和。
  • 原地转向和行进中转向要分别测试。
  • 高速运动时应适当降低 yaw 响应,避免侧向不稳定。

限幅与保护

实车调参时,限幅和保护比参数本身更重要。建议至少包含:

  • 腿长目标限幅。
  • 腿长速度限幅。
  • 支撑力 $F_0$ 限幅。
  • 轮端力矩 $T$ 限幅。
  • 髋关节力矩 $T_p$ 限幅。
  • pitch 角过大断使能。
  • 腿长异常断使能。
  • 电机通信异常断使能。
  • 遥控器急停。

如果系统存在明显震荡,不要只盯着 Q、R 调参,也要检查输出是否频繁饱和。执行器饱和会破坏 LQR 的线性假设,导致仿真和实车表现明显不一致。

常见现象与处理

现象 可能原因 处理思路
一上电就向某个方向猛冲 状态量或控制量方向错误 重新检查 $\theta$、$\phi$、$x$、$T$、$T_p$ 的正方向
腿长持续震荡 腿长 PID 过激或支撑力限幅不合理 降低 PID,检查腿长滤波和输出限幅
腿部摆角抖动 $R_{T_p}$ 太小或角速度反馈噪声大 增大 $R_{T_p}$,检查 $\dot{\theta}$ 滤波
机体 pitch 回正慢 $Q_{\phi}$ 偏小或 $R_T$ 偏大 增大 $Q_{\phi}$ 或减小 $R_T$
车体前后抽动 轮端输出过激或速度权重不合适 增大 $R_T$,重新调整 $Q_{\dot{x}}$
位移来回拉扯 $Q_x$ 过大 先减小 $Q_x$,优先调好速度
控制仿真正常,实车异常 方向、量纲、延迟、饱和或滤波不一致 对比仿真和实车的状态量、控制量曲线

推荐调参顺序

整体顺序可以概括为:

  1. 悬空调腿长 PID。
  2. 悬空调腿部摆角 LQR,只启用 $\theta$ 和 $\dot{\theta}$。
  3. 落地重新优化腿长 PID,让腿能稳定撑车。
  4. 落地调腿部摆角,让腿能维持竖直。
  5. 加入 $\phi$ 和 $\dot{\phi}$,调机体 pitch 平衡。
  6. 加入 $x$ 和 $\dot{x}$,调速度与位移。
  7. 加入劈叉抑制。
  8. 加入 yaw 双环 PID。
  9. 完善限幅、保护和不同工况测试。

总结

轮腿调参的核心思路是分阶段降低问题复杂度。先保证底层腿长可靠,再调腿部摆角;先让机体 pitch 稳定,再加入位移和速度;最后再处理劈叉、yaw 和各种细节优化。

不要一开始就把所有状态量、控制量和补偿项全部打开。这样虽然看起来接近最终系统,但一旦出现震荡、冲车或发散,很难判断问题来自建模、方向、PID、LQR 权重、限幅还是执行器本身。

更稳妥的做法是:每次只增加一个明确的控制目标,并在仿真和实车中分别确认它的效果。这样调出来的参数更容易理解,也更容易维护。

阅读 428 次