EurekaMoments

ロボットや自動車の自律移動に関する知識や技術、プログラミング、ソフトウェア開発について勉強したことをメモするブログ

SVL SimulatorとApolloを連携させて自動運転シミュレーションする方法

Apolloのインストール方法

この記事を参照。
www.eureka-moments-blog.com

Apolloを起動する

SVL Simulatorと連携するための下記コマンドで起動。

$ ./scripts/bootstrap_lgsvl.sh

こうなったら起動完了。

Starting modules/drivers/tools/image_decompress/launch/image_decompress.launch
nohup: appending output to 'nohup.out'
nohup: appending output to 'nohup.out'
[ OK ] Launched module monitor.
nohup: appending output to 'nohup.out'
[ OK ] Launched module dreamview.
Dreamview is running at http://localhost:8888

ブリッジを立ち上げる

SVL Simulatorと連携するためのブリッジを下記コマンドで立ち上げる。

$ ./scripts/bridge.sh

SVL Simulatorを起動する

使い方はこちらを参照。
www.eureka-moments-blog.com

シミュレーション作成画面をブラウザで開く。
f:id:sy4310:20211103193019p:plain

Store -> Mapsと進み、BorregasAveを検索してライブラリに追加
f:id:sy4310:20211103193440p:plain

Simulations -> Available from OthersからRandom Trafficのテンプレートを選択
f:id:sy4310:20211103193824p:plain

シミュレーション条件をカスタマイズしていく。
最初の画面ではクラスターとシミュレーション名を設定して次に進む。
f:id:sy4310:20211103194235p:plain

次の画面で下記の項目をそれぞれ設定する。
Map, Vehicle, Sensor Configurationをこのようにする。
f:id:sy4310:20211103194512p:plain
WeatherとTrafficの条件はこのようにする。
f:id:sy4310:20211103194623p:plain

ここで、WSL側のEthernetのIPアドレスを確認しておく。
この時点でSVL SimulatorはWindows, ApolloはLinuxと、別々のコンピュータ上でそれぞれ動いていることになるため、SVL SimulatorからApolloにブリッジを接続するために、WSL側のIPアドレスが必要になる。

WSL上で下記コマンドを打つとIPアドレスを確認できる。

$ ip a

VehicleのAutopilotをApollo 6.0, Bridge ConnectionをWSLのIPアドレス:9090に設定。SVL Simulatorの公式ドキュメントではlocalhost:9090と指定されているが、これはSimulatorとApolloが同じコンピュータ上で起動できている場合に有効な設定なので注意。
f:id:sy4310:20211104202846p:plain
最後にPublishしてシミュレーションの作成完了。
f:id:sy4310:20211103195323p:plain

シミュレーションを実行する

Run Simulationボタンを押す。
初回では、このように必要なassetsが一通りダウンロードされる。
f:id:sy4310:20211103195849p:plain

完了するとアニメーションウィンドウが開く。
f:id:sy4310:20211103195953p:plain
左下の▷ボタンを押してスタートさせる。
この時点ではまだVehicleは動かない。

ApolloとSimulatorの接続状況を確認する

シミュレータ画面左下のコンセントのアイコンを押すと、Apolloとの接続状況が確認できる。Bridge StatusがConnectedになり、gnssやperceptionといったApolloからの各種Topicが更新されていればOK。
f:id:sy4310:20211104203209p:plain

Apolloの自動運転を実行させる

ブラウザでDreamview(localhost:8888)を開く。
f:id:sy4310:20211103200446p:plain

右上、右から3番目のプルダウンメニューからMkz Lgsvlを選択する。
右から2番目のvehicleから、LincoIn2017MKZ LGSVLを選択する。
一番右のプルダウンからBorregas Aveを選択する。
f:id:sy4310:20211103200930p:plain

左メニューからModule Controllerを選ぶ。
Localization, Transform, Planning, Prediction, Routing, ControlをそれぞれEnableにする。このような画面になればOK。
f:id:sy4310:20211104204353p:plain

次に、左メニューからRouting Editingを選ぶ。
このようにマップを真上から見下ろした画面になるので、この中からVehicleを移動させる場所を指定する。
f:id:sy4310:20211104205322p:plain
指定したら、最後に画面左上のSend Routing Requestを押すとこのように自動運転が開始される。
f:id:sy4310:20211104211432p:plain