CARLA
 
载入中...
搜索中...
未找到
LibCarla/source/carla/rpc/VehicleLightState.h
浏览该文件的文档.
1// Copyright (c) 2020 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" // 引入 MsgPack 头文件
10
11#ifdef LIBCARLA_INCLUDED_FROM_UE4 // 如果从 UE4 包含
12#include <compiler/enable-ue4-macros.h> // 启用 UE4 宏
13#include "Carla/Vehicle/VehicleLightState.h" // 引入车灯状态头文件
14#include <compiler/disable-ue4-macros.h> // 禁用 UE4 宏
15#endif // LIBCARLA_INCLUDED_FROM_UE4
16
17namespace carla { // carla 命名空间
18namespace rpc { // rpc 命名空间
19
20 #define SET_FLAG(flag, value) flag |= static_cast<flag_type>(value) // 设置标志位宏定义
21
22 #define FLAG_ENABLED(flag, value) flag & static_cast<flag_type>(value) // 检查标志位是否启用的宏定义
23
24 /// 定义车辆的物理外观,通过传感器获取
26 public:
27
28 using flag_type = uint32_t; // 定义标志类型为无符号整数
29
30 /// 可以作为标志使用的枚举
31 enum class LightState : flag_type {
32 None = 0, // 无灯光状态
33 Position = 0x1, // 位置灯
34 LowBeam = 0x1 << 1, // 近光灯
35 HighBeam = 0x1 << 2, // 远光灯
36 Brake = 0x1 << 3, // 刹车灯
37 RightBlinker = 0x1 << 4, // 右转向灯
38 LeftBlinker = 0x1 << 5, // 左转向灯
39 Reverse = 0x1 << 6, // 倒车灯
40 Fog = 0x1 << 7, // 雾灯
41 Interior = 0x1 << 8, // 内部灯
42 Special1 = 0x1 << 9, // 特殊灯光1(例如:警报灯)
43 Special2 = 0x1 << 10, // 特殊灯光2
44 All = 0xFFFFFFFF // 所有灯光状态
45 };
46
47 VehicleLightState() = default; // 默认构造函数
48
49 VehicleLightState(LightState light_state) // 构造函数,接受灯光状态枚举
50 : light_state(static_cast<flag_type>(light_state)) {} // 将枚举转换为标志类型
51
52 VehicleLightState(flag_type light_state) // 构造函数,接受标志类型
53 : light_state(light_state) {} // 直接初始化标志类型
54
55#ifdef LIBCARLA_INCLUDED_FROM_UE4
56
57 VehicleLightState(const FVehicleLightState &InLightState) { // 构造函数,接受 UE4 的车辆灯光状态
58 light_state = static_cast<flag_type>(LightState::None); // 初始化灯光状态为无
59 if (InLightState.Position) SET_FLAG(light_state, LightState::Position); // 如果位置灯开启,设置标志
60 if (InLightState.LowBeam) SET_FLAG(light_state, LightState::LowBeam); // 如果近光灯开启,设置标志
61 if (InLightState.HighBeam) SET_FLAG(light_state, LightState::HighBeam); // 如果远光灯开启,设置标志
62 if (InLightState.Brake) SET_FLAG(light_state, LightState::Brake); // 如果刹车灯开启,设置标志
63 if (InLightState.RightBlinker) SET_FLAG(light_state, LightState::RightBlinker); // 如果右转向灯开启,设置标志
64 if (InLightState.LeftBlinker) SET_FLAG(light_state, LightState::LeftBlinker); // 如果左转向灯开启,设置标志
65 if (InLightState.Reverse) SET_FLAG(light_state, LightState::Reverse); // 如果倒车灯开启,设置标志
66 if (InLightState.Fog) SET_FLAG(light_state, LightState::Fog); // 如果雾灯开启,设置标志
67 if (InLightState.Interior) SET_FLAG(light_state, LightState::Interior); // 如果内部灯开启,设置标志
68 if (InLightState.Special1) SET_FLAG(light_state, LightState::Special1); // 如果特殊灯光1开启,设置标志
69 if (InLightState.Special2) SET_FLAG(light_state, LightState::Special2); // 如果特殊灯光2开启,设置标志
70 }
71
72 operator FVehicleLightState() const { // 转换运算符,将当前状态转换为 FVehicleLightState
73 FVehicleLightState Lights; // 默认情况下所有灯光状态为 false
74 if (FLAG_ENABLED(light_state, LightState::Position)) Lights.Position = true; // 如果位置灯开启,则设置为 true
75 if (FLAG_ENABLED(light_state, LightState::LowBeam)) Lights.LowBeam = true; // 如果近光灯开启,则设置为 true
76 if (FLAG_ENABLED(light_state, LightState::HighBeam)) Lights.HighBeam = true; // 如果远光灯开启,则设置为 true
77 if (FLAG_ENABLED(light_state, LightState::Brake)) Lights.Brake = true; // 如果刹车灯开启,则设置为 true
78 if (FLAG_ENABLED(light_state, LightState::RightBlinker)) Lights.RightBlinker = true; // 如果右转向灯开启,则设置为 true
79 if (FLAG_ENABLED(light_state, LightState::LeftBlinker)) Lights.LeftBlinker = true; // 如果左转向灯开启,则设置为 true
80 if (FLAG_ENABLED(light_state, LightState::Reverse)) Lights.Reverse = true; // 如果倒车灯开启,则设置为 true
81 if (FLAG_ENABLED(light_state, LightState::Fog)) Lights.Fog = true; // 如果雾灯开启,则设置为 true
82 if (FLAG_ENABLED(light_state, LightState::Interior)) Lights.Interior = true; // 如果内部灯开启,则设置为 true
83 if (FLAG_ENABLED(light_state, LightState::Special1)) Lights.Special1 = true; // 如果特殊灯光1开启,则设置为 true
84 if (FLAG_ENABLED(light_state, LightState::Special2)) Lights.Special2 = true; // 如果特殊灯光2开启,则设置为 true
85 return Lights; // 返回状态
86 }
87
88#endif // LIBCARLA_INCLUDED_FROM_UE4
89
90 /// 返回当前灯光状态作为枚举类型
92 return static_cast<LightState>(light_state); // 转换并返回灯光状态
93 }
94
95 /// 返回当前灯光状态作为值类型
97 return light_state; // 返回灯光状态值
98 }
99
100 /// 灯光状态标志,默认情况下全部关闭
101 flag_type light_state = static_cast<flag_type>(LightState::None); // 初始化灯光状态为无
102
103 MSGPACK_DEFINE_ARRAY(light_state) // 定义 MsgPack 数组序列化
104 };
105
106} // namespace rpc
107} // namespace carla
#define FLAG_ENABLED(flag, value)
#define SET_FLAG(flag, value)
定义车辆的物理外观,通过传感器获取
VehicleLightState(const FVehicleLightState &InLightState)
LightState GetLightStateEnum() const
返回当前灯光状态作为枚举类型
flag_type GetLightStateAsValue() const
返回当前灯光状态作为值类型
flag_type light_state
灯光状态标志,默认情况下全部关闭
CARLA模拟器的主命名空间。
Definition Carla.cpp:139