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

10-记录器

    这个功能允许记录和重现以前的模拟。所有发生的事件都记录在记录器文件 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.kler.cn/news/339951.html

相关文章:

  • 高精度分板机主轴4033AC气动自动换刀的优势特点
  • LSTM-Transformer时间序列预测(单输入单预测)——基于Pytorch框架
  • java家政预约上门系统源码,家政服务平台源码,基于SpringBoot框架,数据库使用MySQL,界面渲染采用Thymeleaf技术开发
  • 文件防泄密措施措施有哪些?5种文件防泄密措施等你体验!【小白成长篇!】
  • uniapp使用Vue3组合式,如何进行Vue模块自动导入
  • 初识Linux · 自主Shell编写
  • SpringBoot框架:服装生产管理的智能助手
  • Electron构建桌面应用程序,服务于项目的自主学习记录(持续更新...
  • 美团餐馆预订管理信息系统--课程设计李冬梅
  • 【计算机网络 - 基础问题】每日 3 题(三十)
  • 算法【更多二维动态规划题目】
  • vite学习教程03、vite+vue2打包配置
  • 如何在银河麒麟服务器中获取关键日志信息
  • wordpress在页面中调用另外一个页面的内容
  • 怎么将手机备忘录传送至电脑
  • 阿巴阿巴阿巴阿巴阿巴阿巴
  • 【SQL学习笔记】
  • 通过MySQL Workbench 将 SQL Server 迁移到GreatSQL
  • Cloud-Edge-Terminal Collaborative AIGC for Autonomous Driving
  • Nginx跳转模块之location与rewrite