はじめまして。株式会社ティアフォーで自動運転システムおよびそのシミュレーションソフトウェア開発をしている片岡です。今回のエントリではAutoware対応自動運転シミュレータであるLGSVL Simulatorについて、その仕組みとティアフォーでそれをどう活用しているかについて解説していきたいと思います。
LGSVL SimiulatorはAutowareと同様にオープンソースで提供されている自動運転向けマルチロボットシミュレータです。街一つをまるごとシミュレーションした巨大なマップに数百台のNPC車両を動かし、その環境の中で自分の自動運転アルゴリズムを検証することが可能です。
バイナリリリースもひと月に一度のペースで行われており、そのたびに多くの新要素が追加されています。
自動運転システム開発におけるシミュレータの役割
自動運転システム開発におけるシミュレータの最大の役割は、実験コストおよび事故リスクの低減にあります。自動運転システムの開発をすべて実車で行った場合、車両のセットアップだけで数時間は必要です。公道実験ともなると実施場所の許可申請等それ以外の準備も必要になってきます。そして何より、実験時に事故を起こしてしまった場合、人命に関わるような取り返しのつかない事態も招きかねません。
そこで、そうした実車では危険な実験(制御アルゴリズムの動作テスト、未完成のパーセプションモジュールの動作テスト等)を行う際に活用されるのがシミュレータです。
自動運転シミュレータとしてROSと接続して使用できるシミュレータには以下のようなものがあります。
ティアフォーではこの中からAutoware向けAPIが存在し、街一つをシミュレーション可能なLGSVL Simulatorを使用して自動運転システムの開発を行っています。
Unityをベースにしているため、ドキュメントが豊富で拡張性も高く、アセットストアのソフトウェア資産を活用することできわめて高速な開発が可能です。
ティアフォーではゼンリン様がUnity Asset StoreにてMITライセンスで公開中の秋葉原の3Dモデルを用いて数時間の作業で秋葉原での自動運転シミュレーションに成功しました。
LGシミュレータとAutowareの連携機能
ティアフォーではLGSVL Simulator Launcherというシミュレータリモート起動ツールを開発し、シミュレーターを遠隔起動できるようにしています。
このツールはFlaskというPythonのフレームワークを用いて開発されています。シミュレータマシンのポートにHTTPで以下のようなjsonをPOSTするとシミュレータに設定ファイルを引き渡し、起動してくれます。
{
"bin_type" : "tier4-develop",
"initial_configuration" : {
"map" : "SanFrancisco",
"time_of_day" : 12.0,
"freeze_time_of_day" : true,
"fog_intensity" : 0.0,
"rain_intensity" : 0.0,
"road_wetness" : 0.0,
"enable_traffic" : true,
"enable_pedestrian" : true,
"traffic_density" : 300
},
"vehicles" :
[
{
"type" : "XE_Rigged-autoware",
"address" : "$(autoware_machine_ip)",
"port" : 9090,
"command_type" : "twist",
"enable_lidar" : true,
"enable_gps" : true,
"enable_main_camera" : true,
"enable_high_quality_rendering" : true,
"position" : {"n" : 4140310.4, "e" : 590681.5, "h" : 10},
"orientation" : {"r" : 0.0, "p" : 0.0, "y" : 269.9}
}
]
}
このLGSVL Simulator Launcherにより、ティアフォーでは自分の席からいつでもシミュレーション環境を使用可能です。
LGシミュレータは、Unity上で物理計算、NPCの挙動制御、センサーシミュレーションといった様々なモジュールがシミュレータ世界の情報を更新することで動作します。
UnityとROSの接続にはros-sharpが有名ですがLGSVL SimulatorではIROS Clientというrosbridgeに対応したROSクライアントを独自実装しています。
今後、ティアフォーではLGSVL SimulatorとAutowareの連携機能を強化することで、公道走行中にセンサを止めるといった実車では極めて危険な実験をシミュレーション上で行い、Autowareの安全性を高めたり、新規アルゴリズムの開発や性能評価、CIと統合したAutowareの動作テストに用いていきたいと考えています。
現在はAutowareにLGSVL Simulatorから出力されるGround Truthデータ(深度画像、セグメンテーション画像、物体領域、Lidar点群とそのラベル等)をKITTI Datasetのデータ形式に変換するツールを追加しようと鋭意開発中です。
まとめ
ティアフォーではシミュレータを用いてAutowareやその周辺ツール開発の高速化、品質向上に努めています。
今後は
- ラベルデータ自動収集機能の追加
- CIと統合した自動テスト機能の実装
- アルゴリズムの自動評価機能の追加
等の開発を進め、自動運転システム開発を強力に加速させていきたいと考えています。
自動運転システムを一緒に開発してくれるメンバーを募集しています!