在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.icon-default.png?t=O83Ahttps://carla.org/

  • Carla 学术论文(随着论文版本更新链接可能失效,当前为v78)

CARLA: An Open Urban Driving Simulatoricon-default.png?t=O83Ahttps://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讲 • 古月

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/438138.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国外电商系统开发-运维系统功能清单开发

一、最终效果图 二、功能清单 功能 描述 自定义日志绘图 根据Nginx、Apache登录日志文件绘图&#xff0c;绘图数据包括&#xff1a;访问量走势&#xff0c;500错误&#xff0c;200正确百分比等 创建服务器 加入服务器 主机状态自动检查 加入主机到系统后&#xff0c;系统…

MyBatis——ORM

MyBatis——ORM 验证映射配置ResultType本质是ResultMap具体的转换逻辑 概括的说&#xff0c;MyBatis中&#xff0c;对于映射关系的声明是由开发者在xml文件手动完成的。比如对查询方法而言&#xff0c;你需要显式声明ResultType或ResultMap&#xff0c;这里其实就是在定义数据…

(16)MATLAB仿真Nakagami-m分布1

文章目录 前言一、Nakagami分布二、MATLAB建模代码三、仿真结果画图四、总结 前言 Nakagami衰落模型最初是由于该模型与短波电离层传播的经验结果相匹配而提出的。它还用于仿真来自多个干扰源的情况&#xff0c;因为多个独立且同分布&#xff08;i.i.d&#xff09;的瑞利分布随…

基于四种网络结构的WISDM数据集仿真及对比:Resnet、LSTM、Shufflenet及CNN

在上节中&#xff0c;我们已经详细介绍了WISDM数据集及如何使用CNN网络训练&#xff0c;得到了六个维度的模型仿真指标及五个维度的可视化分析&#xff0c;那么现在我们将训练模型推广到其他网路结构中去&#xff0c;通过仿真实验来对比一下不同网络之间对于WISDM数据集的训练效…

大语言模型入门(三)——提示词编写注意事项

一、提示词编写原则 提示词的编写应当遵循两个原则&#xff0c; 一个是指令必须清晰且具体&#xff0c;另一个是应当给模型充足的时间去思考。首先&#xff0c;你的指令足够清晰和具体&#xff0c;才能让大模型明确你需要它执行的任务&#xff0c;从而降低我们得到无关或者不正…

kubernetes-强制删除命名空间

一、故障现象 1、删除命名空间卡住、强制删除也卡住 2、其他终端显示命名空间下无资源 二、处理步骤 1、kubectl get namespace cilium-test -o json > temp.json 获取你需要删除的命名空间json描述文件。 2、修改finalize字段 3、替换 kubectl replace --raw "/api/v1…

Pikachu-xss防范措施 - href输出 js输出

总体原则&#xff1a; 输入做过滤&#xff0c;输出做转义 过滤&#xff1a;根据业务需要进行过滤&#xff0c;如&#xff1a;输入点要求输入手机号&#xff0c;则只允许输入手机号格式的数字&#xff1b; 转义&#xff1a;所有输出到前端的数据&#xff0c;都根据输出点进行转…

【MySQL】DML数据操作语句和基本的DQL语句

目录 一、Mysql对数据的增删改 1. 增加数据 2. 修改数据&#xff08;UPDATE语句&#xff09; 3. 删除 3.1 delete、truncate、drop区别 二、DQL语言&#xff08;重点&#xff09; 1. 单表查询 1.1 最简单的查询 1.2 从表中获取数据 1.3 字段名起别名 1.4 添加字段 1…

深度学习——线性神经网络(一、线性回归)

目录 一、线性回归1.1 线性回归的基本元素1.1.1 术语介绍1.1.2 线性模型1.1.3 损失函数1.1.4 解析解1.1.5 随机梯度下降1.1.6 模型预测 1.2 正态分布与平方损失 因为线性神经网络篇幅比较长&#xff0c;就拆成几篇博客分开发布。目录序号保持连贯性。 一、线性回归 回归&#x…

Linux:深入理解冯诺依曼结构与操作系统

目录 1. 冯诺依曼体系结构 1.1 结构分析 1.2 存储结构分布图 2. 操作系统 2.1 概念 2.2 如何管理 2.3 什么是系统调用和库函数 1. 冯诺依曼体系结构 1.1 结构分析 不管是何种计算机&#xff0c;如个人笔记本电脑&#xff0c;服务器&#xff0c;都是遵循冯诺依曼结构。…

