直线守航向,弧线再看黑线。
当赛道的直线段没有引导线,控制参考也要随路段改变。用任务节点决定何时切换,让航向、灰度与速度反馈各有职责。
TRACE
有线时看地面,无线时守住方向。
TI MSPM0G3507 自动行驶小车:直线使用 MPU6050 航向反馈,弧线切换八路灰度循迹,编码器速度环贯穿全过程。把赛道分段,也把控制与任务状态分开。

自动行驶任务的直线段没有地面引导标记,圆弧段才有黑线。全程只问灰度传感器“线在哪里”,小车在直线段就失去参考;全程只保持航向,又无法自然跟随弧线。TRACE 因此采用分段的混合导航。
项目使用 TI MSPM0G3507,保留 MPU6050、八路灰度、左右轮编码器和双电机差速结构。展示内容来自现有控制源码与设计报告,控制器型号按真实工程更新。
直线段由航向误差给出方向修正,弧线段由八路灰度加权偏差给出修正;两者最终都变成左右轮目标速度。编码器速度反馈贯穿这两种模式,方向控制因此可以建立在各轮实际反馈之上。
路径任务使用 car_mode 与 car_node 描述模式和节点,pid_control_mode 单独选择控制方式。停车或某些丢线阶段切到纯速度环减速;节点切换时按当前分支复位距离、PID 或丢线计数,并触发声光提示。
八路灰度并非天然一致。当前代码轮询模拟通道,多次采样取均值,再用白底与黑线参考计算归一化黑度。校准流程采集 32 轮,每路去掉两端各 4 个值,使用剩余 24 个值求平均。
归一化后按从左到右的权重计算偏差中心,信号总量不足时另作保护;节点逻辑则通过数字通道位判断是否在线。方向偏差与在线条件分别表达,调试时也需要同时观察。
进入下一段时,上一段的积分、误差和距离可能不再有相同含义。Car.c 中的复位调用和丢线防抖,让这些边界成为显式步骤;方向外环的来源改变,底层速度反馈仍保持共同职责。
编码器距离受轮系与打滑影响,IMU 航向受零偏与漂移影响,灰度依赖地面、光线和安装高度。组合反馈提供更多观察,但不会自动消除误差。默认阈值与 PID 参数属于当前条件,需要随实车验证。
当前源码包含多任务路径、分段节点、航向与循迹控制、编码器测速测距、校准及调试输出。设计报告将这些实现整理为系统方案,也保留了测试方案与待填写的实车结果表。
档案可以说明控制结构与实现选择,停车误差、完成用时、多圈成功率则仍需对应的实车记录。本次没有重新运行工具链和赛道验证,封面轨迹也只是设计表达。
下一步把单模块、单模式和整圈验证分开记录:电机与编码器方向先一致,再看直线航向与停车,再看弧线在线判断和节点切换,最后观察多圈累积误差。
每轮保存版本、场地、校准值、关键参数和现象,才能分清是控制器失配、切换时机不合适,还是传感器条件变化。把“为什么换一种控制”说清楚,比只留下最终参数更有价值。
八路灰度并非天然一致。当前代码轮询模拟通道,多次采样取均值,再用白底与黑线参考计算归一化黑度。校准流程采集 32 轮,每路去掉两端各 4 个值,使用剩余 24 个值求平均。
归一化后按从左到右的权重计算偏差中心,信号总量不足时另作保护;节点逻辑则通过数字通道位判断是否在线。方向偏差与在线条件分别表达,调试时也需要同时观察。
直线使用航向信息,弧线使用归一化灰度偏差,左右轮编码器提供速度与距离参考。
逻辑关系示意;不表示完整电路、接线或实时硬件数据。