APP下载

树莓派3B+导盲系统设计与实现*

2020-07-13陈智利李庞跃

西安工业大学学报 2020年3期
关键词:树莓障碍物超声波

陈 鹏,陈智利,李庞跃,牛 恒,周 泉

(西安工业大学 光电工程学院,西安 710021)

据统计,中国拥有世界最大的盲人群体。2018年,我国视力残疾患者人数达到1700多万,每年新增盲人数量达到45万左右[1],盲人的出行问题越来越受到社会的重视。传统的导盲手段如手杖,其携带方便成本低,但其提供的信息有限,往往只能够探测距离较近、位置较低的简单障碍物。导盲犬的训练成本高,培养周期长,远远不能满足我国庞大盲人群体的需求[2]。近年来,计算机软硬件技术的快速发展,一些现代化的导盲手段不断被提出,为盲人的出行提供了更多的选择。文献[3]提出了一种包含GPS定位与超声波导盲的拐杖,可以为盲人提供位置信息,文献[4]设计了一款基于超声波的导盲眼镜,其体积小、便于携带,但其探障功能仅仅采用超声波,并不能很好的获取障碍物信息和环境信息。文献[5]提出了基于图像处理的导盲设备,采用传统图像处理方法构建分类器,能够识别红绿灯和斑马线,文献[6]通过灰度变换等图像处理方法能够对路面结构进行分析,可以有效提取路沿信息,引导盲人在正确的道路上行走。上述基于图像的导盲系统很好的避免了由单超声避障带来的缺陷,但不足的是只能够识别某些特定的场景信息,鲁棒性不强。为了解决盲人在小区等结构化道路上的出行问题,以及上述设备中的不足之处,本文基于树莓派3B+设计了一款包含导航、避障、一键呼叫、语音播报等功能的导盲系统,整套系统由盲人采用小挎包进行背负,极轻的重量不会给盲人产生负担,能够更好的方便盲人出行,解决盲人生活中的实际困难。

1 系统工作原理与设计方案

1.1 工作原理

系统通过GPS模块对盲人实现定位[7],将位置信息通过3G模块传到服务器,通过语音模块获得盲人所说的目的地信息,在服务器上通过由高德地图API改制的地图软件生成导航信息,将导航信息发送至树莓派,并语音播报至盲人。在盲人按照导航指令行走的过程中,避障模块工作,一个超声波传感器用来探测前方的障碍物距离信息,另一个超声波传感器探测由盲人手持,用来探测所需方向的障碍物距离信息。与此同时,摄像头间隔采集前方图像信息,用来探测超声波模块无法准确探测的环境信息,给盲人提供全方位的保障。

1.2 硬件设计

系统的核心主体为树莓派3B+,树莓派是由英国树莓派基金会研发的一种只有卡片大小的单板机电脑,具有优秀的扩展性和易于开发的特性,并且随着其版本的一代代更新,其计算能力也在逐渐增强。本文所使用的树莓派3B+为64位四核ARM处理器,主频为1.4 GHz,运行内存1 GB,搭载官方的Raspbian系统,其计算能力相当可观,可以用来处理较为复杂的计算任务[8]。定位模块由GPS传感器ATK1218-BD组成,通讯模块由3G模块组成,避障模块外部传感器由两个HC-SR04超声波传感器和一个500万像素的树莓派摄像头构成,系统整体结构如图1所示。

图1 系统整体结构

本文主要研究导盲系统中的避障模块,即通过超声波传感器和摄像头探别前方障碍物信息,通过内置软件进行处理,生成避障信息,并语音播报至盲人,引导盲人行走。对树莓派安装相关支持数据,安装相机后,需要使用配置工具激活摄像头,并配置OpenCV库来调用和控制摄像头[9],配置Tensorflow进行图像识别,所有软件均使用Python开发。

1.3 避障模块原理

超声波测距的公式Od=v·t/2,其中v为声音在空气中的传播速度,约为340 m/s,t为声波发出去到接收到声波所用的时间[10]。本文采用HC-SRO4超声波模块,其超声波从发出到接收所需的时间即为指引脚的高电平时间。

卷积神经网络是近几年兴起的进行图像识别与分类的方法,在其出现之前,人们多用SIFT和HOG等算子来提取图像特征,再结合SVM等机器学习算法来进行图像分类和识别,但SIFT算法是有其局限性的,需要进行繁琐的数据操作。而卷积神经网络可以直接使用图像的原始像素作为输入,通过卷积操作可以提取图像的各种特征,再进行网络训练,自动提取最有效的特征。简单的卷积神经网络包括卷积层,池化层,非线性激活层,全连接层,在全连接层后面通常连接Softmax层来进行分类,通过反向传播对代价函数的优化以达到选择最优参数的目的[11-12]。

由于树莓派的计算能力有限,网络不能过于复杂,网络采用经典卷积神经网络设计。网络参数在电脑上进行训练,将保存好的训练模型移至树莓派进行图像识别。

