CARLA
 
载入中...
搜索中...
未找到
SimpleWaypoint.h
浏览该文件的文档.
1// Copyright (c) 2020 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 <memory.h> // 引入内存操作相关的头文件
10
11#include "carla/client/Waypoint.h" // 引入Carla客户端的Waypoint类
12#include "carla/geom/Location.h" // 引入Carla几何位置类
13#include "carla/geom/Transform.h" // 引入Carla变换类
14#include "carla/geom/Vector3D.h" // 引入Carla三维向量类
15#include "carla/Memory.h" // 引入Carla内存管理相关的头文件
16#include "carla/road/RoadTypes.h" // 引入Carla道路类型相关的头文件
17
18namespace carla {
19namespace traffic_manager {
20
21 namespace cc = carla::client; // 简化命名空间cc为carla::client
22 namespace cg = carla::geom; // 简化命名空间cg为carla::geom
23 using WaypointPtr = carla::SharedPtr<cc::Waypoint>; // 定义WaypointPtr为Waypoint的智能指针类型
24 using GeoGridId = carla::road::JuncId; // 定义GeoGridId为交叉口ID类型
25 enum class RoadOption : uint8_t { // 定义道路选项的枚举类
26 Void = 0, // 无效选项
27 Left = 1, // 向左
28 Right = 2, // 向右
29 Straight = 3, // 直行
30 LaneFollow = 4, // 跟随车道
31 ChangeLaneLeft = 5, // 向左变道
32 ChangeLaneRight = 6, // 向右变道
33 RoadEnd = 7 // 道路结束
34 };
35
36 /// 该类是Carla的Waypoint对象的简单封装。
37 /// 该类用于表示世界地图的离散样本。
39
40 using SimpleWaypointPtr = std::shared_ptr<SimpleWaypoint>; // 定义SimpleWaypointPtr为SimpleWaypoint的共享指针
41
42 private:
43
44 /// 指向Carla的Waypoint对象的指针,作为此类的封装对象。
46 /// 指向下一个连接waypoint的指针列表。
47 std::vector<SimpleWaypointPtr> next_waypoints;
48 /// 指向前一个连接waypoint的指针列表。
49 std::vector<SimpleWaypointPtr> previous_waypoints;
50 /// 指向左侧变道waypoint的指针。
52 /// 指向右侧变道waypoint的指针。
54 /// 当前waypoint的RoadOption。
55 RoadOption road_option = RoadOption::Void; // 默认设置为无效选项
56 /// 整数,用于将waypoint放置到地理网格中。
57 GeoGridId geodesic_grid_id = 0; // 初始化为0
58 // 布尔值,表示waypoint是否属于交叉口。
59 bool _is_junction = false; // 默认设置为false
60
61 public:
62
63 SimpleWaypoint(WaypointPtr _waypoint); // 构造函数,初始化waypoint
64 ~SimpleWaypoint(); // 析构函数
65
66 /// 返回此waypoint的位置信息。
68
69 /// 返回指向carla::waypoint的共享指针。
71
72 /// 返回下一个waypoint的列表。
73 std::vector<SimpleWaypointPtr> GetNextWaypoint() const;
74
75 /// 返回前一个waypoint的列表。
76 std::vector<SimpleWaypointPtr> GetPreviousWaypoint() const;
77
78 /// 返回沿waypoint方向的向量。
80
81 /// 返回waypoint的唯一ID。
82 uint64_t GetId() const;
83
84 /// 此方法用于设置下一个waypoint。
85 uint64_t SetNextWaypoint(const std::vector<SimpleWaypointPtr> &next_waypoints);
86
87 /// 此方法用于设置前一个waypoint。
88 uint64_t SetPreviousWaypoint(const std::vector<SimpleWaypointPtr> &next_waypoints);
89 /// 此方法用于设置最近的左侧waypoint,以便进行变道。
91
92 /// 此方法用于设置最近的右侧waypoint,以便进行变道。
94
95 /// 此方法用于获取最近的左侧waypoint。
97
98 /// 此方法用于获取最近的右侧waypoint。
100
101 /// 访问器方法,用于设置地理网格ID。
102 void SetGeodesicGridId(GeoGridId _geodesic_grid_id);
103
104 /// 访问器方法,用于获取地理网格ID。
106
107 /// 方法用于获取waypoint的交叉口ID。
108 GeoGridId GetJunctionId() const;
109
110 /// 计算对象的waypoint到给定位置的距离。
111 float Distance(const cg::Location &location) const;
112
113 /// 计算当前SimpleWaypoint对象与另一个SimpleWaypoint对象的距离。
114 float Distance(const SimpleWaypointPtr &other) const;
115
116 /// 计算到给定位置的距离的平方。
117 float DistanceSquared(const cg::Location &location) const;
118
119 /// 计算到其他waypoints的距离的平方。
120 float DistanceSquared(const SimpleWaypointPtr &other) const;
121
122 /// 如果对象的waypoint属于交叉口,则返回true。
123 bool CheckJunction() const;
124
125 /// 此方法用于设置waypoint是否属于交叉口。
126 void SetIsJunction(bool value);
127
128 /// 如果对象的waypoint属于交叉口(不使用OpenDrive),则返回true。
129 bool CheckIntersection() const;
130
131 /// 返回当前waypoint的变换对象。
133
134 // 访问器方法,用于设置道路选项。
135 void SetRoadOption(RoadOption _road_option);
136
137 // 访问器方法,用于获取道路选项。
139 };
140
141} // namespace traffic_manager
142} // namespace carla
该类是Carla的Waypoint对象的简单封装。 该类用于表示世界地图的离散样本。
std::vector< SimpleWaypointPtr > previous_waypoints
指向前一个连接waypoint的指针列表。
bool CheckIntersection() const
如果对象的waypoint属于交叉口(不使用OpenDrive),则返回true。
uint64_t SetNextWaypoint(const std::vector< SimpleWaypointPtr > &next_waypoints)
此方法用于设置下一个waypoint。
GeoGridId GetJunctionId() const
方法用于获取waypoint的交叉口ID。
void SetLeftWaypoint(SimpleWaypointPtr &waypoint)
此方法用于设置最近的左侧waypoint,以便进行变道。
std::vector< SimpleWaypointPtr > GetNextWaypoint() const
返回下一个waypoint的列表。
void SetRightWaypoint(SimpleWaypointPtr &waypoint)
此方法用于设置最近的右侧waypoint,以便进行变道。
SimpleWaypointPtr next_left_waypoint
指向左侧变道waypoint的指针。
WaypointPtr waypoint
指向Carla的Waypoint对象的指针,作为此类的封装对象。
bool CheckJunction() const
如果对象的waypoint属于交叉口,则返回true。
float DistanceSquared(const cg::Location &location) const
计算到给定位置的距离的平方。
GeoGridId geodesic_grid_id
整数,用于将waypoint放置到地理网格中。
cg::Vector3D GetForwardVector() const
返回沿waypoint方向的向量。
void SetRoadOption(RoadOption _road_option)
std::vector< SimpleWaypointPtr > next_waypoints
指向下一个连接waypoint的指针列表。
std::vector< SimpleWaypointPtr > GetPreviousWaypoint() const
返回前一个waypoint的列表。
uint64_t GetId() const
返回waypoint的唯一ID。
WaypointPtr GetWaypoint() const
返回指向carla::waypoint的共享指针。
SimpleWaypointPtr next_right_waypoint
指向右侧变道waypoint的指针。
void SetIsJunction(bool value)
此方法用于设置waypoint是否属于交叉口。
uint64_t SetPreviousWaypoint(const std::vector< SimpleWaypointPtr > &next_waypoints)
此方法用于设置前一个waypoint。
cg::Transform GetTransform() const
返回当前waypoint的变换对象。
SimpleWaypointPtr GetLeftWaypoint()
此方法用于获取最近的左侧waypoint。
std::shared_ptr< SimpleWaypoint > SimpleWaypointPtr
float Distance(const cg::Location &location) const
计算对象的waypoint到给定位置的距离。
GeoGridId GetGeodesicGridId()
访问器方法,用于获取地理网格ID。
void SetGeodesicGridId(GeoGridId _geodesic_grid_id)
访问器方法,用于设置地理网格ID。
cg::Location GetLocation() const
返回此waypoint的位置信息。
SimpleWaypointPtr GetRightWaypoint()
此方法用于获取最近的右侧waypoint。
RoadOption road_option
当前waypoint的RoadOption。
包含客户端相关类和定义的命名空间。
Definition AtomicList.h:17
int32_t JuncId
Definition RoadTypes.h:23
carla::SharedPtr< cc::Waypoint > WaypointPtr
Waypoint的智能指针类型别名。
Definition InMemoryMap.h:45
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
boost::shared_ptr< T > SharedPtr
使用这个SharedPtr(boost::shared_ptr)以保持与boost::python的兼容性, 但未来如果可能的话,我们希望能为std::shared_ptr制作一个Python适配器。
Definition Memory.h:19