社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

仿真实战 | Docker版Carla的安装与使用

自动驾驶之心 • 1 年前 • 610 次点击  

作者 | 李慢慢  编辑 | 车路漫漫

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【仿真测试】技术交流群

本文只做学术分享,如有侵权,联系删文

今天在研究openpilot的说明文档时,发现openpilot可以和carla进行配合运行。然后我就发现,openpilot提供的启动carla的程序,竟然是通过docker来运行的。于是好奇之下,又去carla官方文档找了找,还真发现了说明文档。于是将两者结合,记录了如下这篇文章。

参考链接1-openpilot官方-启动carla的程序:

https://github.com/commaai/openpilot/blob/master/tools/sim/start_carla.sh

参考链接2-carla官方-docker版:

https://carla.readthedocs.io/en/latest/build_docker/


0、前言

首先给大家普及下docker是什么。

百度百科:

“Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上。”


简单来说,就是有人把carla打包好成了一个镜像,我们拷贝这个镜像,就可以直接开始使用carla,而不用再去管运行carla还需要什么乱八糟的依赖库。

在carla官方说明中,描述了使用docker版本的carla的适宜场景:


1、docker的下载及安装

要能运行docker版本的carla,首先需要在自己的电脑上安装好docker底层,这个是基础。

curl https://get.docker.com | sh

启动docker服务:

sudo systemctl start docker

设置为开机启动docker:

sudo systemctl enable docker

查看docker版本信息:

docker version


2、安装docker版本的显卡驱动容器

我们知道,carla的运行离不开显卡,关于英伟达显卡驱动,也有docker版本的,我们需要提前给安装好。

拷贝以下程序,保存为【install_nvidia_docker.sh】到本地,运行即可(该部分命令截取自前文参考链接1)。

#!/bin/bash
# Requires nvidia docker - https://github.com/NVIDIA/nvidia-dockerif ! $(apt list --installed | grep -q nvidia-container-toolkit); thenread -p "Nvidia docker is required. Do you want to install it now? (y/n)";  if [ "${REPLY}" == "y" ]; then   distribution=$(. /etc/os-release;echo $ID$VERSION_ID)    echo $distribution    curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -    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 -y nvidia-docker2 # Also installs docker-ce and nvidia-container-toolkit    sudo systemctl restart dockerelseexit 0  fifi


3、使用docker拉取carla镜像

安装好docker后,就可以使用docker拉取carla镜像了。首先,我们可以看到官网上有很多版本的docker镜像。

https://hub.docker.com/r/carlasim/carla/tags


我们这里最新的其实就是0.9.13,使用docker将其拉取安装到本地即可,命令如下:

# Pull the latest imagedocker pull carlasim/carla:latest
# Pull a specific versiondocker pull carlasim/carla:0.9.13


拉取的过程很漫长,需要耐心等待。


拉取完成后,输入如下命令,如果显示出镜像的话,则证明拉取成功了。

docker images


如果你的网速不好的话,可以使用我拉取下来的carla的docker镜像包的网盘链接。

链接:https://pan.baidu.com/s/1mWjEEkuTz56bCLwjxIZ2Aw

提取码:clmm


下载到本地后,使用如下命令进行加载即可。

docker load -i docker_image_carla_0.9.13


4、创建容器运行Carla

根据镜像(image)创建容器(container),并进入容器。指令如下:

sudo docker run --privileged --gpus all --net=host -e DISPLAY=$DISPPALY  -it carlasim/carla:0.9.13  /bin/bash

紧接着,在容器中,直接启动Carla服务端:

./CarlaUE4.sh -opengl -nosound -RenderOffScreen -benchmark -fps=20 -quality-level=Low

此时,什么窗口都看不到,那是因为我这里通过“-RenderOffScreen”模式,取消了窗口。但其实,此时显卡已经工作起来了,如下所示。

附:这里我遇到了一个比较诡异的问题,就是如果不指定“-RenderOffScreen”模式的话,会报一个错:XDG_RUNTIME_DIR not set in the enviroment。理论来讲如果不报错的话,可以在docker里直接启动服务器端的画面。不过此处我没有解决掉,就忽略了,没有画面就没有画面吧。


5、运行Carla客户端

此时,在本地随意运行一个示例python程序,运行就能打开一个Carla客户端:

cd ./PythonAPI/examples/python3 automatic_control.py

本文完。


一点感受:

我感觉Carla的docker版本并不好用,说它安装方便吧,我觉得官方预编译版的安装也挺简单的;说它可以脱离窗口运行吧,我发现使用“-RenderOffScreen”模式,在非docker版里一样可以实现;docker版的优势可能体现在其他地方,只是我现在实在是爱它不起来。若说本次探索有什么收获,那就是docker的使用了。这次真的是一边学一边用了。另外,本文臭又长,真正的过程,其实都是在跟着以下脚本在做。这个脚本只消运行一下,就是以上全文,哈哈。


#!/bin/bash
# Requires nvidia docker - https://github.com/NVIDIA/nvidia-dockerif ! $(apt list --installed | grep -q nvidia-container-toolkit); then read -p "Nvidia docker is required. Do you want to install it now? (y/n)"; if [ "${REPLY}" == "y" ]; then distribution=$(. /etc/os-release;echo $ID$VERSION_ID) echo $distribution curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - 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 -y nvidia-docker2 # Also installs docker-ce and nvidia-container-toolkit sudo systemctl restart docker else exit 0 fifi
docker pull carlasim/carla:0.9.13
EXTRA_ARGS="-it"if [[ "$DETACH" ]]; then EXTRA_ARGS="-d"fi
docker kill carla_sim || true docker run \ --name carla_sim \ --rm \ --gpus all \ --net=host \ -v /tmp/.X11-unix:/tmp/.X11-unix:rw \ $EXTRA_ARGS \ carlasim/carla:0.9.13 \ /bin/bash ./CarlaUE4.sh -opengl -nosound -RenderOffScreen -benchmark -fps=20 -quality-level=Low


本文完。


① 全网独家视频课程

BEV感知、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测点云3D目标检测目标跟踪Occupancycuda与TensorRT模型部署协同感知语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

④【自动驾驶之心】平台矩阵,欢迎联系我们!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/163673
 
610 次点击