基于Springboot的在线订餐系统设计与实现(论文+源码)_kaic

摘 要 当今世界&#xff0c;互联网以及和互联网有关的行业都在不断的发展&#xff0c;也在持续走进人们的生活&#xff0c;在此趋势下人们对于通过互联网解决生活问题的需求愈来愈多&#xff0c;本文考虑到了这些情况后做出了该订餐系统。 本系统选择了MySQL作为主要存储单元…

深入探讨Windows 11专业版与Windows 11专业工作站版的差异

前言 深入探讨Windows 11专业版与Windows 11专业工作站版的差异&#xff0c;可以更全面地理解这两款操作系统版本面向的不同用户群体、硬件支持、性能特点以及应用场景&#xff0c;从而为专业用户和企业选择最合适的平台提供依据。 硬件支持与扩展能力 Windows 11专业版&…

Apache OFBiz SSRF漏洞CVE-2024-45507分析

Apache OFBiz介绍 Apache OFBiz 是一个功能丰富的开源电子商务平台&#xff0c;包含完整的商业解决方案&#xff0c;适用于多种行业。它提供了一套全面的服务&#xff0c;包括客户关系管理&#xff08;CRM&#xff09;、企业资源规划&#xff08;ERP&#xff09;、订单管理、产…

记录一次学习--委派攻击学习

目录 为什么要使用委派 什么账号可以使用委派 非约束性委派 这里有一张图 利用 流程 约束性委派 这里有一张图 如何利用 条件 具体流程 为什么要使用委派 这个是因为可能A服务需要B服务的支持&#xff0c;但是A服务的权限不可以使用B服务。然后这时就可以让域用户将…

OpenStack Yoga版安装笔记(十四)启动一个实例

1、官方文档 OpenStack Installation Guidehttps://docs.openstack.org/install-guide/ 本次安装是在Ubuntu 22.04上进行&#xff0c;基本按照OpenStack Installation Guide顺序执行&#xff0c;主要内容包括&#xff1a; 环境安装 &#xff08;已完成&#xff09;OpenStack…

OpenCV计算机视觉库

计算机视觉和图像处理 Tensorflow入门深度神经网络图像分类目标检测图像分割OpenCVPytorchNLP自然语言处理 OpenCV 一、OpenCV简介1.1 简介1.2 OpenCV部署1.3 OpenCV模块 二、OpenCV基本操作2.1 图像的基本操作2.1.1 图像的IO操作2.1.2 绘制几何图像2.1.3 获取并修改图像的像素…

无人机电力巡检:点亮电力巡检新视野!

一、无人机电力巡查的优势 提高巡检效率&#xff1a;无人机可以搭载高清摄像头、红外热像仪等先进设备&#xff0c;实时拍摄和传输图像&#xff0c;帮助巡检人员快速发现潜在问题&#xff0c;如电线破损、绝缘子污损、设备过热等&#xff0c;从而大大缩短了巡检周期。 降低人…

python-斐波那契词序列/最大回文乘积/求最大最小k个元素

一:斐波那契词序列题目描述 编写一个程序&#xff0c;生成斐波那契词序列的前n个元素。 斐波那契词序列是一个词序列&#xff0c;其中每个词是通过连接前两个词形成的。 它以斐波那契序列命名&#xff0c;因为它是以类似的方式创建的&#xff0c;但是我们不是加数字&#xff0c…

《OpenCV》—— 指纹验证

用两张指纹图片中的其中一张对其验证 完整代码 import cv2def cv_show(name, img):cv2.imshow(name, img)cv2.waitKey(0)def verification(src, model):sift cv2.SIFT_create()kp1, des1 sift.detectAndCompute(src, None)kp2, des2 sift.detectAndCompute(model, None)fl…

以太网交换安全:MAC地址表安全

一、MAC地址表安全 MAC地址表安全是网络安全中的一个重要方面&#xff0c;它涉及到网络设备的MAC地址表的管理和保护。以下是对MAC地址表安全的详细介绍&#xff1a; &#xff08;1&#xff09;基本概念 定义&#xff1a;MAC地址表是网络设备&#xff08;如交换机&#xff0…