真实记录运动控制

TRACE

航向保持与灰度循迹小车

有线时看地面,无线时守住方向。

TI MSPM0G3507 自动行驶小车:直线使用 MPU6050 航向反馈,弧线切换八路灰度循迹,编码器速度环贯穿全过程。把赛道分段,也把控制与任务状态分开。

MSPM0G3507八路灰度编码器PID
TRACE 小车控制主题设计插画,非实车照片
设计插画,车体与轨迹不代表实物结构或实测路线。
控制源码与设计报告已整理已核对 MSPM0 控制源码与设计报告;实车结果表待补,本次未构建、烧录或复测赛道成绩。
01

一条赛道,并非始终有一条线。

自动行驶任务的直线段没有地面引导标记,圆弧段才有黑线。全程只问灰度传感器“线在哪里”,小车在直线段就失去参考;全程只保持航向,又无法自然跟随弧线。TRACE 因此采用分段的混合导航。

项目使用 TI MSPM0G3507,保留 MPU6050、八路灰度、左右轮编码器和双电机差速结构。展示内容来自现有控制源码与设计报告,控制器型号按真实工程更新。

02

方向外环之下,是共同的速度内环。

直线段由航向误差给出方向修正,弧线段由八路灰度加权偏差给出修正;两者最终都变成左右轮目标速度。编码器速度反馈贯穿这两种模式,方向控制因此可以建立在各轮实际反馈之上。

路径任务使用 car_mode 与 car_node 描述模式和节点,pid_control_mode 单独选择控制方式。停车或某些丢线阶段切到纯速度环减速;节点切换时按当前分支复位距离、PID 或丢线计数,并触发声光提示。

03

先把“看见黑线”变成可比较的量。

八路灰度并非天然一致。当前代码轮询模拟通道,多次采样取均值,再用白底与黑线参考计算归一化黑度。校准流程采集 32 轮,每路去掉两端各 4 个值,使用剩余 24 个值求平均。

归一化后按从左到右的权重计算偏差中心,信号总量不足时另作保护;节点逻辑则通过数字通道位判断是否在线。方向偏差与在线条件分别表达,调试时也需要同时观察。

04

切换控制方式,也处理切换前的记忆。

进入下一段时,上一段的积分、误差和距离可能不再有相同含义。Car.c 中的复位调用和丢线防抖,让这些边界成为显式步骤;方向外环的来源改变,底层速度反馈仍保持共同职责。

编码器距离受轮系与打滑影响,IMU 航向受零偏与漂移影响,灰度依赖地面、光线和安装高度。组合反馈提供更多观察,但不会自动消除误差。默认阈值与 PID 参数属于当前条件,需要随实车验证。

05

框架可以读清,成绩还需要记录。

当前源码包含多任务路径、分段节点、航向与循迹控制、编码器测速测距、校准及调试输出。设计报告将这些实现整理为系统方案,也保留了测试方案与待填写的实车结果表。

档案可以说明控制结构与实现选择,停车误差、完成用时、多圈成功率则仍需对应的实车记录。本次没有重新运行工具链和赛道验证,封面轨迹也只是设计表达。

06

让每次调参,都能回到同一段路。

下一步把单模块、单模式和整圈验证分开记录:电机与编码器方向先一致,再看直线航向与停车,再看弧线在线判断和节点切换,最后观察多圈累积误差。

每轮保存版本、场地、校准值、关键参数和现象,才能分清是控制器失配、切换时机不合适,还是传感器条件变化。把“为什么换一种控制”说清楚,比只留下最终参数更有价值。

把过程,再展开一点。

每一步,都有自己的问题。
过程记录 01 · 八路灰度并非天然一致

八路灰度并非天然一致。当前代码轮询模拟通道,多次采样取均值,再用白底与黑线参考计算归一化黑度。校准流程采集 32 轮,每路去掉两端各 4 个值,使用剩余 24 个值求平均。

过程记录 02 · 归一化后按从左到右的权重计算偏差中心,信号总量不足时另作保护

归一化后按从左到右的权重计算偏差中心,信号总量不足时另作保护;节点逻辑则通过数字通道位判断是否在线。方向偏差与在线条件分别表达,调试时也需要同时观察。

一条链路,三个可以解释的环节。

选择模块,看看它负责什么。

直线使用航向信息,弧线使用归一化灰度偏差,左右轮编码器提供速度与距离参考。

逻辑关系示意;不表示完整电路、接线或实时硬件数据。

想去哪里?

22 个入口

首页作品作品展厅全部项目文章总览文件夹标签资料归档关于认识 Lan探索路线工具与工作台最近在做InkFeed · 4.2 英寸电子纸信息终端VIBRATION · 柔性振动检测与采集链路TRACE · 航向保持与灰度循迹小车STRIDE · 八自由度四足机器人SCOPE · 固件日志浏览器温度为什么被 AI 改了?FIFO 有半帧,就一定是故障吗?直线守航向,弧线再看黑线。

Tab 选择入口 · Enter 打开 · Esc 关闭