CARLA仿真软件(一)【软件简介及Windows下的安装】

2023-11-14

CARLA基本介绍

CARLA是一个开源的自动驾驶模拟器。它是从头开始构建的,用作模块化和灵活的API,以解决自动驾驶问题中涉及的一系列任务。 CARLA的主要目标之一是帮助自动驾驶研发民主化,它是一种易于用户使用和定制的工具。为此,模拟器必须满足一般驾驶问题(例如学习驾驶策略,训练感知算法等)内不同用例的要求。 CARLA基于Unreal Engine来运行模拟,并使用OpenDRIVE标准(今天为1.4)定义道路和城市环境。通过使用Python和C ++处理的API授予对模拟的控制权,该API随项目的发展而不断增长。

为了简化开发,培训和验证驾驶系统的过程,CARLA演变成由社区围绕主要平台构建的项目生态系统。在这种情况下,重要的是要了解有关CARLA如何工作的一些知识,以便充分理解其功能。
CARLA官方文档

CARLA模拟器

CARLA仿真器由可扩展的客户端-服务器体系结构组成。
服务器负责与仿真本身相关的所有事情:传感器渲染,物理计算,世界状态及其参与者的更新等等。 由于它旨在获得逼真的结果,因此最合适的方法是使用专用GPU运行服务器,尤其是在处理机器学习时。
客户端由一些客户端模块组成,这些客户端模块控制场景中演员的逻辑并设置世界条件。 这可以通过利用CARLA API(Python或C ++)来实现,CARLA API是在服务器和客户端之间进行中介的层,该层不断地发展以提供新的功能。

CARLA模拟器
·交通流管理:除了用于学习的系统外,还内置了一个控制车辆的系统。它作为CARLA提供的指挥者,以逼真的行为再现城市般的环境。
·传感器:车辆依靠它们来发布周围环境的信息。在CARLA中,它们是附着在车辆上的一种特殊的行为体,它们接收到的数据可以被检索和存储,以简化这一过程。目前该项目支持不同类型的传感器,从摄像头到雷达、激光雷达等等。
·记录器:此功能用于为世界上的每个演员一步步重演模拟。它允许访问世界上任何地方的时间线中的任何时刻,是一个很好的追踪工具。
·ROS bridge和Autoware实施方法:作为一个普遍化的问题,CARLA项目结和致力于将模拟器整合到其他学习环境中。
·开放性资产:CARLA为城市环境的不同地图提供便利,并对天气条件进行控制,同时提供一个蓝图库,其中有大量的行为者可供使用。然而,这些元素可以定制,并且可以按照简单的准则生成新的元素。
·场景运行器:为了简化车辆的学习过程,CARLA提供了一系列描述不同情况的路线,供大家迭代。这些也为CARLA挑战赛奠定了基础,开放给大家测试自己的解决方案,并进入排行榜。

CARLA快速而稳定地发展,扩大了所提供的解决方案的范围,并为自动驾驶的不同方法开辟了道路。在这样做的同时,它从未忘记自己的开源性质。该项目是透明的,就像一个白盒子,任何人都可以访问工具和开发社区。在这种民主化中,CARLA找到了自己的价值所在。

Windows Build

要执行下面的make命令,必须使用具有管理员权限的Visual Studio 2017原生控制台x64,否则可能会出现权限错误。!!! 重要 要执行下面的make命令,您必须使用Visual Studio 2017 native console x64 具有管理员权限,否则可能会出现权限错误。

# Make sure to meet the minimum requirements

# Necessary software: 
#   CMake
#   Git
#   Make
#   Python3 x64
#   Unreal Engine 4.24
#   Visual Studio 2017 with Windows 8.1 SDK and x64 Visual C++ Toolset

# Set environment variables for the software

# Clone the CARLA repository
git clone https://github.com/carla-simulator/carla

# make the CARLA client and the CARLA server
make PythonAPI
make launch

# Press play in the Editor to initialize the server
# Run example scripts to test CARLA
# Terminal A 
cd PythonAPI/examples
python3 spawn_npc.py 
# Terminal B
cd PythonAPI/examples
python3 dynamic_weather.py 
# The PythonAPI will be built based on the installed Python version
# The docs will use Python3, as support for  Python2 was provided until 0.9.10 (not included)

