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

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

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

相关文章

React18中各种Hooks用法总结( 内附案例讲解)

React中各种Hooks用法总结 内附案例讲解 一、useState useState 是一个 React Hook,它允许你向组件添加一个 状态变量。 import React, { FC, memo, useState } from react import { MainContainer } from ./style interface IProps {children?: React.ReactNo…

FRP内网穿透及多级代理的使用

目录 0、前言 1、场景介绍 2、环境准备 2.1 下载frp 2.2 配置一台VPS 2.3 socks5客户端 2.5 网络环境准备 3、Frp设置 3.1 一层代理 3.1 二层代理 4、Frp总结 0、前言 FRP是比较老牌的也是比较流行的反向代理、内网穿透软件。FRP用途和使用场景可以看官方文档,…

JavaScript 预编译与执行机制解析

在深入探讨JavaScript预编译与执行机制之前,我们首先需要明确几个基本概念:声明提升、函数执行上下文、全局执行上下文以及调用栈。这些概念共同构成了JavaScript运行时环境的核心组成部分,对于理解代码的执行流程至关重要。本文将围绕这些核…

美团携手HarmonyOS SDK,开启便捷生活新篇章

华为开发者大会(HDC 2024)于6月21日在东莞松山湖拉开序幕,通过一系列精彩纷呈的主题演讲、峰会、专题论坛和互动体验,为开发者们带来了一场知识与技术的盛宴。6月23日,《HarmonyOS开放能力,使能应用原生易用…

24-6-23-读书笔记(七)-《文稿拾零》豪尔赫·路易斯·博尔赫斯(第三辑)

文章目录 《文稿拾零》阅读笔记记录总结 《文稿拾零》 《文稿拾零》超厚的一本书(570),看得时间比较长,这本书是作者零散时间写的一些关于文学性质的笔记,读起来还是比较无趣的,非常零散,虽然有…

C++系列-String(二)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” #define _CRT_SECURE_NO_WARNINGS #include<string> #include<iostream> #include<list> #include<algorithm> using namespace std; void test_string…

Java启动jar设置内存分配详解

在微服务架构越来越盛行的情况下&#xff0c;我们通常一个系统都会拆成很多个小的服务&#xff0c;但是最终部署的时候又因为没有那么多服务器只能把多个服务部署在同一台服务器上&#xff0c;这个时候问题就来了&#xff0c;服务器内存不够&#xff0c;这个时候我们就需要对每…

【Python机器学习实战】 | 基于线性回归以及支持向量机对汽车MPG与自重进行回归预测

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

【Android面试八股文】请你描述一下JVM的内存模型

文章目录 JVM内存模型1. 方法区(Method Area)运行时常量池(Runtime Constant Pool)2. 堆(Heap)3. 栈(Stack)4. 本地方法栈(Native Method Stack)5. 程序计数器(Program Counter Register)6. 直接内存(Direct Memory)JVM内存溢出的情况Java的口号是: “Write onc…

【Flink metric】Flink指标系统的系统性知识:以便我们实现特性化数据的指标监控与分析

文章目录 一. Registering metrics&#xff1a;向flink注册新自己的metrics1. 注册metrics2. Metric types:指标类型2.1. Counter2.2. Gauge2.3. Histogram(ing)4. Meter 二. Scope:指标作用域1. User Scope2. System Scope ing3. User Variables 三. Reporter ing四. System m…

tensorRT C++使用pt转engine模型进行推理

目录 1. 前言2. 模型转换3. 修改Binding4. 修改后处理 1. 前言 本文不讲tensorRT的推理流程&#xff0c;因为这种文章很多&#xff0c;这里着重讲从标准yolov5的tensort推理代码&#xff08;模型转pt->wts->engine&#xff09;改造成TPH-yolov5&#xff08;pt->onnx-…

如何关闭软件开机自启,提升电脑开机速度?

如何关闭软件开机自启&#xff0c;提升电脑开机速度&#xff1f;大家知道&#xff0c;很多软件在安装时默认都会设置为开机自动启动。但是&#xff0c;有很多软件在我们开机之后并不是马上需要用到的&#xff0c;开机启动的软件过多会导致电脑开机变慢。那么&#xff0c;如何关…

【break】大头哥哥做题

【break】大头哥哥做题 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 【参考代码】 #include <iostream> using namespace std; int main(){ int sum 0;//求和int day 0;//天数 while(1){int a;cin>>a;if(a-1){break;//结束当前循环 }sum sum a; …

[stm32]温湿度采集与OLED显示

一、I2C总线协议 I2C&#xff08;Inter-integrated circuit &#xff09;是一种允许从不同的芯片或电路与不同的主芯片通信的协议。它仅用于短距离通信&#xff0c;是一种用于两个或多个设备之间进行数据传输的串行总线技术&#xff0c;它可以让你在微处理器、传感器、存储器、…

6月20日(周四)A股行情总结:A股险守3000点,恒生科技指数跌1.6%

A股三大股指走弱&#xff0c;科创板逆势上扬&#xff0c;半导体板块走强&#xff0c;多股20CM涨停。中芯国际港股涨超1%。恒生科技指数跌超1%。离岸人民币对美元汇率小幅走低&#xff0c;20日盘中最低跌至7.2874&#xff0c;创下2023年11月中旬以来的新低&#xff0c;随后收复部…

287 寻找重复数-类似于环形链表II

题目 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 &#xff0c;返回 这个重复的数 。 你设计的解决方案必须 不修改 数组 nums…

Linux应急响应——知攻善防应急靶场-Linux(1)

文章目录 查看history历史指令查看开机自启动项异常连接和端口异常进程定时任务异常服务日志分析账户排查总结 靶场出处是知攻善防 Linux应急响应靶机 1 前景需要&#xff1a; 小王急匆匆地找到小张&#xff0c;小王说"李哥&#xff0c;我dev服务器被黑了",快救救我&…

手持弹幕LED滚动字幕屏夜店表白手灯接机微信抖音小程序开源版开发

手持弹幕LED滚动字幕屏夜店表白手灯接机微信抖音小程序开源版开发 专业版 插件版 手持弹幕小程序通常提供多种功能&#xff0c;以便用户在不同的场合如夜店、表白、接机等使用。以下是一些常见的功能列表&#xff1a; 文本输入&#xff1a; 输入要显示的文字内容&#xff0c;…

初中英语优秀作文分析-005How to Plan Our Life Wisely-如何明智地规划我们的生活

PDF格式公众号回复关键字:SHCZYF005 记忆树 1 The “double reduction policy” reduces the burden on students and offers us more spare time than before, but how to plan our life wisely? 翻译 “双减政策”减轻了学生的负担&#xff0c;给了我们比以前更多的业余…

Linux进程概念(二)

上期我们已经学习了进程的基础的内容&#xff0c;已经对进程的基本概念有了了解&#xff0c;知道了进程的组成&#xff0c; 本期我们将以操作为主进一步探讨进程的相关概念。 目录 查看进程 创建进程 查看进程 查看进程主要有两种方式。 ps ajx指令 在当前目录下有名为tes…