Corridor-Walker

关于论文 Corridor-Walker: Mobile Indoor Walking Assistance for Blind People to Avoid Obstacles and Recognize Intersections(ACM on Human-Computer Interaction) 的阅读总结。

Corridor-Walker

论文情况

  • 标题:Corridor-Walker: Mobile Indoor Walking Assistance for Blind People to Avoid Obstacles and Recognize Intersections
  • 作者:MASAKI KURIBAYASHI, SEITA KAYUKAWA, JAYAKORN VONGKULBHISAL, CHIEKO ASAKAWA, DAISUKE SATO, HIRONOBU TAKAGI, SHIGEO MORISHIMA
  • 期刊:ACM on Human-Computer Interaction
  • 源码:未开源

1 Introduction

  • 应用场景:盲人面临的室内走廊导航的挑战。室内除了地面上还有壁挂式的障碍物,现有的一些系统仅能判断是否有障碍物,而无法规划避开路径。使用导盲犬可以解决问题,但是盲人并不一定都喜欢,且导盲犬十分稀有。
  • 面临的挑战:
    • 现有系统多数只能识别障碍物,无法规避障碍物;
    • 盲人可以使用导盲杖探测障碍物,但是在交叉路口时会遇到无法辨别方向的问题;
    • 室内转弯导航系统可以传递正确的交叉路口信息,但是需要额外的基础设施。

Corridor-Walker:

  • 基本思想:通过使用空间化音频和文本到语音(TTS)反馈来引导用户跟踪避障路径。对于交叉路口,通过震动和 TTS 反馈用户交叉路口的存在和形状。

  • 基本设计:使用 iPhone 12 Pro 的 LiDAR 传感器构建周围环境的 2D 占用网格地图(Occupancy Grid Map);然后利用 A* 路径规划算法在网格图上规划一条避障路径;同时使用 YOLO v3 检测交叉路口。

图-1 Corridor-Walker 工作方式

2 System Overview

图-2 系统框架

使用智能手机的激光雷达测量与物体之间的距离。盲人使用导盲杖避开障碍物并识别交叉路口。

2.1 Avoiding Obstacles

一些障碍物会依墙放置,因此系统生成一条尽可能与墙保持距离的路径,并引导用户在不转向的情况下沿着路径行走。如果前方出现障碍物,则系统生成一条绕开障碍物的路径。

2.2 Detecting Intersections

盲人需要感知经过的交叉路口,同时由于用户不会依墙行走,因此系统会在交叉路口出现时对用户发出提醒,防止用户错过交叉路口。

3 Implementation

3.1 Grid Map Construction

2D 占用网格地图通过 LiDAR 获取的点云构建,最大感知范围为 5m。利用 ARKit 提供的定位算法,对每个时间帧的网格信息进行累积。用户需要以图-2 左中的方式手持手机,以便于获取网格图。

为计算每个网格是否可步行,需要计算每个点的法向量:

  • 先用 RANSAC(Random Sample Consensus)提取地面点云;
  • 如果一个点的法向量与重力方向平行,且高度与地面相差小于 0.1m,则为 walkable 点,其他则为 non-walkable 点。

确定每个点投影到 xy 平面后的网格。每个网格的大小设置为 0.15m:

  • 若网格中可行走点多于不可行走点,则网格标记为 walkable 网格(图-2A 中白色区域),否则网格标记为 non-walkable 网格(图-2A 中黑色区域)。
  • 若单元格中不包含点,则标记为 no-information 网格(图-2A 中灰色区域)。

系统以 10FPS 的速率处理上述算法,每次观察网格时,都会对网格进行更新,这使得系统能够处理动态障碍物。一旦障碍物被移走,系统就能将 non-walkable 网格更新为 walkable 网格。

3.2 Path Planning and Obstacle Avoidance

3.2.1 Assigning Cost to Each Cell

首先,系统为每个 walkable 网格分配 00β\beta 之间的损失值。系统因此可以获得损失图,便于规划原理 non-walkable 网格的路线。