需求

·x64系统:仿真器需要运行64位系统
·30gb硬盘空间:安装所有需要的软件和CARLA将需要相当大的空间。确保有30/50GB左右的可用磁盘空间。
·GPU:CARLA的目标是真实的模拟,所以服务器至少需要4GB的GPU。对于机器学习,强烈建议使用专用GPU。
·两个TCP端口,良好网络状态:端口默认为2000和2001。 确保防火墙和任何其他应用程序都没有阻止它们。

必要软件

**·CMake:**从简单的配置文件生成标准的构建文件。
**·Git:**管理CARLA存储库的控制系统。
**·Make:**生成可执行文件
**·Python3 x64:**主要的脚本语言

Visual Studio 2017
这里获取2017版。社区是免费版本。使用Visual Studio安装程序安装两个额外的元素。

·Windows 8.1 SDK
**·x64 Visual C++ Toolset:**在Workloads section,选择 Desktop development with C++.

注意:其他版本的Visual Studio 可能会引发错误。完全卸载Visual Studio,请在Program Files (x86)\Microsoft Visual Studio\Installer\resources\app\layout目录运行.\InstallCleanup.exe -full

Unreal Engine

进入虚幻引擎网站并下载Epic Games Launcher。在Engine versions/Library,下载Unreal Engine 4.24.x。确保运行它以检查所有的东西是否正确安装。

安装了VS2017和UE4.24,在右键点击.uproject文件时,应该会出现一个生成Visual Studio项目文件的选项。如果没有这个选项,说明UE4.24的安装出了问题。请创建一个UE项目进行检查,必要时重新安装。

CARLA build

获取资源

可以从官方项目资源站获取,也可以通过终端使用命令获取:

git clone https://github.com/carla-simulator/carla

获取资产

\Util\ContentVersions.txt包含了CARLA的相关资产。这些资产需要在Unreal\CarlaUE4\Content\Carla目录下解压。

设置环境变量

此步骤用于CARLA寻找Unreal Engine。如果未设置,CARLA将会循环搜索最新版本的Unreal Engine.

  1. 打开控制面板进入高级系统设置
  2. 高级面板中打开环境变量
  3. 点击新建创建变量
  4. 命名UE4_ROOT并选择UE4的安装路径

make CARLA

最后步骤是build CARLA. 不同的make命令来创建不同的依赖库。这些都需要运行在CARLA的根目录下。

·make PythonAPI :只需要第一次配置前运行或者进行版本更新后运行。之后Python脚本就可以执行。

make PythonAPI

·make launch : 编译服务器模拟器并启动虚幻引擎。按 "播放 "键启动观众视图,关闭编辑器窗口退出。摄像机可以用WASD键移动,在移动鼠标的同时点击场景进行旋转。

项目第一次可能会要求建立UE4Editor-Carla.dll等其他实例。同意才能打开项目。在第一次启动时,编辑器可能会显示有关着色器和网格距离字段的警告。这些需要一些时间来加载,在此之前城市将无法正常显示。

最后,可以通过下面脚本测试一下模拟器。在PythonAPI/examples和PythonAPI/util里面有一些例子脚本,可能对初学者特别有用。

下面的命令将在城镇中产生一些NPC,并创建一个天气循环。每个脚本应该在一个终端中运行。

# Terminal A 
cd PythonAPI/examples
python3 spawn_npc.py  
# Terminal B
cd PythonAPI/examples
python3 dynamic_weather.py 
# The PythonAPI will be built based on the installed Python version
# The docs will use Python3, as support for  Python2 was provided until 0.9.10 (not included)

