在Ubuntu 20.04中安装CARLA
0. 引言
CARLA (Car Learning to Act) 是一款开源自动驾驶模拟器,其支持自动驾驶系统全管线的开发、训练和验证(Development, Training, and Validation of autonomous driving systems)。Carla提供了丰富的数字资产,例如城市布局(Urban layouts)、建筑物(Buildings)、车辆(Vehicles),并支持多项功能——包括灵活的传感器配置、环境条件、对静态和动态Actors的控制、地图生成等。Carla使得研究人员和工程师能够在虚拟环境中模拟复杂的城市交通环境,生成多样化的场景数据,极大地降低自动驾驶算法路测时的成本和风险。
- Carla 官方网站
CARLA: Open-source simulator for autonomous driving research.https://carla.org/
- Carla 学术论文(随着论文版本更新链接可能失效,当前为v78)
CARLA: An Open Urban Driving Simulatorhttps://proceedings.mlr.press/v78/dosovitskiy17a/dosovitskiy17a.pdf
Carla 的亮点功能:
-
可扩展性(Scalability via a server multi-client architecture):通过服务器多客户端架构实现扩展性,多个客户端可以在同一节点或不同节点上控制不同的Actors
-
灵活的API(Flexible API):CARLA的API允许用户控制与仿真相关的各个方面,包括交通生成、行人行为、天气、传感器等
-
自动驾驶传感器套件(Autonomous Driving sensor suite):用户可以配置多样化的传感器套件,包括激光雷达(LIDAR)、多摄像头、深度传感器、GPS等
-
快速仿真(Fast simulation for planning and control):提供快速仿真模式,该模式关闭了渲染功能,以便快速执行不需要图形的交通仿真和道路行为
-
地图生成(Maps generation):用户可以通过RoadRunner等工具,根据ASAM OpenDRIVE标准创建自定义地图
-
交通场景仿真(Traffic scenarios simulation):ScenarioRunner引擎允许用户基于模块化行为定义并执行不同的交通场景
-
ROS集成(ROS integration):CARLA通过ROS-bridge实现了与ROS的集成
-
自动驾驶基线(Autonomous Driving baselines):CARLA中提供了自动驾驶Baselines,包括AutoWare Agent和基于条件模仿学习的Agent(Conditional Imitation Learning agent)
1. Carla安装步骤
本部分给出详细步骤,介绍如何在 Ubuntu 20.04系统中安装 CARLA。根据以下图片所示的软件依赖关系,ROS bridge需要基于ROS2 Foxy,因此也需要Ubuntu 版本为Ubuntu 20.04(Focal Fossa)。
ROS Bridge版本依赖要求
ROS2 Foxy版本依赖要求
根据以上安装指南,可确定所涉及的各软件版本应为
-
Ubuntu 20.04 (不可使用虚拟机系统)
-
ROS2 Foxy
-
Carla 0.9.13
本人的GPU软硬件环境如下:
-
RTX 2070 + GPU Driver Version: 535.183 + CUDA Version: 12.2 (GPU驱动安装参考)
1)安装依赖项
-
安装Python3的pip,并升级pip
sudo apt install python3-pip
pip3 install --upgrade pip
-
安装必要的Python库
pip3 install --user pygame numpy
pip3 install opencv-python
pip3 install carla
-
安装系统库
sudo apt install libomp5
sudo apt install ros-foxy-derived-object-msgs
2)下载并配置CARLA模拟器
-
前往CARLA的GitHub发布页面,下载适用于Linux/Ubuntu的Carla 0.9.13压缩包,文件名为CARLA_0.9.13.tar.gz
-
解压并进入CARLA目录
# 定位至Carla解压后的文件夹路径,例如 cd /home/yaoyao/Documents/CARLA_0.9.13
cd <path-to-carla>
-
首次运行CARLA需要导入配置文件
./ImportAssets.sh
-
运行CARLA模拟器
./CarlaUE4.sh
此时,命令行会提示如下内容,并在新的CarlaUE4窗口中显示一个城市街景图。
yaoyao@u2004:~/Documents/CARLA_0.9.13$ ./CarlaUE4.sh
4.26.2-0+++UE4+Release-4.26 522 0
Disabling core dumps.
3)安装ROS2
- 使用鱼香ROS一键安装ROS2。安装过程中,选择ROS2 Foxy版本
wget http://fishros.com/install -O fishros && . fishros
4)安装carla_ros_bridge
-
创建carla-ros bridge工作空间并进入,以下示例代码为将carla-ros-bridge安装在根目录下
mkdir -p ~/carla-ros-bridge && cd ~/carla-ros-bridge
- 克隆carla_ros_bridge仓库
git clone --recurse-submodules https://github.com/carla-simulator/ros-bridge.git src/ros-bridge
-
source ROS2环境(应根据foxy setup.bash的实际安装目录进行修改)
source /opt/ros/foxy/setup.bash
5)安装ROS功能包依赖rosdep
rosdep
是ROS的依赖管理工具,用于安装ROS包所需的系统依赖项,确保环境的一致性。继续使用鱼香ROS安装rosdep:
wget http://fishros.com/install -O fishros && . fishros
- 更新rosdep数据库
rosdepc update
- 安装依赖项
cd /opt/ros/foxy
rosdepc install --from-paths src --ignore-src -r
- 编译carla_ros_bridge
cd ~/carla-ros-bridge
colcon build
请注意,第一次编译时可能会出现stderr: pcl_recorder错误。
- 再次运行colcon编译命令,解决此stderr错误
colcon build
6)配置Python环境变量
- 更新Python环境变量,使用sudo gedit ~/.bashrc命令,将以下语句添加至 ~/.bashrc
export CARLA_ROOT=/home/yaoyao/CARLA_ROS/CARLA_0.9.13
export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.13-py3.7-linux-x86_64.egg:$CARLA_ROOT/PythonAPI/carla
- 修改~/.bashrc如下图第157-158行所示。其中,carla-0.9.13-py3.7-linux-x86_64.egg应能在Carla安装目录的.../PythonAPI/carla/dist/目录下找到。
7)修复bool类型错误
NumPy版本更新后,numpy.bool
类型被弃用,运行过程中可能会遇到以下错误:
TypeError: data type 'numpy.bool' not understood
-
为了解决上述兼容性问题,首先定位至packages文件夹
cd ~/carla-ros-bridge/install/carla_ros_bridge/lib/python3.8/site-packages/carla_ros_bridge
-
使用gedit等文本处理工具,将camera.py的第455行('pol', numpy.bool)修改为('pol', bool)
以上各个步骤即完成了Carla的安装。
2. 启动基本测试
由于ROS2采用分布式节点架构,每个节点可能在不同的终端或机器上运行。为了同时运行CARLA模拟器和ROS2 Bridge,需要在不同的终端中启动。
- 第一个终端:启动CARLA模拟器(根据实际安装目录修改路径)
-carla-rpc-port=2000:指定CARLA的RPC端口,默认为2000
carla_ros_bridge.launch.py:启动ROS桥接节点,与CARLA进行通信
cd /home/yaoyao/Documents/CARLA_0.9.13
./CarlaUE4.sh -carla-rpc-port=2000
- 第二个终端:启动ROS Bridge
cd ~/carla-ros-bridge
source ./install/setup.bash
ros2 launch carla_ros_bridge carla_ros_bridge.launch.py
Carla的运行界面会变为如下图所示的街景:
或者,第二个终端也可启动带有示例车辆的案例。即不运行上述ros2 launch carla_ros_bridge carla_ros_bridge.launch.py,而是执行以下代码:
cd ~/carla-ros-bridge
source ./install/setup.bash
ros2 launch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch.py
将出现CARLA ROS manual control
窗口,可以通过键盘进行车辆控制。
控制说明:
-
H:显示帮助信息
-
B:切换手动驾驶模式
-
P:切换自动驾驶模式
3. 总结
本教程涉及了在Ubuntu系统上安装CARLA模拟器的详细步骤,并配置了ROS2和carla_ros_bridge
。安装成功后可在ROS 2环境中与CARLA进行交互,进行自动驾驶相关的开发和测试。
常见问题
-
Anaconda的安装可能导致Python环境问题
在安装与运行ROS2和CARLA时,不要激活如已安装的Anaconda环境:
# Anaconda将在启动终端时不再自动激活base环境
conda config --set auto_activate_base false
-
CARLA模拟器运行缓慢
尝试使用低质量模式运行,或者升级硬件配置。不应使用虚拟机运行Carla。
# 以低分辨率运行Carla
./CarlaUE4.sh -quality-level=Low
参考资料
-
CARLA官方文档
-
鱼香ROS
-
ROS2入门21讲 • 古月