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_t > | lane_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 > ®ular_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 grid_t<lane_cell_t> cajun::lane_grid_t |
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_ | |||
) |
References find_boundary_index_after_point(), and rndf_length_between().
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_ | |||
) |
References find_boundary_index_after_point().
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_ | |||
) |
References find_boundary_index_after_point().
bool cajun::find_xtrack_from_lane | ( | rndf_lane_data_t const & | lb_, | |
double | x_, | |||
double | y_, | |||
double | width_factor_, | |||
double & | xtrack_dis_ | |||
) |
References find_boundary_index_after_point().
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_ | |||
) |
Referenced by cajun::world_state_t::enable_rndf_lane_map().
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_ | |||
) |
Referenced by map_onto_rndf_lane_segment().
double cajun::rndf_lane_pre_dis | ( | rndf_lane_data_t const & | lb_, | |
double | first_lane_dis_before_ | |||
) |
Referenced by map_onto_rndf_lane_segment().
double cajun::rndf_length_between | ( | rndf_lane_data_t const & | lb, | |
unsigned | start_i_, | |||
unsigned | end_i_ | |||
) |
Referenced by distance_along_lane().