手把手本身造無人駕駛車,是什麼樣的體驗?

文:江浩算法

9月中旬有幸參加了優達學城、pix 和 Autoware 聯合舉辦的線下無人駕駛實訓,收穫頗豐。這篇文章的目的,一方面是我對此次線下實訓的覆盤總結,另外一方面,感興趣的同窗也能夠藉此瞭解實訓的具體內容。學習

本次參加實訓的同窗都很厲害,有來自上汽、NEVS 等主機廠的工程師,有來自滴滴的軟件工程師,有來自創業公司 CEO,還有來自上海交大、同濟和東北大學等知名高校的學霸。而導師們分別來自優達學城、pix 和 Autoware 3個主辦方。測試

實訓基地

實訓內容

實訓的最終目的是實現紅綠燈的啓停。具體來講,車輛在進入無人駕駛模式後,沿着錄製的軌跡自動行駛,當行駛到紅綠燈前方時,對其進行識別。若是是綠燈則繼續行駛,是紅燈則須要在規定的範圍內停車。當綠燈亮起時,車輛再次啓動。優化

提及來容易作起來難,無人駕駛是一個系統工程,想用實現這個看似簡單的功能,須要的知識着實很多。下面就來講說咱們小隊是如何作的。順便說一句,咱們的隊名是「紅鯉魚與綠鯉魚與驢」,考慮到我是南方人實在分不清「l」和「n」的發言,簡稱「鯉魚隊」。操作系統

首先,在名古屋大學教授 Alex 和優達學城導師 Aaron 的指導下,咱們學習了 Autoware 的基礎知識,完成了 GPU 版 Tensorflow、ROS 和 Autoware 的安裝。Autoware 是一款鏈接代碼和硬件的軟件,相似於百度的 Apollo.3d

Autoware 界面

Autoware 界面cdn

而後,把激光雷達和攝像頭鏈接到 Autoware,經過攝像頭採集試驗場地的環境數據,用來訓練紅綠燈檢測器。blog

經過手機觀察激光雷達發出的激光

接下來是製做高清地圖。開車繞行試驗場地,經過車載激光雷達(Velodyne 提供)生成點雲,再經過 Autoware 製做成高清地圖。遊戲

激光雷達檢車到的試驗場地
高精地圖

製做好高清地圖後,就能夠實現車輛的尋跡功能了,也就是經過 Autoware,讓車輛在設定好的軌道上行駛(無需人工控制),相似於火車沿着軌道行駛,只不過車輛沿着的不是金屬的軌道,而是 Autoware 中的「路點」。部署


Autoware 模擬尋跡



實車尋跡

要實現最終目的,還須要編寫一個紅綠燈檢測器。檢測器對攝像頭拍攝到的圖像進行識別,識別的結果輸出給 Autoware,再由 Autoware 控制車輛行駛或者中止。

最初,咱們打算使用深度學習算法訓練紅綠燈檢測器,可是檢測效果並很差,後來改用傳統的計算機視覺,圖像識別的準確率能達到 87%,優化參數後,準確率接近 95%.

這一切都準備完畢後,就能夠對車輛進行檢測和優化了。因爲前期進度較慢,一直到晚上 八、9 點咱們纔有時間去試驗場。檢測效果不錯,優化參數後,車輛可以準確識別紅綠燈,而且在規定範圍內實現啓停。

夜間測試

雖然晚上檢測的效果不錯,可是並不表明白天也是如此。次日,也就是比賽當天,咱們隊的表現並不如人意。緣由其實很簡單,白天拍攝到的圖像背景太複雜,紅色的地面,綠色的樹木,甚至彩色的衣服(攝影師小妹妹快走開,你的衣服上怎麼紅綠黃三色都有!),都會對紅綠燈的檢測形成影響。而在夜晚,背景一片黑色,紅綠燈的檢測要容易得多。

三色毛衣是鯉魚隊的噩夢

讓我難以理解的是,我編寫的識別紅綠燈的代碼,使用白天拍攝的圖像進行檢測,正確率接近 95%,可是兩天後在試驗場上卻識別不出來了。想必還有許多影響因素沒有考慮到,在無人駕駛領域,我還須要多多研究,提升本身。

實訓收穫

