Apollo  6.0
Open source self driving car software
hdmap_common.h
Go to the documentation of this file.
1 /* Copyright 2017 The Apollo Authors. All Rights Reserved.
2 
3 Licensed under the Apache License, Version 2.0 (the "License");
4 you may not use this file except in compliance with the License.
5 You may obtain a copy of the License at
6 
7  http://www.apache.org/licenses/LICENSE-2.0
8 
9 Unless required by applicable law or agreed to in writing, software
10 distributed under the License is distributed on an "AS IS" BASIS,
11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 See the License for the specific language governing permissions and
13 limitations under the License.
14 =========================================================================*/
15 
16 #pragma once
17 
18 #include <memory>
19 #include <string>
20 #include <utility>
21 #include <vector>
22 
28 #include "modules/map/proto/map_clear_area.pb.h"
29 #include "modules/map/proto/map_crosswalk.pb.h"
30 #include "modules/map/proto/map_id.pb.h"
31 #include "modules/map/proto/map_junction.pb.h"
32 #include "modules/map/proto/map_lane.pb.h"
33 #include "modules/map/proto/map_overlap.pb.h"
34 #include "modules/map/proto/map_parking_space.pb.h"
35 #include "modules/map/proto/map_pnc_junction.pb.h"
36 #include "modules/map/proto/map_road.pb.h"
37 #include "modules/map/proto/map_signal.pb.h"
38 #include "modules/map/proto/map_speed_bump.pb.h"
39 #include "modules/map/proto/map_stop_sign.pb.h"
40 #include "modules/map/proto/map_yield_sign.pb.h"
41 #include "modules/map/proto/map_rsu.pb.h"
42 
47 namespace apollo {
48 namespace hdmap {
49 
50 template <class Object, class GeoObject>
52  public:
54  const Object *object, const GeoObject *geo_object,
55  const int id)
56  : aabox_(aabox), object_(object), geo_object_(geo_object), id_(id) {}
58  const apollo::common::math::AABox2d &aabox() const { return aabox_; }
59  double DistanceTo(const apollo::common::math::Vec2d &point) const {
60  return geo_object_->DistanceTo(point);
61  }
62  double DistanceSquareTo(const apollo::common::math::Vec2d &point) const {
63  return geo_object_->DistanceSquareTo(point);
64  }
65  const Object *object() const { return object_; }
66  const GeoObject *geo_object() const { return geo_object_; }
67  int id() const { return id_; }
68 
69  private:
71  const Object *object_;
72  const GeoObject *geo_object_;
73  int id_;
74 };
75 
76 class LaneInfo;
77 class JunctionInfo;
78 class CrosswalkInfo;
79 class SignalInfo;
80 class StopSignInfo;
81 class YieldSignInfo;
82 class OverlapInfo;
83 class ClearAreaInfo;
84 class SpeedBumpInfo;
85 class RoadInfo;
86 class ParkingSpaceInfo;
87 class PNCJunctionInfo;
88 class RSUInfo;
89 class HDMapImpl;
90 
91 struct LineBoundary {
92  std::vector<apollo::common::PointENU> line_points;
93 };
95  std::vector<apollo::common::PointENU> polygon_points;
96 };
97 
98 enum class PolygonType {
99  JUNCTION_POLYGON = 0,
101  ROAD_HOLE_POLYGON = 2,
102 };
103 
104 struct RoiAttribute {
106  Id id;
107 };
108 
109 struct PolygonRoi {
112 };
113 
114 struct RoadRoi {
115  Id id;
118  std::vector<PolygonBoundary> holes_boundary;
119 };
120 
121 using LaneSegmentBox =
124 using OverlapInfoConstPtr = std::shared_ptr<const OverlapInfo>;
125 using LaneInfoConstPtr = std::shared_ptr<const LaneInfo>;
126 using JunctionInfoConstPtr = std::shared_ptr<const JunctionInfo>;
127 using SignalInfoConstPtr = std::shared_ptr<const SignalInfo>;
128 using CrosswalkInfoConstPtr = std::shared_ptr<const CrosswalkInfo>;
129 using StopSignInfoConstPtr = std::shared_ptr<const StopSignInfo>;
130 using YieldSignInfoConstPtr = std::shared_ptr<const YieldSignInfo>;
131 using ClearAreaInfoConstPtr = std::shared_ptr<const ClearAreaInfo>;
132 using SpeedBumpInfoConstPtr = std::shared_ptr<const SpeedBumpInfo>;
133 using RoadInfoConstPtr = std::shared_ptr<const RoadInfo>;
134 using ParkingSpaceInfoConstPtr = std::shared_ptr<const ParkingSpaceInfo>;
135 using RoadROIBoundaryPtr = std::shared_ptr<RoadROIBoundary>;
136 using PolygonRoiPtr = std::shared_ptr<PolygonRoi>;
137 using RoadRoiPtr = std::shared_ptr<RoadRoi>;
138 using PNCJunctionInfoConstPtr = std::shared_ptr<const PNCJunctionInfo>;
139 using RSUInfoConstPtr = std::shared_ptr<const RSUInfo>;
140 
141 class LaneInfo {
142  public:
143  explicit LaneInfo(const Lane &lane);
144 
145  const Id &id() const { return lane_.id(); }
146  const Id &road_id() const { return road_id_; }
147  const Id &section_id() const { return section_id_; }
148  const Lane &lane() const { return lane_; }
149  const std::vector<apollo::common::math::Vec2d> &points() const {
150  return points_;
151  }
152  const std::vector<apollo::common::math::Vec2d> &unit_directions() const {
153  return unit_directions_;
154  }
155  double Heading(const double s) const;
156  double Curvature(const double s) const;
157  const std::vector<double> &headings() const { return headings_; }
158  const std::vector<apollo::common::math::LineSegment2d> &segments() const {
159  return segments_;
160  }
161  const std::vector<double> &accumulate_s() const { return accumulated_s_; }
162  const std::vector<OverlapInfoConstPtr> &overlaps() const { return overlaps_; }
163  const std::vector<OverlapInfoConstPtr> &cross_lanes() const {
164  return cross_lanes_;
165  }
166  const std::vector<OverlapInfoConstPtr> &signals() const { return signals_; }
167  const std::vector<OverlapInfoConstPtr> &yield_signs() const {
168  return yield_signs_;
169  }
170  const std::vector<OverlapInfoConstPtr> &stop_signs() const {
171  return stop_signs_;
172  }
173  const std::vector<OverlapInfoConstPtr> &crosswalks() const {
174  return crosswalks_;
175  }
176  const std::vector<OverlapInfoConstPtr> &junctions() const {
177  return junctions_;
178  }
179  const std::vector<OverlapInfoConstPtr> &clear_areas() const {
180  return clear_areas_;
181  }
182  const std::vector<OverlapInfoConstPtr> &speed_bumps() const {
183  return speed_bumps_;
184  }
185  const std::vector<OverlapInfoConstPtr> &parking_spaces() const {
186  return parking_spaces_;
187  }
188  const std::vector<OverlapInfoConstPtr> &pnc_junctions() const {
189  return pnc_junctions_;
190  }
191  double total_length() const { return total_length_; }
192  using SampledWidth = std::pair<double, double>;
193  const std::vector<SampledWidth> &sampled_left_width() const {
194  return sampled_left_width_;
195  }
196  const std::vector<SampledWidth> &sampled_right_width() const {
197  return sampled_right_width_;
198  }
199  void GetWidth(const double s, double *left_width, double *right_width) const;
200  double GetWidth(const double s) const;
201  double GetEffectiveWidth(const double s) const;
202 
203  const std::vector<SampledWidth> &sampled_left_road_width() const {
204  return sampled_left_road_width_;
205  }
206  const std::vector<SampledWidth> &sampled_right_road_width() const {
207  return sampled_right_road_width_;
208  }
209  void GetRoadWidth(const double s, double *left_width,
210  double *right_width) const;
211  double GetRoadWidth(const double s) const;
212 
213  bool IsOnLane(const apollo::common::math::Vec2d &point) const;
214  bool IsOnLane(const apollo::common::math::Box2d &box) const;
215 
216  apollo::common::PointENU GetSmoothPoint(double s) const;
217  double DistanceTo(const apollo::common::math::Vec2d &point) const;
218  double DistanceTo(const apollo::common::math::Vec2d &point,
219  apollo::common::math::Vec2d *map_point, double *s_offset,
220  int *s_offset_index) const;
221  apollo::common::PointENU GetNearestPoint(
222  const apollo::common::math::Vec2d &point, double *distance) const;
223  bool GetProjection(const apollo::common::math::Vec2d &point,
224  double *accumulate_s, double *lateral) const;
225 
226  private:
227  friend class HDMapImpl;
228  friend class RoadInfo;
229  void Init();
230  void PostProcess(const HDMapImpl &map_instance);
231  void UpdateOverlaps(const HDMapImpl &map_instance);
232  double GetWidthFromSample(const std::vector<LaneInfo::SampledWidth> &samples,
233  const double s) const;
234  void CreateKDTree();
235  void set_road_id(const Id &road_id) { road_id_ = road_id; }
236  void set_section_id(const Id &section_id) { section_id_ = section_id; }
237 
238  private:
239  const Lane &lane_;
240  std::vector<apollo::common::math::Vec2d> points_;
241  std::vector<apollo::common::math::Vec2d> unit_directions_;
242  std::vector<double> headings_;
243  std::vector<apollo::common::math::LineSegment2d> segments_;
244  std::vector<double> accumulated_s_;
245  std::vector<std::string> overlap_ids_;
246  std::vector<OverlapInfoConstPtr> overlaps_;
247  std::vector<OverlapInfoConstPtr> cross_lanes_;
248  std::vector<OverlapInfoConstPtr> signals_;
249  std::vector<OverlapInfoConstPtr> yield_signs_;
250  std::vector<OverlapInfoConstPtr> stop_signs_;
251  std::vector<OverlapInfoConstPtr> crosswalks_;
252  std::vector<OverlapInfoConstPtr> junctions_;
253  std::vector<OverlapInfoConstPtr> clear_areas_;
254  std::vector<OverlapInfoConstPtr> speed_bumps_;
255  std::vector<OverlapInfoConstPtr> parking_spaces_;
256  std::vector<OverlapInfoConstPtr> pnc_junctions_;
257  double total_length_ = 0.0;
258  std::vector<SampledWidth> sampled_left_width_;
259  std::vector<SampledWidth> sampled_right_width_;
260 
261  std::vector<SampledWidth> sampled_left_road_width_;
262  std::vector<SampledWidth> sampled_right_road_width_;
263 
264  std::vector<LaneSegmentBox> segment_box_list_;
265  std::unique_ptr<LaneSegmentKDTree> lane_segment_kdtree_;
266 
267  Id road_id_;
268  Id section_id_;
269 };
270 
272  public:
273  explicit JunctionInfo(const Junction &junction);
274 
275  const Id &id() const { return junction_.id(); }
276  const Junction &junction() const { return junction_; }
277  const apollo::common::math::Polygon2d &polygon() const { return polygon_; }
278 
279  const std::vector<Id> &OverlapStopSignIds() const {
280  return overlap_stop_sign_ids_;
281  }
282 
283  private:
284  friend class HDMapImpl;
285  void Init();
286  void PostProcess(const HDMapImpl &map_instance);
287  void UpdateOverlaps(const HDMapImpl &map_instance);
288 
289  private:
290  const Junction &junction_;
292 
293  std::vector<Id> overlap_stop_sign_ids_;
294  std::vector<Id> overlap_ids_;
295 };
296 using JunctionPolygonBox =
298 using JunctionPolygonKDTree =
300 
301 class SignalInfo {
302  public:
303  explicit SignalInfo(const Signal &signal);
304 
305  const Id &id() const { return signal_.id(); }
306  const Signal &signal() const { return signal_; }
307  const std::vector<apollo::common::math::LineSegment2d> &segments() const {
308  return segments_;
309  }
310 
311  private:
312  void Init();
313 
314  private:
315  const Signal &signal_;
316  std::vector<apollo::common::math::LineSegment2d> segments_;
317 };
318 using SignalSegmentBox =
320 using SignalSegmentKDTree =
322 
324  public:
325  explicit CrosswalkInfo(const Crosswalk &crosswalk);
326 
327  const Id &id() const { return crosswalk_.id(); }
328  const Crosswalk &crosswalk() const { return crosswalk_; }
329  const apollo::common::math::Polygon2d &polygon() const { return polygon_; }
330 
331  private:
332  void Init();
333 
334  private:
335  const Crosswalk &crosswalk_;
337 };
338 using CrosswalkPolygonBox =
342 
344  public:
345  explicit StopSignInfo(const StopSign &stop_sign);
346 
347  const Id &id() const { return stop_sign_.id(); }
348  const StopSign &stop_sign() const { return stop_sign_; }
349  const std::vector<apollo::common::math::LineSegment2d> &segments() const {
350  return segments_;
351  }
352  const std::vector<Id> &OverlapLaneIds() const { return overlap_lane_ids_; }
353  const std::vector<Id> &OverlapJunctionIds() const {
354  return overlap_junction_ids_;
355  }
356 
357  private:
358  friend class HDMapImpl;
359  void init();
360  void PostProcess(const HDMapImpl &map_instance);
361  void UpdateOverlaps(const HDMapImpl &map_instance);
362 
363  private:
364  const StopSign &stop_sign_;
365  std::vector<apollo::common::math::LineSegment2d> segments_;
366 
367  std::vector<Id> overlap_lane_ids_;
368  std::vector<Id> overlap_junction_ids_;
369  std::vector<Id> overlap_ids_;
370 };
371 using StopSignSegmentBox =
373 using StopSignSegmentKDTree =
375 
377  public:
378  explicit YieldSignInfo(const YieldSign &yield_sign);
379 
380  const Id &id() const { return yield_sign_.id(); }
381  const YieldSign &yield_sign() const { return yield_sign_; }
382  const std::vector<apollo::common::math::LineSegment2d> &segments() const {
383  return segments_;
384  }
385 
386  private:
387  void Init();
388 
389  private:
390  const YieldSign &yield_sign_;
391  std::vector<apollo::common::math::LineSegment2d> segments_;
392 };
393 using YieldSignSegmentBox =
397 
399  public:
400  explicit ClearAreaInfo(const ClearArea &clear_area);
401 
402  const Id &id() const { return clear_area_.id(); }
403  const ClearArea &clear_area() const { return clear_area_; }
404  const apollo::common::math::Polygon2d &polygon() const { return polygon_; }
405 
406  private:
407  void Init();
408 
409  private:
410  const ClearArea &clear_area_;
412 };
413 using ClearAreaPolygonBox =
417 
419  public:
420  explicit SpeedBumpInfo(const SpeedBump &speed_bump);
421 
422  const Id &id() const { return speed_bump_.id(); }
423  const SpeedBump &speed_bump() const { return speed_bump_; }
424  const std::vector<apollo::common::math::LineSegment2d> &segments() const {
425  return segments_;
426  }
427 
428  private:
429  void Init();
430 
431  private:
432  const SpeedBump &speed_bump_;
433  std::vector<apollo::common::math::LineSegment2d> segments_;
434 };
435 using SpeedBumpSegmentBox =
439 
440 class OverlapInfo {
441  public:
442  explicit OverlapInfo(const Overlap &overlap);
443 
444  const Id &id() const { return overlap_.id(); }
445  const Overlap &overlap() const { return overlap_; }
446  const ObjectOverlapInfo *GetObjectOverlapInfo(const Id &id) const;
447 
448  private:
449  const Overlap &overlap_;
450 };
451 
452 class RoadInfo {
453  public:
454  explicit RoadInfo(const Road &road);
455  const Id &id() const { return road_.id(); }
456  const Road &road() const { return road_; }
457  const std::vector<RoadSection> &sections() const { return sections_; }
458 
459  const Id &junction_id() const { return road_.junction_id(); }
460  bool has_junction_id() const { return road_.has_junction_id(); }
461 
462  const std::vector<RoadBoundary> &GetBoundaries() const;
463 
464  apollo::hdmap::Road_Type type() const { return road_.type(); }
465 
466  private:
467  Road road_;
468  std::vector<RoadSection> sections_;
469  std::vector<RoadBoundary> road_boundaries_;
470 };
471 
473  public:
474  explicit ParkingSpaceInfo(const ParkingSpace &parkingspace);
475  const Id &id() const { return parking_space_.id(); }
476  const ParkingSpace &parking_space() const { return parking_space_; }
477  const apollo::common::math::Polygon2d &polygon() const { return polygon_; }
478 
479  private:
480  void Init();
481 
482  private:
483  const ParkingSpace &parking_space_;
485 };
490 
492  public:
493  explicit PNCJunctionInfo(const PNCJunction &pnc_junction);
494 
495  const Id &id() const { return junction_.id(); }
496  const PNCJunction &pnc_junction() const { return junction_; }
497  const apollo::common::math::Polygon2d &polygon() const { return polygon_; }
498 
499  private:
500  void Init();
501 
502  private:
503  const PNCJunction &junction_;
505 
506  std::vector<Id> overlap_ids_;
507 };
508 using PNCJunctionPolygonBox =
512 
515 };
516 
517 using JunctionBoundaryPtr = std::shared_ptr<JunctionBoundary>;
518 
519 class RSUInfo {
520  public:
521  explicit RSUInfo(const RSU& rsu);
522 
523  const Id& id() const {
524  return _rsu.id();
525  }
526  const RSU& rsu() const {
527  return _rsu;
528  }
529 
530  private:
531  RSU _rsu;
532 };
533 
534 } // namespace hdmap
535 } // namespace apollo
const std::vector< apollo::common::math::Vec2d > & points() const
Definition: hdmap_common.h:149
Definition: hdmap_common.h:472
std::vector< apollo::common::PointENU > line_points
Definition: hdmap_common.h:92
const std::vector< Id > & OverlapStopSignIds() const
Definition: hdmap_common.h:279
std::shared_ptr< const PNCJunctionInfo > PNCJunctionInfoConstPtr
Definition: hdmap_common.h:138
std::shared_ptr< const RoadInfo > RoadInfoConstPtr
Definition: hdmap_common.h:133
~ObjectWithAABox()
Definition: hdmap_common.h:57
const std::vector< OverlapInfoConstPtr > & speed_bumps() const
Definition: hdmap_common.h:182
std::shared_ptr< RoadROIBoundary > RoadROIBoundaryPtr
Definition: hdmap_common.h:135
const Id & id() const
Definition: hdmap_common.h:523
apollo::common::math::Polygon2d polygon
Definition: hdmap_common.h:110
const apollo::common::math::Polygon2d & polygon() const
Definition: hdmap_common.h:329
The class of KD-tree of Aligned Axis Bounding Box(AABox).
Definition: aaboxkdtree2d.h:415
PolygonType
Definition: hdmap_common.h:98
std::shared_ptr< const ParkingSpaceInfo > ParkingSpaceInfoConstPtr
Definition: hdmap_common.h:134
Defines the Vec2d class.
const Id & id() const
Definition: hdmap_common.h:444
const Junction & junction() const
Definition: hdmap_common.h:276
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
const Id & id() const
Definition: hdmap_common.h:422
std::shared_ptr< RoadRoi > RoadRoiPtr
Definition: hdmap_common.h:137
RoiAttribute attribute
Definition: hdmap_common.h:111
Definition: hdmap_common.h:513
const std::vector< OverlapInfoConstPtr > & cross_lanes() const
Definition: hdmap_common.h:163
const apollo::common::math::Polygon2d & polygon() const
Definition: hdmap_common.h:477
const Id & id() const
Definition: hdmap_common.h:347
const apollo::common::math::Polygon2d & polygon() const
Definition: hdmap_common.h:497
JunctionInfoConstPtr junction_info
Definition: hdmap_common.h:514
const std::vector< OverlapInfoConstPtr > & junctions() const
Definition: hdmap_common.h:176
const std::vector< apollo::common::math::LineSegment2d > & segments() const
Definition: hdmap_common.h:424
const ParkingSpace & parking_space() const
Definition: hdmap_common.h:476
Definition: hdmap_common.h:94
const YieldSign & yield_sign() const
Definition: hdmap_common.h:381
The class of polygon in 2-D.
Definition: polygon2d.h:43
const std::vector< apollo::common::math::LineSegment2d > & segments() const
Definition: hdmap_common.h:158
std::shared_ptr< JunctionBoundary > JunctionBoundaryPtr
Definition: hdmap_common.h:517
Definition: hdmap_common.h:271
double DistanceTo(const apollo::common::math::Vec2d &point) const
Definition: hdmap_common.h:59
const std::vector< SampledWidth > & sampled_left_width() const
Definition: hdmap_common.h:193
Definition: hdmap_common.h:51
const std::vector< OverlapInfoConstPtr > & signals() const
Definition: hdmap_common.h:166
Definition: hdmap_common.h:519
const Id & junction_id() const
Definition: hdmap_common.h:459
Definition: hdmap_common.h:301
const PNCJunction & pnc_junction() const
Definition: hdmap_common.h:496
const std::vector< SampledWidth > & sampled_left_road_width() const
Definition: hdmap_common.h:203
Definition: hdmap_common.h:109
const Id & id() const
Definition: hdmap_common.h:495
bool has_junction_id() const
Definition: hdmap_common.h:460
const Id & section_id() const
Definition: hdmap_common.h:147
Definition: hdmap_common.h:376
std::vector< apollo::common::PointENU > polygon_points
Definition: hdmap_common.h:95
const std::vector< apollo::common::math::LineSegment2d > & segments() const
Definition: hdmap_common.h:349
PolygonType type
Definition: hdmap_common.h:105
const SpeedBump & speed_bump() const
Definition: hdmap_common.h:423
const StopSign & stop_sign() const
Definition: hdmap_common.h:348
double DistanceSquareTo(const apollo::common::math::Vec2d &point) const
Definition: hdmap_common.h:62
const std::vector< RoadSection > & sections() const
Definition: hdmap_common.h:457
Rectangular (undirected) bounding box in 2-D.
Definition: box2d.h:52
const Id & id() const
Definition: hdmap_common.h:380
Defines the templated AABoxKDTree2dNode class.
const GeoObject * geo_object() const
Definition: hdmap_common.h:66
Definition: hdmap_common.h:491
Id id
Definition: hdmap_common.h:115
const Id & id() const
Definition: hdmap_common.h:327
const Object * object() const
Definition: hdmap_common.h:65
const std::vector< SampledWidth > & sampled_right_width() const
Definition: hdmap_common.h:196
const std::vector< apollo::common::math::Vec2d > & unit_directions() const
Definition: hdmap_common.h:152
const Id & id() const
Definition: hdmap_common.h:455
const std::vector< OverlapInfoConstPtr > & yield_signs() const
Definition: hdmap_common.h:167
Defines the AABox2d class.
const std::vector< OverlapInfoConstPtr > & stop_signs() const
Definition: hdmap_common.h:170
std::shared_ptr< const CrosswalkInfo > CrosswalkInfoConstPtr
Definition: hdmap_common.h:128
const std::vector< Id > & OverlapJunctionIds() const
Definition: hdmap_common.h:353
const Id & id() const
Definition: hdmap_common.h:305
Implements a class of 2-dimensional vectors.
Definition: vec2d.h:42
const Signal & signal() const
Definition: hdmap_common.h:306
std::shared_ptr< const YieldSignInfo > YieldSignInfoConstPtr
Definition: hdmap_common.h:130
const std::vector< apollo::common::math::LineSegment2d > & segments() const
Definition: hdmap_common.h:307
LineBoundary right_boundary
Definition: hdmap_common.h:117
const Overlap & overlap() const
Definition: hdmap_common.h:445
const std::vector< Id > & OverlapLaneIds() const
Definition: hdmap_common.h:352
int id() const
Definition: hdmap_common.h:67
std::pair< double, double > SampledWidth
Definition: hdmap_common.h:192
const apollo::common::math::AABox2d & aabox() const
Definition: hdmap_common.h:58
Definition: hdmap_common.h:323
const std::vector< double > & accumulate_s() const
Definition: hdmap_common.h:161
const std::vector< OverlapInfoConstPtr > & clear_areas() const
Definition: hdmap_common.h:179
const std::vector< OverlapInfoConstPtr > & crosswalks() const
Definition: hdmap_common.h:173
const Lane & lane() const
Definition: hdmap_common.h:148
Definition: hdmap_common.h:418
const apollo::common::math::Polygon2d & polygon() const
Definition: hdmap_common.h:404
const std::vector< OverlapInfoConstPtr > & parking_spaces() const
Definition: hdmap_common.h:185
Definition: hdmap_common.h:104
const std::vector< apollo::common::math::LineSegment2d > & segments() const
Definition: hdmap_common.h:382
std::shared_ptr< const SpeedBumpInfo > SpeedBumpInfoConstPtr
Definition: hdmap_common.h:132
const Road & road() const
Definition: hdmap_common.h:456
const apollo::common::math::Polygon2d & polygon() const
Definition: hdmap_common.h:277
std::shared_ptr< const LaneInfo > LaneInfoConstPtr
Definition: hdmap_common.h:125
std::shared_ptr< const SignalInfo > SignalInfoConstPtr
Definition: hdmap_common.h:127
Id id
Definition: hdmap_common.h:106
apollo::hdmap::Road_Type type() const
Definition: hdmap_common.h:464
std::shared_ptr< PolygonRoi > PolygonRoiPtr
Definition: hdmap_common.h:136
bool Init(const char *binary_name)
Math-related util functions.
High-precision map loader implement.
Definition: hdmap_impl.h:56
const std::vector< double > & headings() const
Definition: hdmap_common.h:157
const Crosswalk & crosswalk() const
Definition: hdmap_common.h:328
const std::vector< OverlapInfoConstPtr > & overlaps() const
Definition: hdmap_common.h:162
std::shared_ptr< const RSUInfo > RSUInfoConstPtr
Definition: hdmap_common.h:139
Definition: hdmap_common.h:141
std::shared_ptr< const ClearAreaInfo > ClearAreaInfoConstPtr
Definition: hdmap_common.h:131
std::shared_ptr< const StopSignInfo > StopSignInfoConstPtr
Definition: hdmap_common.h:129
Definition: hdmap_common.h:343
const std::vector< OverlapInfoConstPtr > & pnc_junctions() const
Definition: hdmap_common.h:188
std::vector< PolygonBoundary > holes_boundary
Definition: hdmap_common.h:118
const std::vector< SampledWidth > & sampled_right_road_width() const
Definition: hdmap_common.h:206
std::shared_ptr< const OverlapInfo > OverlapInfoConstPtr
Definition: hdmap_common.h:124
Definition: hdmap_common.h:398
ObjectWithAABox(const apollo::common::math::AABox2d &aabox, const Object *object, const GeoObject *geo_object, const int id)
Definition: hdmap_common.h:53
const Id & id() const
Definition: hdmap_common.h:275
double total_length() const
Definition: hdmap_common.h:191
Define the Polygon2d class.
Definition: hdmap_common.h:114
const Id & road_id() const
Definition: hdmap_common.h:146
std::shared_ptr< const JunctionInfo > JunctionInfoConstPtr
Definition: hdmap_common.h:126
Definition: hdmap_common.h:440
Definition: hdmap_common.h:91
LineBoundary left_boundary
Definition: hdmap_common.h:116
const Id & id() const
Definition: hdmap_common.h:402
const RSU & rsu() const
Definition: hdmap_common.h:526
Definition: hdmap_common.h:452
const Id & id() const
Definition: hdmap_common.h:145
const Id & id() const
Definition: hdmap_common.h:475
Implements a class of (undirected) axes-aligned bounding boxes in 2-D. This class is referential-agno...
Definition: aabox2d.h:42
const ClearArea & clear_area() const
Definition: hdmap_common.h:403