cajun Namespace Reference

Classes

class  base_interpolator_t
class  blocked_lane_container_t
class  intersection_tracker_t
struct  point_t
class  lane_file_loader_t
struct  lane_cell_t
class  linear_interpolator_t
struct  radar_object_t
class  radar_data_collector_t
class  rndf_lane_container_t
class  rndf_lane_filter_t
class  spatial_to_lane_map_t
class  tstamp_buffering_t
class  func_t
class  world_state_t

Typedefs

typedef grid_t< lane_cell_tlane_grid_t

Functions

void add_base_point (rndf_t const *rndf_, base_interpolator_t::uniform_path_t &base_points_, rndf_t::waypoint_id_t const &start_id_, rndf_t::waypoint_id_t const &end_id_, double dis_)
 Adds base_points one just after start wp (exit wp) at distance dis_ along the orientation of the exiting lane, and one just before end_wp (entry wp) at distance dis_ along the orientation of the new entry lane at end_wp.
void interp_for_wp_pair (rndf_t const *rndf_, base_interpolator_t *interp_, rndf_t::waypoint_id_t const &start_id, rndf_t::waypoint_id_t const &end_id, rndf_lane_data_t &lane_data_)
 Generates lane boundary for lane segment start_id to end_id.
void interp_from_wp (rndf_t const *rndf_, base_interpolator_t *interp_, std::vector< rndf_lane_data_t > &lane_list_, rndf_t::waypoint_id_t wp_id)
void interp_wp_from_zones (rndf_t const *rndf_, base_interpolator_t *interp_, std::vector< rndf_lane_data_t > &lane_list_, rndf_t::waypoint_id_t exit_wp_id)
void interp_all_wp_segments (rndf_t const *rndf_, base_interpolator_t *interp_, std::vector< rndf_lane_data_t > &lane_list_)
void interp_intersection (rndf_t const *rnfd_, base_interpolator_t *interp_, rndf_t::waypoint_id_t const &start_id, rndf_t::waypoint_id_t const &end_id, rndf_lane_data_t &lane_data_)
void add_arc_points (rndf_lane_data_t &lane_data_, double bx, double by, double cx, double cy, double rad, double start_ang, double end_ang)
 Add points along the arc with center (cx, cy), with starting angle 'start_ang' to 'end_ang' (from center of circle) to lane_data_. (bx, by) are base_x, base_y for lane_data_ structure. start_ang, end_ang and starting and ending angles of arch points wrt center of the circle.
void add_arc_points (std::deque< path_wp_t > &path_, double cx, double cy, double rad, double start_ang, double end_ang, double min_speed_, double max_speed_)
void add_linear_points (rndf_lane_data_t &lane_data_, double bx, double by, double start_x, double start_y, double end_x, double end_y, base_interpolator_t *interp_)
 Add points from (start_x, start_y) to (end_x, end_y) using interp_ interpolator and use (bx, by) as base_x, base_y for lane_data_.
void add_linear_points (std::deque< path_wp_t > &path_, double start_x, double start_y, double end_x, double end_y, base_interpolator_t *interp_, double min_speed_, double max_speed_)
double compute_radius (double p1x, double p1y, double ang_1, double p2x, double p2y, double ang_2)
 Compute radius of the circle that has line passing through (p1x, p1y) with slope ang_1 and lane passing through (p2x, p2y) with slope ang_2 both as tangents. And passing through point (p1x, p1y).
void compute_start_end_ang (double const start_tangent_, double const end_tangent_, double &start_ang_, double &end_ang_)
 Compute start and end angles for circular arc from start tangent angle and end tangent, by deciding which side (right/left) will the arc drawn.
void fill_initial_values (rndf_lane_data_t &lane_data_, rndf_t::waypoint_id_t const &start_id_, rndf_t::waypoint_id_t const &end_id_, double bx, double by)
 Fill in the initial values for lane_data.
void extended_intersection_points (rndf_t const *rndf_, rndf_t::waypoint_id_t const &start_id_, rndf_t::waypoint_id_t const &end_id_, double &sx, double &sy, double &ex, double &ey)
 Adds base_points one just after start wp and before end wp along the orientation of line start_wp to end_wp and at distance dis_. Ideally adding base should be called if the both the wps on are on same lane, but for present function calling structure.
