基于树莓派的智能小车系统

2019-07-16 03:17刘胜金周海燕杨溢凡张雨婕黄铭志张怡杰
电脑知识与技术 2019年14期
关键词:树莓派机器视觉

刘胜金 周海燕 杨溢凡 张雨婕 黄铭志 张怡杰

摘要:随着社会的发展,盲人的生活状态也渐渐被人们所关注,尤其是在出行方面,实际可供盲人使用的盲道非常少,要么盲道被其他物品占用等,造成盲人出行的障碍大大加重。针对这种情况,设计了一个,调用科大讯飞云服务接口实现在Android上进行语音识别与合成,接收盲人的语音信息,调用高德地图进行位置信息获取,再根据机器视觉识别路况和超声波识别路障,通过树莓派的控制,语音震动提醒盲人的智能小车系统。基于树莓派的智能小车系统,实现了语音指令控制、语音播报结合握柄震动,有效帮助视觉障碍者安全便捷出行。

关键词:树莓派;讯飞开放平台;机器视觉;智能避障;高德地图

中图分类号:TP242.6        文献标识码:A

文章编号:1009-3044(2019)14-0158-03

Abstract: With the development of society, the blind life has gradually been concerned by people. Especially in terms of travel, the number of road that can be used for the blind is becoming less and less, or the blind road is occupied by other items, causing the blind travel greatly with heavy obstacles. In order to solve this problem, one is designed. The speech recognition and synthesis on Android is realized by HKDA ,receiving the voice information of the blind. The location information is obtained by calling the Auto Navi Map. And then the traffic status is identified according to the machine vision recognition and the ultrasonic wave recognize the roadblock. Through the control of raspberry pie, voice and vibration alert blind. Intelligent car system based on raspberry pie, realizes the combination of voice command control, voice broadcast and handle shake, which can help blind to travel safely and conveniently.

Key words:raspberry pie; Xunfei open platform; Navi Map; machine vision; Intelligent obstacle avoidance

隨着社会的发展与进步,设备“智能”化已然成为社会发展的一个潮流。智能设备在实际中运用,代替人们去完成各种各样的任务,可以大大的节省时间,释放劳动力,创造更多的价值。

在国内,视觉障碍者出行主要是靠拐杖和盲道,但是盲道仍存在很多问题,如盲道少,盲道被占用等等问题,同时,安全保障也是一个大问题。综合国内外研究情况,随着导盲仪器的研发不断深入,也有不少成品已经投入使用,其中一些仪器设备功能单一,智能化低,不能满足视觉障碍者安全出行的要求,另一类导盲仪器设备价格昂贵,对于绝大部分的视觉障碍者来说,没有雄厚的经济能力,根本负担不起。

利用物联网比较流行的树莓派模块作为主控制器[1],连接Android获取地理位置信息,

对于视觉障碍者来说,急需一种便捷、安全可靠,价格又能适中的导盲辅助设备。多功能的智能导盲工具,对危险路况进行分析和警示,实现语音指令控制、语音播报结合握柄震动,帮助视觉障碍者安全便捷出行[2]。

1 设计方案

系统的设计主要分为两大步骤,第一步对Android端进行设计,第二步对树莓派控制端进行设计。

Android端采用后台服务的状态运行,并通过蓝牙与树莓派主控芯片进行实时信息交流;调用科大讯飞语音接口,完成语音识别合成编程;利用高德地图实时获取当前经纬度,并通过地理反编码解析出目的地的经纬度,一并发到主控芯片进行处理;通过Sensor获取手机当前的方向,用作于当前航向,同样是通过蓝牙传送到树莓派端进行处理。

树莓派控制端,通过蓝牙模块接收Android端传来的信息,并进行字符串解析,恢复出想要的信息或者指令,并通过当前经纬度与终点经纬度计算出目标航向,将目标航向与当前航向对比,决定导盲车的行走方式;对L298N驱动模块进行控制车的行动速度;握把震动提醒采用1027微型震动马达,将马达放在握把的不同方位,来提醒使用者当前状态。使用OpenMV Cam摄像头对导盲车行驶路径进行路况处理,依托OpenMV Cam上的处理器,运行机器视觉算法,并通过超声避障模块来判断前方是否有障碍物。整体系统框图如图1所示。

2硬件设计

2.1驱动模块

L298N 是双H桥驱动芯片,每个H桥可以提供稳定的2A的电流,瞬间峰值电流最大可达3A,可以直接用树莓派处理器的IO口提供信号,这样就可以保证导盲车驱动正常。本设计需要驱动拥有四个电机马达导盲车,所以驱动模块采用的是拥有两块L298N芯片双L298N驱动模块。

2.2避障模块

采用机器视觉进行导盲的优点是检测范围广,识别的信息多,然而缺点就是检测路况速度慢、对软硬件要求很高。在实际的路况信息采集过程中还需要辅助另外的传感器。使用超声波测距模块,模块预留了4个管脚,分别是接5V的电源VCC管脚、接电源地GND管脚、与树莓派处理器IO口连接的电平触发脚和信号接收脚。

2.3微型振动马达

微型震动马达的主要用途是:通过震动提醒使用者,车的动作,如左转,右转,直行还是停止等。方案中采用的是1027微型直流震动马达,其驱动简单,震动力足,性能稳定。1027马达的额定电流为70mA,最大启动电流为90mA;它的额定电压为直流3.0伏,工作电压范围为直流2.5伏-4.0伏;转速约为12000加减2500。五个震动马达在握把上的放置位置如图3所示。

3 软件设计

3.1航向角的计算

航向角主要有两个,一个是当前航向角,一个是终点航向角。当前航向角由Android端获取,即手机当前的航向角,通过蓝牙传输给树莓派接收处理。终点航向角需要根据当前的经纬度和终点的经纬度计算得出,这一步的操作在树莓派程序中计算完成。

