CARLA
 
载入中...
搜索中...
未找到
LocalizationStage.h
浏览该文件的文档.
1
2#pragma once
3
4#include <memory> // 引入智能指针头文件
5
6#include "carla/trafficmanager/DataStructures.h" // 引入数据结构定义
7#include "carla/trafficmanager/InMemoryMap.h" // 引入内存地图相关定义
8#include "carla/trafficmanager/LocalizationUtils.h" // 引入定位工具的定义
9#include "carla/trafficmanager/Parameters.h" // 引入参数设置相关定义
10#include "carla/trafficmanager/RandomGenerator.h" // 引入随机数生成器
11#include "carla/trafficmanager/TrackTraffic.h" // 引入交通跟踪相关定义
12#include "carla/trafficmanager/SimulationState.h" // 引入仿真状态相关定义
13#include "carla/trafficmanager/Stage.h" // 引入阶段类定义
14
15namespace carla {
16namespace traffic_manager {
17
18namespace cc = carla::client; // 定义命名空间别名
19
20using LocalMapPtr = std::shared_ptr<InMemoryMap>; // 定义指向 InMemoryMap 的智能指针类型
21using LaneChangeSWptMap = std::unordered_map<ActorId, SimpleWaypointPtr>; // 定义车道变更简易路径点映射
22using WaypointPtr = carla::SharedPtr<cc::Waypoint>; // 定义指向 Waypoint 的共享指针类型
23using Action = std::pair<RoadOption, WaypointPtr>; // 定义行动为道路选项与路径点的配对
24using ActionBuffer = std::vector<Action>; // 定义行动缓冲区为动作的向量
25using Path = std::vector<cg::Location>; // 定义路径为坐标位置的向量
26using Route = std::vector<uint8_t>; // 定义路线为无符号字节的向量
27
28/// 此类功能是维护车辆前方的路径点以供跟随。
29/// 该类还负责管理车道变更决策并适当地修改路径轨迹。
31private:
32 const std::vector<ActorId> &vehicle_id_list; // 存储车辆 ID 列表
33 BufferMap &buffer_map; // 引用缓冲区映射
34 const SimulationState &simulation_state; // 引用仿真状态
35 TrackTraffic &track_traffic; // 引用交通跟踪
36 const LocalMapPtr &local_map; // 引用本地地图智能指针
37 Parameters &parameters; // 引用参数设置
38 // 被标记为移除的车辆数组。
39 std::vector<ActorId>& marked_for_removal; // 存储待移除车辆的 ID 列表
40 LocalizationFrame &output_array; // 引用输出数组
41 LaneChangeSWptMap last_lane_change_swpt; // 最近的车道变更路径点映射
42 ActorIdSet vehicles_at_junction; // 存储在交叉口的车辆 ID 集合
43 using SimpleWaypointPair = std::pair<SimpleWaypointPtr, SimpleWaypointPtr>; // 定义简易路径点对
44 std::unordered_map<ActorId, SimpleWaypointPair> vehicles_at_junction_entrance; // 存储在交叉口入口的车辆及路径点对
45 RandomGenerator &random_device; // 引用随机数生成器
46
47 // 分配车道变更路径点
49 const cg::Location vehicle_location,
50 const float vehicle_speed,
51 bool force, bool direction);
52
53 // 扩展并查找安全空间
54 void ExtendAndFindSafeSpace(const ActorId actor_id,
55 const bool is_at_junction_entrance,
56 Buffer &waypoint_buffer);
57
58 // 导入路径
59 void ImportPath(Path &imported_path,
60 Buffer &waypoint_buffer,
61 const ActorId actor_id,
62 const float horizon_square);
63
64 // 导入路线
65 void ImportRoute(Route &imported_actions,
66 Buffer &waypoint_buffer,
67 const ActorId actor_id,
68 const float horizon_square);
69
70public:
71 // 构造函数
72 LocalizationStage(const std::vector<ActorId> &vehicle_id_list,
78 std::vector<ActorId>& marked_for_removal,
81
82 // 更新方法
83 void Update(const unsigned long index) override;
84
85 // 移除演员方法
86 void RemoveActor(const ActorId actor_id) override;
87
88 // 重置方法
89 void Reset() override;
90
91 // 计算下一个动作
92 Action ComputeNextAction(const ActorId &actor_id);
93
94 // 计算动作缓冲区
96
97};
98
99} // namespace traffic_manager
100} // namespace carla
此类功能是维护车辆前方的路径点以供跟随。 该类还负责管理车道变更决策并适当地修改路径轨迹。
ActionBuffer ComputeActionBuffer(const ActorId &actor_id)
void ImportRoute(Route &imported_actions, Buffer &waypoint_buffer, const ActorId actor_id, const float horizon_square)
LocalizationStage(const std::vector< ActorId > &vehicle_id_list, BufferMap &buffer_map, const SimulationState &simulation_state, TrackTraffic &track_traffic, const LocalMapPtr &local_map, Parameters &parameters, std::vector< ActorId > &marked_for_removal, LocalizationFrame &output_array, RandomGenerator &random_device)
void ImportPath(Path &imported_path, Buffer &waypoint_buffer, const ActorId actor_id, const float horizon_square)
void ExtendAndFindSafeSpace(const ActorId actor_id, const bool is_at_junction_entrance, Buffer &waypoint_buffer)
Action ComputeNextAction(const ActorId &actor_id)
std::unordered_map< ActorId, SimpleWaypointPair > vehicles_at_junction_entrance
const std::vector< ActorId > & vehicle_id_list
SimpleWaypointPtr AssignLaneChange(const ActorId actor_id, const cg::Location vehicle_location, const float vehicle_speed, bool force, bool direction)
void Update(const unsigned long index) override
更新方法。
void RemoveActor(const ActorId actor_id) override
移除参与者方法。
std::pair< SimpleWaypointPtr, SimpleWaypointPtr > SimpleWaypointPair
该类保持了仿真中所有车辆的状态。
阶段类型接口。
Definition Stage.h:23
包含客户端相关类和定义的命名空间。
Definition AtomicList.h:17
carla::SharedPtr< cc::Waypoint > WaypointPtr
Waypoint的智能指针类型别名。
Definition InMemoryMap.h:45
std::vector< uint8_t > Route
路线类型,由一系列地理位置组成
std::vector< cg::Location > Path
参与者的唯一标识符类型
std::unordered_map< ActorId, SimpleWaypointPtr > LaneChangeSWptMap
std::vector< Action > ActionBuffer
动作缓冲区类型别名。
std::deque< std::shared_ptr< SimpleWaypoint > > Buffer
std::shared_ptr< InMemoryMap > LocalMapPtr
本地地图指针类型,使用智能指针管理InMemoryMap对象
std::shared_ptr< SimpleWaypoint > SimpleWaypointPtr
std::pair< RoadOption, WaypointPtr > Action
动作类型别名。
carla::ActorId ActorId
参与者的智能指针类型
std::unordered_set< ActorId > ActorIdSet
std::vector< LocalizationData > LocalizationFrame
std::unordered_map< carla::ActorId, Buffer > BufferMap
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
boost::shared_ptr< T > SharedPtr
使用这个SharedPtr(boost::shared_ptr)以保持与boost::python的兼容性, 但未来如果可能的话,我们希望能为std::shared_ptr制作一个Python适配器。
Definition Memory.h:19