2.2.5.2. Path Planning Library

Defines

M_PI

Enums

enum class LogLevel

Values:

enumerator TRACE
enumerator DEBUG
enumerator INFO
enumerator WARN
enumerator ERROR
enumerator FATAL
enum class ConeID

Values:

enumerator YELLOW
enumerator BLUE
enumerator ORANGE
enumerator ORANGE_BIG
enum class Strategy

Values:

enumerator ERROR
enumerator ORANGE_CENTERPOINT
enumerator DYNAMIC_WINDOW_APPROACH_BLUE
enumerator DYNAMIC_WINDOW_APPROACH_YELLOW
enumerator GATE_FALLBACK
enumerator BORDERSHIFT_BLUE
enumerator BORDERSHIFT_YELLOW
enumerator RERUN_BORDERSHIFT_BLUE
enumerator RERUN_BORDERSHIFT_YELLOW
enumerator DEFAULT
enum class ComparisonType

Values:

enumerator GREATER
enumerator LESS
class PathPlanningLib

Public Functions

PathPlanningLib(LogLevel loglevel, float track_width_min = 3.0, int perceived_n_threshold = 4, int perceived_n_threshold_orange_big = 3, float delaunay_lines_max_length = 6.5, float max_distance_between_cone_clusters = 6.0, float sorting_angle_threshold = 52.5, bool clockwise = true, float max_distance_centerpoints = 10.0, float min_distance_close_cones = 2.0)
std::tuple<Eigen::MatrixX2d, Eigen::MatrixX2d, Eigen::VectorXi, bool> planCenterline(const Eigen::MatrixX2d &left_cones, const Eigen::MatrixX2d &right_cones, const Eigen::MatrixX2d &orange_cones, const Eigen::MatrixXi &percieved_n_left_cones, const Eigen::MatrixXi &percieved_n_right_cones, const Eigen::MatrixXi &percieved_n_orange_cones, bool closed_track = false)
std::chrono::duration<double> getElapsedTime()

Private Functions

bool localPathPlanning()
bool checkForCenterpoints(Strategy strategy)
void truncateCenterline()
void sortCenterline()
void combineWithStartingCenterpoints()
bool fullPathPlanner()
bool pathPlanningRerun()
Eigen::MatrixX2d removeCloseCones(const Eigen::MatrixX2d &all_cones, const Eigen::MatrixX2d &unused_cones, const Eigen::MatrixXi &percieved_n)
std::tuple<Eigen::MatrixX2d, Eigen::MatrixX2d> delaunay()
std::tuple<Eigen::MatrixX2d, Eigen::MatrixX2d> advancedDynamicWindow(const Eigen::MatrixX2d &point, ConeID cone_id)
std::tuple<Eigen::MatrixX2d, Eigen::MatrixX2d> bordershift(const Eigen::MatrixX2d &points, ConeID cone_id)
std::tuple<Eigen::MatrixX2d, Eigen::MatrixX2d> gateFallback()
Eigen::MatrixX2d startingCenterpoints()
Eigen::VectorXi sortPoints(const Eigen::MatrixX2d &centerpoints, float max_distance_centerpoints, float angle_threshold)
std::vector<Eigen::MatrixX2d> splitCones(const Eigen::MatrixX2d &cones, const Eigen::VectorXd &distances, double threshold)
void processClusters(const std::vector<Eigen::MatrixX2d> &clusters, ConeID cone_id)
Eigen::MatrixXi removeDuplicatesAndSameColorCones(const Eigen::MatrixXi &result, int left_cones_size)
Eigen::MatrixXi filterLines(const Eigen::MatrixXd &coordinates, Eigen::MatrixXi &result, double threshold, ComparisonType comparison_type)
Eigen::MatrixXd calcDistances(const Eigen::MatrixXd &coordinates, const Eigen::MatrixXi &result)
Eigen::MatrixXi sortMatrixRows(const Eigen::MatrixXi &mat)
Eigen::MatrixX2d calculateCenterpoints(const Eigen::MatrixXi &result)

Private Members

LogLevel logLevel_
float track_width_min_
int perceived_n_threshold_
int perceived_n_threshold_orange_big_
float delaunay_lines_max_length_
float min_distance_between_cone_clusters_
float sorting_angle_threshold_
bool clockwise_
float max_distance_centerpoints_
float min_distance_close_cones_
bool closed_track_ = false
std::chrono::duration<double> elapsed_time_ = std::chrono::duration<double>::zero()
Eigen::MatrixX2d left_cones_
Eigen::MatrixX2d right_cones_
Eigen::MatrixX2d orange_cones_
Eigen::MatrixXi percieved_n_left_cones_
Eigen::MatrixXi percieved_n_right_cones_
Eigen::MatrixXi percieved_n_orange_big_cones_
Eigen::MatrixX2d centerpoints_
Eigen::MatrixX2d track_widths_
Eigen::MatrixX2d delaunay_coordinates_
Eigen::MatrixX2d unused_cones_left_
Eigen::MatrixX2d unused_cones_right_
Eigen::VectorXi strategy_
Eigen::MatrixX2d starting_centerpoints_
Eigen::MatrixX2d starting_track_widths_
Eigen::VectorXi starting_strategy_