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 还提供暂停渲染或离屏渲染的选项,以便更有效地记录或运行模拟。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【职场人】如何与同事有效沟通

在职场中,沟通如同桥梁,连接着每一位职场人士的心灵与智慧。有效的沟通不仅能让工作更加顺畅,还能让团队关系更加和谐。那么,如何与同事进行有效沟通呢?下面,我将结合个人经验和一些幽默的比喻,…

Python的pip切换国内源

📚目录 起因:pip切换国内源:操作永久修改pip配置文件测试永久源配置是否成功 pip其他环境的配置永久源配置 起因: pyCharm安装模块的手出现ModuleNotFoundError: No module named distutils 由于使用pip install distutils下载不了…

绘制口罩maskTheFace数据源是300w_lp

官网下载mask the face 代码,增加代码draw_face.py import argparse import cv2 import scipy.io from tqdm import tqdm from utils.aux_functions_2 import *# 设置命令行输入参数 parser argparse.ArgumentParser(description"MaskTheFace - Python code…

用腾讯云语音合成(TTS)批量生成英语绘本的朗读音频

孩子进行英语启蒙,需要看很多英语绘本,而且要听配套的音频来练听力。但有些英语绘本是没有对应音频的,下面简单几步,就可以将任意英语绘本制作出对应的英语朗读音频。 先到电子书资源网站搜索这个绘本名称,如果有电子…

C++学习合集

#整理到一块,方便查东西,顺便补充一些之前没有学习到的东西# 变量 char--1字节 short--2字节 int-4字节 long--4字节 long long(int)--8字节;准确来说变量的大小取决于编译器,1字节8个二进制位,其中最高位为符号位…

不需要new关键字创建实例?jQuery是如何做到的

这篇文章是jQuery源码专栏的开篇文章了,有人会问为什么都2024年了, 还要研究一个已经过时的框架呢,其实,jQuery对比vue和react这种响应式框架,其在使用上算是过时的,毕竟直接操作DOM远不如操作虚拟DOM来的方…

头歌资源库(16)分苹果

一、 问题描述 二、算法思想 首先,我们可以初始化一个数组apple来记录每个孩子分配的苹果数量,将所有元素初始化为1,表示每个孩子至少分配到一个苹果。 然后,从左到右遍历评分数组ratings,判断当前孩子的评分与前一个…

Docker 简介【虚拟化、容器化】

Docker 简介 Docker 简介什么是虚拟化、容器化案例 为什么要虚拟化、容器化?- 资源利用率高- 环境标准化- 资源弹性伸缩- 差异化环境提供- 沙箱安全- 容器对比虚拟机更轻量,启动更快- 维护和扩展容易 虚拟化实现方式应用程序执行环境分层- 硬件层&#x…

SpringBoot-注解@ImportResource引入自定义spring的配置xml文件和配置类

1、注解ImportResource 我们知道Spring的配置文件是可以有很多个的,我们在web.xml中如下配置就可以引入它们: SprongBoot默认已经给我们配置好了Spring,它的内部相当于已经有一个配置文件,那么我们想要添加新的配置文件怎么办&am…

数据仓库和数据库有什么区别?

一、什么是数据仓库二、什么是数据库三、数据仓库和数据库有什么区别 一、什么是数据仓库 数据仓库(Data Warehouse)是一种专门用于存储和管理大量结构化数据的信息系统。它通过整合来自不同来源的数据,为企业提供统一、一致的数据视图&…

示例:推荐一个自定义的Ribbon皮肤

一、目的:WPF自带的Ribbon控件功能很强大,但使用过程中感觉显示的样式不是很好,或者不适合自己的项目,下面介绍一个基于自带Ribbon控件样式的修改,主要修改了些高度,间距,背景色,前景…

es的检索-DSL语法和Java-RestClient实现

基本语法: GET /索引库名/_search {"query": {"查询类型": {"查询条件"}} }RestClient的导入在RestClient操作索引库和文档有介绍 查询所有: # 查询所有 GET /test/_search {"query": {"match_all"…

Go 三色标记法:一种高效的垃圾回收策略

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

2024年6月计算机视觉论文推荐:扩散模型、视觉语言模型、视频生成等

6月还有一周就要结束了,我们今天来总结2024年6月上半月发表的最重要的论文,重点介绍了计算机视觉领域的最新研究和进展。 Diffusion Models 1、Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation LlamaGen,是一个…

学习VXLAN -- 报文结构、原理和配置

目录 VXLAN背景什么是VXLANVXLAN的优势VXLAN报文结构一些特定名词BDVBDIFVAPVSIVSI-InterfaceAC VXLAN的实现原理图VXLAN MAC地址表项MAC地址动态学习 VXLAN隧道VXLAN隧道工作模式L2 GatewayIP Gateway VXLAN隧道的建立与关联VXLAN隧道建立的方式VXLAN对到与VXLAN关联的方式 配…

搭建大型分布式服务(四十一)SpringBoot 整合多个kafka数据源-支持亿级消息生产者

系列文章目录 文章目录 系列文章目录前言一、本文要点二、开发环境三、原项目四、修改项目五、测试一下五、小结 前言 本插件稳定运行上百个kafka项目&#xff0c;每天处理上亿级的数据的精简小插件&#xff0c;快速上手。 <dependency><groupId>io.github.vipjo…

PD虚拟机和VMware有什么区别?PD虚拟机和VMware谁更好用?

随着电脑硬件设备的飞快发展&#xff0c;一些高端的技术已经不再遥不可及&#xff0c;比如虚拟化&#xff0c;虚拟机技术已经成为IT领域和个人用户不可或缺的工具。特别是PD虚拟机&#xff08;Parallels Desktop&#xff09;和VMware&#xff0c;作为市场上两个主流的虚拟机软件…

智能优化算法改进策略之局部搜索算子(四)--梯度搜索法

2、仿真实验 以海洋捕食者算法&#xff08;MPA&#xff09;为基本算法。考察基于梯度搜索的改进海洋捕食者算法&#xff08;命名为GBSMPA&#xff09; vs. 海洋捕食者算法&#xff08;MPA&#xff09; 在Sphere函数上的比较 在Penalized1函数上的比较 在CEC2017-1上的比较 在C…

本地离线模型搭建指南-本地运行显卡选择

搭建一个本地中文大语言模型&#xff08;LLM&#xff09;涉及多个关键步骤&#xff0c;从选择模型底座&#xff0c;到运行机器和框架&#xff0c;再到具体的架构实现和训练方式。以下是一个详细的指南&#xff0c;帮助你从零开始构建和运行一个中文大语言模型。 本地离线模型搭…

WordPress视频主题Qinmei 2.0

WordPress视频主题Qinmei 2.0&#xff0c;简单漂亮的WP视频站源码 主题功能 可以根据豆瓣ID直接获取到其他详细信息&#xff0c;省去慢慢填写的痛苦&#xff1b;播放器支持直链&#xff0c;解析&#xff0c;m3u8格式&#xff0c;同时解析可匹配正则自动更改&#xff1b;新增动…