自動運転シミュレータ "LGSVL SIMULATOR" を使ってみる

##はじめに
LG電子さんが作ったフリーの自動運転用シミュレータ ”LGSVL SIMULATOR” を使ってみました。他のシミュレータを使ったことないので比較できませんが、ビジュアルのクオリティがすごいです。実行ファイル版は本当にダウンロードするだけなので、特に解説するようなことはないのですが、備忘録的な意味も込めて書き残しておきます。

なお、他のソフトウェアと連携すると威力を発揮するこのシミュレータですが、この記事はそこまでカバーしていません。悪しからず。。。

公式サイト
https://www.lgsvlsimulator.com/

公式ドキュメント（基本はここにある情報です）
https://www.lgsvlsimulator.com/docs/

欠落している情報もありますが、随時情報追加していこうと思います。

###推奨環境

公式ドキュメントより

>4 GHz Quad core CPU
>Nvidia GTX 1080 (8GB memory)
>Windows 10 64 Bit

推奨環境にWindowsとありますが、Linuxでもちゃんと使えます。


##インストール ～ シミュレータ起動まで
###Windows版

公式サイトに行きます。
![01-0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/59020774-e75a-d35f-9328-67adec800ab6.jpeg)


Download for Windowsを押すか、横の▼プルダウンからOSにあったファイルをダウンロードします。
![01-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/4b0edf83-2c61-5077-5be7-f22b20504b5e.jpeg)


zipファイルを好きなところに解凍して、「simulator.exe」をクリックします。
![01-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/9315b8fe-48b1-45c2-c93f-33e86c994e3c.jpeg)


すると、セットアップ画面が出てくるので、画質などを選び、[ Play! ] を押します。
![02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/7110cf2d-22e1-4c0c-7518-d492cfcedfaf.jpeg)


こんな画面が出てくるので、[Open Browser...] を押します。
![03-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/388566c5-7095-ed25-713a-0e648bee52ac.jpeg)


ログインを促されるので、ログインします。アカウントのない人は作りませう。
![03-2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/23284f96-9a1d-dccf-3e66-9fea82af58b0.jpeg)


ログインすると、この画面（WebUIと言います）になります。
![newmap (6).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/73afbaea-27b8-76b4-81ea-e6cfa735d0d8.jpeg)


[Simulations]タブをクリックします。
ここでプロジェクト的なものを選択すると、下の方に▶再生ボタンが出てくるので、クリックします。
![sim_play.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/c924d14e-dd34-a518-f20b-4a468cf23f22.png)


すると、プロジェクトのステータスが"Running"になって、下の方の▶が■になるはずです。
![sim_running.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/510724f2-49f0-695f-b465-efa99bd10a43.png)


シミュレータに戻ると、下の画像のようなシミュレータの世界が表示されてます。
![04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/82eb1916-0fdc-8809-bea5-aca4340280cd.jpeg)
とりあえずこれでインストール完了です。

###Linux版（ほとんどWindowsと同じ）
確認した環境はUbuntu16.04です。
公式サイトで、[Download for Linux]を押すか、横の▼プルダウンからLinux版ファイルをダウンロードします。
![lin_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/1da29679-fb5c-802f-c0d6-77feace7474a.png)


ダウンロードしたzipファイルを好きなところに解凍して、実行ファイルをクリックします。
![lin_02-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/d4bab905-5e55-736f-6446-0b7eb79fbc98.png)


または、terminalから起動します。
![lin_02-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/56784a08-36f5-8066-f61c-4c0f1d9fb392.png)


この画面が表示されたら、画質などを選択して[OK]をクリックします。
![lin_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/803c1004-c731-82df-cf98-75c46bd0f5b9.png)

以降の操作はWindowsと同じです。


###シミュレーションが開始されない場合

初めて使うVehicleの場合、こんな風にステータスがInvaildになってシミュレーションが開始されないみたいです。
![sim_error.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/c4d250c0-66f8-0b0f-bb2a-ccb10690e4a8.png)
エラーメッセージにあるとおり、アセットバンドルとやらを最新バージョンに更新しましょう。


