3-基于容器安装carla
用户可以将基于CARLA发布的镜像拉到Docker容器中运行。这对于以下用户很有用:
想要运行CARLA而不需要安装所有依赖项
运行多台CARLA服务器,进行GPU映射。
运行不显示的CARLA服务器
本节解释了运行CARLA图像的要求,以及如何使用OpenGL和Vulkan图形api运行图像。
1 开始之前
您需要安装:
Docker:按照这里的安装说明操作(Install | Docker Docs)。
NVIDIA容器工具包:NVIDIA容器工具包是一个库和工具集,它将NVIDIA图形设备暴露给Linux容器。它是专门为在Linux主机系统上运行的Linux容器或在Linux的Windows子系统版本2下的Linux发行版中运行的Linux容器设计的。按照该说明(Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit 1.16.2 documentation)安装nvidia-docker2包。
2 在容器中运行CARLA
1. 拉取CARLA镜像。
您可以提取最新的CARLA镜像或特定的发布版本。最新映像指的是最新的打包版本。要提取镜像,请运行以下命令之一:
# Pull the latest image
docker pull carlasim/carla:latest
# Pull a specific version
docker pull carlasim/carla:0.9.12
2. 运行CARLA容器。
不同版本的CARLA支持不同的图形api,这可能会影响Docker镜像运行的条件:
0.9.12只支持Vulkan
0.9.7+支持Vulkan和OpenGL。
carla 0.9.12:
运行带有显示的CARLA:
sudo docker run --privileged --gpus all --net=host -e DISPLAY=$DISPLAY carlasim/carla:0.9.12 /bin/bash ./CarlaUE4.sh
在非屏幕模式下(不显示)运行CARLA:
sudo docker run --privileged --gpus all --net=host -v /tmp/.X11-unix:/tmp/.X11-unix:rw carlasim/carla:0.9.12 /bin/bash ./CarlaUE4.sh -RenderOffScreen
CARLA 0.9.7到0.9.11
使用Vulkan运行CARLA:
sudo docker run --privileged --gpus all --net=host -e DISPLAY=$DISPLAY -e SDL_VIDEODRIVER=x11 -v /tmp/.X11-unix:/tmp/.X11-unix:rw carlasim/carla:0.9.11 /bin/bash ./CarlaUE4.sh -vulkan <-additonal-carla-flags>
只要您的机器有显示器,此命令将允许您使用Vulkan运行CARLA映像。有关在非屏幕模式下运行Vulkan的信息,请参阅渲染文档(https://carla.readthedocs.io/en/0.9.13/adv_rendering_options/#off-screen-mode)。
使用OpenGL运行CARLA:
docker run -e DISPLAY=$DISPLAY --net=host --gpus all --runtime=nvidia carlasim/carla:<version> /bin/bash CarlaUE4.sh -opengl <-additonal-carla-flags>
3. (可选)配置Docker标志
上面的命令使用了一些Docker标志,可以根据你的需要进行配置:
网络:--net=host参数将允许容器共享主机的整个网络。如果希望将主机上的特定端口映射到容器端口,可以使用标志-p <host-ports>:<container-ports>。
gpu:您可以使用--gpu all来选择使用所有gpu,或者使用--gpu '"device=<gpu_01>,<gpu_02>"'来选择特定的gpu。更多信息请看这里(Resource constraints | Docker Docs)。
离屏模式
如果你在没有显示器的机器上运行CARLA, OpenGL不需要配置,但是你需要在CARLA 0.9.12之前使用Vulkan执行一些额外的步骤来做同样的事情。有关信息,请参阅相关文档(https://carla.readthedocs.io/en/0.9.13/adv_rendering_options/#off-screen-mode)。