~
~
~(文章開始)~
~
~
目的:
做這個的目的主要是想知道,要如何在場景中做到觸發對手車或行人。例如:當我們寫好自駕車演算法,想測試演算法功能時,勢必需要模擬一套情境來協助測試,所以我才到Carla官方網站上找了一個有這個功能的範例來研究。本篇文章主要是講解如何從下載到實際運作,並且記錄整個流程,讓日後的我可以再回顧。
官方參考文件Get Scenario Runner:
https://carla-scenariorunner.readthedocs.io/en/latest/getting_scenariorunner/
系統介紹:
Linux ubuntu18.04
Carla 0.9.11
Unreal Engine_4.24
步驟如下:
1. 下載ScenarioRunner壓縮文件,在/home/rdd1/UnrealEngine_4.24/carla/PythonAPI開啟終端機(我是安裝在這),並在終端機裡輸入:
- git clone https://github.com/carla-simulator/scenario_runner
2. 上方指令它會自動下載最新版本的ScenarioRunner,但是你要依據你這台電腦的carla版本來挑選相對應的ScenarioRunner版本,所以我們在進到scenario_runner資料夾中開啟終端機,再輸入下列指令來更改版本:
- git checkout 0.9.11
備註:裡面有一份資料CARLA_VER 它裡面是寫 RELEASE=CARKA_0.9.10 可能是他們忘了改,但對我們沒差,不用理會。
3. 再來在任一個終端機中查詢我們這台電腦所安裝的python版本 (我這邊是Python 3.6.9),語法如:
- python --version
4. 再來要下載一大堆補充包,已知我們的Python版本後,就可以參考下方指令,key入對應的指令:
- For Python 2.x.
sudo apt remove python-networkx
pip2 install --user -r requirements.txt
- For Python 3.x
sudo apt remove python3-networkx
pip3 install --user -r requirements.txt
(1) 首先執行 pip3 install --user -r requirements.txt (備註:我是Python3的版本,所以拿這個當範例)如果直接執行會出現一堆紅色字體的錯誤,我們要使用管理員的權限,在語法前面掛上sudo即可,如:sudo pip3 install --user -r requirements.txt
(2) 在來回到scenario_runner資料夾中找到requirements.txt 並且開啟它,會發現裡面有寫許多補充包的名稱,我們要逐一的安裝它們。
(3) 此時會發現 requirements.txt 中有一個欄位要安裝 networkx==x.x 版本,如果發現電腦已經安裝過了,但版本和指定的不同,就使用上方「sudo apt remove python3-networkx (選擇相對應python的版本)」指令來移除它(針對這個項目使用該指令,其餘解除安裝都使用(4) ),並且再安裝上指定的版本。
(4) 安裝語法:pip3 install XXXXX,例如:pip3 install networkx==2.2。其中一定會遇到已經安裝過,但版本不對,所以我們要將其解除安裝,解除安裝語法:pip3 uninstall XXXXX,例如:pip3 uninstall py-trees。
5. 做完上面步驟後,要添加環境變數,在任一地點的終端機中輸入:
- sudo gedit ~/.bashrc
此時會跳出一個類似記事本視窗,拉到最下面將下列7行指令貼進去,並且存檔。
- export CARLA_ROOT=/home/rdd1/UnrealEngine_4.24/carla
- export SCENARIO_RUNNER_ROOT=/home/rdd1/UnrealEngine_4.24/carla/PythonAPI/scenario_runner
- export PYTHONPATH=$PYTHONPATH:/home/rdd1/UnrealEngine_4.24/carla/PythonAPI/carla/dist/carla-0.9.11-py3.6-linux-x86_64.egg
- export PYTHONPATH=$PYTHONPATH:/home/rdd1/UnrealEngine_4.24/carla/PythonAPI
- export PYTHONPATH=$PYTHONPATH:/home/rdd1/UnrealEngine_4.24/carla/PythonAPI/carla/agents
- export PYTHONPATH=$PYTHONPATH:/home/rdd1/UnrealEngine_4.24/carla/PythonAPI/carla
- export PYTHONPATH=$PYTHONPATH:/home/rdd1/UnrealEngine_4.24/carla/PythonAPI/examples
(備註:這邊只寫我自己電腦的資料位置,如果各位開頭跟我不一樣要記得修改。另外,.egg的部分可能名稱會有所不同,請先到dist資料夾中查看。)
(備註:上方語法因部落格版面問題無法完整顯示,但只要反白到下一行還是能夠完整複製)
輸入完上方7行指令後,必須讓電腦馬上知道環境變數已作變更,所以請輸入下方指令做即時更新:
- source .bashrc
6. 更新完上面的環境變數後,請開啟UN4,開啟方式:於終端機cd到carla資料夾底下輸入語法:
- make launch-only
並且運行UN4。
7. 再來於ScenarioRunner資料夾中開啟終端機並輸入:
- python3 scenario_runner.py --scenario FollowLeadingVehicle_1 --reloadWorld
終端機會顯示下圖文字,此時表示程式已經執行,並且再等待輸入第8項的程式。
8. 再開另一個新的終端機,輸入:
- python3 manual_control.py
就會跑出如下圖畫面,這裡有一點是該程式似乎只執行60秒,所以上面的6.與7.環境變數記得先貼好,才不會超過倒數60秒的時間。
提醒:過程中如果遇到終端機訊息跳出找不到某個模組,就將該行訊息貼到Google網頁查詢,大多數都是缺少某個python模組,只要依照(4)方式安裝即可。
影片展示:
結論:
此時只要按下前進按鈕(W按鍵)就會觸發前方車輛出現,達到觸發之目的。
後續將再研究其他功能,如開頭目的所敘述的情境。
有任何想法歡迎留言 一起交流吧~
~
~
~(文章結束)~
~
~