bool circle_circle_intersection (double x0, double y0, double r0, double x1, double y1, double r1, double &xi, double &yi, double &xi_prime, double &yi_prime)
void circle_start_end_angles (double center_x_, double center_y_, double x0_, double y0_, double x1_, double y1_, double &start_ang_, double &end_ang_)
bool get_circle_arc_points (double center_x, double center_y, double curvature_, double distance_, double start_ang_, double end_ang_, std::vector< point_t > &arc_points_)
unsigned find_boundary_index_after_point (rndf_lane_data_t const &lb_, unsigned start_ind_, double x_, double y_, double &lx_, double &ly_, double &dis_from_lane_, double dis_off_, double dis_before_=1, double dis_after_=1, bool debug=false)
 Returns index to the pt in lane boundary just FOLLOWING x_, y_. If point not within lane boundary, then returns lb's num_points + 1. (lx_, ly_) are position of the (x_, y_) on the lane.
bool find_look_ahead_point (rndf_lane_data_t const &lb_, double x_, double y_, double &lad_, double &lx_, double &ly_, unsigned &wi_, double width_factor_)
bool find_xtrack_from_lane (rndf_lane_data_t const &lb_, double x_, double y_, double width_factor_, double &xtrack_dis_)
bool find_look_behind_point (rndf_lane_data_t const &lb_, double x_, double y_, double &lad_, double &lx_, double &ly_, unsigned &wi_, double width_factor_)
void get_filename_for_wp_pair (unsigned start_sid, unsigned start_lid, unsigned start_wid, unsigned end_sid, unsigned end_lid, unsigned end_wid, std::string &filename_)
 Returns the filename for storing lane boundary for lane segment starting form given (si, li, wi) waypoint.
bool get_linear_rndf_lanes (std::vector< rndf_lane_data_t > &lane_list_, rndf_t const *rndf_, double interp_dis_)
void get_lane_from_files (std::vector< rndf_lane_data_t > &lane_list_, std::string lane_data_dir_, rndf_t const *rndf_, double interp_dis_)
bool get_lanes_around (world_state_t *ws_, double x_, double y_, std::vector< rndf_lane_data_t > &lane_list, double rad_)
 Returns list of rndf lane boundary lane segments around given (x, y), within given radius rad_.
void print_rndf_lane (rndf_lane_data_t const &lane_)
void print_rndf_lane (std::vector< rndf_lane_data_t > const &lanes_)
void classify_lanes (std::vector< rndf_lane_data_t > const &rndf_lanes_, std::vector< rndf_lane_data_t > &regular_lanes_, std::vector< rndf_lane_data_t > &intersection_lanes_)
bool map_onto_rndf_lane (world_state_t *ws_, rndf_lane_data_t &lane_, double x_, double y_, double width_multiplier_, double bubble_rad_, double first_lane_seg_dis_before_, double dis_after_, double at_heading=INVALID_HEADING)
 Find the list of rndf lanes near x_,y_ and tries to map (x_,y_) on the these lanes and if successful returns true along with best fit rndf_lane.
bool map_onto_classified_lanes (double x_, double y_, std::vector< rndf_lane_data_t > const &rndf_lanes_, rndf_lane_data_t &best_lane_, std::vector< unsigned > &all_lane_indexes_, double width_multiplier_, double dis_before_, double dis_after_, double at_heading_=INVALID_HEADING)
bool map_onto_rndf_lane_from_lanes (world_state_t *ws_, unsigned sid_, std::vector< unsigned > const &lid_list, unsigned &best_lid_, unsigned &wid_, double x_, double y_, double width_multiplier_, double bubble_rad_, double dis_after_)
bool map_onto_all_rndf_lane (world_state_t *ws_, std::vector< rndf_lane_data_t > &mapped_lane_list_, double x_, double y_, double width_multiplier_, double bubble_rad_, double dis_after_)
bool map_onto_given_rndf_lanes (double x_, double y_, std::vector< rndf_lane_data_t > const &rndf_lanes_, rndf_lane_data_t &best_lane_, std::vector< unsigned > &all_lane_indexes_, double width_multiplier_, double dis_before_, double dis_after_, double at_heading=INVALID_HEADING)
bool map_onto_rndf_lane_segment (world_state_t *ws_, rndf_t const *rndf_, double x_, double y_, unsigned sid_, unsigned lid_, unsigned &wid_, double max_dis_off_, double first_lane_dis_before_, double last_lane_dis_after_)
 maps xy on to a lane segment, returns TRUE if could map onto some lane segment on given lane, else return FALSE
double distance_between_points (world_state_t *ws_, unsigned sid_, unsigned lid_, double x1_, double y1_, unsigned wid1_, double x2_, double y2_, unsigned wid2_)
double dis_along_rndf_lane (rndf_lane_data_t const &lb_, unsigned si_, unsigned ei_)
 Returns distance between si and ei along the lane boundary.
