手把手教你做无人驾驶汽车(二)

本文转自公众号 Roboticists

“成吉思汗的骑兵,攻击速度与二十世纪的装甲部队相当;北宋的床弩,射程达一千五百米,与二十世纪的狙击步枪差不多;”

——章北海

无人驾驶是一个软件问题

这两年很多车企都开始做自动驾驶,无论是德系三强还是美国通用,亦或是日本两田,以及国内的各家。无一例外的,在车企的传统思维模式里,自动驾驶应该是由ACC,AEB,LKA,PPS,TSR[注1]……这一系列的功能组成。由此,车企们会说:因为需要这些功能,我们需要在车上安装一个前置毫米波雷达,需要一个Mobileye摄像头,需要超声波传感器……也就是说,按照车企们的想法,加上了这些传感器和它们的控制器,就可以完成ACC,AEB,LKA,PPS,TSR的功能,就可以完成自动驾驶。

真的如此吗?

我们也看到,另外一边,包括谷歌百度以及一些无人驾驶初创公司,并不强调这些传感器,以及它们对应的功能,而只需要一个视频就解释了一切:视频中驾驶员高高举起双手,告诉所有人,这是一套面向Level4的无人驾驶系统。也就说明这辆车的驾驶智能与人的相似。使用者不会也不需要在意是否它能够ACC,AEB,LKA,PPS,TSR……因为这些功能对于无人驾驶汽车来说都是基础得不能再基础的功能——就像你拿到一部智能手机不会问它是否可以发微信一样。对于Level4的无人驾驶而言,这是一个纯粹的软件问题,硬件的区别微不足道。

面向无人驾驶的软件方案

今年4月3日,George Hotz创立的comma.ai收到了硅谷风投Andreessen Horowitz的310万美元的种子轮投资,用以研发低成本的无人驾驶套件[注2]。笔者相信吸引投资人的并不是前文中所写的硬件平台,而是George Hotz的软件。正如Andreessen Horowitz在他的A16z主页上所写的:Software Is Eating the World,软件正吞噬全世界。无人驾驶技术的核心在于软件技术,一个由黑客所搭建的软件系统,自然与众不同。

无人驾驶汽车的开源构架

就像LAMP(Linux, Apache, MySQL, PHP)之于建网站一样,无人驾驶汽车也需要一套软件构架。从笔者了解到的信息,George Hotz使用的应该是自己开发的基于Ubuntu+Python的软件框架。这套框架的好处在于开发灵活,以及与深度学习软件库能很好得进行整合(我们知道Caffe是用python进行开发的,关于这方面后续文章会进行详述)。既然黑客George Hotz的软件神秘又高级,普通人想开发无人驾驶的软件怎么办?好消息是,这套构架有开源的选择,对于普通开发者而言这套系统完全足够做初期的研发:有社区支撑,使用人数众多,有许多开源算法可以调用,而且不需要为昂贵的开发平台支付使用费用。

笔者提供的无人驾驶软件方案也使用Ubuntu作为操作系统,使用ROS(Robot Operating System机器人操作系统)作为软件中间件,并且使用ROS自带的RVIZ进行可视化调试。

我们感受一下调试界面:

ROS的优点

(ROS起初为控制PR2机器人所研发)

ROS拥有一个很强大的社区,学术界很多项目都使用ROS作为平台发布他们算法。有很多有趣的软件包值得我们去尝试。ROS拥有基本上所有我们在《手把手(一)》中提到的传感器驱动,以及调试时用来显示实时数据的RVIZ模块,记录数据log的模块。ROS最大的优点在于它定义了标准的、符合机器人学要求的数据通信格式,这使得各种算法可以顺畅得互相协作。从传感器的驱动,到图像识别,到LiDAR数据的拼接生成地图,到传感器融合,到轨迹生成,到车辆控制。ROS在每个环节都有维护很好且易于配置的开源组件可以选择。当我们熟悉了ROS系统后,我们可以很快搭建出一套简单的无人驾驶系统。

ROS的缺点

当然,ROS有他非常直接的缺点。作为一个控制系统,基于标准Ubuntu的ROS只能说是一套好用的系统,并不是一个可靠的系统。它的通信常有丢包以及延迟不稳定的情况。所以整套系统使用ROS来进行控制,整个控制周期很难提高,且稳定性不足。当然我们也看到很多研究机构如Hitachi和BMW都对ROS在自动驾驶研究的可行性上做了研究。需要对系统进行一定的优化后,以及保证程序的通信以及运行负载不超过阈值的情况下,ROS才能作为控制系统的中间件使用。

