1. 项目概述一场关于速度与策略的硬核竞技如果你对嵌入式开发、自动控制或者机器人竞赛感兴趣那么“飞思卡尔智能车竞赛”现已更名为“全国大学生智能汽车竞赛”这个名字你一定不陌生。它不仅仅是一场简单的模型车比赛而是一个融合了机械、电子、控制、算法、图像处理等多学科知识的综合性工程实践平台。今天我想以一个过来人的视角和你深入聊聊这个竞赛中一个极具代表性的组别——光电组并聚焦于电子科技大学这支传统强队看看他们是如何将一辆看似普通的模型车打造成一个在赛道上风驰电掣、精准无比的“智能体”的。光电组顾名思义其核心的赛道识别传感器是光电传感器主要是激光管或红外发射接收对管。与摄像头组通过图像处理来“看”赛道不同光电组更像是用一排“手指”去“触摸”赛道边缘。这种方案听起来更直接但要做好却极具挑战性。它要求极高的实时性、稳定的信号处理和精准的控制算法。电子科技大学成电的队伍在这个组别中屡创佳绩他们的技术方案和工程实现往往代表了当年竞赛的最高水准之一是很多参赛队伍学习和研究的对象。通过拆解他们的技术脉络我们不仅能理解智能车竞赛的精髓更能学到一套完整的、从传感器到执行器的嵌入式系统开发方法论。2. 核心赛道感知方案从“点”到“线”的精确重构光电组的灵魂在于其前瞻的传感器布局。这绝不是简单地把几个红外对管排成一排那么简单其背后的设计与权衡体现了深厚的工程智慧。2.1 传感器布局策略与信号调理主流的方案是采用一排通常是16-24个红外发射接收对管以一定的间距横向排列在车头前方形成一个“触须阵列”。每个对管独立工作发射红外光并接收从地面反射回来的光强。黑色赛道通常是电工胶带和白色背景通常是KT板的反射率差异巨大从而可以判断每个传感器下方是黑线还是白底。注意这里有一个关键细节——环境光干扰。比赛现场灯光复杂日光灯、窗户自然光都会严重影响红外接收管的读数。因此调制解调技术是必选项。即让红外发射管以特定频率例如38kHz闪烁接收端只解调该频率的信号。这能极大抑制环境中的恒定光或低频变化光的干扰。成电的队伍在硬件滤波电路的设计上非常考究通常会使用专门的调制芯片如PT1301和解调芯片如CX20106A或一体化接收头配合RC滤波电路确保收到的信号是干净、稳定的数字量或高线性度的模拟量。传感器的布局间距和前瞻距离是需要精心计算的。间距决定了横向分辨率太宽会漏检细小的弯道太密则增加成本和信号处理负担。前瞻距离则直接影响控制的前瞻性前瞻太远近处的赛道信息不足过急弯容易内切前瞻太近留给控制系统反应的时间太短速度提不起来。成电的方案往往采用“中间密两边疏”的非均匀布局中间区域传感器密集以提高中心线定位精度两边稀疏以覆盖更宽的赛道范围同时在前方更远处布置少数几个“远见”传感器用于提前感知弯道趋势。2.2 赛道信息提取与中线计算得到一排传感器的二值化黑/白或模拟量数据后下一步就是重构出赛道的中心线。这是控制算法的输入基础。最经典的方法是“差值法”或“重心法”。假设我们有8个传感器从左到右编号1-8。当车在直道上居中行驶时可能是传感器4和5处于黑白边界。我们可以计算黑线中心的位置。例如采用模拟量时将每个传感器的AD值代表黑度与其位置坐标加权平均算出一个“黑线重心”坐标。这个坐标相对于传感器阵列中心的偏移量就是当前车体相对于赛道中心线的横向偏差。对于数字量0或1常用“跳变沿检测法”。找到从0到1和从1到0的跳变点这两个跳变点的中间位置即认为是黑线边缘再根据已知的赛道宽度推算出中心线位置。成电的代码中会对跳变点的搜索进行鲁棒性处理比如需要连续多个点确认才判定为有效跳变防止单个传感器误触发导致中线计算抖动。更高级的策略是进行“赛道记忆”和“预测”。在过十字、环岛等特殊元素时传感器可能会短暂丢失赛道。此时系统会依据前一刻的赛道曲率和车身速度预测未来一小段时间内的赛道走向维持稳定控制直到传感器重新捕获有效信号。这种策略的引入是队伍能否处理复杂赛道的关键。3. 控制系统的核心PID与更优算法的实战演化有了精确的赛道中心线偏差横向偏差E及其微分dE接下来就是如何驱动舵机打角控制电机速度让车沿着这条中心线跑。3.1 经典PID控制的深度调参PID比例-积分-微分控制器是智能车控制的基石看似简单调好却极难。成电的技术报告里往往会详细阐述他们PID的独特用法。比例P控制核心。Output Kp * E。偏差越大舵机打角越大。Kp过小车反应迟钝过弯时纠偏无力容易冲出赛道Kp过大车会在中心线附近高频振荡像“画龙”一样。成电的队伍通常会根据车速动态调整Kp直道、低速时用一个Kp入弯、高速时用另一个更大的Kp以快速响应。微分D控制灵魂。Output Kd * dE。dE是偏差的变化率代表了偏差未来的趋势。它能抑制振荡提高稳定性。在高速过弯时D的作用至关重要它能提前给出反打方向的力矩防止车辆因惯性甩出。调Kd时需要关注车的“姿态”观察车头是平滑跟随还是剧烈抖动。积分I控制双刃剑。用于消除静态误差。但在智能车这种快速动态系统中I项很容易积累导致超调甚至引发振荡。因此很多队伍会弱化甚至不用I或者采用“积分分离”策略只有当偏差E小于某个阈值时才引入积分用于微调居中偏差大时则清除积分防止积分饱和。实操心得调PID没有银弹必须上车实测。一个有效的方法是“阶跃响应法”让车静止手动给它一个固定的横向偏差比如用手把车推到偏离中心线5cm然后松手让它自己回正。观察其回归中心线的过程是缓慢爬回、快速振荡还是平稳迅速根据响应曲线来调整Kp和Kd。记住先调P直到出现轻微振荡再加D抑制振荡最后考虑I。3.2 进阶控制策略串级PID与模糊控制在追求极致性能时单一的位置式PID可能不够用。成电等强队会采用更复杂的架构。串级PID这是非常经典且有效的进阶方案。外环是“方向环”输入是赛道中心线偏差输出是一个“期望舵机角度”或“期望前轮转角”。内环是“舵机环”输入是外环输出的期望角度与舵机当前实际角度的偏差输出是直接给舵机的PWM信号。这样做的好处是将控制任务分解内环专门负责让舵机快速、准确地执行角度指令外环则专注于路径跟踪的策略。内环的存在使得舵机响应更快系统更稳定。模糊控制对于一些非线性、模型难以精确描述的系统模糊控制有奇效。成电的队伍曾尝试过将模糊逻辑与PID结合。例如根据偏差E和偏差变化率dE的大小模糊划分为“大正”、“小正”、“零”、“小负”、“大负”等语言变量然后通过一套经验规则如如果E为正大且dE为正小则控制输出为负大动态调整PID的参数或直接给出控制量。这种方法在应对突然出现的急弯S弯时有时比固定参数的PID更平滑。4. 机械调校与运动优化让算法“脚踏实地”再好的算法也需要一个稳定可靠的硬件平台来承载。机械是智能车的“身体”调校不好控制算法事倍功半。4.1 车模机械结构的关键调整重心与质心这是最重要的机械参数。重心要低前后左右分布要合理。通常会将最重的电池放在车体中部靠下的位置。低重心能减少过弯时的侧倾提高抓地力。通过前后移动电池或主板位置可以微调车的前后重量分配影响车辆的转向特性不足转向或过度转向。前轮定位参数前束从车顶看两个前轮前端距离与后端距离的差值。轻微的前束Toe-in有助于提高直行稳定性但会增加转向阻力。智能车通常设置为0或极小的前束。主销后倾转向主销上端向后倾斜的角度。它能产生回正力矩让车在转弯后自动回正。成电的车通常会通过加装垫片等方式设置一个适度的主销后倾角。主销内倾转向主销上端向内倾斜的角度。主要与车轮接地点的偏移量有关对智能车影响相对较小但也会影响回正力和转向手感。悬挂与减震原车模的悬挂通常较软。在高速过弯时车身侧倾会导致内侧车轮抓地力下降。强队会加固悬挂如更换更硬的弹簧或用碳杆限位甚至改用刚性连接即“硬悬挂”牺牲一些对路肩的适应性换取过弯时极其稳定的车身姿态。4.2 轮胎处理与差速调整轮胎打磨与软化新轮胎表面光滑抓地力不足。需要用砂纸均匀打磨胎面去除光泽层增加粗糙度。更“玄学”的是轮胎软化使用特定的溶剂如四氯化碳、乙酸乙酯等需在通风环境并注意安全涂抹轮胎使其橡胶软化能在赛道上“粘”得更牢。成电的队员在这方面有大量的经验对溶剂的配比、涂抹次数和晾干时间都有严格流程。差速器调校后轮差速器的松紧直接影响动力输出和过弯性能。差速太紧阻尼大两个后轮转速差小过弯时内侧轮阻力大容易推头转向不足差速太松动力损失大出弯加速无力。需要通过调整差速器内的硅油浓度或填充物来找到最佳点。一个简单的测试方法是抬起车用手快速转动一个后轮感受另一个后轮跟随转动的阻力和延迟。5. 系统集成与实战调试从实验室到赛道的最后一公里当硬件组装完毕基础代码跑通真正的挑战才刚刚开始——系统联调与赛道适应性优化。5.1 分层调试方法论不要一上来就在完整赛道上全速测试。应采用分层调试法单元测试单独测试传感器阵列在静态下移动黑线观察AD值或数字量变化是否准确、平滑。测试舵机给定固定PWM观察其转动角度和速度。测试电机检查加速、减速是否线性。开环测试让车在赛道上慢速运行不启用闭环控制手动记录在不同位置直道、弯道的传感器数据和中线计算结果验证感知模块的正确性。单环闭环测试先只调试方向控制环。固定一个很低的车速让车自己循迹专注于调好舵机的PID参数让车能平滑稳定地跟随赛道不冲出去也不振荡。速度环集成在方向稳定的基础上加入速度控制。直道加速入弯前减速出弯加速。这里需要调试电机PID以及速度规划曲线。全系统优化最后进行整体微调处理方向与速度控制的耦合问题优化过弯策略。5.2 赛道元素识别与特殊处理竞赛赛道不是简单的圆环它包含十字、环岛、坡道、断路、障碍等元素。光电组识别这些元素主要依靠传感器阵列的特定模式。十字路口当传感器阵列检测到一条很宽的黑带超过正常赛道宽度且持续一定时间即可判定为十字。策略是“冲十字”保持进入十字前的方向和速度直行通过。关键在于防止误判例如弯道处可能因为前瞻传感器都看到黑线而误判为十字需要结合历史路径信息进行滤波。环岛识别逻辑更复杂。需要检测到赛道一侧出现连续的黑线环岛入口弧线并可能伴随内侧传感器的特定变化。进入环岛后需要切换控制模式以内侧环岛边缘为基准进行循迹并计数出口。成电的方案中通常会有一个独立的状态机来管理环岛的进入、巡线和退出逻辑。坡道与颠簸坡道会导致车身仰俯改变传感器距地高度影响信号。需要通过软件补偿如动态调整二值化阈值或硬件手段确保传感器支架刚性来应对。颠簸路段则考验机械牢固性和控制算法的鲁棒性。6. 常见问题排查与性能压榨技巧在最后的冲刺阶段解决问题和压榨每一毫秒的性能至关重要。6.1 典型故障与解决方案速查表现象可能原因排查思路与解决方案车辆在直道“画龙”1. 方向P参数过大2. 微分D参数过小或为03. 传感器前瞻过远或安装松动4. 机械虚位舵机臂、连杆松动1. 逐步减小Kp观察振荡是否减轻。2. 适当增加Kd注意引入微分可能会带来高频噪声需配合滤波。3. 检查传感器支架是否稳固尝试减小前瞻距离。4. 紧固所有机械连接件消除虚位。过弯时总是冲出去外切1. 方向P参数过小响应慢2. 入弯速度过快3. 重心太高或轮胎抓地力不足4. 差速过紧转向不足1. 在弯道区域局部增大Kp。2. 优化速度规划提前在入弯前减速。3. 降低重心处理轮胎打磨、软化。4. 调松差速器。过急弯时甩尾或spin旋转1. 方向D参数过大或微分项计算噪声大2. 出弯加速过早过猛3. 重心靠后或后轮抓地力过强1. 减小Kd或对偏差信号进行低通滤波后再微分。2. 延迟出弯加速点或降低加速斜率。3. 微调重心稍向前移。特殊元素十字、环岛误判或处理失败1. 元素识别阈值设置不合理2. 状态机逻辑有漏洞3. 传感器在元素内短暂丢线控制紊乱1. 在赛道上反复测试记录数据精细调整识别阈值和条件。2. 用串口打印状态机变量模拟各种情况确保逻辑完备。3. 在丢线时启用“记忆预测”功能用上一周期的控制量短暂维持。车速无法提升或提速后不稳定1. 电机PID参数未调好加速无力2. 电池电量不足内阻增大3. 机械阻力大轴承、传动4. 代码循环周期过长控制频率低1. 单独调试电机闭环速度控制。2. 使用充满电、性能好的电池比赛前更换新电池。3. 润滑轴承检查齿轮啮合是否过紧。4. 优化代码减少不必要的计算和延时确保控制频率在100Hz以上。6.2 性能压榨的“黑科技”在基础稳定的前提下顶尖队伍会追求极致的优化动态参数表根据赛道曲率通过当前偏差和历史偏差估算和车速实时查表切换多套PID参数。直道用一套弯道用另一套大弯和小弯的参数也不同。前瞻距离动态调整高速时使用更远的前瞻以提前预判低速过急弯时切换为近前瞻以提高对当前弯道的跟踪精度。路径规划与切内弯不仅仅是跟踪中线而是在规则允许范围内进行最优路径规划。例如在过弯时让车稍微走内道可以缩短实际行驶距离。这需要算法能够预测弯道形态并生成一条期望路径然后控制车去跟踪这条路径而不是简单的中线。代码极简优化使用寄存器级操作、查找表代替复杂计算、将频繁调用的函数内联。甚至用汇编语言重写关键循环。确保中断服务程序ISR尽可能短小精悍。回顾电子科技大学在光电组上的成功其核心在于对“感知-决策-控制”这一闭环的每一个环节都做到了极致的深入理解和精细打磨。从硬件上稳定可靠的传感器电路到软件上高效鲁棒的识别算法从经典的PID控制理论实践到机械上毫米级的调校从单个模块的稳定到整个系统在复杂环境下的协同。这不仅仅是一场比赛更是一个完整的工程项目训练。它教会你的是如何将一个复杂的多学科问题分解、建模、实现、调试并最终优化到卓越。这份经历远比奖杯本身更为珍贵。