雖然最終結果不是太理想,可是在在 5 天的實訓中,咱們收穫太多。

1 實車測試

做爲優達學城《無人駕駛工程師》的學員,咱們都具有必定的相關知識,可是幾乎沒有在真車上作過測試,運行本身的代碼。此次實訓,讓咱們在短短5天的時間裏,實現了從0到1的跨越。咱們不但掌握了Autoware的基本操做,編寫了相關代碼,學習了線控知識,還親手生成了點雲和高精地圖,親眼看到本身編寫的代碼在車輛上運行,親身體驗了測試車輛的整個過程...

2 實踐學過的知識

知識不是用來學的,而是用來實踐的。只有實踐過的知識才能顯示其價值。在完成《高級車道線識別》項目的過程當中,爲了消除圖像失真,須要對攝像頭進行校準。校準很簡單,只須要幾行代碼。不過,能在實踐中應用這幾行代碼,仍然讓我有點激動。

圍棋棋盤校準攝像頭

3 體會到模擬和試驗的差距

我是《無人駕駛入門》的助教、《無人駕駛工程師》的學員,完成過紅綠燈檢測、車道線識別、交通標誌識別等項目,可是它們和實訓項目有很大的區別。

首先,之前的項目使用的都是課程中提供的數據集,而實訓中使用的數據都是咱們本身採集的。後者須要考慮更多事情比前者多得多。好比,在使用攝像頭採集紅綠燈數據時,須要對攝像頭對焦,不然採集的圖像模糊不清,根本沒法使用。咱們隊因爲缺少經驗,就犯過這樣的錯誤。再好比,《交通路牌識別》這個項目使用深度學習的方法識別 43 種交通標誌,數據集是課程中提供的。而在實訓中,咱們須要本身給採集的圖像打上標籤,以區分成綠燈。

其次,模擬中可行的方案,在實車上未必有用。咱們的最終目的是在實車上實現紅綠燈的啓停,因此編寫一個紅綠燈檢測器。我作過一個識別紅綠燈的項目,準確率達到 95%,這樣的準確率徹底能夠知足項目的要求,原本想直接用在這裏,結果卻發現不可行。爲何?由於項目中使用的數據集只包含紅綠燈,沒有其餘干擾,識別起來相對容易。


課程提供的圖像

可是攝像頭採集到的圖像卻並非這樣的,圖像中還包大量背景信息,綠色的樹,藍色的天空,紅色的地面,刺眼的陽光,甚至身穿紅綠黃三色毛衣的攝影師小妹妹(曾經的噩夢啊,不過很好奇代碼會識別成什麼呢?),都會對識別結果形成影響。如何排除這些干擾,也是必需要考慮的。

攝像頭採集的圖像

最後,在完成實訓項目的過程當中,我對學過的知識又有了更深的理解。好比,曾經作過一個小習題,讓我利用給定的yaw rate數據,求出汽車行駛時的角度。在數學上這是一個很簡單的問題,只須要對 yaw rate 求積分就能夠了,然而我並不知道這些數據是如何獲得的。在此次實訓中,我發現 autoware 導出的路點數據就包括了這些數據。雖然都是得到數據,可是本身親手測量數據,和使用別人給的數據,感受徹底不一樣,這二者的區別,就好像一個是看別人玩遊戲,另外一個則是本身親自參與遊戲。

路點數據

4 遇到了很多困難

在實訓過程當中,咱們也遇到了很多困難。好比,機器部署出現錯誤、操做系統奔潰了、工控機電源燒了、激光雷達燒了...多虧了優達學城 Aaron、pix 曾工以及名古屋大學教授 Alex 的幫助,讓咱們在第一時間解決了這些問題。遇到困難並不必定是壞事,沒有什麼事情是一路順風了,若是真的有,那也不值得作。

最後,很是感謝優達學城、pix 和 Autoware 聯合舉辦的此次線下實訓,感謝三位導師 Aaron、曾工和 Alex 對咱們的幫助。還得感謝pix的行政人員,每餐都有貴陽美食,天天都有豐富的夜宵,並且還不帶重樣的!回重慶後我稱了下體重,足足重了 5 斤。

若是你想了解線下實訓的更多細節,能夠移步閱讀導師 Aaron 的文章:

TBA

相關文章
相關標籤/搜索