基于RGB-D深度相机的智能导盲系统
2021-12-30谌海云袁杰敏
谌海云, 袁杰敏
(西南石油大学 南充校区,四川 南充 637000)
0 引 言
目前,大多数盲人和视力障碍者在日常生活中所使用的导盲工具为功能简单的手杖,少部分能够使用到专业的导盲犬,而如今公共道路环境变得越来越复杂,路上的行人和车辆越来越多,许多公共场所的盲道、盲人辅助装置不完善,依靠简单的手杖已经难以为盲人提供安全可靠的帮助。李子康等人[1]设计了一种视听融合的导盲机器人,通过多传感器融合算法实现环境探测,实现了盲道、斑马线的识别,但存在探测距离短、探测精度低的技术不足;俞国华等人[2]设计了基于多传感器技术的智能导盲杖,依靠积水传感器、超声波测距传感器的设备实现如积水探测和障碍物探测,但该设备对环境适应能力不强,容易受到环境变化的影响;朱爱斌等人[3]设计了基于双目视觉方法的可穿戴导盲机器人,能够实现障碍物定位以及场景三维重建,但技术路线过于繁重,不利于实际使用。因此,借助于智能化、信息化的导盲设备便成为解决盲人出行困难的一大利器,通过视觉检测、语音提示等手段,智能导盲系统能够很好服务于广大的盲人群体。本文设计了一种基于RGB-D深度相机的辅助导盲系统。
1 系统总体设计
1.1 系统硬件设计
如图1所示,系统通过RGB-D深度相机采集环境信息,以个人电脑(personal computer,PC)上位机和51单片机下位机组成的控制系统进行信息接收、处理与指令输出,以RGB-D相机为环境信息采集传感器,通过增强型计算机视觉提供高分辨率和高帧频的图像输出为本系统提供可靠的环境信息,以音频和振动模块组成指引和提示系统,以电池和直流稳压电源组成电源供应系统,本系统以穿戴式背心为搭载平台实现了设备集成和可穿戴功能。
图1 导盲背心系统框图
1.2 系统工作原理
深度相机向目标点连续发射光脉冲信号,传感器接收由物体反射回的光后根据探测光脉冲信号的往返时间计算得到目标物距离。得到目标物距离后,上位机程序构建出环境点云地图和激光地图,通过这两个地图能够得到前向视角180°,0.5~5m内的障碍物与传感器间的距离,同时,计算机程序通过均分为6个区块的180°前向视角能够得到这6个区块与传感器间的距离,并以此判断障碍物的方位和距离。之后,系统通过调用开放数字地图应用程序编程接口(application programming interface,API)生成起始点到目标点的粗略路径,路径由经纬度坐标值表示,通过转换程序能够与局部坐标系耦合生成相应的优化路径[9]。生成优化路径后,计算机程序根据设定好的距离阈值发出相应的指令控制不同方向的振动模块工作,扬声器系统根据设定好的程序播报障碍物、前行转向、呼叫求救等信息。
2 基于深度相机的障碍物检测
2.1 针孔相机模型
针孔相机是一种常见的模型,其把相机简化成小孔成像进行信息处理与环境识别,其基于投影成像的方法,其中投影变换方法中的关键部分是正交变换和透视变换[10]。正交变换是被投影的物体上的点全都平行地投射到投影面,没有远近的区别,即没有透视效果,而透视变换则相反,被投影物体处于一个四棱台区域中,物体被投影到离相机较近的平面上,此时相机被抽象为一个点,而投影点是物体上的点和相机的连线与投影平面的交点,由于投影的路径不再相互平行,因此会产生透视效果[8]。
现假设现有关键帧图像Ik,图像坐标系中点Pi的像素坐标为(u,v),深度值z由RGB-D相机中的深度相机获得,根据针孔相机模型原理可得,若将RGB图中的每个像素点投影到3D空间,则像素点Pi对应的3D点Pi=[X,Y,Z]有
(1)
式中fx,fy分别为相机在x,y方向上的焦距;cx,cy为像素坐标系中心。3D坐标系中的点与相机坐标系中的点之间的关系[7]可表示为
(2)
2.2 点云地图与激光图生成
通过以三原色(red green blue,RGB)图和深度图作为输入数据,使用机器人操作系统(robot operating system,ROS)中的点云库对每一关键帧生成点云而形成点云图,运用式1可将相机坐标系中所有的像素点pi=(u,v)变换到世界坐标系下的点为Pi=[X,Y,Z]。
如图2所示,RGB图和深度图生成点云图后,对任意给定的一个深度图像点m(u,v,z),可以通过以下方式将其转换为激光图:
1)将深度图像的点m(u,v,z)转换到深度相机坐标系下的坐标点M(u,v,z)。
2)计算直线AO和CO的夹角AOC
θ=atan(x/z)
(3)
将角AOC影射到相应的激光数据槽中,已知激光的范围为[α,β],激光束共分为N部分,用数组laser[N]表示激光数据。则点M投影到数组laser中的索引值n的计算为
n=(θ-α)/((β-α)/N)=N(θ-α)/(β-α)
(4)
laser[n]的值为M在x轴上投影的点C到相机光心O的距离r,即
(5)
图2 点云图转换激光图示意
3 基于A*算法的局部路径规划
在导盲系统的工作过程中,系统需要根据环境、人为主观约束等信息规划出一条最优化无障碍、效率高、可通过的路径。A*算法是一种在静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。
A*算法的关键在于引入了路网信息用于在扩展下一个节点时对当前节点到目标节点进行距离评估[4]。算法基于代价函数f(n)选择节点进行扩展,代价函数为扩展到下一节点的成本估算,当代价函数返回值为期望最小值时则可扩展该节点为下一节点。其代价函数为
f(n)=g(n)+h(n)
(6)
式中f(n)为从起始节点到当前节点n的状态估计成本,g(n)为从起始节点到当前节点n的实际成本,h(n)为启发式函数,表示从当前节点n到目标节点最佳路径的估计成本[5]
h(n)=|nx-gx|+|ny-gy|
(7)
式中nx,ny,gx,gy分别为当前节点和目标节点位置坐标[6]。
A*算法计算步骤:1)将搜索区域划分为网格,创建起始节点start、目标节点goal、开启列表open list、关闭列表close list,并初始化close list。2)将起始节点start加入到open list中。3)查找本节点相邻8个方格,忽略不可达或close list中的节点。 4)将可达的节点放入open list中,并设置前节点为父节点。5)遍历open list,f(n)=g(n)+h(n),计算f(n)最小的节点放入close list中。6)判断当前节点是否为目标节点goal,是则结束搜索并输出路径,否则返回步骤(3)继续。
4 系统测试
4.1 障碍物检测测试
如图3所示,图(a)中的一个方框中显示的是相机实时采集到的彩色图像,另一方框中白线是由点云图转换得到的激光图。图3(a)右侧存在一把椅子,这对应着激光图中右侧部分明显靠近相机的一条线。图3(b)方框里面分别显示了5个数据,这5个数据分别代表从左到右5个区域的平均深度,这些数据中最右边的数据仅有0.6 m,与实际椅子距离较近的情况相符合,此验证了本设计的障碍物检测算法可以有效检测出视野中障碍物的距离及方位。
图3 障碍物距离检测和测定结果
通过设置障碍物并使用检测算法测量与实际距离对比的方式得出了表1,通过表中数据分析可得,视觉障碍物检测方法具有误差小、可靠性高的特点。
表1 障碍物距离测定及误差
4.2 路径规划测试
为了测试系统的局部路径规划能力,本文通过MATLAB软件编写A*算法程序进行仿真测试。如图4所示,测试地图中随机设置了一些形状、大小不同的黑色障碍物,算法通过启发式搜索规避图中障碍物。由图4可知,距离目标点(右上角白方块)越近的节点颜色越深,目标节点周围颜色为最深,距离初始节点(左下角白方块)越近的节点颜色越深,初始节点周围颜色为最深。
图4 A*算法路径规划MATLAB仿真测试效果
GPS全局规划部分设计了一个实际任务来测试规划效果,选取了学校正门到教学楼之间规划了一条路径进行测试。首先利用某地图开放平台规划出一条粗略路径,然后通过API将导航信息发送到上位机中,由上位机读取导航信息文件,在行进过程中通过算法融合实现障碍物规避并通过下位机系统提示测试者。如图5(a)所示,一位志愿者身穿导盲背心,戴上眼袋模拟无法看见路面的情况,图5(b)所示为系统实时输出的激光图,图5(c)所示为起始点到目标点的粗略路径。
图5 GPS规划及效果测试
本系统在实际测试中表现出了精准的定位效果和良好的障碍物规避能力,语音提示和振动提示清晰准确。通过上述实例测试,验证了本系统在真实场景下的可行性。
5 结 论
在实际测试环节,本系统经过实际场景测试后发现设计功能都得到了良好验证,系统运行效果良好,能够适应一定环境下的导盲工作需求。接下来,本系统的改进方向是实现简单障碍物的识别及加入超声波传感器来解决复杂环境信息带来的问题,同时还将优化控制器能耗以提升背心续航能力。