剑客
关注科技互联网

细思极恐!谷歌近期开源的SLAM方案究竟在下一盘怎样的大棋?

10秒总结全文:Cartographer是谷歌刚刚开源的使用激光雷达进行2D/3D SLAM的算法库。其算法本身未必拔萃,但从设计到实现都是产品级的,很可能会在SLAM相关业界带来不小的反响。相关业者或许需要认真审视技术路线和商业模式。

作者介绍:邵天兰,清华大学软件学院本科,慕尼黑工大硕士,梅卡曼德机器人科技创始人。在德国工作多年,深度参与了最先进协作机器人的研发。2016年夏拒绝了硅谷数家知名企业的offer,回国创业。作为资深程序员,追求炫酷而实用的硬核技术——当然没有比机器人更合心意的东西了。

个人知乎主页:https://www.zhihu.com/people/shaotianlan

谷歌于10月6号在GitHub上开源了名为Cartographer的SLAM库。次日晚上我看到消息,顺手克隆下来代码。本来不甚以为意,不意扫了一眼之后倒抽一口气,就靠一罐红牛读代码读到凌晨四点。下面是我的一些想法,主要侧重于非技术的方面。一孔之见,权作抛砖引玉。

Cartographer可以使用2D或3D激光雷达来进行SLAM(同时定位与地图构建),其中2D的算法在文章[1]中有描述,而代码中3D的算法和2D算法基本思路一致。我认为,Cartographer的算法虽然算是一流,但似乎并没有牛到让我合不拢嘴的程度。泛泛总结一下Cartographer的算法:用Grid(2D/3D)的形式建地图;局部匹配直接建模成一个非线性优化问题,通过IMU(惯性测量单元)获得比较靠谱的初值,再用Ceres库进行求解;后端用Graph来优化,用分支定界算法来加速;2D和3D的问题统一在一个框架下解决。

细思极恐!谷歌近期开源的SLAM方案究竟在下一盘怎样的大棋?

算法的具体过程先放一边,先来感受一下算法的设计目标:低计算资源消耗,实时优化,不追求高精度。这个算法的目标应用场景昭然若揭:室内用服务机器人(如扫地机器人)、室内AGV(如机场用的无人电瓶车),无人机等等计算资源有限、对精度要求不高、且需要实时避障的和寻路的应用。而3D SLAM如果能用在无人机上,也是非常炫酷且实用的事情。

学术界不少人认为,基于激光雷达的2D SLAM在室内、低速、静态环境的条件下已经可以认为被基本上解决了,现有成果对很多应用来说已经完全够用。例如下图是小米机器人的建图效果。请注意,这是普通用户在实际家居情况下自行使用得到的结果。我第一见到这个图的时候,惊得半天说不出一句话。在如此复杂的环境中,整个图没有明显的错位(右侧乱糟糟的房间是因为堆满杂物),两侧的墙都很直而且完美平行——而这一切都是在很低的价格下做到的。据网上消息,该扫地机器人使用的激光雷达是米家供应链研发的,成本或能低至200块——又是半天说不出一句话。而在SLAM算法层面,Cartographer的开源使得大家不但有论文可以参考,还有代码可以直接拿来用,因此可能降低了其他厂家在算法上追赶的难度。但供应链的壁垒依然高峻。

细思极恐!谷歌近期开源的SLAM方案究竟在下一盘怎样的大棋?

图片来源:知乎用户程序鱼an

我不掌握谷歌内部关于这个项目的消息,这里诛心一点:现在扫地机器人、端茶倒水机器人、无人机等等火的不要不要的,谷歌要插一杠子进来。虽然暂时只是一个SLAM库,但后续发展谁知道呢?会不会出现机器人的Android系统呢? 谷歌在Andy Rubin离开后,对机器人行业的整体规划让外人看不明白(很可能他们自己也不明白 ),所以后续的发展也只能拭目以待了。

而且读代码之后,我认为Cartographer这个库最重要的东西还不是算法,而是实现。这个库实现度很高,而且非常谷歌 style。例如算法的核心部分仅仅依赖于以下几个库:

