当前位置: 首页 > news >正文

CARLA自动驾驶模拟器基础

CARLA 使用服务器-客户端架构运行,其中 CARLA 服务器运行模拟并由客户端向其发送指令。客户端代码使用 API 与服务器进行通信。要使用 Python API,您必须通过 PIP 安装该模块:

pip3 install carla-simulator # Python 3
World and client

客户端是用户运行以请求模拟中的信息或更改的模块。客户端使用 IP 和特定端口运行。它通过终端与服务器通信。可以有许多客户端同时运行。

使用 CARLA 客户端对象设置客户端:

client = carla.Client('localhost', 2000)

这会将客户端设置为与本地计算机 localhost 上运行的 CARLA 服务器进行通信。或者,如果在单独的计算机上运行客户端,则可以使用网络计算机的 IP 地址。第二个参数是端口号。默认情况下,CARLA 服务器将在端口 2000 上运行,如有必要,您可以在启动 CARLA 时在设置中更改此设置。

客户端对象可用于多种功能,包括加载新地图、记录模拟和初始化流量管理器:

client.load_world('Town07')client.start_recorder('recording.log')

世界是代表模拟的对象。它充当一个抽象层,包含生成参与者、改变天气、获取世界当前状态等的主要方法。每个模拟只有一个世界。当地图改变时,它会被摧毁并替换为新的。

使用客户端对象检索世界对象:

world = client.get_world()

世界对象可用于使用其多种方法访问模拟中的对象,例如天气、车辆、交通灯、建筑物和地图:

level = world.get_map()weather = world.get_weather()blueprint_library = world.get_blueprint_library()
Synchronous and asynchronous mode 同步和异步模式

CARLA 具有客户端-服务器架构。服务器运行模拟。客户端检索信息并请求模拟中的更改。

本质上,在异步模式下,CARLA 服务器会尽可能快地运行。客户请求是即时处理的。在同步模式下,运行 Python 代码的客户端负责控制并告诉服务器何时更新。

同步和异步模式之间的更改只是布尔状态的问题。

settings = world.get_settings()
settings.synchronous_mode = True # Enables synchronous mode
settings.fixed_delta_seconds = 0.05
world.apply_settings(settings)

要禁用同步模式,只需将变量设置为 False 或使用脚本 PythonAPI/util/config.py

cd PythonAPI/util && python3 config.py --no-sync # Disables synchronous mode

同步模式与缓慢的客户端应用程序以及需要不同元素(例如传感器)之间的同步时特别相关。如果客户端太慢而服务器不等待,就会出现信息溢出。客户将无法管理一切,并且会丢失或混合。同样,对于许多传感器和异步情况,不可能知道所有传感器是否都在模拟中使用同一时刻的数据。

以下代码片段扩展了前一个代码片段。客户端创建一个摄像头传感器,将当前步骤的图像数据存储在队列中,并从队列中检索后勾选服务器。可以在此处找到有关多个传感器的更复杂的示例。

settings = world.get_settings()
settings.synchronous_mode = True
world.apply_settings(settings)camera = world.spawn_actor(blueprint, transform)
image_queue = queue.Queue()
camera.listen(image_queue.put)while True:world.tick()image = image_queue.get()
Recorder

记录器可以将重现先前模拟所需的所有数据保存到文件中。这些数据包括车辆的位置和速度、交通信号灯的状态、行人的位置和速度以及太阳的位置和天气状况等详细信息。数据被记录到一个二进制文件中,Carla服务器稍后可以加载该文件以准确地再现模拟。

演员根据记录文件中包含的数据在每一帧上进行更新。当前模拟中出现在录制中的演员将被移动或重新生成以模拟它。那些没有出现在录音中的人会继续他们的路,就像什么都没发生一样。

播放结束时,车辆将设置为自动驾驶,但行人将停下来。

记录器文件包括有关许多不同元素的信息。

Actors — creation and destruction, bounding and trigger boxes.

Traffic lights — state changes and time settings.

Vehicles — position and orientation, linear and angular velocity, light state, and physics control.

Pedestrians — position and orientation, and linear and angular velocity.

Lights — Light states from buildings, streets, and vehicles.

要开始录制,只需要一个文件名。在文件名中使用 \/: 字符会将其定义为绝对路径。如果没有详细路径,文件将保存在 CarlaUE4/Saved 中。

client.start_recorder("/home/carla/recording01.log")

默认情况下,记录器设置为仅存储回放模拟所需的信息。为了保存前面提到的所有信息,必须在开始录制时配置参数 additional_data

client.start_recorder("/home/carla/recording01.log", True)

要停止record

