23#include "modules/common_msgs/map_msgs/map_lane.pb.h"
85 static void Join(std::vector<LaneSegment>* segments);
141 const double start_s,
162 const std::vector<common::math::LineSegment2d>&
segments()
const {
167 double* accumulate_s,
double* lateral,
168 double* distance)
const;
229 const double max_approximation_error);
232 const double max_approximation_error);
247 const double end_s)
const;
250 double* lateral)
const;
252 double* lateral,
double* distance)
const;
254 const double hueristic_start_s,
255 const double hueristic_end_s,
256 double* accumulate_s,
double* lateral,
257 double* min_distance)
const;
259 double* lateral)
const;
262 double* accumulate_s,
double* lateral)
const;
265 double* accumulate_s,
double* lateral)
const;
268 double* lateral,
double* distance)
const;
271 double* accumulate_s,
double* lateral,
272 double* distance)
const;
275 double* heading)
const;
290 const std::vector<common::math::LineSegment2d>&
segments()
const {
337 bool GetLaneWidth(
const double s,
double* lane_left_width,
338 double* lane_right_width)
const;
342 bool GetRoadWidth(
const double s,
double* road_left_width,
343 double* road_ight_width)
const;
358 double GetSample(
const std::vector<double>& samples,
const double s)
const;
361 std::function<const std::vector<OverlapInfoConstPtr>&(
const LaneInfo&)>;
363 std::vector<PathOverlap>*
const overlaps)
const;
408 void FindIndex(
int left_index,
int right_index,
double target_s,
409 int* mid_index)
const;
Rectangular (undirected) bounding box in 2-D.
Implements a class of 2-dimensional vectors.
double y() const
Getter for y component
double x() const
Getter for x component
InterpolatedIndex(int id, double offset)
std::vector< LaneWaypoint > lane_waypoints_
MapPathPoint(const common::math::Vec2d &point, double heading)
void add_lane_waypoints(const std::vector< LaneWaypoint > &lane_waypoints)
MapPathPoint(const common::math::Vec2d &point, double heading, LaneWaypoint lane_waypoint)
static void RemoveDuplicates(std::vector< MapPathPoint > *points)
void add_lane_waypoint(LaneWaypoint lane_waypoint)
MapPathPoint(const common::math::Vec2d &point, double heading, std::vector< LaneWaypoint > lane_waypoints)
void clear_lane_waypoints()
const std::vector< LaneWaypoint > & lane_waypoints() const
static std::vector< MapPathPoint > GetPointsFromSegment(const LaneSegment &segment)
static std::vector< MapPathPoint > GetPointsFromLane(LaneInfoConstPtr lane, const double start_s, const double end_s)
void set_heading(const double heading)
std::string DebugString() const
int num_projection_samples_
bool is_within_max_error(const Path &path, const int s, const int t)
PathApproximation()=default
std::vector< common::math::LineSegment2d > segments_
void InitProjections(const Path &path)
PathApproximation(const Path &path, const double max_error)
std::vector< double > min_original_projections_to_right_
std::vector< int > sampled_max_original_projections_to_left_
void Init(const Path &path)
std::vector< double > max_error_per_segment_
void InitDilute(const Path &path)
double compute_max_error(const Path &path, const int s, const int t)
std::vector< double > projections_
const std::vector< common::math::LineSegment2d > & segments() const
std::vector< int > original_ids_
bool GetProjection(const Path &path, const common::math::Vec2d &point, double *accumulate_s, double *lateral, double *distance) const
const std::vector< int > & original_ids() const
std::vector< double > original_projections_
std::vector< double > max_original_projections_to_left_
bool OverlapWith(const Path &path, const common::math::Box2d &box, double width) const
const std::vector< PathOverlap > & dead_end_overlaps() const
const std::vector< PathOverlap > & area_overlaps() const
const std::vector< common::math::LineSegment2d > & segments() const
std::vector< MapPathPoint > path_points_
InterpolatedIndex GetIndexFromS(double s) const
const std::vector< LaneSegment > & lane_segments_to_next_point() const
bool GetProjectionWithWarmStartS(const common::math::Vec2d &point, double *accumulate_s, double *lateral) const
double GetSample(const std::vector< double > &samples, const double s) const
const std::vector< PathOverlap > & parking_space_overlaps() const
std::vector< PathOverlap > speed_bump_overlaps_
bool GetProjectionWithHueristicParams(const common::math::Vec2d &point, const double hueristic_start_s, const double hueristic_end_s, double *accumulate_s, double *lateral, double *min_distance) const
std::vector< double > lane_accumulated_s_
double GetLaneRightWidth(const double s) const
bool IsOnPath(const common::math::Vec2d &point) const
std::vector< double > accumulated_s_
std::vector< PathOverlap > stop_sign_overlaps_
bool GetLaneWidth(const double s, double *lane_left_width, double *lane_right_width) const
std::vector< PathOverlap > pnc_junction_overlaps_
std::vector< PathOverlap > parking_space_overlaps_
std::function< const std::vector< OverlapInfoConstPtr > &(const LaneInfo &)> GetOverlapFromLaneFunc
double GetRoadLeftWidth(const double s) const
std::vector< hdmap::LaneSegment > GetLaneSegments(const double start_s, const double end_s) const
std::vector< PathOverlap > crosswalk_overlaps_
std::vector< int > last_point_index_
const std::vector< PathOverlap > & crosswalk_overlaps() const
std::vector< double > lane_left_width_
std::vector< PathOverlap > lane_overlaps_
std::vector< PathOverlap > signal_overlaps_
double GetRoadRightWidth(const double s) const
bool GetHeadingAlongPath(const common::math::Vec2d &point, double *heading) const
const PathOverlap * NextLaneOverlap(double s) const
bool GetRoadWidth(const double s, double *road_left_width, double *road_ight_width) const
bool GetProjection(const common::math::Vec2d &point, double *accumulate_s, double *lateral) const
InterpolatedIndex GetLaneIndexFromS(double s) const
double GetSFromIndex(const InterpolatedIndex &index) const
std::vector< common::math::Vec2d > unit_directions_
std::vector< PathOverlap > yield_sign_overlaps_
std::string DebugString() const
const std::vector< PathOverlap > & junction_overlaps() const
MapPathPoint GetSmoothPoint(const InterpolatedIndex &index) const
const std::vector< PathOverlap > & signal_overlaps() const
std::vector< PathOverlap > clear_area_overlaps_
const std::vector< PathOverlap > & speed_bump_overlaps() const
bool GetNearestPoint(const common::math::Vec2d &point, double *accumulate_s, double *lateral) const
const std::vector< PathOverlap > & lane_overlaps() const
bool OverlapWith(const common::math::Box2d &box, double width) const
std::vector< PathOverlap > area_overlaps_
const std::vector< common::math::Vec2d > & unit_directions() const
std::vector< double > road_left_width_
const std::vector< PathOverlap > & yield_sign_overlaps() const
std::vector< double > lane_right_width_
const std::vector< PathOverlap > & pnc_junction_overlaps() const
std::vector< PathOverlap > dead_end_overlaps_
std::vector< common::math::LineSegment2d > segments_
bool use_path_approximation_
const PathApproximation * approximation() const
std::vector< PathOverlap > junction_overlaps_
std::vector< LaneSegment > lane_segments_to_next_point_
const std::vector< PathOverlap > & stop_sign_overlaps() const
const std::vector< MapPathPoint > & path_points() const
void GetAllOverlaps(GetOverlapFromLaneFunc GetOverlaps_from_lane, std::vector< PathOverlap > *const overlaps) const
std::vector< LaneSegment > lane_segments_
double GetLaneLeftWidth(const double s) const
PathApproximation approximation_
const std::vector< PathOverlap > & clear_area_overlaps() const
const std::vector< double > & accumulated_s() const
const std::vector< LaneSegment > & lane_segments() const
std::vector< double > road_right_width_
Define the LineSegment2d class.
std::shared_ptr< const LaneInfo > LaneInfoConstPtr
LaneBoundaryType::Type LeftBoundaryType(const LaneWaypoint &waypoint)
get left boundary type at a waypoint.
LaneBoundaryType::Type RightBoundaryType(const LaneWaypoint &waypoint)
get left boundary type at a waypoint.
LaneWaypoint RightNeighborWaypoint(const LaneWaypoint &waypoint)
get left neighbor lane waypoint.
LaneWaypoint LeftNeighborWaypoint(const LaneWaypoint &waypoint)
get left neighbor lane waypoint.
LaneSegment(LaneInfoConstPtr lane, const double start_s, const double end_s)
static void Join(std::vector< LaneSegment > *segments)
Join neighboring lane segments if they have the same lane id
std::string DebugString() const
std::string DebugString() const
LaneWaypoint(LaneInfoConstPtr lane, const double s)
LaneWaypoint(LaneInfoConstPtr lane, const double s, const double l)
std::string DebugString() const
PathOverlap(std::string object_id, const double start_s, const double end_s)