推荐星级:
- 1
- 2
- 3
- 4
- 5
基于深度学习的自动驾驶小车系统设计
资料介绍
自动驾驶技术是智能小车研究的一个核心内容。该技术能够保证智能小车在行驶过程中,自动调整运动的方向,防止与障碍物发生碰撞。本文通过对国内外智能小车自动驾驶系统的研究现状及其进展和成果的分析,发现目前自动驾驶智能小车系统存在信息采集不理想的问题,如只能识别出障碍物,而无法辨别障碍物。因此,本次设计尝试将深度学习算法运用到自动驾驶的碰撞躲避策略上,基于树莓派并通过使用摄像头管理工具motion获取摄像头数据,使用python搭建了网站服务进行网页监控,将小车发送的图像数据利用深度学习框架进行处理识别出障碍物,再利用传感器测出与障碍物的距离,在此结果上设计小车的自动驾驶算法,并将控制指令发送给小车,实现自动避过障碍物的目的。
部分文件列表
文件名 | 大小 |
基于深度学习的自动驾驶小车系统设计.pdf | 1M |
部分页面预览
(完整内容请下载后查看)网络信息工程
2019.07
基于深度学习的自动驾驶小车系统设计
杨梓谦,李思琦,段
志刚
(西南林业大学数理学院,云南昆明,650224)
摘要 :自动驾驶技术是智能小车研究的一个核心内容。该技术能够保证智能小车在行驶过程中,自动调整运动的方向,
防止与障碍物发生碰撞。本文通过对国内外智能小车自动驾驶系统的研究现状及其进展和成果的分析,发现目前自动驾
驶智能小车系统存在信息采集不理想的问题,如只能识别出障碍物,而无法辨别障碍物。因此,本次设计尝试将深度学习
算法运用到自动驾驶的碰撞躲避策略上,基于树莓派并通过使用摄像头管理工具 motion 获取摄像头数据,使用 python
搭建了网站服务进行网页监控,将小车发送的图像数据利用深度学习框架进行处理识别出障碍物,再利用传感器测出与
障碍物的距离,在此结果上设计小车的自动驾驶算法,并将控制指令发送给小车,实现自动避过障碍物的目的。
关键字 :深度学习 ;避障算法 ;树莓派 ;python
The Design of autonomous driving vehicle system based on deep learning
YangꢀZiqian,LiꢀSiqi,DuanꢀZhigang
(MathematicsꢀandꢀPhysicsꢀcollegeꢀofꢀtheꢀSouthwestꢀForestryꢀUniversity,KunmingꢀYunnan,650224)
Abstract:
Autonomousꢀ drivingꢀ technologyꢀ isꢀ aꢀ coreꢀ partꢀ inꢀ intelligentꢀ carꢀ research.ꢀ Thisꢀ technologyꢀ
canꢀensureꢀthatꢀtheꢀintelligentꢀcarꢀautomaticallyꢀadjustsꢀtheꢀdirectionꢀofꢀmotionꢀduringꢀdrivingꢀtoꢀ
preventꢀ collisionꢀ withꢀ obstacles.ꢀ Throughꢀ theꢀ researchꢀ statusꢀ andꢀ ofꢀ theꢀ intelligentꢀ carꢀ automaticꢀ
drivingꢀsystemꢀatꢀhomeꢀandꢀabroad,ꢀthisꢀpaperꢀfindsꢀthatꢀtheꢀcurrentꢀautonomousꢀdrivingꢀintelligentꢀ
carꢀsystemꢀhasꢀproblemsꢀofꢀunsatisfactoryꢀinformationꢀcollection,ꢀsuchꢀasꢀonlyꢀidentifyingꢀobstaclesꢀ
andꢀnotꢀdistinguishingꢀobstacles.ꢀTherefore,ꢀthisꢀdesignꢀattemptsꢀtoꢀapplyꢀtheꢀdeepꢀlearningꢀalgorithmꢀ
toꢀ theꢀ collisionꢀ avoidanceꢀ strategyꢀ ofꢀ autonomousꢀ driving.ꢀ Basedꢀ onꢀ theꢀ Raspberryꢀ Piꢀ andꢀ obtainꢀ
theꢀcameraꢀdataꢀbyꢀusingꢀtheꢀcameraꢀmanagementꢀtoolꢀmotion,ꢀtheꢀwebsiteꢀserviceꢀisꢀusedꢀtoꢀmonitorꢀ
theꢀwebpageꢀandꢀsendꢀtheꢀimageꢀofꢀtheꢀcar.ꢀTheꢀdataꢀisꢀprocessedꢀbyꢀtheꢀdeepꢀlearningꢀframeworkꢀtoꢀ
identifyꢀtheꢀobstacles,ꢀandꢀthenꢀtheꢀsensorꢀisꢀusedꢀtoꢀmeasureꢀtheꢀdistanceꢀfromꢀtheꢀobstacle.ꢀOnꢀthisꢀ
result,ꢀtheꢀautomaticꢀdrivingꢀalgorithmꢀofꢀtheꢀcarꢀisꢀdesigned,ꢀandꢀtheꢀcontrolꢀcommandꢀisꢀsentꢀtoꢀtheꢀ
carꢀtoꢀrealizeꢀtheꢀpurposeꢀofꢀautomaticallyꢀavoidingꢀtheꢀobstacle.
Keyword:d
eepꢀlearning;Obstacleꢀavoidanceꢀalgorithm;RaspberryꢀPi;python
信的安全性 ;在物流运输方面的应用 :运用智能车辆进行物
0ꢀ引言
流运输工作,提高了货物运输效率,降低了搬运工人的强度,
同时能够避免有害物质对人体造成伤害。
智能车也被称为轮式机器人 ꢀ 是智能机器人的一个分
支,在排爆、救灾抢险探测 ꢀ 工程勘探、军事侦察和工农业生
产等领域有着广泛的应用。同时,汽车已进入千家万户,随着
汽车保有量的增加,交通安全事故发生率也在逐渐增长,己成
为一个急需解决的安全问题。经调查发现,大部分的交通事故
都是由于驾驶员操作不当所导致的。自动驾驶车能够很好的把
人从汽车的驾驶中解救出来,从而有效减少交通事故的发生。
如今,自动驾驶智能小车在许许多多的行业中都得到了
应用,在社会中扮演着重要角色,它的应用主要在以下几个
方面。在安全检测与受损评估方面的应用 :智能小车能完成
石油化工、道路、水利等多个领域的安全检测和受损评估工
作,此外,智能小车还能完成高空、地铁的灭火工作,废墟生
命探索和救援的工作。智能运输系统的应用 :减轻驾驶员的
工作量,缓解交通拥挤与堵塞,减少交通事故的发生,提高通
1ꢀ深度学习算法
1.1ꢀ深度学习的概念
深度学习由 Hinton 在 2006 年提出,其作为机器学习研
究的一个分支,重新点燃了人工神经网络的研究热潮,推动
了人工智能的发展。ꢀ 经过近 10 年的发展,深度学习领域有
了许多比较突出的科研进展。早在 2012 年,由斯坦福大学的
吴思达教授带领研究的谷歌公司的谷歌大脑就实现了能够
自动识别猫脸。国内的百度也于 2013 年成立百度深度学习研
究院。正是因为深度学习领域的技术突破,百度的语音和图
像产品迅速崛起,使得百度语音助手实现了“语音指令、语音
搜索、语音问答”等功能 [1]
。
基金项目 :2016 年云南省大学生创新创业训练计划项目(201610677023);2018 年云南省大学生创新创业训练计划项目
(201810677034)。
76
网络信息工程
2019.07
深度学习是神经网络、人工智能、模式识别、图形化建
像头,并获取摄像头图片进行分析。小车的驱动模块包括电
机和驱动板电机采用直流电机,驱动板采用的是 L298N 双 H
桥直流电机驱动芯片。智能小车的前进和后退可以利用双轮
转动来实现,而转弯可以利用单轮转动来实现。
模、信号处理等研究的交叉领域。深度学习通过模拟具有丰
富层次结构的脑神经系统 [2],建立一种类似于人脑的分层模
型结构,并利用该结构对输入数据逐级提取、学得规律,进而
利用所获得规律对未知数据进行预测。
2.2ꢀ软件设计
1.2ꢀ深度学习算法的实现
智能小车的软件架构设计包括小车获取数据,pc 利用
深度学习算法实现数据处理,给出合适的方向指令。pc 为控
制板树莓派,小车上开启 socket 服务器,用来获取摄像头数
据,并将图像数据发送给控制端,也用来接受控制端发来的
指令。同时,PC 上利用 motion 作为摄像头的上层管理系统 ,
用来随时查看小车摄像头的视频数据,并利用深度学习框架
处理图片数据,分辨出障碍物,再通过超声波传感器获取小
车与障碍物的距离,结合信息树莓派给出适合的方向指令。除
此之外,小车的驱动系统也需要 PC 的指令来控制小车的行驶。
深度学习的算法在第 2 节中已有详细的介绍,本次设计
将本组设计的实验室模型中的墙壁设置为障碍物,从不同角
度拍摄多张照片作为原信息,训练过程提取障碍物的特征,
本次设计设置的输出结果是前两行为图片的宽度和高度,然
后接下来,每行开始是识别出的物体类别,紧接着是这个物
体在图片中的左右边界。将摄像头拍摄的实时图片发送至树
莓派,利用构建好的深度学习框架判断出前方是否存在障碍
物,若不存在小车继续向前行驶,若存在就需要调用超声波
来测量小车与障碍物的距离,将超声波所测距离和之前设定
好的距离值进行比较。若大于设定值,则小车继续向前行驶 ;
若小于设定值,则小车调用电机右转 90°继续前进。
本文采用 python 进行编程实现,主要代码如下 :
importꢀRPi.GPIOꢀasꢀGPIO
假设我们有一个系统,记作 D,它有 n 层(D1,…,Dn),它
的输入是 I,输出是 O,那么我们可以将其形象地表示为 :Iꢀ
=>D1=>D2=>……=>Dn=>O。
如果输入 I 经过这一系统变化之后信息仍然保持不变,
即输出 O 等于输入 I,这意味着输入 I 经过每一层 Di 都没有
任何的信息损失,即在任何一层 Di,它都有原有信息,只是呈
现形式不一致。正如前面所介绍,深度学习需要自动地学习
特征,假设有一堆图像(即输入 I),我们设计一个有 n 层的系
统 D,为了输出仍然是输入 I,可以通过调整系统中的参数,
而每层所调节的参数就相当于输入 I 的一系列层次特征,即
D1,D2,…,Dn。所以说,深度学习的思想就是堆叠多个层,将
前一层的输出作为后一层的输入,每层都能学习得到一个特
定的特征表达,通过这种方式,就可以实现对输入信息进行
分级表达了。[3]
深度学习采用了与神经网络相似的分层结构,系统包括
输入层、隐层(具有多层)、输出层多层网络,每一层可以看作
是一个逻辑回归模型,隐层越多,学习到的特征更有用,从而
提升分类或预测的准确性,因此,很多学者认为“深度模型”
是手段,而“特征学习”是目的。
2ꢀ自动驾驶小车实现
2.1ꢀ硬件设计
fromꢀcollectionsꢀimportꢀOrderedDict
自动驾驶智能小车共包括四个模块 :电源模块、控制模
块、驱动模块(L298N 模块)、信息采集模块。[4] 各部分设计如
下所示。
classꢀCar:
def__init__(self,cf):# 这样生成的字典中元素按照
插入的顺序排列
self.out_mapping_port=OrderedDict()
self.read_config(cf)
self.stand_order=‘[ f_out1’‘, f_out2’‘, f_out3’,ꢀ
‘f_out4’]
defꢀread_config(self,cf):
“””读取配置文件映射端口”””
图 1ꢀ 自动驾驶智能小车部件结构图
ifꢀint(cf‘[ front_engine’]‘[ out1’])!=0:
forꢀkeyꢀinꢀcf‘[ front_engine’]:
控制的核心部件采用树莓派。树莓派是尺寸仅有信用卡
大小的一个小型电脑。本次设计将树莓派 2 作为核心控制部
件,树莓派板与 USB 摄像头相连,获取实时图片信息。树莓派
与 L298N 双 H 桥电路驱动芯片相连,通过控制电机的正反转,
进而控制小车的前进后退与转向。树莓派主要是通过 GPIO 口
(输入 / 输出端口)与硬件相连,从而进行数据交互,控制硬件
工作并读取硬件的工作状态信号。[5]
self.out_mapping_port[‘f_’+key]=int(cf[‘front_
ngine’][key])
ifꢀint(cf‘[ rear_engine’]‘[ out1’])!=0:
forꢀkeyꢀinꢀcf‘[ rear_engine’]:
self.out_mapping_port[‘r_’+key]=int(cf[‘rear_
engine’][key])
智能小车的信息采集工作依靠一个 USB 摄像头,USB 接
口的传输速度远远高于串口、并口的速度,内部可以设置信
号处理器,辅助寄存器可以用作缓存,且所需耗电量也少。摄
像头直接连接树莓派的 USB 接口,利用树莓派启用和控制摄
GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
forꢀkeyꢀinꢀself.out_mapping_port:
(下转第 117 页)
77
全部评论(0)