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 笔记 |
|---|---|---|
start | Recording 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. 如果为负,则从最后考虑。 |
duration | Seconds to playback. 0 is all the recording. 播放秒数。 0 为全部录音。 | By the end of the playback, vehicles will be set to autopilot and pedestrians will stop. 播放结束时,车辆将设置为自动驾驶,行人将停止。 |
camera | ID 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 史诗模式截图
Low mode 低模式
./CarlaUE4.sh -quality-level=Low
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 生态系统中的一员,以其强大的功能和灵活的配置ÿ…...
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类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1167 标注数量(xml文件个数):1167 标注数量(txt文件个数):1167 标注…...
OverTheWire Bandit 靶场通关解析(上)
介绍 OverTheWire Bandit 是一个针对初学者设计的网络安全挑战平台,旨在帮助用户掌握基本的命令行操作和网络安全技能。Bandit 游戏包含一系列的关卡,每个关卡都需要解决特定的任务来获取进入下一关的凭证。通过逐步挑战更复杂的问题,用户可…...
【Python实战因果推断】4_因果效应异质性4
目录 Cumulative Gain Target Transformation Cumulative Gain 如果采用与累积效应曲线完全相同的逻辑,但将每个点乘以累积样本 Ncum/N,就会得到累积增益曲线。现在,即使曲线的起点具有最高的效果(对于一个好的模型来说&#x…...
大模型推理知识总结
一、大模型推理概念 大多数流行的only-decode LLM(例如 GPT-3)都是针对因果建模目标进行预训练的,本质上是作为下一个词预测器。这些 LLM 将一系列tokens作为输入,并自回归生成后续tokens,直到满足停止条件࿰…...
[笔记] keytool 导入服务器证书和证书私钥
背景 我当前手头已有一个服务器证书和对应的私钥,现在需要转换为 Java KeyStore 格式使用,找了一大圈才发现 keytool 无法直接导入服务器证书和私钥,当然证书可以直接导入,但是私钥是无法直接导入。找了一大圈发现可以先将服务器…...
【2024-热-办公软件】ONLYOFFICE8.1版本桌面编辑器测评
在今日快速发展的数字化办公环境中,选择一个功能全面且高效的办公软件是至关重要的。最近,我有幸体验了ONLYOFFICE 8.1版本的桌面编辑器,这款软件不仅提供了强大的编辑功能,还拥有众多改进,让办公更加流畅和高效。在本…...
C# 23设计模式备忘
创建型模式:单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。 原型(Prototype)模式:将一个对象作为原型&…...
STL中的迭代器模式:将算法与数据结构分离
目录 1.概述 2.容器类 2.1.序列容器 2.2.关联容器 2.3.容器适配器 2.4.数组 3.迭代器 4.重用标准迭代器 5.总结 1.概述 在之前,我们讲了迭代器设计模式,分析了它的结构、角色以及优缺点: 设计模式之迭代器模式-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.…...
【脚本工具库】批量下采样图像(附源码)
在图像处理领域,我们经常需要对大批量图像进行下采样操作,以便减小图像的尺寸和文件大小,这对于节省存储空间和提高处理速度非常有帮助。手动操作不仅耗时,而且容易出错。为了解决这个问题,我们可以编写一个Python脚本…...
Web渗透:文件包含漏洞
Ⅱ.远程文件包含 远程文件包含漏洞(Remote File Inclusion, RFI)是一种Web应用程序漏洞,允许攻击者通过URL从远程服务器包含并执行文件;RFI漏洞通常出现在动态包含文件的功能中,且用户输入未经适当验证和过滤。接着我…...
什么是yum源?如何对其进行配置?
哈喽,大家好呀!这里是码农后端。今天来聊一聊Linux下的yum源及其配置相关的内容。简单来说,yum源就相当于一个管理软件的工具,可以想象成一个很大的仓库,里面存放着各种我们所需要的软件包及其依赖。 一、Linux下软件包…...
Node.js全栈指南:认识MIME和HTTP
MIME,全称 “多用途互联网邮件扩展类型”。 这名称相当学术,用人话来说就是: 我们浏览一个网页的时候,之所以能看到 html 文件展示成网页,图片可以正常显示,css 样式能正常影响网页效果,js 脚…...
基于weixin小程序智慧物业系统的设计
管理员账户功能包括:系统首页,个人中心,管理员管理,用户管理,员工管理,房屋管理,缴费管理,车位管理,报修管理 工作人员账号功能包括:系统首页,维…...
成功解决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…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
