SVL Simulatorを起動する
デフォルトのセンサ構成を確認する
左メニューからLibrary -> Vehiclesと進み、構成を見たい車両を選ぶ。
今回はApolloとの連携で使用しているLincoln2017MKZを選択する。
選択後の概要画面からSensor Configurationsを見ると、
Apollo 6.0のセンサ構成は(modular testing)というものだけが
デフォルトで用意されている。
modular testingとは?
www.svlsimulator.com
Apolloのような自動運転スタックが持つPlanningモジュールを
テストするのに特化したテスト方式。
車両の位置姿勢推定や周囲のオブジェクト認識は全て100%正確に
出来ているという設定の下でテストするというもの。
本来は位置姿勢の推定や外界認識もApolloが行うが、このテスト
方式では、SVL Simulatorがこれらの処理を代替する。
3D Ground Truth Sensor
www.svlsimulator.com
Apolloによる外界認識を代替する疑似センサ機能。
周囲の多車両や歩行者の真の位置姿勢を出力する。
Single Sensor
www.svlsimulator.com
Apolloによる道路信号機の検出を代替する疑似センサ機能。
信号機の色情報の真値を出力する。
センサ構成とパラメータの設定方法
センサ構成とパラメータ設定は全てJSON形式のテキストファイルで
記述できる。使用するセンサをこのような形でリストアップする。
[ SENSOR, SENSOR, SENSOR ]
そして、各センサが持つパラメータをこのような形で記述する。
{ "type": STRING, "name": STRING, "params": {PARAMS}, "parent": STRING, "transform": { "x": FLOAT, "y": FLOAT, "z": FLOAT, "pitch": FLOAT, "yaw": FLOAT, "roll": FLOAT, } }
例えばLiDARならこのように記述できる。
{ "params": { "LaserCount": 32, "MinDistance": 0.5, "MaxDistance": 100, "RotationFrequency": 10, "MeasurementsPerRotation": 360, "FieldOfView": 41.33, "CenterAngle": 10, "Compensated": true, "PointColor": "#ff000000", "Topic": "/apollo/sensor/lidar128/compensator/PointCloud2", "Frame": "velodyne" }, "transform": { "x": 0, "y": 1.96, "z": 1.0510799, "pitch": 0, "yaw": 0, "roll": 0 }, "name": "Lidar", "parent": null, "pluginId": "b30d0478-8c7b-4687-bfc2-b3cdb3f5faff", "sortKey": 6, "plugin": { "isFavored": true, "isShared": false, "isOwned": false, "accessInfo": { "userAccessType": "favored", "owner": { "id": "0d888b00-fa53-47c1-882a-b68391268a11", "firstName": "SVL", "lastName": "Content" } }, "supportedSimulatorVersions": [ "2021.3", "2021.2", "2021.2.2", "2021.1", "2021.1.1" ], "id": "b30d0478-8c7b-4687-bfc2-b3cdb3f5faff", "name": "Lidar Sensor", "type": "LidarSensor", "category": "sensor", "ownerId": "0d888b00-fa53-47c1-882a-b68391268a11", "accessType": "public", "description": "This sensor returns a point cloud after 1 revolution.\nSee https://www.svlsimulator.com/docs/simulation-content/sensors-list/#lidar for more details.", "copyright": "LG Electronics Inc.", "licenseName": "LG Content", "imageUrl": "/api/v1/assets/download/preview/dd44a969-c038-4966-a39f-a445ab3b6c00", "status": "active", "owner": { "id": "0d888b00-fa53-47c1-882a-b68391268a11", "firstName": "SVL", "lastName": "Content" }, "shareRequests": [] }, "type": "LidarSensor" }
各センサのパラメータ設定の詳細についてはここを参照。
www.svlsimulator.com
新しいセンサ構成を追加してみる
一からJSONファイルを記述するのは面倒なので、
既存のファイルを修正する形で追加してみる。
まずは、既存車両モデルからSensor Configurationsを開く。
Configurationsを開けたら、構成リストからApollp 5.0 (full analysis)を選ぶ。
すると、このように搭載されているセンサの一覧が確認できる。
この画面から、Configuratorの右端になるダウンロードアイコンを押して、
現在の設定を記述したJSONファイルを出力する。
このファイルをローカルの好きな場所に置き、
好きな名前でコピーを作る。今回は下記のように、
Apollo 6.0 (full analysis).jsonとした。
次に再びSensor Configurations一覧の画面に戻り、
右下にあるAdd New Configurationを選択する。
Configuration NameとBridge方式を聞かれるので、
名前は先程作ったJSONファイルと同じ名前にし、
BridgeはCyberRTを選択してApplyする。
次に、何もセンサがない状態の設定画面になるので、
ConfiguratorのUploadアイコンから先程作ったJSONファイルを
取り込む。すると、このように記述したセンサ構成とパラメータが
全て取り込まれた状態になる。
最後に、Uploadアイコンの上にあるSaveアイコンを押せば、
Apollo 6.0 (full analysis)がセンサ構成リストに新しく追加される。
Apolloとの連携シミュレーションで動作確認
まずはこの記事にあるようにApolloを起動し、
SVL Simulatorとブリッジ接続できるようにする。
次に、SVL Simulator左メニューのSimulationsから、
上の記事で作ったシミュレーション環境を選択する。
概要画面が開くので、ここで右上にあるEditを選択する。
シミュレーション条件の編集画面が開くので、
真ん中のTest caseタブを選択し、Vehicleの
Sensor Configurationsから先程作った構成を選択する。
最後にSaveし、Run Simulationでシミュレーション開始。
問題なければ、SVL Simulator上ではこのように設定した
各種センサの出力が模擬されていることを確認できる。