为什么选择ROS

正如本文开头所言,自动驾驶是一个软件问题。其核心的问题是一个又一个的算法问题。ROS可以让我们专注于算法,而无需关注太多系统上的“麻烦事”。ROS合适的数据接口以及多对多的通信方式使得模块之间的解耦非常充分。使得我们在系统设计之初就可以充分得将系统拆分为几个独立的模块,并可以对各个模块进行独立的开发。顺便说一下,第一个使用ROS控制无人驾驶汽车的正是参加DARPA挑战赛的斯坦福大学。

总结

文至此,希望有志做无人驾驶汽车的研究人员可以安装一下ROS,浏览一下ROS丰富的软件包,操作一下tutorial里那只小乌龟机器人turtlebot。

不用怀疑,你离无人驾驶汽车的开发又近了一大步。

注1:ACC(Adaptive Cruise Control自适应巡航控制),

AEB(Autonomous Emergency Braking 自动紧急制动),

LKA(Lane Keeping Assist 辅助车道保持),

PPS(Pedestrian Protection System 行人保护系统),

TSR(Traffic Sign Recognition交通标志识别)

注2:http://recode.net/2016/04/03/a16z-led-a-3-1-million-round-in-aftermarket-autonomous-car-company-comma-ai/

原文发布于微信公众号 - CreateAMind(createamind)

原文发表时间:2017-03-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量子位

加州出台严格无人车路测新政:要求各公司尽快申请部署许可

在Uber致死事件发生的13天后,昨天,加州车管所(DMV)出台了更严格的无人车路测新政。

9010
来自专栏量子位

不满足于宜家家具?MIT木工AI机器人,低成本打造定制化家具

每一年都有数以千计的木工在切割木板的时候受伤。 用手扶着木板往电锯那送的时候,手指离电锯很近,看着都心悸。 为了把这种危险系数降到最低,MIT的计算机科学与人工...

388100
来自专栏大数据文摘

亚马逊数据迁移:100万GB数据运输是一个什么体验?

266110
来自专栏Java学习网

4个费劲心思却走向编程地狱的陷阱

4个费劲心思却走向编程地狱的陷阱 优化你的代码、创建编程抽象、编写跨平台的应用程序,几乎所有遵守这些戒律的程序员不出意外都拿着一等票去往了一个没有休憩时间,项目...

26180
来自专栏Golang语言社区

终于入侵了!7.0军团再临前夕版本即将上线

艾泽拉斯的天空日渐灰暗。。。 7.0前夕补丁即将上线,让我们先来看看哪些内容值得期待,并且什么时候可以玩到。 这次补丁更新包含了许多新增的内容从而为7.0资料片...

28590
来自专栏机器人网

让造机器人变得跟黏贴纸一样简单

做一个机器人有多容易?其实没有这么简单。那要如何轻松地打造一个机器人?东京大学及麻省理工大学的Ryuma Niiyama及同事们发现,如果我们尝试着将可被印制和...

26430
来自专栏ATYUN订阅号

Siri现可控制大众汽车,进行解锁,检查里程或按喇叭等操作

你是否想过用Siri解锁你的车?如果你有一辆较新的大众汽车,那么好消息是,现在你可以用Siri解锁它。

11350
来自专栏轮子工厂

Hi,传说中的《超级搜索术》你看了吗?来看看小编的超级总结吧!

“人生中80%的问题,早就被人回答过,你只要搜索就好。剩下的20%,你才需要研究。”今天跟大家聊一聊朱丹老师的《超级搜索术》。你以为我是来给你安利课程的?才不是...

1.2K40
来自专栏阮一峰的网络日志

每周分享第 28 期

欢迎投稿,请前往 GitHub 的 ruanyf/weekly 提交 issue。

13650
来自专栏鹅厂网事

腾讯服务器平台架构师精彩分享天蝎3.0整机设计方向

"鹅厂网事"由深圳市腾讯计算机系统有限公司技术工程事业群网络平台部运营,我们希望与业界各位志同道合的伙伴交流切磋最新的网络、服务器行业动态信息,同时分享腾讯在网...

56260

扫码关注云+社区

领取腾讯云代金券