27 #include <unordered_map> 31 #include "modules/common/proto/drive_state.pb.h" 32 #include "modules/common/proto/pnc_point.pb.h" 33 #include "modules/common/vehicle_state/proto/vehicle_state.pb.h" 44 #include "modules/planning/proto/lattice_structure.pb.h" 45 #include "modules/planning/proto/planning.pb.h" 60 const common::TrajectoryPoint& adc_planning_point,
64 bool Init(
const std::vector<const Obstacle*>& obstacles);
66 bool AddObstacles(
const std::vector<const Obstacle*>& obstacles);
69 const common::VehicleState&
vehicle_state()
const {
return vehicle_state_; }
83 double Cost()
const {
return cost_; }
84 void AddCost(
double cost) { cost_ += cost; }
85 void SetCost(
double cost) { cost_ = cost; }
99 const double s, hdmap::Id* ptr_lane_id,
100 double* ptr_lane_width)
const;
112 const planning_internal::Debug&
debug()
const {
return debug_; }
127 const double relative_time,
const double start_s,
133 const common::TrajectoryPoint& planning_start_point,
134 const std::vector<common::TrajectoryPoint>& trajectory,
169 const bool is_protected)
const;
179 return offset_to_other_reference_line_;
182 offset_to_other_reference_line_ = offset;
188 std::vector<PathBoundary>&& candidate_path_boundaries);
204 uint32_t
GetPriority()
const {
return reference_line_.GetPriority(); }
206 void SetPriority(uint32_t priority) { reference_line_.SetPriority(priority); }
214 return trajectory_type_;
232 const std::vector<std::pair<OverlapType, hdmap::PathOverlap>>&
234 return first_encounter_overlaps_;
242 void SetTurnSignal(
const common::VehicleSignal::TurnSignal& turn_signal);
252 void InitFirstOverlaps();
254 bool CheckChangeLane()
const;
256 void SetTurnSignalBasedOnLaneTurnType(
257 common::VehicleSignal* vehicle_signal)
const;
259 void ExportVehicleSignal(common::VehicleSignal* vehicle_signal)
const;
261 bool IsIrrelevantObstacle(
const Obstacle& obstacle);
263 void MakeDecision(DecisionResult* decision_result,
266 int MakeMainStopDecision(DecisionResult* decision_result)
const;
268 void MakeMainMissionCompleteDecision(DecisionResult* decision_result,
271 void MakeEStopDecision(DecisionResult* decision_result)
const;
273 void SetObjectDecisions(ObjectDecisions* object_decisions)
const;
275 bool AddObstacleHelper(
const std::shared_ptr<Obstacle>& obstacle);
277 bool GetFirstOverlap(
const std::vector<hdmap::PathOverlap>& path_overlaps,
281 static std::unordered_map<std::string, bool> junction_right_of_way_map_;
282 const common::VehicleState vehicle_state_;
283 const common::TrajectoryPoint adc_planning_point_;
292 bool is_drivable_ =
true;
298 std::vector<PathBoundary> candidate_path_boundaries_;
299 std::vector<PathData> candidate_path_data_;
313 SLBoundary adc_sl_boundary_;
315 planning_internal::Debug debug_;
316 LatencyStats latency_stats_;
320 bool is_on_reference_line_ =
false;
322 bool is_path_lane_borrow_ =
false;
324 ADCTrajectory::RightOfWayStatus status_ = ADCTrajectory::UNPROTECTED;
326 double offset_to_other_reference_line_ = 0.0;
328 double priority_cost_ = 0.0;
330 PlanningTarget planning_target_;
338 std::vector<std::pair<OverlapType, hdmap::PathOverlap>>
339 first_encounter_overlaps_;
347 common::VehicleSignal vehicle_signal_;
349 double cruise_speed_ = 0.0;
351 bool path_reusable_ =
false;
const planning_internal::Debug & debug() const
Definition: reference_line_info.h:112
bool GetNeighborLaneInfo(const ReferenceLineInfo::LaneType lane_type, const double s, hdmap::Id *ptr_lane_id, double *ptr_lane_width) const
double GetCruiseSpeed() const
void SetPriority(uint32_t priority)
Definition: reference_line_info.h:206
double OffsetToOtherReferenceLine() const
Definition: reference_line_info.h:178
bool GetIntersectionRightofWayStatus(const hdmap::PathOverlap &pnc_junction_overlap) const
const PathData & path_data() const
class RouteSegments
Definition: route_segments.h:50
Definition: reference_line_info.h:224
const PlanningTarget & planning_target() const
Definition: reference_line_info.h:91
Definition: planning_context.h:33
This is the class that associates an Obstacle with its path properties. An obstacle's path properties...
Definition: obstacle.h:60
Definition: reference_line_info.h:227
uint32_t GetPriority() const
Definition: reference_line_info.h:204
PathDecision represents all obstacle decisions on one path.
Definition: path_decision.h:38
void set_trajectory_type(const ADCTrajectory::TrajectoryType trajectory_type)
Definition: reference_line_info.h:208
RSSInfo * mutable_rss_info()
std::vector< common::SLPoint > GetAllStopDecisionSLPoint() const
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
void SetCandidatePathData(std::vector< PathData > &&candidate_path_data)
void ExportDecision(DecisionResult *decision_result, PlanningContext *planning_context) const
const std::vector< std::pair< OverlapType, hdmap::PathOverlap > > & FirstEncounteredOverlaps() const
Definition: reference_line_info.h:233
Definition: reference_line_info.h:226
Definition: discretized_trajectory.h:32
void SetTrajectory(const DiscretizedTrajectory &trajectory)
#define DISALLOW_COPY_AND_ASSIGN(classname)
Definition: macros.h:48
StGraphData * mutable_st_graph_data()
Definition: reference_line_info.h:217
Planning module main class. It processes GPS and IMU as input, to generate planning info...
void AddCost(double cost)
Definition: reference_line_info.h:84
LatencyStats * mutable_latency_stats()
Definition: reference_line_info.h:113
bool IsStartFrom(const ReferenceLineInfo &previous_reference_line_info) const
check if current reference line is started from another reference line info line. The method is to ch...
ReferenceLineInfo holds all data for one reference line.
Definition: reference_line_info.h:54
void SetLatticeCruiseSpeed(double speed)
const PathData & fallback_path_data() const
const DiscretizedTrajectory & trajectory() const
bool CombinePathAndSpeedProfile(const double relative_time, const double start_s, DiscretizedTrajectory *discretized_trajectory)
void SetBlockingObstacle(const std::string &blocking_obstacle_id)
hdmap::LaneInfoConstPtr LocateLaneInfo(const double s) const
ADCTrajectory::RightOfWayStatus GetRightOfWayStatus() const
const RSSInfo & rss_info() const
hdmap::Lane::LaneTurn GetPathTurnType(const double s) const
const LatencyStats & latency_stats() const
Definition: reference_line_info.h:114
Obstacle * GetBlockingObstacle() const
Definition: reference_line_info.h:194
void SetCost(double cost)
Definition: reference_line_info.h:85
planning_internal::Debug * mutable_debug()
Definition: reference_line_info.h:111
bool Init(const std::vector< const Obstacle *> &obstacles)
double PriorityCost() const
Definition: reference_line_info.h:86
bool path_reusable() const
Definition: reference_line_info.h:249
void SetCruiseSpeed(double speed)
Definition: reference_line_info.h:93
void SetPriorityCost(double cost)
Definition: reference_line_info.h:87
void SetTurnSignal(const common::VehicleSignal::TurnSignal &turn_signal)
Definition: path_data.h:36
double Cost() const
Definition: reference_line_info.h:83
void SetJunctionRightOfWay(const double junction_s, const bool is_protected) const
Definition: reference_line_info.h:223
void ExportEngageAdvice(common::EngageAdvice *engage_advice, PlanningContext *planning_context) const
bool IsNeighborLanePath() const
Definition: reference_line_info.h:225
void SetLatticeStopPoint(const StopPoint &stop_point)
Obstacle * AddObstacle(const Obstacle *obstacle)
const common::VehicleState & vehicle_state() const
Definition: reference_line_info.h:69
: data with map info and obstacle info
ReferenceLineInfo()=default
std::shared_ptr< const LaneInfo > LaneInfoConstPtr
Definition: hdmap_common.h:125
const SLBoundary & AdcSlBoundary() const
const ReferenceLine & reference_line() const
bool is_path_lane_borrow() const
Definition: reference_line_info.h:197
PathData * mutable_fallback_path_data()
std::list< hdmap::Id > TargetLaneId() const
SpeedData * mutable_speed_data()
const StGraphData & st_graph_data()
Definition: reference_line_info.h:219
const std::vector< PathBoundary > & GetCandidatePathBoundaries() const
Definition: reference_line.h:39
double SDistanceToDestination() const
bool ReachedDestination() const
ReferenceLine * mutable_reference_line()
LaneType
Definition: reference_line_info.h:56
const hdmap::RouteSegments & Lanes() const
int GetPnCJunction(const double s, hdmap::PathOverlap *pnc_junction_overlap) const
const std::vector< PathData > & GetCandidatePathData() const
void SetDrivable(bool drivable)
Definition: reference_line_info.h:229
ADCTrajectory::TrajectoryType trajectory_type() const
Definition: reference_line_info.h:213
void set_is_on_reference_line()
Definition: reference_line_info.h:202
bool IsChangeLanePath() const
void set_is_path_lane_borrow(const bool is_path_lane_borrow)
Definition: reference_line_info.h:198
std::string PathSpeedDebugString() const
PathData * mutable_path_data()
bool AddObstacles(const std::vector< const Obstacle *> &obstacles)
void set_path_reusable(const bool path_reusable)
Definition: reference_line_info.h:245
OverlapType
Definition: reference_line_info.h:222
Definition: reference_line_info.h:228
void SetOffsetToOtherReferenceLine(const double offset)
Definition: reference_line_info.h:181
Definition: speed_data.h:30
bool AdjustTrajectoryWhichStartsFromCurrentPos(const common::TrajectoryPoint &planning_start_point, const std::vector< common::TrajectoryPoint > &trajectory, DiscretizedTrajectory *adjusted_trajectory)
PathDecision * path_decision()
Definition: st_graph_data.h:37
void SetCandidatePathBoundaries(std::vector< PathBoundary > &&candidate_path_boundaries)
const SpeedData & speed_data() const