10-记录器

news2024/12/23 0:35:31

    这个功能允许记录和重现以前的模拟。所有发生的事件都记录在记录器文件 recorder file中。

    1 记录

    所有数据仅在服务器端以二进制文件的形式写入。但是,记录器是使用 carla.Client管理的。

    注意:在回放结束时,车辆将被设置为自动驾驶,但行人会停下来。

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

    actor。创建和销毁,边界和触发框。

    交通灯。状态变化和时间设置。

    车辆。位置和方向,线速度和角速度,灯光状态和物理控制。

    行人。位置和方向,线速度和角速度。

    灯光。来自建筑物、街道和车辆的灯光状态。

    要开始录制,只需要一个文件名。在文件名中使用\、/或:再加上绝对路径。如果未指定详细路径,则保存在“CarlaUE4/ saved”中。

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

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

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

    注意:additional_data包括:车辆和行人的线速度和角速度,交通灯时间设置,执行时间,演员车的触发器和边界框,以及车辆的物理控制。

    需要停止记录时使用以下函数:

client.stop_recorder()

2 仿真回放

    回放可以在仿真过程中的任何点开始。除了日志文件的路径外,该方法还需要一些参数。

client.replay_file("recording01.log", start, duration, camera)
参数描述注意事项
start以秒为单位记录仿真开始的时间如果是正值,则从录制开始就考虑时间。
如果是否定的,将从最后录制考虑时间。
duration播放秒数。0是播放全部记录。在回放结束时,车辆将被设置为自动驾驶,行人将停下来。
camera摄像机将聚焦的演员的ID。将其设置为0,观测者视角就可以自由移动。

2.1 设置时间因子
    时间因素将决定播放速度。

client.set_replayer_time_factor(2.0)
参数默认加速减速
time_factor1.0>1.0<1.0

    如果time_factor>2.0,则禁用演员车的位置插值,只更新。行人的动画不受时间因素的影响。

    当时间因子约为20倍时,观察交通流较为方便。

3 记录文件

    可以使用简单的API调用来检索记录的详细信息。默认情况下,它只检索那些注册了事件的帧。设置参数show_all将返回每一帧的所有信息。有关如何存储数据的细节在记录仪的参考资料recorder's reference中有详细说明。

# Show info for relevant frames
print(client.show_recorder_file_info("recording01.log"))
Version: 1
Map: Town05
Date: 02/21/19 10:46:20

Frame 1 at 0 seconds
 Create 2190: spectator (0) at (-260, -200, 382.001)
 Create 2191: traffic.traffic_light (3) at (4255, 10020, 0)
 Create 2192: traffic.traffic_light (3) at (4025, 7860, 0)
 ...
 Create 2258: traffic.speed_limit.90 (0) at (21651.7, -1347.59, 15)
 Create 2259: traffic.speed_limit.90 (0) at (5357, 21457.1, 15)

Frame 2 at 0.0254253 seconds
 Create 2276: vehicle.mini.cooperst (1) at (4347.63, -8409.51, 120)
  number_of_wheels = 4
  object_type =
  color = 255,241,0
  role_name = autopilot
... 
Frame 2350 at 60.2805 seconds
 Destroy 2276

Frame 2351 at 60.3057 seconds
 Destroy 2277
...

Frames: 2354
Duration: 60.3753 seconds

4 查询

4.1 碰撞

    车辆必须有一个碰撞探测器来记录碰撞。这些都可以查询,使用参数来过滤碰撞中涉及的参与者的类型。例如,h标识role_name = hero的角色,通常分配给由用户管理的车辆。有一组特定的参与者类型可用于查询。

  • h = Hero
  • v = Vehicle
  • w = Walker
  • t = Traffic light
  • o = Other
  • a = Any

    注意:manual_control.py脚本为ego车辆分配role_name = hero。

    碰撞查询需要两个标志来过滤冲突。下面的例子将显示车辆和任何其他物体之间的碰撞。

print(client.show_recorder_collisions("recording01.log", "v", "a"))

    输出总结了碰撞的时间,以及涉及的参与者的类型、ID和描述。

Version: 1
Map: Town05
Date: 02/19/19 15:36:08

    Time  Types     Id Actor 1                                 Id Actor 2
      16   v v     122 vehicle.yamaha.yzf                     118 vehicle.dodge_charger.police
      27   v o     122 vehicle.yamaha.yzf                       0

Frames: 790
Duration: 46 seconds

    由于记录碰撞的是hero或ego车辆,因此它将始终是Actor 1。

    可以通过使用记录器并在事件发生前几秒设置它来重现碰撞。

client.replay_file("col2.log", 13, 0, 122)

    在这种情况下,回放显示了如下:

4.2 受阻演员车
    检测在录制过程中卡住的车辆。如果一个演员在一定时间内没有移动最小距离,则被视为被阻止。此定义由用户在查询过程中进行。

