CARLA
Loading...
Searching...
No Matches
CarlaRecorder.h
Go to the documentation of this file.
1// Copyright (c) 2026 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#pragma once
8
9// #include "GameFramework/Actor.h"
10#include <fstream>
11
28#include "CarlaRecorderFrames.h"
29#include "CarlaRecorderInfo.h"
31#include "CarlaRecorderQuery.h"
32#include "CarlaRecorderState.h"
37#include "CarlaReplayer.h"
39
40#include "CarlaRecorder.generated.h"
41
42class AActor;
43class UCarlaEpisode;
45class UCarlaLight;
48
49enum class CarlaRecorderPacketId : uint8_t
50{
51 FrameStart = 0,
58 State,
75 Weather,
76
77 // Multi-GPU frame data (SEND_FRAME) only; never written to .log files. The
78 // values are fixed, see LibCarla/source/carla/multigpu.
89};
90
91/// Recorder for the simulation
92UCLASS()
93class CARLA_API ACarlaRecorder : public AActor
94{
95 GENERATED_BODY()
96
97public:
98
99 ACarlaRecorder(void);
100 ACarlaRecorder(const FObjectInitializer &InObjectInitializer);
101
102 // enable / disable
103 bool IsEnabled(void)
104 {
105 return Enabled;
106 }
107 void Enable(void);
108
109 void Disable(void);
110
111 // start / stop
112 std::string Start(
113 std::string Name,
114 FString MapName,
115 bool AdditionalData = false,
116 bool StopReplayer = true);
117
118 void Stop(void);
119
120 void Clear(void);
121
122 void Write(double DeltaSeconds);
123
124 // events
125 void AddEvent(const CarlaRecorderEventAdd &Event);
126
127 void AddEvent(const CarlaRecorderEventDel &Event);
128
129 void AddEvent(const CarlaRecorderEventParent &Event);
130
131 void AddCollision(AActor *Actor1, AActor *Actor2);
132
133 void AddPosition(const CarlaRecorderPosition &Position);
134
135 void AddWeather(const CarlaRecorderWeather &Weather);
136
137 void AddState(const CarlaRecorderStateTrafficLight &State);
138
139 void AddAnimVehicle(const CarlaRecorderAnimVehicle &Vehicle);
140
141 void AddAnimVehicleWheels(const CarlaRecorderAnimWheels &VehicleWheels);
142
143 void AddAnimWalker(const CarlaRecorderAnimWalker &Walker);
144
145 void AddAnimBiker(const CarlaRecorderAnimBiker &Biker);
146
147 void AddLightVehicle(const CarlaRecorderLightVehicle &LightVehicle);
148
149 void AddEventLightSceneChanged(const UCarlaLight* Light);
150
151 void AddKinematics(const CarlaRecorderKinematics &ActorKinematics);
152
153 void AddBoundingBox(const CarlaRecorderActorBoundingBox &ActorBoundingBox);
154
155 void AddTriggerVolume(const ATrafficSignBase &TrafficSign);
156
157 void AddPhysicsControl(const ACarlaWheeledVehicle& Vehicle);
158
159 void AddTrafficLightTime(const ATrafficLightBase& TrafficLight);
160
161 void AddActorBones(FCarlaActor *CarlaActor);
162
163 void AddVehicleDoor(const ACarlaWheeledVehicle& Vehicle, const EVehicleDoor SDoors, bool bIsOpen);
164
165 void AddDoorVehicle(const CarlaRecorderDoorVehicle &DoorVehicle);
166
167 // set episode
168 void SetEpisode(UCarlaEpisode *ThisEpisode)
169 {
170 Episode = ThisEpisode;
171 Replayer.SetEpisode(ThisEpisode);
172 }
173
174 void CreateRecorderEventAdd(
175 uint32_t DatabaseId,
176 uint8_t Type,
177 const FTransform &Transform,
178 FActorDescription ActorDescription);
179
180 // replayer
182 {
183 return &Replayer;
184 }
185
186 // queries
187 std::string ShowFileInfo(std::string Name, bool bShowAll = false);
188 std::string ShowFileCollisions(std::string Name, char Type1, char Type2);
189 std::string ShowFileActorsBlocked(std::string Name, double MinTime = 30, double MinDistance = 10);
190
191 // replayer
192 std::string ReplayFile(
193 std::string Name, double TimeStart, double Duration,
194 uint32_t FollowId, const FTransform& Offset, bool ReplaySensors, bool ReplayWeather,
195 std::string MapOverride);
196 void SetReplayerTimeFactor(double TimeFactor);
197 void SetReplayerIgnoreHero(bool IgnoreHero);
198 void SetReplayerIgnoreSpectator(bool IgnoreSpectator);
199 void StopReplayer(bool KeepActors = false);
200
201 void Ticking(float DeltaSeconds);
202
203private:
204
205 bool Enabled; // enabled or not
206
207 // enabling this records additional data (kinematics, bounding boxes, etc)
208 bool bAdditionalData = false;
209
210 uint32_t NextCollisionId = 0;
211
212 // files
213 std::ofstream File;
214
215 UCarlaEpisode *Episode = nullptr;
216
217 bool bFirstTick = true;
218
219 // structures
244
245 // replayer
247
248 // query tools
250
251 void AddExistingActors(void);
252 void AddExistingWeather(void);
253 void AddActorPosition(FCarlaActor *CarlaActor);
254 void AddWalkerAnimation(FCarlaActor *CarlaActor);
256 void AddVehicleAnimation(FCarlaActor *CarlaActor);
257 void AddVehicleWheelsAnimation(FCarlaActor *CarlaActor);
258 void AddTrafficLightState(FCarlaActor *CarlaActor);
259 void AddVehicleLight(FCarlaActor *CarlaActor);
260 void AddActorKinematics(FCarlaActor *CarlaActor);
261 void AddActorBoundingBox(FCarlaActor *CarlaActor);
262};
CarlaRecorderPacketId
EVehicleDoor
Type of door to open/close.
Recorder for the simulation.
CarlaRecorderEventsAdd EventsAdd
bool IsEnabled(void)
CarlaRecorderTrafficLightTimes TrafficLightTimes
CarlaRecorderPhysicsControls PhysicsControls
CarlaRecorderLightScenes LightScenes
CarlaRecorderAnimBikers Bikers
void AddBikerAnimation(FCarlaActor *CarlaActor)
CarlaRecorderActorBoundingBoxes BoundingBoxes
CarlaReplayer * GetReplayer(void)
CarlaRecorderLightVehicles LightVehicles
CarlaRecorderVisualTime VisualTime
CarlaRecorderWeathers Weathers
CarlaRecorderPlatformTime PlatformTime
CarlaRecorderActorTriggerVolumes TriggerVolumes
CarlaReplayer Replayer
CarlaRecorderInfo Info
CarlaRecorderWalkersBones WalkersBones
CarlaRecorderQuery Query
std::ofstream File
CarlaRecorderEventsParent EventsParent
CarlaRecorderCollisions Collisions
CarlaRecorderActorsKinematics Kinematics
CarlaRecorderPositions Positions
CarlaRecorderAnimWalkers Walkers
CarlaRecorderAnimVehicleWheels Wheels
CarlaRecorderStates States
CarlaRecorderEventsDel EventsDel
void SetEpisode(UCarlaEpisode *ThisEpisode)
CarlaRecorderFrames Frames
CarlaRecorderAnimVehicles Vehicles
CarlaRecorderDoorVehicles DoorVehicles
Base class for CARLA wheeled vehicles.
A view over an actor and its properties.
Definition CarlaActor.h:25
A simulation episode.
A description of a Carla Actor with all its variation.