CARLA
 
载入中...
搜索中...
未找到
ActorData.h
浏览该文件的文档.
1// Copyright (c) 2021 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// 包含各种必要的头文件,用于获取不同类型的Actor相关信息、数学向量、车辆控制设置等相关类和结构体的定义
10#include "Actor/ActorInfo.h"
11#include "Math/DVector.h"
20
21// 用于禁用UE4特定的宏定义,可能是为了避免一些预处理器相关的冲突等情况
23// 包含Carla RPC相关的WalkerControl定义,用于处理行人控制相关内容
25// 重新启用UE4特定的宏定义
27
28// 前置声明类,告诉编译器这些类将会在后续被定义,避免编译时找不到类定义的错误,此处只是声明,无需包含其完整头文件
29class UCarlaEpisode;
31class FCarlaActor;
32#pragma once // 指示编译器此头文件被包含一次,防止重复包含
33
34#include "Actor/ActorInfo.h" // 包含Actor信息相关的声明和定义
35#include "Math/DVector.h" // 包含数学向量库,用于表示向量和相关操作
36#include "Carla/Vehicle/AckermannControllerSettings.h" // 包含Ackermann控制器设置的相关声明和定义
37#include "Carla/Vehicle/VehicleAckermannControl.h" // 包含Ackermann控制相关的声明和定义
38#include "Carla/Vehicle/VehicleControl.h" // 包含车辆控制相关的声明和定义
39#include "Carla/Vehicle/VehicleLightState.h" // 包含车辆灯光状态的相关声明和定义
40#include "Vehicle/VehicleInputPriority.h" // 包含车辆输入优先级的相关声明和定义
41#include "Vehicle/VehiclePhysicsControl.h" // 包含车辆物理控制相关的声明和定义
42#include "Carla/Sensor/DataStream.h" // 包含数据流类的相关声明和定义
43#include "Carla/Traffic/TrafficLightState.h" // 包含交通信号灯状态的相关声明和定义
44
45#include <compiler/disable-ue4-macros.h> // 包含关闭UE4宏的头文件,防止宏冲突
46#include <carla/rpc/WalkerControl.h> // 包含行人控制类的相关声明和定义
47#include <compiler/enable-ue4-macros.h> // 包含启用UE4宏的头文件,恢复宏定义
48
49class UCarlaEpisode; // 前向声明CARLA Episode类,用于表示仿真会话
50class UTrafficLightController; // 前向声明交通灯控制器类,用于控制交通灯
51class FCarlaActor; // 前向声明CARLA Actor类,用于表示仿真中的Actor
52
53// FActorData类,作为各种具体Actor数据类的基类,用于存储和操作与Actor相关的通用数据
55{
56public:
57 FDVector Location; // 存储Actor的位置向量
58 // 位置信息,使用FDVector类型表示(具体含义可能根据项目自定义
60
61 // 旋转信息,使用FQuat(四元数)类型来表示Actor的旋转状态
62 FQuat Rotation;
63
64 // 缩放信息,使用FVector表示Actor在各个维度上的缩放比例
65 FVector Scale;
66
67 // 速度信息,用FVector表示Actor在世界坐标系下的线速度
68 FVector Velocity;
69
70 // 角速度信息,初始化为零向量,表示Actor的旋转速度,默认没有旋转速度
71 FVector AngularVelocity = FVector(0,0,0);
72
73 // 布尔值,用于表示是否模拟物理效果,初始化为false,表示默认不模拟物理
74 bool bSimulatePhysics = false;
75
76 // 虚函数,用于记录Actor的相关数据,需要在具体子类中实现,参数为指向FCarlaActor对象和UCarlaEpisode对象的指针
77 virtual void RecordActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode);
78
79 // 虚函数,用于恢复Actor之前记录的数据,同样需要在具体子类中实现,参数含义同RecordActorData函数
80 virtual void RestoreActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode);
81
82 // 虚函数,用于在特定的CarlaEpisode场景中重新生成Actor,参数为CarlaEpisode对象指针和包含Actor信息的FActorInfo对象引用,返回重新生成的AActor对象指针
83 virtual AActor* RespawnActor(UCarlaEpisode* CarlaEpisode, const FActorInfo& Info);
84
85 // 获取本地变换信息(位置、旋转、缩放的组合)的函数,参数为CarlaEpisode对象指针,返回FTransform类型表示的变换信息,此函数被声明为const,表示不会修改对象的内部状态
86 FTransform GetLocalTransform(UCarlaEpisode* CarlaEpisode) const;
87
88 // 虚析构函数,用于确保在派生类对象销毁时正确释放资源,为空实现,具体析构逻辑由派生类按需补充
89 virtual ~FActorData() {};
90 FQuat Rotation; // 存储Actor的旋转四元数
91
92 FVector Scale; // 存储Actor的缩放向量
93
94 FVector Velocity; // 存储Actor的速度向量
95
96 FVector AngularVelocity = FVector(0,0,0); // 存储Actor的角速度,默认值为(0,0,0)
97
98 bool bSimulatePhysics = false; // 指示是否模拟物理行为,默认为false
99
100 virtual void RecordActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode); // 虚函数,用于记录Actor数据
101 virtual void RestoreActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode); // 虚函数,用于恢复Actor数据
102 virtual AActor* RespawnActor(UCarlaEpisode* CarlaEpisode, const FActorInfo& Info); // 虚函数,用于重新生成Actor
103 FTransform GetLocalTransform(UCarlaEpisode* CarlaEpisode) const; // 函数,用于获取Actor的局部变换
104 virtual ~FActorData(){}; // 虚析构函数,确保派生类能正确析构
105};
106// FVehicleData类,继承自FActorData类,用于存储和处理与车辆相关的特定数据
108{
109public:
110 FVehiclePhysicsControl PhysicsControl; // 存储车辆物理控制数据
111 FVehicleControl Control; // 存储车辆控制数据
112 FVehicleAckermannControl AckermannControl; // 存储Ackermann控制数据
113};
114
115 // 车辆物理控制相关的数据,包含车辆物理属性的设置等信息
117
118 // 车辆常规控制相关的数据,例如油门、刹车、转向等控制输入信息
120
121 // 阿克曼转向控制相关的数据,用于特定的车辆转向控制模式(阿克曼转向常用于车辆模型)
123
124 // 布尔值,用于表示阿克曼转向控制是否处于激活状态,初始化为false
126
127 // 阿克曼控制器的设置数据,包含阿克曼转向控制相关的参数配置等信息
129
130 // 车辆灯光状态数据,用于表示车辆各种灯光(如大灯、转向灯等)的开关状态
132
133 // 车辆速度限制,单位可能根据项目设定,此处初始化为30(默认速度限制值)
134 float SpeedLimit = 30;
135
136 // 车辆故障状态信息,使用carla::rpc::VehicleFailureState类型来表示车辆可能出现的各种故障情况
138
139 // 重写基类的RecordActorData函数,用于记录车辆Actor的相关数据,实现特定于车辆的记录逻辑
140 virtual void RecordActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override;
141
142 // 重写基类的RestoreActorData函数,用于恢复车辆Actor之前记录的数据,实现特定于车辆的恢复逻辑
143 virtual void RestoreActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override;
144
145 bool bAckermannControlActive = false; // Ackermann 控制是否激活
146
148
149 FVehicleLightState LightState; // 车辆灯光状态
150
151 float SpeedLimit = 30; // 车辆速度限制,默认为 30
152
153 carla::rpc::VehicleFailureState FailureState; // 车辆故障状态
154
155 virtual void RecordActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override; // 记录车辆数据
156
157 virtual void RestoreActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override; // 恢复车辆数据
158};
159
160// FWalkerData类,继承自FActorData类,用于存储和处理与行人相关的特定数据
162{
163public:
164 // 行人控制相关的数据,包含行人行走、转向等控制信息,类型为carla::rpc::WalkerControl
166
167 // 布尔值,用于表示行人是否处于存活状态,初始化为true,表示默认行人是存活的
168 bool bAlive = true;
169
170 // 重写基类的RecordActorData函数,用于记录行人Actor的相关数据,实现特定于行人的记录逻辑
171 virtual void RecordActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override;
172
173 // 重写基类的RestoreActorData函数,用于恢复行人Actor之前记录的数据,实现特定于行人的恢复逻辑
174 virtual void RestoreActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override;
175
176 carla::rpc::WalkerControl WalkerControl; // 行人控制数据
177
178 bool bAlive = true; // 行人是否存活,默认为 true
179
180 virtual void RecordActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override; // 记录行人数据
181
182 virtual void RestoreActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override; // 恢复行人数据
183};
184
185// FTrafficSignData类,继承自FActorData类,用于存储和处理与交通标志相关的特定数据
187{
188public:
189 // 交通标志的唯一标识符,使用FString类型表示
190 FString SignId;
191
192 // 交通标志对应的Actor类,使用TSubclassOf<AActor>类型表示,用于在运行时动态创建或查找相应的Actor类
193 TSubclassOf<AActor> Model;
194
195 // 交通标志对应的UObject类型的模型,可能用于更具体的资源加载等情况,使用TSubclassOf<UObject>类型表示
196 TSubclassOf<UObject> SignModel;
197
198 // 重写基类的RespawnActor函数,用于在CarlaEpisode场景中重新生成交通标志Actor,实现特定于交通标志的重新生成逻辑
199 virtual AActor* RespawnActor(UCarlaEpisode* CarlaEpisode, const FActorInfo& Info) override;
200
201 // 重写基类的RecordActorData函数,用于记录交通标志Actor的相关数据,实现特定于交通标志的记录逻辑
202 virtual void RecordActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override;
203
204 // 重写基类的RestoreActorData函数,用于恢复交通标志Actor之前记录的数据,实现特定于交通标志的恢复逻辑
205 virtual void RestoreActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override;
206 FString SignId; // 交通标志 ID
207
208 TSubclassOf<AActor> Model; // 标志模型
209
210 TSubclassOf<UObject> SignModel; // 标志对象模型
211
212 virtual AActor* RespawnActor(UCarlaEpisode* CarlaEpisode, const FActorInfo& Info) override; // 重新生成交通标志
213
214 virtual void RecordActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override; // 记录交通标志数据
215
216 virtual void RestoreActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override; // 恢复交通标志数据
217};
218
219// FTrafficLightData类,继承自FActorData类,用于存储和处理与交通信号灯相关的特定数据
221{
222public:
223 // 指向交通信号灯控制器的指针,用于控制交通信号灯的状态切换等操作,类型为UTrafficLightController*
225
226 // 交通信号灯的当前状态,使用ETrafficLightState枚举类型表示,如红灯、绿灯、黄灯等状态
228
229 // 交通信号灯的唯一标识符,使用FString类型表示
230 FString SignId;
231
232 // 交通信号灯对应的Actor类,使用TSubclassOf<AActor>类型表示,用于在运行时动态创建或查找相应的Actor类
233 TSubclassOf<AActor> Model;
234
235 // 灯杆的索引,可能用于区分多个灯杆或者在特定场景中定位交通信号灯,具体含义根据项目而定
237
238 // 重写基类的RespawnActor函数,用于在CarlaEpisode场景中重新生成交通信号灯Actor,实现特定于交通信号灯的重新生成逻辑
239 virtual AActor* RespawnActor(UCarlaEpisode* CarlaEpisode, const FActorInfo& Info) override;
240
241 // 重写基类的RecordActorData函数,用于记录交通信号灯Actor的相关数据,实现特定于交通信号灯的记录逻辑
242 virtual void RecordActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override;
243
244 // 重写基类的RestoreActorData函数,用于恢复交通信号灯Actor之前记录的数据,实现特定于交通信号灯的恢复逻辑
245 virtual void RestoreActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override;
246
247 UTrafficLightController* Controller; // 交通信号灯控制器
248
249 ETrafficLightState LightState; // 信号灯状态
250
251 FString SignId; // 信号灯 ID
252
253 TSubclassOf<AActor> Model; // 信号灯模型
254
255 int PoleIndex; // 信号灯的杆子索引
256
257 virtual AActor* RespawnActor(UCarlaEpisode* CarlaEpisode, const FActorInfo& Info) override; // 重新生成信号灯
258
259 virtual void RecordActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override; // 记录信号灯数据
260
261 virtual void RestoreActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override; // 恢复信号灯数据
262};
263
264// FActorSensorData类,继承自FActorData类,用于存储和处理与Actor传感器相关的特定数据
266{
267public:
268
269 // 传感器的数据流转对象,用于处理传感器获取的数据,例如图像数据、点云数据等的传输和处理,类型为FDataStream
271
272 // 重写基类的RecordActorData函数,用于记录传感器相关Actor的相关数据,实现特定于传感器的记录逻辑
273 virtual void RecordActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override;
274 FDataStream Stream; // 传感器数据流
275
276 virtual void RecordActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override; // 记录传感器数据
277
278 virtual void RestoreActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override; // 恢复传感器数据
279};
280sode) override;
281
282 // 重写基类的RestoreActorData函数,用于恢复传感器相关Actor之前记录的数据,实现特定于传感器的恢复逻辑
283 virtual void RestoreActorData(FCarlaActor* CarlaActor, UCarlaEpisode* CarlaEpisode) override;
284};
carla::rpc::VehicleFailureState FailureState
Definition ActorData.h:137
virtual void RecordActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
float SpeedLimit
Definition ActorData.h:134
virtual void RestoreActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
FVehicleLightState LightState
Definition ActorData.h:131
FVehiclePhysicsControl PhysicsControl
Definition ActorData.h:116
bool bAckermannControlActive
Definition ActorData.h:125
FVehicleControl Control
Definition ActorData.h:119
FAckermannControllerSettings AckermannControllerSettings
Definition ActorData.h:128
FVehicleAckermannControl AckermannControl
Definition ActorData.h:122
TSharedPtr< const FActorInfo > Info
virtual ~FActorData()
Definition ActorData.h:89
virtual void RecordActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode)
Definition ActorData.cpp:48
virtual AActor * RespawnActor(UCarlaEpisode *CarlaEpisode, const FActorInfo &Info)
Definition ActorData.cpp:38
FQuat Rotation
Definition ActorData.h:62
virtual void RecordActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode)
virtual void RestoreActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode)
virtual void RestoreActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode)
Definition ActorData.cpp:70
FVector Velocity
Definition ActorData.h:68
bool bSimulatePhysics
Definition ActorData.h:74
virtual AActor * RespawnActor(UCarlaEpisode *CarlaEpisode, const FActorInfo &Info)
FTransform GetLocalTransform(UCarlaEpisode *CarlaEpisode) const
FVector Scale
Definition ActorData.h:65
FDVector Location
Definition ActorData.h:57
virtual void RecordActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
FDataStream Stream
Definition ActorData.h:270
virtual void RestoreActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
virtual void RecordActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
查看一个参与者和它的属性
Definition CarlaActor.h:23
virtual void RestoreActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
ETrafficLightState LightState
Definition ActorData.h:227
virtual AActor * RespawnActor(UCarlaEpisode *CarlaEpisode, const FActorInfo &Info) override
TSubclassOf< AActor > Model
Definition ActorData.h:233
UTrafficLightController * Controller
Definition ActorData.h:224
virtual void RecordActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
virtual void RecordActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
virtual void RestoreActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
virtual AActor * RespawnActor(UCarlaEpisode *CarlaEpisode, const FActorInfo &Info) override
TSubclassOf< UObject > SignModel
Definition ActorData.h:196
virtual void RecordActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
virtual AActor * RespawnActor(UCarlaEpisode *CarlaEpisode, const FActorInfo &Info) override
TSubclassOf< AActor > Model
Definition ActorData.h:193
virtual void RestoreActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
virtual AActor * RespawnActor(UCarlaEpisode *CarlaEpisode, const FActorInfo &Info) override
virtual void RecordActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
virtual void RestoreActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
FVehicleControl Control
Definition ActorData.h:111
FVehicleAckermannControl AckermannControl
Definition ActorData.h:112
FVehiclePhysicsControl PhysicsControl
Definition ActorData.h:110
virtual void RecordActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
carla::rpc::WalkerControl WalkerControl
Definition ActorData.h:165
virtual void RestoreActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
virtual void RestoreActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
virtual void RecordActorData(FCarlaActor *CarlaActor, UCarlaEpisode *CarlaEpisode) override
从 OpenDrive 映射一个控制器。控制相关交通信号灯并包含其循环
一个结构体,用于表示演员及其属性的视图。
Definition ActorInfo.h:27