刘志宏1,陈伯康1,张东轩1,郑骞1
摘 要:中国的盲人和低视力患者将近1800万,而盲人的日常出行还存在很多的问题,导盲犬的培训周期长,难以满足广大的盲人群体,通过对市场上现有盲人辅助产品的了解,以及盲人群体的日常出行需求,针对性的开发导盲机器人,用来满足盲人以及低视力患者的需求。通过对机器人的底盘,视觉,传感器以及物联网等部分的开发,将各部分联动形成完整的导盲机器人。导盲机器人可通过避障以及视觉对危险的判断检测来引导盲人前进,通过物联网模块上传数据并对导盲机器人的状态进行实时的追踪。
关键词:导盲机器人;残疾人;导盲;出行;机器视觉;物联网;传感器;避障。Multifunctional blind guiding robot
Chen Bokang,Liu Zhihong, Zhang Dongxuan, Zheng Qian
Abstract:There are nearly 18 million blind and low vision patients in China, but there are still many problems in the daily travel of the blind, the training cycle of guide dogs is so long, and it is difficult to meet the vast number of blind people, through the understanding of the existing auxiliary products for the blind in the market and the daily travel needs of the blind group, The blind guiding robot is developed to meet the needs of the blind and low vision patients. Through the development of the robot’s territory, vision, sensors and the Internet of things, all parts are linked to form a complete guide robot. The blind guide robot can guide the blind forward through obstacle avoidance and visual hazard judgment and detection, upload data through the Internet of things module and track the state of the blind guide robot in real time.
Keywords: Blind guiding robot; Disabled; Guide blind; Travel; Machine vision; Internet of things; Sensor; Obstacle avoidance.
盲人等弱势群体在中国是一个庞大的群体,而在盲人的日常生活中,简单的出行对他们来说也是一个巨大的挑战,根据相关的统计约有30%的视障者无法自由外出,对他们来说,外面的世界存在着许多未知的风险。而对于盲道等设施,大多数的城市的盲道都存在着许多的不足和隐患;另外,而对于盲人出行的帮手导盲犬来说,导盲犬的训练周期长、消耗大、培养成功的导盲犬数量少等问题无法忽视;对于现有的导盲拐杖等产品,其结构简单产品强度较差,且价格较贵,对于导盲机器人的研究来说大多数的机器人仅通过超声波以及红外模块对其进行避障,安全问题未得到有效的保障。这些问题无法有效地解决就无法使得盲人等弱视群体拥有和正常人一样的生活,这对于盲人来说,无论是经济还是心理都是不小的伤害。
对于本文中设计制作的导盲机器人通过搭载视觉模块再加上各种传感器的辅助,对路上的危险情况以及红绿灯的判定,以及通过物联网将GPS定位信息以及机器人搭载的各种传感器收集到的信息上传至云平台,可以实现对盲人等弱视人群的安全进行监控。通过对导盲机器人的运用,可以更好的解决盲人以及低视力人群的出行问题。
1 导盲机器人系统设计
本文制作的导盲机器人主要由三大部分构成,分别为机器人底盘、视觉模块、物联网模块。
图1 工作流程图
Fig.1 Work flow chart
1.1 机器人底盘
导盲机器人地盘为履带式地盘,履带式地盘相比于其他的地盘来说,对于不同环境下地形的适应性更强,底盘配备了十二伏直流减速电机,动力强劲,转弯灵活且行进稳定,保证了导盲机器人搭载的各个模块的正常运作。
1.2 视觉模块
导盲机器人的视觉在树莓派上进行实现。
1.2.1 树莓派环境配置
(1)下载所需要的树莓派系统
(2)下载格式化磁盘软件,将磁盘格式化
(3)完成安装并进行U盘格式化操作
(4)将树莓派的内存卡插在电脑上,打开软件
(5)下载etcher,将系统导入到内存卡中
(6)python库的安装
(7)OpenCV3.4.1安装
(8)安装构建OpenCV的相关工具;
1.2.2 基本设计概念和处理流程
基于树莓派的人物追踪系统主要基于搭载有四核ARMCortex-A53 1.2GHz型CPU、1GB大小RAM芯片的3代B型树莓派,并配有1个卡带式树莓派摄像头、1张16GB大小的SD卡,同时还带有一个充电宝作为DC 5V/2.5A的电源输入。而小车则主要有电机、底板、橡胶轮和测试用的树莓派组成。当小车上电后,小车便自动开启跟随功能。小车的摄像头会对准用户,当人物开始移动时,小车的摄像头会始终跟随用户并锁定,以防止目标发生错乱,并且小车在移动过程中,会始终距离用户1米左右的距离,以便用户的活动,同时又能确保小车不会跟丢用户。若用户开始加速移动,小车根据pid算法的计算也会做加速度不恒定的加速运动,在此过程中,小车会不断根据小车距用户的距离来调整自身的速度直到距离恒定为1米为止。当小车在跟随的过程中检测到行进路上有障碍物时,会自动调整方向以绕开障碍物,并加速跟上用户。当小车检测到用户有大幅度的拐弯时,小车会加速前进,将用户与小车的距离缩短至0.5米以防止跟丢目标。
1.2.3模块的划分和相关技术的运用
基于树莓派的人物追踪系统及其小车实现主要设计了OpenCV视频图像处理模块、人物距离测定模块和车体控制模块三个模块。在小车工作期间,OpenCV视频图像处理模块主要负责处理摄像头视频流,并获取相关信息。人物距离测定模块主要负责捕获周围的环境信息并测定小车与用户之间的距离,车体控制模块则负责处理OpenCV视频图像处理模块和人物距离测定模块所传来的信息,并将之转化为电机驱动信息,驱动小车前进,实现小车的跟随。图一介绍的是模块的划分以及与外部的联系。
1.2.4基于OpenCV的人物特征值提取技术
为了防止小车的跟随目标发生混乱,小车必须通过处理摄像头传来的视频流获取人物的相关信息并锁定,基于树莓派的人物追踪系统采用了基于OpenCV的人物特征值提取信息来完成任务的识别锁定。当小车开始工作时,树莓派摄像头会不断的捕获图像形成视频流并传给OpenCV视频图像处理模块。当OpenCV模块接收到外部传来的视频流后,会以帧为单位去处理视频流,每次处理一帧图像,并通过基于OpenCV的人物特征值提取技术提取出用户的特征值。图二是特征值提取的基本流程。
基于OpenCV的人物特征值提取技术主要又分为两部分:兴趣部分识别技术和人物边缘提取技术。下文将详细阐述两个技术。
(1)兴趣部分识别技术
掩膜处理是进行图像处理的常用方法之一,主要是用选定的图像、图形或物体,对待处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程。目的是为了提取感兴趣区,用预先制作的感兴趣区掩模与待处理图像相乘,得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。兴趣部分识别技术就是基于掩膜处理技术。为了提取图像中的任务信息,必须对每次截取的一帧图片进行掩膜处理。在接收到一帧图像后,基于OpenCV的视频图像处理模块会调用OpenCV中的颜色空间转换函数:
cv.CvtColor(img,hsv,cv.CV_BGR2HSV),
颜色空间转换函数会自动将RGB的原图像转化为HSV型的图像,在转化完成后,模块会调用OpenCV函数库中另外一个用于掩膜处理的函数:
cv.InRangeS(hsv,lower_blue,upper_blue,mask),
函数会对已经生成的HSV型图像进行遮掩处理,通过参数的调整只保留感兴趣的部分,并将其值设为1,这样也能同时完成保留图像的图像二值化,为后面的人物边缘提取操作打下基础。
(2)人物边缘提取技术
腐蚀和膨胀是对图像处理的另外一种手段,对图像采取腐蚀和膨胀处理主要是为了消除噪声、分割出独立的图像元素以及在图像中连接相邻的元素。其视觉效果便是使高亮区域更大或是更小。对于腐蚀来说,就是让高亮区域更小,即被将处理的二值图像中的每一个点与结构元素中的中心点进行重合比较,若结构元素中的高亮点都在二值图像的高亮点内,则该点设为高亮点。而对膨胀来说,就是让高亮区域更大,基即将被处理的二值图像中的所有点与结构元素中的中心点重合比较,结构元素中的高亮点只要有一个落在被处理的二值图像的高亮区域中,则该点就设置为高亮点。人物边缘提取技术就基于腐蚀和膨胀这两种算法。在完成了对图像的掩膜处理后,输出的图像首先会被进行腐蚀处理,其主要目的是获取人物的边缘轮廓,基于树莓派的人物追踪系统会调用OpenCV函数库中的腐蚀函数:
cv.Erode(mask,eroded,element,iterations),
该函数会将被掩膜处理后的图像的边界提取出来,生成的图像会被进行膨胀处理,基于树莓派的人物追踪系统会调用OpenCV函数库中的膨胀函数:
cv.Dilate(eroded,dilated,element,iterations),
该函数会将腐蚀得到的人物边缘轮廓进行放大,以便更好更精准的识别。在完成了这些操作后,基于树莓派的人物追踪系统便通过树莓派摄像头获得了目标的特征值,并且每一次截取一帧图像后所得的特征值都会与上一次获得的特征值进行比较,若发现人物特征值出现偏移,树莓派会自动调整摄像头以锁定目标,当系统确定了特征值后,便会将信息传递给车体控制模块,以便实现跟随任务。
1.3 物联网模块
对于物联网模块的选择,主要有两种选择,一种是选择GPRS模块,一种选择是通过NB-IoT模块来进行通讯,对于NB-IoT模块来说覆盖面积广且资费低,适合中低距离的通讯技术,它支持PSM模式,功耗极低,且大部分时间NB-IoT的处于PSM状态;NB-IoT适合用于低频次的业务开发,适合通信次数较少的业务开发,例如检测到传感器数据超标而进行通讯,通过通讯次数的减少保持其低功耗的,其余的时间大部分处于休眠的状态,适合于水表、传感器的监控等不需要高频次通讯的领域。
而对于导盲机器人来说,对于GPS以及传感器数据的传送需要实时的对数据进行发送,NB-IoT显然不适合用于导盲机器人的物联网部分,而GPRS适用于远距离的通讯,且GPRS的通讯速率相对于NB-IoT来说通讯速率更快更适合用于GPS定位以及多种数据流的上传;对于导盲车运行过程中的定位数据上传以及传感器的数据上传来说,GPRS相比于NB-IoT来说更适合本文的作品,对于GPRS模块主要将其与STM32通信,由STM32接收到传感器以及GPS的数据后通过GPRS模块使用AT指令将数据传输到云平台。
表1 NB-IoT及GPRS的应用
able 1 Application of NB-IoT and GPRS
1.4中央微控制器
它是以STM32F103系列单片机作为中央处理器,内置了ARM团队生产的高性能、低成本、36mA超低功耗的嵌入式 CORTEX-M3内核,频率高达72MHZ。它在本产品中充当控制核心的作用,它与不同的模块连接进行通讯,是数据的中转站,是实现原始数据的处理以及数据的调配、发送、接收的部分,保证了产品的正常运转。
1.5 定位模块
定位模块使用了ATGM336H-5N模块,该模块支持多种卫星导航系统,包括中国的BDS和美国的GPS,该模块可独立工作在GPS模式或北斗模式下也可在双模式下工作。该模块基于于中科微第四代低功耗GNSSSOC 单芯片—AT6558,该芯片是一款六合一多模卫星导航定位芯片,包含32 个跟踪通道,可以同时接收六个卫星导航系统的GNSS 信号,可实现联合定位、导航与授时。ATGM336H-5N 本系列模块具有高灵敏度、低功耗、低成本等优势,适用于车载导航、手持定位、可穿戴设备,在本作品中通过将GPS模块串口与STM32串口连接进行串口间的通讯,通过程序对NMEA0183 协议帧格式内容的解析,获取到GPS模块传回的经纬度信息,同时将传回的经纬度信息的度.分.分格式转换为度.度的格式以匹配云端的数据流,将经纬度信息处理后通过物联网模块将经纬度的数据流上传到云平台,将经纬度的信息在云平台上通过地图位置以及轨迹的方式显现。
图2 GPS模块
Fig.2 GPS module
1.6 语音播报模块
采用了SYN6288语音合成模块作为核心器件,采用串口通信和STM32进行通信,利用单片机串口发送“5个字节帧头+文本”的格式即通过单片机的串口发送对应的文本和内容和文本计算出的帧头,利用播报模块对各种状况进行及时的播报,方便盲人以及低视力患者对外界情况的感知。
图3 语音播报模块
Fig.3 Voice broadcast module
1.7 MPU6050传感器
它内置了一个三轴MEMS陀螺仪、一个三轴 MEMS 加速度计、一个数字运动处理引擎DMP。它还有用于第三方的数字传感器接口的辅助 I2C 串行接口,MPU6050对陀螺仪和加速度计分别使用了三个16位的ADC,通过DMP结合InvenSense公司提供的运动处理资料库来实现姿态的解算。通过陀螺仪和加速度计分别测出角速度和角加速度,二者通过相应的算法结合就可以得到我们所需要的PITCH(俯仰角),YAW(偏航角)以及ROLL(翻滚角)角了。通过对不同的角度数据的检测,我们可以准确的了解到导盲机器人的运行姿态,将测出的数据通过GPRS模块上传到云平台,并通过对相应阈值的设定,在姿态数据异常时能够及时的了解到异常状态的信息。也能进一步的保障用户安全和导盲机器人的正常工作。
;图4 MPU6050传感器
Fig.4 MPU6050 Sensor
2 导盲机器人的具体实现
本节由硬件、软件实现两部分组成。
2.1 硬件的实现
硬件部主要由上节叙述的模块组成,具体有物联网模块、GPS模块、语音播报模块MPU6050传感器,由STM32f103系列芯片作为主控;视觉部分由树莓派来进行实现并和STM32主控进行通信。系统由12V的锂电池进行供电,通过降压模块对进行降压并为STM32芯片、树莓派等部分进行供电,12V电源主要为机器人底盘的两个12V直流减速电机进行供电。
2.2 软件的实现
机器人的各个模块与STM32进行通讯,除视觉部分外,其余功能的软件编写主要是对STM32进行的。与STM32通信的定位模块、物联网模块、语音播报模块均利用了STM32的串口部分,使用串口前需要先对串口的引脚进行初始化,对于定位模块返回的数据的帧格式来说,在编写程序时首先会定义一个缓存数组对传回的数据进行暂时存储,之后我们在程序中利用NMEA0183 协议对数据进行解析,及对传回数据中的 以 及 以及 以及后的数据进行对比,得出所需的有效数据,利用C语言头文件<string.h>中的memcyp函数将数组中有效数据拷贝到事先定义的结构体变量的内存地址,同时利用meset函数对数组进行清零,使用时通过对结构题中的变量进行调用即可对数据进行操作。
物联网模块通过STM32的串口对AT指令的发送和对返回数据的接收进行通讯,STM32对物联网模块发送AT不同的指令用以连接云平台,并对返回的数据进行判断,接入使用了MQTT协议来接入云平台,主要是通过对可变报头以及消息体的编辑,并通过对各个数据流进行封装将其传入云平台。语音播报模块通过STM32串口发送“5个字节帧头+文本”的格式对文本进行播报,帧头是关于文本长度以及解码格式等信息,在需要播报时利用对应的中断和串口发送即可对不同状况进行播报。
对于MPU6050主要通过iic对MPU6050的寄存器进行读写操作,为了避免STM32的硬件iic可能出现的问题,iic部分主要通过编写模拟iic通过配置STM32引脚来进行iic通讯。
视觉部分主要通过对OPENCV库函数的调用实现其具体功能,掩膜处理是进行图像处理的常用方法之一,为了提取图像中的任务信息,必须对每次截取的一帧图片进行掩膜处理。在接收到一帧图像后,调用OpenCV中的颜色空间转换函数:
cv.CvtColor(img,hsv,cv.CV_BGR2HSV),
颜色空间转换函数会自动将RGB的原图像转化为HSV型的图像,转化完成后,模块会调用OpenCV函数库中另外一个用于掩膜处理的函数:
cv.InRangeS(hsv,lower_blue,upper_blue,mask),
对已经生成的HSV型图像进行遮掩处理,通过参数的调整只保留感兴趣的部分。
人物边缘提取技术基于腐蚀和膨胀这两种算法。在完成了对图像的掩膜处理后,输出的图像首先进行腐蚀处理,获取到人物的边缘轮廓,然后会调用OpenCV函数库中的腐蚀函数:
cv.Erode(mask,eroded,element,iterations),
利用该函数将被掩膜处理后的图像的边界提取出来,将生成的图像进行膨胀处理,通过调用OpenCV函数库中的膨胀函数:
cv.Dilate(eroded,dilated,element,iterations),
该函数会将腐蚀得到的人物边缘轮廓进行放大,以便更好更精准的识别。
3 结束语
对于盲人以及低视力患者的出行问题来说,一直以来都是难以解决的一个问题,但人工智能、5G的到来以及机器视觉的飞速发展给给导盲机器人的未来带来了可能,对于本作品来说,其功能丰富,操作便捷,能够良好的保障用户的出行安全,通过搭载的物联网模块可让用户的家人对导盲机器人的实时状态更好的了解,利用视觉对危险判定使行进更加安全;本作品较好的满足了盲人以及低视力患者的日常出行需求,在未来,对于机器人还需要做出许多的改进和升级,对于物联网部分来说,在未来可利用最新的物联网技术来做到实时视频的查看,而机器视觉部分可进一步的完善神经网络学习来进一步提 升对危险的判断种类以及判断的速度和准确率。
参考文献
[1] 湛益格,程凤, 刘洋旭,等. 视障人群公共设施现存问题的调查研究——以烟台市为例[J].青年时代,2019,(01): 137-138,140.
[2] 陈迪, 李雯,骆莉玲,王梦琳,金王婷. 关于盲道使用现状及其存在问题的研究[J].时代金融,2020, (08): 123-124+126.
[3] 姜成贵. NB-IoT在物联网中的应用[J].中国新通信,2020, (1):26-28.
[4] 韦士飞,张建锋,门思鹏.基于单目视觉的智能循迹小车设计与实现[J].宝鸡文理学院学报(自然科学版),33(03):289-293.
[5] 岳俊峰,李秀梅.基于机器视觉的智能小车自动循迹及避障系统[J].杭州师范大学学报(自然科学版),2020,19(02),200-207.
[6] 宫福祥,高晋. 基于GPS与智能交互的导盲手杖改良设计[J].轻纺工业与技术2021,50(08):105-106.
[7] 范浩,徐龙,赖福明,蔡文广,吕明泽,李媛.基于STM32和MPU6050的姿态控制系统[J].电子元器件与信息技术,2020,4(02):74-75+86.
[8] [1]王小红.基于STm32的车祸自动报警系统设计[J].黑龙江交通科技,2019,42(12):142-143+146.
[9] [1]刘选朝,田庚,陈威冲,张家田,严正国.基于MPU6050的人体姿态检测家电控制系统设计[J].现代计算机,2019(26):88-92.
[10] [1]曹景胜,石晶,魏丹,刘丛浩.基于GPS/GPRS的车载定位远程监测系统设计[J].仪器仪表与分析监测,2018(02):43-46.