double rndf_lane_pre_dis (rndf_lane_data_t const &lb_, double first_lane_dis_before_)
double rndf_lane_post_dis (rndf_lane_data_t const &lb_, rndf_t const *rndf_, double last_lane_dis_after_)
double rndf_lane_heading_at (rndf_lane_data_t const &lb_, unsigned id_)
 Computes the orientation of the lane at given index of lane boundary data.
double distance_along_lane (rndf_lane_data_t const &lb_, double x1_, double y1_, double x2_, double y2_, double width_factor_)
double rndf_length_between (rndf_lane_data_t const &lb, unsigned start_i_, unsigned end_i_)

Typedef Documentation


Function Documentation

void cajun::add_arc_points ( std::deque< path_wp_t > &  path_,
double  cx,
double  cy,
double  rad,
double  start_ang,
double  end_ang,
double  min_speed_,
double  max_speed_ 
)
void cajun::add_arc_points ( rndf_lane_data_t &  lane_data_,
double  bx,
double  by,
double  cx,
double  cy,
double  rad,
double  start_ang,
double  end_ang 
)

Add points along the arc with center (cx, cy), with starting angle 'start_ang' to 'end_ang' (from center of circle) to lane_data_. (bx, by) are base_x, base_y for lane_data_ structure. start_ang, end_ang and starting and ending angles of arch points wrt center of the circle.

Referenced by interp_intersection().

void cajun::add_base_point ( rndf_t const *  rndf_,
base_interpolator_t::uniform_path_t &  base_points_,
rndf_t::waypoint_id_t const &  start_id_,
rndf_t::waypoint_id_t const &  end_id_,
double  dis_ 
)

Adds base_points one just after start wp (exit wp) at distance dis_ along the orientation of the exiting lane, and one just before end_wp (entry wp) at distance dis_ along the orientation of the new entry lane at end_wp.

References cajun::base_interpolator_t::waypoint_t::x, and cajun::base_interpolator_t::waypoint_t::y.

Referenced by interp_for_wp_pair().

void cajun::add_linear_points ( std::deque< path_wp_t > &  path_,
double  start_x,
double  start_y,
double  end_x,
double  end_y,
base_interpolator_t *  interp_,
double  min_speed_,
double  max_speed_ 
)
void cajun::add_linear_points ( rndf_lane_data_t &  lane_data_,
double  bx,
double  by,
double  start_x,
double  start_y,
double  end_x,
double  end_y,
base_interpolator_t interp_ 
)

Add points from (start_x, start_y) to (end_x, end_y) using interp_ interpolator and use (bx, by) as base_x, base_y for lane_data_.

References cajun::base_interpolator_t::interpolate(), cajun::base_interpolator_t::waypoint_t::x, and cajun::base_interpolator_t::waypoint_t::y.

Referenced by interp_intersection().

bool cajun::circle_circle_intersection ( double  x0,
double  y0,
double  r0,
double  x1,
double  y1,
double  r1,
double &  xi,
double &  yi,
double &  xi_prime,
double &  yi_prime 
)
void cajun::circle_start_end_angles ( double  center_x_,
double  center_y_,
double  x0_,
double  y0_,
double  x1_,
double  y1_,
double &  start_ang_,
double &  end_ang_ 
)
void cajun::classify_lanes ( std::vector< rndf_lane_data_t > const &  rndf_lanes_,
std::vector< rndf_lane_data_t > &  regular_lanes_,
std::vector< rndf_lane_data_t > &  intersection_lanes_ 
)
double cajun::compute_radius ( double  p1x,
double  p1y,
double  ang_1,
double  p2x,
double  p2y,
double  ang_2 
)

Compute radius of the circle that has line passing through (p1x, p1y) with slope ang_1 and lane passing through (p2x, p2y) with slope ang_2 both as tangents. And passing through point (p1x, p1y).

Referenced by interp_intersection().

void cajun::compute_start_end_ang ( double const   start_tangent_,
double const   end_tangent_,
double &  start_ang_,
double &  end_ang_ 
)

Compute start and end angles for circular arc from start tangent angle and end tangent, by deciding which side (right/left) will the arc drawn.

Referenced by interp_intersection().

double cajun::dis_along_rndf_lane ( rndf_lane_data_t const &  lb_,
unsigned  si_,
unsigned  ei_ 
)

Returns distance between si and ei along the lane boundary.

Referenced by distance_between_points().

