Autoware開発環境構築 on Google Cloud Platform

:::note alert
料金請求が発生する可能性があります、実行は自己責任でお願いします。
:::

# 要約
- Google Cloud Platform(GCP)上でAutoware開発環境を構築
- インスタンス構成にも依るが、1時間あたり$0.5ほどで利用可能
    - 1290時間使用するとオンプレPCと同額($1=¥155換算で約10万)くらい
- Autowareを短期的に使用する方には、各種クラウドも選択肢としてありかも

# 目次
1. [背景・目的](#1-背景目的)
2. [開発環境構築手順](#2-開発環境構築手順)
2.1. [GCP登録・ログイン](#21-gcp登録ログイン)
2.2. [VM作成](#22-vm作成)
2.3. [Autoware開発環境構築](#23-autoware開発環境構築)
3. [料金](#3-料金)
4. [まとめ](#4-まとめ)
5. [最後に](#5-最後に)

# 1. 背景・目的
自動運転ソフトウェア[Autoware](https://tier4.jp/en/opensource/)の開発には計算資源が要求される場合がある。
初学者や計算資源を十分お持ちでない方も、気軽に自動運転開発に触れてほしいと思ったので、クラウド上での開発環境構築にトライした。
なお本記事における __開発環境__ とは、AutowareおよびAWSIMでの自動運転シミュレーションが実行可能な環境を指す。

# 2. 開発環境構築手順
実際に環境構築した際の手順を以下に示す。

## 2.1. GCP登録・ログイン
まずはじめに、Google Cloud Platform(GCP)に登録・ログインする。
なお本記事執筆時は、[新規登録すると無料クレジット$300分もらえる。](https://cloud.google.com/free?hl=ja)

なお、GPUを使うには本登録(クレジットカード登録)が必要になる。
本登録後も無料クレジット$300分は利用可能だが、超過分は普通に請求されるので注意。

:::note warn
使わないときは、インスタンスの停止・削除を徹底しましょう。
:::

## 2.2. VM作成

### ①プロジェクトページで”VMを作成”
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/ec7bf744-de15-9b1f-8c3c-31f2383f1d90.png)

### ②各種構成設定をして”作成”
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/1e9fb53a-c314-bb67-b77f-9d459958d9e3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/7cc1f7e0-a773-ce36-f27c-0f8199dde2eb.png)

[Minimum Hardware Requirements](https://automotiveaichallenge.github.io/aichallenge2023-racing/setup/index.html)を参考に、今回は以下で作成した。
|項目|設定値|
|-|-|
|マシンの構成|GPUのタイプ：NVIDIA T4<br>GPUの数： 1 <br> マシンタイプ：n1-standard-8 (8 vCPU + 30 GB メモリ)|
|ブートディスク|イメージ：Ubuntu 22.04 LTS(x86/64)<br>タイプ：新しいバランス永続ディスク<br>サイズ：50 GB|

以下のようにVMインスタンスが作成できたらOK。
台湾リージョンが料金低めでT4を確保しやすい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/af82ee0c-f57e-248c-4a93-2c59ac284bfd.png)

※ デフォルトだとGPUの割り当てが0になっている可能性があるので、必要に応じて”割り当てを編集”する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/6387588f-754c-af48-5bf0-e8e1c988f0ef.png)

:::note warn
使わないときは、インスタンスの停止・削除を徹底しましょう。
:::

## 2.3. Autoware開発環境構築
### ①Chrome Remote Desktop(CRD)設定
CRDでの接続が便利なので、[こちら](https://zenn.dev/pinto0309/scraps/0e4f29df152210)を参考に設定する。
SSH接続して、コマンドをコピペ実行でOK。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/2f3c1071-8e0d-0fc9-c615-85ab516bc192.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/24336fe1-6bf4-d97e-39aa-7cb432dc4843.png)

設定が完了すると、以下のように接続できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/aeccf9be-9e66-f334-218e-f438f2658c81.png)

※ もしCRD側のトラブルでうまく設定ができなくなった場合は、[こちら](https://askubuntu.com/questions/1512423/chrome-remote-desktop-in-24-04
)を参考にバージョンを下げましょう（本記事執筆中に遭遇しました）。


### ②Autoware開発環境セットアップ

:::note info
今回は、最も計算資源が要求されるGPU版開発環境を構築する。
GPU版AWSIM実行ファイルが用意しやすい、AIチャレンジ2023(Integration)用の開発環境を構築し、シミュレーションを実行する。
:::

[AIチャレンジ2023のSetupページ](https://automotiveaichallenge.github.io/aichallenge2023-integ/setup/index.html)に従えば、ほぼ環境構築は完了する。[こちら](https://automotiveaichallenge.github.io/aichallenge2023-racing/setup/index.html)も参考に。
ただし以下2点注意が必要。

- GCPのUbuntu22.04イメージには未インストールパッケージがあるので、最初に以下を実行する。
    ```
    sudo apt install -y ubuntu-drivers-common python3-pip unzip
    ```
    
- [Rviz2上にマップが表示されない問題](https://github.com/ros2/rviz/issues/948)が発生したので、`Dockerfile`を以下に変更する。

    ```
    FROM ghcr.io/automotiveaichallenge/aichallenge2023-sim/autoware-universe-cuda:v1
    
    RUN rm -rf /autoware/install/tier4_*_launch
    
    RUN apt update
    RUN sudo apt install -y libgl1-mesa-dri
    
    ENV ROS_LOCALHOST_ONLY 0
    ENV RMW_IMPLEMENTATION rmw_cyclonedds_cpp
    ENV export RCUTILS_COLORIZED_OUTPUT 1
    ```
#### シミュレーションを実行！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/e1d02e03-6590-b87a-ec74-2289d3ec1421.png)

参考情報として、以下に各資源の使用状況を残す。
- CPUはフル稼働。メモリは余裕あり。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/c43e3c31-9b8e-0ef5-e451-b44d1169a2ce.png)

- GPUは結構余裕がある。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/85a94cb2-a33b-97e5-adec-7ea9669f8077.png)

- ストレージは25GB程度使用。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/ac33ad97-f3ec-37b3-9738-63209e43b127.png)

※ 不要になったら、`Compute Engine - VMインスタンス`から停止・削除できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/942bbb50-4af5-4a1d-75ac-989f36180084.png)

:::note warn
使わないときは、インスタンスの停止・削除を徹底しましょう。
:::

# 3. 料金
今回の構成だと最安で$0.5/時間程度になる。
1290時間(約50日間)使用するとオンプレPCと同額($1=¥155換算で約10万)くらい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/ac3008e9-4c08-4eb8-1fe9-82ae4c6ecac5.png)

※ ちなみに利用割引を考慮しなければ、AWSもほぼ同額。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3628135/d94ebcb6-dffe-75f1-0de8-0c1d822230b5.png)


:::note warn
使わないときは、インスタンスの停止・削除を徹底しましょう。
:::

# 4. まとめ
- Google Cloud Platform(GCP)上でAutoware開発環境を構築
- インスタンス構成にも依るが、1時間あたり$0.5ほどで利用可能
    - 1290時間使用するとオンプレPCと同額($1=¥155換算で約10万)くらい
- Autowareを短期的に使用する方には、各種クラウドも選択肢としてありかも

:::note warn
使わないときは、インスタンスの停止・削除を徹底しましょう。
:::


# 5. 最後に

TIER IV様はAWSを導入されていること、存じ上げております。
今回GCPを選定したのは、単純に無料クレジットが余ってたからです。

ご…ごめんなさい…たたかないで…たたかないで…

※ AWSでも同様に環境構築できると思います、
　 AIチャレンジ2023(インテグレーション)でトライされてる方がいらっしゃいました。
　 本記事もその際のトラブルシューティングを参考にさせていただいています。