carla: recorder
recorder
此功能允许记录和重新显示以前的模拟。所有发生的事件都注册在记录器文件. 有一些高级查询可以跟踪和研究这些事件。
记录
所有数据只在服务器端写入二进制文件。但是,记录器是使用carla.Client.
根据记录文件中包含的数据,在每一帧上更新参与者。当前模拟中出现在录制中的参与者将被移动或重新生成以模拟它。那些没有出现在录音中的人将继续他们的方式,好像什么都没有发生过一样。
重要:
播放结束时,车辆将设置为自动驾驶,但是行人会停车 .
记录器文件包含有关许多不同元素的信息。
- 演员-创建和销毁,边界和触发框。
- 交通信号灯-时间和状态设置更改。
- 车辆-位置和方向,线速度和角速度,光状态和物理控制。
- 行人-位置和方位,线速度和角速度。
- 灯-建筑物、街道和车辆发出的光。
开始录制只需要一个文件名。使用 \
, /
或 :
文件名中会定义一个绝对路径。如果没有详细的路径,文件将保存在CarlaUE4/Saved
.
client.start_recorder("/home/carla/recording01.log")
默认情况下,录像机设置为只存储回放模拟所需的信息。为了保存前面提到的所有信息附加_数据
必须在开始录制时进行配置。
client.start_recorder("/home/carla/recording01.log", True)
注意
附加数据包括:车辆和行人的线速度和角速度、红绿灯时间设置、执行时间、参与者的触发和边界框以及车辆的物理控制。
要停止录音,也很简单。
client.stop_recorder()
注意
据估计,在50个红绿灯和100辆车的情况下,1小时的录制大约需要200MB的大小。
模拟回放
回放可以在模拟过程中的任何点开始。除了日志文件的路径之外,这个方法还需要一些参数。
client.replay_file("recording01.log", start, duration, camera)
参数 | 说明 | 笔记 |
---|---|---|
start | 以秒为单位记录开始模拟的时间。 | 如果为阳性,时间将从录音开始算起。 如果为负,则从末尾开始考虑。 |
duration | 播放秒数。所有录制都是0。 | 播放结束时,车辆将设置为自动驾驶,行人将停止。 |
camera | 摄影机将聚焦的演员的ID。 | 设置为 zero 让观众*活动 |
设置时间因子
时间因素将决定播放速度。它可以随时更改而不停止播放。
client.set_replayer_time_factor(2.0)
Parameter | Default | Fast motion | Slow motion |
---|---|---|---|
time_factor |
1.0 | >1.0 | <1.0 |
重要:
If time_factor>2.0
, the actors' position interpolation is disabled and just updated. Pedestrians' animations are not affected by the time factor.
录制的文件
可以使用简单的API调用检索记录的详细信息。默认情况下,它只检索注册了事件的帧。设置参数全部显示
每一帧都会返回所有信息。有关如何存储数据的详细信息,请参阅参考记录器 .
# Show info for relevant frames
print(client.show_recorder_file_info("recording01.log"))
-
开场白记录模拟的地图、日期和时间。
-
帧信息任何可能发生的事件,如演员产卵或碰撞。它包含演员的ID和一些附加信息。
-
结束信息记录的帧数和总时间
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
查询
碰撞
车辆必须具有碰撞探测器附加到记录碰撞。这些可以通过使用参数来过滤参与碰撞的参与者的类型来进行查询。例如,h
确定参与者role_name = hero
,通常分配给用户管理的车辆。有一组特定的参与者类型可用于查询。
- h = Hero
- v = Vehicle
- w = Walker
- t = Traffic light
- o = Other
- a = Any
注意
The manual_control.py
script assigns role_name = hero
for the ego vehicle.
冲突查询需要两个标志来过滤冲突。任何物体和其他物体之间的碰撞都会显示出来。
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
重要:
As it is the hero
or ego
vehicle who registers the collision, this will always be Actor 1
.
通过使用记录器并在事件发生前几秒将其设置,可以再现碰撞。
client.replay_file("col2.log", 13, 0, 122)
# 有问题请联系微信:814565668
在本例中,回放显示了这一点。
被阻止的演员
检测在录制过程中卡住的车辆。如果一个演员在一段时间内没有移动一个最小的距离,就被认为是被阻止的。此定义由用户在查询期间进行。
print(client.show_recorder_actors_blocked("recording01.log", min_time, min_distance))
Parameter | Description | Default |
---|---|---|
min_time |
Minimum seconds to move `min_distance`. | 30secs. |
min_distance |
Minimum centimeters to move to not be considered blocked. | 10cm. |
注意
有时车辆在红绿灯前停留的时间比预期的要长。
以下示例认为车辆在60秒内移动小于1米时被阻塞。
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
The vehicle 173
was stopped for 336
seconds at time 36
seconds. Reenact the simulation a few seconds before the second 36
to check it out.
client.replay_文件(“col3.log” , thirty-four , zero , one hundred and seventy-three )
python脚本示例
中提供的一些脚本PythonAPI/examples
方便使用recorder
- 启动_recording.py开始录制。可以设置录制的持续时间,并且可以在录制开始时生成演员。
参数 | 说明 |
---|---|
-f |
文件名 |
-n (可选) |
产卵的载具。默认值为10。 |
-t (可选) |
录制的持续时间 |
- 启动_replaying.py开始播放录音。可以设置开始时间、持续时间和要跟随的参与者。
参数 | 说明 |
---|---|
-f |
文件名 |
-s (可选) |
开始时间。默认值为10。 |
-d (可选) |
持续时间。默认值为“全部”。 |
-c (可选) |
我想让演员跟着我 |
- 显示_recorder_file_info.py显示录制文件中的所有信息。默认情况下,它只显示记录事件的帧。但是,它们都可以显示出来。
参数 | 说明 |
---|---|
-f |
文件名 |
-s (可选) |
显示所有详细信息的标志。 |
-
显示_recorder_collisions.py显示类型的两个参与者标志之间记录的冲突A和B .
-t = vv
会显示车辆之间的所有碰撞。
参数 | 说明 |
---|---|
-f |
文件名 |
-t |
Flags of the actors involved.h = herov = vehiclew = walkert = traffic lighto = othera = any |
- show_recorder_actors_blocked.py列出被*的车辆。当演员在一定时间内没有移动一个最小距离时,就被认为是被阻挡的。
参数 | 说明 |
---|---|
-f |
文件名 |
-t (可选) |
时间走了-d 在被认为被*之前 |
-d (可选) |
移动距离不被视为阻塞。 |
上一篇: 怎样引入外部css样式表
下一篇: Makefile语法归纳汇总
推荐阅读
-
视频音频录制工具WM Recorder破解及安装图文教程
-
讯连科技 Screen Recorder 屏幕录像工具安装激活图文教程(含下载)
-
Total Recorder软件怎么使用?Total Recorder图文使用教程
-
Apowersoft Streaming Video Recorder激活安装图文教程
-
AnyMP4 Screen Recorder(屏幕录像机软件)如何激活 AnyMP4 Screen Recorder安装及激活
-
recorder.js 基于Html5录音功能的实现
-
CARLA(an open urban driving simulator)
-
Recorder-List
-
carla使用记录
-
carla获取rpm