print(client.show_recorder_actors_blocked("recording01.log", min_time, min_distance))
参数描述默认
min_time移动' min_distance '的最小秒数。30s
min_distance移动不被认为堵塞的最小距离。10cm

    注意:有时车辆在交通灯前停留的时间比预期的要长。

    下面的例子认为车辆在60秒内移动不到1米时被阻塞。

client.show_recorder_actors_blocked("col3.log", 60, 100)

    输出按持续时间排序,持续时间表示停止被“阻塞”并移动min_distance所需的时间。

Version: 1
Map: Town05
Date: 02/19/19 15:45:01

    Time     Id Actor                                 Duration
      36    173 vehicle.nissan.patrol                      336
      75    214 vehicle.chevrolet.impala                   295
     302    143 vehicle.bmw.grandtourer                     67

Frames: 6985
Duration: 374 seconds

    173号车在36秒时被停了336秒。在36秒前几秒可以进行回放查看。

client.replay_file("col3.log", 34, 0, 173)

5 示例python脚本

    PythonAPI/示例中提供的一些脚本有助于使用记录器。
    start_recording.py文件可以设置录制的持续时间,并且可以在开始时生成演员车。

参数描述
-f文件名
-n (可选)车辆生成。默认为10s。
-t (可选)记录多长时间

    start_replaying.py启动记录回放。可以设置开始时间、持续时间和要跟踪的演员车。

参数描述
-f文件名
-s (可选)开始时间。默认值是10。
-d (可选)持续时间。默认就是从开始时间播放全部记录的内容。
-c (可选)所要跟踪演员车的id

    show_recorder_file_info.py显示记录文件中的所有信息。默认情况下,它只显示记录事件的帧。

参数描述
-f文件名
-s (可选)标记以显示所有细节。

    show_recorder_collisions.py显示了A类和b类角色的两个标志之间记录的碰撞。-t = vv将显示车辆之间的所有碰撞。

参数描述
-f文件名
-t所有场景中角色类型的标志位
h = hero
v = vehicle
w = walker
t = traffic light
o = other
a = any

    show_recorder_actors_blocked.py列出了被认为被阻塞的车辆。当演员车在一定时间内没有移动最小距离时,被认为是受阻的。

参数描述
-f文件名
-t (可选)移动到指定距离所用的时间(阻塞)
-d (可选)移动到不被认为被阻塞的距离。

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

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

相关文章

强化学习和QLearning及GAN到底是什么关系啊

强化学习&#xff08;Reinforcement Learning&#xff09;、Q-Learning 和生成对抗网络&#xff08;GANs&#xff09;是机器学习中的三个不同概念&#xff0c;它们虽然有一些交叉&#xff0c;但本质上是针对不同问题的技术方法。下面我来详细解释它们之间的关系和区别&#xff…

leetcode每日一题day22(24.10.2)——准时到达的列车最小时速

思路&#xff1a;这种在有约束条件情况下&#xff0c;求最值或最符合要求的情况&#xff0c;首先是很容易想到&#xff0c;从时速为1开始往后找找到满足条件就输出&#xff0c;但这无疑工程量很大&#xff0c;每种可能的速度都要对列车数组进行遍历&#xff0c; 时间复杂度为C…

链表Set_LinkList(并集)

并集是把两个集合合并&#xff0c;去除重复元素后组成的集合。 通过键盘输入将两个集合保存在链表A和链表B中&#xff0c;再创建一个链表C用于保存集合A、B的并集&#xff0c;将链表C打印输出。 提示&#xff1a; 1.相对于上一题&#xff08;链表Set_LinkList&#xff08;建立&…

java 微服务 端口冲突 redis虚拟磁盘满 nacos挂

java 微服务 端口冲突 哥 排除法呀 什么卸载软件QAQ netstat -ano | findstr :48080 输这个呀 然后 taskkill /PID 1234 /F redis虚拟磁盘满 导致 假死 挂了 nacos 挂了重启 nacosrun.bat startup -m standalone

facebook受众选择设置策略的最佳方式

在进行Facebookguanggao投放时&#xff0c;受众的选择是一个至关重要的步骤。正确的受众选择不仅能够帮助我们更好地定位目标用户&#xff0c;还能显著提高guanggao的转化率和投资回报率&#xff08;ROI&#xff09;。然而&#xff0c;受众选择的数量和范围同样是需要认真考虑的…

QtDesign预览的效果与程序运行的结果不一致的解决方法

存在的问题 使用Qt designer软件设计出来的界面&#xff0c;与转换成python程序运行出来的结果不一致&#xff0c;具体看下图 Qt designer预览结果 程序运行出来的结果 原因分析 我自己的电脑是2560*1600分辨率的屏幕&#xff0c;采用的是200%的缩放比例&#xff0c;出现这种…

虚拟机没有网络怎么解决

CentOS7为例 进入虚拟网络编辑器 1.更改设置 2.选中NAT模式点击3点击移除网络 4添加网络&#xff0c;随便选一个 5.点开NAT设置&#xff0c;记住网关 6.DHCP设置&#xff0c;注意虚拟机设置ip必须在起始ip和结束ip范围内 进入虚拟机网络适配器&#xff0c;自定义选中第4步操作…

