一、赛题需求深度拆解
1.1 题目核心任务
- 车体尺寸限制:整车≤35cm×25cm轮式小车,电池独立供电;
- 执行机构:4分PPR水管改造凹槽摆杆,左端铰接高度≥5cm,摆杆由舵机驱动俯仰倾斜,依靠重力实现Φ1cm钢球左右滚动;水管内壁禁止任何增摩擦改造,违规直接不予测试;
- 检测规则:小车循迹仅允许使用红外光电传感器,钢球位置必须由摄像头视觉识别;
- 附加要求:车载显示屏尺寸≤2英寸、场外视频图传+录像留存、定点稳球、行驶过程动态稳球、指定刻度定位等多任务考核。
1.2 考察四大核心能力
- 机械结构工程设计:PPR水管开槽规范、铰链安装、舵机连杆角度传动机构;
- 多级闭环控制算法:钢球位置环-摆杆倾角环-执行器驱动环三级串级PID;小车独立循迹差速PID;
- 嵌入式AI视觉检测:K230实现钢球圆心定位、像素与物理刻度映射、低延迟坐标串口下发;
- 多系统集成调度:运动控制、姿态补偿、视觉通信、WiFi图传、OLED状态显示多模块并行稳定运行。
1.3 本方案选型说明(为什么选F103+K230)
- STM32F103C8T6:低成本、资料极多、定时器资源刚好满足舵机PWM、电机驱动、编码器测速,足够承载两路PID闭环,适合预算有限队伍;
- K230:内置NPU算力远超ESP32-CAM,霍夫圆检测、反光抗干扰能力更强,独立承担视觉运算不占用主控资源,同时支持WiFi推流/HDMI输出满足赛题图传要求。
二、系统总体硬件架构
2.1 整体硬件拓扑框图
┌─────────────────────────────────────────────────────┐ │ 视觉处理单元:K230开发板 + OV摄像头 │ │ 1. ROI裁剪→灰度模糊→霍夫圆检测→钢球坐标解算 │ │ 2. 像素映射实际刻度值,TTL串口下发给STM32 │ │ 3. WiFi MJPG图传推流 / HDMI采集卡录像 │ └───────────────┬─────────────────────────────────────┘ │ 3.3V TTL串口交叉连接 ▼ ┌─────────────────────────────────────────────────────┐ │ 运动主控单元:STM32F103C8T6 │ │ ├─ TIM1 PWM → MG996R舵机(摆杆倾角控制) │ │ ├─ TIM2 PWM → TB6612 直流减速电机驱动(小车行驶) │ │ ├─ TIM3 正交编码器 → 电机速度闭环 │ │ ├─ I2C1 → MPU6050 六轴姿态传感器(倾角前馈补偿) │ │ ├─ I2C1 → 0.96寸OLED屏(时长+球位置显示) │ │ ├─ GPIO PC0~PC6 → 7路TCRT5000红外循迹阵列 │ │ └─ USART1 中断接收K230下发钢球位置数据 │ └─────────────────────────────────────────────────────┘2.2 STM32F103定时器资源精细化分配(重点)
F103C8T6定时器资源紧张,严格分配避免冲突:
| 定时器 | 功能用途 | 外设引脚 |
|---|---|---|
| TIM1 | 舵机标准20ms PWM输出 | PA8 |
| TIM2 | 左右轮电机两路PWM调速 | PA0/PA1 |
| TIM3 | 编码器正交测速模式 | PA6/PA7 |
| USART1 | 与K230串口通信 | PA9(TX)/PA10(RX) |
| I2C1 | MPU6050 + OLED共用总线 | PB6/PB7 |
注意:所有传感器、执行器统一3.3V逻辑电平,电机、舵机采用独立电源供电,防止电压跌落导致串口乱码、主控死机。
2.3 完整BOM物料清单
| 模块分类 | 器件名称 | 数量 | 作用说明 |
|---|---|---|---|
| 主控核心 | STM32F103C8T6最小系统板 | 1 | 全车运动控制、PID运算、逻辑调度 |
| 视觉单元 | K230开发板+配套摄像头 | 1 | 钢球识别、坐标解算、WiFi图传 |
| 执行机构 | MG996R金属齿轮大扭矩舵机 | 2(1备1用) | PPR摆杆倾角连杆驱动 |
| 小车驱动 | 直流减速电机+TB6612驱动板 | 2套 | 差速循迹小车底盘 |
| 循迹传感器 | TCRT5000红外对管模块 | 7路 | 黑线循迹,加权计算偏差值 |
| 姿态反馈 | MPU6050六轴陀螺仪加速度计 | 1 | 摆杆俯仰角读取+车体晃动前馈补偿 |
| 显示模块 | 0.96寸I2C OLED显示屏 | 1 | 车载时长、钢球位置、运行状态显示 |
| 结构件 | 4分PPR水管、合页铰链、连杆支架 | 1套 | 滚球凹槽摆动机构 |
| 被控对象 | Φ1cm实心钢球 | ≥3颗 | 防止丢失、备用替换 |
| 供电配件 | 12V锂电池、5V稳压模块、杜邦线 | 2套 | 整车双组备用电源 |
三、机械结构详细设计方案
3.1 PPR水管摆杆制作规范(硬性规则不能违规)
- 截取长度:单根水管总长25cm,不超出35cm车身限制;
- 开槽方式:沿轴线剖开上半部分,保留底部120°~150°圆弧承重槽,保证钢球稳定卡在槽内;
- 内壁要求:原始光滑状态,禁止打磨、贴胶带、涂胶水增加摩擦力,否则测试直接作废;
- 刻度标定:仅在凹槽外侧边缘粘贴0.1cm间隔刻度条,中心点标记零点O,左右±5cm量程;
- 安装高度:左侧铰链固定支架离地高度≥5cm,右侧通过舵机摇臂+连杆实现升降倾斜。
3.2 角度执行机构两种可选方案
- 方案A(比赛首选):MG996R舵机+连杆机构
舵机转动角度线性转化为摆杆右端升降量,结构简单、代码只需要PWM角度映射,调试成本低;注意必须加装金属舵臂,高频摆动避免扫齿。 - 方案B(高精度备选):步进电机+丝杆滑台
倾角控制精度更高,但响应速度偏慢,需要限位开关,代码复杂度高,非必要不推荐。
3.3 小车底盘布局规划(俯视)
- 前部:7路红外传感器横向排布,用于弯道、直道黑线循迹;
- 中部:纵向固定PPR摆动摆杆,K230摄像头支架垂直俯拍凹槽全程;
- 后部:主控板、驱动模块、电池、舵机集中布线;
- 优化点:过弯离心力易导致钢球甩出,底盘尽量降低重心,走线做扎带固定减震。
四、K230视觉检测与图传实现
4.1 K230整体功能定位
- 不参与任何闭环控制,只做感知层:识别钢球→计算物理位置→串口下发给STM32;
- 并行任务:视频流编码推流,满足场外电脑录像存档的赛题硬性要求。
4.2 钢球识别完整算法流程
- ROI区域锁定:框选水管凹槽拍摄区域,过滤背景杂物,减少算力开销;
- 图像预处理:灰度化→高斯模糊→腐蚀膨胀消除水管内壁反光噪点;
- 目标特征提取:
- 限定圆形半径9~11mm,霍夫圆检测筛选唯一钢球;
- 进阶优化:二值化轮廓查找+最小外接圆,亚像素重心定位提升精度;
- 物理刻度标定:赛前拍摄刻度模板,建立像素坐标 ↔ 实际厘米值映射系数;
- 数据打包下发:通过TTL串口以固定帧格式发送,刷新率≥50Hz;
- 视频推流同步执行。
4.3 串口通信协议(极简可靠,比赛零bug)
- 电平:3.3V对3.3V直连,TX交叉对接RX;
- 波特率:115200 8N1;
- 数据帧格式:
#数值\r\n
示例:
#0.00\r\n // 钢球居中零点 #-3.20\r\n // 向左偏移3.2cm #2.75\r\n // 向右偏移2.75cmSTM32在串口中断仅做数据缓存,主循环解析浮点值送入位置环PID。
4.4 两种图传落地方案(应对赛场WiFi干扰)
方案1:WiFi模块MJPG流推流(便捷)
K230外接WiFi模块开启AP热点,笔记本连接局域网IP,浏览器打开实时画面并使用OBS录制视频,对标原ESP32-CAM方案使用逻辑。
方案2:HDMI输出+USB采集卡录制(稳定性拉满)
直接HDMI输出原始画面至采集卡,电脑端录制,彻底规避赛场大量2.4G设备信道拥堵、丢包卡顿问题,建议作为备用兜底方案。
4.5 K230专属避坑点
- 俯拍镜头近距离畸变较大,可微调镜头焦距或增加近摄垫圈;
- 视觉处理存在固定几毫秒延迟,后端PID微分参数不可过大,避免系统振荡;
- 对传回的钢球坐标做一阶低通滤波平滑,抑制识别跳变干扰。
五、STM32F103控制算法核心设计(全文重点)
5.1 三级串级PID闭环架构(决定稳球成败)
外环:钢球位置环(最外层)
- 设定值:定点0cm / 指定±5cm刻度;
- 反馈值:K230串口解析得到的钢球实际位置;
- 输出量:期望摆杆俯仰角度;
- 作用:消除钢球静态偏差,I积分项抵消稳态误差。
中环:摆杆倾角环
- 设定值:位置环输出目标倾角;
- 反馈值:MPU6050读取摆杆Pitch俯仰角;
- 输出量:舵机目标PWM角度;
- 作用:补偿舵机连杆机械非线性、车体颠簸扰动,提升响应速度。
内环:执行器驱动环
舵机直接PWM定位,无需额外速度环;若使用直流电机驱动倾角机构则增加速度PID。
核心原理:单级PID无法克服钢球滚动惯性导致的持续振荡,串级结构内环提前抑制扰动,闭环稳定性大幅提升。
5.2 小车红外循迹独立PID
- 7路TCRT5000采集黑白电平,加权计算轨道中心偏差量;
- PID输出左右轮差速PWM值,直道降低P值保证平稳,弯道动态增大P提升转向灵敏度;
- 关键联动策略:检测到大偏差急转弯时,主动降低小车行驶速度,同时给滚球控制增加前馈补偿,防止离心力将钢球抛出凹槽。
5.3 车体姿态前馈补偿(高分加分项)
小车加速、减速、转弯会带来车身侧倾,直接导致钢球被动偏移。利用MPU6050采集车身Roll横滚角,叠加前馈量至摆杆目标倾角:
目标倾角 = 位置环PID输出 + 车体倾角×前馈系数Kf提前预判扰动并修正摆杆角度,大幅提升行驶过程中稳球效果。
5.4 STM32F103算力适配优化(必做)
- F1无硬件FPU浮点单元,PID运算尽量采用定点缩放算法,减少大量float运算造成主控卡顿;
- 闭环周期不需要强行拉满200Hz,稳定50Hz闭环即可可靠运行;
- 串口中断只做字节缓存,复杂数据解析放置主while循环,避免中断过长导致丢数据;
- 电池压降对舵机响应影响大,最终参数务必在半电状态下复测整定。
六、软件功能整体逻辑框图
系统上电初始化 ├─ 外设初始化:定时器PWM、I2C、串口、GPIO、OLED、MPU6050 ├─ K230握手等待,确认视觉数据正常接收 ├─ MPU6050静置3秒零偏校准 └─ 大循环轮询执行 ├─ 串口解析K230钢球位置数据(滤波平滑) ├─ 三级串级PID计算 → 输出舵机角度 ├─ 7路红外采集 → 循迹PID → 小车差速行驶 ├─ 车身姿态前馈补偿叠加修正 ├─ OLED刷新:运行时间、钢球当前刻度、工作模式 └─ 按键检测:定点模式/行驶稳球模式切换七、四天备赛时间规划 & 三人分工(可直接写进报告)
Day1 硬件搭建与模块单独调通
- 结构组员:PPR水管开槽、摆杆舵机连杆装配、整车底盘组装、红外传感器排布;
- 视觉组员:K230摄像头对焦调试、霍夫圆识别代码编写、串口坐标下发功能打通;
- 控制组员:STM32最小系统外设驱动编写、循迹传感器读取、MPU6050姿态读取、OLED显示调试。
Day2 算法单模块闭环实现
- 结构组员:机械加固、支架减震、电源分路供电优化、解决舵机抖动共振;
- 视觉组员:像素-刻度标定校准、识别精度优化、WiFi图传推流与录像功能完成;
- 控制组员:小车循迹PID跑通、三级串级PID框架编写、静态定点稳球任务调试成功。
Day3 系统联调与动态任务调试
- 结构组员:随时整改机械松动、限位干涉问题;
- 视觉组员:解决光线干扰识别跳变问题,降低传输延迟;
- 控制组员:行驶中动态稳球联调、弯道前馈减速、车体倾角补偿算法落地,全任务流程跑通。
Day4 最终固化与文档整理
- 全体:参数固化、多次上电稳定性拷机测试、作品打包;
- 分块撰写设计报告:机械结构部分、视觉算法部分、控制算法与软件流程部分,20:00前完成封箱。
八、全套避坑指南(电赛血泪经验)
8.1 赛规红线绝对不能碰
- PPR水管内壁任何打磨、粘贴摩擦材料直接判无效测试;
- 刻度条只能贴在槽体外沿,禁止贴在钢球滚动路径上;
- 小车循迹严禁使用摄像头,只能使用红外光电传感器;
- 车载显示屏物理尺寸严格≤2英寸。
8.2 硬件与供电坑
- K230与STM32必须3.3V直连,禁止接入5V电平烧毁IO;
- 舵机、电机大负载单独供电,主控板LDO独立稳压,避免电压波动串口乱码;
- MG996R高频往复摆动极易发热降扭矩,必须预留备用舵机。
8.3 算法与控制坑
- 视觉反馈存在延迟,PID微分参数D切勿过大,否则高频抖动;
- F103单片机浮点运算吃力,闭环频率适度降低,保证系统实时性;
- 过弯不做减速前馈,大概率钢球直接甩出水槽导致任务失败;
- MPU6050上电必须静置校准,否则倾角零点漂移导致补偿反向。
8.4 图传赛场环境坑
赛场大量WiFi设备干扰2.4G信道,优先预留HDMI+采集卡录像方案作为兜底,防止图传失效扣分。
九、总结与拓展优化方向
本方案以低成本STM32F103C8T6为主控,K230承担AI视觉检测与视频推流,完美满足2026电赛H题全部考核点,机械结构简单易加工、控制逻辑成熟可靠、代码可复用性强,适合绝大多数普通本科队伍落地参赛。
可后续迭代优化点
- 增加卡尔曼滤波对钢球位置数据做最优估计,进一步抑制识别噪声;
- 引入模糊PID/增量式PID提升不同负载下自适应性;
- K230增加目标丢失容错逻辑,无钢球时向上位机发送标记帧避免主控PID异常。
**
需要源码可私信
**