client.stop_recorder()

据估计,50 个交通灯和 100 辆车的 1 小时记录大约需要 200MB 大小。

Simulation playback 模拟回放

可以在模拟过程中的任何时刻开始播放。除了日志文件的路径之外,此方法还需要一些参数。

client.replay_file("recording01.log", start, duration, camera)
Parameter 范围Description 描述Notes 笔记
startRecording time in seconds to start the simulation at. 记录开始模拟的时间(以秒为单位)。If positive, time will be considered from the beginning of the recording. 如果是肯定的,时间将从录音开始算起。 If negative, it will be considered from the end. 如果为负,则从最后考虑。
durationSeconds to playback. 0 is all the recording. 播放秒数。 0 为全部录音。By the end of the playback, vehicles will be set to autopilot and pedestrians will stop. 播放结束时,车辆将设置为自动驾驶,行人将停止。
cameraID of the actor that the camera will focus on. 摄像机将聚焦的演员的 ID。Set it to 0 to let the spectator move freely. 将其设置为 0 ,让观众自由移动。
Rendering 渲染

CARLA 提供了许多有关渲染质量和效率的选项。在最基本的层面上,CARLA 提供了两种质量选项,可以在高规格和低规格硬件上运行并获得最佳结果:

Epic mode 史诗模式

./CarlaUE4.sh -quality-level=Epic

Epic mode screenshot Epic mode screenshot 史诗模式截图

Low mode 低模式

./CarlaUE4.sh -quality-level=Low

Low mode screenshot Low mode screenshot 低模式截图

CARLA 还提供暂停渲染或离屏渲染的选项,以便更有效地记录或运行模拟。

相关文章:

CARLA自动驾驶模拟器基础

CARLA 使用服务器-客户端架构运行,其中 CARLA 服务器运行模拟并由客户端向其发送指令。客户端代码使用 API 与服务器进行通信。要使用 Python API,您必须通过 PIP 安装该模块: pip3 install carla-simulator # Python 3World and client 客…...

华为HCIP Datacom H12-821 卷16

1.判断题 在 VRRP 中,当设备状态变为 Master 后,,会立刻发送免费 ARP 来刷新下游设备的 MAC 表项,从而把用户的流量引到此台设备上来 A、对 B、错 正确答案: A 解析: 2.判断题 路由选择工具 route- policy 能够基于预先定义的条件来进行过滤并设置 BGP...

Python学习打卡:day17

day17 笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了 目录 day17121、Python 操作 MySQL 基础使用pymysql创建到 MySQL 的数据库链接执行 SQL 语句执行非查询性质的SQL语句执行查询性质的SQL语句 122、Pyth…...

Spring Cloud Gateway 与 Nacos 的完美结合

在现代微服务架构中,服务网关扮演着至关重要的角色。它不仅负责路由请求到相应的服务,还承担着诸如负载均衡、安全认证、限流熔断等重要功能。Spring Cloud Gateway 作为 Spring Cloud 生态系统中的一员,以其强大的功能和灵活的配置&#xff…...

vue2 element ui 表单 动态增加表单项 表单项值不可重复 select多选

案例 <template><el-form :model"form" ref"form" label-width"70px"><el-form-item><el-button icon"el-icon-plus" type"primary" plain click"add">新增</el-button><el-b…...

[数据集][目标检测]电力场景下电柜箱门把手检测数据集VOC+YOLO格式1167张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1167 标注数量(xml文件个数)&#xff1a;1167 标注数量(txt文件个数)&#xff1a;1167 标注…...

OverTheWire Bandit 靶场通关解析(上)

介绍 OverTheWire Bandit 是一个针对初学者设计的网络安全挑战平台&#xff0c;旨在帮助用户掌握基本的命令行操作和网络安全技能。Bandit 游戏包含一系列的关卡&#xff0c;每个关卡都需要解决特定的任务来获取进入下一关的凭证。通过逐步挑战更复杂的问题&#xff0c;用户可…...

【Python实战因果推断】4_因果效应异质性4

目录 Cumulative Gain Target Transformation Cumulative Gain 如果采用与累积效应曲线完全相同的逻辑&#xff0c;但将每个点乘以累积样本 Ncum/N&#xff0c;就会得到累积增益曲线。现在&#xff0c;即使曲线的起点具有最高的效果&#xff08;对于一个好的模型来说&#x…...

大模型推理知识总结

一、大模型推理概念 大多数流行的only-decode LLM&#xff08;例如 GPT-3&#xff09;都是针对因果建模目标进行预训练的&#xff0c;本质上是作为下一个词预测器。这些 LLM 将一系列tokens作为输入&#xff0c;并自回归生成后续tokens&#xff0c;直到满足停止条件&#xff0…...