Tailwind Css的使用

1.Tailwind Css是什么 官网解释&#xff1a;Tailwind CSS 的工作原理是扫描所有 HTML 文件、JavaScript 组件以及任何 模板中的 CSS 类&#xff08;class&#xff09;名&#xff0c;然后生成相应的样式代码并写入 到一个静态 CSS 文件中。 我的理解是利用Tailwind CSS 提供的…

Element-快速入门

什么是 Element 在现代前端开发中&#xff0c;组件化的思想日益盛行&#xff0c;Element组件库作为一款流行的UI组件库&#xff0c;特别适用于基于Vue.js的项目&#xff0c;它为开发者提供了丰富的组件和良好的开发体验。 想要使用Element的组件库&#xff0c;我们需要完成下面…

基于opencv的人脸闭眼识别疲劳监测

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

基于函数计算FC 部署 ComfyUI实现AI生图 的优势

基于函数计算FC 部署 ComfyUI实现AI生图 的优势 部署ComfyUI实现AI生图使用函数计算FC 一键部署ComfyUI 绘画平台的优势有哪些&#xff1f; 在文章开始之前&#xff0c;先来看一下基于函数计算FC 部署 ComfyUI实现AI生图 的大概步骤&#xff0c;整个基础部署操作比较简单。即便…

《Programming from the Ground Up》阅读笔记:p181-p216

《Programming from the Ground Up》学习第10天&#xff0c;p181-p216总结&#xff0c;总计34页。 一、技术总结 第10章主要讲计算机是如何计算的&#xff0c;如十进制、二进制、八进制、十六进制以及浮点数和负数的表示。属于比较基础的内容&#xff0c;如果有一定基础&…

ai免费写论文是原创吗?分享5款ai写作免费一键生成助手

在当今的学术研究和写作领域&#xff0c;AI技术的应用越来越广泛&#xff0c;尤其是在论文写作方面。许多AI写作工具声称能够一键生成高质量的论文&#xff0c;并且保证原创性。然而&#xff0c;这些工具是否真的能生成完全原创的论文&#xff0c;仍然是一个值得探讨的问题。 …

【函数】4.函数的单调性

本节课没有笔记示例&#xff0c;自己做好笔记&#xff01; 复合函数的单调性 最值 没讲 提醒我

【引领未来办公新风尚 —— 搭贝臻选,您的全能企业管理神器】

在这个瞬息万变的商业时代&#xff0c;每一分效率的提升都可能是超越竞争的关键。搭贝低代码平台匠心打造的“搭贝臻选”应用&#xff0c;集CRM营销管理、销售管理、采购管理、库存管理、财务管理、工单管理、人事管理及办公OA于一体&#xff0c;全方位赋能您的企业&#xff0c…

单片机闪存,闪存缓冲取,闪存延迟

一、启用闪存预取缓冲区&#xff08;FLASH_PrefetchBufferCmd (FLASH_PrefetchBuffer_Enable);&#xff09; 闪存预取缓冲区的作用&#xff1a; 在微控制器中&#xff0c;闪存是用于存储程序代码和常量数据的非易失性存储器。当微控制器执行程序时&#xff0c;需要从闪存中读取…

响应速度相关知识

在讨论 Android 性能问题的时候&#xff0c;卡顿、响应速度、ANR 这三个性能相关的知识点通常会放到一起来讲&#xff0c;因为引起卡顿、响应慢、ANR 的原因类似&#xff0c;只不过根据重要程度&#xff0c;被人为分成了卡顿、响应慢、ANR 三种&#xff0c;所以我们可以定义广义…

加快rollback事务回滚速度

背景&#xff1a; 运行一个长事务会话SQL&#xff0c;取消运行或者kill会话&#xff0c;回滚时间较长的情况。 影响到其它业务运行&#xff0c;需要尽快回滚的场景。 1.可以通过kill会话对应的操作系统进程&#xff0c;能够使用到并行恢复&#xff0c;会加快回滚速度。&…

汽车宣传动画渲染怎么做?云渲染加速汽车动画渲染

在汽车行业&#xff0c;宣传动画已成为展示新车型和技术创新的重要工具。高质量的渲染不仅能够吸引观众的眼球&#xff0c;还能有效传达汽车的性能和美学。随着技术的发展&#xff0c;云渲染技术为汽车宣传动画的渲染提供了新的可能性&#xff0c;大大提高了渲染效率和质量。 第…

一些零散的和编译相关的语法/flash-attn涉及语法扫盲

#pragma once&#xff1a;一个编译指令&#xff0c;用于防止头文件被多次包含。当编译器遇到#pragma once时&#xff0c;它会确保该头文件在一个编译单元&#xff08;一个.cpp文件及其包含的所有文件&#xff09;中只会被包含一次。即使该文件被间接包含多次&#xff0c;编译器…