CARLA
 
载入中...
搜索中...
未找到
MapData.h
浏览该文件的文档.
1// Copyright (c) 2017 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/geom/GeoLocation.h" // 引入地理位置类
10#include "carla/Iterator.h" // 引入迭代器类
11#include "carla/ListView.h" // 引入列表视图类
12#include "carla/NonCopyable.h" // 引入不可拷贝类
13#include "carla/road/Controller.h" // 引入控制器类
14#include "carla/road/element/RoadInfo.h" // 引入道路信息类
15#include "carla/road/Junction.h" // 引入交叉口类
16#include "carla/road/Road.h" // 引入道路类
17#include "carla/road/RoadTypes.h" // 引入道路类型定义
18#include "carla/road/Signal.h" // 引入信号类
19
20#include <boost/iterator/transform_iterator.hpp> // 引入 Boost 库的变换迭代器
21
22#include <unordered_map> // 引入无序映射容器
23
24namespace carla { // 定义 carla 命名空间
25namespace road { // 定义 road 命名空间
26
27 class Lane; // 前向声明车道类
28
29 class MapData : private MovableNonCopyable { // 定义 MapData 类,继承不可拷贝类
30 public:
31
32 const geom::GeoLocation &GetGeoReference() const { // 获取地理参考
33 return _geo_reference; // 返回地理位置引用
34 }
35
36 std::unordered_map<RoadId, Road> &GetRoads(); // 获取道路的可修改引用
37
38 const std::unordered_map<RoadId, Road> &GetRoads() const { // 获取道路的常量引用
39 return _roads; // 返回道路映射
40 }
41
42 std::unordered_map<JuncId, Junction> &GetJunctions(); // 获取交叉口的可修改引用
43
44 const std::unordered_map<JuncId, Junction> &GetJunctions() const { // 获取交叉口的常量引用
45 return _junctions; // 返回交叉口映射
46 }
47
48 bool ContainsRoad(RoadId id) const { // 检查是否包含特定道路
49 return (_roads.find(id) != _roads.end()); // 返回是否找到该道路
50 }
51
52 Road &GetRoad(const RoadId id); // 获取指定道路的可修改引用
53
54 const Road &GetRoad(const RoadId id) const; // 获取指定道路的常量引用
55
56 Junction *GetJunction(JuncId id); // 获取指定交叉口的可修改指针
57
58 const Junction *GetJunction(JuncId id) const; // 获取指定交叉口的常量指针
59
60 template <typename T> // 模板函数,用于获取道路信息
61 auto GetRoadInfo(const RoadId id, const double s) {
62 return GetRoad(id).template GetInfo<T>(s); // 从指定道路获取信息
63 }
64
65 template <typename T> // 模板函数,用于获取车道信息
67 const RoadId road_id,
68 const SectionId section_id,
69 const LaneId lane_id,
70 const double s) {
71 return GetRoad(road_id).GetLaneById(section_id, lane_id).template GetInfo<T>(s); // 从指定车道获取信息
72 }
73
74 size_t GetRoadCount() const { // 获取道路数量
75 return _roads.size(); // 返回道路映射的大小
76 }
77
78 const std::unordered_map<SignId, std::unique_ptr<Signal>> &GetSignals() const { // 获取信号的常量引用
79 return _signals; // 返回信号映射
80 }
81
82 const std::unordered_map<ContId, std::unique_ptr<Controller>>& GetControllers() const { // 获取控制器的常量引用
83 return _controllers; // 返回控制器映射
84 }
85
86 private:
87
88 friend class MapBuilder; // 友元类声明
89
90 MapData() = default; // 默认构造函数
91
92 geom::GeoLocation _geo_reference; // 地理参考成员变量
93
94 std::unordered_map<RoadId, Road> _roads; // 道路映射成员变量
95
96 std::unordered_map<JuncId, Junction> _junctions; // 交叉口映射成员变量
97
98 std::unordered_map<SignId, std::unique_ptr<Signal>> _signals; // 信号映射成员变量
99
100 std::unordered_map<ContId, std::unique_ptr<Controller>> _controllers; // 控制器映射成员变量
101 };
102
103} // namespace road
104} // namespace carla
这个类用于禁止拷贝构造函数和赋值操作,但允许移动构造函数和赋值操作
std::unordered_map< RoadId, Road > _roads
Definition MapData.h:94
const geom::GeoLocation & GetGeoReference() const
Definition MapData.h:32
std::unordered_map< RoadId, Road > & GetRoads()
Definition MapData.cpp:13
const std::unordered_map< RoadId, Road > & GetRoads() const
Definition MapData.h:38
size_t GetRoadCount() const
Definition MapData.h:74
Road & GetRoad(const RoadId id)
Definition MapData.cpp:21
auto GetRoadInfo(const RoadId id, const double s)
Definition MapData.h:61
const std::unordered_map< JuncId, Junction > & GetJunctions() const
Definition MapData.h:44
std::unordered_map< ContId, std::unique_ptr< Controller > > _controllers
Definition MapData.h:100
std::unordered_map< JuncId, Junction > _junctions
Definition MapData.h:96
geom::GeoLocation _geo_reference
Definition MapData.h:92
bool ContainsRoad(RoadId id) const
Definition MapData.h:48
std::unordered_map< JuncId, Junction > & GetJunctions()
Definition MapData.cpp:17
const std::unordered_map< SignId, std::unique_ptr< Signal > > & GetSignals() const
Definition MapData.h:78
const std::unordered_map< ContId, std::unique_ptr< Controller > > & GetControllers() const
Definition MapData.h:82
auto GetLaneInfo(const RoadId road_id, const SectionId section_id, const LaneId lane_id, const double s)
Definition MapData.h:66
Junction * GetJunction(JuncId id)
Definition MapData.cpp:29
std::unordered_map< SignId, std::unique_ptr< Signal > > _signals
Definition MapData.h:98
Lane & GetLaneById(SectionId section_id, LaneId lane_id)
uint32_t SectionId
Definition RoadTypes.h:29
int32_t JuncId
Definition RoadTypes.h:23
int32_t LaneId
Definition RoadTypes.h:26
uint32_t RoadId
Definition RoadTypes.h:20
CARLA模拟器的主命名空间。
Definition Carla.cpp:139