自動運転AIチャレンジ2023シミュレーション大会の環境構築メモ(GPU環境)
環境構築時の個人メモを残します。間違ってたり過不足あったり、不備見つけたらコメントいただけるとありがたいです。
基本的には下記の公式手順に沿って準備をしています。
大きく異なるのは、今回は最初から前回大会(2023年インテグレーション大会)の環境が入っていることです。
PC環境
OS: Ubuntu 22.04 LTS
CPU: 13th Gen Intel(R) Core(TM) i7-13700F (16コア)
GPU: GeForce RTX 3060 12GB
Memory: 32GB
Storage: 1.0TB
自動運転AIチャレンジ2023年インテグレーション大会の環境が入ったPCにインストールします。
Environment Setup
Nvidia-Driverインストール
既にインストール済みなのでスキップします。以前インストールしたときのメモはこちら。
$ nvidia-smi
Sun Dec 10 17:38:58 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.147.05 Driver Version: 525.147.05 CUDA Version: 12.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 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A |
| 0% 38C P8 15W / 170W | 186MiB / 12288MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 2134 G /usr/lib/xorg/Xorg 64MiB |
| 0 N/A N/A 2289 G ...ome-remote-desktop-daemon 2MiB |
| 0 N/A N/A 2327 G /usr/bin/gnome-shell 117MiB |
+-----------------------------------------------------------------------------+
コースの準備
aichallenge2023-racing/docker/aichallenge
ディレクトリを作成します。
$ mkdir -p ~/aichallenge2023-racing/docker/aichallenge
※ 後述しますが、適当なディレクトリ名でOKでした。aichallenge2023-racing
ディレクトリがあることで、後でgit lfs clone https://github.com/AutomotiveAIChallenge/aichallenge2023-racing
するときに邪魔になります。後程、このクローンしたディレクトリにGoogleDriveからダウンロードしたAWSIMをコピーします。
GoogleDriveから最新のAWSIM_GPU.zipをダウンロードし、aichallenge2023-racing/docker/aichallenge内に大会用AWSIM実行ファイルを展開.
パーミッションを図のように変更する。
ファイル'AWSIM_x86_64'をダブルクリックで起動すると、以下のような画面が表示されました。
Dockerの事前準備
docker, rocker, git lfs のインストール
下記のインストールを行う。すでに2023年インテグレーション大会の環境にはインストール済みなのでスキップします。
インストール済みパッケージの確認を行っていきます。
- docker
$ docker --version
Docker version 24.0.4, build 3713ee1
$ sudo docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
$ docker ps
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
ここでpermission deniedとなりました。どうやら、
dockerコマンドはデフォルトではroot権限なしには叩けないようになっています。
とのことなので、権限を付与します。
参照: Got permission denied while trying to connect to the Docker daemon socket at 解決方法
$ sudo chmod 666 /var/run/docker.sock
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
毎回権限を与えるのが面倒なので、起動時に実行するようにしたい。
参考:Linux起動時にコマンド実行して欲しいので調査した
- rocker:Dockerコンテナ内のRviz、rqtなどのGUIを使用するために用います。
$ sudo apt list --installed | grep rocker
python3-rocker/jammy,now 0.2.12-100 all [インストール済み]
- git lfs
$ sudo apt list --installed | grep git-lfs
git-lfs/jammy,now 3.3.0 amd64 [インストール済み、3.4.0 にアップグレード可]
Dockerイメージの準備・起動 〜 Autowareの準備
1.Dockerイメージを入手
$ docker pull ghcr.io/automotiveaichallenge/aichallenge2023-racing/autoware-universe-no-cuda
user groupに自分のアカウントを追加、以下のコマンドでgroupsにdockerが追加されていることを確認。
$ sudo usermod -aG docker $USER
$ groups $USER
[USER]: [USER] adm cdrom sudo ... docker
再度loginし直します。
docker imagesで以下のような表示が見えていることを確認します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ghcr.io/automotiveaichallenge/aichallenge2023-racing/autoware-universe-no-cuda latest b7fdf9678bc2 2 weeks ago 7.32GB
~~~
2.大会用データのダウンロード
$ git lfs clone https://github.com/AutomotiveAIChallenge/aichallenge2023-racing
WARNING: `git lfs clone` is deprecated and will not be updated
with new flags from `git clone`
`git clone` has been updated in upstream Git to have comparable
speeds to `git lfs clone`.
fatal: destination path 'aichallenge2023-racing' already exists and is not an empty directory.
Error(s) during clone:
`git clone` failed: exit status 128
先ほどコースの準備で作ったaichallenge2023-racing
フォルダが邪魔らしいので、一旦名前変更して、再度実行します。
$ mv aichallenge2023-racing aichallenge2023-racing-temp
$ git lfs clone https://github.com/AutomotiveAIChallenge/aichallenge2023-racing
(本来は、コースの準備を後で行うべきだったかもしれません。)
3.大会用dockerイメージのビルド
$ cd aichallenge2023-racing/docker/train
4.大会用dockerコンテナの起動
GPU環境なので、以下のコマンドを実行します。
$ bash run_container.sh
Dockerコンテナ内でのAWSIM起動
Dockerイメージを導入した後、aichallenge2023-racing/docker/aichallenge
内に大会用AWSIM実行ファイルをコピーします。先ほど名前を変更したディレクトリです。
aichallenge2023-racing/docker/aichallenge/AWSIM/AWSIM.x86_64
に配置されている状態となります。
$ cp -r aichallenge2023-racing-temp/docker/aichallenge/AWSIM aichallenge2023-racing/docker/aichallenge/
docker image ls
で以下のimageが存在していることを確認します。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
aichallenge-train latest efdf5dc98b88 10 minutes ago 7.38GB
GPU環境用の立ち上げスクリプトを起動。
$ cd ./aichallenge2023-racing/docker/train
$ bash run_container.sh
コンテナ内で以下を実行して、AWSIMが立ち上がることを確認します。
$ cd /aichallenge
$ bash run_awsim.sh
AWSIMからpublish・subscribeされているトピックのメッセージは,一部/aichallenge/aichallenge_ws/src/sim-msgsで定義されています.これらのメッセージを扱うには,以下のコマンドを実行してください.
と、あるので、ビルドが通ることも確認しました。
$ cd /aichallenge
$ bash build_autoware.sh
$ source /aichallenge/aichallenge_ws/install/setup.bash
地図データosmの配置 WIP
本大会ではlanelet2_mapファイルの改変もOKらしいです。前回のインテグレーション大会で、leneletの変更を検討していたチームもあったのだが、今回はそれも工夫点になるかもしれません。
ファイル構成が以下になるように配置されています。(submit用のディレクトリ中にmapが含まれている)
aichallenge2023-racing
└ docker
└ aichallenge
└ AWSIM
└ aichallenge_ws/src/aichallenge_submit/aichallenge_submit_launch
└map
└lanelet2_map.osm
Autowareの動作確認
基本的には、下記の順番で実行していきます。
1. AWSIMを起動
$ cd ./aichallenge2023-racing/docker/train
$ bash run_container.sh
コンテナ内部でAWSIM起動
$ cd /aichallenge
$ bash run_awsim.sh
2. Autowareを起動
$ docker exec -it [] bash
Rockerコンテナ内で
$ cd /aichallenge
$ bash build_autoware.sh # 必要に応じて
$ bash run_autoware.sh
下記のような画面(Rviz2)が表示され,車両の自動走行が開始されることを確認.
デフォルトパラメータ(2023/12/10時点)で走行してみた動画は以下のようになります。
さいごに
間違っている点、不足している点あればご指摘ください。自分用の環境構築のメモですが、何かに役に立てば幸いです。
これから、CPU環境の立ち上げも行いたいです。やはり、GPU無しでも動作するのは魅力的です。