Autowareの概念#
Autowareは、自動運転システム用の世界初のオープンソースソフトウェアです。Autowareは両方の価値を提供します。自動運転システムの技術開発者は、Autowareに基づいて新しいコンポーネントを作成できます。一方、自動運転システムのサービスオペレーターは、Autowareを使用して適切なテクノロジーコンポーネントを選択できます。これは、ソフトウェアスタックをcoreサブシステムとuniverseサブシステム(モジュール)にモジュール化するマイクロオートノミーアーキテクチャによって実現されます。
マイクロオートノミーアーキテクチャ#
Autowareはパイプラインアーキテクチャを使用して自動運転システムの開発を可能にします。Autoware で使用されるパイプラインアーキテクチャは、3層アーキテクチャと同様のコンポーネントで構成されます。そしてそれらは並行して実行されます。2つの主要なモジュール:CoreとUniverseがあります。 これらのモジュールのコンポーネントは、拡張可能で再利用できるように設計されています。私たちはそれをマイクロオートノミーアーキテクチャと呼んでいます。
Coreモジュール#
Coreモジュールには、自動運転システムに必要なセンシング、コンピューティング、作動の基本的な機能と能力を満たす基本的なランタイムとテクノロジコンポーネントが含まれています。AWFは、アーキテクトおよびワーキンググループを通じて主要なメンバーとともにCoreモジュールを開発および保守します。Coreには誰でも貢献できますが、PR(プルリクエスト)の受け入れ基準はUniverseと比較してより厳格です。
Universeモジュール#
Universeモジュールは、計測、計算、および作動の機能と能力を強化するためにテクノロジー開発者が提供できるCoreモジュールの拡張機能です。AWFは、拡張元となる基本Universeモジュールを提供します。マイクロオートノミーアーキテクチャの重要な特徴は、Universeモジュールをあらゆる組織や個人が貢献できることです。つまり、Universeを作成して、Autowareコミュニティやエコシステムで利用できるようにすることもできます。AWFは、開発プロセスを通じてUniverseモジュールの品質管理を担当します。その結果、Universeモジュールには複数のタイプがあり、AWF によって検証および検証されるものと、そうでないものがあります。最終アプリケーションを構築するためにどのUniverseモジュールを選択して統合するかは、Autowareのユーザー次第です。
インターフェース設計#
インターフェイス設計はマイクロオートノミーアーキテクチャの最も重要な部分であり、内部インターフェイスと外部インターフェイスに分類されます。コンポーネント インターフェイスは、Universeモジュール内のコンポーネントがAutoware内部でCoreモジュールを含む他のモジュール内のコンポーネントと通信できるように設計されています。一方、AD (自動走行) API は、AutowareのアプリケーションがAutowareのCoreモジュールとUniverseモジュールのテクノロジーコンポーネントに外部からアクセスできるように設計されています。堅牢なインターフェイスを設計することにより、マイクロオートノミーアーキテクチャはAWFのパートナーとともに実現され、同時にパートナーにとっても実現可能になります。
課題#
マイクロオートノミーアーキテクチャの大きな課題は、システム内でアクティブ化されているすべてのテクノロジーコンポーネントが予測どおりにタイミング制約 (指定された期限)を満たすことを保証するリアルタイム機能を実現することです。一般に、コンポーネントの最悪の場合の実行時間 (WCET) を厳密に推定することは、不可能ではないにしても困難です。
さらに、DAGによって接続されているコンポーネントのエンドツーエンドの遅延を厳密に推定することも、不可能ではないにしても困難です。したがって、マイクロオートノミーアーキテクチャに基づく自動運転システムは、絶対に失敗しないように設計する必要はありますが、フェールセーフになるように設計する必要があります。オーバーランを考慮する限り、タイミング制約に違反する可能性がある (指定された期限を守れない可能性がある) ことを受け入れます。オーバーランハンドラーには、(i) プラットフォーム定義と (ii) ユーザー定義の 2 つがあります。プラットフォーム定義のハンドラーはデフォルトでプラットフォームの一部として実装されますが、ユーザー定義のハンドラーはそれを上書きしたり、新しいハンドラーをシステムに追加したりできます。これは、時間を基準とした“フェイルセーフ”と呼ばれるものです。
要件とロードマップ#
目標:
- すべてのオープンソース
- ユースケース主導型
- オーバーラン処理を備えたリアルタイム(予測可能な)フレームワーク
- コードの品質