我是靠谱客的博主 欢呼摩托,这篇文章主要介绍智能车入门——实现低速完赛<新手从零做车>,现在分享给大家,希望可以做个参考。

这仅能使车以极慢的速度完成全元素任务


前提条件:能够

舵机打角

电机任意转速转动

读取电感前瞻获取到的值

屏幕显示

数据存储与读取

按键菜单

会更好:

陀螺仪数值读取

激光测距

干簧管/霍尔检测

编码器数据读取

速度闭环


在初始化里放各器件及函数的初始化


在中断里

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Cnt++; KeyScanInt(); Beep_IntCnt(); Car_Protect(); //--------------------------电磁处理和元素判断-------------------------------// TOFGetData();//获取激光测距的值 Inductor_deal();//获取前瞻电感值及滤波归一化等 Ele_judge();//元素识别与识别后的处理 //----------------------------陀螺仪数值获取---------------------------------// if(Cnt% 5== 0 ) { ICM20602DataFilter();//陀螺仪获取数据 ICM_I_Int();//陀螺仪积分 } if(!StartCar){ //-------------------------------方向控制------------------------------------// if(Cnt% 5== 0) { DirectionControl();//舵机打角 } //-------------------------------速度控制------------------------------------// ExSpeedControl();//顺序不能错 DiffSpeedControl(); SpeedControl();//电机控制 }

对于元素判断

在车速很低的情况下

可以用模板匹配:

在发车前,手动采集元素入口的电感值

(用eeprom配合按键菜单,存储各个电感的值,标记为该元素)

还可以加上激光测距等辅助条件

复制代码
1
2
3
4
5
6
7
8
#define value 1234 if (sqr(LNow[0]-Lreserve[0])+sqr(LNow[1]-Lreserve[1])+sqr(LNow[2]-Lreserve[2])+sqr(LNow[3]-Lreserve[3])+sqr(LNow[4]-Lreserve[4])+sqr(LNow[5]-Lreserve[5])+sqr(LNow[6]-Lreserve[6])+sqr(LNow[7]-Lreserve[7]) <=value) { fork_flag=1; fork_state=1; }

元素处理

判到元素之后,设置舵机及电机的变化

最后

以上就是欢呼摩托最近收集整理的关于智能车入门——实现低速完赛<新手从零做车>的全部内容,更多相关智能车入门——实现低速完赛<新手从零做车>内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(107)

评论列表共有 0 条评论

立即
投稿
返回
顶部