在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/
https://carla.org/
- Carla 学术论文(随着论文版本更新链接可能失效,当前为v78)
CARLA: An Open Urban Driving Simulator https://proceedings.mlr.press/v78/dosovitskiy17a/dosovitskiy17a.pdf
https://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讲 • 古月 
相关文章:
 
在Ubuntu 20.04中安装CARLA
0. 引言 CARLA (Car Learning to Act) 是一款开源自动驾驶模拟器,其支持自动驾驶系统全管线的开发、训练和验证(Development, Training, and Validation of autonomous driving systems)。Carla提供了丰富的数字资产,例如城市布局…...
 
【高中数学/对数/导数】曲线y=ln|x|过坐标原点的两切线方程为?
【问题】 曲线yln|x|过坐标原点的两切线方程为?(高考真题) 【出处】 《高考数学 函数与导数题型解题研究》P5第8题 中原教研工作室编著 【解答】 yln|x|的图线分两部分,y轴左边的部分是ylnx的镜像 所以知ylnx上切线过原点的…...
Qt CMake
使用 CMake 构建 CMake 是一款用于简化跨不同平台开发项目的构建流程的工具。 CMake 可自动生成构建系统,如 Makefile 和 Visual Studio 项目文件。 CMake 是一个第三方工具,有自己的文档。 本主题介绍如何在 Qt 5 中使用 CMake 3.1.0。 开始使用 CMak…...
 
制造企业各部门如何参与生产成本控制与管理?
国内制造业的分量可不轻,从日常生活用品到高端工业设备,中国制造几乎涵盖了各个领域。 不过很多制造业企业在管理方面确实存在一些难题:成本控制不容易,产品质量并不稳定,生产周期也常常较长。 一、中国制造业生产管…...
 
FireRedTTS - 小红书最新开源AI语音克隆合成系统 免训练一键音频克隆 本地一键整合包下载
小红书技术团队FireRed最近推出了一款名为FireRedTTS的先进语音合成系统,该系统能够基于少量参考音频快速模仿任意音色和说话风格,实现独特的音频内容创造。 FireRedTTS 只需要给定文本和几秒钟参考音频,无需训练,就可模仿任意音色…...
 
活体检测标签之2.4G有源RFID--SI24R2F+
首先从客户对食品安全和可追溯性的关注切入,引出活体标签这个解决方案。接着分别阐述活体标签在动物养殖和植物产品方面的应用,强调其像 “身份证” 一样记录重要信息,让客户能够了解食品的来源和成长历程,从而放心食用。最后呼吁…...
 
Web3Auth 如何工作?
Web3Auth 用作钱包基础设施,为去中心化应用程序 (dApp) 和区块链钱包提供增强的灵活性和安全性。在本文档中,我们将探索 Web3Auth 的功能,展示它如何为每个用户和应用程序生成唯一的加密密钥提供程序。 高级架构 Web3Auth SDK 完全存在于用…...
问:SQL中join语法的差异?
在SQL中,JOIN语法用于结合来自两个或多个表的数据。不同类型的JOIN会基于不同的条件来合并表中的数据。以下是几种常见的JOIN及其差异: 假设我们有两个表:employees 和 departments。 employees 表: employee_idnamedepartment_id1Alice10…...
计算机网络各层有哪些协议?计算机网络协议解析:从拟定到实现,全面了解各层协议的作用与区别
在数字化时代,计算机网络无处不在,已经成为不可或缺的一部分。为了让不同设备能够有效地进行通信,网络协议作为一种约定和规则,确保了数据在网络中的可靠传输。今天,我们将深入探讨计算机网络的各层协议,详…...
解决方案:机器学习中,基学习器 跟 弱学习器,有什么区别
文章目录 一、现象二、解决方案 一、现象 在工作中,在机器学习中,有时候会看到基学习器 跟 弱学习器,会容易混淆,所以整理一下 二、解决方案 在机器学习中,“基学习器”(Base Learner)和“弱…...
 
【Python】ftfy 使用指南:修复 Unicode 编码问题
ftfy(fixes text for you)是一个专为修复各种文本编码错误而设计的 Python 工具。它的主要目标是将损坏的 Unicode 文本恢复为正确的 Unicode 格式。ftfy 并非用于处理非 Unicode 编码,而是旨在修复因为编码不一致、解码错误或混合编码导致的…...
第9课-C++String功能的探索
1:C 语言中的字符串 vs C string 类 1.1 C 语言中的字符串 在 C 语言中,字符串本质上是以 \0 结尾的字符数组。C 标准库为此提供了 str 系列函数,如 strlen()、strcpy() 和 strcat() 等。虽然这些函数可以操作字符串,但它们的操…...
 
基于Hive和Hadoop的保险分析系统
本项目是一个基于大数据技术的保险分析系统,旨在为用户提供全面的汽车保险信息和深入的保险价格分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 Spark…...
 
国庆节快乐前端(HTML+CSS+JavaScript+BootStrap.min.css)
一、效果展示 二、制作缘由 最近,到了国庆节,自己呆在学校当守校人,太无聊了,顺便做一个小demo帮祖国目前庆生!!! 三、项目目录结构 四、准备工作 (1)新建好对应的文件目录 为了方便ÿ…...
 
【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化
【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化 阿里 MySQL 命名规范MySQL8 DDL的原子化 阿里 MySQL 命名规范 【强制】表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价…...
PyTorch源码系列(一)——Optimizer源码详解
目录 1. Optimizer类2. Optimizer概览3. 源码解析3.1 构造方法3.1.1 全局设置情形3.1.2 局部设置情形3.1.3 覆盖测试3.1.4 逐行讲解 3.2 add_param_group3.3 step3.4 zero_grad3.5 self.state3.6 state_dict3.7 load_state_dict 4. SGD Optimizer5. 极简版Optimizer源码6. 自定…...
Java - LeetCode面试经典150题(三)
区间 228. 汇总区间 题目 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中…...
 
基于SpringBoot+Vue+MySQL的民宿预订平台
系统展示 用户前台界面 管理员后台界面 商家后台界面 系统背景 随着旅游业的蓬勃发展,民宿作为一种独特的住宿方式,受到了越来越多游客的青睐。然而,传统的民宿预定方式往往存在信息不对称、效率低下等问题,难以满足游客的个性化需…...
Hadoop krb5.conf 配置详解
krb5.conf文件是Kerberos认证系统中的一个关键配置文件,它包含了Kerberos的配置信息,如KDC(Key Distribution Centers)和Kerberos相关域的管理员服务器位置、当前域和Kerberos应用的默认设置、以及主机名与Kerberos域的映射等。以…...
工程师 - DNS请求过程
DNS(Domain Name System,域名系统)是互联网的重要基础设施之一,其主要功能是将人们容易记忆的域名(例如 www.example.com)转换为计算机能识别的IP地址(例如 192.0.2.1),类…...
 
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
 
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
 
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
 
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
 
数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
【Ftrace 专栏】Ftrace 参考博文
ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...
深入解析 ReentrantLock:原理、公平锁与非公平锁的较量
ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...
