CARLA
FrameData.h
Go to the documentation of this file.
1 // Copyright (c) 2022 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 
28 
29 #include <sstream>
30 
31 class UCarlaEpisode;
32 class FCarlaActor;
33 
35 {
36  // structures
58 
59  #pragma pack(push, 1)
60  struct Header
61  {
62  char Id;
63  uint32_t Size;
64  };
65  #pragma pack(pop)
66 
67 public:
68 
69  void SetEpisode(UCarlaEpisode* ThisEpisode) {Episode = ThisEpisode;}
70 
71  void GetFrameData(UCarlaEpisode *ThisEpisode, bool bAdditionalData = false, bool bIncludeActorsAgain = false);
72 
73  void PlayFrameData(UCarlaEpisode *ThisEpisode, std::unordered_map<uint32_t, uint32_t>& MappedId);
74 
75  void Clear();
76 
77  void Write(std::ostream& OutStream);
78  void Read(std::istream& InStream);
79 
80  // record functions
82  uint32_t DatabaseId,
83  uint8_t Type,
84  const FTransform &Transform,
85  FActorDescription ActorDescription,
86  bool bAddOtherRelatedInfo = true);
87  void AddEvent(const CarlaRecorderEventAdd &Event);
88  void AddEvent(const CarlaRecorderEventDel &Event);
89  void AddEvent(const CarlaRecorderEventParent &Event);
90 
91 private:
92  void AddCollision(AActor *Actor1, AActor *Actor2);
96  void AddAnimVehicleWheels(const CarlaRecorderAnimWheels &VehicleWheels);
97  void AddAnimWalker(const CarlaRecorderAnimWalker &Walker);
98  void AddAnimBiker(const CarlaRecorderAnimBiker &Biker);
99  void AddLightVehicle(const CarlaRecorderLightVehicle &LightVehicle);
100  void AddEventLightSceneChanged(const UCarlaLight* Light);
101  void AddKinematics(const CarlaRecorderKinematics &ActorKinematics);
102  void AddBoundingBox(const CarlaRecorderActorBoundingBox &ActorBoundingBox);
103  void AddTriggerVolume(const ATrafficSignBase &TrafficSign);
104  void AddPhysicsControl(const ACarlaWheeledVehicle& Vehicle);
106 
107  void AddActorPosition(FCarlaActor *CarlaActor);
108  void AddWalkerAnimation(FCarlaActor *CarlaActor);
109  void AddBikerAnimation(FCarlaActor *CarlaActor);
110  void AddVehicleAnimation(FCarlaActor *CarlaActor);
111  void AddVehicleWheelsAnimation(FCarlaActor *CarlaActor);
112  void AddTrafficLightState(FCarlaActor *CarlaActor);
113  void AddVehicleLight(FCarlaActor *CarlaActor);
114  void AddActorKinematics(FCarlaActor *CarlaActor);
115  void AddActorBoundingBox(FCarlaActor *CarlaActor);
116 
117  void GetFrameCounter();
118 
119  std::pair<int, FCarlaActor*> CreateOrReuseActor(
120  FVector &Location,
121  FVector &Rotation,
122  FActorDescription &ActorDesc,
123  uint32_t DesiredId,
124  bool SpawnSensors,
125  std::unordered_map<uint32_t, uint32_t>& MappedId);
126 
127  // replay event for creating actor
128  std::pair<int, uint32_t> ProcessReplayerEventAdd(
129  FVector Location,
130  FVector Rotation,
131  CarlaRecorderActorDescription Description,
132  uint32_t DesiredId,
133  bool bIgnoreHero,
134  bool ReplaySensors,
135  std::unordered_map<uint32_t, uint32_t>& MappedId);
136 
137  // replay event for removing actor
138  bool ProcessReplayerEventDel(uint32_t DatabaseId);
139  // replay event for parenting actors
140  bool ProcessReplayerEventParent(uint32_t ChildId, uint32_t ParentId);
141  // reposition actors
143  CarlaRecorderPosition Pos2, double Per, double DeltaTime);
144  // replay event for traffic light state
146  // set the animation for Vehicles
148  // set the animation for walkers
150  // set the animation for Vehicles Wheels
152  // set the animation for bikers
154  // set the vehicle light
156  // set scene lights
158  // replay finish
159  bool ProcessReplayerFinish(bool bApplyAutopilot, bool bIgnoreHero,
160  std::unordered_map<uint32_t, bool> &IsHero);
161  // set the camera position to follow an actor
162  bool SetCameraPosition(uint32_t Id, FVector Offset, FQuat Rotation);
163  // set the velocity of the actor
164  void SetActorVelocity(FCarlaActor *CarlaActor, FVector Velocity);
165  // set the animation speed for walkers
166  void SetWalkerSpeed(uint32_t ActorId, float Speed);
167  // enable / disable physics for an actor
168  bool SetActorSimulatePhysics(FCarlaActor *CarlaActor, bool bEnabled);
169 
170  void SetFrameCounter();
171 
172  FCarlaActor* FindTrafficLightAt(FVector Location);
173 
174  void AddExistingActors(void);
175 
177 };
bool ProcessReplayerEventParent(uint32_t ChildId, uint32_t ParentId)
Definition: FrameData.cpp:871
void AddExistingActors(void)
Definition: FrameData.cpp:1200
void AddVehicleAnimation(FCarlaActor *CarlaActor)
Definition: FrameData.cpp:384
CarlaRecorderPhysicsControls PhysicsControls
Definition: FrameData.h:55
CarlaRecorderInfo Info
Definition: FrameData.h:37
void ProcessReplayerAnimVehicleWheels(CarlaRecorderAnimWheels Vehicle)
Definition: FrameData.cpp:1004
void AddTriggerVolume(const ATrafficSignBase &TrafficSign)
Definition: FrameData.cpp:546
void AddAnimWalker(const CarlaRecorderAnimWalker &Walker)
Definition: FrameData.cpp:666
void AddEventLightSceneChanged(const UCarlaLight *Light)
Definition: FrameData.cpp:676
CarlaRecorderTrafficLightTimes TrafficLightTimes
Definition: FrameData.h:56
void AddWalkerAnimation(FCarlaActor *CarlaActor)
Definition: FrameData.cpp:465
CarlaRecorderAnimBikers Bikers
Definition: FrameData.h:48
void AddAnimVehicle(const CarlaRecorderAnimVehicle &Vehicle)
Definition: FrameData.cpp:651
CarlaRecorderActorBoundingBoxes BoundingBoxes
Definition: FrameData.h:52
void AddBoundingBox(const CarlaRecorderActorBoundingBox &ActorBoundingBox)
Definition: FrameData.cpp:695
CarlaRecorderActorsKinematics Kinematics
Definition: FrameData.h:51
void ProcessReplayerAnimWalker(CarlaRecorderAnimWalker Walker)
Definition: FrameData.cpp:1062
CarlaRecorderFrames Frames
Definition: FrameData.h:38
void AddVehicleLight(FCarlaActor *CarlaActor)
Definition: FrameData.cpp:503
CarlaRecorderAnimVehicleWheels Wheels
Definition: FrameData.h:46
void AddAnimVehicleWheels(const CarlaRecorderAnimWheels &VehicleWheels)
Definition: FrameData.cpp:656
void Write(std::ostream &OutStream)
Definition: FrameData.cpp:198
void AddActorPosition(FCarlaActor *CarlaActor)
Definition: FrameData.cpp:370
void AddVehicleWheelsAnimation(FCarlaActor *CarlaActor)
Definition: FrameData.cpp:407
geom::Location Location
Definition: rpc/Location.h:14
void SetFrameCounter()
Definition: FrameData.cpp:1162
CarlaRecorderActorTriggerVolumes TriggerVolumes
Definition: FrameData.h:53
UCarlaEpisode * Episode
Definition: FrameData.h:176
void ProcessReplayerLightVehicle(CarlaRecorderLightVehicle LightVehicle)
Definition: FrameData.cpp:1028
A simulation episode.
Definition: CarlaEpisode.h:37
void SetWalkerSpeed(uint32_t ActorId, float Speed)
Definition: FrameData.cpp:1133
void AddPosition(const CarlaRecorderPosition &Position)
Definition: FrameData.cpp:584
CarlaRecorderEventsDel EventsDel
Definition: FrameData.h:40
CarlaRecorderPlatformTime PlatformTime
Definition: FrameData.h:54
void AddLightVehicle(const CarlaRecorderLightVehicle &LightVehicle)
Definition: FrameData.cpp:671
bool SetActorSimulatePhysics(FCarlaActor *CarlaActor, bool bEnabled)
Definition: FrameData.cpp:1147
CarlaRecorderLightScenes LightScenes
Definition: FrameData.h:50
FCarlaActor * FindTrafficLightAt(FVector Location)
Definition: FrameData.cpp:1167
void AddActorBoundingBox(FCarlaActor *CarlaActor)
Definition: FrameData.cpp:532
void GetFrameData(UCarlaEpisode *ThisEpisode, bool bAdditionalData=false, bool bIncludeActorsAgain=false)
Definition: FrameData.cpp:14
void ProcessReplayerAnimBiker(CarlaRecorderAnimBiker Biker)
Definition: FrameData.cpp:1067
CarlaRecorderEventsAdd EventsAdd
Definition: FrameData.h:39
bool ProcessReplayerEventDel(uint32_t DatabaseId)
Definition: FrameData.cpp:857
std::pair< int, uint32_t > ProcessReplayerEventAdd(FVector Location, FVector Rotation, CarlaRecorderActorDescription Description, uint32_t DesiredId, bool bIgnoreHero, bool ReplaySensors, std::unordered_map< uint32_t, uint32_t > &MappedId)
Definition: FrameData.cpp:796
A description of a Carla Actor with all its variation.
void ProcessReplayerAnimVehicle(CarlaRecorderAnimVehicle Vehicle)
Definition: FrameData.cpp:986
CarlaRecorderLightVehicles LightVehicles
Definition: FrameData.h:49
uint32_t ActorId
Definition: ActorId.h:14
void AddKinematics(const CarlaRecorderKinematics &ActorKinematics)
Definition: FrameData.cpp:690
void SetEpisode(UCarlaEpisode *ThisEpisode)
Definition: FrameData.h:69
CarlaRecorderPositions Positions
Definition: FrameData.h:43
void AddTrafficLightTime(const ATrafficLightBase &TrafficLight)
Definition: FrameData.cpp:572
void Clear()
Definition: FrameData.cpp:176
bool ProcessReplayerPosition(CarlaRecorderPosition Pos1, CarlaRecorderPosition Pos2, double Per, double DeltaTime)
Definition: FrameData.cpp:907
void AddState(const CarlaRecorderStateTrafficLight &State)
Definition: FrameData.cpp:646
void AddCollision(AActor *Actor1, AActor *Actor2)
Definition: FrameData.cpp:604
CarlaRecorderEventsParent EventsParent
Definition: FrameData.h:41
bool ProcessReplayerStateTrafficLight(CarlaRecorderStateTrafficLight State)
Definition: FrameData.cpp:963
CarlaRecorderAnimWalkers Walkers
Definition: FrameData.h:47
geom::Rotation Rotation
Definition: rpc/Transform.h:14
CarlaRecorderCollisions Collisions
Definition: FrameData.h:42
void AddActorKinematics(FCarlaActor *CarlaActor)
Definition: FrameData.cpp:515
void AddAnimBiker(const CarlaRecorderAnimBiker &Biker)
Definition: FrameData.cpp:661
void AddTrafficLightState(FCarlaActor *CarlaActor)
Definition: FrameData.cpp:481
bool ProcessReplayerFinish(bool bApplyAutopilot, bool bIgnoreHero, std::unordered_map< uint32_t, bool > &IsHero)
Definition: FrameData.cpp:1081
void AddPhysicsControl(const ACarlaWheeledVehicle &Vehicle)
Definition: FrameData.cpp:564
void Read(std::istream &InStream)
Definition: FrameData.cpp:215
CarlaRecorderStates States
Definition: FrameData.h:44
void PlayFrameData(UCarlaEpisode *ThisEpisode, std::unordered_map< uint32_t, uint32_t > &MappedId)
Definition: FrameData.cpp:69
void AddBikerAnimation(FCarlaActor *CarlaActor)
void SetActorVelocity(FCarlaActor *CarlaActor, FVector Velocity)
Definition: FrameData.cpp:1123
void ProcessReplayerLightScene(CarlaRecorderLightScene LightScene)
Definition: FrameData.cpp:1039
void CreateRecorderEventAdd(uint32_t DatabaseId, uint8_t Type, const FTransform &Transform, FActorDescription ActorDescription, bool bAddOtherRelatedInfo=true)
Definition: FrameData.cpp:294
Base class for CARLA wheeled vehicles.
CarlaRecorderAnimVehicles Vehicles
Definition: FrameData.h:45
std::pair< int, FCarlaActor * > CreateOrReuseActor(FVector &Location, FVector &Rotation, FActorDescription &ActorDesc, uint32_t DesiredId, bool SpawnSensors, std::unordered_map< uint32_t, uint32_t > &MappedId)
Definition: FrameData.cpp:706
void GetFrameCounter()
Definition: FrameData.cpp:700
void AddEvent(const CarlaRecorderEventAdd &Event)
Definition: FrameData.cpp:589
geom::Transform Transform
Definition: rpc/Transform.h:16
CarlaRecorderFrameCounter FrameCounter
Definition: FrameData.h:57
bool SetCameraPosition(uint32_t Id, FVector Offset, FQuat Rotation)
Definition: FrameData.cpp:937
A view over an actor and its properties.
Definition: CarlaActor.h:23