卷积神经网络控制巡线智能车
扫描二维码
随时随地手机看文章
■ 简介
Michal Nand[1] 在网站 HACKADAY.IO 上通过博文 Motoku Uprising Deep Neural Network 介绍了他利用卷积神经网络来帮助控制巡线智能车更加平稳快速运行的技术方案。特别是对神经网络的结构、训练、部署等方面进行了详细的介绍。
智能车的任务相对比较简单,就是在平面赛道上,沿着彩色导引线(大部分是黑色)从出发点运行到终点并折返到出发点。其中赛道上一段有一块砖头作为障碍物。
在作者的方案中,智能车运行大部分控制算法都采用了常规的PID、逻辑判断都算法。他使用了CNN根据车模运行过程中,通过传感器搜集到的二维路面数据来对赛道的种类进行分类判断,并通过调整车模速度来适应不同赛道的情况,达到又快又稳的目的。
□ 机械结构
1.硬件构成
这款智能车的硬件配置包括有:
-
嵌入式控制器:STM32F303,Cortex M4F 72MHz -
电机驱动器:使用了TI DRV8834低电压双相步进电机驱动器 -
电机型号:Pololu HP电机,减速齿轮箱1:30,带有磁编码器 -
轮胎:Poloku 28mm的轮胎,高黏着力 -
惯性导航器件:LSM6DS0 -
巡线传感器:八个绿光(540nm)光电传感器,三个红外障碍日干起 -
电源:180mAh, LiPol 2S -
编程结构:使用USB通过Bootloader完成程序下载。
2. 组成器件
序号 | 种类 | 数量 | 型号 |
---|---|---|---|
1 | MCU | 1 | STM32F303 72MHz ARM Cortex M4F |
2 | 电机驱动 | 1 | TI DRIV8834 |
3 | 电机 | 2 | 1:30 PoloHu,具有磁编码器 |
4 | 轮胎 | 2 | Pololu直径28mm |
5 | 巡线传感器 | 8 | 540nm光电光电传感器+白色补光LED |
6 | 红外传感器 | 3 | 表贴红外传感器+红外LED |
7 | 惯性传感器 | 1 | IMU LSM6DS0 陀螺仪+加速度计 |
□ 控制算法
1.控制调试界面
“磨刀不误砍柴工”。作者还是利用OPENGL开发了用于调试的应用软件。可以通过界面:
-
显示八个巡线光电传感器的原始数值 -
显示电机的状态:速度、编码器值 -
显示惯性传感器的状态; -
显示神经网络分类处理过程 -
显示通过串口获得的 原始数据
2. 智能车控制软件要点
智能车软件的主要的功能和指标为:
-
通过二次插值算法,通过八个光电传感器获得更加精确的赛道到引线位置 -
主程序控制频率为:200Hz -
方向调节器:采用PD进行方向控制 -
电机速度控制:采用双串级PID控制完成电机速度控制 -
对赛道到引线预测:在直线赛道加速前行;在曲线拐弯时刹车慢行;通过深度神经网络进行赛道识别和控制 -
控制软件使用C++编程 -
神经网络训练:采用GPU加速网络训练
3. 神经网络用于引导线的预测
利用深度卷积神经网络完成对导引线的预测和分类:
-
根据导引线的种类控制运行速度:直线时快速通过,曲线时减速慢行 -
使用DenseNet:稠密连接卷积神经网络完成对赛道引导线类型的分类 -
输入数据为8×8传感器数据矩阵。总共有八个配列成直线的光电传感器,使用运行前后相邻八条数据组成8×8的数据矩阵 -
输出物种曲线类型:两种右拐,两种左拐,一种直线
训练样本采用人工生成的仿真数据训练神经网络:
-
训练样本的个数:25000 -
测试样本的个数:5000 -
数据增强:Luma噪声, White噪声
下图给出了DenseNet的网络结构。由于是部署在单片机STM303中允许,作者在网络的鲁棒性以及运行速度方面进行了权衡。网络运行频率为200Hz,所以网络执行时间必须小于5毫秒。为了达到这个目的,作者选择了DenseNet来提高计算效率,它比纯卷积神经网络使用更少的卷积核。
最终网络的识别准确率达到了95% 的精度。
4.网络最终结构
CNN神经网络的结果参数如下:
网络层 | 网络层类型 | 输入特征图张量尺寸 |
---|---|---|
1 | 卷积3×3×4 | 8×8×1 |
2 | MAX POOLING 2×2 | 8×8×4 |
3 | 稠密卷积3×3×4 | 4×4×4 |
4 | 稠密卷积3×3×4 | 4×4×8 |
5 | 全连接层 输出5 | 4×4×12 |
5.将网络部署到单片机中
为了能够在32位单片机中执行神经网络,对网络进行了如下的改动:
-
将所有的浮点数修改成int8_t -
将尺度权重转换到8bit范围 -
使用双缓存技巧节省内容,公用两个内存缓存来计算所有层的数据
※ 结论
通过本文作者介绍的车模控制中的CNN网络的应用,了解了对于嵌入式单片机中使用神经网络的一般方法。
本文中的神经网络应用还属于辅助控制方面。也许通过部署更加强大算力的单片机,使用更加复杂的算法可以完成智能车自主学习的目标。这方面也为今年全国大学生智能汽车竞赛中的AI电磁组给出了一定的参考意义。
参考资料
Michal Nand: https://hackaday.io/michalkenshin
公众号留言
卓大大 可以点一首光辉岁月么?过几天就要返校准备比赛了,为了大一的梦想。
卓大大,我是北京学校的大三在校生。请问国赛会延期举行吗? 虽然疫情很艰难,但是车队所有人在家也很努力地备赛,在暑假期间,天南海北的队员聚在一起,尽力把车做好。我们都迫切地希望这次智能车比赛拿奖,保研、加分对我们来说,就差这场比赛,希望智能车比赛不会延期。
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!