double cajun::distance_along_lane ( rndf_lane_data_t const &  lb_,
double  x1_,
double  y1_,
double  x2_,
double  y2_,
double  width_factor_ 
)
double cajun::distance_between_points ( world_state_t ws_,
unsigned  sid_,
unsigned  lid_,
double  x1_,
double  y1_,
unsigned  wid1_,
double  x2_,
double  y2_,
unsigned  wid2_ 
)

Distance between present point to end of lane boundary

References dis_along_rndf_lane(), find_boundary_index_after_point(), and cajun::world_state_t::get_lane_seg().

void cajun::extended_intersection_points ( rndf_t const *  rndf_,
rndf_t::waypoint_id_t const &  start_id_,
rndf_t::waypoint_id_t const &  end_id_,
double &  sx,
double &  sy,
double &  ex,
double &  ey 
)

Adds base_points one just after start wp and before end wp along the orientation of line start_wp to end_wp and at distance dis_. Ideally adding base should be called if the both the wps on are on same lane, but for present function calling structure.

Referenced by interp_intersection().

void cajun::fill_initial_values ( rndf_lane_data_t &  lane_data_,
rndf_t::waypoint_id_t const &  start_id_,
rndf_t::waypoint_id_t const &  end_id_,
double  bx,
double  by 
)

Fill in the initial values for lane_data.

Referenced by interp_intersection().

unsigned cajun::find_boundary_index_after_point ( rndf_lane_data_t const &  lb_,
unsigned  start_ind_,
double  x_,
double  y_,
double &  lx_,
double &  ly_,
double &  dis_from_lane_,
double  dis_off_,
double  dis_before_ = 1,
double  dis_after_ = 1,
bool  debug = false 
)

Returns index to the pt in lane boundary just FOLLOWING x_, y_. If point not within lane boundary, then returns lb's num_points + 1. (lx_, ly_) are position of the (x_, y_) on the lane.

References CLOSE_TO_ZERO.

Referenced by distance_along_lane(), distance_between_points(), find_look_ahead_point(), find_look_behind_point(), find_xtrack_from_lane(), and map_onto_rndf_lane_segment().

bool cajun::find_look_ahead_point ( rndf_lane_data_t const &  lb_,
double  x_,
double  y_,
double &  lad_,
double &  lx_,
double &  ly_,
unsigned &  wi_,
double  width_factor_ 
)
bool cajun::find_look_behind_point ( rndf_lane_data_t const &  lb_,
double  x_,
double  y_,
double &  lad_,
double &  lx_,
double &  ly_,
unsigned &  wi_,
double  width_factor_ 
)
bool cajun::find_xtrack_from_lane ( rndf_lane_data_t const &  lb_,
double  x_,
double  y_,
double  width_factor_,
double &  xtrack_dis_ 
)
bool cajun::get_circle_arc_points ( double  center_x,
double  center_y,
double  curvature_,
double  distance_,
double  start_ang_,
double  end_ang_,
std::vector< point_t > &  arc_points_ 
)
void cajun::get_filename_for_wp_pair ( unsigned  start_sid,
unsigned  start_lid,
unsigned  start_wid,
unsigned  end_sid,
unsigned  end_lid,
unsigned  end_wid,
std::string &  filename_ 
)

Returns the filename for storing lane boundary for lane segment starting form given (si, li, wi) waypoint.

Referenced by cajun::lane_file_loader_t::seg_from_wp_pair().

void cajun::get_lane_from_files ( std::vector< rndf_lane_data_t > &  lane_list_,
std::string  lane_data_dir_,
rndf_t const *  rndf_,
double  interp_dis_ 
)
bool cajun::get_lanes_around ( world_state_t ws_,
double  x_,
double  y_,
std::vector< rndf_lane_data_t > &  lane_list,
double  rad_ 
)

Returns list of rndf lane boundary lane segments around given (x, y), within given radius rad_.

References cajun::world_state_t::get_lane_seg(), and cajun::world_state_t::neighboring_lanes().

Referenced by map_onto_rndf_lane().

bool cajun::get_linear_rndf_lanes ( std::vector< rndf_lane_data_t > &  lane_list_,
rndf_t const *  rndf_,
double  interp_dis_ 
)
void cajun::interp_all_wp_segments ( rndf_t const *  rndf_,
base_interpolator_t *  interp_,
std::vector< rndf_lane_data_t > &  lane_list_ 
)
void cajun::interp_for_wp_pair ( rndf_t const *  rndf_,
base_interpolator_t interp_,
rndf_t::waypoint_id_t const &  start_id,
rndf_t::waypoint_id_t const &  end_id,
rndf_lane_data_t &  lane_data_ 
)

Generates lane boundary for lane segment start_id to end_id.