Boost:准标准的C++库。

Eigen3: 准标准的线性代数库。

Lua:非常轻量的脚本语言,主要用来做Configuration

Ceres:这是Google开源的做非线性优化的库,仅依赖于Lapack和Blas

Protobuf:这是Google开源的很流行的跨平台通信库

没有PCL,g2o,iSAM,sophus, OpenCV, ROS 等等,几乎所有轮子都是谷歌自己造的。因此整个开源软件栈在事实上都是由谷歌控制的。这明显不是搞科研的玩儿法,就是奔着产品去的。前面说过,Cartographer需要的计算资源少,依赖少,而且代码质量也很不错,因此几乎可以直接应用在一个产品级的嵌入式系统上。以前学术界出来的开源2D/3D SLAM算法不少,但能几乎直接拿来就用在产品上的,恕我孤陋寡闻还真想不出来。因此,我认为开发基于激光雷达的室内SLAM算法的门槛被显著降低了。

这个库其实不需要在效果上成为最牛的,现在看起来已经完全够用了。开源、需要资源少,代码干净拿来就能使,而且效果还不错……呼,幸亏在下是搞机器臂智能系统的,不是搞SLAM方案的,要不然岂不是要睡不着觉?现在创业者除了担心BAT模仿,还要担心谷歌开源 。当然现在只是有基于激光雷达的算法,基于摄像头的SLAM仍然是很有挑战性以及实用价值的。

借Cartographer这件事我想斗胆分享一下我开始创业以来的一些思考。

现在机器人相关领域是创业的热点,其中一个原因就是来自学术界的研究成果逐渐接近了实用的门槛。例如前述的基于激光雷达的SLAM,还有基于视觉的SLAM、机器视觉、人脸识别、智能规划等等,都是基于学术界近年来的成果。

创业团队的配置也从移动互联网时代的英雄不问出处,变成了标配大量名校海归、博士、甚至博导。我司也是其中之一。学术界背景的团队有时会习惯性地从技术出发思考问题,但是产品形式、商业模式、和产业链地位对创业成功的影响很可能不亚于技术本身。学术界的成果通常会以论文的形式公开,单一团队(包括谷歌等巨无霸)很难对整个业界长久保持25%以上的领先,更难有碾压式的领先。

退一步讲,技术上即使能保持领先,除非恰好位于实用门槛的两侧,否则也很难形成真正的壁垒。因此有了领先的技术后,产品形式如何、商业模式如何、在产业链的地位如何,是值得花大力气研究的。特别是产业链地位,如何没有想好,很容易出现受夹板气的情况。而且也要将心比心:如果用了某产品,会使我处于产业链上很不利的地位,那么我很可能就会另谋方案。

发布短短几天,Cartographer就已经是GitHub上所有有关SLAM的repo中获得Star最多的了(见下图),一举超过了许多诞生多年的知名repo。就问你怕不怕!

细思极恐!谷歌近期开源的SLAM方案究竟在下一盘怎样的大棋?

前两天刷朋友圈看到余凯老师呼吁大家避免使用谷歌开源的TensorFlow(用于高效机器学习的库),我当时——

细思极恐!谷歌近期开源的SLAM方案究竟在下一盘怎样的大棋?

结果才两天就被教做人了。。。。我只能算是深度学习的初级应用者,对TensorFlow的态度更多的是坐享其成。但是2D/3D SLAM对我来说就更为熟悉和相关了。熬夜读Cartographer的代码时,我似乎有点儿理解了余凯老师的想法。

当年微软等公司不开源,招致Free Software Foundation为首的键盘侠们(无贬义)的口诛笔伐。如今谷歌恨不得开源一切,搞实际控制:例如Android(手机操作系统)和Blink(浏览器内核),虽然都开源,但事实上都由谷歌掌控。对此我只能说:

细思极恐!谷歌近期开源的SLAM方案究竟在下一盘怎样的大棋?

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址