[笔记] keytool 导入服务器证书和证书私钥

背景 我当前手头已有一个服务器证书和对应的私钥&#xff0c;现在需要转换为 Java KeyStore 格式使用&#xff0c;找了一大圈才发现 keytool 无法直接导入服务器证书和私钥&#xff0c;当然证书可以直接导入&#xff0c;但是私钥是无法直接导入。找了一大圈发现可以先将服务器…...

【2024-热-办公软件】ONLYOFFICE8.1版本桌面编辑器测评

在今日快速发展的数字化办公环境中&#xff0c;选择一个功能全面且高效的办公软件是至关重要的。最近&#xff0c;我有幸体验了ONLYOFFICE 8.1版本的桌面编辑器&#xff0c;这款软件不仅提供了强大的编辑功能&#xff0c;还拥有众多改进&#xff0c;让办公更加流畅和高效。在本…...

C# 23设计模式备忘

创建型模式&#xff1a;单例&#xff08;Singleton&#xff09;模式&#xff1a;某个类只能生成一个实例&#xff0c;该类提供了一个全局访问点供外部获取该实例&#xff0c;其拓展是有限多例模式。 原型&#xff08;Prototype&#xff09;模式&#xff1a;将一个对象作为原型&…...

STL中的迭代器模式:将算法与数据结构分离

目录 1.概述 2.容器类 2.1.序列容器 2.2.关联容器 2.3.容器适配器 2.4.数组 3.迭代器 4.重用标准迭代器 5.总结 1.概述 在之前&#xff0c;我们讲了迭代器设计模式&#xff0c;分析了它的结构、角色以及优缺点&#xff1a; 设计模式之迭代器模式-CSDN博客 在 STL 中&a…...

TCP、UDP详解

目录 1.区别 1.1 概括 1.2 详解 2.TCP 2.1 内容 2.2 可靠传输 2.2.1 确认应答 2.2.2 超时重传 2.2.3 连接管理 三次握手 四次挥手 2.2.4 滑动窗口 2.2.5 流量控制 2.2.6 拥塞控制 2.2.7 延时应答 2.2.8 捎带应答 2.2.9 面向字节流 2.2.10 异常情况的处理 1.…...

【脚本工具库】批量下采样图像(附源码)

在图像处理领域&#xff0c;我们经常需要对大批量图像进行下采样操作&#xff0c;以便减小图像的尺寸和文件大小&#xff0c;这对于节省存储空间和提高处理速度非常有帮助。手动操作不仅耗时&#xff0c;而且容易出错。为了解决这个问题&#xff0c;我们可以编写一个Python脚本…...

Web渗透:文件包含漏洞

Ⅱ.远程文件包含 远程文件包含漏洞&#xff08;Remote File Inclusion, RFI&#xff09;是一种Web应用程序漏洞&#xff0c;允许攻击者通过URL从远程服务器包含并执行文件&#xff1b;RFI漏洞通常出现在动态包含文件的功能中&#xff0c;且用户输入未经适当验证和过滤。接着我…...

什么是yum源?如何对其进行配置?

哈喽&#xff0c;大家好呀&#xff01;这里是码农后端。今天来聊一聊Linux下的yum源及其配置相关的内容。简单来说&#xff0c;yum源就相当于一个管理软件的工具&#xff0c;可以想象成一个很大的仓库&#xff0c;里面存放着各种我们所需要的软件包及其依赖。 一、Linux下软件包…...

Node.js全栈指南:认识MIME和HTTP

MIME&#xff0c;全称 “多用途互联网邮件扩展类型”。 这名称相当学术&#xff0c;用人话来说就是&#xff1a; 我们浏览一个网页的时候&#xff0c;之所以能看到 html 文件展示成网页&#xff0c;图片可以正常显示&#xff0c;css 样式能正常影响网页效果&#xff0c;js 脚…...

基于weixin小程序智慧物业系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;用户管理&#xff0c;员工管理&#xff0c;房屋管理&#xff0c;缴费管理&#xff0c;车位管理&#xff0c;报修管理 工作人员账号功能包括&#xff1a;系统首页&#xff0c;维…...

成功解决​​​​​​​TypeError: __call__() got an unexpected keyword argument ‘first_int‘

成功解决TypeError: __call__() got an unexpected keyword argument first_int 目录 解决问题 解决思路 解决方法 T1、直接调用原始函数 T2、检查装饰器实现 T3、使用不同的调用方式 解决问题 result = multiply(**arguments) File "D:\ProgramData\Anaconda3\Li…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...