欢迎光临
我们一直在努力

嵌入式 PID 调参实战:增量式速度环 + 位置式转向环怎么调到能用

嵌入式 PID 调参实战:增量式速度环 + 位置式转向环怎么调到能用

竞赛车里 PID 不是背公式就够,而是 选对环 → 定周期 → 加保护 → 在线改参。 本文按智能车 / 电赛常见分工整理一套可复用流程,文末附检查单与开源工程对应关系。


📖 目录

  • 先分清:你调的是哪一个环
  • 位置式 vs 增量式
  • 控制周期比参数更重要
  • 可复用的调参顺序
  • 必须加的工程保护
  • 在线调参怎么做
  • 现象 → 原因 速查表
  • 开源工程对应关系
  • 调参检查单
  • 小结
  • CSDN 跳转说明:目录链接为 #s1~#s10,对应正文中各章标题前的 <a id="sN"></a>。请整篇保持普通正文(不要包进引用块 >),否则标题 ID 会丢失、目录点不动。


    1. 先分清:你调的是哪一个环

    很多车一上来改一个全局 Kp 就抖,根因往往是 环没拆开。

    环路典型反馈常用形式输出
    电机速度环 编码器速度 增量式 PI / PID PWM 增量
    舵机转向(循迹) 中线偏差 位置式 PD / PID 绝对打角
    GPS 航向环 方位角误差 位置式 PID 舵机角
    摆杆钢球(视觉) 像素偏差 位置式 PID 步进 / 摆角
    平衡类 角度 + 角速度 串级 PID 内外环分工

    一句话原则 能拆两环就不要糊成一个 PID:内环要快,外环要稳。


    2. 位置式 vs 增量式

    2.1 位置式 PID

    u

    (

    k

    )

    =

    K

    p

    e

    (

    k

    )

    +

    K

    i

    e

    +

    K

    d

    [

    e

    (

    k

    )

    e

    (

    k

    1

    )

    ]

    u(k) = K_p e(k) + K_i \\sum e + K_d [e(k)-e(k-1)]

    u(k)=Kpe(k)+Kie+Kd[e(k)e(k1)]

    特点说明
    输出含义 当前应有的控制量(如舵机目标角)
    适用 转向、角度、目标位置类环路
    风险 积分累积 → 需要积分限幅 / 积分分离

    2.2 增量式 PID

    Δ

    u

    (

    k

    )

    =

    K

    p

    [

    e

    (

    k

    )

    e

    (

    k

    1

    )

    ]

    +

    K

    i

    e

    (

    k

    )

    +

    K

    d

    [

    e

    (

    k

    )

    2

    e

    (

    k

    1

    )

    +

    e

    (

    k

    2

    )

    ]

    \\Delta u(k) = K_p [e(k)-e(k-1)] + K_i e(k) + K_d [e(k)-2e(k-1)+e(k-2)]

    Δu(k)=Kp[e(k)e(k1)]+Kie(k)+Kd[e(k)2e(k1)+e(k2)]

    u

    (

    k

    )

    =

    u

    (

    k

    1

    )

    +

    Δ

    u

    (

    k

    )

    u(k) = u(k-1) + \\Delta u(k)

    u(k)=u(k1)+Δu(k)

    特点说明
    输出含义 这一次控制量变多少
    适用 电机速度环等,PWM 变化量场景
    优点 限幅直观,模式切换冲击相对好控

    2.3 什么时候少用 I / D

    • 循迹转向:噪声大,常用 PD,I 很小或为 0
    • 速度有稳态差:补 I,并做积分限幅
    • 视觉钢球:D 容易放大检测噪声,先 P+I,D 从 0 往上试

    3. 控制周期比参数更重要

    改 Kp 之前,先确认下面三件事:

    #检查项合格标准
    1 周期是否固定 定时中断 / vTaskDelayUntil / 硬件定时器
    2 采样与控制频率是否一致 不要在 A 频率采样、B 频率当同一套参数用
    3 中断里有没有重活 避免菜单刷新、大段 printf 塞进控制节拍

    工程量级参考(非教条)

    • 电机速度环:常见约 5~10 ms
    • 视觉闭环:受检测帧率限制,必须按 真实 dt 理解参数
    • 周期抖动时,同一组 Kp 会「时好时坏」——先修调度,再调参

    4. 可复用的调参顺序

    4.1 电机速度环(增量式)

    调参前
    • 编码器方向正确,正反转读数合理
    • 开环给 PWM,轮子能稳定转、无机械卡死
    步骤
    步骤操作预期现象
    Ki=0,Kd=0,增大 Kp 阶跃目标能明显「咬住」,允许轻度超调
    逐步加 Ki 稳态速度靠向目标,无明显慢漂
    Ki 过大 冲击变猛、震荡 → 积分限幅 或降 Ki
    Kd 速度环通常很小或 0,无明确振荡可不加
    PWM 限幅 防止起步满占空比、堵转过流
    合格怎么看
    • 阶跃后在数个控制周期内靠拢目标
    • 稳态误差可接受(曲线或测速都行)
    • 正反转 / 启停切换不「顶死」

    4.2 循迹转向环(位置式 PD)

    调参前
    • 中线符号约定全车统一(左偏为正还是为负)
    • 只开 P,低速跑直线与大弯
    步骤
    步骤操作预期现象
    Kd=0,Ki=0,增大 Kp 弯道能跟;直道持续抖 → P 偏大
    直道微抖、弯道不够跟 略增 P,补一点 Kd
    弯道外甩 查中线权重、舵机中值、P 是否不足
    高速发飘 先降噪(二值化 / 中线低通),再谈参数
    固定偏差 查舵机中值与机械安装,不要全靠 I 硬扳

    中线噪声 图像跳变会让误差 e 突变,D 会「尖叫」。 先做:加权中线 + 一阶低通,然后再动 Kd。


    4.3 GPS 航向环

    • 误差用 方位角差,并做 ±180° 归一化
    • 到点判定(距离阈值)与航向环解耦
    • 丢星 / 漂移时:冻结目标或切 IMU 航向保持,不要用脏 GPS 继续闭环

    4.4 视觉钢球 / 摆臂环

    e = ball_x – target_x (像素域)
    e → PID → 步进 / 摆杆角度

    • 目标点可切换:中心、±偏移、赛题任意点
    • 先静止调 PID,再整车运动
    • 视觉丢帧:保持上次输出或停车,避免目标跳变导致猛打

    5. 必须加的工程保护

    这些往往比「再挪 0.05 的 Kp」更能决定能不能稳跑完赛题。

    保护解决什么问题
    PWM / 输出限幅 防饱和、堵转过流
    积分限幅 防 I 冲顶
    积分分离 大误差先不用 I,减小超调
    死区 执行器小信号不抖
    误差滤波 编码器 / 视觉 / IMU 均适用
    异常策略 低压、丢帧超时、编码器异常时停机或降级

    6. 在线调参怎么做

    智能车里常见屏上菜单方案(IPS200 等):

    参数表:{名称, 变量地址, 步进, 上限, 下限}
    按键: 上下选参,左右加减
    确认: 写入 Flash,掉电保留

    为什么值得做

    没有在线调参有在线调参
    改宏定义 → 编译 → 烧录 改完立刻跑
    很容易放弃微调 可连续迭代
    参数只在代码里 可分模式存多组

    日志打什么

    低频率输出即可(避免占用控制周期):

    e, u, target, measure

    用虚拟示波器 / 上位机看曲线,比只感觉「抖不抖」准得多。


    7. 现象 → 原因 速查表

    现象优先怀疑处理
    一给目标就猛冲超调 P 或 Ki 过大 降 P;I 限幅
    很慢才到、总差一点 P 偏小 / 无 I 适当加 P,补小 I
    匀速小幅抖 P 略大或噪声大 降 P + 滤波
    越跑越偏 符号反 / 中值偏 / 编码器方向 先查方向,再调参
    弯道过冲甩尾 P 大、D 不足或车速过高 降 P、补 D、降速验证
    直道画龙 中线抖或 D 过大 滤波,减 D
    静止仍抖 死区、噪声、舵机抖 死区 + 低通 + 检查机械
    换电池后变样 供电 / 驱动死区变化 重标死区与限幅
    参数和别人一样效果差 周期、负载、摩擦不同 先对齐周期与机械

    8. 开源工程对应关系

    文内分工可在下列仓库找到对应代码(以仓库源码为准)。

    智能车 TC264

    🔗 https://github.com/shuifanyu/TC264-GPS-Vision-Car

    位置内容
    code/Agorithm.c 位置式 / 增量式 PID
    code/Image.c 循迹中线 → 转向误差
    code/GPS.c 航点方位误差
    code/Menu.c 在线改参菜单

    电赛 H 题

    🔗 https://github.com/shuifanyu/NUEDC-2026-H-Balance-Rolling-Ball

    位置内容
    firmware/chassis_stm32f407/BALANCE/ 编码器速度环
    firmware/steel_ball_stm32f103/ 视觉偏差 PID
    vision/k230_ball_detector/ 像素 offset 下发

    9. 调参检查单

    可直接对照打勾:

    [ ] 编码器 / 舵机 / 中线符号方向正确
    [ ] 控制周期固定,dt 与参数假设一致
    [ ] 输出限幅、积分限幅已打开
    [ ] 先单环调稳,再双环联调
    [ ] 先低速稳,再提速
    [ ] 视觉 / 传感链路有滤波
    [ ] 具备在线改参 + 简单曲线/日志
    [ ] 丢帧、低压、超时等异常有策略


    10. 小结

    PID 真正拉开差距的,通常不是「神秘数字」,而是下面四条:

    ① 环拆对 速度 / 转向 / 航向 / 视觉,职责清晰
    ② 周期稳 中断与任务不乱抢节拍
    ③ 保护全 限幅、死区、滤波、故障策略
    ④ 改参快 菜单 + Flash + 适量日志

    公式谁都会背;把这四条做实,车才会从「偶尔能跑」变成「赛题能交卷」。


    系列文章

    篇标题侧重点
    1 AURIX TC264 智能车实战 GPS + 摄像头循迹总览
    2 电赛 H 题多模块协同 底盘 + 摆臂 + K230
    3 本文:PID 调参实战 环路分工 + 调参流程

    作者:shuifanyu

    CSDN 标签建议 PID 增量式PID 位置式PID 智能车 嵌入式 STM32 电赛 调参

    赞(0)
    未经允许不得转载:171主机测评 » 嵌入式 PID 调参实战:增量式速度环 + 位置式转向环怎么调到能用
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址