CARLA
 
载入中...
搜索中...
未找到
SimulationState.cpp
浏览该文件的文档.
2// carla 命名空间
3namespace carla {
4// traffic_manager 命名空间
5namespace traffic_manager {
6// 构造函数,初始化 SimulationState 对象
8// 向模拟状态中添加一个actor
10 KinematicState kinematic_state,
11 StaticAttributes attributes,
12 TrafficLightState tl_state) {
13 actor_set.insert(actor_id);// 将actor的ID 插入到 actor_set 中
14 kinematic_state_map.insert({actor_id, kinematic_state});// 将actor的ID和运动状态插入到 kinematic_state_map 中
15 static_attribute_map.insert({actor_id, attributes});// 将actor的ID和静态属性插入到 static_attribute_map 中
16 tl_state_map.insert({actor_id, tl_state});// 将actor的ID和交通灯状态插入到 tl_state_map 中
17}
18// 检查模拟状态中是否包含特定的actor的ID
20// 如果在 actor_set 中找到该actor的ID,则返回 true,否则返回 false
21 return actor_set.find(actor_id) != actor_set.end();
22}
23// 从模拟状态中移除一个actor
25 actor_set.erase(actor_id); // 从 actor_set 中删除该actor的ID
26 kinematic_state_map.erase(actor_id);// 从 kinematic_state_map 中删除该actor的运动状态
27 static_attribute_map.erase(actor_id);// 从 static_attribute_map 中删除该actor的静态属性
28 tl_state_map.erase(actor_id);// 从 tl_state_map 中删除该actor的交通灯状态
29}
30// 重置模拟状态,清空所有数据结构
32 actor_set.clear();// 清空 actor_set
33 kinematic_state_map.clear();// 清空 kinematic_state_map
34 static_attribute_map.clear();// 清空 static_attribute_map
35 tl_state_map.clear(); // 清空 tl_state_map
36}
37// 更新特定actor的运动状态
39 kinematic_state_map.at(actor_id) = state;// 使用 at 方法访问并更新特定actor的运动状态
40}
41// 更新特定actor的混合结束位置
43 kinematic_state_map.at(actor_id).hybrid_end_location = location;// 使用 at 方法访问并更新特定actor的混合结束位置
44}
45// 更新特定actor的交通灯状态,注意特殊的绿色-黄色状态过渡处理
47 // The green-yellow state transition is not notified to the vehicle. This is done to avoid
48 // having vehicles stopped very near the intersection when only the rear part of the vehicle
49 // is colliding with the trigger volume of the traffic light.
50 auto previous_tl_state = GetTLS(actor_id);
51 if (previous_tl_state.at_traffic_light && previous_tl_state.tl_state == TLS::Green) {
52 state.tl_state = TLS::Green;
53 }
54// 使用 at 方法访问并更新特定actor的交通灯状态
55 tl_state_map.at(actor_id) = state;
56}
57// 获取特定actor的位置
59// 使用 at 方法访问并返回特定actor的位置
60 return kinematic_state_map.at(actor_id).location;
61}
62// 获取特定actor的混合结束位置
64 return kinematic_state_map.at(actor_id).hybrid_end_location;// 使用 at 方法访问并返回特定actor的混合结束位置
65}
66// 获取特定actor的旋转状态
68 return kinematic_state_map.at(actor_id).rotation;// 使用 at 方法访问并返回特定actor的旋转状态
69}
70// 获取特定actor的前进方向向量
72 return kinematic_state_map.at(actor_id).rotation.GetForwardVector(); // 使用 at 方法访问特定actor的旋转状态,然后获取其前进方向向量并返回
73}
74// 获取特定actor的速度向量
76 return kinematic_state_map.at(actor_id).velocity;// 使用 at 方法访问并返回特定actor的速度向量
77}
78// 获取特定actor的速度限制
80 return kinematic_state_map.at(actor_id).speed_limit; // 使用 at 方法访问并返回特定actor的速度限制
81}
82// 检查特定actor的物理模拟是否启用
84 return kinematic_state_map.at(actor_id).physics_enabled; // 使用 at 方法访问并返回特定actor的物理模拟启用状态
85}
86// 检查特定actor是否处于休眠状态
87bool SimulationState::IsDormant(ActorId actor_id) const {
88 return kinematic_state_map.at(actor_id).is_dormant;// 使用 at 方法访问并返回特定actor的休眠状态
89}
90// 获取特定actor的交通灯状态
92 return tl_state_map.at(actor_id);// 使用 at 方法访问并返回特定actor的交通灯状态
93}
94// 获取特定actor的类型
96 return static_attribute_map.at(actor_id).actor_type; // 使用 at 方法访问特定actor的静态属性,然后返回actor类型
97}
98// 获取特定actor的尺寸
100// 使用 at 方法访问特定actor的静态属性,然后构建并返回actor的尺寸向量
101 const StaticAttributes &attributes = static_attribute_map.at(actor_id);
102 return cg::Vector3D(attributes.half_length, attributes.half_width, attributes.half_height);
103}
104
105} // namespace traffic_manager
106} // namespace carla
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
carla::ActorId ActorId
参与者的智能指针类型
CARLA模拟器的主命名空间。
Definition Carla.cpp:139