carla-recorder录像机

作者: wangafu | 来源:发表于2020-04-13 08:51 被阅读0次

录像机

crala的这个特性使得可以使用它来记录或者复现之前的仿真场景,所有发生的事件都被记录在recoder file之中。

recording 记录

所有的数据都写在服务器端的二进制文件里,但recoder是通过carla.client来管理的。
重要 直至回访截止,车辆都会被设置成自动驾驶模式,但是行人会停止。
recoder file 包括了与“角色”相关的信息:

  • “角色”的创建和毁灭
  • 交通灯的状态变换
  • 车辆和行人的位置和角度
    要开始recorder的话,你只需要指定路径和文件名就可以了,如果不指定的话,文件会默认存放在CarlaUE4/Saved
client.start_recorder("/home/carla/recording01.log")

停止recorder也很简单粗暴:

client.stop_recorder()

注意 估计来说,50个交通灯和100辆车记录一个小时大概需要200M的磁盘空间。

仿真回放

回放可以在仿真过程中的任何时间开启,除了需要log file的路径外,这种方法也需要一些其他参数。

client.replay_file("recording01.log", start, duration, camera)
参数 描述 注意
start 记录开始仿真的时间,单位为秒 如果为正值,从记录的开始算起,如果单位为负值,则从记录的结束往前算
duration 回放的时长,0则是代表整个全部 直至回访截止,车辆都会被设置成自动驾驶模式,但是行人会停止。
camera 摄像头会聚焦的“角色”ID 设置为0可以让监视器自由移动
设置时间元素 time factor

time factor会决定回访的速度,它可以在不停止回复的情况下随时进行更改。

client.set_replayer_time_factor(2.0)
参数 默认 最快 最慢
time_factor 1.0 >1.0 <1.0

重要 如果time_factor>2.0,“角色”的位置插值是不可用的,并只能更新。行人的的动画则不受time factor的影响。

录像文件

记录的细节可以通过使用简单的API调用来检索,默认的话,只检索注册了事件的帧,将参数设定为show_all会返回所有帧的所有信息。关于存储数据的细节请参阅这里.

# Show info for relevant frames
print(client.show_recorder_file_info("recording01.log"))
  • **Opening information ** 地图、数据和仿真被记录的时间
  • Frame information 任何可能发生的事件,例如“角色”的产生或碰撞。它包含了“角色”的ID和附加信息。
  • Closing information 帧数和记录的所有时间。
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

Queries 查询

碰撞

车辆必须有与之绑定的collision dectector来记录碰撞。这是可以被查询的,使用参数可以过滤碰撞相关“角色”的类型,例如:h确定role_name = hero的“角色”,通常与用户管理的车辆是相关的。下面是一些查询可用的具体的“角色”类型设置。

  • h = Hero
  • v = Vehicle
  • w = Walker
  • t = Traffic light
  • o = Other
  • a = Any
    注意 manual_sontrol.py脚本为ego车辆指定了role_name = hero.
    碰撞查询需要2个参数来过滤碰撞,写面的示例将展示车辆之间和其他任何物体的碰撞。
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

重要 由于是heroego来注册碰撞,所以它通常会是Actor 1
碰撞可以通过使用recorder并设定时间发生前的时间来复现。

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

在本案例中,回放如下。


image

Blocked actor 被堵“角色”

检测记录中车辆的拥堵,“角色”的拥堵是用过在一定时间下没有移动超过一定距离来定义的。这种定义使用者可以在查询时来决定。

print(client.show_recorder_actors_blocked("recording01.log", min_time, min_distance))
Parameter 描述 默认
min_time 移动最小距离的最小时间 30s
min_distance 不被认为是拥堵所需移动的最小距离 10cm

注意 有些时候车俩在红绿等前的等待时间可能比预期要久,也可能会被认为是拥堵。
下面的例子假设车辆在60s内移动不超过1m即为拥堵。

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

输出是按持续时间来分类的,即是车辆在拥堵状态下移动最小距离耗费的时间。

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)
image

python脚本示例

官方在PythonAPI/examples路径下提供了一些脚本,可以帮助recorder的使用。

  • start_recording.py 可以启动recorder,记录的持续时间可以被设置,并且可以在开始的时候产生“角色”。
参数 描述
-f 文件名称
-n(可选) 产生车辆,默认是10
-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 = vehiclew = walkert = traffic lighto = othera = any
  • show_recorder_actors_blocked.py 展示被认为是拥堵的车辆,车辆在一定时间内没有移动超过一定距离就被认定为拥堵。
参数 描述
-f 文件名称
-t(可选) 在被认为是拥堵前的时间
-d(可选) 不被认为是拥堵所需移动的距离

后话

现在是时候进行一下实验了,使用recorder去回放一个仿真过程,追踪发生的时间,并试着修改一下源码看下效果,有神马问题都可以去carla的论坛提问。

https://carla.readthedocs.io/en/latest/adv_recorder/

相关文章

  • carla-recorder录像机

    录像机 crala的这个特性使得可以使用它来记录或者复现之前的仿真场景,所有发生的事件都被记录在recoder f...

  • 单个摄像头添加多个录像机(海康威视)

    1、 主录像机正常添加摄像机 在此录像机上,只需按照常规步骤添加好即可。 2、辅录像机B采用RTSP方式添加 2...

  • 录像机语言

    睡前娃躺着跷二郎腿,我说:我看到你把左腿放在右腿上。娃换右腿搭左腿上,我说:我看到你右腿搭在左腿上。娃又把右腿搭床...

  • 往事录像机

    12.29 10:50 刚从酒吧往寝室的路上,午夜时分,浓浓的夜色弥漫在两排居民楼间狭窄的小道里,一切都已睡去,静...

  • 如何批量实现远程视频监控?不改路由设置、一次操作全部搞定!

    实现视频监控设备的远程访问,使用DDNS是方式之一。不过,手头上有大量监控、没有录像机,或者不止一个录像机怎么办?...

  • 三款录屏视频神器

    1.KK录像机 kk录像机是一款简单实用的录像软件,包括游戏录制、桌面录制、视频录制。适用于任何一款游戏,支持窗口...

  • 安防监控施工规范以及注意事项详解!

    设备安装阶段,硬盘录像机及摄像机的安装小细节: · 硬盘录像机在安装硬盘要先做初始化,调试安装完毕后,需对各种功能...

  • 榜样5-5

    今天要讲的就是什么叫做模范?看得见的才是模范,看不见的,永远都不是模范。我们之前讲了录像机,录像机是我要录东西,我...

  • 2019.02.15

    1.摄像头调试 地址204的摄像头,到231视频录像机,然后录像机到服务器上50.68。在服务器68上进行更新视频...

  • 日精进596-孩子是一台录像机

    2022年5月10日,周二,晴 今天分享的主题是:孩子是一台录像机。 从一定程度来说,孩子是复印件,是录像机,父母...

网友评论

    本文标题:carla-recorder录像机

    本文链接:https://www.haomeiwen.com/subject/ntulmhtx.html