CARLA:城市路況的自動駕駛simulator

平台介紹

CARLA是Intel Labs【1】,Toyota research institute【2】,UBA的CVC【3】一起弄的。這個開源的自動駕駛simulator,特點在於加入了各種天氣,加入了真實的光照影響,實時獲取數據,可以配置感測器。

CARLA裡面已經包含了三個baseline:module-perception control pipeline;end-to-end imitation learning,end-to-end reinforcement learning。從視頻中【8】的可以看到module-perception control pipeline是最平穩的,其次是imitation learning,再次是RL。我覺得是不是RL的greedy policy導致了有時候會撞車,這個需要調整一下。CARLA是使用Adobe Fuse渲染行人【9】,場景用Unreal Engine4(虛幻4)搭建【10】。目前只能在Linux上安裝CARLA,連MAC,Windows上都沒有。

安裝運行

注意目前是在Ubuntu 16.04上安裝了,並且對於沒有顯示屏的遠程伺服器的支持非常不好。用了AWS嘗試,會顯示I/O error。對於沒有顯示器的遠程伺服器的使用,可以參考【12】,有這個時間和精力,不如直接花時間去搞到機器。

安裝完了之後,運行【11】。輸入:

./CarlaUE4.sh /Game/Maps/Town01

這是運行腳本,然後可以玩遊戲一樣。用點兒像俠盜飛車,用的是虛幻4的引擎(unrealengine 4,UE4)。

W : throttleS : brakeAD : steerQ : toggle reverseSpace : hand-brakeP : toggle autopilotArrow keys : move cameraPgUp PgDn : zoom in and outmouse wheel : zoom in and outTab : toggle on-board cameraR : restart levelG : toggle HUDC : change weather/lightingEnter : jumpF : use the forceF11 : toggle fullscreenAlt+F4 : quit

運氣效果如下:

運行模式,還可以開啟伺服器模型:

開啟一個server:

./CarlaUE4.sh /Game/Maps/Town01 -carla-server -benchmark -fps=15./CarlaUE4.sh /Game/Maps/Town02 -carla-server -benchmark -fps=15./CarlaUE4.sh /Game/Maps/Town01 -carla-server -benchmark -fps=15 -windowed -ResX=800 -ResY=600

開啟client:

pip install -r PythonClient/requirements.txt# 程序控制./client_example.py# 手動控制 WASD./manual_control.py

平台講解

在【13】中,對於這個平台進行進一步的介紹,CARLA可以進行感測器和天氣的配置,以及CARLA已經在三種演算法上進行了測試(經典的modular pipeline,end-to-end imitation learning,end-to-end RL)。CARLA加入了交通規則,以及更加複雜的Urban environment的情況。比如小孩在街上跑。同時,CARLA中的汽車可以體用GPS定位,速度,加速度等等信息。使用UE4建模,專門找美工設計了40種不同的建築,16中交通工具,50個行人。感測器方面,提供了RGB的圖片,深度信息,圖片分割。攝像頭的參數可以進行調節,比如攝像頭的位置,orientation等等。圖像分割有12類,路面,車道線,交通標誌,人行道,柵欄,路燈,牆,建築,交通工具,行人,植物,其它。同時為動態物體提供bounding box。

自動駕駛演算法

CARLA中的agent的action a_t 包括steering(轉向),throttle(油門),brake(剎車)。observation就是 O_t ,包含了RGB圖片,深度圖片,以及速度,GPS等等。在整個大的路徑規劃方面,是已知地圖的,已知當前位置以及目的地,所以是使用A*演算法進行路徑規劃。所以可以得出當前位置planner會給出建議是否需要左拐,右拐,或者是直行。但是planar沒有包含具體的軌跡,應該在什麼坐標這些給出,只是給出當前位置,下一個路口是不是需要轉彎這個程度的信息。

在【13】中,在CARLA的環境下,使用的三種演算法:

  • modular pipeline

傳統的pipeline就包括了了感知(perception),規劃(planning),控制(control)。首先是汽車進行周圍環境的感知,比如剛才提到的攝像頭中的語義信息,動態物體跟蹤。這個baseline是基於RefineNet進行的,通過網路訓練將每個像素點進行分類。對於十字路口,又加了一個AlexNet來表示是否判斷。有了感知信息之後,就需要進行路徑規劃,接下來往哪裡走,這個plannar和之前的A的planar不一樣。當前這個叫做local planning,只是對當前情況進行短期的路徑規劃。比如前面有障礙物,需要往左車道行駛。具體的這個local planar會和總的A*的planar進行結合,再加上感知層的信息,使用狀態機來描述接下來的行動。planning就發出指令給controller,表述要求,controller機會控制汽車的電機進行工作。但是在控制輸出功率的時候,並不是很穩定,會受到路面情況,輪胎,車重等等很多因素影響。為了滿足類似於要使當前車速60 km/h,向左打方向盤xx這樣的命令,需要進行反饋調節,比如使用傳統的PID。

  • imitation learning

傳統方法,收集 C_i ,老司機的開車軌跡,作為label。然後輸入 o_i ,為的是讓網路的輸出 a_i 像老司機學習。為了提供魯棒性,在數據中加入了雜訊,以及進行了augmentation和dropout。使用的是Adam optimizer。收集十字路口的時候,把向左,向右,向前都有進行sample。

  • reinforcement learning

使用A3C訓練模型。每個episode terminate條件是到達目的地,撞車了,沒油了。訓練了10個threads,1000w個step。1000w個simulation step,每次輸入10幀,運行了12天。

在experiment方面,忽略了速度和交通燈。進行了以下測試:直行,沒有動態目標;一次轉彎;導航沒有動態物體;導航加上了動態目標。

最終結果,四個task裡面,沒有表現得完美的。因為訓練的時候的場景和測試的時候的場景不一樣了。所以這需要很好的generalization,對於目前的深度學習方法是一個巨大的挑戰。

在generalization測試方面,面對不同的天氣和環境,三種方法表現差異大。module-pipeline和imitation learning,對於天氣不敏感。三種方法對於喜歡就表現都是比較差。

其實,除了Intel以外,還有MS,百度都有開源自動駕駛的Simulator【4】,【5】,【6】,【7】,TORCS【14】。之後有空再詳細介紹文中的三種方法。modular pipeline和end-to-end的方法,差異不大。

【1】Home - Vladlen Koltun Intel Labs - Research

【2】Toyota Research Institute

【3】CVC: Introduction

【4】MS AirSim: Microsoft/AirSim

【5】MS AirSim Video: youtube.com/watch?

【6】Baidu Apollo: 阿波羅

【7】Apollo github:Apollo Auto

【8】CARLA的視頻: youtube.com/watch?

【9】Adobe Fuse: youtube.com/watch?

【10】unreal engine: What is Unreal Engine 4

【11】How to run CARLA server and client - CARLA Simulator

【12】CARLA without Display and Selecting GPUs

【13】arxiv.org/pdf/1711.0393

【14】torcs ? News

【15】falkTX/Carla

【16】zhuanlan.zhihu.com/p/34


推薦閱讀:

無人計程車這場仗,Uber怕是要被Google徹底擊敗了
再砸 180 億元,豐田成立自動駕駛研究公司
深度剖析Apollo自動駕駛平台
樓天城:為中國的自動駕駛注入全新想像力 | 「35歲以下科技創新35人」中國榜單專欄

TAG:強化學習ReinforcementLearning | 自動駕駛 |