Classes | |
| class | base_path_provider_t |
| Class to provide base_path. It stores the previous path and provides base path. More... | |
| class | base_state_machine_t |
| class | basic_path_extractor_t |
| class | basic_work_list_t |
| class | change_lane_task_planner_t |
| class | curved_path_extractor_t |
| class | gc_oracle_t |
| class | goal_marker_t |
| class | graph_t |
| class | graph_search_t |
| class | intersection_task_planner_t |
| class | lane_task_planner_t |
| struct | map_cell_t |
| class | map_grid_publisher_t |
| class | mission_handler_t |
| class | mission_planner_t |
| class | obstacle_free_t |
| class | obstacle_marker_t |
| class | parking_task_planner_t |
| class | passing_lane_task_planner_t |
| class | path_extractor_t |
| class | path_generator_t |
| class | path_nudger_t |
| class | path_verifier_t |
| class | planner_t |
| struct | path_turn_info_t |
| To inform what type of turn is the path going to perform. More... | |
| struct | tp_package_t |
| struct | radar_info_t |
| class | rndf_point_t |
| class | rp_containter_t |
| Is a container class for rndf_point. It contains pointer to rndf_point_t, and provide access as clone of rndf_point_t*, except that not as a pointer but as a regular variable. This is required so that data rp_containter can be used as a key to STL libraries functions map. The library fails if trying to use key of pointer type as it uses the address of the key pointer instead of the key value. More... | |
| struct | search_cell_t |
| class | search_grid_publisher_t |
| class | safe_state_t |
| Default state of the state machine. More... | |
| class | confirm_obstacle_t |
| State to confirm that a obstacle is blocking the lane. More... | |
| class | lane_blocked_t |
| Intermediate state for switching to any of action states after the lane blockage is confirm. More... | |
| class | pre_stop_lane_blocked_t |
| class | intersection_blocked_t |
| class | post_stop_lane_blocked_t |
| class | intersection_queueing_t |
| State to keep bot waiting for intersection queuing. More... | |
| class | changing_lane_t |
| State to driving into neighboring lane for avoiding blocked lane. More... | |
| class | passing_lane_t |
| State to driving into on-coming lane for avoiding blocked lane. More... | |
| class | uturn_state_t |
| State to driving into on-coming lane for avoiding blocked lane. More... | |
| class | state_machine_t |
| class | task_plan_handler_t |
| class | task_planner_t |
| struct | lane_clipage_info_t |
| class | track_annotation_t |
| class | traffic_verifier_t |
| class | uc_planner_param_t |
| class | unparking_task_planner_t |
| class | uturn_task_planner_t |
| class | wave_gc_oracle_t |
| struct | work_info_t |
| class | work_list_interface_t |
| class | zone_marker_t |
| class | zone_planner_t |
| class | zone_task_planner_t |
Typedefs | |
| typedef grid_t< map_cell_t > | map_grid_t |
| typedef std::deque < rndf_point_t * > | mission_plan_t |
| typedef graph_t < rp_containter_t >::vertex_t | graph_node_t |
| typedef std::deque< path_wp_t > | path_t |
| typedef std::deque < rndf_t::waypoint_id_t > | plan_t |
| typedef grid_t< search_cell_t > | search_grid_t |
| typedef std::deque < task_planner_t * > | tp_plan_t |
| typedef std::vector < lane_clipage_info_t > | lane_clipage_list_t |
| typedef work_info_t | work_data_t |
Enumerations | |
| enum | path_status_t { PATH_ERROR = 0, PATH_OKAY = 1, PATH_OVER = 2, PATH_END = 3, PATH_BLOCKED = 4, PATH_TOO_LONG = 5 } |
status of path generated by TPs More... | |
| enum | path_direction_t { FORWARD, REVERSE, NO_DIRECTION } |
| enum | mobility_t { STATIC, DYNAMIC, ALL_MOBILITIES } |
| enum | TP_type_t { LANE_TP, INTERSECTION_TP, CHANGE_LANE_TP, PASSING_LANE_TP, UTURN_TP, ZONE_TP, PARKING_TP, UNPARKING_TP } |
TP Identity. More... | |
| enum | path_turn_type_t { NO_TURN, LEFT_TURN, RIGHT_TURN } |
Specify type of turn. More... | |
| enum | relative_side_t { LEFT, RIGHT } |
Verbal specify left, right sides. More... | |
| enum | state_machine_id_t { SAFE, CONFIRM_OBSTACLE, LANE_BLOCKED, PRE_STOP_LANE_BLOCKED, INTERSECTION_BLOCKED, POST_STOP_LANE_BLOCKED, INTERSECTION_QUEUEING, PASSING_LANE, CHANGING_LANE, UTURN } |
Labels for state machine states. More... | |
Functions | |
| void | append_path (path_t &target_path_, const path_t &source_path_) |
| Appends the source_path at end of target_path. | |
| bool | waypt_reached (rndf_t const *rndf_, double x_, double y_, rndf_t::waypoint_t const &w_, double width_multiplier_, double parking_radius_, double min_atrack_=MIN_ATRACK) |
| Returns true of waypoint w_ is reached by point (x_, y_). | |
| bool | zone_spot_waypt_reached (rndf_t const *rndf_, double x_, double y_, rndf_t::waypoint_t const &w_, double parking_radius_) |
| Returns true if zone spot_waypt is reached. Which is determined presently based on if x_, y_ within parking_radius_ radius from the spot. | |
| bool | point_reached (rndf_t const *rndf_, double px_, double py_, double x_, double y_, rndf_t::waypoint_t const &w_, double width_multiplier_) |
| Returns turn if point (px_, py_) is reached by point (x_, y_). The point (px_, py_) has waypoint w_, just following it. w_ is required to compute the orientation of the lane). | |
| bool | covered_by_path (path_t const &path_, double p_width_, double x_, double y_) |
| Checks if specified points (x_, y_) are coveretd by path, i.e falls next to the path by less than p_width distance. | |
| void | linear_interpolation (std::vector< path_wp_t > &inter_points_, double interp_dis_, double start_x_, double start_y_, double end_x_, double end_y_) |
| bool | point_on_path (const path_t &path_, double x_, double y_, unsigned &index_before_, unsigned &index_after_, double dis_before_path_, double dis_after_path_, double dis_off_path_, bool debug_=false) |
| Returns index on path_ just following x_, y_. If (x_, y_) is 'dis_before' distance ahead of start of m_prev_path then returns 0, if (x_, y_) is within 'dis_after' distance after last point of m_prev_path then returns index to last but one point(todo: should be last wp), if point is within the m_prev_path then returns index to point just following (x_, y_), else returns failure in finding (x_,y_) on m_prev_path by returning out of bound index i.e. m_prev_path.size(). | |
| bool | compute_end_point (double start_x_, double start_y_, double &end_x_, double &end_y_, relative_side_t &side_, rndf_lane_data_t &next_lb_, double width_multiplier_, double look_ahead_ratio_, bool same_dir_) |
| Returns the expected points after change lane. | |
| void | trace_back_path (const path_t *path_, unsigned ref_i, unsigned &trace_back_i, double &trace_dis_) |
| Walks back along the specified path starting from specified index by specified distance. The functions returns the amount of distance it could trace back and also the index of the new point after tracing back. | |
| void | copy_path (path_t &source_p_, path_data_t &des_p_) |
| Copy path from source to destination. | |
| void | copy_path (path_t &source_p_, path_t &des_p_) |
| Copy path from source to destination. | |
| void | copy_path (double x_, double y_, path_t const &src_path_, path_t &des_path_, double dis_before_, double dis_after_, double dis_off_path_) |
| Copies the src_path_ to des_path_ which lies behind (x_, y_). | |
| bool | copy_path (std::vector< path_wp_t > &inter_points_, path_t &path_, double &p_len_left_, unsigned start_i_, unsigned end_i_, double min_speed_, double max_speed_) |
| bool | copy_path (rndf_lane_data_t &lb_, path_t &path_, double &p_len_left_, unsigned start_i, unsigned end_i, double min_speed_, double max_speed_) |
| Returns false if path length reached zero, else returns true. | |
| path_status_t | add_rndf_lane_to_path (rndf_lane_data_t &lb_, path_t &path_, double &p_len_left_, double end_x_, double end_y_, double min_speed_, double max_speed_, bool reverse_, double width_multiplier_, double dis_before_=1, double dis_after_=1) |
| Appends path following x_, y_ till m_end_wp. Returns true if successful in adding the path, else returns false. | |
| path_status_t | add_path_to_switch_lane (path_t &path_, double &p_len_left_, relative_side_t &side_, rndf_lane_data_t &lb_, bool same_dir_, double min_speed_, double max_speed_, double m_width_multiplier, double m_look_ahead_ratio) |
| Extend path_ to change lane into new lane with lb_, lane boundary. | |
| void | set_last_speed_zero (path_t &path_) |
| Set the speed of last point of the path to zero. | |
| void | reset_zero_speed (path_t &path_) |
| Fillup zero speeds with neighboring point's speed. | |
| void | filter_path (path_t &p_) |
| Filters the path to remove repeated points. | |
| void | filter_path (path_data_t &p_) |
| Filters the path to remove repeated points. | |
| void | extend_path (path_t &path_, double dis_, double inter_dis_) |
| Extends the path at the end of the path by extrapolating the points along the orientation of the instantaneous orientation of the path at that point and by distance specified. | |
| void | extend_path (path_t &path_, double dis_, double inter_dis_, double orient_) |
| Adds extra points to path_, in the direction or 'orient_' for 'dis_' distance. | |
| bool | passing_lane_id (rndf_t const *rndf_, unsigned sid_, unsigned lid, unsigned &pasing_lid_) |
| Returns true if there exist a lane in opposite direction, else returns false. | |
| bool | before_intersection_within_dis (world_state_t *ws_, rndf_t const *rndf_, unsigned sid_, unsigned lid_, double x_, double y_, double for_dis_, bool stop_intersection_) |
| bool | after_intersection_within_dis (rndf_t const *rndf_, unsigned sid_, unsigned lid_, double x_, double y_, double for_dis_) |
| Returns true if from (x_, y_) on lane (sid_, lid_) is after an intersection within 'for_dis_' in front. | |
| bool | lane_blocked_for_dis (world_state_t *ws_, unsigned sid_, unsigned lid_, double x_, double y_, double for_dis_, bool forward_, bool for_static_) |
| Returns true if specified lane is blocked for given distance starting for given (x_y_) point in specified direction (forward/reverse). | |
| bool | task_planner_for_mission (rndf_t const *rndf_, rndf_point_t *wp_id_1_, rndf_point_t *wp_id_2_, std::vector< tp_package_t > &tp_seq_) |
| bool | zone_task_planner_for_mission (rndf_t const *rndf_, rndf_point_t *wp_id_1_, rndf_point_t *wp_id_2_, std::vector< tp_package_t > &tp_seq_) |
| bool | have_to_stop_at_intersection (rndf_t const *rndf_, rndf_point_t *rp_1_, rndf_point_t *rp_2_) |
| Returns true if rp_1 -> rp_2 intersection requires bot to stop, either because of stop sign or for crossing traffic. | |
| double | intersection_turn_angle (rndf_t const *rndf_, rndf_point_t *exit_point_, rndf_point_t *entry_point_) |
| Returns the angle of turn for the intersection through exit_id to entry_id. | |
| bool | is_exit_entry_pair (rndf_t const *rndf_, rndf_t::waypoint_id_t const &exit_wp_id, rndf_t::waypoint_id_t const &entry_wp_id) |
| returns true if given pair of wp_ids are entry exit pairs | |
| bool | is_exit_entry_pair (rndf_t const *rndf_, rndf_point_t const *exit_rp, rndf_point_t const *entry_rp) |
| Returns true if 'exit_rp' connects to 'entry_rp' as a exit-entry pair, else returns false. | |
| double | lane_width (rndf_t const *rndf_, unsigned sid_, unsigned lid_) |
| Returns the width of the specified lane. | |
| bool | danger_entry_point (rndf_t const *rndf_, rndf_t::waypoint_id_t const &exit_wp_, rndf_t::waypoint_id_t const &entry_wp_, std::vector< rndf_t::waypoint_id_t > &danger_points_) |
| bool | intersecting_intersection_legs (rndf_t const *rndf_, rndf_t::waypoint_id_t const &exit_wp_id_, rndf_t::waypoint_id_t const &entry_wp_id_, std::vector< rndf_t::lane_seg_t > &lane_list_) |
| bool | comes_before (world_state_t *ws_, double x1_, double y1_, double x2_, double y2_, unsigned sid_, unsigned lid_, unsigned wid_, double width_multiplier_) |
| Returns if x1, y1, comes before x2, y2 and both of them are expected to be on given segment. | |
| bool | blk_on_lane_segment (world_state_t *ws_, rndf_t::waypoint_id_t const &start_wp_id_, rndf_t::waypoint_id_t const &end_wp_id_, double static_, double valid_blk_since_) |
| Returns true if there is no blockage on the path between exit_wp and entry_wp. | |
| bool | point_on_lane (world_state_t *ws_, rndf_t const *rndf_, unsigned sid_, unsigned passing_lid_, double x_, double y_, double &new_x_, double &new_y_, unsigned &wid_before, double width_multiplier_, double first_lane_dis_before_, double last_lane_dis_after_) |
| maps (x_, y_) onto lane (passing_lid_) on segment sid_ and gives the coordinates of closest rndf_point on lane along with waypoint_id prior to mapping. | |
| void | set_speed_limit (path_t const &base_path_, path_t &path_, double min_speed_, double max_speed_) |
| Sets speed limits of path_ following after base_path_. | |
| double | path_end_orient (path_t const &path_) |
| Returns the orientation of the path at the end of the path. | |
| bool | find_a_entry_to_zone (rndf_t const *rndf_, unsigned zone_id, unsigned &entry_wid_) |
| Fills 'entry_wid_' with the wp_id of an entry wp. Returns true if could find one, else returns false. | |
| bool | consecutive_rndf_points (rndf_point_t *rp1_, rndf_point_t *rp2_) |
| Returns true if rp1_ and rp2_ are consecutive points on a lane. Fixme: Does not handle intermediate rndf points yet. | |
| bool | last_tp_planned (task_planner_t *tp_) |
| Returns true if this is the last tp planned, and following tps are not planned. | |
| void | set_path_speed (path_t &path_, double min_speed_, double max_speed_) |
| Sets the speed limit of the whole path to given values. | |
| void | print_path (path_t const &path_) |
| Prints the whole path to screen. | |
| bool | point_on_confined_path (const path_t &path_, double x_, double y_, unsigned starti_, unsigned endi_, unsigned &index_before_, unsigned &index_after_, double dis_before_path_, double dis_after_path_, double dis_off_path_, bool debug_=false) |
| void | trace_back_global_path (std::deque< task_planner_t * > const &plan_, unsigned tp_ind_, unsigned path_start_ind_, unsigned &LA_tp_ind_, unsigned &LA_path_ind_, double &distance_) |
| double | dis_bet_tp_path (std::deque< task_planner_t * > const &plan_, unsigned tp_id) |
| computes distance between 1st point of tp_id TP's path and last point of (tp_id -1) TP's path | |
| typedef graph_t<rp_containter_t>::vertex_t cajun::graph_node_t |
| typedef std::vector<lane_clipage_info_t> cajun::lane_clipage_list_t |
| typedef grid_t<map_cell_t> cajun::map_grid_t |
| typedef std::deque<rndf_point_t*> cajun::mission_plan_t |
| typedef std::deque<path_wp_t> cajun::path_t |
| typedef std::deque<rndf_t::waypoint_id_t> cajun::plan_t |
| typedef grid_t<search_cell_t> cajun::search_grid_t |
| typedef std::deque<task_planner_t *> cajun::tp_plan_t |
| typedef work_info_t cajun::work_data_t |
| enum cajun::mobility_t |
| enum cajun::path_status_t |
| enum cajun::TP_type_t |
| cajun::path_status_t cajun::add_path_to_switch_lane | ( | path_t & | path_, | |
| double & | p_len_left_, | |||
| relative_side_t & | side_, | |||
| rndf_lane_data_t & | lb_, | |||
| bool | same_dir_, | |||
| double | min_speed_, | |||
| double | max_speed_, | |||
| double | m_width_multiplier, | |||
| double | m_look_ahead_ratio | |||
| ) |
Extend path_ to change lane into new lane with lb_, lane boundary.
References compute_end_point(), copy_path(), covered_by_path(), linear_interpolation(), cajun::uc_planner_param_t::m_path_width, message, msg_logger, PATH_ERROR, PATH_OKAY, PATH_OVER, and PATH_TOO_LONG.
Referenced by cajun::passing_lane_task_planner_t::generate_path(), and cajun::change_lane_task_planner_t::generate_path().
| cajun::path_status_t cajun::add_rndf_lane_to_path | ( | rndf_lane_data_t & | lb_, | |
| path_t & | path_, | |||
| double & | p_len_left_, | |||
| double | end_x_, | |||
| double | end_y_, | |||
| double | min_speed_, | |||
| double | max_speed_, | |||
| bool | reverse_, | |||
| double | width_multiplier_, | |||
| double | dis_before_ = 1, |
|||
| double | dis_after_ = 1 | |||
| ) |
Appends path following x_, y_ till m_end_wp. Returns true if successful in adding the path, else returns false.
References copy_path(), message, msg_logger, PATH_ERROR, PATH_OKAY, PATH_OVER, and PATH_TOO_LONG.
Referenced by cajun::passing_lane_task_planner_t::drive_on_passing_lane(), and cajun::lane_task_planner_t::generate_path().
| bool cajun::after_intersection_within_dis | ( | rndf_t const * | rndf_, | |
| unsigned | sid_, | |||
| unsigned | lid_, | |||
| double | x_, | |||
| double | y_, | |||
| double | for_dis_ | |||
| ) |
Returns true if from (x_, y_) on lane (sid_, lid_) is after an intersection within 'for_dis_' in front.
References cajun::uc_planner_param_t::m_width_multiplier.
Referenced by cajun::state_machine_t::blk_in_safety_region(), cajun::state_machine_t::enough_passing_lane_exist(), cajun::state_machine_t::enough_uturn_region(), and cajun::state_machine_t::switch_lane_possible().
| void cajun::append_path | ( | path_t & | target_path_, | |
| const path_t & | source_path_ | |||
| ) |
Appends the source_path at end of target_path.
Referenced by cajun::zone_task_planner_t::generate_path(), cajun::uturn_task_planner_t::generate_path(), cajun::unparking_task_planner_t::generate_path(), cajun::passing_lane_task_planner_t::generate_path(), cajun::parking_task_planner_t::generate_path(), cajun::lane_task_planner_t::generate_path(), cajun::intersection_task_planner_t::generate_path(), and cajun::change_lane_task_planner_t::generate_path().
| bool cajun::before_intersection_within_dis | ( | world_state_t * | ws_, | |
| rndf_t const * | rndf_, | |||
| unsigned | sid_, | |||
| unsigned | lid_, | |||
| double | x_, | |||
| double | y_, | |||
| double | for_dis_, | |||
| bool | stop_intersection_ | |||
| ) |
References cajun::uc_planner_param_t::m_allowed_post_lane_dis, cajun::uc_planner_param_t::m_allowed_pre_lane_dis, and cajun::uc_planner_param_t::m_width_multiplier.
Referenced by cajun::state_machine_t::blk_in_safety_region(), cajun::state_machine_t::blk_just_before_stop_intersection(), cajun::state_machine_t::changing_lane_on_one_side(), cajun::planner_t::distance_from_static_blk(), cajun::state_machine_t::enough_uturn_region(), and cajun::state_machine_t::switch_lane_possible().
| bool cajun::blk_on_lane_segment | ( | world_state_t * | ws_, | |
| rndf_t::waypoint_id_t const & | start_wp_id_, | |||
| rndf_t::waypoint_id_t const & | end_wp_id_, | |||
| double | static_, | |||
| double | valid_blk_since_ | |||
| ) |
Returns true if there is no blockage on the path between exit_wp and entry_wp.
Referenced by cajun::intersection_task_planner_t::intersection_region_free().
| bool cajun::comes_before | ( | world_state_t * | ws_, | |
| double | x1_, | |||
| double | y1_, | |||
| double | x2_, | |||
| double | y2_, | |||
| unsigned | sid_, | |||
| unsigned | lid_, | |||
| unsigned | wid_, | |||
| double | width_multiplier_ | |||
| ) |
Returns if x1, y1, comes before x2, y2 and both of them are expected to be on given segment.
References cajun::uc_planner_param_t::m_allowed_post_lane_dis, and cajun::uc_planner_param_t::m_allowed_pre_lane_dis.
Referenced by cajun::traffic_verifier_t::traffic_approach_point().
| bool cajun::compute_end_point | ( | double | start_x_, | |
| double | start_y_, | |||
| double & | end_x_, | |||
| double & | end_y_, | |||
| relative_side_t & | side_, | |||
| rndf_lane_data_t & | next_lb_, | |||
| double | width_multiplier_, | |||
| double | look_ahead_ratio_, | |||
| bool | same_dir_ | |||
| ) |
Returns the expected points after change lane.
Referenced by add_path_to_switch_lane(), cajun::state_machine_t::change_lane(), and cajun::state_machine_t::switch_lane_possible().
| bool cajun::consecutive_rndf_points | ( | rndf_point_t * | rp1_, | |
| rndf_point_t * | rp2_ | |||
| ) |
Returns true if rp1_ and rp2_ are consecutive points on a lane. Fixme: Does not handle intermediate rndf points yet.
References cajun::rndf_point_t::id().
Referenced by cajun::mission_planner_t::filter_detail_plan().
| bool cajun::copy_path | ( | rndf_lane_data_t & | lb_, | |
| path_t & | path_, | |||
| double & | p_len_left_, | |||
| unsigned | start_i, | |||
| unsigned | end_i, | |||
| double | min_speed_, | |||
| double | max_speed_ | |||
| ) |
Returns false if path length reached zero, else returns true.
| bool cajun::copy_path | ( | std::vector< path_wp_t > & | inter_points_, | |
| path_t & | path_, | |||
| double & | p_len_left_, | |||
| unsigned | start_i_, | |||
| unsigned | end_i_, | |||
| double | min_speed_, | |||
| double | max_speed_ | |||
| ) |
| void cajun::copy_path | ( | double | x_, | |
| double | y_, | |||
| path_t const & | src_path_, | |||
| path_t & | des_path_, | |||
| double | dis_before_, | |||
| double | dis_after_, | |||
| double | dis_off_path_ | |||
| ) |
Copies the src_path_ to des_path_ which lies behind (x_, y_).
References point_on_path().
| void cajun::copy_path | ( | path_t & | source_p_, | |
| path_t & | des_p_ | |||
| ) |
Copy path from source to destination.
| void cajun::copy_path | ( | path_t & | source_p_, | |
| path_data_t & | des_p_ | |||
| ) |
Copy path from source to destination.
Referenced by cajun::intersection_task_planner_t::add_intersection_path(), add_path_to_switch_lane(), add_rndf_lane_to_path(), cajun::unparking_task_planner_t::generate_path(), cajun::parking_task_planner_t::generate_path(), and cajun::planner_t::get_steering_path().
| bool cajun::covered_by_path | ( | path_t const & | path_, | |
| double | p_width_, | |||
| double | x_, | |||
| double | y_ | |||
| ) |
Checks if specified points (x_, y_) are coveretd by path, i.e falls next to the path by less than p_width distance.
References MIN_ATRACK.
Referenced by add_path_to_switch_lane().
| bool cajun::danger_entry_point | ( | rndf_t const * | rndf_, | |
| rndf_t::waypoint_id_t const & | exit_wp_, | |||
| rndf_t::waypoint_id_t const & | entry_wp_, | |||
| std::vector< rndf_t::waypoint_id_t > & | danger_points_ | |||
| ) |
Referenced by cajun::traffic_verifier_t::approach_traffic(), and have_to_stop_at_intersection().
| double cajun::dis_bet_tp_path | ( | std::deque< task_planner_t * > const & | plan_, | |
| unsigned | tp_id | |||
| ) |
computes distance between 1st point of tp_id TP's path and last point of (tp_id -1) TP's path
Referenced by trace_back_global_path().
| void cajun::extend_path | ( | path_t & | path_, | |
| double | dis_, | |||
| double | inter_dis_, | |||
| double | orient_ | |||
| ) |
| void cajun::extend_path | ( | path_t & | path_, | |
| double | dis_, | |||
| double | inter_dis_ | |||
| ) |
Extends the path at the end of the path by extrapolating the points along the orientation of the instantaneous orientation of the path at that point and by distance specified.
Referenced by cajun::uturn_task_planner_t::add_3_point_turn(), cajun::parking_task_planner_t::compute_parking_path(), and cajun::unparking_task_planner_t::compute_unparking_path().
| void cajun::filter_path | ( | path_data_t & | p_ | ) |
Filters the path to remove repeated points.
| void cajun::filter_path | ( | path_t & | p_ | ) |
Filters the path to remove repeated points.
Referenced by cajun::planner_t::get_steering_path().
| bool cajun::find_a_entry_to_zone | ( | rndf_t const * | rndf_, | |
| unsigned | zone_id, | |||
| unsigned & | entry_wid_ | |||
| ) |
Fills 'entry_wid_' with the wp_id of an entry wp. Returns true if could find one, else returns false.
Referenced by cajun::mission_handler_t::update_plan().
| bool cajun::have_to_stop_at_intersection | ( | rndf_t const * | rndf_, | |
| rndf_point_t * | rp_1_, | |||
| rndf_point_t * | rp_2_ | |||
| ) |
Returns true if rp_1 -> rp_2 intersection requires bot to stop, either because of stop sign or for crossing traffic.
References danger_entry_point(), cajun::rndf_point_t::id(), cajun::rndf_point_t::is_exit(), and cajun::rndf_point_t::is_stop().
Referenced by cajun::intersection_task_planner_t::set_plan().
| bool cajun::intersecting_intersection_legs | ( | rndf_t const * | rndf_, | |
| rndf_t::waypoint_id_t const & | exit_wp_id_, | |||
| rndf_t::waypoint_id_t const & | entry_wp_id_, | |||
| std::vector< rndf_t::lane_seg_t > & | lane_list_ | |||
| ) |
| double cajun::intersection_turn_angle | ( | rndf_t const * | rndf_, | |
| rndf_point_t * | exit_point_, | |||
| rndf_point_t * | entry_point_ | |||
| ) |
Returns the angle of turn for the intersection through exit_id to entry_id.
References cajun::rndf_point_t::id().
Referenced by cajun::intersection_task_planner_t::set_plan().
| bool cajun::is_exit_entry_pair | ( | rndf_t const * | rndf_, | |
| rndf_point_t const * | exit_rp, | |||
| rndf_point_t const * | entry_rp | |||
| ) |
Returns true if 'exit_rp' connects to 'entry_rp' as a exit-entry pair, else returns false.
References cajun::rndf_point_t::id(), cajun::rndf_point_t::is_entry(), cajun::rndf_point_t::is_exit(), and cajun::rndf_point_t::is_rndf_wp().
| bool cajun::is_exit_entry_pair | ( | rndf_t const * | rndf_, | |
| rndf_t::waypoint_id_t const & | exit_wp_id, | |||
| rndf_t::waypoint_id_t const & | entry_wp_id | |||
| ) |
returns true if given pair of wp_ids are entry exit pairs
Referenced by cajun::base_path_provider_t::add_new_base_path(), cajun::state_machine_t::blk_at_intersection(), and cajun::mission_planner_t::distance_between_rps().
| bool cajun::lane_blocked_for_dis | ( | world_state_t * | ws_, | |
| unsigned | sid_, | |||
| unsigned | lid_, | |||
| double | x_, | |||
| double | y_, | |||
| double | for_dis_, | |||
| bool | forward_, | |||
| bool | for_static_ | |||
| ) |
Returns true if specified lane is blocked for given distance starting for given (x_y_) point in specified direction (forward/reverse).
References cajun::uc_planner_param_t::m_allowed_post_lane_dis, cajun::uc_planner_param_t::m_allowed_pre_lane_dis, cajun::uc_planner_param_t::m_blocked_lane_timeout, cajun::uc_planner_param_t::m_treat_dynamic_as_static, and cajun::uc_planner_param_t::m_width_multiplier.
Referenced by cajun::state_machine_t::changing_lane_on_one_side(), cajun::state_machine_t::passing_lane_blocked(), cajun::state_machine_t::switch_lane_possible(), and cajun::state_machine_t::uturn_region_blocked().
| double cajun::lane_width | ( | rndf_t const * | rndf_, | |
| unsigned | sid_, | |||
| unsigned | lid_ | |||
| ) |
Returns the width of the specified lane.
Referenced by waypt_reached().
| bool cajun::last_tp_planned | ( | task_planner_t * | tp_ | ) |
Returns true if this is the last tp planned, and following tps are not planned.
References PATH_BLOCKED, PATH_END, PATH_ERROR, PATH_OVER, cajun::task_planner_t::path_status(), and PATH_TOO_LONG.
Referenced by cajun::traffic_verifier_t::path_free_of_traffic().
| void cajun::linear_interpolation | ( | std::vector< path_wp_t > & | inter_points_, | |
| double | interp_dis_, | |||
| double | start_x_, | |||
| double | start_y_, | |||
| double | end_x_, | |||
| double | end_y_ | |||
| ) |
Referenced by add_path_to_switch_lane().
| bool cajun::passing_lane_id | ( | rndf_t const * | rndf_, | |
| unsigned | sid_, | |||
| unsigned | lid, | |||
| unsigned & | pasing_lid_ | |||
| ) |
Returns true if there exist a lane in opposite direction, else returns false.
Referenced by cajun::task_plan_handler_t::pass_lane(), and cajun::state_machine_t::passing_lane_exist().
| double cajun::path_end_orient | ( | path_t const & | path_ | ) |
Returns the orientation of the path at the end of the path.
Referenced by cajun::zone_task_planner_t::start_orient().
| bool cajun::point_on_confined_path | ( | const path_t & | path_, | |
| double | x_, | |||
| double | y_, | |||
| unsigned | starti_, | |||
| unsigned | endi_, | |||
| unsigned & | index_before_, | |||
| unsigned & | index_after_, | |||
| double | dis_before_path_, | |||
| double | dis_after_path_, | |||
| double | dis_off_path_, | |||
| bool | debug_ = false | |||
| ) |
Referenced by cajun::path_nudger_t::nudge_path().
| bool cajun::point_on_lane | ( | world_state_t * | ws_, | |
| rndf_t const * | rndf_, | |||
| unsigned | sid_, | |||
| unsigned | passing_lid_, | |||
| double | x_, | |||
| double | y_, | |||
| double & | new_x_, | |||
| double & | new_y_, | |||
| unsigned & | wid_before, | |||
| double | width_multiplier_, | |||
| double | first_lane_dis_before_, | |||
| double | last_lane_dis_after_ | |||
| ) |
maps (x_, y_) onto lane (passing_lid_) on segment sid_ and gives the coordinates of closest rndf_point on lane along with waypoint_id prior to mapping.
Referenced by cajun::state_machine_t::enough_uturn_region(), cajun::state_machine_t::set_road_blocked(), cajun::traffic_verifier_t::uturn_free_of_traffic(), and cajun::state_machine_t::uturn_region_blocked().
| bool cajun::point_on_path | ( | const path_t & | path_, | |
| double | x_, | |||
| double | y_, | |||
| unsigned & | index_before_, | |||
| unsigned & | index_after_, | |||
| double | dis_before_path_, | |||
| double | dis_after_path_, | |||
| double | dis_off_path_, | |||
| bool | debug_ = false | |||
| ) |
Returns index on path_ just following x_, y_. If (x_, y_) is 'dis_before' distance ahead of start of m_prev_path then returns 0, if (x_, y_) is within 'dis_after' distance after last point of m_prev_path then returns index to last but one point(todo: should be last wp), if point is within the m_prev_path then returns index to point just following (x_, y_), else returns failure in finding (x_,y_) on m_prev_path by returning out of bound index i.e. m_prev_path.size().
Referenced by copy_path(), cajun::zone_task_planner_t::cut_down_path(), cajun::base_path_provider_t::get_base_path(), cajun::zone_task_planner_t::get_from_local_path(), cajun::zone_task_planner_t::is_path_good(), cajun::zone_task_planner_t::is_task_complete(), cajun::unparking_task_planner_t::is_task_complete(), cajun::parking_task_planner_t::is_task_complete(), cajun::lane_task_planner_t::is_task_complete(), cajun::intersection_task_planner_t::is_task_complete(), cajun::change_lane_task_planner_t::is_task_complete(), and cajun::planner_t::ready_to_handle_blocked_lane().
| bool cajun::point_reached | ( | rndf_t const * | rndf_, | |
| double | px_, | |||
| double | py_, | |||
| double | x_, | |||
| double | y_, | |||
| rndf_t::waypoint_t const & | w_, | |||
| double | width_multiplier_ | |||
| ) |
Returns turn if point (px_, py_) is reached by point (x_, y_). The point (px_, py_) has waypoint w_, just following it. w_ is required to compute the orientation of the lane).
References MIN_ATRACK.
| void cajun::print_path | ( | path_t const & | path_ | ) |
Prints the whole path to screen.
| void cajun::reset_zero_speed | ( | path_t & | path_ | ) |
Fillup zero speeds with neighboring point's speed.
| void cajun::set_last_speed_zero | ( | path_t & | path_ | ) |
Set the speed of last point of the path to zero.
| void cajun::set_path_speed | ( | path_t & | path_, | |
| double | min_speed_, | |||
| double | max_speed_ | |||
| ) |
Sets the speed limit of the whole path to given values.
Referenced by cajun::base_path_provider_t::get_base_path().
| void cajun::set_speed_limit | ( | path_t const & | base_path_, | |
| path_t & | path_, | |||
| double | min_speed_, | |||
| double | max_speed_ | |||
| ) |
Sets speed limits of path_ following after base_path_.
Referenced by cajun::zone_task_planner_t::generate_new_path().
| bool cajun::task_planner_for_mission | ( | rndf_t const * | rndf_, | |
| rndf_point_t * | wp_id_1_, | |||
| rndf_point_t * | wp_id_2_, | |||
| std::vector< tp_package_t > & | tp_seq_ | |||
| ) |
| void cajun::trace_back_global_path | ( | std::deque< task_planner_t * > const & | plan_, | |
| unsigned | tp_ind_, | |||
| unsigned | path_start_ind_, | |||
| unsigned & | LA_tp_ind_, | |||
| unsigned & | LA_path_ind_, | |||
| double & | distance_ | |||
| ) |
References dis_bet_tp_path(), and trace_back_path().
Referenced by cajun::planner_t::analyze_path(), and cajun::planner_t::convoy_dynamic_object().
| void cajun::trace_back_path | ( | const path_t * | path_, | |
| unsigned | ref_i, | |||
| unsigned & | trace_back_i, | |||
| double & | trace_dis_ | |||
| ) |
Walks back along the specified path starting from specified index by specified distance. The functions returns the amount of distance it could trace back and also the index of the new point after tracing back.
Referenced by trace_back_global_path().
| bool cajun::waypt_reached | ( | rndf_t const * | rndf_, | |
| double | x_, | |||
| double | y_, | |||
| rndf_t::waypoint_t const & | w_, | |||
| double | width_multiplier_, | |||
| double | parking_radius_, | |||
| double | min_atrack_ = MIN_ATRACK | |||
| ) |
Returns true of waypoint w_ is reached by point (x_, y_).
References lane_width(), and zone_spot_waypt_reached().
Referenced by cajun::mission_handler_t::update_waypoints_reached().
| bool cajun::zone_spot_waypt_reached | ( | rndf_t const * | rndf_, | |
| double | x_, | |||
| double | y_, | |||
| rndf_t::waypoint_t const & | w_, | |||
| double | parking_radius_ | |||
| ) |
Returns true if zone spot_waypt is reached. Which is determined presently based on if x_, y_ within parking_radius_ radius from the spot.
Referenced by waypt_reached().
| bool cajun::zone_task_planner_for_mission | ( | rndf_t const * | rndf_, | |
| rndf_point_t * | wp_id_1_, | |||
| rndf_point_t * | wp_id_2_, | |||
| std::vector< tp_package_t > & | tp_seq_ | |||
| ) |
1.6.1