嵌入式智能小车系统设计:多传感器融合与双MCU协同控制
1. 项目概述2021年全国大学生电子设计竞赛F题“送药智能小车”是一项面向嵌入式系统与机器人控制的综合性工程实践任务。该题目要求参赛队伍在严格约束条件下设计并实现两台具备自主导航、目标识别、协同作业能力的智能移动平台。其核心挑战在于在物理尺寸≤25cm×20cm×25cm、供电方式单体电池独立供电、环境适应性无阳光直射的自然光及顶置多灯照明和操作规范仅允许一次复位启动全程无人工干预等多重限制下完成高精度、高可靠性的闭环控制任务。项目功能可划分为基础要求与发挥部分两个层级。基础要求聚焦于单机系统的完备性小车需依据走廊地面标识红色引导线自主寻径准确抵达指定病房门口区域投影中心点位于门框内点亮红色指示灯等待卸载人工卸载药品后自动熄灭红灯并返回药房抵达后点亮绿色指示灯。整个运送与返回过程的时间均需控制在20秒以内超时将直接扣分。这一层级验证了系统在感知、决策、执行三个环节的基本能力。发挥部分则引入了多智能体协同的复杂逻辑。第一项任务要求两车协同运送至同一中部病房小车1先行抵达并等待卸载小车2在识别病房号后启动在自选暂停点点亮黄色指示灯等待小车1卸载完毕即刻返回同时向小车2发送指令使其继续前进。第二项任务为异步取送小车1负责送药至远端病房小车2在药房处待命仅在收到小车1发回的“取药开始”指令后才启动前往同一病房取药。两项协同任务的总耗时上限均为60秒且对两车间的无线通信可靠性、指令同步精度及状态机切换的鲁棒性提出了严苛要求。这些设计并非单纯的技术堆砌而是源于真实医疗场景中物流调度的简化模型——它要求工程师必须从系统工程视角出发将机械结构、传感器融合、运动控制、通信协议与软件架构视为一个不可分割的整体进行权衡与优化。2. 系统架构设计本项目采用典型的“主控协处理器”异构计算架构以平衡实时性、算力需求与开发效率。系统核心由GD32F470ZGT6微控制器与Kendryte K210 AI视觉芯片构成双处理单元通过高速UART2波特率2Mbps进行数据交换。GD32F470作为主控MCU承担所有实时性要求极高的底层驱动、运动控制、状态管理与通信调度任务K210则作为专用视觉协处理器专职处理图像采集、数字识别与路径特征提取等计算密集型工作。这种分工明确的架构避免了在单一MCU上运行复杂视觉算法所带来的实时性风险是应对电赛高压环境下的稳健选择。系统硬件被划分为六个功能明确的PCB模块体现了模块化设计理念0_小车扩展板系统动力与感知中枢集成双路电机驱动、双路舵机控制、六轴IMUQMI8658A、磁力计QMC5883P、蜂鸣器、CAN总线接口及灰度传感器预留位。1_外置蓝牙模块基于沁恒CH9143芯片实现双车间低功耗、高可靠串口透传通信。2_梁山派-K210固定板结构承载板精确固定GD32F470核心板与K210开发板确保二者电气连接稳定。3_小车底板主体机械平台采用FR-4玻纤板1.6mm厚兼顾强度、加工便利性与成本。4_RGY灯板独立LED状态指示模块提供符合赛题要求的红、绿、黄三色独立PWM控制。5_摄像头补光板兼具补光与结构定位功能为K210摄像头提供稳定安装基准。软件层面系统基于RT-Thread实时操作系统构建。RT-Thread提供了成熟的线程管理、内存管理、设备驱动框架与IPCInter-Process Communication机制使开发者能将复杂的系统功能解耦为多个独立线程pid_thread负责电机速度/位置环PID计算att_thread运行姿态解算算法vision_thread处理K210下发的视觉数据comm_thread管理蓝牙通信状态机led_thread协调灯光状态转换。各线程间通过uMCNMicro Controller Network轻量级消息总线进行松耦合通信例如编码器数据、融合姿态、数字识别结果均以主题Topic形式发布订阅者按需获取极大提升了代码的可维护性与可测试性。3. 关键硬件子系统设计3.1 主控与电源管理主控芯片选用兆易创新GD32F470ZGT6其240MHz Cortex-M4内核、512KB片上SDRAM及丰富的外设资源为复杂控制算法提供了充足算力。电源系统设计是整机稳定运行的基石。鉴于航模3S锂电池标称电压为11.1V而GD32F470及外围器件需5V供电系统采用圣邦微SGM6132 DC-DC降压芯片。该芯片支持4.5V–28.5V宽输入3A持续输出1.4MHz开关频率其关键优势在于内置使能EN引脚便于实现软件可控的电源管理。原理图设计严格遵循其Datasheet第10页的典型应用电路输出反馈电阻网络经精确计算确保5V输出精度优于±2%。为应对电机启动瞬间高达6A的峰值电流电源入口配置了5A自恢复保险丝、TVS瞬态抑制二极管及XT30大电流连接器形成多级防护。所有大电流路径如电机供电均采用≥2mm线宽布线并优先走PCB顶层与底层以降低阻抗与温升。3.2 电机驱动与运动执行运动执行系统采用“两轮差速驱动万向轮”方案此方案在满足25cm尺寸限制与走廊转弯半径要求之间取得了最佳平衡。驱动电机选用轮趣科技MG513P20_12V直流减速电机减速比20:1其额定电流0.36A、堵转电流3.2A的特性与AT8870驱动芯片峰值电流3.6A完美匹配。每台小车配备两颗该电机分别驱动左右轮通过调节两轮转速差实现前进、后退、转向等全部运动模式。电机驱动电路的核心是AT8870双H桥芯片。其最大优势在于内置精密电流检测ISEN功能与100kHz PWM输入能力。为防止电机堵转损坏芯片电路中接入0.15Ω精密采样电阻将ISEN引脚阈值设定为2.2A当检测电流超过此值时芯片自动进入限流保护模式。针对感性负载特性电路设计了完善的续流回路确保电机在快速启停时产生的反电动势被安全吸收。两路驱动信号IN1/IN2由GD32F470的TIMER8与TIMER11定时器生成PWM频率统一配置为60kHz远高于人耳听觉上限彻底消除了电机高频啸叫问题。3.3 视觉感知与数字识别视觉系统是小车实现“认路”与“识房”的核心。本项目摒弃了传统OpenMV方案选用国产Kendryte K210 AI芯片其1TOPS算力与RISC-V双核架构为本地化、低延迟的图像处理提供了强大支撑。K210通过FPC排线连接OV2640摄像头采集分辨率为320×240的YUV格式图像。为提升在不同光照条件下的鲁棒性系统采用“双模态”感知策略在光线充足时主要依赖K210进行高精度数字识别在光线不足或识别失败时可无缝切换至线性CCD传感器进行红线循迹形成冗余备份。数字识别模型训练流程严谨首先在小车实际装配状态下使用K210的MaixPy固件采集224×224像素的数字样本确保数据集与真实场景一致其次利用LabelImg工具对每张图片进行精确标注标签为1–8最后采用MX-YOLOv4框架进行迁移学习。模型参数经反复调优最终选定Alpha0.75生成约1.85MB的KModel文件完美适配K210在MaixPy最大固件下的2MB加载限制。训练完成后模型被部署至K210的TF卡中通过boot.py脚本自动加载识别结果数字ID与置信度经UART2以JSON格式实时上报给GD32F470主控延迟低于50ms。3.4 姿态感知与多源融合为实现高精度的航向角Yaw控制与姿态稳定系统集成了六轴IMUQMI8658A与磁力计QMC5883P构成九轴传感阵列。QMI8658A以其13mdps/√Hz的陀螺仪噪声与150μg/√Hz的加速度计噪声为姿态解算提供了高质量原始数据。其SPI接口最高15MHz被优先选用以获取比I2C更高的数据吞吐率。硬件设计上IMU被精密安装于小车扩展板几何中心周围开槽以减小PCB形变应力并远离电机驱动等强干扰源。姿态解算算法采用开源的Fusion库其核心为扩展卡尔曼滤波EKF。该算法能有效融合陀螺仪的短期精度、加速度计的长期稳定性以及磁力计提供的绝对方向参考输出平滑、无漂移的欧拉角Roll, Pitch, Yaw与四元数。在软件实现中att_thread以100Hz频率SAMPLE_PERIOD0.01s调用FusionAhrsUpdateNoMagnetometer函数将归一化后的加速度单位g与角速度单位°/s数据输入滤波器。解算结果通过uMCN主题fusion_topic发布供角度环PID控制器实时读取。实测数据显示在小车静止状态下Yaw角漂移率小于0.5°/分钟完全满足赛题对航向保持精度的要求。3.5 无线通信与协同控制双车协同是本项目的技术制高点其可靠性直接决定发挥部分得分。系统选用沁恒CH9143蓝牙SoC其核心优势在于“主从一体”与“串口透传”特性。两块CH9143模块上电后可自动配对建立稳定连接开发者无需关心蓝牙协议栈细节仅需将其视为一个透明的串口即可。该设计将复杂的无线通信抽象为最简单的UART读写操作极大降低了软件开发难度与调试风险。通信协议采用精简的帧格式[SOH][CMD][DATA...][ETX]其中SOH0x01为帧头ETX0x04为帧尾CMD定义指令类型如0x01为“取药开始”0x02为“卸载完成”DATA域携带必要参数。comm_thread负责解析接收到的指令并触发对应的状态机跳转。为保障指令不丢失所有关键指令均采用“发送-应答”机制主控在发出指令后启动超时定时器若未在规定时间内收到对方应答则自动重发。实测表明在1米距离内该蓝牙链路的丢包率低于0.1%完全满足电赛对协同控制的严苛要求。4. 核心控制算法实现4.1 PID运动控制电机控制采用经典的串级PID架构以实现速度与位置的双重精准控制。内环为速度环其目标值Setpoint为期望线速度m/s测量值Process Variable为编码器实时反馈的速度经M法计算控制器输出为施加于电机驱动芯片的PWM占空比。外环为位置环其目标值为期望行驶距离m或旋转角度°测量值为编码器累积脉冲换算的距离/角度控制器输出则作为速度环的目标值。这种结构的优势在于位置环负责宏观轨迹规划速度环则确保微观执行的快速响应与高精度两者协同使小车既能平稳加速/减速又能精确停驻于目标点。PID参数整定采用“试错法”与“在线调试”相结合。首先将Ki、Kd置零仅调节Kp直至系统出现临界振荡记录此时Kp值随后将Kp设为该值的一半逐步增大Ki以消除静差最后加入Kd以抑制超调。所有参数均通过FinSH控制台命令pid_test进行动态修改配合VOFA上位机实时绘制目标值I0与测量值I1曲线使调试过程可视化、可量化。最终调优的参数如下速度环Kp125, Ki25, Kd80位置环Kp0.015, Ki0, Kd0在保证响应速度的同时将轮子打滑概率降至最低。4.2 角度环与转向控制小车转向控制提供两种互为备份的实现方式。第一种为“基于IMU的姿态环”以融合解算出的Yaw角为测量值以目标转向角如90°为设定值通过PID控制器输出左右轮的差速指令。该方法鲁棒性强不受地面摩擦系数变化影响但需解决角度跨0°的突变问题if (error 180) error - 360; else if (error -180) error 360;。第二种为“基于编码器的位置环”直接控制左右轮向相反方向旋转预设的脉冲数。根据电机参数减速比20编码器线数13四倍频后每转52个脉冲计算出90°转向所需脉冲数为1300。该方法实现简单、精度极高是比赛中的首选方案。car_spin_position函数即为此逻辑的封装调用时仅需传入目标脉冲数系统便自动分配至左右轮并启动PID位置环。4.3 协同状态机设计双车协同的本质是分布式状态机的同步。系统定义了清晰的状态枚举STATE_IDLE空闲、STATE_DELIVERING运送中、STATE_WAITING_UNLOAD等待卸载、STATE_RETURNING返回中、STATE_LOADING装载中。每台小车均维护一个本地状态变量并通过蓝牙广播当前状态。comm_thread监听对方状态一旦检测到状态变更如小车1从STATE_DELIVERING变为STATE_WAITING_UNLOAD立即触发本地状态机跳转并执行相应动作如小车2启动。所有状态跳转均受FINSH命令car_state监控工程师可在任意时刻通过串口查询两车当前状态为故障诊断提供了直观依据。5. 调试与验证体系本项目构建了覆盖全开发周期的立体化调试体系。底层硬件调试依托专业工具逻辑分析仪用于捕获SPI、I2C总线波形验证QMI8658A与QMC5883P的通信时序示波器用于观测电机驱动芯片的PWM波形与续流二极管两端电压确保驱动电路工作在安全区万用表则用于逐点排查电源轨电压与关键信号电平。软件调试以RT-Thread的FinSH控制台为核心。通过mcn list可实时查看所有uMCN主题的活跃状态mcn echo encoder_m1_topic可循环打印左轮编码器的原始计数值与计算速度是验证电机驱动与编码器硬件连接正确性的第一道关卡motor_test motor1 500等命令可绕过PID控制器直接向电机施加指定PWM值用于快速定位机械卡滞或驱动失效问题。所有调试命令均采用MSH_CMD_EXPORT宏导出确保其在系统启动后即刻可用。上位机可视化调试则由VOFA承担。通过配置FireWater数据引擎将GD32F470通过串口输出的motor1:%f,%f\n格式数据目标速度、实际速度实时绘制成双通道波形图。工程师可直观观察PID调节过程中系统响应的超调量、调节时间与稳态误差使参数整定从“经验主义”走向“数据驱动”。此外MobaXterm被用于与FinSH交互执行list_thread、list_device等系统级命令全面掌握RTOS内核的运行健康状况。6. BOM清单与关键器件选型依据序号器件名称型号/规格关键参数与选型理由数量备注1主控MCUGD32F470ZGT6240MHz M4内核512KB SDRAM丰富外设全国产化首选。2梁山派核心板2AI视觉协处理器Kendryte K2101TOPS算力RISC-V双核专为嵌入式AI优化支持本地模型推理。23电机驱动芯片AT8236PIN-to-PIN兼容AT8870峰值电流6A连续电流4A100kHz PWM内置电流检测。4替代已停产的AT88704直流减速电机MG513P20_12V12V20:1减速比额定电流0.36A堵转电流3.2A带霍尔编码器13线。45六轴IMUQMI8658A13mdps/√Hz陀螺仪噪声150μg/√Hz加速度计噪声SPI接口全国产高性能。26磁力计QMC5883P量程±8GI2C接口与QMI8658A配套提供地磁参考。27无线通信模块CH9143国产蓝牙SoC主从一体串口透传配对简单低功耗。28降压DC-DCSGM61324.5V-28.5V输入5V/3A输出1.4MHz使能引脚全国产。29三色LEDC2897364 (RGY)R:2.0V/25mA, G:3.3V/25mA, Y:2.0V/25mA满足赛题RGB指示灯要求。2需配限流电阻10编码器内置电机自带霍尔式13线四倍频后52脉冲/转分辨率高抗干扰强。4该BOM清单充分体现了“全国产化”与“工程务实性”的双重原则。所有器件均来自国内主流供应商供货稳定无断货风险同时每一项选型都经过严格的性能与成本权衡例如在电机驱动芯片上当AT8870停产时果断升级至性能更优、引脚兼容的AT8236而非仓促寻找替代品确保了项目进度与技术先进性的统一。