FEATURED · 精选文章

电赛双车跟随:从PID调参到系统稳定性的工程化实战

发布时间 / 2026/9/2 18:27:49
来源 / 创域科博编辑部
栏目 / 资讯中心
电赛双车跟随:从PID调参到系统稳定性的工程化实战 最近几年电子设计竞赛电赛的控制类题目尤其是“双车跟随”这类经典题型似乎进入了一个新的阶段。过去大家可能觉得把两辆车连起来一个跑一个跟就算完成任务。但真正上手后才发现难点从来不是让车动起来而是如何让它们“默契”地动起来——在高速、急弯、甚至突发干扰下后车依然能像影子一样紧紧跟随前车不撞上、不跟丢、不画蛇添足地乱晃。这背后考验的远不止是PID调参。它是一套从感知、决策到执行的完整闭环任何一个环节的“想当然”都会在赛场上被无限放大。很多人把大量时间花在调一个完美的PID参数上却忽略了更底层的问题你的传感器真的“看”清楚了吗你的控制周期稳定吗你的通信丢包了怎么办你的车机械结构对称吗今天我们不谈那些高深莫测的理论就从一次典型的“双车跟随”项目实战出发拆解从零到“满分”体验的全流程。你会发现真正的“套餐”不是一堆代码和参数的堆砌而是一套环环相扣、可验证、可迭代的工程化思维。1. 双车跟随的核心不是控制算法而是系统稳定性很多人拿到题目第一反应是去搜“最好的跟随算法”。是PID还是模糊控制抑或是MPC模型预测控制这其实是一个误区。在电赛有限的时间和高压力环境下算法的复杂性往往不是决定因素。真正决定上限的是整个感知-决策-执行链条的稳定性和鲁棒性。1.1 感知层你的“眼睛”决定了系统的天花板双车跟随的感知核心是测量两车之间的相对距离和角度。常见方案有超声波、红外、激光测距、摄像头、UWB等。超声波/红外成本低易实现但方向性差易受环境光、地面反射干扰。适合低速、直线、环境简单的场景。一旦车速快起来或者有弯道数据跳动会非常剧烈。激光测距如TFmini精度和响应速度远优于超声波抗干扰能力强是当前的主流选择。但它仍是单点测距只能获得距离信息无法直接得到角度。摄像头视觉能同时获得距离和角度通过识别前车标记或直接图像处理信息量最丰富。但对处理能力、光照条件要求高算法复杂度也最高。UWB超宽带精度极高且能直接输出三维位置信息几乎不受遮挡影响。但成本高模块间同步和配置稍复杂。关键判断对于电赛激光测距TOF通常是性价比和可靠性的最佳平衡点。不要盲目追求视觉的“高大上”在紧张的赛程中一个稳定、数据干净的激光传感器远比一个时好时坏的视觉系统靠谱。实操要点传感器安装必须牢固轻微的晃动会在数据上产生巨大噪声。尽量安装在车体中心线上减少车身俯仰、侧倾带来的测距误差。数据滤波原始数据必有噪声。一个简单的移动平均滤波或一阶低通滤波能极大提升数据质量。滤波窗口大小需要实测调整过大会导致滞后过小则滤波效果差。// 示例一阶低通滤波伪代码 float filtered_distance 0.9 * filtered_distance_last 0.1 * raw_distance;采样周期稳定确保你的控制循环周期是固定的如10ms。用定时器中断来驱动整个控制循环而不是依赖delay()。不稳定的周期会让任何高级算法失效。1.2 决策层PID足够好但你要理解它的“脾气”PID控制器在这里的输入是距离误差设定距离 - 实际距离输出是后车的目标速度。很多人调不好PID是因为没搞清楚每个参数在“双车”这个动态系统里的实际影响。P比例决定“反应速度”。P值越大后车对距离变化越敏感。但P值太大会导致系统在平衡点附近来回振荡甚至发散。初始建议先给一个较小的P让后车能缓慢地响应距离变化。I积分消除“静态误差”。如果只有P系统可能会停在一个与设定值有微小偏差的地方。I项可以累积这个误差并最终消除它。但在双车系统中I值要非常谨慎因为积分累积可能导致控制量输出过大引起超调或振荡。很多时候纯P或者PI就足够了。D微分预测“未来趋势”抑制振荡。通过判断误差变化的速度提前施加反向控制。D项能显著提高系统稳定性但对噪声极其敏感。必须对输入误差进行良好的滤波后才能使用D否则噪声会被放大导致控制输出剧烈抖动。调参心法“先P后I再D”的黄金法则归零将I和D设为0。调P逐渐增大P直到系统出现持续、等幅的振荡。此时记下这个P值称为Ku和振荡周期Tu。加D根据Tu设置D值例如D 0.125 * Ku * Tu观察振荡是否被抑制。调整D值使系统快速稳定且无超调。加I可选如果存在静态误差再引入一个很小的I值例如I 0.6 * Ku / Tu。微调在真实赛道上以不同速度微调三个参数找到最佳组合。重要边界PID参数不是一成不变的。当前车速度变化时整个系统的动态特性就变了。因此一个更进阶的思路是根据前车速度动态微调PID参数或者直接采用前车速度作为后车速度的前馈量。这能极大提升变速跟随的性能。1.3 执行层被忽视的“木桶短板”你的控制算法输出一个完美的速度值但小车能精确执行吗这里是最容易踩坑的地方。电机差速与标定没有任何两个电机的性能完全一致。即使给左右轮相同的PWM值小车也可能走不直。必须进行电机标定在开环下测量左右轮在相同PWM下的实际转速并建立一个PWM补偿表。编码器反馈与速度闭环开环控制速度是不可靠的。必须使用编码器测量轮子实际转速构成一个单车的速度PID闭环。这个内环的稳定是外环跟随环稳定的基础。很多人双车调不好根源是单车的速度都没控稳。电池电量电池电压下降会直接影响电机出力。如果你的驱动电路没有稳压随着比赛进行小车的性能会悄然变化。考虑加入电压补偿或直接使用稳压模块给电机驱动供电。2. 从单次跑通到稳定跟随必须跨越的工程化鸿沟让两辆车在平地上慢速走一次直线成功只完成了1%。剩下的99%是让它们在各种恶劣条件下依然可靠。2.1 通信宁可冗余不可丢失双车间如何传递信息前车至少需要把自己的实时速度和可能的转向信息发给后车。方案选择串口蓝牙/NRF24L01简单常用。但要处理好数据包格式、校验和重传机制。NRF24L01在空旷场地性能不错。透传模块如ESP8266/32的Wi-Fi UDP带宽大可传输更多信息如摄像头图像片段。但Wi-Fi可能存在延迟抖动。CAN总线工业级可靠性抗干扰能力强但复杂度稍高。工程化必须项数据包结构定义固定的帧头、帧尾、数据长度、校验和如CRC8。防止错码。// 示例数据包结构 #pragma pack(1) typedef struct { uint8_t header; // 0xAA uint8_t cmd; // 指令类型 int16_t speed; // 前车速度 int16_t steer; // 前车转向如有 uint8_t crc; // 校验和 uint8_t footer; // 0x55 } CarPacket_t; #pragma pack()心跳与超时后车持续接收前车心跳包。如果超过一定时间如200ms没收到立即触发安全策略如减速停车防止后车因丢失信息而撞上前车。发送周期稳定前车以固定周期如50ms发送数据与后车的控制周期解耦。后车采用最新接收到的数据。2.2 异常处理与安全策略这是区分“玩具”和“赛品”的关键。感知失效当测距传感器返回异常值如超出量程、数值突变时是直接使用还是丢弃建议设置一个合理的数据有效范围。连续多次无效则切换到“安全跟随模式”比如保持当前速度或缓慢减速同时尝试恢复传感器。通信中断如上所述心跳超时机制。控制量饱和PID输出可能超过电机PWM的最大限幅。必须进行限幅处理。同时对于积分项I需要设计抗积分饱和机制当输出持续饱和时停止积分累积防止系统“失控”。起步与停车起步时距离误差巨大如果直接投入PID会导致后车“猛冲”。可以设置一个“起步区间”在此区间内采用柔和的开环加速。停车时也要设计平滑的减速曲线。2.3 调试与可视化用数据说话而不是凭感觉“我觉得它晃”是不够的。你需要数据。串口打印波形将关键数据如设定距离、实际距离、误差、控制输出、前车速度等通过串口定时打印使用类似SerialPlot、VOFA这样的工具绘制成实时曲线。这是调试PID最直观的方式。关键指标上升时间系统响应到目标值附近的速度。超调量最大偏差超出目标值的百分比。双车系统中超调意味着追尾风险。稳态误差系统稳定后与目标值的偏差。抗扰能力用手轻推一下后车看它需要多久恢复稳定跟随。3. 满分套餐的进阶拼图性能优化与场景适配基础稳定之后可以追求更极致的性能以应对电赛可能设置的各种“刁难”场景。3.1 前馈控制让后车拥有“预判”能力这是提升性能最有效的手段之一。基本原理是后车的目标速度不仅由距离误差决定反馈还直接参考前车的实时速度前馈。后车目标速度 前车当前速度 PID(距离误差)这样当前车加速时后车几乎能同步加速而不是等距离拉大了才反应过来。这大大减少了跟随的滞后。实现时需要找到一个合适的前馈系数通常接近1。3.2 弯道跟随引入角度控制直线跟随是基础弯道才是挑战。在弯道中两车连线方向与运动方向不一致仅控制距离会导致后车切内道或外道。解决方案增加角度传感器使用两个激光测距模块一左一右通过三角测量计算出前车的相对角度。或者使用摄像头直接解算角度。双环控制外环控制距离内环控制角度。形成一个距离-角度串级PID。角度环的输出可以转化为左右轮的速度差让后车主动调整姿态保持与前车“同向”。简化策略如果无法测量角度一个折中方案是让后车在弯道时以内侧轮为基准进行更激进的转弯通过路径规划或经验调整但这需要大量赛道参数调试。3.3 自适应与变参数一套参数打天下很难。可以让系统根据运行状态微调自身。根据速度变参数高速时需要更小的P和更大的D来保证稳定低速时可以增大P来提升响应。根据误差变参数大误差时如起步用一套参数快速接近小误差时如稳态跟随用另一套参数精细调节避免振荡。4. 备赛实战流程从零到交付的检查清单最后我们将所有知识点串联成一个可执行的备赛流程。4.1 阶段一单车筑基第1-2天硬件走查确保车模机械结构对称、顺滑轮胎不打滑电池电量足所有接线牢固。电机标定开环下测试并记录左右轮在不同PWM下的转速生成PWM补偿表。速度闭环实现单车的编码器速度PID让小车能精准执行“以X速度前进”的指令。调试到阶跃响应快速且无超调。基础驱动实现小车前进、后退、转弯的基本函数。4.2 阶段二双车联调第3-4天通信打通实现双车间稳定、带校验的数据传输。加入心跳包和超时处理。感知调试固定传感器测试测距模块。编写滤波算法在SerialPlot上观察数据是否平滑。直线跟随PID在直线上调试距离PID。使用“先P后D再I”的方法在波形工具的帮助下调出无明显超调、响应快速的曲线。加入前馈引入前车速度前馈观察跟随滞后是否显著改善。4.3 阶段三系统集成与鲁棒性测试第5-6天弯道策略如果涉及弯道集成角度测量与控制或在固定赛道上调试弯道补偿参数。异常处理全面测试遮挡传感器、断开通信、快速推拉后车等异常情况系统是否能安全处理。全赛道测试在模拟赛道上进行长时间、多圈次测试记录最大稳定速度、弯道通过率等指标。参数固化与优化根据测试结果微调所有参数并保存为多套配置如低速保守配置、高速激进配置。4.4 阶段四文档与演练最后1天整理代码代码模块化关键部分添加注释。准备报告提前撰写设计报告的核心部分系统框架、算法原理、测试数据。模拟答辩小组成员互相提问模拟比赛现场调试和答辩环节。双车跟随乃至整个电赛比拼的从来不是某个炫酷的算法。它比拼的是你对一个完整嵌入式系统的理解深度和工程实现能力。从传感器的数据采集到控制算法的精心调节再到通信、电源、机械等底层细节的打磨最后到面对各种突发状况的稳健处理——这每一个环节都需要你像打磨工艺品一样去反复迭代和验证。那个能稳定、快速、优雅跑完全程的系统背后一定是无数次对“为什么不行”的追问和对“怎样才行”的探索。这份经历远比一个满分更有价值。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