20 #include <unordered_map> 21 #include <unordered_set> 25 #include "modules/routing/proto/topo_graph.pb.h" 35 double start_s,
double end_s);
48 const std::string&
LaneId()
const;
49 const std::string&
RoadId()
const;
55 const std::unordered_set<const TopoEdge*>&
InFromAllEdge()
const;
59 const std::unordered_set<const TopoEdge*>&
InFromPreEdge()
const;
60 const std::unordered_set<const TopoEdge*>&
OutToAllEdge()
const;
61 const std::unordered_set<const TopoEdge*>&
OutToLeftEdge()
const;
64 const std::unordered_set<const TopoEdge*>&
OutToSucEdge()
const;
76 const TopoEdge* edge_for_type)
const;
82 bool FindAnchorPoint();
83 void SetAnchorPoint(
const common::PointENU& anchor_point);
86 common::PointENU anchor_point_;
90 bool is_left_range_enough_;
91 int left_prefer_range_index_;
92 bool is_right_range_enough_;
93 int right_prefer_range_index_;
95 std::vector<NodeSRange> left_out_sorted_range_;
96 std::vector<NodeSRange> right_out_sorted_range_;
98 std::unordered_set<const TopoEdge*> in_from_all_edge_set_;
99 std::unordered_set<const TopoEdge*> in_from_left_edge_set_;
100 std::unordered_set<const TopoEdge*> in_from_right_edge_set_;
101 std::unordered_set<const TopoEdge*> in_from_left_or_right_edge_set_;
102 std::unordered_set<const TopoEdge*> in_from_pre_edge_set_;
103 std::unordered_set<const TopoEdge*> out_to_all_edge_set_;
104 std::unordered_set<const TopoEdge*> out_to_left_edge_set_;
105 std::unordered_set<const TopoEdge*> out_to_right_edge_set_;
106 std::unordered_set<const TopoEdge*> out_to_left_or_right_edge_set_;
107 std::unordered_set<const TopoEdge*> out_to_suc_edge_set_;
109 std::unordered_map<const TopoNode*, const TopoEdge*> out_edge_map_;
110 std::unordered_map<const TopoNode*, const TopoEdge*> in_edge_map_;
128 const Edge& PbEdge()
const;
130 const std::string& FromLaneId()
const;
131 const std::string& ToLaneId()
const;
139 const TopoNode* from_node_ =
nullptr;
const std::vector< NodeSRange > & RightOutRange() const
const std::unordered_set< const TopoEdge * > & OutToLeftEdge() const
bool IsOverlapEnough(const TopoNode *sub_node, const TopoEdge *edge_for_type) const
const std::vector< NodeSRange > & LeftOutRange() const
Definition: topo_node.h:32
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
Definition: topo_node.h:118
Definition: topo_node.h:117
void AddOutEdge(const TopoEdge *edge)
bool IsOutToSucEdgeValid() const
const std::unordered_set< const TopoEdge * > & OutToLeftOrRightEdge() const
const TopoEdge * GetOutEdgeTo(const TopoNode *to_node) const
const common::PointENU & AnchorPoint() const
bool IsInFromPreEdgeValid() const
const TopoNode * OriginNode() const
const std::string & LaneId() const
const std::unordered_set< const TopoEdge * > & OutToSucEdge() const
TopoEdgeType
Definition: topo_node.h:115
const TopoEdge * GetInEdgeFrom(const TopoNode *from_node) const
const std::unordered_set< const TopoEdge * > & InFromAllEdge() const
const std::unordered_set< const TopoEdge * > & InFromLeftOrRightEdge() const
const std::unordered_set< const TopoEdge * > & InFromPreEdge() const
const std::unordered_set< const TopoEdge * > & OutToRightEdge() const
const std::unordered_set< const TopoEdge * > & OutToAllEdge() const
void AddInEdge(const TopoEdge *edge)
Definition: topo_node.h:116
const std::unordered_set< const TopoEdge * > & InFromLeftEdge() const
Definition: topo_node.h:121
const Node & PbNode() const
static bool IsOutRangeEnough(const std::vector< NodeSRange > &range_vec, double start_s, double end_s)
const std::string & RoadId() const
const hdmap::Curve & CentralCurve() const
const std::unordered_set< const TopoEdge * > & InFromRightEdge() const
Definition: topo_range.h:22
TopoNode(const Node &node)