谷歌开源同步定位与制图库Cartographer
信息时代著名的“所见即所得”原则在地图绘制领域并不那么适用,也就是说,你所看到的(实地考察)不一定会忠实于你最终获得的结果(绘制的地图)。实际上没有比它更不可信的了,一切都取决于现实观察与资料阐释这两个环节。 --法国地理学家、绘图专家、记者 菲利普·荷卡斯韦兹
2016年10月5日,谷歌宣布推出一个开源的实时同步定位与制图(SLAM)库,名为Cartographer,即制图者。开发人员可以用这个库实现二维和三维定位及制图功能。谷歌同时还开放了能将Cartographer集成到ROS、Toyota HSR及TurtleBot三个机器人系统的辅助项目。
实际上在2014年9月,谷歌就曾推出过一款同名的背包,这款背包配备了两个多回波激光扫描仪和一个惯性测量组件,用SLAM技术实时绘制室内平面图。还可以在室内地图上添加信息点,比如标记酒店的房间号、博物馆的展览品等。谷歌说,“只用几个小时就完成了39层的旧金山马奎斯万豪酒店室内地图的制作。”
同步定位与制图(Simultaneous Localization and Mapping--SLAM)技术最早由Smith、Self和Cheeseman在1988年提出。SLAM算法把各种传感器(比如激光雷达、惯性测量单元和摄像机等)中收集来的数据整合到一起,由此来计算传感器的位置,同时绘制传感器周边的地图。
简单来说,Cartographer制图与定位的过程跟我们在自己房间里绘制平面图和定位的过程很像:
站在房间中央,在纸上画一个X来表示自己当前所在的位置。
用激光测距仪测量你到一面墙的距离,然后在纸上画一条线来表示那面墙。
对你能见到的所有墙重复步骤2,直到把所有墙都画出来。
在你移动的新的位置之后,既然墙还没跑(希望如此),再次测量到墙面的距离就可以确定你的新位置。
下图演示Cartographer制图的过程:
除了谷歌的室内测绘背包,在自动驾驶汽车、自动化仓库叉车、吸尘机器人和无人机等自主性平台中,同步定位与制图技术也是最基本的组成部分。
随着人工智能技术的不断发展,可以想见,带有同步定位与制图功能的智能设备在我们未来的生活中将发挥非常重要的作用。正是为了推动该项技术及其社区的发展,在内部研发了三年多之后,谷歌决定将其开源。与此同时,在德意志博物馆的协助下,谷歌还将其在Cartographer背包上收集到的数据一并开放。
目前Cartographer主要是基于激光雷达的SLAM实现,谷歌希望通过后续的开发及社区的贡献,支持更多的传感器和机器人平台,同时不断增加新的功能,比如在已有地图中的定位和终身制图等功能。