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" 50 template <
class Object,
class GeoObject>
54 const Object *
object,
const GeoObject *
geo_object,
56 : aabox_(aabox), object_(object), geo_object_(geo_object), id_(id) {}
60 return geo_object_->DistanceTo(point);
63 return geo_object_->DistanceSquareTo(point);
65 const Object *
object()
const {
return object_; }
66 const GeoObject *
geo_object()
const {
return geo_object_; }
67 int id()
const {
return id_; }
71 const Object *object_;
72 const GeoObject *geo_object_;
143 explicit LaneInfo(
const Lane &lane);
145 const Id &
id()
const {
return lane_.id(); }
146 const Id &
road_id()
const {
return road_id_; }
148 const Lane &
lane()
const {
return lane_; }
149 const std::vector<apollo::common::math::Vec2d> &
points()
const {
153 return unit_directions_;
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 {
161 const std::vector<double> &
accumulate_s()
const {
return accumulated_s_; }
162 const std::vector<OverlapInfoConstPtr> &
overlaps()
const {
return overlaps_; }
166 const std::vector<OverlapInfoConstPtr> &
signals()
const {
return signals_; }
176 const std::vector<OverlapInfoConstPtr> &
junctions()
const {
186 return parking_spaces_;
189 return pnc_junctions_;
194 return sampled_left_width_;
197 return sampled_right_width_;
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;
204 return sampled_left_road_width_;
207 return sampled_right_road_width_;
209 void GetRoadWidth(
const double s,
double *left_width,
210 double *right_width)
const;
211 double GetRoadWidth(
const double s)
const;
216 apollo::common::PointENU GetSmoothPoint(
double s)
const;
220 int *s_offset_index)
const;
221 apollo::common::PointENU GetNearestPoint(
224 double *accumulate_s,
double *lateral)
const;
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;
235 void set_road_id(
const Id &road_id) { road_id_ = road_id; }
236 void set_section_id(
const Id §ion_id) { section_id_ = section_id; }
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_;
261 std::vector<SampledWidth> sampled_left_road_width_;
262 std::vector<SampledWidth> sampled_right_road_width_;
264 std::vector<LaneSegmentBox> segment_box_list_;
265 std::unique_ptr<LaneSegmentKDTree> lane_segment_kdtree_;
275 const Id &
id()
const {
return junction_.id(); }
276 const Junction &
junction()
const {
return junction_; }
280 return overlap_stop_sign_ids_;
286 void PostProcess(
const HDMapImpl &map_instance);
287 void UpdateOverlaps(
const HDMapImpl &map_instance);
290 const Junction &junction_;
293 std::vector<Id> overlap_stop_sign_ids_;
294 std::vector<Id> overlap_ids_;
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 {
315 const Signal &signal_;
316 std::vector<apollo::common::math::LineSegment2d> segments_;
327 const Id &
id()
const {
return crosswalk_.id(); }
328 const Crosswalk &
crosswalk()
const {
return crosswalk_; }
335 const Crosswalk &crosswalk_;
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 {
354 return overlap_junction_ids_;
360 void PostProcess(
const HDMapImpl &map_instance);
361 void UpdateOverlaps(
const HDMapImpl &map_instance);
364 const StopSign &stop_sign_;
365 std::vector<apollo::common::math::LineSegment2d> segments_;
367 std::vector<Id> overlap_lane_ids_;
368 std::vector<Id> overlap_junction_ids_;
369 std::vector<Id> overlap_ids_;
380 const Id &
id()
const {
return yield_sign_.id(); }
382 const std::vector<apollo::common::math::LineSegment2d> &
segments()
const {
390 const YieldSign &yield_sign_;
391 std::vector<apollo::common::math::LineSegment2d> segments_;
402 const Id &
id()
const {
return clear_area_.id(); }
410 const ClearArea &clear_area_;
422 const Id &
id()
const {
return speed_bump_.id(); }
424 const std::vector<apollo::common::math::LineSegment2d> &
segments()
const {
432 const SpeedBump &speed_bump_;
433 std::vector<apollo::common::math::LineSegment2d> segments_;
444 const Id &
id()
const {
return overlap_.id(); }
445 const Overlap &
overlap()
const {
return overlap_; }
446 const ObjectOverlapInfo *GetObjectOverlapInfo(
const Id &
id)
const;
449 const Overlap &overlap_;
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_; }
462 const std::vector<RoadBoundary> &GetBoundaries()
const;
464 apollo::hdmap::Road_Type
type()
const {
return road_.type(); }
468 std::vector<RoadSection> sections_;
469 std::vector<RoadBoundary> road_boundaries_;
475 const Id &
id()
const {
return parking_space_.id(); }
483 const ParkingSpace &parking_space_;
495 const Id &
id()
const {
return junction_.id(); }
503 const PNCJunction &junction_;
506 std::vector<Id> overlap_ids_;
521 explicit RSUInfo(
const RSU& rsu);
523 const Id&
id()
const {
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
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