每个 walkable 网格的损失值计算:

  • δi\delta_i 为 walkable 网格 ii 到其最近 non-walkable 网格的距离。walkable 网格 ii 的损失则定义为:

    costi={β(1δi1α), if 1δiα0, if δi>αcost_i = \begin{cases} \beta (1 - \frac{\delta_i - 1}{\alpha}),\ &\mathrm{if}\ 1 \le \delta_i \le \alpha \\ 0,\ &\mathrm{if}\ \delta_i > \alpha \end{cases}

    其中 α\alpha 为距离上界,以使得损失值为正数。离 non-walkable 越近的点将会得到越大的损失。

  • 图-2A 中,损失值高的点被渲染为暗红色,较低的则为浅红色。

  • 根据观察,取 α=3,β=50\alpha = 3, \beta = 50

3.2.2 Path Planning Algorithm

首先,系统需要寻找一个执行路径规划算法的目的地:

  • 系统先在前方 γ\gammam 内 100°100 \degree 的扇形区域内进行采样;
  • 然后系统选择采样点最长连续采样空间的中点作为目的地;
  • 如果目的地落在 non-walkable 网格中,则缩短 0.5m 并重复上述过程,直到变为 0m;
  • 最后系统使用 A* 路径规划算法计算到该点的路径。

根据观察,取 γ=3.5\gamma = 3.5

3.2.3 Obstacle Detection

尽管路径规划能找到避开障碍物的路径,但仍然需要通知用户存在障碍物以进行绕道。

为确定 non-walkable 是墙还是障碍物,系统在 2D 占用网格图上使用 RANSAC 算法进行平面检测,所有被 RANSAC 检测出来的网格则标记为 wall 网格,其他为 obstacle 网格。

然后,在用户前方 22m 内 30°30\degree 的扇形区域内的网格上检测是否有障碍物:

  • 如果 obstacle 网格数量超过 30%,则系统认为前方存在障碍物,并通知用户。

3.2.4 Veering Detection

为避免用户改变生成的路径,系统还要检测是否用户面向了正确的前进方向:

  • 首先,系统使用 ARKit 中的定位算法在占用网格地图中计算系统方向;
  • 系统计算系统方向与路径规划的前进方向的夹角 θ\theta
    • 如果 θ>10°\theta > 10\degree,则视为用户偏离了规划好的方向,系统将发出通知。

3.3 Intersection Detection

系统使用 YOLO v3 检测交叉口,其在 iPhone 12 Pro 上的运行速率约为 70FPS。系统使用 2D 占用网格地图作为检测输入,避免了 RGB 相机拍照产生的运动模糊问题,检测结果为图-1 中的蓝色方框,表示此处出现交叉口。

3.3.1 Image Processing

由于网格地图本身不包含关于用户前进方向的信息,因此对网格图像进行预处理,使这些信息变得明显:

  • 系统旋转网格地图的图像使用户的前进方向朝上(图-2C),用户的前进方向则根据过去 4s 内的位置计算得到。
  • 然后移动图像,使用户在图像的中心,预处理后的图像(128×128128 \times 128 像素)用作 YOLO v3 的输入。

3.3.2 Training the YOLOv3 Detector

  • 目的:训练 YOLOv3 检测器使得能够识别即将到来的交叉口。
  • 数据:从环境中收集 9940 张预处理好的走廊图像,并标注交叉口的位置和标签(交叉口的方向)。
  • 标签:
    • 例:如果交叉口只引导用户去左边,那么标记为 “Left, Back”。
    • “Left, Back” 和 “Right, Back” 由于有相同的拓扑形状,因此定义为 “L-Shaped”,同理其他交叉口被分类为 “T-Shaped”、“Rotated T-Shaped” 和 “X-Shaped”。
  • 阈值:将 YOLO v3 检测器的置信度阈值设为 0.20.2

3.3.3 Detetermining the Distance to Intersection

如图-2D,用户到交叉口的距离定义为 bounding box 下边界到用户的像素数。由于一个像素(网格)在真实世界中对应 0.15m,因此像素数乘以 0.15m 即为用户到交叉口的距离。

注意:当 bounding box 包含图像中心点时,说明用户行走到了检测到的交叉口。

3.3.4 Evaluation

图-3 交叉口检测结果
从获取的数据集中取出 1215 张预处理的图像作为训练集。评估参数:
  • 在不同距离时的准确率和召回率,如图-3A。
  • 检测到交叉口标签的最远距离,如图-3B。其中 “L” 表示 “Left”,“R” 表示 “Right”,“B” 表示 “Back”,“F” 表示 “Front”。平均上,在距离 2.47m 时能够识别到交叉口形状。

3.3.5 Confirming the Existence of an Intersection

如果走廊有不均匀的结构,如 “凹陷”,则检测器很有可能将其识别为交叉口。因此提出了一种判断算法:

  • 当用户处于检测到的交叉口时,系统通过要求用户扫描十字路口可能通向的两侧(左/右),测量交叉口两侧最远的 walkable 网格单元。如果边界框的最近一侧与这个最远 walkable 网格距离超过阈值 ϵ\epsilonm,则系统认为此处有一条路径。取 ϵ=1.5\epsilon = 1.5

3.4 Intersection of Corridor-Walker

图-4 系统接口

系统使用 TTS,空间化的音频和震动反馈。系统尽量少使用 TTS 来避免用户较高的认知符合。设计上:

  • TTS 反馈用于传达交叉口的形状,告知用户绕行。
  • 空间化音频指导用户避免偏离轨迹。
  • 震动反馈用于告知用户路口的存在,并提醒即将发生碰撞。
  • 当系统检测到前方有交叉口时,系统就会发出震动。将震动设计为单脉冲震动,脉冲持续时间为 0.1s,间隔 0.5s。

  • 当用户进入交叉口区域时,系统使用 TTS 告知用户扫描特定一侧(左/右)的信息,例如:若检测到 “Left, Back” 或 “Left, Front, Back”,系统将提醒用户扫描左侧。

    此指令的目的在于让用户确认检测到的交叉口是否是正确,一旦检测成功,系统将告知交叉口通往哪条路,否则系统保持沉默。当用户进入 “Left, Right, Back” 交叉口时,指令示例:

    1. 用户进入交叉口:Scan Left and Right
    2. 用户扫描结束,发现仅有左侧可以通行:(Intersection to) Left。

系统使用空间化音频反馈用户正确的旋转角度:

  • 当用户偏离预定路径时,系统提供反馈以修正用户行走路径。
  • 如果用户面向左(右),而实际应该面向右(左),系统将用骨传导耳机在右(左)侧发出正弦音(持续 0.25s,间隔 0.25s,频率 400Hz)。若听不到正弦音,说明面向了正确的方向。

当在 2m 内检测到障碍物时,系统将使用 TTS 告知用户使用哪条路绕行:

  • 例如:当障碍物出现在左侧的墙边,系统将提示 ”Make a detour to the right“。

如果障碍物(包括墙)在用户前方 1m 内,系统将持续震动,知道用户面对安全的方向。

4 User Study

招募了盲人进行有效性实验,对比使用导盲杖和系统相结合(system-aided)、仅使用导盲杖(cane-only)的实验结果。

4.1 实验设置

  • 参与者:使用电子邮件招募了 14 名盲人,他们有超过 2 年的日常生活主要使用导盲杖作为导航工具和智能手机的经历。
表-1 实验参与者信息和实验评价
  • 实验任务:
    • (1)识别并在交叉口转弯:参与者在交叉口转向至特定方向,然后回答交叉口的形状。
    • (2)障碍物躲避
    • (3)在有障碍物的长走廊进行导航
  • 评价指标:
    • 正确回答交叉口形状
    • 不同任务下的完成时间
    • 不同任务下的导盲杖碰到障碍物或者墙壁的次数
图-5 任务 2 和 3 的实验路线

5 Results

  • 正确回答交叉口形状(L,T,Rotated T,X):
    • cane-only:71.4%,21.4%,28.6%,0%
    • system-aided:92.9%,92.9%,100%,50%
  • 完成时间,导盲杖碰墙次数:
表-2 各项任务的完成时间与导盲杖碰墙(障碍物)次数