Corridor-Walker
关于论文 Corridor-Walker: Mobile Indoor Walking Assistance for Blind People to Avoid Obstacles and Recognize Intersections(ACM on Human-Computer Interaction) 的阅读总结。
论文情况
- 标题: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 检测交叉路口。
2 System Overview
使用智能手机的激光雷达测量与物体之间的距离。盲人使用导盲杖避开障碍物并识别交叉路口。
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 网格分配 到 之间的损失值。系统因此可以获得损失图,便于规划原理 non-walkable 网格的路线。
每个 walkable 网格的损失值计算:
-
设 为 walkable 网格 到其最近 non-walkable 网格的距离。walkable 网格 的损失则定义为:
其中 为距离上界,以使得损失值为正数。离 non-walkable 越近的点将会得到越大的损失。
-
图-2A 中,损失值高的点被渲染为暗红色,较低的则为浅红色。
-
根据观察,取 。
3.2.2 Path Planning Algorithm
首先,系统需要寻找一个执行路径规划算法的目的地:
- 系统先在前方 m 内 的扇形区域内进行采样;
- 然后系统选择采样点最长连续采样空间的中点作为目的地;
- 如果目的地落在 non-walkable 网格中,则缩短 0.5m 并重复上述过程,直到变为 0m;
- 最后系统使用 A* 路径规划算法计算到该点的路径。
根据观察,取 。
3.2.3 Obstacle Detection
尽管路径规划能找到避开障碍物的路径,但仍然需要通知用户存在障碍物以进行绕道。
为确定 non-walkable 是墙还是障碍物,系统在 2D 占用网格图上使用 RANSAC 算法进行平面检测,所有被 RANSAC 检测出来的网格则标记为 wall 网格,其他为 obstacle 网格。
然后,在用户前方 m 内 的扇形区域内的网格上检测是否有障碍物:
- 如果 obstacle 网格数量超过 30%,则系统认为前方存在障碍物,并通知用户。
3.2.4 Veering Detection
为避免用户改变生成的路径,系统还要检测是否用户面向了正确的前进方向:
- 首先,系统使用 ARKit 中的定位算法在占用网格地图中计算系统方向;
- 系统计算系统方向与路径规划的前进方向的夹角 :
- 如果 ,则视为用户偏离了规划好的方向,系统将发出通知。
3.3 Intersection Detection
系统使用 YOLO v3 检测交叉口,其在 iPhone 12 Pro 上的运行速率约为 70FPS。系统使用 2D 占用网格地图作为检测输入,避免了 RGB 相机拍照产生的运动模糊问题,检测结果为图-1 中的蓝色方框,表示此处出现交叉口。
3.3.1 Image Processing
由于网格地图本身不包含关于用户前进方向的信息,因此对网格图像进行预处理,使这些信息变得明显:
- 系统旋转网格地图的图像使用户的前进方向朝上(图-2C),用户的前进方向则根据过去 4s 内的位置计算得到。
- 然后移动图像,使用户在图像的中心,预处理后的图像( 像素)用作 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 检测器的置信度阈值设为 。
3.3.3 Detetermining the Distance to Intersection
如图-2D,用户到交叉口的距离定义为 bounding box 下边界到用户的像素数。由于一个像素(网格)在真实世界中对应 0.15m,因此像素数乘以 0.15m 即为用户到交叉口的距离。
注意:当 bounding box 包含图像中心点时,说明用户行走到了检测到的交叉口。
3.3.4 Evaluation
- 在不同距离时的准确率和召回率,如图-3A。
- 检测到交叉口标签的最远距离,如图-3B。其中 “L” 表示 “Left”,“R” 表示 “Right”,“B” 表示 “Back”,“F” 表示 “Front”。平均上,在距离 2.47m 时能够识别到交叉口形状。
3.3.5 Confirming the Existence of an Intersection
如果走廊有不均匀的结构,如 “凹陷”,则检测器很有可能将其识别为交叉口。因此提出了一种判断算法:
- 当用户处于检测到的交叉口时,系统通过要求用户扫描十字路口可能通向的两侧(左/右),测量交叉口两侧最远的 walkable 网格单元。如果边界框的最近一侧与这个最远 walkable 网格距离超过阈值 m,则系统认为此处有一条路径。取 。
3.4 Intersection of Corridor-Walker
系统使用 TTS,空间化的音频和震动反馈。系统尽量少使用 TTS 来避免用户较高的认知符合。设计上:
- TTS 反馈用于传达交叉口的形状,告知用户绕行。
- 空间化音频指导用户避免偏离轨迹。
- 震动反馈用于告知用户路口的存在,并提醒即将发生碰撞。
3.4.1 Conveying Intersection-Related Information
-
当系统检测到前方有交叉口时,系统就会发出震动。将震动设计为单脉冲震动,脉冲持续时间为 0.1s,间隔 0.5s。
-
当用户进入交叉口区域时,系统使用 TTS 告知用户扫描特定一侧(左/右)的信息,例如:若检测到 “Left, Back” 或 “Left, Front, Back”,系统将提醒用户扫描左侧。
此指令的目的在于让用户确认检测到的交叉口是否是正确,一旦检测成功,系统将告知交叉口通往哪条路,否则系统保持沉默。当用户进入 “Left, Right, Back” 交叉口时,指令示例:
- 用户进入交叉口:Scan Left and Right;
- 用户扫描结束,发现仅有左侧可以通行:(Intersection to) Left。
3.4.2 Conveying Veering-Related Information
系统使用空间化音频反馈用户正确的旋转角度:
- 当用户偏离预定路径时,系统提供反馈以修正用户行走路径。
- 如果用户面向左(右),而实际应该面向右(左),系统将用骨传导耳机在右(左)侧发出正弦音(持续 0.25s,间隔 0.25s,频率 400Hz)。若听不到正弦音,说明面向了正确的方向。
3.4.3 Conveying Obstacle-Related Information
当在 2m 内检测到障碍物时,系统将使用 TTS 告知用户使用哪条路绕行:
- 例如:当障碍物出现在左侧的墙边,系统将提示 ”Make a detour to the right“。
如果障碍物(包括墙)在用户前方 1m 内,系统将持续震动,知道用户面对安全的方向。
4 User Study
招募了盲人进行有效性实验,对比使用导盲杖和系统相结合(system-aided)、仅使用导盲杖(cane-only)的实验结果。
4.1 实验设置
- 参与者:使用电子邮件招募了 14 名盲人,他们有超过 2 年的日常生活主要使用导盲杖作为导航工具和智能手机的经历。
- 实验任务:
- (1)识别并在交叉口转弯:参与者在交叉口转向至特定方向,然后回答交叉口的形状。
- (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%
- 完成时间,导盲杖碰墙次数: