QCon 全球软件开发大会(北京站)门票 9 折倒计时 4 天,点击立减 ¥880 了解详情
写点什么

谷歌开源同步定位与制图库 Cartographer

2016 年 10 月 12 日

信息时代著名的“所见即所得”原则在地图绘制领域并不那么适用,也就是说,你所看到的(实地考察)不一定会忠实于你最终获得的结果(绘制的地图)。实际上没有比它更不可信的了,一切都取决于现实观察与资料阐释这两个环节。 -- 法国地理学家、绘图专家、记者 菲利普·荷卡斯韦兹

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 制图与定位的过程跟我们在自己房间里绘制平面图和定位的过程很像:

  1. 站在房间中央,在纸上画一个 X 来表示自己当前所在的位置。
  2. 激光测距仪测量你到一面墙的距离,然后在纸上画一条线来表示那面墙。
  3. 对你能见到的所有墙重复步骤 2,直到把所有墙都画出来。
  4. 在你移动的新的位置之后,既然墙还没跑(希望如此),再次测量到墙面的距离就可以确定你的新位置。

下图演示 Cartographer 制图的过程:

除了谷歌的室内测绘背包,在自动驾驶汽车、自动化仓库叉车、吸尘机器人和无人机等自主性平台中,同步定位与制图技术也是最基本的组成部分。

随着人工智能技术的不断发展,可以想见,带有同步定位与制图功能的智能设备在我们未来的生活中将发挥非常重要的作用。正是为了推动该项技术及其社区的发展,在内部研发了三年多之后,谷歌决定将其开源。与此同时,在德意志博物馆的协助下,谷歌还将其在Cartographer 背包上收集到的数据一并开放。

目前Cartographer 主要是基于激光雷达的SLAM 实现,谷歌希望通过后续的开发及社区的贡献,支持更多的传感器和机器人平台,同时不断增加新的功能,比如在已有地图中的定位和终身制图等功能。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016 年 10 月 12 日 19:002183
用户头像

发布了 45 篇内容, 共 22.5 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

面试官的灵魂一击:你懂 MySQL 事务日志吗?

Java架构师迁哥

批处理 有状态等应用类型在K8S上应该如何配置?

东风微鸣

Kubernetes 最佳实践

商用密码与区块链共推数字经济发展

CECBC区块链专委会

网络安全 数字经济

《码出高效:Java开发手册》“码” 出高效的同时编写出高质量的代“码”。

Java成神之路

Java 程序员 架构 面试 编程语言

架构训练营第一周学习小结

李日盛

1分钟带你get React setState 面试要点

Leo

面试 前端 React 前端进阶训练营 setState

食堂就餐卡系统设计

Griffenliu

区块链赋能供应链金融|应用优势与四类常见模式

CECBC区块链专委会

区块链

关于编码

西贝

Java 编码

Java中的String到底占用多大的内存空间?你所了解的可能都是错误的!!

冰河

Java 内存泄露 string 性能调优 内存溢出

架构师训练营第一周课后作业

李日盛

容器开发运维人员的Linux操作机配置优化建议

东风微鸣

Kubernetes 最佳实践 k8s入门

小熊派开发实践丨漫谈LiteOS之传感器移植

华为云开发者社区

开发 IoT stm32

如何基于消息中间件实现分布式事务?我想说的都在这儿了!!

冰河

分布式事务 微服务 分布式数据库 数据一致性 海量数据

spring-boot-route(二十二)实现邮件发送功能

Java旅途

Java Spring Boot 发送邮件

容器化应用系统上生产的最佳实践

东风微鸣

Kubernetes 最佳实践 生产

Vidyo产品给用户方带来了什么直接的便利

dwqcmo

音视频 集成架构 解决方案 智能硬件

socket编程

菜鸟小sailor 🐕

websocket

为什么Java容器推荐使用ExitOnOutOfMemoryError而非HeapDumpOnOutOfMemoryError?

东风微鸣

Kubernetes 最佳实践 jvm调优

Java中String占用空间的评估标准

陈德伟

Java jdk 源码剖析

学习总结

饺子

全面到哭!BAT内部Java求职面试宝典,必须人手一份!

Java架构之路

Java 程序员 架构 面试 编程语言

数据安全无小事:揭秘华为云GaussDB(openGauss)全密态数据库

华为云开发者社区

安全 数据 加密

MySQL官方特供649页顶级笔记,凝聚社区力量深入技术内幕

周老师

Java 编程 程序员 架构 面试

mongodb源码实现、调优、最佳实践系列-Mongodb网络模块源码实现及性能调优(一)

杨亚洲(专注mongodb及高性能中间件)

MySQL mongodb 中间件 架构师 分布式数据库mongodb

数据湖探索DLI新功能:基于openLooKeng的交互式分析

华为云开发者社区

数据 处理

标准的开发框架,对企业开发有多重要?

Learun

敏捷开发 快速开发

在K8S Volume中使用 subPath

东风微鸣

Kubernetes 最佳实践

谁说AI看不懂视频?

华为云开发者社区

视频 剪辑

微服务的理想与现实

京东科技开发者

云原生

终于,SM2国密算法被Linux内核社区接受了!

阿里云基础软件团队

边缘计算隔离技术的挑战与实践

边缘计算隔离技术的挑战与实践

谷歌开源同步定位与制图库Cartographer-InfoQ