在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软硬件环境如下:

1)安装依赖项

  • 安装Python3的pip,并升级pip
bash 复制代码
sudo apt install python3-pip
pip3 install --upgrade pip
  • 安装必要的Python库
bash 复制代码
pip3 install --user pygame numpy
pip3 install opencv-python
pip3 install carla
  • 安装系统库
bash 复制代码
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目录

bash 复制代码
# 定位至Carla解压后的文件夹路径,例如 cd /home/yaoyao/Documents/CARLA_0.9.13
cd <path-to-carla>
  • 首次运行CARLA需要导入配置文件
bash 复制代码
./ImportAssets.sh
  • 运行CARLA模拟器
bash 复制代码
./CarlaUE4.sh

此时,命令行会提示如下内容,并在新的CarlaUE4窗口中显示一个城市街景图。

bash 复制代码
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版本
bash 复制代码
wget http://fishros.com/install -O fishros && . fishros 

**4)**安装carla_ros_bridge

  • 创建carla-ros bridge工作空间并进入,以下示例代码为将carla-ros-bridge安装在根目录下
bash 复制代码
mkdir -p ~/carla-ros-bridge && cd ~/carla-ros-bridge
  • 克隆carla_ros_bridge仓库
bash 复制代码
git clone --recurse-submodules https://github.com/carla-simulator/ros-bridge.git src/ros-bridge
  • source ROS2环境(应根据foxy setup.bash的实际安装目录进行修改)
bash 复制代码
source /opt/ros/foxy/setup.bash

**5)**安装ROS功能包依赖rosdep

rosdep是ROS的依赖管理工具,用于安装ROS包所需的系统依赖项,确保环境的一致性。继续使用鱼香ROS安装rosdep:

bash 复制代码
wget http://fishros.com/install -O fishros && . fishros
  • 更新rosdep数据库
bash 复制代码
rosdepc update
  • 安装依赖项
bash 复制代码
cd /opt/ros/foxy
rosdepc install --from-paths src --ignore-src -r
  • 编译carla_ros_bridge
bash 复制代码
cd ~/carla-ros-bridge
colcon build

​请注意,第一次编译时可能会出现stderr: pcl_recorder 错误。

  • 再次运行colcon编译命令,解决此stderr错误
bash 复制代码
colcon build

**6)**配置Python环境变量

  • 更新Python环境变量,使用sudo gedit ~/.bashrc命令,将以下语句添加至 ~/.bashrc
bash 复制代码
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类型被弃用,运行过程中可能会遇到以下错误:

bash 复制代码
TypeError: data type 'numpy.bool' not understood
  • 为了解决上述兼容性问题,首先定位至packages文件夹
bash 复制代码
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。

bash 复制代码
# 以低分辨率运行Carla
./CarlaUE4.sh -quality-level=Low

参考资料

相关推荐
费弗里3 小时前
Python全栈应用开发利器Dash 3.x新版本介绍(1)
python·dash
李少兄9 天前
解决OSS存储桶未创建导致的XML错误
xml·开发语言·python
就叫飞六吧9 天前
基于keepalived、vip实现高可用nginx (centos)
python·nginx·centos
Vertira9 天前
PyTorch中的permute, transpose, view, reshape和flatten函数详解(已解决)
人工智能·pytorch·python
学Linux的语莫9 天前
python基础语法
开发语言·python
LyaJpunov9 天前
深入理解 C++ volatile 与 atomic:五大用法解析 + 六大高频考点
c++·面试·volatile·atomic
匿名的魔术师9 天前
实验问题记录:PyTorch Tensor 也会出现 a = b 赋值后,修改 a 会影响 b 的情况
人工智能·pytorch·python
Ven%9 天前
PyTorch 张量(Tensors)全面指南:从基础到实战
人工智能·pytorch·python
mahuifa9 天前
PySide环境配置及工具使用
python·qt·环境配置·开发经验·pyside
小灰灰搞电子9 天前
Qt PyQt与PySide技术-C++库的Python绑定
c++·qt·pyqt