使用OpenStreetMap进行全球市郊导航
本文提出了一种使用OpenStreetMap数据进行自主机器人导航的概率方法。该方法将机器人基于3D LiDAR数据检测到的轨迹与OpenStreetMap中的轨迹相结合。它结合了从3D-LiDAR数据中提取的语义地形信息,以及马尔可夫链蒙特卡洛技术,以匹配来自OpenStreetMap的轨迹和传感器数据。这使我们的机器人能够使用OpenStreetMap进行导航规划,并在执行这些计划时仍然保持在小街道、土路和森林道路上。我们展示了在真实世界环境中进行的广泛实验的结果,这些结果证明了我们的系统在相对于OpenStreetMap数据的车辆姿态对齐方面的鲁棒性。
I. 引言
稳健的导航是真正自主移动机器人系统的重要先决条件。大多数最先进的大规模导航解决方案使用同时定位与地图构建(SLAM)问题的解决方案来创建环境的准确地图。其中一些解决方案会生成密集的占用网格地图以及从其中派生的拓扑图。然后使用拓扑高级图进行全局路径规划,而细粒度地图作为地图瓦片动态加载到机器人的局部区域。这样做的缺点是,首先需要探索和绘制未知区域,然后在操作时需要在线运行主动定位模块。此外,只有在之前探索过的区域才能进行规划,并且需要存储大量数据。在这项工作中,我们将用OpenStreetMap(OSM)的数据替换事先创建全局地图的需求,并在线建模机器人的周边环境,这使得自主机器人能够在以前未见过的环境中导航。这需要两个能力:首先,我们需要知道机器人在OSM中的位置,其次,我们需要知道如何从OSM计算路径,并且在OSM错误的情况下将其转换为实际轨迹。我们的想法是受到人类如何使用由制图服务提供的地图进行全局路径规划和导航目的的启发。OpenStreetMap提供的制图数据基于“志愿者地理信息”(VGI),如Haklay和Weber [5]所述,并且在“开放数据库许可证(ODbL)”下公开可用。在机器人学的背景下,VGI地图的准确性有限,并且不能直接与通过SLAM获得的地图进行比较。要使用它们进行机器人导航,我们需要考虑几种误差来源,例如,节点可能由于贡献者的误差而放置在错误的位置,不准确的GPS估计(在地图创建和操作时)以及通过线段稀疏近似轨迹。有趣的是,人类可以轻松解决这些不准确之处。我们假设这源于人类能够分类轨迹并与地图关联,而不是完全依赖GPS估计。在本文中,我们提供了一种新的方法来模仿这种人类能力,使像OpenStreetMap这样的地图能够用于外城环境的全局路径规划,以自主导航在小街道、土路和森林道路上。为了实现这一点,我们比较了地图上的轨迹形状与语义地形分类,并使用马尔可夫链蒙特卡洛技术来确定我们局部框架中最可能的轨迹位置。有了这个校正,就可以使用OSM的数据为实际的自主机器人进行全局路径规划,该机器人发送短期子目标到一个局部规划器,该规划器在机器人的附近区域导航机器人。
图1 我们的方法解决了城市外围环境中的机器人导航问题,旨在将OpenStreetMap(红色)给出的路径与传感器数据中最有可能对应街道(黑色)的部分进行匹配。它是专为应对地图和GPS误差而设计的。
II. 相关工作
近年来,像OSM这样的公开可用地图在机器人应用中引起了兴趣,并且已有几位作者利用这类地图进行定位,通过将机器人观察到的数据与地图的道路网络进行匹配。例如,Floros等人[3]使用Chamfer距离来比较机器人的视觉里程计轨迹与OSM网络结构。Mandel和Birbach[8]将GPS和里程计数据融合用于OSM定位。Ruchti等人[11]将单个3D-LiDAR扫描分割成街道和非街道区域,并匹配街道段与道路网络,同时考虑非街道的信息。这些方法虽然在全局定位方面表现出了令人印象深刻的鲁棒性,但它们在定位精度上通常只能达到几米的准确度,这不足以满足我们将目标点与轨迹对齐的需求。其他方法使用地理标记图像作为定位的地图源,并匹配从图像中检索到的信息与地图中的图像。还有一些基于特征的方法,它们将全景图,例如GoogleStreetView,与本地相机图像进行匹配[1, 14, 13]。然而,这些方法假设有一个丰富的基于图像的地图,这在任何地方都不可用,尤其是在外城和森林环境中。另一种基于相机的方法,Radwan等人[10]从图像中提取文本信息,并将其与地图的地理参考文本匹配进行定位,这种信息在外城环境中是稀疏的。与我们的方法更接近的是,Mattyus等人[9]结合了单目航拍图像和机器人的立体图像,估计它们在OSM中的位置,并使用从深度学习图像分类中提取的语义信息来增强地图。作者假设OSM对齐的误差垂直于道路方向,这也是我们方法中的一个假设。然而,他们进一步假设误差在四米的固定范围内,这对于KITTI的城市数据集似乎是足够的。在我们的情况下,我们不能将误差限制在固定范围内,因为在森林环境中我们面临的误差高达十米甚至更多。Irie等人[7]从GoogleMaps的结构表示中提取边界,并将它们投影到机器人记录的图像上。匹配分数基于图像特征与地图中投影标签之间的平方损失互信息。这种方法专门用于城市环境,并且需要手动预处理地图转换。最近,Hentschel和Wagner[6]提出了一种OSM导航方法,其中3D-LiDAR数据与地图提供的丰富地标信息,例如建筑物的总汇,进行匹配。这种方法特别适合城市环境,不能直接应用于外城环境,因为它们不能保证包含所需的足够数量的特征。从相关工作中可以看出,OSM质量的不确定性是一个众所周知的问题。在城市环境的背景下,方法通常假设误差范围从两米到四米,这对外城环境来说是一个过于强的假设。Haklay[4]评估了OSM的质量,重点关注伦敦和英格兰。他的分析显示,Ordnance Survey(OS)在伦敦不同地区记录的位置平均距离OSM中的相应位置六米。他还比较了OS和OSM中小道路的重叠程度,结果从5%到100%不等,这表明这类地图存在实质性误差,并为我们的方法提供了明确的动机。
图2。子图(a)将语义分类可视化,区分街道(黄色)、脏路(棕色)、草地(绿色)、植被(紫色)和其他(粉色)。红线显示没有校正的OSM表示,黑线显示通过我们的方法估计的位置。子图(b)显示了加权函数,其中亮色对应于高权重。在子图©中,蓝色标记代表可能的子目标的样本分布。
图3。我们用于评估航空影像的数据集的GPS轨迹。自主轨迹用黄色表示,遥控轨迹用红色表示。Mooswald数据集在我们的校园附近收集,Schauinsland数据集在附近的一座山上收集
III. 预备知识
在本节中,我们简要介绍本文所基于的框架。为了实现一个统一的系统,我们的目标是将OpenStreetMap上的全局规划与机器人的局部框架连接起来,后者由基于3D-LiDAR传感器读数的语义地形分类表示。我们将使用OpenStreetMap的道路网络作为全局度量拓扑图,以便为一个规划器提供短期子目标,该规划器仅使用GPS、IMU、里程计和3D-LiDAR传感器提供的传感器信息来建模机器人的局部环境。
A. 在OpenStreetMap上的规划
为了在街道网络图上进行高效规划,我们使用标准的A算法来计算OSM图上期望目标位置的路径。假设车辆位于道路上,我们通过GPS位置到OSM中最近街道的正交投影来确定起点。为了给局部规划器提供增量子目标,我们沿着A算法生成的路径等距地对子目标进行采样。因此,我们在全局UTM坐标系统中获得了一系列建议的子目标 gG 0, …, gG n。每当一个子目标几乎被达到时,我们就发送下一个子目标,直到发送最终的目标点。图2(a)中左侧的红色线可视化展示了这个采样路径的例子。然而,由于地图或GPS姿态估计的不准确性等多种误差来源,这种简单方法本身不能直接使用。正如Mattyus等人[9]所描述的,这些误差主要在垂直于道路的方向上。为了纠正这一错误,使导航计划变得有用,我们的方法包括一个专用的地形分类器,以识别机器人附近的道路。
B. 语义地形信息
为了将全局子目标一致地整合到机器人的局部框架中,我们依赖于基于3D-LiDAR的语义地形分类。为此,我们使用与我们之前工作[12]中相同的随机森林分类器,使用固定分辨率的滚动网格地图来注册基于里程计测量的3D点,固定距离d。然后,我们为每个单元计算一个基于点的反射率和局部几何形状的五维特征向量。我们训练一个随机森林分类器作为模糊的地形类型分类器,并假设静态地形图、单个单元的独立性以及连续观测的独立性。因此,我们可以为每个单独的单元维护一个关于地形类型的概率分布,给定特征f:
P ( t ∣ f 1 , … , f n ) = η P ( t ∣ f n ) P ( t ∣ f 1 , … , f n − 1 ) P ( t ) P ( t ∣ f 1 , … , f n ) = η P ( t ) P ( t ∣ f n ) P ( t ∣ f 1 , … , f n − 1 ) P(t∣f1,…,fn)=ηP(t∣fn)P(t∣f1,…,fn−1)P(t)P(t∣f1,…,fn)=ηP(t)P(t∣fn)P(t∣f1,…,fn−1) P(t∣f1,…,fn)=ηP(t∣fn)P(t∣f1,…,fn−1)P(t)P(t∣f1,…,fn)=ηP(t)P(t∣fn)P(t∣f1,…,fn−1)
其中,归一化常数η与地形类别t无关,先验P(t)在我们的当前实现中是均匀的。有关更多细节,请参考Suger等人[12]。我们区分了街道、土路、草地、植被和其他地形类别,见图2(a)对地形类别图的可视化。
IV. 子目标对齐
在本节中,我们解释了我们的方法如何结合两个独立地图的信息。从OSM的全局规划器,我们接收到一系列子目标 gG 0, …, gG n,它们由其UTM坐标表示。我们将接收到的子目标转换为机器人的局部里程计框架,得到 gL 0, …, gL n。有了机器人框架中的子目标,我们计算差值 GL k = gL k - gL k-1,并将其表示为方向 θk = atan2(GL k(y), GL k(x)) 和距离 dk = ||GL k||2,并将其建模为随机变量uk的值。我们工作的目标是找到最佳的本地子目标配置,考虑到来自3D-LiDAR的观测。为此,我们在IV-A节中推导出一个概率公式,并在IV-B节和IV-C节中提供其组成部分的详细信息。最后,为了估计最近子目标的位置,我们在V节中使用这个公式进行马尔可夫链蒙特卡洛方法。
图4。我们的方法(N)和来自OSM的未校正数据的十个实例的平均RMSE,其中N表示样本的数量。我们的方法对于不同的样本大小实现了相似的RMSE,并且对于长度为4的序列实现了最小值。
图5。我们的方法与来自OSM的未校正数据相比,在我们的评估集中使用的每个子目标的误差。对于我们的方法,我们使用了1000个样本,在这种情况下序列长度为4。
VI. 实验
我们使用如图1所示的机器人在真实世界环境中进行了实验,该机器人既可以自主导航,也可以通过远程控制进行导航。首先,在VI-A节中详细介绍了我们的系统设置。为了衡量我们方法的质量,我们需要评估子目标是否位于机器人的局部框架中的轨迹上,以便机器人可以沿着OSM上全局规划的路径前进。在VI-B节中,我们将研究样本序列长度K和用于近似分布的样本数量对此度量的影响。特别是在在线设置中,运行时间变得重要,VI-C节中将讨论这方面的结果。最后,在VI-D节中,我们将讨论方法的局限性,并讨论我们的方法可能无法找到正确路径的情况。
A. 系统设置
在所有实验中,我们使用了装备有Velodyne HDL-64E 3D-LiDAR传感器、陀螺仪传感器、IMU传感器、卡尔曼滤波GPS和内部里程计的相同机器人的数据。地形分类每行驶0.5米累积一次测量数据。网格的分辨率设置为0.2米,大小为300×300,以模拟机器人的周边环境,见III-B节。每四米生成一个子目标,并使用OpenStreetMap作为地图服务。在所有实验中,我们将邻域大小设置为N=2,对应于1米×1米的尺寸,并将λ设置为4,见IV-C节。地形成本函数设置为{街道:0.1,土路:0.2,草地:0.4,植被:0.8,其他:1.0}。如果请求没有观测值的单元的值,则返回等于其他值的默认值。在评估中,我们考虑了两个地点的数据集,一个位于我们校园附近(Mooswald),另一个位于弗莱堡附近的山区(Schauisland)。轨迹的GPS轨迹在图3的航拍图像上进行了可视化。
总的来说,我们评估了总长度为14公里的数据。
图6。计算我们的方法N的更新的平均运行时间,其中N表示样本的数量。
图7。一个例子,我们的方法无法找到正确的路径(左),由于一个模糊的分类结果。来自OSM(红色)的路径完全匹配。我们的方法(black)在被分类为土路的区域估计子目标,而实际路径主要被分类为草地。分类一改进,我们的方法就恢复了(对)。
B. 性能
首先值得一提的是,我们的方法已成功应用于真实机器人上,该机器人在两个区域(见图3)自主导航,总轨迹长度为5.2公里,我们使用了1000个样本和长度为四的样本序列。我们的方法使机器人在离开道路和卡住与成功到达目标之间产生了差异。这些运行包含了包括Y形交叉口和节点在交叉口几米外的挑战性情况。为了量化这些定性结果,我们计算了均方根误差(RMSE),以测量子目标与机器人局部框架中街道中间的距离。由于缺乏真实的地面数据,我们使用机器人大部分时间都在街道中间行驶的知识点来近似这个误差度量。给定一系列机器人姿态p1:m和一系列使用长度为K的样本序列校正的子目标gK 1:n,并假设中等街道宽度s = 3米,我们计算RMSE如下:
R M S E K = 1 n ∑ i ≤ n m a x ( m i n l ≤ m ∥ g K i − p l ∥ 2 − s , 0 ) 2 R M S E K = n 1 ∑ i ≤ n m a x ( m i n l ≤ m ∥ g K i − p l ∥ 2 − s , 0 ) 2 RMSEK=1n∑i≤nmax(minl≤m∥gKi−pl∥2−s,0)2RMSEK=n1∑i≤nmax(minl≤m∥gKi−pl∥2−s,0)2 RMSEK=1n∑i≤nmax(minl≤m∥gKi−pl∥2−s,0)2RMSEK=n1∑i≤nmax(minl≤m∥gKi−pl∥2−s,0)2
在计算RMSE时,我们合并了所有轨迹的姿态和子目标。我们比较了1000到50000个样本大小,并变化了从1到10的序列长度。由于我们方法的随机性质,我们比较了每种设置下10次实例的平均RMSE。结果以及未经校正的OSM数据的RMSE如图4所示。序列长度为四在所有样本大小下都实现了最小的RMSE,从1000个样本的0.78米到10000个样本的0.72米不等。与原始OSM数据的RMSE为3.6米相比,我们的方法将误差降低了高达80%。图5比较了使用我们的方法校正的每个子目标的错误(在这个案例中使用了1000个样本和长度为四的序列)与OSM原始子目标的错误。OSM的错误多次超过十米,而我们方法的错误通常低于1米。除了一种情况外,我们方法的错误较高的单个峰值源于交叉口,在交叉口处可能的街道点区域很大,轨迹通常相对于OSM中的形状表示采取捷径,这没有被我们的错误测量考虑。尽管如此,将我们方法的错误与OSM的错误进行单尾配对学生t检验,使用我们的方法的改进在所有设置和实例中都是显著的(α = 0.05)。
C. 运行时间
特别是当我们将其部署在真实自主系统上时,我们方法的运行时间变得重要。我们的方法使用C++高效实现,我们测量了在Intel® Core™ i7-2700K CPU @ 3.50 GHz的单个核心上不同设置的运行时间。地形图更新,分别在单独的线程中每0.5米计算一次,平均需要0.3秒,不包括在本次评估中。对于我们的方法,运行时间与样本数量和序列长度几乎成线性关系,见图6。使用1000个样本和长度为四的序列,平均更新时间是8.3毫秒,而使用50000个样本,这个时间增加到62毫秒。我们的参数选择完全支持我们的运行时和准确性评估。这种系统设置实现了实时性能,这对于真实世界场景中的自主导航至关重要。
D. 局限性
我们方法的性能取决于地形分类的质量和准确性。在远程控制的实验中,我们遇到了这样的情况,路径被草覆盖,而几米外分类器为土路找到了证据,因此子目标的估计漂移到了那个区域,见图7左图。然而,一旦路径在几米后可以从周围环境中区分出来,我们的方法就可以从失败中成功恢复,见图7右图。当自主导航时,这意味着机器人可能在该区域偏离期望路径,并在我们的方法从失败中恢复后立即返回到路径上。
VII. 结论
在本文中,我们提出了一种使用公开可用的OpenStreetMap地图数据作为全局地图进行外城环境自主导航的方法。我们的方法仅依赖于机器人局部区域的感知,因为全局地图由OSM表示,因此它只需要恒定的内存。此外,它非常高效,并且能够在线运行在真实世界环境中自主导航的机器人上。实验评估显示了我们方法的鲁棒性。