目的:人们在导航时往往需要设定具体的起点和终点,但有时他们可能只想找到某个类型的地方,比如最近的商店或厕所。
需求?最短距离、最快速路径、最简单或最少转弯的路径、最少或最多空间访问、最少障碍物的路径、一般安全路径、避开动态障碍物的安全路径、健康最优路径(例如特定程度的卡路里消耗)、最小交通相关空气污染暴露、覆盖最多顶部的路径、通往最近半室内空间的路径、室内旅行商问题路径,考虑用户维度的路径。
准备室内导航网络:1、先将室内空间抽象为导航节点(图c) 2、走廊空间细分 ?生成节点(图c)3、Voronoi生成室内导航网络
概念和参数:
参数 | 定义 | |
---|---|---|
space | 空间 | N1-N22,R1-R7 |
dw | 步行距离 | 以此为半径画圆 |
Rs' | 潜在可达节点 集合 | 位于圆圈内的节点,如N7,R3 |
lp | 导航路径长度 | 沿着导航路径从起点到终点的距离 |
Rs | 可达节点 集合 | lp<dw 时的空间 ,Rs⊆RS' |
Ts | 过渡空间 | 两层楼之间的楼梯 |
dt | 过渡距离 | 从一层到另一层的过渡空间的距离 |
dr | 剩余步行距离 | dr=dw-lp |
五个步骤:
step1:将Rs'设置在起点所在的楼层,画二维圆
step2:将Rs'按照与起点的直线距离降序排列
step3:在排序后的RS'的基础上,根据Dijkstra一一计算出从起点到它们的最短导航路径。导航路径包含的所有节点都被记录在RS集合中。并记录这些路径的长度在lp中。
step4:如果在可达空间Rs集合中存在一些过渡空间TS,计算每个Ts的dt,如果dr>dt,则返回步step1,且起点被设置到了另一层的TS上,且 dr要减去dt
如图所示:A为起点,B在dw为半径的圆内,A到B的导航路径长度为lp。上下是相邻的两个过渡空间Ts。一旦(dr=dw-lp)>dt,则起点会被设置到过渡空间Ts上,即B1或B2点。并重复前四个步骤,步行距离要减去dt。
step5:最后,从Rs中选择目的地,同时也选择了路径。
实验结果:
一、从五楼的Nespresso出发,找到最近的厕所,dw=150m。
a)在五楼以dw为半径画二维圆,生成Rs'集合(81个) b)将直线距离按降序排列,计算lp,找到 lp<dw的Rs集合(56个)其中有7个过渡空间Ts。
表)7个Ts的dt和dr如表所示,发现EscalatorB_L5的dr<dt,所以排除。剩下6个Ts将作为新的起点,用(dr-dt)作为新的搜索半径
最后找到了18个可到达的空间,其中9个位于四楼,另外9个位于六楼,如果里面包含厕所,就找到了目的地。
二、从一楼Fone King出发,想要找到最近的打印机,dw=150m。
a)彩色圆圈显示搜索区域从下层到上层变得越来越小
a)同一层的打印机Printer_A(143.63) b) Printer_B(125.01)的实际步行距离比到Printer_A(143.63)短