注意:如果仿真器运行FPS很低,那么在Edit/Editor preferences/Performance中UE editor,关闭“Use Less CPU when in background”

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CARLA仿真软件(一)【软件简介及Windows下的安装】 的相关文章

  • 如何屏蔽 PyTorch 权重参数中的权重?

    我正在尝试在 PyTorch 中屏蔽 强制为零 特定权重值 我试图掩盖的权重是这样定义的def init class LSTM MASK nn Module def init self options inp dim super LSTM
  • 打印 scrapy 请求的“响应”

    我正在尝试学习 scrapy 在遵循教程的同时 我正在尝试进行细微的调整 我想简单地从请求中获取响应内容 然后我会将响应传递到教程代码中 但我无法发出请求并获取响应内容 建议就好 from scrapy http import Respon
  • Python 中的六边形自组织映射

    我在寻找六边形 自组织映射 http en wikipedia org wiki Self organizing map在Python上 准备好模块 如果存在的话 绘制六边形单元格的方法 将六边形单元作为数组或其他方式使用的算法 About
  • 使用 Django 的 post_save() 信号

    我有两张桌子 class Advertisement models Model created at models DateTimeField auto now add True author email models EmailField
  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • 类属性在功能上依赖于其他类属性

    我正在尝试使用静态类属性来定义另一个静态类属性 我认为可以通过以下代码来实现 f lambda s s 1 class A foo foo bar f A foo 然而 这导致NameError name A is not defined
  • 在 python-docx 中搜索和替换

    我有一个包含以下字符串的文档 模板 你好 我的名字是鲍勃 鲍勃是一个很好的名字 我想使用 python docx 打开此文档并使用 查找和替换 方法 如果存在 来更改每个字符串 Bob gt Mark 最后 我想生成一个新文档 其中包含字符
  • VSCode pytest 测试发现失败

    Pytest 测试发现失败 用户界面指出 Test discovery error please check the configuration settings for the tests 输出窗口显示 Test Discovery fa
  • Python:随时接受用户输入

    我正在创建一个可以做很多事情的单元 其中之一是计算机器的周期 虽然我将把它转移到梯形逻辑 CoDeSys 但我首先将我的想法放入 Python 中 我将进行计数 只需一个简单的操作 counter 1 print counter 跟踪我处于
  • Python While 循环,and (&) 运算符不起作用

    我正在努力寻找最大公因数 我写了一个糟糕的 运算密集型 算法 它将较低的值减一 使用 检查它是否均匀地划分了分子和分母 如果是 则退出程序 但是 我的 while 循环没有使用 and 运算符 因此一旦分子可整除 它就会停止 即使它不是正确
  • 在 Mac 上安装 Pygame 到 Enthought 构建中

    关于在 Mac 上安装 Pygame 有许多未解答的问题 但我将在这里提出我的具体问题并希望得到答案 我在 Mac 上安装 Pygame 时遇到了难以置信的困难 我使用 Enthought 版本 EPD 7 3 2 32 位 它是我的默认框
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • 使用循环将对象添加到列表(python)

    我正在尝试使用 while 循环将对象添加到列表中 基本上这就是我想做的 class x pass choice raw input pick what you want to do while choice 0 if choice 1 E
  • urllib2.urlopen() 是否实际获取页面?

    当我使用 urllib2 urlopen 时 我在考虑它只是为了读取标题还是实际上带回整个网页 IE 是否真的通过 urlopen 调用或 read 调用获取 HTML 页面 handle urllib2 urlopen url html
  • ValueError:无法插入 ID,已存在

    我有这个数据 ID TIME 1 2 1 4 1 2 2 3 我想按以下方式对数据进行分组ID并计算每组的平均时间和规模 ID MEAN TIME COUNT 1 2 67 3 2 3 00 1 如果我运行此代码 则会收到错误 ValueE
  • 使用 lambda 函数更改属性值

    我可以使用 lambda 函数循环遍历类对象列表并更改属性值 对于所有对象或满足特定条件的对象 吗 class Student object def init self name age self name name self age ag
  • 使用 Doc2vec 后如何解释 Clusters 结果?

    我正在使用 doc2vec 将关注者的前 100 条推文转换为矢量表示形式 例如 v1 v100 之后 我使用向量表示来进行 K 均值聚类 model Doc2Vec documents t size 100 alpha 035 windo
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现
  • 使用 numpy 加速 for 循环

    下一个 for 循环如何使用 numpy 获得加速 我想这里可以使用一些奇特的索引技巧 但我不知道是哪一个 这里可以使用 einsum 吗 a 0 for i in range len b a numpy mean C d e f b i

随机推荐