00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00030
00031
00038 #ifndef GLOBAL_GEOMETRY_H
00039 #define GLOBAL_GEOMETRY_H
00040
00041 #ifdef __cplusplus
00042 extern "C" {
00043 #endif
00044
00045 void carmen_geometry_compute_centre_and_curvature(carmen_traj_point_t start_point, double theta,
00046 carmen_traj_point_t end_point,
00047 carmen_traj_point_t *centre, double *radius);
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 double carmen_geometry_compute_velocity(carmen_traj_point_t robot, carmen_traj_point_t dest_pt,
00060 carmen_robot_config_t *robot_config);
00061
00062 double carmen_geometry_compute_radius_and_centre(carmen_traj_point_p prev, carmen_traj_point_p current,
00063 carmen_traj_point_p next, carmen_traj_point_p centre,
00064 carmen_traj_point_p end_curve);
00065
00066 void carmen_geometry_move_pt_to_rotating_ref_frame(carmen_traj_point_p obstacle_pt,
00067 double tv, double rv);
00068
00069 void carmen_rotate_2d(double *x, double *y, double theta);
00070
00071 #ifndef COMPILE_WITHOUT_MAP_SUPPORT
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082 void carmen_geometry_project_point(int x, int y, double theta, int *x2, int *y2,
00083 carmen_map_config_t map_defn);
00084
00085 void carmen_geometry_generate_laser_data(float *laser_data, carmen_traj_point_p traj_point,
00086 double start_theta, double end_theta, int num_points,
00087 carmen_map_p map);
00088
00089 void carmen_geometry_generate_sonar_data(double *sonar_data, carmen_traj_point_p center,
00090 carmen_point_p sonar_offsets, int num_sonars,
00091 carmen_map_p map);
00092
00093 void carmen_geometry_fast_generate_laser_data(float *laser_data, carmen_traj_point_p traj_point,
00094 double start_theta, double end_theta, int num_points,
00095 carmen_map_p map);
00096
00097 double carmen_geometry_compute_expected_distance(carmen_traj_point_p traj_point, double theta,
00098 carmen_map_p map);
00099
00100 void carmen_geometry_cache_stats(int *hits, int *misses);
00101
00102 #define CARMEN_NUM_OFFSETS 8
00103 extern int carmen_geometry_x_offset[];
00104 extern int carmen_geometry_y_offset[];
00105
00106 void carmen_geometry_map_to_cspace(carmen_map_p map, carmen_robot_config_t *robot_conf);
00107 #endif
00108
00109 #ifdef __cplusplus
00110 }
00111 #endif
00112
00113 #endif
00114
00115