基于树莓派的导盲器设计
2020-12-28任泽影高熙吕毅飞柴文章陈晓范
任泽影 高熙 吕毅飞 柴文章 陈晓范
摘要:该系统是基于单片机的超声波测距系统,它根据超声波在空气中传播的反射原理,以超声波传感器为检测部件, 应用超声波在空氣中传播的时间差来测量距离。另有语音播报功能等。主要由测距系统和语音播报系统,识别系统,报警系统,自动化控制,五个主要模块构成。语音系统发出警示音,提醒使用者前方障碍物需躲避等等。使盲人在看不见的情况下,能够识别前方的障碍物正常的行走,从而起到保护盲人安全的作用。
关键词:智能避障;超声波测距;数据处理
中图分类号:TP3 文献标识码:A
文章编号:1009-3044(2020)31-0246-02
1绪论
1.1导盲器来源
残疾人是社会中主要的弱势群体,他们要面对更多的困难和压力。近些年来,社会和政府越来越关注弱势群体,给予盲人的关怀也越来越多。
1.2 导盲器目的和意义
盲人导盲预警系统的运用可极大地减轻盲人的行走不便与安全隐患,降低且避免因盲人不辨障碍而导致的事故的发生,同时对提高人体智能化设计起到重要的意义。
平衡车的设计,实现平衡车的无人运行;扫地机的设计,路线的优化,促进了智能家居向普通家庭的步入,提升了普通百姓的生活质量。
2 智能导盲设计
为了方便实现导盲功能,本团队将导盲系统和小车组装,以实现小车的无人行走来设计导盲功能。后续还会组装在人的身体和衣服等。
2.1系统软件设计思路
树莓派用的python,所以我们也使用python。
使用超声波测距传感器,单片机在接收到传感器的信息后,将传感器的信号转换为距离信息,通过语音播报提示,小车接收信息后,实现避障功能(盲人听到语音播报以后,以实现拐弯动作)。
2.2 算法分析
要想从A点传递到B点,主要就是搞定单片机的运算功能。本团队特别模拟了两个单位(目前只做平面处理,上下楼梯与消耗的电能成正比,usb摄像头对图像的识别能力不够,不能明显识别楼梯的步数,所以目前不考虑)。假设借鉴了行车记录仪来做处理,假设从A点到B点,先要直走50m,在左转弯行走150m,在右转弯行走10m。通过行车记录仪做距离处理,一走到50m,就立马语音播报,进行转弯。后续还会使用GPS来做定点处理,无论走的哪里去,都能找到回家的路。行车记录仪对数据的处理能力更精确,树莓派自带计时功能因为设计到各种延时模块,会导致计时的难度大大提升。行车记录仪记录数据,动的时候计时,不动的时候停止计时,转弯的时候重新计时,两组进程分开,误差更小。但是对于盲人而言,不需要科学上那么严密的计算,所以后续中程序的运行偏差会很大。
储存功能的实现,可以将A移动B的所有数据进行封装,存储在文件中。
2.3 转弯算法分析
由于本人的学识能力有限,我们只考虑左转弯,右转弯。假设将左转弯设为1,右转弯设为0,时间加单位s,这样读数据的时候就不容易报错。
3 小车的组装和硬件的介绍
按照树莓派小车的设计,在淘宝上买好各种组件,组装成小车。
3.1摄像头的安装
小车前部安装一个USB摄像头,摄像头可以做一些数据的模糊分析,主要道路的选择,以及用于识别马路红绿灯,危险路段的路标。
USB摄像机是采用USB接口的安防摄像机,即插即用,傻瓜式操作,无须采集卡,无须电源,免拆机箱、支持笔记本电脑。选取品怡(Bejoy)USB语音通话补光灯摄像头台式机笔记本电脑摄像头,价格29元适合USB供电。
3.2语音播报模块
这里需要给树莓派安装播放器,本人选择的是MPV播放器,安装命令,sudo apt-get install mpv ;测试是否安装成功,可以在命令行中测试 mpv./song.mp3 是否播放正常。
借鉴csdn的树莓派智能家居-天气预报和实时温湿度监控。
由于树莓派自带播放器不好用,固还需要购买蜂鸣器。蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电。
3.3超声波测距模块
本次设计选择HC-SR04作为放大器。超声测距部分是利用超声波在空气中传播时遇到障碍物返回的特点来实现测量距离的目的。根据超声波从发射到接收到回波的时间以及此时的声速就可以计算出障碍物的距离。由于超声在空气中传播有衰减,加上环境以及电路本身的噪声干扰,测量距离有一定的上限,超过上限距离的障碍物的回波将无法检测到;同时由于发射超声波对接收超探头的影响,测量距离存在下限,低于下限距离的障碍物回波将无法与干扰信号区别开。系统测量的就是介于上限与下限距离范围的障碍物信息。当检测到障碍物时,系统会通过语音模块发出告警信号。
3.4报警器模块
报警模块主要是当树莓派检查到危险情况的时候,中断执行语音播报模块。还有就是使用者自己想通过按钮去中断执行别的程序。按钮触动开关引起的报警因为在测试中毫无意义,反而还会增加程序的量,固暂不考虑。
3.5 定时模块
linux系统里支持定时任务,所以crontab -e 命令可以满足我们的要求。定时器主要用于计时,从a到b需要多少秒,将这些数据储存在文件中。
4 实现操作
4.1 语音播报的实现
树莓派使用ilangbd库进行python进行中文文本转语音。
安装代码请参考csdn中使用ilangbd库进行python进行中文文本转语音。
4.2 Usb摄像头识别功能
识别功能主要就是cv2和dlib。为了能够更好地实现此工程,导入树莓派的镜像可以直接使用别人安装好了的。
为了研究方便,本实验借鉴人脸识别的操作。如下所示:
│├──data_dlib#Dlib的模型
││├──dlib_face_recognition_resnet_model_v1.dat
││├──shape_predictor_5_face_landmarks.dat
││└──shape_predictor_68_face_landmarks.dat
│├──data_faces_from_camera#从usb摄像头捕获的面部图像
││├──图像_1
│││├──img_face_1.jpg
│││└──img_face_2.jpg
││└──图像_2
││└──img_face_1.jpg
││└──img_face_2.jpg
图像最好是越多越好,我们为了实现报警,只做了红绿灯的识别,和一个危险路标的识别。
│└──features_all.csv#CSV,用于保存已知图片的所有特征
提前可以将马路灯,危险路标录进去,方便以后做特征处理。
4.3识别路线功能和报警功能
识别路线等同于人脸识别模块
├──简介#一些readme.rst文件
│├──Dlib_Face_recognition_by_coneypo.pptx
│├──face_reco_single_person_customize_name.png
│├──face_reco_single_person.png
│├──face_reco_two_people_in_database.png
│├──face_reco_two_people.png
│├──get_face_from_camera_out_of_range.png
│├──get_face_from_camera.png
│└──overview.png
├──README.rst
└──requirements.txt
報警功能就是当检查照片特征等于危险地带照片的特征时候,语音播报提示使用者,达到报警功能。
还请注意,此模型文件设计用于dlib的HOG人脸检测器。也就是说,它期望面部检测器的边界框以某种方式对齐,即dlib的HOG面部检测器的对齐方式。当与会产生不同对齐框的面部检测器一起使用时,效果会不佳。
4.4文件的存储功能
将小车加速度设置为定值,当速度到达一定值是时候,速度成为等值;减速相同,所以小车的v-t图像成等腰梯形。
假设要运动的直线路程为100m,中间速度为10m/s,加速度为10,可计算出等腰梯形的两个三角形面积为10,所以中间用时为9s。
实际生活中,由于舵机不是靠恒加速度上去的,但是原理一样。我们可以测量他达到恒速度所用的时间和位移,所以知道他恒速度需要走多长。将这类值储存在文件中,等待程序的读取。
4.5 小车行动模块
# 左转函数
def left():
GPIO.output(IN1,False)
GPIO.output(IN2,False)
GPIO.output(IN3,GPIO.HIGH)
GPIO.output(IN4,GPIO.LOW)
# 右转
def right():
GPIO.output(IN1,GPIO.HIGH)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,False)
GPIO.output(IN4,False)
# 前进
def go():
GPIO.output(IN1,GPIO.HIGH)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,GPIO.HIGH)
GPIO.output(IN4,GPIO.LOW)
# 停止
def stop():
GPIO.output(IN1,GPIO.LOW)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,GPIO.LOW)
GPIO.output(IN4,GPIO.LOW)
5 总结和不足
本文两个方面,图像的模糊识别和处理和单片机小车的路程规划,在小车(人)的行驶中,又涉及语音提示避障(对于人而言)、小车自动避障。而强大的导盲器可作用于各种领域,航天方面,导盲器可实现实现远程操作,探索路线,传输视频画面;运输方面,小车可以运输快递等等。 此次设计的导盲器为老人提供了科学、有效的独立帮助,为老人提供了摸索路线的依据,是一个非常有实用价值的创意。
科学计算的精确度要求高,可实际生活中,路面不可能一直是平的,当小车行驶在凹凸地段,v-t图像必将产生波动变化,小车转弯的度数也没做处理。Usb传递的图像识别能力不强,超声波测距容易受到干扰,还有各种隐患问题都没处理。
参考文献:
[1] 鲍捷,陈洪斌,欧仁侠.基于单片机的新型导盲器的设计与应用研究[J].电子制作,2017.
[2] 鲜大武.触摸式取暖器的设计[J].中国新技术新产品,2011(11).
[3] 蒋胤冰,朱智,李漫漫,等.基于STC89C52单片机的智能婴儿床设计[J].江苏科技信息,2018.
[4] 李筱雅 ,高寒 ,张璐璐,等.基于单片机的超声波导盲系统[J].电子世界,2016.
【通联编辑:朱宝贵】