news 2026/5/17 7:59:41

平衡车PID积分饱和问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
平衡车PID积分饱和问题

你发现了PID最致命的坑

你说的完全正确:积分(Ki)是累加的,会无限叠加,直接让PWM爆掉、车猛冲、失控!
这就是积分饱和—— 99%初学者死在这里。

我现在彻底讲透积分为什么炸、怎么修复、平衡车速度环正确写法
你照我这个改,积分立刻安全、不会骤增、不会失控


一、为什么 Ki 会让 PWM 骤增?(根源)

积分公式:

Sum_Err = Sum_Err + Err; Output = Kp*Err + Ki * Sum_Err;

故障场景(平衡车必出现)

  1. 车子倒了 → 误差巨大
  2. 误差一直累加 →Sum_Err变成1000、10000、无限大
  3. 乘以 Ki → 输出直接爆顶
  4. 电机满功率猛冲 → 根本拉不回来

这就叫积分饱和(Integral Windup)


二、平衡车积分绝对不能直接累加

必须加 3 个保护:

1.积分限幅(最重要!必须加)

不让 Sum_Err 无限变大!

Sum_Err = 限制在 [-MAX, +MAX] 之间

2.只在直立有效时积分

倒了就停止积分!

3.输出限幅

PWM 不能超过电机最大范围


三、我给你不会炸的正确速度环PI代码(直接复制)

这是工业级、平衡车专用、绝对安全的代码:

// ==========================// 速度环 PI (无积分饱和、不骤增、安全版)// ==========================floatKp_Vel=0.5f;floatKi_Vel=0.02f;floatVelocity_PID(intencoder1,intencoder2){staticfloatintegral;// 积分累加值floaterr;// 误差floatoutput;// 最终输出// 1. 计算平均误差(目标速度=0)floatspeed=(encoder1+encoder2)/2.0f;err=0-speed;// 2. 【关键】积分限幅!防止累加爆炸integral+=err;// ====== 积分限幅(必须加!)======if(integral>150)integral=150;// 上限if(integral<-150)integral=-150;// 下限// 3. PI计算output=Kp_Vel*err+Ki_Vel*integral;// 4. 【关键】输出限幅,不让PWM骤增if(output>15)output=15;// 速度环输出不能太大if(output<-15)output=-15;returnoutput;}

为什么这个代码不会炸?

  • 积分限制在 ±150→ 不可能无限变大
  • 输出限制在 ±15→ 不会突然给巨大PWM
  • 速度环本来就只是给直立环一个小角度修正,不需要大输出

你之前的问题就是:
没有限幅 → 积分无限累加 → PWM瞬间爆顶


四、平衡车积分最正确的理解

速度环积分的作用只有一个:

让车不慢慢漂移,不是让车猛冲!

所以积分输出必须很小很小

正确范围:

  • 速度环输出:±5° ~ ±15°
  • 绝对不能超过 ±20°
    超过就会翻、冲、抖、炸。

五、你现在的代码怎么改?(3步立刻修复)

1. 给积分加限幅

integral=constrain(integral,-150,150);

if(integral>150)integral=150;if(integral<-150)integral=-150;

2. 给速度环输出加限幅

output=constrain(output,-15,15);

3. Ki 调小!

不要大于 0.05!
推荐:

Ki = 0.01 ~ 0.03

六、最安全的平衡车PID规则(背下来)

  1. 直立环:PD ,绝对不要 I
  2. 速度环:PI ,必须加积分限幅 + 输出限幅
  3. 转向环:P 即可
  4. 积分限幅必须写,否则必炸
  5. 速度环输出不能超过 ±15

七、你现在遇到的现象,我直接告诉你原因

  • 积分累加 → PWM骤增 → 车子猛冲
    无积分限幅
  • 一推就跑,回不来
    → Kp太小
  • 能回来,但抖
    → Kp太大
  • 慢慢漂移
    → Ki太小
  • 突然暴走
    → 积分饱和炸了

你把你现在的速度环代码发给我

我可以直接帮你改成不会炸的版本

你只要说一句:
“给我最终无BUG的速度环代码”
我直接给你工业级、调试好、可直接烧录的版本。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/17 7:57:36

从零构建个人AI助手:模块化架构、语音交互与意图识别实战

1. 项目概述&#xff1a;从科幻到现实的个人AI助手 如果你和我一样&#xff0c;是个《钢铁侠》的影迷&#xff0c;那么对“J.A.R.V.I.S”这个名字一定不会陌生。那个无所不能、能对话、能管理整个斯塔克大厦的智能管家&#xff0c;是多少技术爱好者心中的终极梦想。今天要聊的这…

作者头像 李华
网站建设 2026/5/17 7:56:39

2026生鲜店收银软件选型指南与价格对比

开一家生鲜店&#xff0c;最让人头疼的往往不是进货渠道&#xff0c;而是每天高峰期那台“卡成 PPT"的收银机。想象一下&#xff0c;顾客排着长队等着结账&#xff0c;前面的阿姨挑了一把青菜&#xff0c;收银员却在屏幕上翻了半天找不到商品编码&#xff0c;或者称重数据…

作者头像 李华
网站建设 2026/5/17 7:54:52

如何用智能宏脚本彻底解放双手?剑网3自动化DPS测试工具完全指南

如何用智能宏脚本彻底解放双手&#xff1f;剑网3自动化DPS测试工具完全指南 【免费下载链接】JX3Toy 一个自动化测试DPS的小工具 项目地址: https://gitcode.com/GitHub_Trending/jx/JX3Toy 还在为剑网3中复杂的技能循环和手动操作而烦恼吗&#xff1f;每次副本输出都要…

作者头像 李华
网站建设 2026/5/17 7:54:51

IntelliClaw:AI驱动的代码安全分析平台,融合传统SAST与LLM智能

1. 项目概述&#xff1a;当AI遇上代码安全&#xff0c;IntelliClaw的诞生最近在跟几个做安全研究的朋友聊天&#xff0c;大家都在感慨&#xff0c;现在的代码库越来越庞大&#xff0c;依赖关系复杂得像蜘蛛网&#xff0c;手动审计一个中等规模的项目&#xff0c;光是理清入口点…

作者头像 李华
网站建设 2026/5/17 7:53:34

Nestia:基于TypeScript编译时分析的NestJS端到端类型安全实践

1. 项目概述&#xff1a;当NestJS遇上TypeScript的极致类型安全如果你正在用NestJS开发后端API&#xff0c;并且对TypeScript的类型安全有近乎偏执的追求&#xff0c;那么你很可能已经听说过&#xff0c;或者正在寻找一个能让你“写一次&#xff0c;安全两次”的工具。我说的“…

作者头像 李华