
21届“走马观碑”赛题备赛时很多人最先关注的是“视觉”。但真正跑过车模的人都知道视觉不是第一步。先让车模在一段普通赛道或调试赛道上稳定运行起来把整车动态、转向逻辑、电机响应和调试链路都摸清楚再考虑接入摄像头、处理图像、识别特征才是更稳妥的上手顺序。这段“21届走马观碑车模运行视频未加入视觉”对应的状态恰好就是视觉接入前最关键的底盘与整车调试阶段。这篇文章就围绕这个阶段展开适合正在备赛第21届全国大学生智能汽车竞赛“走马观碑”组别的队员尤其是刚入手车模、还不确定该先调硬件还是先写视觉代码的同学。我会按实际调试顺序拆解为什么先不加视觉跑车模、没加视觉时车模需要具备哪些条件、运行视频应该录什么、怎么看车模状态是否正常、后续接视觉时要注意什么以及常见异常怎么排查。1. 先搞清楚“走马观碑”为什么要从无视觉车模开始1.1 走马观碑赛题的核心特点“走马观碑”作为第21届智能车竞赛的赛题组从名字就能猜到它强调的是车辆在行驶过程中“观察记录”赛道或周边特征。结合近两年智能车竞赛的趋势这个赛题大概率会涉及视觉识别、赛道元素检测、路径规划或信标定位里的某些组合。也就是说最终参赛车模通常要带摄像头或视觉模块完成任务。但这里有一个很容易被忽略的事实视觉只是车模系统的一部分。车模要先能跑得稳、转得准、刹得住视觉信息才有意义。如果车模本身在直道上都走不直过弯时转向震荡那就算视觉识别再准控制端也执行不到位。所以“未加入视觉”的跑车视频并不是一个“不完整”的阶段而是整个备赛链条里非常关键的一环。它验证的是车模的底层平台是否健康是后续所有上层功能的地基。1.2 为什么先跑通无视觉状态能节省大量排错时间带视觉调试时如果车模出现冲出赛道、原地打转、识别延迟等问题很难判断问题出在哪一环。是摄像头图像丢了是图像识别到但坐标算错了是坐标算对了但转向执行慢了是转向执行正常但底盘机械结构有虚位是电机响应不够还是PID参数不合适这些环节只要有一处异常车模表现就会不正常。而同时排查整条链路对新手来说非常痛苦。先不加视觉跑车模可以把问题拆开先确认硬件本身能正常工作。再确认基本控制逻辑能跑通。然后确认转向、速度、刹车的响应符合预期。最后才引入视觉让视觉输出和控制逻辑对接。这样每一步的变量较少出问题时定位会快很多。我在实际调试时很多看似“视觉识别不准”的问题最后查下来其实是车模底盘颠簸导致图像抖动或者转向舵机响应太慢。这些不先把车模跑稳根本发现不了。1.3 这段运行视频应该怎么定位“21届走马观碑车模运行视频未加入视觉”这种素材通常出现在两个场景备赛初期整车刚刚组装完成队员用一段视频记录车模能否在赛道上正常行驶。视觉调优过程中为了排除视觉干扰把视觉模块暂时禁用只保留底盘控制逻辑跑一段视频验证底层是否正常。无论哪种场景这段视频的核心用途都是“确认整车平台状态”。所以录视频时不能随便录一段车模乱跑的画面就结束。视频要能帮助判断问题最好同时包含赛道环境、车模姿态、转向位置、速度变化和异常抖动。2. 车模运行视频跑通前先把这些环境条件确认清楚2.1 整车硬件列表要完整缺失部件会直接影响运行表现跑无视觉车模之前先确认整车是否达到“可运行”状态。通常一辆标准智能车车模至少要包含以下部分部件作用未安装或异常时的表现车模底盘承载所有电子设备重心偏移高速时不稳定驱动电机提供前进动力车模不走或速度上不去转向舵机控制前轮转向无法转弯或转向响应迟钝电机驱动板放大控制信号驱动电机电机不转、发热、异响主控板运行控制算法整车无法按逻辑运行编码器检测车轮速度或位置速度闭环无法工作电池供电电压不足时车模无力、复位电源模块稳压和分配电量芯片供电不稳出现随机重启有些队伍还会用到陀螺仪、加速度计、蓝牙调试模块、无线串口等。先把这些硬件确认好再进入软件调试。不然可能调了半天程序最后发现是舵机供电不足或者电机线接触不良。2.2 电子连接和供电稳定性是新手最常忽略的一环车模跑起来之后震动和电流波动都会出现。如果接线不牢靠最常见的现象是跑着跑着突然失去转向。加速时主控重启。舵机抖动但没有规律。编码器读数突然跳变。这些问题在静止状态下很难发现因为不通电、不震动时接触都正常。一旦上赛道振动一来虚接问题就暴露了。所以在录制“未加入视觉”的运行视频之前先做几项基础检查所有接头是否插紧最好有防脱设计。电源线是否够粗至少能承受电机的峰值电流。主控板、驱动板、舵机是否共地。编码器信号线是否远离电机和驱动板的大电流线路。电池电量是否充足跑完几圈后电压会不会降到保护阈值附近。如果这些基础问题没处理后面排查视觉相关功能时会经常被“随机偶发故障”干扰非常浪费时间。2.3 软件环境先确认主控能正常烧录和输出日志无视觉阶段不需要图像处理库也不需要跑神经网络推理。但主控上至少要包含这些基础能力电机PWM输出正常。舵机PWM输出正常。编码器采集正常。串口或无线日志输出正常。基础状态机能切换空闲、启动、运行、停止等状态。我在调车时常做的一个动作是把车模架起来让车轮悬空先只发一个固定PWM值观察电机是否正常转动再发一个固定舵机角度观察前轮是否转到指定位置。这个阶段不需要写完整的赛道控制逻辑只需要验证“控制命令到底能不能传到执行机构”。等这两步都正常了再放回赛道跑。如果架起来正常、放下就跑偏问题基本在机械重心、轮胎摩擦、地面平整度或转向零点偏移上。2.4 赛道条件不需要完整赛道但最好有直道和弯道录制“未加入视觉”的运行视频时很多人会随便找块空地跑。这样不是不行但信息量太低了。更建议准备一段包含以下元素的赛道一段足够长的直线用来观察车模是否走直。一个半径较大的弯道用来观察转向是否流畅。一个半径较小的急弯用来观察转向是否滞后。一段略有颠簸的路面用来观察整车抗抖动能力。如果条件有限可以用胶带在地面贴一个简易环形赛道。重点是让车模在运行过程中有足够的加减速和转向变化这样视频才能暴露问题。3. 单圈运行视频怎么录、怎么判断车模状态正常3.1 录制视频时要包含可判断的参照信息很多队伍录出来的车模运行视频画面里只有车模旁边没有参照物也没有速度、转向角、舵机输出电压等数据。这样的视频只能看个大概没法定位问题。建议在录制时尽可能让视频包含这四类信息赛道边线和起跑线方便判断车模是否按路线行驶。车模前轮角度方便看到转向是否到位。车速变化可以通过车身移动速度直观判断也可以叠加串口数据画面。异常噪声比如电机异响、舵机啸叫、轮胎打滑声。如果开发环境允许还可以用手机拍赛道的同时用另一块屏幕显示串口日志或上位机波形。这样后续回看视频时能把“车模姿态”和“内部数据”对应起来排查效率会高很多。3.2 单圈跑通的最低判断标准“未加入视觉”阶段怎么判断单圈跑通了不能只看“没冲出赛道”就认为成功。至少要满足以下几点车模能稳定起步不会窜出去。直道能基本保持直线不出现明显左右摆动。弯道能平滑转向不会反复修正或大幅抖动。全程没有突然的顿挫、卡顿或重启。跑完一圈后电机、驱动板、电池温度在正常范围。串口日志没有连续性报错。连续跑三圈表现基本一致不是靠运气跑完一圈。这里特别强调“连续三圈”而不是“单圈”。很多车模单圈表现还可以但第二圈、第三圈会出现问题。原因包括电池电压下降、驱动板过热、机械结构在震动下松动、轮胎逐渐磨损等。如果视频里只是单圈这些不稳定因素不容易暴露。3.3 怎么在视频里判断转向是否合适转向是底盘调校中比较难判断的部分。只看车模有没有过弯不太够。可以看几个细节入弯时转向是否在正确位置就开始动作。弯道中前轮角度是否稳定还是反复左右修正。出弯时是否迅速回正还是回正过慢导致车头朝向漂移。连续弯道区域整车姿态是否流畅节奏是否一致。如果视频里出现“过弯时车头在左右摆”常见原因有转向PID中比例系数或微分系数不合适。舵机响应速度不够转向指令更新频繁。车模速度太快超出了当前转向能力。转向零点偏移导致左右转向不对称。先用视频确认现象再对症下药。不要一开始就乱改PID参数先确认执行机构响应是否正常再谈算法。4. 从无视觉到视觉接入衔接顺序比功能数量更重要4.1 别等到车模完全调好再考虑视觉也别一上来就同时改所有东西“未加入视觉”阶段跑稳之后下一步不是直接把摄像头装上、一口气把识别和控制全做完。更稳妥的做法是分步接入。第一步先给车模加装摄像头支架和图像采集模块但视觉算法还不出结果只验证图像能不能稳定采集。第二步跑一段车模同时采集图像检查图像是否清晰、是否抖动、曝光是否正常、帧率是否够用。第三步离线处理采集到的图像先不控制车模验证识别算法是否能在测试图片或录制的视频上输出正确结果。第四步把识别结果通过串口发送给主控主控只做数据解析不参与控制观察数据是否正确。第五步用识别结果做最简单的辅助控制比如只在直道提示或者只在特定区域触发标志先不追求完整闭环。这样每一步都有明确的验证目标即使出错也能快速定位是图像问题、识别问题、通信问题还是控制问题。4.2 无视觉阶段能为视觉接入准备哪些数据资产很多人觉得“未加入视觉”阶段只是浪费时间其实这个阶段可以积累很多后面有用的数据。一是赛道结构数据。车模跑几圈之后记录转向舵机输出、车速、编码器计数的曲线可以了解赛道上哪些区域对转向要求高哪些区域车速波动大。视觉接入时这些数据可以作为参照。二是图像采集标定数据。给车模安装摄像头后需要标定摄像头的位置、姿态、视野覆盖范围以及实际距离与像素坐标的对应关系。这些标定工作不依赖识别算法但直接影响识别效果。三是整车动态响应数据。无视觉阶段已经调好了一组底盘参数比如直道速度、弯道速度、转向PWM范围等。视觉阶段只需要在此基础上调整不需要重头再来。很多队伍在视觉阶段进度慢不是因为识别算法不会写而是因为底盘的“基准数据”没有记录好。比如转向极限角度是多少、多少PWM对应多少速度、舵机从最左到最右需要多少毫秒。这些数据在无视觉阶段就应该整理成文档。4.3 视觉组真正要联合调试时优先验证“视觉输出到控制输入”的链路当视觉算法在离线数据上基本稳定后再上车联调。联调时不要直接追求“视觉识别到目标然后全速完成避障”而是先做一个最简闭环摄像头采集一帧图像。识别算法输出目标位置或赛道边界。主控把识别结果转换为转向修正量或速度修正量。车模执行简单动作比如减速、小幅转向。跑起来后重点观察三件事图像帧率是否满足控制需求。如果图像处理太慢控制指令滞后车模会“看到但来不及反应”。识别结果是否稳定。偶发误识别可以靠算法过滤但如果频繁跳变需要先解决识别稳定性再丢给控制端。控制命令是否平滑。即使识别结果有轻微抖动最终输出的PWM或转向角也要做平滑限制否则车模会表现出剧烈抖动。这里要特别提醒视觉识别加上之后车速要适当降下来。很多人喜欢一上来就按无视觉阶段的速度跑结果图像糊了、曝光乱了、算法处理时间也不够了。先降速把视觉闭环跑通再逐步提速这是更稳妥的顺序。5. 常见异常与排查链路先看现象再动参数5.1 车模不走或速度很慢如果车模不上赛道跑或者跑起来速度远低于预期先按这个顺序排查确认电池电压是否足够电量低时驱动能力会明显下降。确认电机PWM输出是否正常用示波器或串口打印查看PWM波形。确认驱动板是否使能很多驱动板有一个EN使能引脚没拉高时电机不转。确认电机连线是否接触良好尤其是端子和焊点位置。确认编码器读数是否正常速度闭环里如果编码器采集异常速度会一直被限流。很多新手会直接去调PID但实际情况可能是电机线接触不良或者驱动板没使能。先看硬件信号再动软件参数。5.2 车模走不直一直向一侧偏无视觉阶段出现走不直最需要怀疑的是机械和舵机零点问题而不是纯算法问题。排查顺序先目测前轮在舵机回中时是否完全摆正。用串口发送舵机中值测量前轮实际角度。检查左右转向是否对称如果一边转向角度大一边小是连杆或舵机安装问题。检查左右轮胎磨损程度和胎压差异明显时会向一侧跑偏。检查底盘是否有变形电池或线束是否导致重心偏移。如果这些都没有问题再检查转向PID中的零点偏置通过软件修正。5.3 弯道转向迟钝或过大弯道中的异常表现先分清楚到底是“转向不足”还是“转向过度”。转向不足的表现是车头转不过去容易冲出弯道外侧。常见原因入弯速度太快。舵机电压不足转向力矩不够。转向角度或转向速度限制太低。识别到弯道的时机太晚控制指令太晚执行。转向过度的表现是车头转向过多车尾向外甩或整车旋转。常见原因转向PWM标定不准转向角度比预期大。后轮驱动力过大突破轮胎抓地极限。急减速或急加速时载荷转移导致后轮打滑。转向PID中比例系数偏大修正过度。视频能帮上很大忙。录下弯道表现后慢放能看清车模是从哪个点开始转向、转向过程中有没有修正、出弯时有没有回正。不要只凭感觉调参数。5.4 车模偶发重启或卡顿跑着跑着突然重启是最让人头疼的问题之一。绝大多数情况下不是控制算法写错了而是供电或硬件稳定性问题。重点检查电池放电能力是否足够大电流时电压掉到主控低压阈值之下。电源模块是否留足余量舵机、电机、主控共用电源时容易出现波动。主控供电是否独立滤波电机频繁启停时会拉低母线电压。是否有静电或信号干扰导致主控复位。线材是否松动车模跑动时震动导致接触断开再恢复表现就是“卡一下然后重启”。排查时可以用串口日志记录上电时间、复位原因等。如果主控支持复位原因寄存器优先读取日志确认复位来源不要盲目换器件。5.5 视觉加入后车模表现反而变差如果无视觉阶段车模很稳加上视觉后变差了先不要急着否定视觉方案。更多时候是“视觉输出的节奏”和“控制逻辑的节奏”不匹配。常见原因有图像采集帧率偏低导致控制指令更新频率下降。视觉算法预处理耗时太长识别结果到达主控时已经“过期”。摄像头安装角度不合适看到的近处信息太少或远处信息太多。视觉输出的坐标波动较大没有做滤波或平滑。控制端对视觉结果的信任度过高某帧误识别直接导致大幅转向。建议在视觉处理代码里加入耗时统计每一帧的图像采集时间、预处理时间、推理时间、结果发送时间都打印出来。先确认“多久出一帧结果”再决定控制周期应该设多少。6. 这个阶段最值得留住的调试资产与后续节奏6.1 建立硬件与参数记录表别靠记忆调车车模调试过程中变量很多。今天动了一下舵机零点明天改了一个速度参数如果只靠记忆很容易出现“这版代码跑得还行但我不知道改了什么导致的”。建议从无视觉阶段开始就建立一份简单的记录表至少包含以下字段字段示例日期2025-04-12车模编号主力车模电池电量12.3V赛道条件简易环道含两个直角弯最高车速2.5m/s弯道车速1.2m/s舵机中值1500us转向限幅1000-2000us主要修改将转向PID的D系数从1.2改为1.5测试结果弯道转向更平滑直道无明显摆头待观察问题连续三圈后驱动板温度偏高这份记录在视觉阶段尤其有用。当车模状态异常时翻看之前的参数记录可以快速回退到稳定版本。6.2 把运行视频做成“问题定位素材”而不是“进度展示素材”同一个视频用途不同录制方式也不同。如果只是给队友或指导老师展示进度那拍一段车模能跑的视频就够了。但如果要定位问题视频必须满足几个要求固定机位能看到整段赛道。手机或相机尽量不要追着车模跑固定视角更稳。画面清晰度要能分清楚前轮角度变化。视频最好有同步串口数据或者后期能叠加上位机曲线。记录下当时的主要参数比如车速设定、转向PID参数、电池电压。我一般会在车模跑之前先拍一段赛道空镜再拍车模从静止到起步的动态最后拍连续三圈的完整录像。这样回看时可以对照起点位置判断车模每圈的时间差和路线偏差。6.3 无视觉状态的结束标志是什么不是“拍了视频”就算无视觉阶段结束。更合理的结束标志是车模在已知赛道上能连续多次稳定跑完全程。转向、加减速没有明显异常抖动。电池从满电跑到低压保护整车表现没有剧烈恶化。串口日志能完整记录一圈的数据数据没有大面积丢包。硬件连接在连续震动后依然可靠。满足这些条件才说明整车平台已经具备承接上层视觉任务的基础。后续即使视觉识别偶发异常也有一个足够稳定的底盘作为兜底。6.4 给备赛队员的节奏建议如果你现在刚开始备赛21届走马观碑建议按这样的节奏推进第一周完成整车组装和基础通电测试。不急着写复杂算法先确认每个模块单独工作正常。第二周实现电机和舵机的基础控制确认PWM输出、编码器采集、按键或遥控切换等功能可用。第三周开始跑单圈测试。每次只改一个参数记录测试结果积累稳定的底盘配置。之后可以开始安装摄像头并采集赛道图像但不要马上把识别算法接入控制。先用离线视频验证识别效果再逐步联调。最后才做完整闭环在真实赛道上反复跑微调速度、转向和平滑策略。整个过程中“未加入视觉”的稳定车模运行状态始终是排查问题的参照基准。如果后面车模突然表现怪异先切回无视觉状态跑一遍就能快速判断问题究竟出在底盘还是视觉链路上。这个习惯建议早点养成。