智能车竞赛:从零开始的职业化路径
创作时间:
作者:
@小白创作中心
智能车竞赛:从零开始的职业化路径
引用
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次程序,调车到凌晨是常态!
热门推荐
结节性痒疹怎么检查
逆战与DNF氪金机制大揭秘:哪款游戏更值得你投入?
到底什么是质量意识?如何衡量,如何提升?
国际汇款swift代码查询:如何便捷获取?
云南昆明擦亮历史名城招牌 推动翠湖与周边22个博物馆文旅融合
送玫瑰花朵数的含义解析
《本草纲目》故事:萝卜下气消食
在跑马拉松之前进行健康检查
一天中跑步的最佳时间,你错过了吗?
宿舍偷手机没证据怎么办?法律解读及应对策略
学校盗窃可以报警吗
微星主板更新BIOS版本图文教程
酸性氧化物的通性都有哪些?酸性氧化物性质详解
三维和四维哪个好?
夫妻分居如何增加信任感?
频域分析中的关键:δ序列与单位阶跃函数的作用探究
束腹带——产后必备品?
居安“渗”危,“静”享安全!关于药物外渗,你知道多少?
鸭胗的功效与作用、禁忌和食用方法
苏联最强的三个方面军:朱可夫、科涅夫、罗科索夫斯基的传奇人生
血糖高能吃包子吗?专家给出专业解答
飞机经停要下飞机吗
社保缴费基数怎么确定最合理
养老金个人账户包含内容
征地补偿方案查询指南及补偿标准详解
百日地量副图/选股指标:识别长期低位后的倍量阳线捕捉市场机会
摇蚊:水生生态系统中的重要角色
工程项目合同管理怎么做
预约科三排名从16变成了119行吗?科三受理中排名一直掉怎么办?
Ubuntu显卡驱动安装流程