公式サイトの、コンテンツウェブサイトに行きます。
![contents_site.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/b89409c9-d5f4-5b60-309e-f34f7891f366.jpeg)


[VEHICLES]のページで、使う車を選択して、"AssetBundle"を右クリックしてリンクをコピーします。
![veh_copylink.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/b22e620b-fef3-c0ec-c166-a81a4c52bfcd.png)


シミュレータのWebUIに戻って、[Vehicles]タブをクリックし、使いたい車の設定（鉛筆のマーク）を開きます。
![veh_setup.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/fd665630-a4b4-dafe-7fe0-dad1a2ba99b9.png)



すると、こんなウィンドウが出てくるので、下のテキストボックスにさっきコピーしたリンクを貼り付けて、[Submit]をクリックします。
![veh_bundle.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/36d9adca-c946-581b-ced4-9d04f885e04f.jpeg)



すると、何かをダウンロードしている感じになります。
![veh_download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/7ac96e7e-893b-b6a2-6ab6-fd6dd54bc806.png)


ダウンロードが完了して、ステータスが"Valid"になれば完了です。
![veh_valid.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/189a7f3d-c8d2-a7aa-3cd7-1c155547a63f.jpeg)


もう一度[Simurations]タブに戻って、シミュレーションを実行しましょう。
正常に実行できたときは、ステータスが"Running"になって、下の方の▶が■になるはずです。
![sim_running.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/6610e499-c16f-f4f3-c7e3-705ce839e185.png)



##シミュレーション画面説明
###基本操作
シミュレーション開始直後の画面から説明していきましょう。
![menu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/d0072e1c-b81e-d0dd-570c-64bbd0a1e743.png)

1. メニューアイコン
2. 再生・一時停止ボタン（インタラクティブモードのみ）
3. センサメニュー
4. インタラクティブメニュー（インタラクティブモードのみ）
5. ブリッジメニュー
6. コントロールメニュー
7. インフォメーションメニュー
8. カメラモード切り替え
9. 車両切り替え


以下に、よく使う（かもしれない）メニューについて説明します。
###3. センサーメニュー
ここでは、各センサーの表示/非表示を切り替えることができます。
あくまで画面に出すか否かの選択なので、センサデータ自体は常に生成されています。
![12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/d6282ba3-89c5-d96f-0e38-2b2d16bc1704.jpeg)


###4. インタラクティブメニュー
シミュレータの実行中に、環境のパラメータを変更することができます。
下の画像では、曇らせたり雨を降らせたりしています。
![08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/40e047f5-d8ca-e016-ddba-ef9fef48d401.jpeg)


NPC（Non Player Car）のON/OFFもできます。
![10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/e8232fd6-ddd8-8130-5dc6-4a87ad8af56f.jpeg)
ちなみにここで変更できるパラメータは、シミュレーションの初期設定で決められるものなので、インタラクティブモードでないときはそっちで決めておくこともできます。


###5. ブリッジメニュー
ここでは生成されているセンサデータの情報が一部表示されています。
![13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/828afc6d-56ac-f9a9-1258-ea9298abb71e.jpeg)


###6. コントロールメニュー
ここには、車の操作などに使うキーボード・ショートカットが記述されています。
![14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/da75d061-608e-3d9b-fe86-9c3355bad75c.jpeg)
よく使うショートカットはここにも書いておきます。

アクセル：↑
ブレーキ：↓
ステアリング：←/→

前進ギヤ：PageUp
後退ギヤ：PageDown

スタート地点にリセット：F12
ヘッドライトON/OFF：H
カメラズーム：W/S

##搭載センサ設定
ここでは、車に搭載するセンサのスペックや個数・位置を設定する方法を説明します。
[Vehicles]タブをクリックし、センサをいじりたい車の編集（スパナのマーク）を開きます。
![senser_setup.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/079e6009-08ab-ada5-7769-e28f6f8e412d.png)


