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 包括steering(轉向),throttle(油門),brake(剎車)。observation就是 ,包含了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
傳統方法,收集 ,老司機的開車軌跡,作為label。然後輸入 ,為的是讓網路的輸出 像老司機學習。為了提供魯棒性,在數據中加入了雜訊,以及進行了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: https://www.youtube.com/watch?v=fv-oFPAqSZ4
【6】Baidu Apollo: 阿波羅
【7】Apollo github:Apollo Auto
【8】CARLA的視頻: https://www.youtube.com/watch?time_continue=177&v=Hp8Dz-Zek2E
【9】Adobe Fuse: https://www.youtube.com/watch?time_continue=177&v=Hp8Dz-Zek2E
【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】https://arxiv.org/pdf/1711.03938.pdf
【14】torcs ? News
【15】falkTX/Carla
【16】https://zhuanlan.zhihu.com/p/34686812/edit
推薦閱讀:
※無人計程車這場仗,Uber怕是要被Google徹底擊敗了
※再砸 180 億元,豐田成立自動駕駛研究公司
※深度剖析Apollo自動駕駛平台
※樓天城:為中國的自動駕駛注入全新想像力 | 「35歲以下科技創新35人」中國榜單專欄
TAG:強化學習ReinforcementLearning | 自動駕駛 |