概要
「初心者がAI Challengeやってみた」シリーズの第5弾(番外編)です。
第4弾まではパラメータの調整のみで全障害物突破を目指し、見事達成することができました!
今回からはソースコードをいじってみながら動作の改善を目指します。
と思っていたのですが、PCが壊れるというまさかの事態発生です(泣)。
なんとか直すことはできたものの、1から環境構築をし直すことになってしまいました。第1弾でセットアップについて書きましたが、折角の機会なので今回はもう少し具体的にセットアップの手順について記述します。
本シリーズではJapan Automotive AI Challenge 2023にautoware初心者の筆者が試行錯誤しながら挑戦する記録を公開しています。自動運転に興味があるけどプログラミングに自信が無い方などの参考になれば幸いです。
前の記事はこちら:
- 第1弾:初心者がAIチャレンジやってみた(1):Autowareを動かしてみる
- 第2弾:初心者がAIチャレンジやってみた(2):1つ目の障害物の回避成功
- 第3弾:初心者がAIチャレンジやってみた(3):2つ目の障害物の回避成功
- 第4弾:初心者がAIチャレンジやってみた(4):全障害物回避達成!(全パラメータ公開)
筆者はautoware初心者です。
説明等が正確でない可能性があるので本記事だけではなく他の記事やautowareのドキュメントも確認するようにしてください。
PCスペック
以下のスペックのPCを使っています:
OS | Ubuntu 22.04 |
---|---|
CPU | Intel Corei9 (16 cores) |
GPU | NVIDIA GeForce RTX 3090 |
Memory | 64GB |
Storage | 1.0TB |
1台でAutowareとAWSIMを両方動かせるスペックなので、その想定で進めていきます。
推奨(必須?)スペックは公式ドキュメントの方に記述されているのでそちらをご確認ください。
環境構築
基本的には公式ドキュメントのセットアップ手順に従えば問題なく行えます。
今回はドキュメントには詳しく記述されていないdocker, rocker, NVIDIA Container Tookit, git lfs, そして ROS2のインストール時に使ったコマンドを記述します。
本記事には書いてありませんが、公式ドキュメントに書いてあるNVIDIAドライバやVulkanのインストールも忘れずに行ってください。
Dockerのインストール
Dockerのウェブサイトを見ながら進めていきます。
まずはDockerがPCにインストールされているかを確認しましょう。
ターミナルを開いて以下のコマンドでインストールされているDockerのバージョンを確認します。
docker --version
もしも古いバージョンがインストールされていればアンインストールをする必要があるそうです(手順はこちらを参照)。今回はDockerがそもそもインストールされていなかったので、この必要はありませんでした。
インストールはウェブサイトの手順に従えば問題なくできました。参考までにコマンドを記します。
# インストールの下準備
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 最新のDockerをインストール
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# インストールできているかをテスト
sudo docker run hello-world
最後のコマンドで"Hello from Docker!"と表示されればインストールは成功です。
Rockerのインストール
こちらがRockerのGitHubページです。
色々と書いてありますが、ここに書いてあるコマンド1行でインストールできました。
sudo apt-get install python3-rocker
NVIDIA Container Toolkitのインストール
NVIDIAのこちらの手順を参考にインストールしました。一応Autowareのドキュメントにもインストール手順が載っているのですが、一部コマンドが違います。今回はNVIDIAの方でうまくいったのでそちらを記述します。
# インストールの下準備
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# インストール
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# インストールできているかをテスト
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
最後のコマンドで以下のような出力が出れば成功です。
(下記はNVIDIAウェブサイトからのコピペです)
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06 Driver Version: 450.51.06 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 On | 00000000:00:1E.0 Off | 0 |
| N/A 34C P8 9W / 70W | 0MiB / 15109MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
git lfsのインストール
git lfsのGitHubページの手順に沿ってインストールをします。
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
ROS2のインストール
ROS2 Humbleをインストールします。こちらの手順に沿って進めれば問題なくインストールできました。Localeの設定はスキップしましたが、もしもエラーが出るようでしたら手順に沿って設定してみてください。
# インストールの下準備
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# インストール
sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop
# 環境構築
source /opt/ros/humble/setup.bash
インストールが正常にできているかを確認するには、こちらの手順通りにサンプルコードを走らせてみてください。
AWSIMとAutowareのセットアップ
以上で事前準備が完了しました。次にAWSIMとAutowareのセットアップを行います。
これに関しては公式ドキュメントに丁寧なセットアップ手順が記載がされているので、そちらを参考に進めてください。
万が一ここで詰まってしまったらAI Challenge 2023 の GitHubにissueを作って聞くのが良いかもしれません。
ローカル環境での実行
セットアップ手順の方で動作確認方法も記述されています。ただ、どうやらこれはあくまでも動作確認用であり、これにプラスで機能を追加した実行方法が公式ドキュメントのLocal Environmentページに書かれていました。具体的には以下の3つの機能がプラスされます:
- 起動時に自動で車両の自己位置を設定
- 起動時に自動で車両の目標地点を設定
- 走行中のスコアの更新と走行終了後のスコアの保存
それではLocal Environmentページの手順を参考にしながらコードを実行してみましょう。
#aichallenge2023-simディレクトリで
cd docker
bash build.sh # Dockerイメージのビルド
bash run_container.sh # Dockerコンテナの起動
ここで使ったbuild.sh
は基本的には最初の1回だけ実行すればいいです。
AWSIMとAutoware用でそれぞれ1つずつターミナルを用意して、各ターミナルでコンテナを起動します。
AWSIM起動
# Rockerコンテナ内で
sudo ip link set multicast on lo # 一度だけ
source /autoware/install/setup.bash # 一度だけ
/aichallenge/AWSIM/AWSIM.x86_64
最初の2つのコマンドはコンテナ起動後に1度だけ打てばいいです。
最後のコマンドでAWSIMが起動します。
Autoware起動
# Rockerコンテナ内で
cd /aichallenge
bash build.sh # コードのビルド
bash run.sh # コードの実行
build.sh
はコードに変更がない限りは最初の一度だけ打てば十分です。Dockerビルド時のコマンドと同じなので少し紛らわしいですが、こちらはコードのビルドを行っているので全くの別のコマンドです。
最後のコマンドでAutowareが実行されます。動作確認用の手順では車両の初期位置や目標地点の設定を手動で行う必要が有りましたが、このコマンドではそれらが自動で行われるので便利です。