自動運転用のシミュレータのCARLA:CAR Learning to Actを動かしてみました!
2018/8/27追記
2019/1/31追記
2021/10/19追記:いまだアクセスがあるようですが、この記事はCARLAが出始めのころに書いたものなので、今となっては情報が古くなっています。悪しからず(+_+)
ここでは,CARLAを導入するところから,サンプルを動かすところまで紹介したいと思います。公式ドキュメント見てもビルドした後,何をどうするのか使い方がなかなかわからなかったので(*ノωノ)
CARLAはCoRL2017:Conference on Robort Learning 2017で発表された都市での自動運転用シミュレータです。似たようなシミュレータにはMicrosoftのAirSimとかがありますね(´っ・ω・)っ Depth画像やSemantic Segmentation画像を表示することができます.
とりあえず,CARLAは👇な感じです
綺麗ですね(´ω`*) Unreal Engine 4というゲームを作るためのソフトウェアを用いているので,最近のゲーム並みに綺麗というわけです。また,Unreal Engine 4を通して割合簡単に自分でマップをカスタマイズできます(2018/8/27追記)そもそもUnreal Engineの操作がスキルが必要で,その上にCARLAの要素を入れているので現状は自分でマップをカスタマイズするにはそこそこ手間がかかります.しかし,roadmapの1つに簡単にインタラクティブにマップをカスタマイズできるようにする項目があるので,期待したいところです(>_<)
CARLAの特徴として,天気を変えられることがあります。晴,曇り,小雨,土砂降り,雨上がり,日差しが強い日などなど15種類が実装されてます。他には,歩いてる人とかですかね。
他のパラメータには,街の中を歩く人の数,街の中で動いている車の数などですね(´っ・ω・)っ
Contents
環境
以下の環境で動かしました.
- ubuntu 16.04 LTS
- Memory 62.9GiB
- Processor Intel Core i7-8700K CPU @ 3.70GHz × 12
- Graphics GeForce GTX 1080 ti/PCle/SSE2
所属している研究室で最近購入したつよ~いつよ~いPCです.最近届いたPCなので,PC内はきれいな状態です。(ほぼクリーンインストール状態)
CARLAを動かす
CARLAをビルドする公式のドキュメント(How to buid CARLA on Linux)とGitHubを参照しましょう。ドキュメント通りにやったら特につまずくことなく,すんなりできました。重いので,めっちゃ時間はかかりましたが(´◉◞౪◟◉) 注意点としては,LinuxのPC以外にWindowsマシンが必要です。Windowsマシンではダウンロードするだけなので,15GiBくらいの空きがあればGPUのない低スぺマシンでもOKです。
(2018/8/27追記)インストール方法がかなり変更されており,Windowsマシンはいらなくなりました.
(2019/1/31追記)LinuxにUnreal Engineをインストールする際に,単純にはgit cloneできません.(友人のインストールを手伝ったらハマりました・ω・)
Unreal Engine repositories are set to private. In order to gain access you need to add your GitHub username when you sign up at www.unrealengine.com.
How to build CARLA on Linux
このページ(https://www.unrealengine.com/ja/ue4-on-github)を参照して自分のGithubアカウントと連携するとできるようになります.
(2019/1/31追記終わり)
ちなみに,マップとかカスタマイズしないでちょっとやってみるだけ,遊んでみるだけとかならビルドする必要は無くて,こちらのリリース版をダウンロードしてくると楽に動きます。
この先はHow to build CARLA on Linuxに従ってビルドをした状態の話になります。
Editorを動かしてみよう
ビルドに成功するとUnreal Engine 4のEditerが使えるようになります。
Githubからcloneしてきたディレクトリ内のUnreal/CarlaUE4ディレクトリにcdで移動して
- ~/UnrealEngine_4.18/Engine/Binaries/Linux/UE4Editor “$PWD/CarlaUE4.uproject”
を実行すると使えるハズです。(How to build CARLA on LinuxのLaunching the editorのところ)
このコマンドを毎回打つのは面倒くさいので,シェルに書いといてそれを実行するみたいな感じにしておきましょう。(carla/Unreal/UnrealUE4/CarlaEditor.shとかを作って、そのファイル内に上記のコマンドを書いておいて,sh CarlaEditor.sh みたいな)
(2019/1/31追記)最新版のcarlaでは,carlaのディレクトリでmake launchを実行すれば起動します.
シミュレータを動かしてみよう
Editorを起動してPLAYボタン(下図)を押すとシミュレータが動きます。(図の家のテクスチャがPS2時代ぐらいにちゃちいのは,起動した直後でちゃんと読み込まれてないからです。しばらくたつとちゃんとしたテクスチャが貼られてPS4時代のようなリアルな家になります。)
シミュレータが始まると以下のような画面になると思います。キーボード(画像下のキーの役割参照)で車の操作などができるので遊んでみましょう(´っ・ω・)っ
(なぜか自車にテクスチャが貼られてないのですが,他のオブジェクトには貼られてるし,あんまり問題ないので無視してます
キーの役割
- W :アクセル
- S :ブレーキ
- A,D : 右,左ハンドル
- Q : 前進,後退を切り替える
- Space :ハンドブレーキ
- P :自動運転(自動運転と言ってもシミュレータ内でライントレースしてるだけ)
- Arrow keys : 視点を動かす
- PgUp PgDn : ズームイン,アウト
- mouse wheel :ズームイン,アウト
- Tab : 視点切り替え(運転席視点,上から視点)
- R :シミュレータのリスタート
- G :HUDを表示/削除
- C :天気の切り替え
- Enter :ジャンプ(自車に対してZ軸方向に力を加える:自車がジャンプしますwww)
- F :力を使う(自車の前方にある車に力を加えて吹き飛ばすwww)
- F11 :フルスクリーンに変更
- Alt+F4 :シミュレータの終了
EnterとかFとかで遊ぶと面白いですね(*ノωノ)
シミュレータ世界の設定を変えてみよう
シミュレータは最初に carla/Unreal/CarlaUE4/Config/CarlaSettings.ini を読み込んでシミュレータの設定をしています。このファイルを書き換えるといろいろシミュレータ世界の設定を変えられるわけです。世界の設定はCarlaSettings.iniの[CARLA/LevelSettings]の部分で行われています。
天気の初期設定はWheatherIdで行われているのでこれを変えてみましょう。
WheatherId=1
となっている行を
WheaterId=6
にしてPLAYを押すと以下の画像のようになります。(PLAYが押されるたびにCarlaSettings.iniを読み込むのでEditorを毎回再起動する必要はありません。
天気の初期設定が変わって,雨が降っている状態でシミュレータが起動しました。
他に,NumberOfVehiclesで車の数,NumberOfPedestriansで歩行者の数を変えられるので変えてみましょう。
NumberOfVehicles=150
NumberOfPedestrians=300
にしてみます。
シミュレータ起動時に見える車の数が増えました!つまり,シミュレータ内の車の数が返られていることになります。車を走らせて街の中をまわると歩行者も増えていることが確認できます。
Pythonとの連携
シミュレータを使うときの本題ですね(*ノωノ) 外部のプログラムと連携できないとシミュレーションしても使いようがないわ。
CARLAはUnreal Engine 4 EditorでPLAYしているときにサーバーとして機能します。外部からはPythonを使ってシミュレータと連携する形になります。これのサンプルプログラムがcarla/PythonClientディレクトリにあるので,これを動かしてみましょう。
まず,CarlaSettings.iniの[CARLA/Server]のUseNetworking=falseをtrueにします。これでシミュレータがサーバーの役割をするようになります。
サンプルプログラムを1つ動かしてみましょう。
まず,carla/PythonClient/maual_control.py のサンプル。
python maual_control.py
を実行すると端末が以下のような画面になります。
次にサーバーの役割をするようにCarlaSettings.iniを変更(上記:UseNetworking=true)してシミュレータを起動しましょう。すると,以下の図のようになります。
このサンプルプログラムは,CARLAからカメラ画像(RGB, Depth, Semantic Segmentationの3種類)を受け取って,別ウィンドウに表示しながらキーボードで車を動かすことができるサンプルになってます。FPSが3になるのは仕様なのかな?めっちゃカクカクしながら動きます。このサンプルを基にしてCARLAを用いていろいろできそうな感じです。
まとめ
これで,一通りCARLAを動かしたので何かいろいろできるかと思います。その他の細かいところは公式ドキュメントを見てください(@_@)
マップのカスタマイズにはUnreal Engine 4の知識がそのまま使えそうな感じです。実はほとんど触ったことないからよくわからないんだけど(*ノωノ)
No responses yet