基于微型激光雷达的盲人室内避障系统
2021-07-27杜年丰史泽地杨增汪
杜年丰, 陈 伟, 史泽地, 杨增汪
(江苏师范大学物理与电子工程学院,江苏徐州221116)
0 引 言
国外GPS和国内北斗导航已经进入大众群体中,人们在日常生活中也越来越离不开它。经调查,当下全球有很多致力于解决盲人室外行动难题的研究团队,他们的研究成果很多也做得很好,如盲人GPS导航仪、电子导盲杖等[1]。然而,对于室内导航却鲜有成果出现,这是因为现在的导航信号(GPS、北斗等)会被较厚的墙壁阻挡,这就使得导航设备在大型建筑这样的场景中会因为卫星信号断联而无法定位[1],该技术难题极大地限制了室内导航技术的发展。而现实生活中,盲人活动大多在室内进行,即便外出,盲人对于楼梯口、拐弯处无法感知,容易受伤,特别是盲人在一个复杂陌生的室内环境,在没有别人帮助的情况下,容易发生碰撞[1]。
为此,本文提出了一种盲人室内避障系统。该系统在分析视障人士室内行走的心理特征以及视觉缺失特点的基础上,以树莓派为控制核心,将激光雷达、陀螺仪、加速度计等不同的传感器定位融合,最终依据空间单位进制划分,对室内物体进行线性建模,建立起一个适用于视障人士室内导航的室内模型。在模型通过树莓派控制器处理后,划分出危险层次,盲人可以通过播报的语音信息在室内避开障碍物。当盲人走出室外,则结合GPS设备输出的经纬度信号,树莓派控制器可以根据场景需要将GPS经纬度信息转换为平面坐标x、y、z,融合在激光雷达传感器的矩阵运算、障碍物信息实时采集中,从而很好地将此避障系统与室外导航结合。
1 整体设计
本系统整体设计主要由感知层、控制层、输出层组成。感知层包括陀螺仪、加速度计、微型激光雷达、GPS/北斗作为主要传感器,树莓派控制器对传感器A/D转换后,经过对数据的矩阵融合运算,生成一个状态估计的过程模型,预估在对盲人所处环境测量中,过程模型以及卡尔曼滤波就可以完成对盲人周边障碍物/行人的状态进行估计。
此外,微型激光雷达会对盲人所处室内环境不断扫描获取数据,将入口与可行路径以栅格单元的形式记录,通过扫描整个室内环境,最终构建室内2D栅格地图,树莓派控制器根据栅格值的不同划分障碍物危险系数。本设计还会基于危险度计算规则、室内层次信息和拓扑信息,根据室内导航中出现的障碍物危险系数分层次语音提醒。整体架构如图1所示。
图1 系统整体架构图
2 盲人室内避障系统关键技术
2.1 微型激光雷达SLAM栅格构图原理
采用微型激光雷达可以为盲人实时构建2D栅格地图。通过微型激光雷达的精准测距,可以得到较为精确的空间信息,如角度和距离。占据栅格地图一般用来表示微型激光雷达SLAM建立的地图,因为栅格具有存储紧凑和格栅是以概率的形式表示被占据的概率的特性,所以非常适用于检测障碍物[5]。
SLAM:这是一种从未知环境、地点中出发,在运动过程中通过反复观察空间特性从而对自身位置和姿态进行定位,接着会根据自身位置为中心来构筑周围空间的增量式地图,通过这种方式构建地图和实时定位。它包括传感器输入、滤波处理、回环检测、定位融合、非线性优化、信号滤波等[6-7],如图2所示。
图2 SLAM系统模块
SLAM构建的示意图黑色线条表示激光雷达探测到的障碍物边缘,表示此格不通;灰白色区域表示可能有窗户或门,微型激光雷达部分点散射了出去。通过扫描整个室内环境,可以形成一幅2D的激光雷达栅格地图,红色区域表示当前位置,如图3所示。
图3 微型激光雷达SLAM示意图
一般用宏观环境和微观环境来表示盲人在室内活动时的室内信息,室内空间可以看作是一个个空间单元,空间单元又可细分为通道和通用单元;这样就可以将通用单元中除了障碍物和附属物的部分赋予可以让盲人通行的功能,并且用入口将其与道路连接起来;为了实现精准避障过程中为盲人提供更加详实的信息,本设计利用一套语意拓展策略用于描述室内的空间单元;在功能单元入口和道路的关联下,就可以将室内空间单元的拓扑信息进行保存,这可为生成避障指引提供基础。本系统还会基于危险度计算规则、层次信息和拓扑信息,探讨室内导航中出现的障碍物危险系数,为盲人在室内空间安全行走提供依据。
本盲人导航设计采用树莓派3B+芯片,作为整个系统的控制器,微型激光雷达对障碍物信息进行采集后传送到树莓派组成的控制电路,树莓派控制器通过算法根据微型激光雷达SLAM建立的地图进行数据分析和矩阵运算。
2.2 多传感器定位融合原理和室内障碍物位置估计
(1)多传感器的定位融合原理。室内定位是本系统非常重要的实验内容,核心是要解决盲人“我在哪”和“要去哪”的问题。普通人在陌生的室内环境下可以根据室内建筑物的引导牌和一些熟悉的标记点知道自己在哪。进一步地讲,根据人脑的神经元来认知,这些是在一瞬间完成的,但是对于控制器和程序则需要多传感器的信息数据融合,才能够精确地完成定位计算。
目前室外的定位技术比较成熟的有国外的GPS和国内的北斗,但是在室内复杂的建筑物和场景下,这种成熟的技术由于信号、场景复杂等问题无法适用。GPS和北斗的定位原理是基于三角定位法,3个卫星组成三角形,通过融合几何数据,从而获得精确的位置信息。那么是否可以将GPS/北斗的几何数据与盲人室内穿戴的其他传感器获取的数据融合呢?如果可以的话,就可以同时实现盲人的室内导航和室外导航了。
通常GPS设备输出的信号主要为经纬度信息、时间同步等信号,GPS/北斗结合盲人穿戴的多传感器融合需要将经纬度信号转换为平面坐标x、y、z。盲人室内穿戴设备有陀螺仪、加速度计、微型传感器等读取出来的加速度、以及对应的角度信息,速度信息我们用vx、vy、vz表示,位置和角度用Roll、pitch表示。现在就有了x、y、z、vx、vy、vz、Roll、pitch共8个状态向量来表示盲人的姿态和位置信息。有了这些信息,可以结合惯性测量单元(Inertial Measurement Unit,IMU)的惯性参数来预防盲人摔倒[8-9]。
同理,还可以在盲人设备上加入其他传感器设备,比如超声波、里程计等,这些传感器都有其优缺点,可以根据这些传感器读取的不同维度的测量数据转换后融合,如图4所示,得到更加精准的盲人姿态数据。
图4 多传感器融合示意图
(2)室内障碍物/过道行人位置估算。各种传感器都有其优缺点,如何让盲人在陌生的室内环境中“眼观八方”?那就要最大程度利用各个传感器的优点,汇聚后安装在盲人穿戴设备上,让盲人根据多传感器来知道周边环境的情况。那么多传感器如何稳定、可靠地给盲人估算位置和姿态信息呢?本实验是基于卡尔曼滤波的位置估算解决。
首先根据多传感器采集的信息,例如这样的场景:盲人在室内行走时,前方突然出现障碍物或者行人,设备就需要对前方的障碍物和行人做一个预估和判断,从而语音指导盲人避开,那么如何预估和判断呢?我们根据盲人的x、y、z、vx、vy、vz、Roll、pitch共8个状态向量可以记录盲人的姿态,由1.1导盲设备的室内SLAM构图阐述得知,通过配备微型激光雷达,可以完成测距信息,这样可以得到前方突然出现障碍物/行人的位置和运动速度,这里用p表示障碍物/行人的位置,用vz表示运动速度,用一个向量来表示某个状态:
上述方程表示了障碍物/行人x、y方向的位置分量px、py,以及速度分量vx,vy。在确定了想要估计的对象状态后,需要一个用于生成状态估计的过程模型,假设模型为
扩展为
将其展开得到:
在此过程模型预测的障碍物/行人的运动速度有可能为0,在这个问题中就会形成过程噪声,上述公式中过程噪声就是v,在预估盲人周围的障碍物/行人运动状态和位置时,障碍物/行人突然加减速度时,过程噪声就转变为了障碍物/行人的突然加减速度。那么原来的模型表达式可以优化为
再根据线性代数的方法(P′K=AP k-1AT)来表示预测,预测后的过程应为
式中,Q是过程噪声的协方差矩阵。这是状态A的更新过程,它的本质是估计状态概率分布的协方差矩阵。因为障碍物/行人的突然加减速度造成的过程噪声是随机带入的,所以过程噪声v本质是一个高斯分布:v~N(0,Q),Q是过程噪声的协方差矩阵:是传感器的固有性质,往往由传感器厂商提供。综上,可以求得
式中,C表示引入值,根据盲人所穿戴设备的传感器性质决定,因为有的传感器只能测量v,位置y获取不到;I符号代表单位矩阵;
在对盲人所处环境测量步骤中,通过过程模型以及卡尔曼滤波就可以完成对盲人周边障碍物/行人的状态进行估计。基于此,通过以上所述原理,以多传感器数据信息为节点,将SLAM构图中可以通行的通道转化为边,提取室内空间单元内部对象为栅格,将不可行走的区域在构建的2D激光雷达栅格地图中,用黑色界限表示,控制器通过惯性测量单元IMU等传感器数据融合获取的参数预估盲人及周边障碍物和来人的运动姿态,紧急转化为语音进行提醒。
3 测试与实验
本设计测试与实验主要由两部分组成:①搭建仿真环境,本测试采取实验室为盲人仿真室内环境,通过微型激光雷达的精准测距,获得较为精确的空间信息,进行SLAM构图,并形成实际构图效果与实验室真实过道、障碍物实物对比。②多传感器融合测试,基于卡尔曼滤波的位置估算预估盲人周边障碍物/来往行人的状态,将预估、测量数据与真实结果进行对比。
3.1 针对盲人所处室内环境的SLAM构图
在导盲设备树莓派上安装微型激光雷达,如图5所示,可以获取室内环境深度信息,然后根据盲人所处室内环境设定可检测的起始角度(angle_min)和可检测范围的终止角度(angle_max),组成微型激光雷达的可检测范围,相邻数据帧之间的角度步长以及采集一帧数据所需要的时间,最近可检测深度的阙值(range_min),最远可检测深度的阙值(range_max)等[10]。
图5 微型激光雷达实物图
完成上述根据盲人环境设定的深度信息后,再根据盲人当前位置设置坐标,包括盲人的x、y、z三轴位置及方向参数,以及用于校正误差的协方差矩阵。
确定仿真环境。本设计测试采取实验室为盲人室内仿真陌生环境,如图6所示为实验室平面图,仿真软件为Vmvare,通过设置可以即时显示微型激光雷达SLAM构建的2D栅格地图。
图6 实验室平面图
具体实验步骤如下:
(1)首先在Vmware虚拟机中添加基于SLAM的功能应用包gmapping,gmapping功能包包括二维栅格地图和Rao-Blackwellized粒子滤波算法[11],总体框架图如图7所示。
图7 gmapping功能包的总体框架
(2)初始化工作空间,向树莓派中输入测试指令如下:
(3)根据系统导航框架中的蒙特卡罗定位方法,可以在盲人导盲设备构建的SLAM室内地图中加入二维环境定位,使用粒子滤波跟踪盲人的姿态。导盲设备中的导航框架,结合多传感器融合定位:可以估算机器人在地图坐标系/map下的位姿信息,提供/base、/odo/map之间的TF变换,根据盲人室内环境特征配置参数move_base节点。
(4)设置密钥,设置环境在~/catkin_ws/src中创建栅格构图源文件。
(5)创建仿真。连接树莓派在Vmware执行如下指令:
(6)启动hector_slam演示,通过Vmware查看微型激光雷达设备对盲人周边环境栅格构图,实际构图效果如图8所示,通过扫描整个室内环境,可以形成一幅2D的激光雷达栅格地图,黑色线条表示激光雷达探测到的障碍物边缘,表示此格不通,灰白色区域表示可能有窗户或门。
图8 盲人所处环境SLAM栅格构图
根据盲人所处环境,控制器树莓派通过算法根据微型激光雷达SLAM建立的地图进行数据分析和矩阵运算,可以形成一幅2D的激光雷达栅格地图(见图9)。根据栅格地图呈现的栅格值划分区域,划分依据盲人真实实验数据均值。
图9 栅格地图区域值划分
栅格值设置致命障碍:栅格值为254,障碍物与盲人的中心重合,此时障碍物必然与盲人发生碰撞。
内切障碍:栅格值为253,障碍物处于盲人周边的内切圆内,此时盲人也必然与障碍物发生碰撞。
外切障碍:栅格值为252~127,障碍物处于盲人周边的外切圆内,此时盲人与障碍物临界接触,不一定发生碰撞。
自由区域~内切障碍:栅格值为127~2,障碍物附近区域,一旦盲人进入该区域,将有较小概率发生碰撞,属于安全区。
自由区域:栅格值为0~2,此处没有障碍物,盲人可以自由通过。
未知区域:栅格值为255,此处还没有探知是否有障碍物,盲人可以前往继续建图。
3.2 多传感器融合测试
根据盲人穿戴的陀螺仪、加速度计、微型传感器等读取出来的加速度,以及对应的角度信息,速度信息用vx、vy、vz表示,位置和角度我们用Roll、pitch表示,前方的障碍物和行人位置分量用px、py表示、速度分量用vx,vy表示。
下面在pycharm中执行代码,pycharm是一种Python IDE交互式编辑器,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,方便Project管理。
主要步骤如下:
(1)在pycharm中载入必要的库,如图10所示。
图10 pycharm载入库界面
(2)通过传感器读入障碍物和来往行人的状态,包括在SLAM构图栅格中的位置以及速度等信息,程序中载入2.2.2中的优化模型,代码中用F表示,测量矩阵H如图11所示,计算测量噪声的协方差矩阵和过程噪声的协方差矩阵Q[12]。
图11 在pycharm载入状态转移矩阵F及观测矩阵H
(3)在pycharm定义一个单位矩阵,产生一些随机测量数据阵和一些过程值。
(4)在pycharm中执行卡尔曼滤波。位姿估计算法的研究是解决SLAM问题的关键。目前,已有大量位姿估计算法,根据这些算法的基本原则大致可分为以下几类:扩展卡尔曼滤波(EKF)、最大似然方法、稀疏的扩展信息滤波器(SEIFs)、平滑技术、Rao-Blackwellized粒子滤波器(RBPF)以及GraphSLAM[13-14]。其中本实验使用的是卡尔曼滤波法,如图12所示。卡尔曼滤波过程如图13所示。
图12 在pycharm中载入卡尔曼滤波公式
图13 卡尔曼滤波过程
在pycharm中执行代码,通过传感器读入障碍物和来往行人的状态,包括在SLAM构图栅格中的位置以及速度等信息,程序中载入处理矩阵F及测量矩阵H,计算测量噪声的协方差矩阵和过程噪声矩阵Q。最终在pycharm中展示预估、预测及真实结果对比[15]。在pycharm中可以读取到传感器检测的vx与vy,如图14所示。在pycharm中载入卡尔曼滤波公式后,多传感器融合测试,基于卡尔曼滤波的位置估算预估盲人周边障碍物/来往行人的状态(见图15)。
图14 传感器实际测量值
图15 预估数据与过滤状态图
4 结 语
在传统的GPS和北斗导航无法满足室内复杂的环境下,本文建立起一个适用于视障人士室内导航的室内模型,在模型通过树莓派控制器处理后,设计出最优路径,盲人可以通过播报的语音信息在室内行走。当盲人走出室外,则结合GPS设备输出的经纬度信号,树莓派控制器可以根据场景需要将GPS经纬度信息转换为平面坐标x、y、z,融合在激光雷达传感器的矩阵运算、障碍物信息实时采集中,从而很好地将室内导航与室外导航结合。
主要有以下特点:①采用了微型激光雷达可以为盲人实时构建室内导航地图(SLAM),微型激光雷达部分点散射出去,通过扫描整个室内环境,可以形成一幅2D的激光雷达栅格地图,根据盲人所处环境的栅格值,提示盲人精准避障。②多传感器定位融合原理和卡尔曼滤波,当盲人在室内行走时,前方突然出现障碍物或者行人,系统就需要对前方的障碍物和行人状态做一个预估和判断,通过语音提醒盲人。