すると、画像のような大きなテキストボックスが表れるので、ここにセンサの設定を記入していきます。
![sensor_json.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/f1501447-553e-77f8-a0f5-a4a02b0be198.jpeg)
このテキストはJSON形式で書かれていて、いろいろとお作法があるので、公式ドキュメントの記入例を参考にしてください。
該当ページ　→　https://www.lgsvlsimulator.com/docs/sensor-json-options/

試しに、カメラを4方向に向けて搭載し、全方位カメラみたいにしてみました。
![camera.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595422/f328224c-2266-18a2-e093-6f0883b46cc5.jpeg)


このときのJSON記入例です。

```json
[{
    "type": "Color Camera",
    "name": "Main Camera1",
    "params": {
      "Width": 1920,
      "Height": 1080,
      "Frequency": 15,
      "JpegQuality": 75,
      "FieldOfView": 50,
      "MinDistance": 0.1,
      "MaxDistance": 1000,
      "Topic": "/simulator/main_camera_1",
      "Frame": "camera",
      "Distorted": true,
      "DistortionParameters": [-0.25349, 0.11868, 0, 0]
    },
    "transform": {
      "x": 0,
      "y": 1.7,
      "z": -0.2,
      "pitch": 0,
      "yaw": 0,
      "roll": 0
    }
},
{
    "type": "Color Camera",
    "name": "Main Camera2",
    "params": {
      "Width": 1920,
      "Height": 1080,
      "Frequency": 15,
      "JpegQuality": 75,
      "FieldOfView": 50,
      "MinDistance": 0.1,
      "MaxDistance": 1000,
      "Topic": "/simulator/main_camera_2",
      "Frame": "camera",
      "Distorted": true,
      "DistortionParameters": [-0.25349, 0.11868, 0, 0]
    },
    "transform": {
      "x": 0,
      "y": 1.7,
      "z": -0.2,
      "pitch": 0,
      "yaw": 90,
      "roll": 0
    }
},
{
    "type": "Color Camera",
    "name": "Main Camera3",
    "params": {
      "Width": 1920,
      "Height": 1080,
      "Frequency": 15,
      "JpegQuality": 75,
      "FieldOfView": 50,
      "MinDistance": 0.1,
      "MaxDistance": 1000,
      "Topic": "/simulator/main_camera_3",
      "Frame": "camera",
      "Distorted": true,
      "DistortionParameters": [-0.25349, 0.11868, 0, 0]
    },
    "transform": {
      "x": 0,
      "y": 1.7,
      "z": -0.2,
      "pitch": 0,
      "yaw": 180,
      "roll": 0
    }
},
{
    "type": "Color Camera",
    "name": "Main Camera4",
    "params": {
      "Width": 1920,
      "Height": 1080,
      "Frequency": 15,
      "JpegQuality": 75,
      "FieldOfView": 50,
      "MinDistance": 0.1,
      "MaxDistance": 1000,
      "Topic": "/simulator/main_camera_4",
      "Frame": "camera",
      "Distorted": true,
      "DistortionParameters": [-0.25349, 0.11868, 0, 0]
    },
    "transform": {
      "x": 0,
      "y": 1.7,
      "z": -0.2,
      "pitch": 0,
      "yaw": 270,
      "roll": 0
    }
},
{
    "type": "Keyboard Control",
    "name": "Keyboard Car Control"
},
{
    "type": "Wheel Control",
    "name": "Wheel Car Control"
},
{
    "type": "Vehicle Control",
    "name": "Autoware Car Control",
    "params": {
        "Topic": "/vehicle_cmd"
    }
}]
```

最後の方に書いてある"Keyboard Control"は消すと車を操作できなくなるので消さないように。

##最後に
ここまでだとただのドライブシミュレータですが、他のソフトウェアと連携することで、自動運転のシミュレーションができるようになります。が、記事が長くなるので、それはまた別の記事で。。。

あと、ソースビルド版もあります。こっちを使えば、シミュレータの中もいろいろいじれるらしいです。
こちらもいずれ記事にするつもりです。


このページは以上です。