planner_util.H File Reference

#include "rndf.H"
#include "data_type.H"
#include "world_state.H"
#include "planner_defs.H"
#include "task_planner.H"
#include "rndf_point.H"

Go to the source code of this file.

Namespaces

namespace  cajun

Defines

#define MIN_ATRACK   0.0

Functions

void cajun::append_path (path_t &target_path_, const path_t &source_path_)
 Appends the source_path at end of target_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_).
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.
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).
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.
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_)
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().
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.
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.
void cajun::copy_path (path_t &source_p_, path_data_t &des_p_)
 Copy path from source to destination.
void cajun::copy_path (path_t &source_p_, path_t &des_p_)
 Copy path from source to destination.
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_).
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_)
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.
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.
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.
void cajun::set_last_speed_zero (path_t &path_)
 Set the speed of last point of the path to zero.
void cajun::reset_zero_speed (path_t &path_)
 Fillup zero speeds with neighboring point's speed.
void cajun::filter_path (path_t &p_)
 Filters the path to remove repeated points.
void cajun::filter_path (path_data_t &p_)
 Filters the path to remove repeated points.
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.
void cajun::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 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.
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_)
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.
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).
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_)
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_)
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.
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.
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
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.
double cajun::lane_width (rndf_t const *rndf_, unsigned sid_, unsigned lid_)
 Returns the width of the specified 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_)
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_)
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.
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.
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.
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_.
double cajun::path_end_orient (path_t const &path_)
 Returns the orientation of the path at the end of the 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.
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.
bool cajun::last_tp_planned (task_planner_t *tp_)
 Returns true if this is the last tp planned, and following tps are not planned.
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.
void cajun::print_path (path_t const &path_)
 Prints the whole path to screen.
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)

Define Documentation

#define MIN_ATRACK   0.0

Generated on Fri Apr 9 10:45:15 2010 for UCPlanner by  doxygen 1.6.1