References add_base_point(), cajun::base_interpolator_t::get_inter_dis(), and cajun::base_interpolator_t::interpolate().

Referenced by interp_intersection().

void cajun::interp_from_wp ( rndf_t const *  rndf_,
base_interpolator_t *  interp_,
std::vector< rndf_lane_data_t > &  lane_list_,
rndf_t::waypoint_id_t  wp_id 
)
void cajun::interp_intersection ( rndf_t const *  rnfd_,
base_interpolator_t interp_,
rndf_t::waypoint_id_t const &  start_id,
rndf_t::waypoint_id_t const &  end_id,
rndf_lane_data_t &  lane_data_ 
)
void cajun::interp_wp_from_zones ( rndf_t const *  rndf_,
base_interpolator_t *  interp_,
std::vector< rndf_lane_data_t > &  lane_list_,
rndf_t::waypoint_id_t  exit_wp_id 
)
bool cajun::map_onto_all_rndf_lane ( world_state_t *  ws_,
std::vector< rndf_lane_data_t > &  mapped_lane_list_,
double  x_,
double  y_,
double  width_multiplier_,
double  bubble_rad_,
double  dis_after_ 
)
bool cajun::map_onto_classified_lanes ( double  x_,
double  y_,
std::vector< rndf_lane_data_t > const &  rndf_lanes_,
rndf_lane_data_t &  best_lane_,
std::vector< unsigned > &  all_lane_indexes_,
double  width_multiplier_,
double  dis_before_,
double  dis_after_,
double  at_heading_ = INVALID_HEADING 
)
bool cajun::map_onto_given_rndf_lanes ( double  x_,
double  y_,
std::vector< rndf_lane_data_t > const &  rndf_lanes_,
rndf_lane_data_t &  best_lane_,
std::vector< unsigned > &  all_lane_indexes_,
double  width_multiplier_,
double  dis_before_,
double  dis_after_,
double  at_heading = INVALID_HEADING 
)

Referenced by map_onto_rndf_lane().

bool cajun::map_onto_rndf_lane ( world_state_t ws_,
rndf_lane_data_t &  lane_,
double  x_,
double  y_,
double  width_multiplier_,
double  bubble_rad_,
double  first_lane_seg_dis_before_,
double  dis_after_,
double  heading_ = INVALID_HEADING 
)

Find the list of rndf lanes near x_,y_ and tries to map (x_,y_) on the these lanes and if successful returns true along with best fit rndf_lane.

dis_before_ is used only for the lane segment which are the beginning of the lane i.e start with wid ==1

References get_lanes_around(), and map_onto_given_rndf_lanes().

bool cajun::map_onto_rndf_lane_from_lanes ( world_state_t *  ws_,
unsigned  sid_,
std::vector< unsigned > const &  lid_list,
unsigned &  best_lid_,
unsigned &  wid_,
double  x_,
double  y_,
double  width_multiplier_,
double  bubble_rad_,
double  dis_after_ 
)
bool cajun::map_onto_rndf_lane_segment ( world_state_t ws_,
rndf_t const *  rndf_,
double  x_,
double  y_,
unsigned  sid_,
unsigned  lid_,
unsigned &  wid_,
double  max_dis_off_,
double  first_lane_dis_before_,
double  last_lane_dis_after_ 
)

maps xy on to a lane segment, returns TRUE if could map onto some lane segment on given lane, else return FALSE

References find_boundary_index_after_point(), cajun::world_state_t::get_lane_seg(), rndf_lane_post_dis(), and rndf_lane_pre_dis().

void cajun::print_rndf_lane ( std::vector< rndf_lane_data_t > const &  lanes_  ) 

References print_rndf_lane().

void cajun::print_rndf_lane ( rndf_lane_data_t const &  lane_  ) 

Referenced by print_rndf_lane().

double cajun::rndf_lane_heading_at ( rndf_lane_data_t const &  lb_,
unsigned  id_ 
)

Computes the orientation of the lane at given index of lane boundary data.

double cajun::rndf_lane_post_dis ( rndf_lane_data_t const &  lb_,
rndf_t const *  rndf_,
double  last_lane_dis_after_ 
)
double cajun::rndf_lane_pre_dis ( rndf_lane_data_t const &  lb_,
double  first_lane_dis_before_ 
)
double cajun::rndf_length_between ( rndf_lane_data_t const &  lb,
unsigned  start_i_,
unsigned  end_i_ 
)

Referenced by distance_along_lane().


Generated on Fri Apr 9 10:45:16 2010 for uc_util by  doxygen 1.6.1