2023年自动驾驶AI挑战赛的模拟大赛环境建设(使用图形处理器)
首先
由于我已经在2023年自动驾驶AI挑战赛的模拟大会上注册参加,所以我将整理自己在笔记本电脑上搭建AWSIM和Autoware环境的步骤。
基本上,按照此设置手册中的步骤进行。
生態
項目値CPUIntel® Core™ i7-12700HGPUGeForce RTX 3050 Ti MobileUbuntu22.04Kernel6.2.0-36-genericdocker24.0.6docker composev2.21.0
环境建设
AWSIM和Autoware都在Docker上进行环境搭建,并在同一个Docker容器中运行。
安装NVIDIA驱动程序
由于我的电脑无法通过apt正确运行安装,我总是从官方网站下载.run文件并进行安装。
有关从.run文件进行安装的步骤,请参考以下文章。
安装docker、rocker和gitlfs。
- Docker的安装
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- sudoをつけなくてもdockerコマンド使えるようにする
getent group | grep docker
sudo usermod -aG docker $USER
getent group | grep docker
确认行动
docker run hello-world
- 安装Rocker
sudo apt-get install python3-rocker
- 安装Git LFS。
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
安装nvidia-docker2
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install nvidia-docker2
sudo systemctl restart docker.service
- 動作確認
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 |
# +-----------------------------------------------------------------------------+
准备Autware的Docker镜像。
- 获取docker镜像
从GHCR中拉取aichallenge2023的Docker镜像。
docker pull ghcr.io/automotiveaichallenge/aichallenge2023-racing/autoware-universe-no-cuda
请确认图像是否已经生成。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ghcr.io/automotiveaichallenge/aichallenge2023-racing/autoware-universe-no-cuda latest 9601fc85f1bd 3 weeks ago 7.31GB
- 创建Docker镜像用于会议。
克隆 aichallenge2023-racing 存储库。
git lfs clone https://github.com/AutomotiveAIChallenge/aichallenge2023-racing
大会使用 Docker 图像的构建
cd aichallenge2023-racing/docker/train
bash build_docker.sh
确认图像是否已经生成,之后将使用这个aichallenge-train镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
aichallenge-train latest 19c8285b8cd2 2 days ago 7.38GB
- AWSIM的下载
在GoogleDrive中下载最新的AWSIM.zip文件,然后将比赛用的AWSIM执行文件解压到aichallenge2023-racing/docker/aichallenge文件夹内。
- 运行Docker容器
因為我想在rocker上新增一個選項,所以直接執行了rocker指令。
请为 aichallenge2023-racing 的容器命名,以便更易于理解。
–nocleanup:确保在容器结束时不会删除容器。
mkdir -p output
rocker --nvidia --x11 --user --net host --privileged --nocleanup --name aichallenge2023-racing --volume ../aichallenge:/aichallenge -- aichallenge-train
使用–volume选项,在宿主PC的/aichallenge:/aichallenge目录下进行共享,因此在编辑aichallenge目录下的文件时,可以在宿主PC上进行编辑。
在Docker容器内进行Autoware的构建。
cd /aichallenge
bash build_autoware.sh
安装开发所需的工具。
sudo apt update
sudo apt install ros-humble-rqt*
sudo apt install terminator
停止 Docker 容器
在容器内执行exit命令,或者
docker stop aichallenge2023-racing
- 2回目以降の起動
docker start aichallenge2023-racing
docker attach aichallenge2023-racing
or
docker exec -it aichallenge2023-racing bash
补充说明:
当使用这种方法重启后,执行”docker start”命令时会出现以下错误。
Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/tmp/.dockere5u782qg.xauth" to rootfs at "/tmp/.dockere5u782qg.xauth": mount /tmp/.dockere5u782qg.xauth:/tmp/.dockere5u782qg.xauth (via /proc/self/fd/7), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
Error: failed to start containers: aichallenge2023-racing
AWSIM和Autoware的执行
启动AWSIM
docker start aichallenge2023-racing
docker attach aichallenge2023-racing
在容器内执行以下命令以启动AWSIM。
cd /aichallenge
bash run_awsim.sh
启动Autoware。
打开另一个终端并进入容器。
docker exec -it aichallenge2023-racing bash
在容器中执行以下操作以启动Autoware。
cd /aichallenge
bash run_autoware.sh