目录

一、设备(本机)条件

二、Docker 安装

三、安装 NVIDIA Container Toolkit(让容器调用 GPU)

四、从github拉取autoware.ai的代码和相关安装文件

五、下载 Autoware 示例数据(用于测试)


一、设备(本机)条件

Ubuntu20.04

Ros Noetic

CUDA12.4(之前已经安装过CUDA了,安装方法可参考我之前的博文

前提:你的系统已经是完整安装过ROS的。已经把系统 apt 源换成国内镜像(清华 / 中科大 / 阿里云),并为 ROS 指定国内镜像。并且安装 NVIDIA 驱动( GPU)。

二、Docker 安装

[可参考博文:ubuntu20.04下安装Docker和NVIDIA Container Toolkit教程]

# 安装前准备
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release

# 添加 Docker 官方 GPG key
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 添加 Docker apt 源
echo "deb [arch=$(dpkg --print-architecture)] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list


sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 把当前用户加入 docker 组(重开终端或重新登录生效)
sudo usermod -aG docker $USER

配置 Docker 镜像加速
编辑 /etc/docker/daemon.json(若不存在则新建),推荐配置多个备用镜像:

{  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.imgdb.de",
    "https://docker-0.unsee.tech",
    "https://docker.hlmirror.com",
    "https://docker.1ms.run",
    "https://func.ink",
    "https://lispy.org",
    "https://docker.xiaogenban1993.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

保存后重启 docker:

sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证
docker info | grep -i "Registry Mirrors" -A 5

三、安装 NVIDIA Container Toolkit(让容器调用 GPU)

[可参考博文:ubuntu20.04下安装Docker和NVIDIA Container Toolkit教程]

第一步:设置变量,获取公钥及软件列表

 #设置变量
>distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
 #安装公钥
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
 #获取list
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 update
#安装nvidia-container-toolkit
sudo apt install nvidia-container-toolkit
#重启
sudo systemctl restart docker

第三步:测试

注意上面只是安装了一个NVIDIA Container Toolkit生成器,如果希望生成各种版本的cuda镜像,需要下面语句:

#Test NVIDIA Container Toolkit
docker run --gpus all --rm nvidia/cuda:9.0-base nvidia-smi

ok,现在可以拉取/下载Autoware.ai容器了

四、从github拉取autoware.ai的代码和相关安装文件

Autoware.AI 官方镜像是一个预装好 ROS、依赖库和构建环境的容器,非常方便。

⚠️注意:

  • 官方最新支持的是 Autoware.AI 1.14.0 (Melodic)

  • 虽然你是 ROS Noetic (Ubuntu 20.04),但此镜像可在 20.04 上正常运行(内部运行 Ubuntu 18.04 容器)。

  • 它自带 CUDA 支持,可利用 GPU 进行仿真与推理。

git clone https://github.com/autowarefoundation/autoware_ai_docker.git

cd autoware_ai_docker/generic

#直接运行run.sh
./run.sh

这里出现一个报错:

banlisen@banlisen-FX80GD:~/autoware_ai_docker/generic$ ./run.sh 
Using options:
	ROS distro: melodic
	Image name: autoware/autoware
	Tag prefix: latest
	Cuda support: on
	Pre-release version: off
	UID: <1000>
./run.sh: 第 142 行: type: nvidia-docker:未找到
Launching autoware/autoware:latest-melodic-cuda
Unable to find image 'autoware/autoware:latest-melodic-cuda' locally
latest-melodic-cuda: Pulling from autoware/autoware
a1125296b23d: Pulling fs layer 
3c742a4a0f38: Pulling fs layer 
4c5ea3b32996: Pulling fs layer 
1b4be91ead68: Waiting 
.....
.....
a1beabe7a800: Pull complete 
2846e0ca3dfb: Pull complete 
Digest: sha256:ad972b6dd41d9ad313d7e7dcc14ef7849a2e5b36610f40b391797e3252b66a7e
Status: Downloaded newer image for autoware/autoware:latest-melodic-cuda
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

脚本第 142 行的错误是因为 nvidia-docker 命令已被淘汰:在较新的 Docker 和 NVIDIA Container Toolkit 版本中,nvidia-docker 工具已被整合到 nvidia-container-runtime 中,不再需要单独安装 nvidia-docker 命令。而 Autoware 的 run.sh 脚本可能未更新,仍在检查旧版 nvidia-docker 是否存在,导致出现 “未找到” 的提示。

找到脚本中关于 RUNTIME 配置的部分(大概在第 140-147 行,对应你提供的代码中这段):

if [ $CUDA == "on" ]; then
    SUFFIX=$SUFFIX"-cuda"
    if [[ ! $DOCKER_VERSION < "19.03" ]] && ! type nvidia-docker; then
        RUNTIME="--gpus all"
    else
        RUNTIME="--runtime=nvidia"
    fi
fi

修改为:↓

if [ $CUDA == "on" ]; then
    SUFFIX=$SUFFIX"-cuda"
    # 只要 Docker 版本 >=19.03,直接使用 --gpus all(nvidia-container-toolkit 已支持)
    if [[ ! $DOCKER_VERSION < "19.03" ]]; then
        RUNTIME="--gpus all"
    else
        # 旧版本 Docker 才需要 --runtime=nvidia(需确保 nvidia-container-runtime 已配置)
        RUNTIME="--runtime=nvidia"
    fi
fi

重新运行run.sh

注意:

既然 Noetic 没有官方镜像,最简单的方式是改用 Melodic(Autoware.AI 的主力支持版本),命令如下:

./run.sh --ros-distro melodic --cuda on 

运行成功!!!

这里可继续参考[ubuntu20.04镜像方法安装Autoware.ai]来验证是否运行成功

五、下载 Autoware 示例数据(用于测试)

在容器内终端执行以下命令,下载官方提供的 3D 地图和 ROSBAG 数据

可参考:
 ubuntu20.04镜像方法安装Autoware.ai ★★★☆☆

Autoware.ai1.14.0自动驾驶-Demo运行★★★☆☆

Autoware自动驾驶平台(第二章):Autoware官方demo运行★★★★★

这里运行示例Demo我尝试了很多方法,也去B站找了一些视频,最后才成功的。

强烈建议先去B站看视频,再回来看网页文档教程,会有不一样的体会。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