CARLA
 
载入中...
搜索中...
未找到
Command.h
浏览该文件的文档.
1// Copyright (c) 2017 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 "carla/MsgPack.h" // 包含Carla的MsgPack相关头文件,可能用于序列化和反序列化等数据处理操作
10#include "carla/MsgPackAdaptors.h" // 包含MsgPack的适配器相关头文件,用于使一些类型能更好地适配MsgPack的序列化和反序列化机制
11#include "carla/geom/Transform.h" // 包含几何变换相关的头文件,用于处理如位置、旋转等变换信息,可能在控制角色位置等方面会用到
12#include "carla/rpc/ActorDescription.h" // 包含Actor描述相关的头文件,用于定义场景中各种角色(如车辆、行人等)的相关属性描述信息
13#include "carla/rpc/AttachmentType.h" // 包含附件类型相关的头文件,可能用于描述角色之间的附着关系等
14#include "carla/rpc/ActorId.h" // 包含Actor唯一标识符相关的头文件,用于区分不同的角色实例
15#include "carla/rpc/TrafficLightState.h" // 包含交通信号灯状态相关的头文件,用于表示交通信号灯的不同状态(如红、绿、黄等)
16#include "carla/rpc/VehicleAckermannControl.h" // 包含车辆阿克曼转向控制相关的头文件,用于控制采用阿克曼转向原理的车辆运动
17#include "carla/rpc/VehicleControl.h" // 包含车辆常规控制(如油门、刹车、转向等)相关的头文件
18#include "carla/rpc/VehiclePhysicsControl.h" // 包含车辆物理属性控制相关的头文件,可能涉及车辆的质量、摩擦力等物理特性控制
19#include "carla/rpc/VehicleLightState.h" // 包含车辆灯光状态相关的头文件,用于控制车辆各种灯光(如大灯、转向灯等)的开关状态
20#include "carla/rpc/WalkerControl.h" // 包含行人控制相关的头文件,用于控制行人在场景中的移动等行为
21
22#include <string> // 包含标准库中的字符串头文件,用于处理文本相关操作,很多地方可能会用到字符串来表示名称、命令等信息
23
24#ifdef _MSC_VER // 以下是针对微软编译器(MSC_VER)的特定编译警告处理设置
25#pragma warning(push) // 保存当前的警告状态
26#pragma warning(disable:4583) // 禁用特定的警告(4583,可能是和类模板相关的某种警告)
27#pragma warning(disable:4582) // 禁用特定的警告(4582,可能和类模板相关的另一种警告)
28#include <boost/variant2/variant.hpp> // 包含boost库中的variant2变体类型头文件,用于定义可以容纳多种不同类型值的变量类型
29#pragma warning(pop) // 恢复之前保存的警告状态
30#else
31#include <boost/variant2/variant.hpp> // 如果不是微软编译器,直接包含boost库中的variant2变体类型头文件
32#endif
33
34namespace carla { // 定义Carla命名空间,以下相关的类、结构体等都在这个命名空间下组织
35
36namespace traffic_manager { // 定义交通管理器相关的内部命名空间,里面可能包含交通管理相关的具体实现类等,但此处只是前置声明了TrafficManager类
37 class TrafficManager;
38}
39
40namespace ctm = carla::traffic_manager; // 为了方便使用,给carla::traffic_manager命名空间定义一个简短的别名ctm
41
42namespace rpc { // 定义rpc命名空间,用于存放远程过程调用(RPC)相关的类型和函数等,这里主要定义了各种控制命令相关的结构体和类型
43
44 class Command { // 定义Command类,用于封装各种不同类型的控制命令,是整个命令体系的核心类
45 private:
46
47 template <typename T> // 定义一个模板结构体CommandBase,作为各种具体命令结构体的基类模板,用于实现类型转换到Command类型的操作
48 struct CommandBase {
49 operator Command() const { // 重载类型转换运算符,将派生类类型转换为Command类型
50 return Command{*static_cast<const T *>(this)};
51 }
52 };
53
54 public:
55
56 struct SpawnActor : CommandBase<SpawnActor> { // 定义SpawnActor结构体,表示生成角色(如车辆、行人等)的命令结构体,继承自CommandBase<SpawnActor>
57 SpawnActor() = default; // 默认构造函数,用于创建一个默认初始化的SpawnActor命令对象
58 SpawnActor(ActorDescription description, const geom::Transform &transform) // 构造函数,用于创建一个生成角色的命令,传入角色描述和初始变换信息
59 : description(std::move(description)),
61 SpawnActor(ActorDescription description, const geom::Transform &transform, ActorId parent) // 构造函数,用于创建一个生成角色的命令,传入角色描述、初始变换信息以及父角色的ID(可能用于表示父子关系,比如车辆挂载某个附件等情况)
62 : description(std::move(description)),
64 parent(parent) {}
65 SpawnActor(ActorDescription description, const geom::Transform &transform, ActorId parent, AttachmentType attachment_type, const std::string& bone) // 构造函数,用于创建一个更详细的生成角色的命令,除了上述信息外,还传入附着类型和骨骼名称(可能用于更精细的角色附着相关操作)
66 : description(std::move(description)),
70 socket_name(bone) {}
71 ActorDescription description;// 角色的描述信息,包含了角色的各种属性,如类型、模型等
72 geom::Transform transform;// 角色的初始几何变换信息,用于确定在场景中的位置、朝向等
73 boost::optional<ActorId> parent;// 可选的父角色ID,用于表示与其他角色的关联关系(如果有)
74 AttachmentType attachment_type;// 附着类型,定义了如何与其他角色进行附着连接
75 std::string socket_name;// 骨骼名称(可能用于特定的模型绑定等情况,比如在游戏中角色模型的骨骼绑定相关操作)
76 std::vector<Command> do_after;// 一个命令列表,表示在生成该角色后需要执行的其他命令
77 MSGPACK_DEFINE_ARRAY(description, transform, parent, attachment_type, socket_name, do_after); // 使用MSGPACK_DEFINE_ARRAY宏定义了如何将SpawnActor结构体中的成员进行MsgPack序列化和反序列化,按照给定的成员顺序进行处理
78 };
79
80 struct DestroyActor : CommandBase<DestroyActor> {// 定义DestroyActor结构体,表示销毁角色的命令结构体,继承自CommandBase<DestroyActor>
81 DestroyActor() = default;// 默认构造函数,创建一个默认初始化的DestroyActor命令对象
82 DestroyActor(ActorId id)// 构造函数,传入要销毁的角色的ID,用于指定具体要销毁的角色
83 : actor(id) {}
84 ActorId actor;// 要销毁的角色的ID
85 MSGPACK_DEFINE_ARRAY(actor);// 使用MSGPACK_DEFINE_ARRAY宏定义如何对DestroyActor结构体中的成员(仅actor成员)进行MsgPack序列化和反序列化
86 };
87
88 struct ApplyVehicleControl : CommandBase<ApplyVehicleControl> {// 定义ApplyVehicleControl结构体,表示应用车辆常规控制(如油门、刹车、转向等)的命令结构体,继承自CommandBase<ApplyVehicleControl>
89 ApplyVehicleControl() = default;// 默认构造函数,创建一个默认初始化的ApplyVehicleControl命令对象
90 ApplyVehicleControl(ActorId id, const VehicleControl &value)// 构造函数,传入要控制的车辆角色的ID以及具体的车辆控制信息
91 : actor(id),
92 control(value) {}
93 ActorId actor;// 要控制的车辆角色的ID
94 VehicleControl control;// 车辆的控制信息,包含油门、刹车、转向等控制参数
95 MSGPACK_DEFINE_ARRAY(actor, control);// 使用MSGPACK_DEFINE_ARRAY宏定义如何对ApplyVehicleControl结构体中的成员进行MsgPack序列化和反序列化
96 };
97
98 struct ApplyVehicleAckermannControl : CommandBase<ApplyVehicleAckermannControl> {// 定义ApplyVehicleAckermannControl结构体,表示应用车辆阿克曼转向控制的命令结构体,继承自CommandBase<ApplyVehicleAckermannControl>
99 ApplyVehicleAckermannControl() = default;// 默认构造函数,创建一个默认初始化的ApplyVehicleAckermannControl命令对象
100 ApplyVehicleAckermannControl(ActorId id, const VehicleAckermannControl &value)// 构造函数,传入要控制的车辆角色的ID以及具体的阿克曼转向控制信息
101 : actor(id),
102 control(value) {}
103 ActorId actor;// 要控制的车辆角色的ID
104 VehicleAckermannControl control;// 车辆的阿克曼转向控制信息,包含转向相关的参数等
105 MSGPACK_DEFINE_ARRAY(actor, control);// 使用MSGPACK_DEFINE_ARRAY宏定义如何对ApplyVehicleAckermannControl结构体中的成员进行MsgPack序列化和反序列化
106 };
107
108 struct ApplyWalkerControl : CommandBase<ApplyWalkerControl> {// 定义ApplyWalkerControl结构体,表示应用行人控制的命令结构体,继承自CommandBase<ApplyWalkerControl>
109 ApplyWalkerControl() = default; // 默认构造函数,创建一个默认初始化的ApplyWalkerControl命令对象
110 ApplyWalkerControl(ActorId id, const WalkerControl &value)// 构造函数,传入要控制的行人角色的ID以及具体的行人控制信息
111 : actor(id),
112 control(value) {}
113 ActorId actor;// 要控制的行人角色的ID
114 WalkerControl control;// 行人的控制信息,用于控制行人的移动方向、速度等行为
115 MSGPACK_DEFINE_ARRAY(actor, control);// 使用MSGPACK_DEFINE_ARRAY宏定义如何对ApplyWalkerControl结构体中的成员进行MsgPack序列化和反序列化
116 };
117
118 struct ApplyVehiclePhysicsControl : CommandBase<ApplyVehiclePhysicsControl> {// 定义ApplyVehiclePhysicsControl结构体,表示应用车辆物理属性控制的命令结构体,继承自CommandBase<ApplyVehiclePhysicsControl>
119 ApplyVehiclePhysicsControl() = default;// 默认构造函数,创建一个默认初始化的ApplyVehiclePhysicsControl命令对象
120 ApplyVehiclePhysicsControl(ActorId id, const VehiclePhysicsControl &value)// 构造函数,传入要控制的车辆角色的ID以及具体的车辆物理控制信息
121 : actor(id),
122 physics_control(value) {}
123 ActorId actor;// 要控制的车辆角色的ID
124 VehiclePhysicsControl physics_control;// 车辆的物理控制信息,涉及车辆的质量、摩擦力等物理特性参数
125 MSGPACK_DEFINE_ARRAY(actor, physics_control);// 使用MSGPACK_DEFINE_ARRAY宏定义如何对ApplyVehiclePhysicsControl结构体中的成员进行MsgPack序列化和反序列化
126 };
127
128 struct ApplyTransform : CommandBase<ApplyTransform> {// 定义ApplyTransform结构体,表示应用几何变换(如平移、旋转等)到角色上的命令结构体,继承自CommandBase<ApplyTransform>
129 ApplyTransform() = default; // 默认构造函数,创建一个默认初始化的ApplyTransform命令对象
130 ApplyTransform(ActorId id, const geom::Transform &value)// 构造函数,传入要应用变换的角色的ID以及具体的几何变换信息
131 : actor(id),
132 transform(value) {}
133 ActorId actor;// 要应用变换的角色的ID
134 geom::Transform transform;// 具体的几何变换信息,用于改变角色在场景中的位置、朝向等
135 MSGPACK_DEFINE_ARRAY(actor, transform);// 使用MSGPACK_DEFINE_ARRAY宏定义如何对ApplyTransform结构体中的成员进行MsgPack序列化和反序列化
136 };
137
138 struct ApplyLocation : CommandBase<ApplyLocation> {// 定义ApplyLocation结构体,表示应用位置信息到角色上的命令结构体,继承自CommandBase<ApplyLocation>
139 ApplyLocation() = default; // 默认构造函数,创建一个默认初始化的ApplyLocation命令对象
140 ApplyLocation(ActorId id, const geom::Location &value) // 构造函数,传入要应用位置的角色的ID以及具体的位置信息
141 : actor(id),
142 location(value) {}
143 ActorId actor;// 要应用位置的角色的ID
144 geom::Location location; // 具体的位置信息,用于改变角色在场景中的坐标位置
145 MSGPACK_DEFINE_ARRAY(actor, location);// 使用MSGPACK_DEFINE_ARRAY宏定义如何对ApplyLocation结构体中的成员进行MsgPack序列化和反序列化
146 };
147
148 struct ApplyWalkerState : CommandBase<ApplyWalkerState> {// 定义ApplyWalkerState结构体,表示应用行人状态(包含位置和速度等信息)的命令结构体,继承自CommandBase<ApplyWalkerState>
149 ApplyWalkerState() = default; // 默认构造函数,创建一个默认初始化的ApplyWalkerState命令对象
150 ApplyWalkerState(ActorId id, const geom::Transform &value, const float speed) : actor(id), transform(value), speed(speed) {}// 构造函数,传入要应用状态的行人角色的ID、几何变换信息(包含位置、朝向等)以及速度信息
151 ActorId actor;// 要应用状态的行人角色的ID
152 geom::Transform transform;// 行人的几何变换信息,确定行人在场景中的位置和朝向
153 float speed;// 行人的移动速度信息
154 MSGPACK_DEFINE_ARRAY(actor, transform, speed);// 使用MSGPACK_DEFINE_ARRAY宏定义如何对ApplyWalkerState结构体中的成员进行MsgPack序列化和反序列化
155 };
156
157 struct ApplyTargetVelocity : CommandBase<ApplyTargetVelocity> {// 定义ApplyTargetVelocity结构体,表示应用目标速度到角色(可能是车辆、行人等)上的命令结构体,继承自CommandBase<ApplyTargetVelocity>
158 ApplyTargetVelocity() = default;// 默认构造函数,创建一个默认初始化的ApplyTargetVelocity命令对象
159 ApplyTargetVelocity(ActorId id, const geom::Vector3D &value)// 构造函数,传入要应用目标速度的角色的ID以及具体的目标速度向量信息
160 : actor(id),
161 velocity(value) {}
162 ActorId actor;// 要应用目标速度的角色的ID
163 geom::Vector3D velocity;// 目标速度向量信息,用于设定角色的移动速度方向和大小
164 MSGPACK_DEFINE_ARRAY(actor, velocity);// 使用MSGPACK_DEFINE_ARRAY宏定义如何对ApplyTargetVelocity结构体中的成员进行MsgPack序列化和反序列化
165 };
166
167 struct ApplyTargetAngularVelocity : CommandBase<ApplyTargetAngularVelocity> { // 定义ApplyTargetAngularVelocity结构体,表示应用目标角速度到角色上的命令结构体,继承自CommandBase<ApplyTargetAngularVelocity>
168 ApplyTargetAngularVelocity() = default;// 默认构造函数,创建一个默认初始化的ApplyTargetAngularVelocity命令对象
169 ApplyTargetAngularVelocity(ActorId id, const geom::Vector3D &value)// 构造函数,传入要应用目标角速度的角色的ID以及具体的目标角速度向量信息
170 : actor(id),
171 angular_velocity(value) {}
172 ActorId actor;// 要应用目标角速度的角色的ID
173 geom::Vector3D angular_velocity;// 目标角速度向量信息,用于设定角色的旋转角速度方向和大小
174 MSGPACK_DEFINE_ARRAY(actor, angular_velocity);// 使用MSGPACK_DEFINE_ARRAY宏定义如何对ApplyTargetAngularVelocity结构体中的成员进行MsgPack序列化和反序列化
175 };
176
177 struct ApplyImpulse : CommandBase<ApplyImpulse> {// 定义ApplyImpulse结构体,表示应用冲量到角色上的命令结构体,继承自CommandBase<ApplyImpulse>
178 ApplyImpulse() = default;// 默认构造函数,创建一个默认初始化的ApplyImpulse命令对象
179 ApplyImpulse(ActorId id, const geom::Vector3D &value)// 构造函数,传入要应用冲量的角色的ID以及具体的冲量向量信息
180 : actor(id),
181 impulse(value) {}
182 ActorId actor;// 要应用冲量的角色的ID
183 geom::Vector3D impulse;// 冲量向量信息,用于给角色施加瞬间的力的作用效果(根据物理学原理改变角色的运动状态等)
184 MSGPACK_DEFINE_ARRAY(actor, impulse);// 使用MSGPACK_DEFINE_ARRAY宏定义如何对ApplyImpulse结构体中的成员进行MsgPack序列化和反序列化
185 };
186
187 struct ApplyForce : CommandBase<ApplyForce> {// 定义ApplyForce结构体,表示应用力到角色上的命令结构体,继承自CommandBase<ApplyForce>
188 ApplyForce() = default;// 默认构造函数,创建一个默认初始化的ApplyForce命令对象
189 ApplyForce(ActorId id, const geom::Vector3D &value)// 构造函数,传入要应用力的角色的ID以及具体的力向量信息
190 : actor(id),
191 force(value) {}
192 ActorId actor;// 要应用力的角色的ID
193 geom::Vector3D force;// 表示要施加的力向量信息,它定义了力的大小、方向等物理属性,用于模拟角色在受力情况下的物理行为变化
194 MSGPACK_DEFINE_ARRAY(actor, force);// 使用MSGPACK_DEFINE_ARRAY宏定义如何对ApplyForce结构体中的成员(actor和force)进行MsgPack序列化和反序列化操作
195 };
196
197 struct ApplyAngularImpulse : CommandBase<ApplyAngularImpulse> {// 定义ApplyAngularImpulse结构体,表示应用角冲量到角色上的命令结构体,继承自CommandBase<ApplyAngularImpulse>
198 ApplyAngularImpulse() = default;// 构造函数,传入要应用角冲量的角色的ID以及具体的角冲量向量信息
199 ApplyAngularImpulse(ActorId id, const geom::Vector3D &value)// 用于创建一个明确指定了施加角冲量的角色以及具体角冲量向量的命令对象
200 : actor(id),
201 impulse(value) {}
202 ActorId actor;// 要应用角冲量的角色的ID,用于确定场景中哪个角色会受到此角冲量的作用
203 geom::Vector3D impulse; // 表示要施加的角冲量向量信息,它决定了角冲量的大小和方向,进而影响角色的旋转特性改变
204 MSGPACK_DEFINE_ARRAY(actor, impulse);// 使用MSGPACK_DEFINE_ARRAY宏定义如何对ApplyAngularImpulse结构体中的成员进行MsgPack序列化和反序列化操作
205 };
206
207 struct ApplyTorque : CommandBase<ApplyTorque> {// ApplyTorque结构体继承自CommandBase<ApplyTorque>,用于表示施加扭矩的命令相关信息
208 ApplyTorque() = default;// 默认构造函数,使用编译器默认生成的版本,方便对象的默认初始化
209 ApplyTorque(ActorId id, const geom::Vector3D &value)// 带参数的构造函数,用于创建一个ApplyTorque对象,传入要施加扭矩的对象的ActorId以及扭矩的具体数值(以三维向量表示)
210 : actor(id),
211 torque(value) {}
212 ActorId actor;// 成员变量,表示要施加扭矩的对象的唯一标识符,用于在模拟场景中准确找到对应的对象
213 geom::Vector3D torque;// 成员变量,表示要施加的扭矩值,以三维向量的形式体现扭矩在三个维度上的分量大小和方向
214 MSGPACK_DEFINE_ARRAY(actor, torque); // 使用MSGPACK_DEFINE_ARRAY宏定义,可能是用于序列化或者和消息打包相关的操作,这里将actor和torque成员变量包含在定义中
215 };
216
217 struct SetSimulatePhysics : CommandBase<SetSimulatePhysics> {// SetSimulatePhysics结构体继承自CommandBase<SetSimulatePhysics>,用于控制某个对象是否开启物理模拟
219 SetSimulatePhysics(ActorId id, bool value)// 带参数的构造函数,传入要设置物理模拟状态的对象的ActorId以及是否启用物理模拟的布尔值
220 : actor(id),
221 enabled(value) {}
222 ActorId actor; // 成员变量,表示要设置物理模拟状态的对象的唯一标识符
223 bool enabled;// 成员变量,代表是否启用物理模拟,true表示启用,false表示禁用
225 };
226
227 struct SetEnableGravity : CommandBase<SetEnableGravity> {// SetEnableGravity结构体继承自CommandBase<SetEnableGravity>,用于控制某个对象是否受重力影响
228 SetEnableGravity() = default;
229 SetEnableGravity(ActorId id, bool value)// 带参数的构造函数,传入要设置重力状态的对象的ActorId以及是否启用重力的布尔值
230 : actor(id),
231 enabled(value) {}
232 ActorId actor;// 成员变量,表示要设置重力状态的对象的唯一标识符
233 bool enabled;// 成员变量,代表是否启用重力,true表示启用,对象会受到重力作用;false表示禁用,对象不受重力影响
235 };
236
237 struct SetAutopilot : CommandBase<SetAutopilot> {// SetAutopilot结构体继承自CommandBase<SetAutopilot>,用于设置某个对象(可能是车辆等可自动驾驶的实体)的自动驾驶状态以及相关的通信端口信息
238 SetAutopilot() = default;
239 SetAutopilot(// 带参数的构造函数,传入要设置自动驾驶状态的对象的ActorId、是否启用自动驾驶的布尔值以及通信端口号(uint16_t类型)
240 ActorId id,
241 bool value,
242 uint16_t tm_port)
243 : actor(id),
244 enabled(value),
245 tm_port(tm_port) {}
246 ActorId actor;// 成员变量,表示要设置自动驾驶状态的对象的唯一标识符
247 bool enabled;// 成员变量,代表是否启用自动驾驶,true表示开启自动驾驶功能,false表示关闭
248 uint16_t tm_port;// 成员变量,代表用于自动驾驶相关通信的端口号,用于和其他系统或模块进行数据交互等操作
250 };
251
252 struct ShowDebugTelemetry : CommandBase<ShowDebugTelemetry> {// ShowDebugTelemetry结构体继承自CommandBase<ShowDebugTelemetry>,用于控制是否显示某个对象的调试遥测信息
254 ShowDebugTelemetry(// 带参数的构造函数,传入要设置调试遥测显示状态的对象的ActorId以及是否显示的布尔值
255 ActorId id,
256 bool value)
257 : actor(id),
258 enabled(value) {}
259 ActorId actor;// 成员变量,表示要设置调试遥测显示状态的对象的唯一标识符
260 bool enabled;// 成员变量,代表是否显示调试遥测信息,true表示显示,false表示不显示
262 };
263
264 struct SetVehicleLightState : CommandBase<SetVehicleLightState> {// SetVehicleLightState结构体继承自CommandBase<SetVehicleLightState>,用于设置某个车辆对象的灯光状态
266 SetVehicleLightState(// 带参数的构造函数,传入要设置灯光状态的车辆对象的ActorId以及代表灯光状态的枚举类型值(VehicleLightState::flag_type)
267 ActorId id,
269 : actor(id),
270 light_state(value) {}
271 ActorId actor;// 成员变量,表示要设置灯光状态的车辆对象的唯一标识符
272 VehicleLightState::flag_type light_state;// 成员变量,代表车辆的灯光状态,具体的取值和含义由VehicleLightState::flag_type枚举类型定义决定
274 };
275
276 struct ConsoleCommand : CommandBase<ConsoleCommand> {// ConsoleCommand结构体继承自CommandBase<ConsoleCommand>,它用于表示一个控制台命令相关的信息封装。
277 ConsoleCommand() = default;// 默认构造函数,使用编译器自动生成的默认构造函数实现,创建一个默认初始化的ConsoleCommand对象。
278 ConsoleCommand(std::string cmd) : cmd(cmd) {}// 带参数的构造函数,用于创建一个带有具体命令内容的ConsoleCommand对象。
279 std::string cmd;// 成员变量,用于存储从控制台输入的具体命令内容。
280 MSGPACK_DEFINE_ARRAY(cmd);// 使用MSGPACK_DEFINE_ARRAY宏来定义如何对ConsoleCommand结构体中的成员
281 };
282
283 struct SetTrafficLightState : CommandBase<SetTrafficLightState> {// SetTrafficLightState结构体继承自CommandBase<SetTrafficLightState>,用于表示设置交通信号灯状态的相关命令信息。
284 SetTrafficLightState() = default;// 默认构造函数,利用编译器生成的默认构造函数来初始化对象,创建一个默认状态的SetTrafficLightState对象,通常意味着各成员变量都处于默认值(未明确设置的状态)。
285 SetTrafficLightState(// 带参数的构造函数,用于创建一个明确指定要设置状态的交通信号灯以及设置的目标状态的命令对象。
286 ActorId id,
288 : actor(id),
289 traffic_light_state(state) {}
290 ActorId actor;// 成员变量,代表要设置状态的交通信号灯在系统中的唯一标识符。
291 rpc::TrafficLightState traffic_light_state;// 成员变量,用于存储要设置的交通信号灯的具体状态,其类型rpc::TrafficLightState定义了交通信号灯所有可能的状态值。
292 MSGPACK_DEFINE_ARRAY(actor, traffic_light_state);// 使用MSGPACK_DEFINE_ARRAY宏来定义如何对SetTrafficLightState结构体中的成员(actor和traffic_light_state)进行MsgPack序列化和反序列化操作。
293 };
294
295 using CommandType = boost::variant2::variant<// 使用boost库中的variant2::variant类型创建一个类型别名CommandType。
318
319 CommandType command;// 定义一个CommandType类型的变量command,它可以存储上述各种不同命令类型中的任意一种实例。
320
321 MSGPACK_DEFINE_ARRAY(command);// 使用MSGPACK_DEFINE_ARRAY宏来定义如何对CommandType类型的变量command进行MsgPack序列化和反序列化操作。
322 };
323
324} // namespace rpc
325} // namespace carla
MSGPACK_DEFINE_ARRAY(command)
CommandType command
Definition Command.h:319
boost::variant2::variant< SpawnActor, DestroyActor, ApplyVehicleControl, ApplyVehicleAckermannControl, ApplyWalkerControl, ApplyVehiclePhysicsControl, ApplyTransform, ApplyWalkerState, ApplyTargetVelocity, ApplyTargetAngularVelocity, ApplyImpulse, ApplyForce, ApplyAngularImpulse, ApplyTorque, SetSimulatePhysics, SetEnableGravity, SetAutopilot, ShowDebugTelemetry, SetVehicleLightState, ApplyLocation, ConsoleCommand, SetTrafficLightState > CommandType
Definition Command.h:295
uint32_t ActorId
Definition ActorId.h:20
Carla项目的交通管理命名空间。
Definition Vehicle.h:68
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
ApplyAngularImpulse(ActorId id, const geom::Vector3D &value)
Definition Command.h:199
ApplyForce(ActorId id, const geom::Vector3D &value)
Definition Command.h:189
ApplyImpulse(ActorId id, const geom::Vector3D &value)
Definition Command.h:179
ApplyLocation(ActorId id, const geom::Location &value)
Definition Command.h:140
ApplyTargetAngularVelocity(ActorId id, const geom::Vector3D &value)
Definition Command.h:169
ApplyTargetVelocity(ActorId id, const geom::Vector3D &value)
Definition Command.h:159
ApplyTorque(ActorId id, const geom::Vector3D &value)
Definition Command.h:209
ApplyTransform(ActorId id, const geom::Transform &value)
Definition Command.h:130
MSGPACK_DEFINE_ARRAY(actor, transform)
ApplyVehicleAckermannControl(ActorId id, const VehicleAckermannControl &value)
Definition Command.h:100
ApplyVehicleControl(ActorId id, const VehicleControl &value)
Definition Command.h:90
ApplyVehiclePhysicsControl(ActorId id, const VehiclePhysicsControl &value)
Definition Command.h:120
ApplyWalkerControl(ActorId id, const WalkerControl &value)
Definition Command.h:110
ApplyWalkerState(ActorId id, const geom::Transform &value, const float speed)
Definition Command.h:150
MSGPACK_DEFINE_ARRAY(actor, transform, speed)
SetAutopilot(ActorId id, bool value, uint16_t tm_port)
Definition Command.h:239
SetEnableGravity(ActorId id, bool value)
Definition Command.h:229
SetSimulatePhysics(ActorId id, bool value)
Definition Command.h:219
MSGPACK_DEFINE_ARRAY(actor, traffic_light_state)
rpc::TrafficLightState traffic_light_state
Definition Command.h:291
SetTrafficLightState(ActorId id, rpc::TrafficLightState state)
Definition Command.h:285
VehicleLightState::flag_type light_state
Definition Command.h:272
SetVehicleLightState(ActorId id, VehicleLightState::flag_type value)
Definition Command.h:266
ShowDebugTelemetry(ActorId id, bool value)
Definition Command.h:254
MSGPACK_DEFINE_ARRAY(description, transform, parent, attachment_type, socket_name, do_after)
geom::Transform transform
Definition Command.h:72
SpawnActor(ActorDescription description, const geom::Transform &transform, ActorId parent)
Definition Command.h:61
AttachmentType attachment_type
Definition Command.h:74
ActorDescription description
Definition Command.h:71
SpawnActor(ActorDescription description, const geom::Transform &transform, ActorId parent, AttachmentType attachment_type, const std::string &bone)
Definition Command.h:65
SpawnActor(ActorDescription description, const geom::Transform &transform)
Definition Command.h:58
std::vector< Command > do_after
Definition Command.h:76
boost::optional< ActorId > parent
Definition Command.h:73