CARLA
 
载入中...
搜索中...
未找到
SimulationState.h
浏览该文件的文档.
1
2#pragma once
3
4#include <unordered_set> // 引入无序集合头文件
5
6#include "carla/trafficmanager/DataStructures.h" // 引入数据结构的头文件
7
8namespace carla {
9namespace traffic_manager {
10
11// 定义参与者类型的枚举
13 Vehicle, // 车辆
14 Pedestrian, // 行人
15 Any // 任意类型
16};
17
18// 描述运动状态的结构体
23 float speed_limit; // 速度限制
24 bool physics_enabled; // 是否启用物理模拟
25 bool is_dormant; // 是否处于休眠状态
26 cg::Location hybrid_end_location; // 混合结束位置
27};
28using KinematicStateMap = std::unordered_map<ActorId, KinematicState>; // 定义运动状态映射
29
30// 描述交通灯状态的结构体
32 TLS tl_state; // 交通灯状态
33 bool at_traffic_light; // 是否在交通灯处
34};
35using TrafficLightStateMap = std::unordered_map<ActorId, TrafficLightState>; // 定义交通灯状态映射
36
37// 描述静态属性的结构体
39 ActorType actor_type; // 参与者类型
40 float half_length; // 半长
41 float half_width; // 半宽
42 float half_height; // 半高
43};
44using StaticAttributeMap = std::unordered_map<ActorId, StaticAttributes>; // 定义静态属性映射
45
46/// 该类保持了仿真中所有车辆的状态。
48
49private:
50 // 存储仿真中所有参与者的ID的结构
51 std::unordered_set<ActorId> actor_set;
52 // 存储参与者动态运动相关状态的结构
54 // 存储参与者静态属性的结构
56 // 存储参与者动态交通灯相关状态的结构
58
59public :
60 SimulationState(); // 构造函数
61
62 // 将参与者添加到仿真状态的方法
63 void AddActor(ActorId actor_id,
64 KinematicState kinematic_state,
65 StaticAttributes attributes,
66 TrafficLightState tl_state);
67
68 // 验证参与者是否当前存在于仿真状态中的方法
69 bool ContainsActor(ActorId actor_id) const;
70
71 // 从仿真状态中移除参与者的方法
72 void RemoveActor(ActorId actor_id);
73
74 // 清除所有状态和参与者的方法
75 void Reset();
76
77 // 更新参与者运动状态的方法
78 void UpdateKinematicState(ActorId actor_id, KinematicState state);
79
80 // 更新参与者混合结束位置的方法
82
83 // 更新交通灯状态的方法
85
86 // 获取参与者位置的方法
87 cg::Location GetLocation(const ActorId actor_id) const;
88
89 // 获取参与者混合结束位置的方法
90 cg::Location GetHybridEndLocation(const ActorId actor_id) const;
91
92 // 获取参与者旋转的方法
93 cg::Rotation GetRotation(const ActorId actor_id) const;
94
95 // 获取参与者朝向的方法
96 cg::Vector3D GetHeading(const ActorId actor_id) const;
97
98 // 获取参与者速度的方法
99 cg::Vector3D GetVelocity(const ActorId actor_id) const;
100
101 // 获取速度限制的方法
102 float GetSpeedLimit(const ActorId actor_id) const;
103
104 // 检查物理是否启用的方法
105 bool IsPhysicsEnabled(const ActorId actor_id) const;
106
107 // 检查参与者是否处于休眠状态的方法
108 bool IsDormant(const ActorId actor_id) const;
109
110 // 获取英雄位置的方法
111 cg::Location GetHeroLocation(const ActorId actor_id) const;
112
113 // 获取交通灯状态的方法
114 TrafficLightState GetTLS(const ActorId actor_id) const;
115
116 // 获取参与者类型的方法
117 ActorType GetType(const ActorId actor_id) const;
118
119 // 获取参与者尺寸的方法
120 cg::Vector3D GetDimensions(const ActorId actor_id) const;
121
122};
123
124} // namespace traffic_manager
125} // namespace carla
该类保持了仿真中所有车辆的状态。
cg::Location GetHeroLocation(const ActorId actor_id) const
bool ContainsActor(ActorId actor_id) const
cg::Location GetLocation(const ActorId actor_id) const
void UpdateKinematicHybridEndLocation(ActorId actor_id, cg::Location location)
cg::Vector3D GetHeading(const ActorId actor_id) const
cg::Location GetHybridEndLocation(const ActorId actor_id) const
void UpdateKinematicState(ActorId actor_id, KinematicState state)
void AddActor(ActorId actor_id, KinematicState kinematic_state, StaticAttributes attributes, TrafficLightState tl_state)
void UpdateTrafficLightState(ActorId actor_id, TrafficLightState state)
float GetSpeedLimit(const ActorId actor_id) const
cg::Rotation GetRotation(const ActorId actor_id) const
cg::Vector3D GetVelocity(const ActorId actor_id) const
bool IsPhysicsEnabled(const ActorId actor_id) const
std::unordered_set< ActorId > actor_set
ActorType GetType(const ActorId actor_id) const
cg::Vector3D GetDimensions(const ActorId actor_id) const
TrafficLightState GetTLS(const ActorId actor_id) const
bool IsDormant(const ActorId actor_id) const
std::unordered_map< ActorId, TrafficLightState > TrafficLightStateMap
std::unordered_map< ActorId, StaticAttributes > StaticAttributeMap
carla::ActorId ActorId
参与者的智能指针类型
std::unordered_map< ActorId, KinematicState > KinematicStateMap
CARLA模拟器的主命名空间。
Definition Carla.cpp:139