2
本文作者: Roboticists | 2016-12-06 16:22 |
雷鋒網(wǎng)按:作者夾子,汽車行業(yè)資深從業(yè)者,微信公眾號(hào) Roboticists。本文為《手把手教你做無人駕駛汽車》系列第二篇。其他兩篇可點(diǎn)擊《手把手(一)》、《手把手(三)》。
無人駕駛是一個(gè)軟件問題
這兩年很多車企都開始做自動(dòng)駕駛,無論是德系三強(qiáng)還是美國(guó)通用,亦或是日本兩田,以及國(guó)內(nèi)的各家。無一例外的,在車企的傳統(tǒng)思維模式里,自動(dòng)駕駛應(yīng)該是由ACC、AEB、LKA、PPS、TSR……這一系列的功能組成。由此,車企們會(huì)說:因?yàn)樾枰@些功能,我們需要在車上安裝一個(gè)前置毫米波雷達(dá),需要一個(gè)Mobileye攝像頭,需要超聲波傳感器……也就是說,按照車企們的想法,加上了這些傳感器和它們的控制器,就可以完成ACC、AEB、LKA、PPS、TSR的功能,就可以完成自動(dòng)駕駛。
真的如此嗎?
我們也看到,另外一邊,包括谷歌百度以及一些無人駕駛初創(chuàng)公司,并不強(qiáng)調(diào)這些傳感器,以及它們對(duì)應(yīng)的功能,而只需要一個(gè)視頻就解釋了一切:視頻中駕駛員高高舉起雙手,告訴所有人,這是一套面向Level4的無人駕駛系統(tǒng)。也就說明這輛車的駕駛智能與人的相似。使用者不會(huì)也不需要在意是否它能夠ACC,AEB,LKA,PPS,TSR……因?yàn)檫@些功能對(duì)于無人駕駛汽車來說都是基礎(chǔ)得不能再基礎(chǔ)的功能——就像你拿到一部智能手機(jī)不會(huì)問它是否可以發(fā)微信一樣。對(duì)于Level4的無人駕駛而言,這是一個(gè)純粹的軟件問題,硬件的區(qū)別微不足道。
面向無人駕駛的軟件方案
今年4月3日,George Hotz創(chuàng)立的comma.ai收到了硅谷風(fēng)投Andreessen Horowitz的310萬美元的種子輪投資,用以研發(fā)低成本的無人駕駛套件。筆者相信吸引投資人的并不是前文中所寫的硬件平臺(tái),而是George Hotz的軟件。正如Andreessen Horowitz在他的A16z主頁(yè)上所寫的:Software Is Eating the World,軟件正吞噬全世界。無人駕駛技術(shù)的核心在于軟件技術(shù),一個(gè)由黑客所搭建的軟件系統(tǒng),自然與眾不同。
無人駕駛汽車的開源構(gòu)架
就像LAMP(Linux, Apache, MySQL, PHP)之于建網(wǎng)站一樣,無人駕駛汽車也需要一套軟件構(gòu)架。從筆者了解到的信息,George Hotz使用的應(yīng)該是自己開發(fā)的基于Ubuntu+Python的軟件框架。這套框架的好處在于開發(fā)靈活,以及與深度學(xué)習(xí)軟件庫(kù)能很好得進(jìn)行整合(我們知道Caffe是用python進(jìn)行開發(fā)的,關(guān)于這方面后續(xù)文章會(huì)進(jìn)行詳述)。既然黑客George Hotz的軟件神秘又高級(jí),普通人想開發(fā)無人駕駛的軟件怎么辦?好消息是,這套構(gòu)架有開源的選擇,對(duì)于普通開發(fā)者而言這套系統(tǒng)完全足夠做初期的研發(fā):有社區(qū)支撐,使用人數(shù)眾多,有許多開源算法可以調(diào)用,而且不需要為昂貴的開發(fā)平臺(tái)支付使用費(fèi)用。
筆者提供的無人駕駛軟件方案也使用Ubuntu作為操作系統(tǒng),使用ROS(Robot Operating System機(jī)器人操作系統(tǒng))作為軟件中間件,并且使用ROS自帶的RVIZ進(jìn)行可視化調(diào)試。
我們感受一下調(diào)試界面:
ROS的優(yōu)點(diǎn)
(ROS起初為控制PR2機(jī)器人所研發(fā))
ROS擁有一個(gè)很強(qiáng)大的社區(qū),學(xué)術(shù)界很多項(xiàng)目都使用ROS作為平臺(tái)發(fā)布他們算法。有很多有趣的軟件包值得我們?nèi)L試。ROS擁有基本上所有我們?cè)凇妒职咽郑ㄒ唬分刑岬降膫鞲衅黩?qū)動(dòng),以及調(diào)試時(shí)用來顯示實(shí)時(shí)數(shù)據(jù)的RVIZ模塊,記錄數(shù)據(jù)log的模塊。ROS最大的優(yōu)點(diǎn)在于它定義了標(biāo)準(zhǔn)的、符合機(jī)器人學(xué)要求的數(shù)據(jù)通信格式,這使得各種算法可以順暢得互相協(xié)作。從傳感器的驅(qū)動(dòng)、到圖像識(shí)別、到LiDAR數(shù)據(jù)的拼接生成地圖、到傳感器融合、到軌跡生成、到車輛控制。ROS在每個(gè)環(huán)節(jié)都有維護(hù)很好且易于配置的開源組件可以選擇。當(dāng)我們熟悉了ROS系統(tǒng)后,我們可以很快搭建出一套簡(jiǎn)單的無人駕駛系統(tǒng)。
ROS的缺點(diǎn)
當(dāng)然,ROS有他非常直接的缺點(diǎn)。作為一個(gè)控制系統(tǒng),基于標(biāo)準(zhǔn)Ubuntu的ROS只能說是一套好用的系統(tǒng),并不是一個(gè)可靠的系統(tǒng)。它的通信常有丟包以及延遲不穩(wěn)定的情況。所以整套系統(tǒng)使用ROS來進(jìn)行控制,整個(gè)控制周期很難提高,且穩(wěn)定性不足。當(dāng)然我們也看到很多研究機(jī)構(gòu)如Hitachi和BMW都對(duì)ROS在自動(dòng)駕駛研究的可行性上做了研究。需要對(duì)系統(tǒng)進(jìn)行一定的優(yōu)化后,以及保證程序的通信以及運(yùn)行負(fù)載不超過閾值的情況下,ROS才能作為控制系統(tǒng)的中間件使用。
為什么選擇ROS
正如本文開頭所言,自動(dòng)駕駛是一個(gè)軟件問題。其核心的問題是一個(gè)又一個(gè)的算法問題。ROS可以讓我們專注于算法,而無需關(guān)注太多系統(tǒng)上的“麻煩事”。ROS合適的數(shù)據(jù)接口以及多對(duì)多的通信方式使得模塊之間的解耦非常充分,使得我們?cè)谙到y(tǒng)設(shè)計(jì)之初就可以充分得將系統(tǒng)拆分為幾個(gè)獨(dú)立的模塊,并可以對(duì)各個(gè)模塊進(jìn)行獨(dú)立的開發(fā)。順便說一下,第一個(gè)使用ROS控制無人駕駛汽車的正是參加DARPA挑戰(zhàn)賽的斯坦福大學(xué)。
總結(jié)
文至此,希望有志做無人駕駛汽車的研究人員可以安裝一下ROS,瀏覽一下ROS豐富的軟件包,操作一下tutorial里那只小烏龜機(jī)器人turtlebot。
不用懷疑,你離無人駕駛汽車的開發(fā)又近了一大步。
注:ACC(Adaptive Cruise Control自適應(yīng)巡航控制)
AEB(Autonomous Emergency Braking 自動(dòng)緊急制動(dòng))
LKA(Lane Keeping Assist 輔助車道保持)
PPS(Pedestrian Protection System 行人保護(hù)系統(tǒng))
TSR(Traffic Sign Recognition交通標(biāo)志識(shí)別)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。