Autoware Universeがうまく動かない！

# 概要

最後まで呼んでもタイトルの通りうまく動かなかったという結論しかわかりません。
ただAutoware Universeに関する記事が世の中に少ないのでとりあえず取り組んだ内容について残しておきます。

## 背景
ROS2版のAutowareは情報が少なくこれまではAutoware.autoがそれに当たると思っていたが
以下の記事によると今年になってAutoware.autoから**Autoware Core/Universe**に変更があったとのこと(個人的に知ったのが2022年11月頃)
[自動運転開発したい！でもどこから始めれば良いの？](https://medium.com/tier-iv-tech-blog/%E8%87%AA%E5%8B%95%E9%81%8B%E8%BB%A2%E9%96%8B%E7%99%BA%E3%81%97%E3%81%9F%E3%81%84-%E3%81%A7%E3%82%82%E3%81%A9%E3%81%93%E3%81%8B%E3%82%89%E5%A7%8B%E3%82%81%E3%82%8C%E3%81%B0%E8%89%AF%E3%81%84%E3%81%AE-ce511f5fcc4d)

もともとROS1版のAutoware.AIは触ったことがあったのと、ドキュメントもある程度揃っているようだったのでサンプルを動かすところまでやろうと思ったのが最初の動機です。

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

## Autoware Core/Universeの簡単な概略

[自動運転開発したい！でもどこから始めれば良いの？](https://medium.com/tier-iv-tech-blog/%E8%87%AA%E5%8B%95%E9%81%8B%E8%BB%A2%E9%96%8B%E7%99%BA%E3%81%97%E3%81%9F%E3%81%84-%E3%81%A7%E3%82%82%E3%81%A9%E3%81%93%E3%81%8B%E3%82%89%E5%A7%8B%E3%82%81%E3%82%8C%E3%81%B0%E8%89%AF%E3%81%84%E3%81%AE-ce511f5fcc4d)の言葉を借りれば以下のような違いがある。

* Autoware Core
    * 自動バレーパーキング、カーゴデリバリー用途に必要な最低限の機能を内包
>Autoware CoreはAutoware.Autoの理念を引き継いでおり、リポジトリへ新機能を追加する際にはAWFで設定した基準をパスする必要があります。AWFが基準を満たしていることを確認することで、機能保証と品質保証をした自動走行ソフトウェアを提供することができ、例えば企業が自社サービスにAutowareを使いたい場合にも、より少ない手間で導入できるようになります。

* Autoware Universe
    * Coreより高度な機能＋R&D用途
>対してAutoware Universeは、Autoware Coreの一部のモジュールを置き換えたり機能追加したりできるような拡張、変更が簡単にできるパッケージ群になります。Autoware Universeは、Core よりも緩い基準でパッケージが管理され、学生や研究者が研究目的で開発した実験的な機能でもAWFのコミュニティに共有できるようになります。Autoware Core開発者にとっても、様々な実装を試すプロトタイプ開発の場としても利用できます。ただしAutoware.AIほど基準が緩いわけではなく、例えば他のユーザーが利用しやすいように最低限READMEなどは求められますし、あくまでAutoware UniverseはAutoware Coreの拡張という位置付けですので、AutowareCoreで定められたインタフェースに基づいてCoreのモジュールとの互換性を持っている必要があります。


以下のサイトの絵がイメージしやすい

https://www.autoware.org/autoware

## 環境

* ホストPCのスペック
    * Ubuntu20.04
    * CPU Ryzen 3600
    * GPU RTX 3060
    * Memory 32GB

後述するビルドでかなりのリソースを消費するため高スペックPCが望ましい。
AWSIMを使う場合はGPUも高スペック(RTX2080Ti以上)を用意。

## インストール

今回はDocker上で構築する。
ドキュメント通りに行えば問題なく完了するはず。

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

ただし、ビルドにはかなりのリソースを消費する。
今環境でも初回ビルドは合計26分ほどかかった。

```bash
# 何個かビルドエラーが出ているが今回はそのまま進めました。
Summary: 243 packages finished [26min 49s]
  20 packages had stderr output: bag_time_manager_rviz_plugin elevation_map_loader grid_map_pcl image_projection_based_fusion lidar_apollo_instance_segmentation lidar_apollo_segmentation_tvm lidar_apollo_segmentation_tvm_nodes lidar_centerpoint lidar_centerpoint_tvm livox_tag_filter map_loader map_tf_generator ndt_omp ndt_scan_matcher obstacle_velocity_limiter simulator_compatibility_test tier4_traffic_light_rviz_plugin trtexec_vendor tvm_utility velodyne_pointcloud 
```

CPUはほぼ100%に張り付き、メモリも波はあるが最大で20GBぐらい消費する。
以下のIssuesを読むと、ビルド時の問題について対策が書かれているので実行する前に一読することをオススメする。

https://autowarefoundation.github.io/autoware-documentation/main/support/troubleshooting/#build-issues

## サンプル実行

大きく分けて、アドホックシミュレーションとシナリオシミュレーションの2つが用意されている。
https://autowarefoundation.github.io/autoware-documentation/main/tutorials/

アドホックシミュレーションは簡単な動作確認シミュレーション
シナリオシミュレーションはあるシナリオに沿った動作をテストするシミュレーションです。

### アドホックシミュレーション

このあたりはRviz上での操作を体感するといった内容でした。

* 計画シミュレーション（車線運転、駐車）

https://autowarefoundation.github.io/autoware-documentation/main/tutorials/ad-hoc-simulation/planning-simulation/

* Rosbagリプレイシミュレーション
 
https://autowarefoundation.github.io/autoware-documentation/main/tutorials/ad-hoc-simulation/rosbag-replay-simulation/

* AWSIMシミュレーター

PCスペックを満たす方は挑戦してみて下さい。
 
https://autowarefoundation.github.io/autoware-documentation/main/tutorials/ad-hoc-simulation/digital-twin-simulation/awsim-tutorial/

### シナリオシミュレーション

この辺はもう少し深堀したかったのですが残念ながらエラーで落ちたり、evaluationが失敗する場面があり私の環境ではうまく動きませんでした（PCスペックのせいかな？）

* 計画シミュレーション

https://autowarefoundation.github.io/autoware-documentation/main/tutorials/scenario-simulation/planning-simulation/installation/

* Rosbagリプレイシミュレーション
    * `driveing_log_replayer`というツールを使った3つの評価が体験できます。
    * Localization Evaluation、Obstacle Segmentation Evaluation、Perception Evaluation

https://tier4.github.io/driving_log_replayer/quick_start/installation/

## まとめ

ROS1版のAutoware.AIは触れたことがありましたが、それから随分とモダンな環境になっていて驚きました。
カレンダーの期日（12/6）までに一通り動かしたかったのですが時間切れになってしまい残念です。
悔しいのでもう少し深堀を続けて、わかり次第記事にしたいと思います。

### 最後に

これをきにもう少しAutoware Universeに関する記事が増えると個人的に助かる。