CARLA
 
载入中...
搜索中...
未找到
TrafficLightStage.h
浏览该文件的文档.
1
2#pragma once
3
9
10namespace carla { // 命名空间 carla 开始
11namespace traffic_manager { // 命名空间 traffic_manager 开始
12
13// 这个类具有响应交通信号灯以及管理进入无信号灯路口的功能。
14class TrafficLightStage: Stage { // 定义名为 TrafficLightStage 的类,继承自 Stage 类
15private:
16 const std::vector<ActorId> &vehicle_id_list; // 车辆 ID 列表的常量引用
17 const SimulationState &simulation_state; // 模拟状态的常量引用
18 const BufferMap &buffer_map; // 缓冲区映射的常量引用
19 const Parameters &parameters; // 参数的常量引用
20 const cc::World &world; // 世界对象的常量引用
21
22 // 用于处理无信号灯路口的变量
23
24 // 包含按到达时间顺序进入特定路口的车辆的映射。
25 std::unordered_map<JunctionID, std::deque<ActorId>> entering_vehicles_map; // 路口 ID 到车辆 ID 队列的无序映射
26 // 将车辆与其当前路口链接起来的映射。用于方便地访问前面的两个映射。
27 std::unordered_map<ActorId, JunctionID> vehicle_last_junction; // 车辆 ID 到路口 ID 的无序映射
28 // 包含参与者首次在停车标志处停止的时间戳的映射。
29 std::unordered_map<ActorId, cc::Timestamp> vehicle_stop_time; // 车辆 ID 到时间戳的无序映射
30 TLFrame &output_array; // 输出数组的引用
31 RandomGenerator &random_device; // 随机数生成器的引用
32 cc::Timestamp current_timestamp; // 当前时间戳
33
34 // 这个函数控制所有车辆在无信号灯路口的交互。优先级按照到达顺序确定,并且没有两辆车会同时进入路口。只有当前一辆车离开后,下一辆车才能进入。此外,所有车辆在停车标志处总是会刹车一段时间。
35 bool HandleNonSignalisedJunction(const ActorId ego_actor_id, const JunctionID junction_id,
36 cc::Timestamp timestamp);
37
38 // 将车辆初始化为无信号灯路口映射
39 void AddActorToNonSignalisedJunction(const ActorId ego_actor_id, const JunctionID junction_id);
40
41 // 获取车辆当前受影响的路口 ID
42 JunctionID GetAffectedJunctionId(const ActorId ego_actor_id);
43
44public:
45 TrafficLightStage(const std::vector<ActorId> &vehicle_id_list,
46 const SimulationState &Simulation_state,
47 const BufferMap &buffer_map,
49 const cc::World &world,
52// 构造函数
53
54 void Update(const unsigned long index) override; // 重写的更新函数
55
56 void RemoveActor(const ActorId actor_id) override; // 重写的移除参与者函数
57
58 void Reset() override; // 重写的重置函数
59
60};
61
62} // namespace traffic_manager // 命名空间 traffic_manager 结束
63} // namespace carla // 命名空间 carla 结束
该类保持了仿真中所有车辆的状态。
阶段类型接口。
Definition Stage.h:23
void AddActorToNonSignalisedJunction(const ActorId ego_actor_id, const JunctionID junction_id)
void Update(const unsigned long index) override
更新方法。
JunctionID GetAffectedJunctionId(const ActorId ego_actor_id)
std::unordered_map< ActorId, JunctionID > vehicle_last_junction
std::unordered_map< ActorId, cc::Timestamp > vehicle_stop_time
void RemoveActor(const ActorId actor_id) override
移除参与者方法。
const std::vector< ActorId > & vehicle_id_list
std::unordered_map< JunctionID, std::deque< ActorId > > entering_vehicles_map
bool HandleNonSignalisedJunction(const ActorId ego_actor_id, const JunctionID junction_id, cc::Timestamp timestamp)
TrafficLightStage(const std::vector< ActorId > &vehicle_id_list, const SimulationState &Simulation_state, const BufferMap &buffer_map, const Parameters &parameters, const cc::World &world, TLFrame &output_array, RandomGenerator &random_device)
std::vector< bool > TLFrame
carla::road::JuncId JunctionID
carla::ActorId ActorId
参与者的智能指针类型
std::unordered_map< carla::ActorId, Buffer > BufferMap
CARLA模拟器的主命名空间。
Definition Carla.cpp:139