2 软件设计及测试分析

2.1 超声波模块

超声波模块包括两个超声波传感器,在程序中对各引脚做出定义,其中Trig引脚为S,Echo引脚为R,将两个超声波的Trig引脚和Echo引脚初始化为低电平。超声波模块核心代码为:

def HCSRO4(S,R):

GPIO.output(S,GPIO.HIGH)

Time.sleep(0.000015)

GPIO.output(S,GPIO.LOW)//Ttig引脚持续发射15毫秒的超声波

While GPIO.input(R)==0:

t1=time.time//记录Echo引脚为高电平的时间t1

While GPIO.input(R)==1:

t2=time.time//记录Echo引脚为低电平的时间t2

distance=(t2-t1)*340/2*100//计算距离

树莓派对Trig引脚发射一个持续15 ms的脉冲,超声波模块会发射一个持续15 ms的超声波,记录检测到Echo端口高电平的时间t1,检测到其为低电平的时间t2,(t2-t1)即为超声波传播的时间,带入距离公式d=v·t/2中,即可得到前方障碍物的距离。

2.2 摄像模块

本文将盲人在路上行走所遇到的场景简单分为四类,如图2所示。分别为图2(a)所示的前方路上无障碍物,可以行走,图2(b)所示的前方为斑马线,图2(c)所示的处在路边,图2(d)所示的前方有行人或车辆,需要谨慎行走,并提醒盲人注意避障信息。

图2 场景分类

在程序中导入Opencv模块后,利用VideoCapture函数来调用摄像头,用Read函数获得图像.但由于网络计算耗时较长,而Read函数只能一帧一帧的来读取,因此将VideoCapture函数和Read函数放到图像处理函数内部,即每执行完一次图片预测,再重新打开摄像头,取出当前帧作为网络的输入,由于摄像头刚打开时前几帧图像质量较差,因此需要舍去前几帧图像。摄像头采集的图片分辨率为640×640,需要对图片进行预处理,利用Resize函数将其改为32×32大小后再发送神经网络,以减少计算量。

网络结构如图3所示,每个卷积层都包含卷积,池化和非线性激活,其中卷积核大小都为3×3,步长为1,池化层大小为,将数据量减小为原来的一半。网络的输入是1张RGB三通道图片,设置第二层节点数为64,第三层节点数为32,第四层节点数为16,其后全连接层的隐含节点数为128,最后一层为Softmax回归层,将输入图片分成四类,整个学习过程学习率均为0.0001。

通过拍摄某高校道路场景,共收集每类图像三百张,共一千二百张作为训练集,另有每类图片五十张作为测试集。先在电脑上进行训练,共迭代了2 500次,损失函数与准确率曲线如图4所示。

从图4中可看出,在迭代2 100次后损失函数趋近于0,准确率也接近于1,说明模型各参数已经训练完成。训练完成后得到四个文件,将其拷贝至树莓派后,将Checkpoint文件中的地址改为Raspbian系统下刚刚保存的地址即可在树莓派上运用该模型。

图3 网络结构图

图4 损失函数和准确率

2.3 测试及分析

在某高校内道路上对系统进行整体测试,在通过斑马线时,树莓派的输出见表1。测试中发现图像模块识别较慢,并会与超声波模块发生冲突,通过给两个模块分配不同的线程,运行时间大幅减少,超声波模块和摄像头模块也可以同时运行。

图像模块的测试中,每类图片的测试集包含50幅图像,测试结果见表2。从表2中可看到,对于斑马线这类特征明显的图像识别率较高,而在实际测试中由于特征比较相似,前方无障碍物与处在路边容易混淆。限于树莓派3B+的运算速度以及网络复杂度,识别单幅图片平均耗时为10.6 s。

表1 整体测试结果

表2 图像模块测试结果

3 结 论

本文以树莓派3B+为主体,设计了一款包含导航、避障、一键呼叫、语音播报等功能的导盲系统,并针对其中避障模块进行了软硬件设计,避障模块通过两个超声波传感器实现对近处障碍物距离进行探测,而通过图像模块获取并分类前方环境信息。最终携带设备在校园道路上实际测试表明,超声波模块可以识别前方0.02~3.5 m处障碍物的距离信息,而图像模块对前方场景的识别正确率为89%,平均耗时10.6 s,两模块能够并行运行。表明在树莓派上运行神经网络为盲人实现导盲的可行性,为整体导盲系统提供了可靠的基础。随着卷积神经网络的改良和树莓派运算速度的提升,在不久的将来,该系统或许能够在更短的时间内识别更多的场景。

猜你喜欢

树莓障碍物超声波
超声波诊断甲状腺结节的临床应用观察
基于焊缝余高对超声波探伤的影响分析
高低翻越
赶飞机
基于树莓派的骑行智能头盔设计
月亮为什么会有圆缺
蝙蝠的超声波
黄金水果红树莓
蝙蝠的超声波
e络盟率先推出第三代树莓派