智能车竞赛:从零开始的职业化路径
创作时间:
作者:
@小白创作中心
智能车竞赛:从零开始的职业化路径
引用
CSDN
等
12
来源
1.
https://blog.csdn.net/zhuoqingjoking97298/article/details/143673441
2.
https://blog.csdn.net/2401_85258012/article/details/141315656
3.
https://blog.csdn.net/qq_41954556/article/details/122664107
4.
https://blog.csdn.net/HrqShell/article/details/132932217
5.
https://blog.csdn.net/zhuoqingjoking97298/article/details/134331321#987000
6.
https://blog.csdn.net/zhuoqingjoking97298/article/details/134331321
7.
https://blog.csdn.net/weixin_45020839/article/details/131376715
8.
https://github.com/EddyCliff/STM32-Intelligent-Car
9.
https://m.journal.qq.com/read/1049448020/7
10.
https://blog.csdn.net/LEEANG121/article/details/107219818
11.
https://blog.csdn.net/qq_41834692/article/details/129220908
12.
https://journals.indexcopernicus.com/api/file/viewByFileId/1822003
智能车竞赛30天速成计划(STM32版)
第一阶段:硬件快速搭建(第1-7天)
1. 核心硬件选型(参考2)
- 主控板:STM32F4系列(推荐F407VET6,自带FPU加速运算)
- 电机驱动:TB6612FNG模块(适合直流有刷电机)或自制MOS管驱动板(参考2无刷驱动方案)
- 传感器:
- 基础组:OV7725摄像头(30fps)+ 电磁电感(10mH工字电感)
- 进阶组:激光雷达(TOF050F)+ 六轴IMU(MPU6050)
2. 电路焊接要点
- 电源模块:使用3S航模电池(11.1V)→ 通过LM2596降压至5V(主控)→ AMS1117-3.3V(传感器)
- 抗干扰设计:电机电源与信号电源完全隔离,PWM信号线加磁环(参考2防噪方案)
3. 车模组装
- 按照官方指定车模手册安装(如C型车模前轮外倾角调至2°)
- 重心控制:电池置于车体中部,离地高度<5cm
第二阶段:基础功能实现(第8-15天)
1. 电机控制(参考34)
// PWM初始化(TIM3_CH1输出)
void PWM_Init(uint16_t arr, uint16_t psc) {
TIM_TimeBaseInitTypeDef TIM_BaseStruct;
TIM_OCInitTypeDef TIM_OCStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_BaseStruct.TIM_Period = arr; // 自动重装载值
TIM_BaseStruct.TIM_Prescaler = psc; // 预分频
TIM_BaseStruct.TIM_ClockDivision = 0;
TIM_BaseStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_BaseStruct);
TIM_OCStruct.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCStruct.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCStruct.TIM_Pulse = 0; // 初始占空比0%
TIM_OCStruct.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM3, &TIM_OCStruct);
TIM_Cmd(TIM3, ENABLE);
TIM_CtrlPWMOutputs(TIM3, ENABLE);
}
// 电机正转(占空比70%)
TIM_SetCompare1(TIM3, 700);
2. 基础循迹实现
- 电磁组:
使用5个电感阵列,AD采样值归一化处理float sensor = {0.2, 0.8, 1.0, 0.6, 0.3}; // 模拟电感值 float position = (sensor*(-2) + sensor*(-1) + sensor*0 + sensor*1 + sensor*2) / (sensor+sensor+sensor+sensor+sensor);
- 摄像头组:
使用动态阈值二值化(参考OpenMV算法):# 在STM32上移植的简化版 for(int i=0; i<60; i++){ if(img[i] > (avg + 15)) bin_img[i] = 1; else bin_img[i] = 0; }
第三阶段:算法优化(第16-25天)
1. 控制算法升级
- PID参数整定:
先调D(抑制震荡),再调P(响应速度),最后I(消除静差)
推荐初始值:Kp=2.0, Ki=0.01, Kd=0.5 - 路径预测:
使用五点差分法计算曲率:curvature = (y[i-2] - 8*y[i-1] + 8*y[i+1] - y[i+2]) / (12*dx);
2. 速度控制策略
赛道段 | 期望速度 | 控制方法 |
---|---|---|
直线 | 3.0m/s | 开环加速+PD稳向 |
弯道 | 1.5m/s | 闭环PID+速度前馈 |
坡道 | 2.0m/s | 陀螺仪补偿+扭矩限制 |
第四阶段:调试与实战(第26-30天)
1. 快速调试技巧
- 无线调试:
使用HC-05蓝牙模块传输关键数据(如电感值、舵机角度)printf("P:%.2f,D:%.2f,S:%d\n", pid.P, pid.D, speed); // 通过串口发送
- 紧急修复:
准备"救命固件"——阉割版纯直道加速程序(应对突发故障)
2. 赛场生存指南
- 赛前2小时:
用热熔胶固定所有接插件,电机轴点螺丝胶 - 突发情况处理:
- 摄像头死机:硬件看门狗复位(IWDG_ReloadCounter();)
- 电机失控:在PWM输出端并联4148二极管防反向电流
关键资源包
- 代码仓库:
GitHub搜索"SmartCar-F4"获取完整工程(含环岛处理代码) - 参数模板:
电磁组:Kp=1.8, Ki=0.008, Kd=0.3, 前瞻距离=25cm
- 耗材清单:
- 备用轮胎×4(不同硬度)
- 0.5mm厚不锈钢舵机臂
- 3M VHB双面胶(比502更抗震)
竞赛日倒计时:
- 第29天:完成3小时耐久测试(连续跑50圈无故障)
- 第30天:降低速度保完赛(目标名次>50%队伍即可晋级)
通过该计划,可在30天内实现车速从0到2.5m/s的突破,记得每天至少烧录10次程序,调车到凌晨是常态!
热门推荐
真人漫改,影视剧“翻车”重灾区
莲子苦是怎么回事?莲子苦了还能吃吗?
【悦读】唐•刘禹锡《竹枝词(其一)》赏析及同步练习
不容错过!探秘千年古都邯郸,八大必游景点大揭秘!
腹痛预警!一张图解锁「肚子痛」的密码
面试后HR通知等领导结果要多久?
经典轩逸扶手箱哪个好
一个家庭出现这4个信号,预示父母与子女感情出现危机……
阿莫西林可以治喉咙痛吗?医生提醒:不是所有喉咙痛都适合用抗生素
平时泡水喝的中药材什么比较好
酒店竞争对手分析报告:六大维度全面解析
二战德国空军:拙劣的指挥,糟糕的后勤,悲催的军种
W1813N无磁钻铤钢:性能与应用解析
打完乙脑疫苗饮食需要注意什么
什么叫一线蓝筹股?一线蓝筹股的投资价值有哪些?
在原合同上增加补充条款需要重签合同吗
种植牙一期手术过程详解:步骤与注意事项全攻略
预算5万 VS 50万:不同价位家居配置方案全解析
清代医家王清任:通窍活血汤通头面七窍(耳、舌、眼、鼻、口)
一天中3个喝茶最佳时刻,喝对才养生!
如何从SCI获取文献
12本已完结战锤小说,燃烧宇宙,荣耀帝国,忠诚至死,帝皇永恒
青梅煮酒煮的是什么梅
时隔九年,大鱼海棠第二部终于迎来回归,椿湫的命运将何去何从?
什么是锂电池过充,如何防止锂电池过充?
投资组合多样化:降低风险的有效策略
详解八字格局中的五行象法
薯条虽好吃但提高焦虑、抑郁风险
善意的谎言:道德的边界与伦理的探讨
招聘过程中,如何筛选合适人才,降低离职率?