通过计算纬度渐长率差(目标点的纬度渐长率与当前纬度渐长率之间的差值,所谓的纬度渐长率是:某一点的纬度线到赤道的距离/1赤道海里长度),结合反正切等三角函数转换计算得出相对角度,也就是一点相对于另一点的方向即航向角。

还需要注意的是正北方向為0度,顺时针为正方向,逆时针为反方向,最终需要角度的范围是0度-360度。

设终点航向为end_angle,当前航向为now_angle,D_angle= now_angle-end_angle,则车行走时的方向判断如下:

车左转: (D_angle>=15&&D_angle<=180)||(D_angle<=-180);

车右转:(D_angle<=-15&&D_angle>-180)||(D_angle>180);

车直行:(-15

3.2获取方向

获取的手机方向当做车当前的行走方向,通过蓝牙传输给树莓派处理。对于方向获取,采用了地磁传感器和加速度传感器共同获取的方法。需要对如下几个类进行操作。Sonser:传感器;SonserManager:传感器管理类;SensorEvent:传感器事件,SensorEventListener:传感器事件监听接口。

当获取到地磁传感器的数据和加速度传感器的数据时,通过SensorManager中的getRotationMatrix方法将magnetic和acceler计算出旋转矩阵存入方法里的第一个参数中。再通过SensorManager中的getOrientation()方法读取到手机的方向存入value1浮点型数组中,取数组的第一个数值就是航向角。

3.3避障程序设计

避障设计方法是初始化GPIO以及超声波,发送触发电平,读取返回电平,然后计算障碍物的距离,计算的距离大于0.5米,则前方有障碍物,否则无障碍物。本部分通过对树莓派进行编程,实现利用超声波模块进行避障程序算法的实现。

树莓派处理器先设置一IO口输出为高电平,发送一段持续时间为10us的高脉冲电平,送到避障模块的触发端口,再将树莓派处理器的IO口设置为低电平[5]。这时,避障模块就通过数据输出端口返回一个信号,再通过树莓派处理器接收从避障模块返回的信息。由于导盲车一直在运行,发射端的位置一直在改变,为了使得所测得的数据可靠性更高,取五次所测得收发过程所需的时间,通过音速在空气中为固定的参数,取五次的平均值,就可以得到非常准确的距离。

3.4机器视觉算法

OpenMV Cam是一个可编程的摄像头,模块内置了一些图像处理算法,通过使用MicroPython语言进行编程,通过调用现成的函数库,不需要自己编写解码函数,可以实现机器视觉的逻辑,非常适合本系统设计的机器视觉算法实现。

3.4.1 交通灯识别算法实现

通过对OpenMV Cam进行程序设计,完成对交通灯识别算法的实现。

从人类的眼睛的视觉效果来说,可以将颜色通过RGB,CMYK,Lab色域,HSB来描述。相比较其他颜色来说,不像RGB和CMYK,Lab颜色被设计用来更接近人类视觉[6]。

本部分识别算法采用Lab色域,在机器视觉算法处理中通过改变L的值调整亮度对比,通过修改a的值或者b的值来改变色阶来做的颜色的精准平衡。

在算法程序运行前,需要设置图像格式与像素大小,然后跳过10帧所采集的图片为了获得稳定的图像,避免干扰,关闭OpenMV Cam的白平衡。

在设置完这些参数之后,就需要OpenMV Cam不停地寻找交通灯的颜色,在找到目标颜色之后,在判断是否是交通灯的形状,直到寻找到交通灯[7]。

3.4.2 人行横道识别算法实现

众多周知行人在通过车道时,行人应该沿着人行横道通过,盲人也不例外。实现了对人行横道的识别算法实现,通过将整个画面分割为若干的检测区域将人行横道斑马线分成很多部分检测,并分析设定出每个区域不同权值。距离导盲车越远的,所设定的检测人行横道区域重要性越高,根据所需求来设定不同的权值,然后调用OpenMV Cam内置的函数,找出每个区域是否都有斑马线存在,从而判断出前方是否为人行横道。

4 结语

基于树莓派的智能小车系统,可以通过Android平台,接收语音信息,进行语音的识别,同时调用高德地图进行GPS位置信息获取,然后将信息发送给控制器。控制器通过摄像获取路况信息以及超声波识别障碍物信息,计算出航向以及路线,通过语音反馈给用户,然后语音加震动提醒用户安全行走,起到了智能导盲的作用,为盲人的出行提供方便,具有较好的实用性。

参考文献:

[1] 何海燕.基于树莓派的智能家居系统设计与实现[J].中国高新技术企业,2016(17).

[2] 卢天增. 基于Android的智能机器人交互技术研究[D].中国海洋大学,2015.

[3] 飔.语音识别技术:人机交互方式3.0时代[J].软件工程师,2010(10).

[4] 蒋东国. 基于Android平台语音识别系统的研究与实现[D].广东工业大学,2016.

[5] 戈惠梅,徐晓慧,顾志华,等.基于Arduino的智能小车避障系统的设计[J].现代电子技术,2014(11).

[6] 谷明琴,蔡自兴,李仪.应用圆形度和颜色直方图的交通信号灯识别[J].计算机工程与设计,2012(1):243-247.

[7] 王鹏,郑光宇,宋开亮.一种新的基于图像识别技术的信号灯识别算法[J].兵工自动化,2009(3):73-75.

【通联编辑:唐一东】

猜你喜欢
树莓派机器视觉
智能安全防盗探测小车
大场景三维激光扫描仪在研究生实践教学培养中的应用
基于嵌入式技术的农村医疗系统设计