Autowareについて整理してみた

# 背景・目的
最近、AutowareやROSbagについて触れる機会が増えてきましたので、知識を整理します。

# まとめ
下記に特徴を整理します。

|特徴|説明|
|:--|:--|
|Autowareとは|・自動運転向けの世界をリードするOSSプロジェクト<BR>・Autowareは、Robot Operating System(ROS)上に構築されている<BR>・幅広い車両やアプリケーションでの自動運転の商用展開を可能にする|
|Autowareの特徴|・Autoware Foundation によってサポートされている<BR>・明確に定義されたインターフェイスと API を備えたモジュラーアーキテクチャ<BR>・自動運転に必要なすべての機能 (認識、位置特定、計画、制御) で構成されている|
|Autoware Project|・Autoware Open Source Softwareは、幅広い自律アプリケーションにわたるスケーラビリティを実現するように設計されている<BR>・実際の導入で高品質と安全性を実現するためにベスト プラクティスと標準を適用して開発されている|
|The Autoware Stack|・SENSING<BR>・LOCALIZATION<BR>・PERCEPTION<BR>・PLANNING<BR>・CONTROL<BR>・VEHICLE INTERFACE<BR>・MAP DATA|
|SENSING|センサーデータは、自動運転車両に搭載されたセンサーから収集される|
|LOCALIZATION|センサデータと高精度地図データを使用して、自動運転車の正確な位置と方向を決定する|
|PERCEPTION|信号や標識だけでなく、車両、自転車、歩行者などの物体の動きを検出、認識、追跡する|
|PLANNING|知覚情報を使用して目的のルートに沿った車両の経路を計算し、物体や障害物を回避する|
|CONTROL|計画情報は正確な車両制御信号 (ステアリング角度、ブレーキ、加速など) に変換され、車両インターフェースを介して送信される|
|VEHICLE INTERFACE|車両のさまざまな特性に応じて制御信号をコマンドに変換する|
|MAP DATA|高精度3D地図データを活用し、周囲の情景を把握する|
|ODD|・ODDは、Operational Design Domainの略。運行設計領域を指す<BR>・設計上、各自動運転システムが作動する前提となる走行環境条件|
|ROS|・Robot Operating Systemの略<BR>・ロボット アプリケーションを構築するためのソフトウェア ライブラリとツールのセット|
|ROS2|異なるプロセス間でのメッセージ パッシングを可能にする、厳密に型指定された匿名のパブリッシュ/サブスクライブ メカニズムに基づくミドルウェア <BR><BR>ROS 2 システムの中心となるのは ROS グラフ|
|ROS グラフ|ROS システム内のノードのネットワークと、それらのノードが通信する接続を指す|


# 概要
下記のドキュメントを基に整理します。

https://autoware.org/autoware-overview/

## Autoware Overview
> Autoware is the world’s leading open-source software project for autonomous driving.
> Autoware is built on Robot Operating System (ROS) and enables commercial deployment of autonomous driving in a broad range of vehicles and applications.

- Autowareは、自動運転向けの世界をリードするOSSプロジェクト
- Autowareは、Robot Operating System(ROS)上に構築されている
- 幅広い車両やアプリケーションでの自動運転の商用展開を可能にする

## Autoware Project
> Supported by the Autoware Foundation, Autoware consists of all the functionality required for autonomous driving (i.e., perception, localization, planning, control) in a modular architecture with crisply defined interfaces and APIs.

- Autoware Foundation によってサポートされている Autoware は、明確に定義されたインターフェイスと API を備えたモジュラーアーキテクチャで、自動運転に必要なすべての機能 (認識、位置特定、計画、制御) で構成されている

> The Autoware open-source software is designed for scalability across a broad range of autonomous applications and developed by applying best practices and standards to achieve high quality and safety in real-world deployments.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/36536742-7b60-1bcb-4ae5-ae2274e32d67.png)

※出典:[Autoware Project](https://autoware.org/autoware-overview/)


- Autoware OSSは、幅広い自律アプリケーションにわたるスケーラビリティを実現するように設計されている
- 実際の導入で高品質と安全性を実現するためにベスト プラクティスと標準を適用して開発されている
- 30以上の車両タイプ
- 20以上の国
- 500以上の企業

## The Autoware Stack

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206276/6b4b5d6b-71a4-0351-0403-cf8ddde692cc.png)

