Blog2020-06-03AWFへ提案中のAutoware新アーキテクチャのご紹介こんにちは。ティアフォーの上野です。(AWF)に提案しているAutowareの新アーキテクチャを紹介したいと思います。はじめに2015年8月25日にAutowareが公開されてから、もうすぐ5年が経とうとしています。Autoware公開当初は、アカデミックの研究成果をもとに自動運転システムのアーキテクチャを模索しながら開発が行われていました。その後、世の中で自動運転の機能や研究が急速に発展していく中で、それらを統合するためのより良いアーキテクチャとはどのようなものなのか、日々議論が行われてきました。そのような議論を詳細まで詰めていくためには、実際に細部まで実装してみないと分からない部分も多くあります。ティアフォーでは、これまで積み上げてきた実証実験の経験を活かし、プロトタイプ実装を繰り返しながらアーキテクチャの議論を進めてきました。今回、それらの議論がある程度成熟したと判断し、今後のOSSの自動運転開発に向けた詳細な新たなアーキテクチャ提案を、そのプロトタイプ実装とあわせて公開することにしました。プロトタイプ実装のソースコードは下記リンク先で公開していますので、是非ダウンロードして試してみてください。下の図の通り、このアーキテクチャではAutowareは7つのモジュールで構成されています。各モジュールの役割が明確化されてインターフェースがシンプルになり、OSSとしてより継続的に開発・改善しやすい構造になっています。各モジュールは以下のような役割を担っています。Sensing:センサーから取得したデータのROSメッセージ化。他のモジュールにデータを渡す前の共通の前処理。Localization:センサーデータを統合し、自車両の自己位置と速度を推定。Perception:動物体の認識、および信号機の色認識。Planning:ゴール地点までのルート計算から実際の走行軌跡生成までの処理。Control:走行軌跡に沿って走るための、車両へのコマンドの生成。Map:地図データの読み込み、変換。Vehicle:Autoware内のデータ形式と車両固有の信号フォーマットの変換。以下、各モジュールについてもう少し詳しく説明していきます。SensingSensingモジュールでは、LiDAR・カメラ・GNSS・IMUの4種類のセンサーをサポートしています。それぞれのセンサーに対してドライバーを用意し、ROSのメッセージ型にデータを変換します。Preprocessorとして、他のモジュールへデータを渡す前の前処理(例:LiDARの点群データからの外れ値除去や、自車両の運動による歪みの補正など)を行います。LocalizationLocalizationモジュールでは、センシングしたデータをもとに、自車両のPose(位置と姿勢)とTwist(並進速度と角速度)を求め、mapからbase_linkへのTFとTwistを出力します。estimatorではIMU・車両からのTwist情報を統合して扱うことができます。このように複数のセンサーを併用することで、より高い精度、ロバスト性を持った自己位置推定を実現することが可能になります。recognitionの2つのパートに分かれています。1では車両の周りを取り巻く物体の検出・追跡・予測を行っており、2では信号の検出および識別を行います。信号)への対応も可能です。PlanningPlanningモジュールでは、今回はシナリオ形式を採用しました。このシナリオ形式では、走行のシチュエーション(例:通常の道路走行、駐車場での駐車など)に応じた適切なシナリオを選ぶことにより、各シチュエーションにおける適切な挙動をするようPlannerを切り替えることが可能となります。開発の観点からも、個々のシナリオの独立した(並行した)開発や、シナリオに応じたパラメータチューニングが可能というメリットがあります。ControlControlモジュールでは、Planningで計画した走行軌跡に沿って車両を走らせるための、車両へ送るコマンド(ハンドルの角度と各速度、車両の速度と加速度など)を生成します。遠隔操作のコマンド等、Autoware外部からの入力も含めた複数の制御値のうち、どのコマンドを実際に車両に送るか切り替えるGatewayとしての役割も担っています。mapの2種類のマップをサポートしています(※)。1は3Dの点群地図の情報、2は車線や信号の位置といった地物情報を含んでおり、それぞれのマップに対するLoaderを通して、Localization・Perception・Planningといった他のモジュールで利用可能な形にデータを変換しています。mapはLanelet2のみのサポートとなっていますVehicleVehicleモジュールは、Autoware内で扱われているデータ形式と車両固有の信号フォーマットの変換を行うため、車両によってモジュール内の構造が異なります(上の図に加えて、追加の変換コンポーネントが必要な場合があります)。Autowareから車両へ(上の図の右向き矢印)と、車両からAutowareへ(左向き矢印)の双方向の変換が行われます。新アーキテクチャのプロトタイプ実装を用いてデモを行った動画を、YouTubeで公開しています。どんなことができるようになっているのか、是非動画でご覧ください。youtu.beこの他にも、別のデモ動画やシミュレーション動画も公開しています。IVチャンネルからご覧ください。おわりに新アーキテクチャの内容、いかがでしたでしょうか?ブログタイトルや“はじめに”に書いてある通り、この新しいアーキテクチャはAWFに対して現在絶賛提案中です(2020年6月上旬時点)。今後Autowareがどのように変わっていくのか興味を持たれた方、自分も議論に参加したいという方は、ぜひAWFの活動に参加していただければと思います。こんにちは!ティアフォーの片岡と申します。IVにはWeb、組み込みソフト、ハードウェアといった異なるスキルセットを持ったエンジニアがおり、一緒に働いてくれる仲間を常に募集しています。BlogをMediumに移行しました。12リンク運営会社はてなブログをはじめよう!TierIVさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。