跳到主要内容

8. 练习路线

控制器一定要靠实验建立直觉。只看公式很容易误以为“参数调大就更准”,真正跑起来才会看到超调、振荡、饱和、延迟和噪声。

8.1 练习阶段

建议按四个阶段练习。

阶段目标推荐练习
单关节建立 PID 直觉定点控制、阶跃响应、参数扫描
多关节理解耦合和轨迹机械臂关节轨迹跟踪、IK 结果执行
接触任务理解柔顺性末端压桌面、插孔、四足落脚
系统集成连接上层模块MoveIt 2 执行、RL 策略动作、VLA action chunk

不要跳过单关节阶段。很多后面的系统问题,本质上都是单关节闭环、限幅和单位问题放大后的结果。

8.2 单关节练习

先做一个单自由度关节。

练习目标:

  • 画出关节角随时间变化曲线。
  • 改变 ,观察响应速度和振荡。
  • 改变 ,观察阻尼效果。
  • 加入外力扰动,观察恢复过程。
  • 加入输出限幅,观察控制器打满时的表现。

可以直接从 执行器与 PD 控制 开始。那里已经有单关节仿真和交互页面。

8.3 PID 扫描

不要只凭感觉调参。可以网格扫描:

for kp in [5, 10, 20, 40, 80]:
for kd in [0.1, 0.5, 1.0, 2.0]:
result = run_episode(kp, kd)
plot_response(result)

观察指标:

  • 上升时间
  • 最大超调
  • 稳态误差
  • 控制输入峰值
  • 是否振荡
  • 是否触发限幅

这会让你很快建立“参数变化 -> 曲线变化”的直觉。

8.4 多关节跟踪

下一步做机械臂或腿部多关节轨迹:

  1. 给每个关节一条平滑正弦轨迹。
  2. 用 PD 跟踪位置和速度。
  3. 画出每个关节的目标和实际曲线。
  4. 故意降低某个关节增益,观察末端轨迹如何变差。
  5. 加入速度目标,比较只跟踪位置和同时跟踪速度的差别。

如果已经学习 ROS2 / MoveIt 2,可以让 MoveIt 2 生成轨迹,再观察控制器执行效果。

8.5 MPC 练习

MPC 不建议从机械臂动力学开始。更适合从移动机器人路径跟踪开始:

  • 状态:
  • 输入:线速度、角速度或加速度、转角
  • 目标:跟踪一条参考路径
  • 约束:最大速度、最大角速度、最大加速度

先让 MPC 跟踪一条直线,再跟踪圆,再跟踪 S 型路径。每次只加一个复杂度。

8.6 接触练习

接触练习重点不是速度,而是安全和柔顺:

  • 让末端以低速接近平面。
  • 逐步调低刚度,观察接触力变化。
  • 加阻尼,观察是否减少振荡。
  • 比较硬位置控制和阻抗控制的接触冲击。
  • 加入最大力限制和接触丢失检测。

如果没有力传感器,可以先在仿真里读取接触力,建立直觉后再上真机。

8.7 面试问题

控制器相关面试常见问题:

  • PID 三项分别是什么作用?
  • 为什么 D 项容易放大噪声?
  • 什么是积分饱和,怎么处理?
  • PD 控制为什么常用于机器人关节?
  • LQR 和 PID 的区别是什么?
  • MPC 为什么能处理约束?代价是什么?
  • 阻抗控制和力控有什么区别?
  • MoveIt 2 规划成功但机器人不动,可能是什么问题?
  • RL 策略为什么常输出目标关节角而不是直接输出力矩?
  • VLA 输出动作后,为什么还需要底层控制器?

回答这些问题时,不要只背公式。最好能结合一个具体系统讲:状态是什么、输入是什么、频率是多少、哪里限幅、哪里反馈。

8.8 最小项目

如果你想把本专题变成作品集项目,可以做一条最小闭环:

  1. 单关节 PD 控制,可视化阶跃响应。
  2. 加 PID 工程细节:限幅、抗积分饱和、微分滤波。
  3. 多关节机械臂轨迹跟踪。
  4. MoveIt 2 生成轨迹,控制器执行。
  5. 在 MuJoCo 里加入扰动和负载变化。
  6. 对比 PD、LQR 或简化 MPC 的效果。
  7. 写一页实验报告:曲线、参数、失败案例、排错过程。

这比只写“熟悉 PID / MPC”更有说服力。控制器能力最好的证明,是你能让系统稳定动起来,并解释它为什么稳定。