※出典:[The Autoware Stack](https://autoware.org/autoware-overview/)

### SENSING
> Sensor data is collected from LiDAR, radars, camera, GNSS, IMU, and other sensors mounted on the autonomous vehicle.

- センサーデータは、自動運転車両に搭載された下記のセンサーから収集される
    - LiDAR
    - radars
    - camera
    - GNSS
    - IMU
    - その他センサー

### LOCALIZATION
> Sensor data, along with high-precision map data, is used to determine the precise location and orientation of the autonomous vehicle.

- センサデータと高精度地図データを使用して、自動運転車の正確な位置と方向を決定する

### PERCEPTION
> Detection, recognition and tracking of the movement of objects such as vehicles, bicycles, and pedestrians, as well as the traffic signals and signs.

- 信号や標識だけでなく、車両、自転車、歩行者などの物体の動きを検出、認識、追跡する

### PLANNING
> Calculating the path of the vehicle along the desired route using perceptual information to avoid any objects and/or obstacles.

- 知覚情報を使用して目的のルートに沿った車両の経路を計算し、物体や障害物を回避する

### CONTROL
> Planning information is translated into precise vehicle control signals (e.g., steering angle, braking, and acceleration) and sent through the vehicle interface.

- 計画情報は正確な車両制御信号 (ステアリング角度、ブレーキ、加速など) に変換され、車両インターフェースを介して送信される


### VEHICLE INTERFACE
> Converting the control signals into commands according to various vehicle characteristics.

- 車両のさまざまな特性に応じて制御信号をコマンドに変換する

### MAP DATA
> Utilizing high-precision 3D map data to provide scene understanding around the environment.

- 高精度3D地図データを活用し、周囲の情景を把握する

## Core & Universe
> Autoware continuously evolves to offer more capability towards curb-to-curb Level 4 autonomous driving.

- Autowareは継続的に進化し、curb-to-curb（縁石〜縁石、道路全体）でのレベル4自動運転に向けた機能を提供する

> Autoware Core includes all functionality required to support the ODDs targeted by the Autoware project. Autoware Core applies best-in-class software engineering practices, including pull request reviews, pull request builds, comprehensive documentation, 100% code coverage, a coding style guide, and a defined development and release process, all managed by an open-source community manager.

- Autoware Core
    - Autoware プロジェクトが対象とする ODD をサポートするために必要なすべての機能が含まれてる
    - プル リクエストのレビュー、プル リクエストのビルド、包括的なドキュメント、100% のコード カバレッジ、コーディング スタイル ガイド、定義された開発およびリリース プロセスなど、クラス最高のソフトウェア エンジニアリング プラクティスを適用しており、これらはすべてオープン ソース コミュニティ マネージャーによって管理されている

> Autoware Universe enables additional packages to be built on top of Autoware Core that extend the functionality of Autoware. With Autoware Universe, functionality can be more easily integrated for advanced research and development, allowing for early experimentation and deployment of capabilities to be integrated into future versions of Autoware Core. Autoware Universe opens the door to participating in the application of Autoware to complex and challenging use cases such as Robo-Taxis operating in dense urban environments or high-speed autonomous racing.

- Autoware Universe
    - Autoware の機能を拡張する追加パッケージを Autoware Core 上に構築できる
    - 高度な研究開発のための機能をより簡単に統合できるため、Autoware Core の将来のバージョンに統合する機能を早期に実験および展開できる
    - 密集した都市環境でのロボタクシーの運行や高速自律レースなど、複雑で困難なユースケースへの Autoware の適用に参加する機会を提供する

## Operational Design Domains and Use Cases
### Autonomous Valet Parking (AVP)
> The Autoware V1.0 release addresses Autonomous Valet Parking and Autonomous Dept Maneuvering as example use cases. In this release, Autoware is capable of mapping of a parking lot, creation of the map for autonomous driving and autonomous driving on the parking lot.

- Autoware V1.0 リリースでは、使用例として、自動バレーパーキングと自動部門操縦を取り上げている
- このリリースでは、Autoware は駐車場のマッピング、自動運転用のマップの作成、駐車場での自動運転を行うことができる

### Cargo Delivery
> The Autoware V2.0 release supports Cargo Delivery, the transport of goods between multiple points or last mile delivery, which is an AD market segment that will grow significantly over the coming years.

- Autoware V2.0 リリースは、今後数年間で大幅に成長する AD 市場セグメントである、複数のポイント間の商品の輸送またはラスト マイルの配送である貨物配送をサポートする

> Adoption and scaling of AD technology in the handling of goods is expected to precede mass adoption in passenger transportation solutions (e.g. Robo-Taxis) as the operational environment is much more constrained, and achieving safe operation requires significantly less simulation and real world validation.

- 運用環境がはるかに制約されており、安全な運用を実現するにはシミュレーションと実際の検証が大幅に少なくて済むため、商品の取り扱いにおける AD 技術の採用と拡張は、乗客輸送ソリューション (ロボ タクシーなど) での大量採用に先行すると予想される

> The Autoware V2.0 release supports Cargo Delivery, the transport of goods between multiple points or last mile delivery, which is an AD market segment that will grow significantly over the coming years.

- Autoware V2.0 リリースは、今後数年間で大幅に成長する AD 市場セグメントである複数のポイント間の商品の輸送またはラスト マイルの配送である貨物配送をサポートする

### Racing
> The Autoware Foundation is partnering with the F1TENTH Organization to bring Autoware to the F1TENTH racing community.

- Autoware Foundation は F1TENTH 組織と提携して、Autoware を F1TENTH レース コミュニティに導入している

> The F1TENTH platform is used by many universities as the basis of AD education and for advanced AD research. In addition, it offers students the opportunity to collaboratively compete against other university teams in F1TENTH racing competitions. Students build F1TENTH AVs and learn to develop the AD software which runs on the AV.

- F1TENTH プラットフォームは、多くの大学で AD 教育の基盤として、また高度な AD 研究のために使用されている
- F1TENTH レース コンテストで他の大学チームと協力しながら競い合う機会を学生に提供している
- 学生は F1TENTH AV を構築し、AV 上で実行される AD ソフトウェアの開発方法を学ぶ

### Robo-Bus/Shuttle
> The Robo-Bus/Shuttle use case is the first public road ODD targeted for integration into Autoware Core. Fully autonomous driving (Level 4) will be supported for pre-defined routes and stops for autonomous buses and shuttles operating on public roads.

- ロボバス/シャトルの使用事例は、Autoware Core への統合を目的とした最初の公道 ODDである
- 公道で運行される自動運転バスとシャトルの事前定義されたルートと停留所では、完全自動運転 (レベル 4) がサポートされる

> This release will include significant advancements to the Perception and Planning modules of Autoware, allowing for operation on public road environments, navigating amongst multiple vehicles, bicycles, and pedestrians, as well as recognizing traffic signals and complex traffic situations.

- このリリースには、Autoware の認識モジュールと計画モジュールの大幅な進歩が含まれ、公道環境での運行、複数の車両、自転車、歩行者間の移動、交通信号や複雑な交通状況の認識が可能になる

### Robo-Taxi
> The Robo-Taxi ODD consists of fully autonomous (Level 4) taxis operating in dense urban environments and is currently being made available as part of Autoware Universe.

- ロボタクシー ODD は、密集した都市環境で運行する完全自律型 (レベル 4) タクシーで構成されており、現在 Autoware Universe の一部として提供されている

> This use case requires further enhancements to the Perception and Planning modules of Autoware as vehicles are operating autonomously throughout large service areas (e.g. entire city or downtown area) and in complex traffic situations.

- このユースケースでは、車両が大規模なサービスエリア (都市全体またはダウンタウン エリアなど) 全体で、また複雑な交通状況で自律的に運行するため、Autoware の認識モジュールと計画モジュールをさらに強化する必要がある

> Ultimately, the features and functionality to support the Robo-taxi use case will be integrated into Autoware Core, meeting the more stringent code quality and documentation requirements required for use in commercial applications.

- 最終的には、ロボタクシーのユースケースをサポートする機能が Autoware Core に統合され、商用アプリケーションでの使用に必要な、より厳格なコード品質とドキュメント要件を満たすことになる

## ODDとは
下記を基に整理します。

https://jidounten-lab.com/u_autonomous-odd#ODD

- ODDは、Operational Design Domainの略。運行設計領域を指す
- 設計上、各自動運転システムが作動する前提となる走行環境条件
- 自動運転レベル3移譲の高度な自動運転システムは発展途上のため、あらゆる道路状況や気象条件下において完全な走行を行う技術種順には至っていない。そのため、個々の自動運転システムの能力に応じたODDをあらかじめ設定し、走行環境や運用方法を制限する。これにより、自動運転システムが引き起こす可能性がある事故などを未然に防止する

# 考察

今回、自動運転向けのOSSであるAutowareについて特徴を整理しました。今後は関連するROSやソフトウェアをインストールし挙動を確認してみます。

# 参考
https://autoware.org/autoware-overview/

https://github.com/autowarefoundation/autoware

https://jidounten-lab.com/u_autonomous-odd#ODD

https://autowarefoundation.github.io/autoware-documentation/main/

https://github.com/autowarefoundation/autoware-documentation