T-SLAM Block Diagram

Keiji Code

Robot Motion

FILES:
main.c
trace.c
Nomad files
locomotion.c
nomad_basic.c
realtime.c
FUNCTIONS:
/Robot-Funcs/locomotion.c:   void nomad_set_accel(int t_ac, int s_ac, int r_ac)
/Robot-Funcs/locomotion.c:   void nomad_max_speed(int tsp, int ssp, int rsp)
/Robot-Funcs/locomotion.c:   void nomad_set_speed(int trans, int rot, int turret)
/Robot-Funcs/locomotion.c:   void nomad_move(int tpr, int spr, int rpr)
/Robot-Funcs/locomotion.c:   void nomad_move_and_stop(int px, int py)
/Robot-Funcs/locomotion.c:   void nomad_wait_for_stop()
/Robot-Funcs/locomotion.c:   void nomad_stop_now(void)
/Robot-Funcs/locomotion.c:   void nomad_rotate(int angle)
/Robot-Funcs/locomotion.c:   void nomad_get_status(NOMAD_COORD *robot)
/Robot-Funcs/locomotion.c:   int nomad_get_trans_velosity(void)
/Robot-Funcs/locomotion.c:   int nomad_get_steer_velosity(void)
/Robot-Funcs/locomotion.c:   int nomad_get_turret_velosity(void)
/Robot-Funcs/locomotion.c:   int nomad_get_steer_angle(void)
/Robot-Funcs/locomotion.c:   int nomad_get_turret_angle(void)
/Robot-Funcs/locomotion.c:   int nomad_X(void)
/Robot-Funcs/locomotion.c:   int nomad_Y(void)
/Robot-Funcs/locomotion.c:   int nomad_STEER(void)
/Robot-Funcs/locomotion.c:   int nomad_TURRET(void)
/Robot-Funcs/nomad_basic.c:   void nomad_Initialize(void)
/Robot-Funcs/nomad_basic.c:   void nomad_Disconnect(void)
/Robot-Funcs/nomad_basic.c:   void nomad_Speak(char *talking)
/Robot-Funcs/nomad_basic.c:   void numSpeakTen(int num)
/Robot-Funcs/nomad_basic.c:   void nomad_numSpeak(int num)
/Robot-Funcs/nomad_basic.c:   void nomad_refresh_data()

Local Mins / ATM

FILES:
gvg.h
Nomad files
realtime.c
robot.h
us-sonar.c
access.c
FUNCTIONS:
/access.c:  void calc_two_small_local_min_idx(int *idx1, int *idx2)
/Robot-Funcs/us-sonar.c:   void get_sonar_and_pos_array(void)
/Robot-Funcs/us-sonar.c:   void init_sonar_history(void)
/Robot-Funcs/us-sonar.c:   void set_sonar_structure(void)
/Robot-Funcs/us-sonar.c:   int calc_arc_itsec(int si, int num, int ri, int ref, int *x, int *y)
/Robot-Funcs/us-sonar.c:   void calc_intersection_of_sonar_arcs(void)
/Robot-Funcs/us-sonar.c:   void choose_intersection_of_sonar(void)
/Robot-Funcs/us-sonar.c:   void calc_16_dir_smooth_data(int coord_x, int coord_y)
/Robot-Funcs/us-sonar.c:   int four_local_minima_calculation(LOCAL_MIN_ST *local_min)
/Robot-Funcs/us-sonar.c:   int nomad_get_LM_immidiately(int x, int y, LOCAL_MIN_ST *local_min)
/Robot-Funcs/us-sonar.c:   int nomad_get_local_minima(int x, int y, LOCAL_MIN_ST *local_min)
/Robot-Funcs/us-sonar.c:   int find_space(int deg1, int deg2)
/Robot-Funcs/us-sonar.c:   int find_nearest_object(int deg1, int deg2, int *dir)
/Robot-Funcs/us-sonar.c:   int find_farest_object(int deg1, int deg2, int *dir)
/Robot-Funcs/us-sonar.c:   void get_fine_data_coordinate(COORDINATE *pos, int *val)

Access GVG

FILES:
access.c
main.c
trace.c
FUNCTIONS:
/access.c:   int determine_access_dir(void)
/access.c:   int robot_arrive_at_GVG(void)
/access.c:   void access_GVG(void)

Edge Tracing

FILES:
main.c
trace.c
locomotion.c
FUNCTIONS:
/trace.c:   int object_in_robot_direction(int r_dir)
/trace.c:   int select_direction(int now, int aim)
/trace.c:   void set_following_line_by_2LM(int a, int b)
/trace.c:   void set_following_line_by_3LM(int s0, int s1, int s2)
/trace.c:   void set_following_line_by_4LM(void)
/trace.c:   void set_following_line(int lmNum, int mode)
/trace.c:   void set_deperture_point_and_following_line(void)
/Robot-Funcs/locomotion.c:   void nomad_set_line(int x, int y, int d, int s)
/Robot-Funcs/locomotion.c:   void calc_robot_coordinate_based_on_line(NOMAD_COORD *coord)
/Robot-Funcs/locomotion.c:   void nomad_trace_line(void)

Meetpoint Homing

FILES:
honing.c
main.c
trace.c
FUNCTIONS:
/honing.c:   int neighbor_of_meet_point(void)
/honing.c:   int almost_neighbor_of_meet_point(void)
/honing.c:   int calc_honing_point(int *hx, int *hy)
/honing.c:   int meet_point_hunting(void)
/trace.c:   int set_following_line_by_hone(void)

GVG Graph / Node Registration

FILES:
graph.c
gvg.h
main.c
signiture.c
FUNCTIONS:
/graph.c:   NODE_TYPE *get_start_node(void)
/graph.c:   void init_node_structure(void)
/graph.c:   int node_dist(NODE_TYPE *node1, NODE_TYPE *node2)
/graph.c:   int neighbor_of_last_visit_node(void)
/graph.c:   int near_of_back_traced_node(void)
/graph.c:   int type_estimation(NODE_TYPE *node)
/graph.c:   void new_edge_management(int exp_dir, NODE_TYPE *new_node)
/graph.c:   void registrate_new_meet_node(void)
/graph.c:   void renewal_old_meet_node(void)
/graph.c:   void registrate_new_boundary_node(void)
/graph.c:   void add_path_structure(void)
/signiture.c:   int diff_LM_value_average(NODE_TYPE *node1, NODE_TYPE *node2)
/signiture.c:   int comp_node_signiture(NODE_TYPE *node1, NODE_TYPE *node2 )
/signiture.c:   void comp_struct_registration(NODE_TYPE *node1, int e1, NODE_TYPE *node2, int e2)
/signiture.c:   void mfree_comp_structure()
/signiture.c:   int handedness_confirmation(NODE_TYPE *node1, int e1, NODE_TYPE *node2, int e2)
/signiture.c:   int unsearched_node_confirmation(NODE_TYPE *nodeA, NODE_TYPE *nodeB)
/signiture.c:   int t_match_recursive(NODE_TYPE *node1, int f1, NODE_TYPE *node2, int f2, int *hit)
/signiture.c:   void marge_edges(NODE_TYPE *node1, int e1, NODE_TYPE *node2, int e2)
/signiture.c:   void reconstruct_graph(void)
/signiture.c:   void topology_matching_and_reconst_graph(void)

Determine Direction

FILES:
det_dir.c
main.c
signiture.c
FUNCTIONS:
/det_dir.c:   int unexplored_path_included(NODE_TYPE *tmp)
/det_dir.c:   int find_return_edge(void)
/det_dir.c:   int check_unexplored_edge(void)
/det_dir.c:   int determine_direction(void)

Logging

FILES:
log.c
log.h
Log-Funcs/display.c
FUNCTIONS:
/main.c:   void logging_functions(void)
/Log-Display/log.c:   void write_direction_info(void)
/Log-Display/log.c:   void read_direction_info(DIR_ST *dst)
/Log-Display/log.c:   void write_gvg_structure_to_file(NODE_TYPE *start_node)
/Log-Display/log.c:   NODE_TYPE *read_gvg_structure_from_file(void)
/Log-Display/log.c:   void write_object_history_to_file(COORDINATE *obj_hist, int *value, int x, int y)
/Log-Display/log.c:   int read_object_history_from_file(COORDINATE *fine, int *value, int *rx, int *ry)
/Log-Display/log.c:   void write_local_minima_to_file(void)
/Log-Display/log.c:   void read_local_minima_from_file(void)
/Log-Display/log.c:   void write_sonar_arc_and_intersection(void)
/Log-Display/log.c:   int read_sonar_arc_and_intersection(void)
/Log-Display/log.c:   void file_open_for_read_data(int my_argc, char *my_argv)
/Log-Display/log.c:   void log_file_name_registration(int my_argc, char *my_argv)
/Log-Display/log.c:   void close_log_files(void)
/Log-Display/log.c:   void log_printf(char *string,...)

X-Display

FILES:
graphic_tools.c
graphic_tools.h
Display-Funcs/display.c
marking.c
FUNCTIONS:
/Display-Funcs/display.c:   void scaled_line(int x0, int y0, int x1, int y1, char *color)
/Display-Funcs/display.c:   void scaled_circle(int x, int y, int r, char *color)
/Display-Funcs/display.c:   void scaled_mark_plus(int x, int y, char *color)
/Display-Funcs/display.c:   void scaled_mark_plus_small(int x, int y, char *color)
/Display-Funcs/display.c:   void determine_color(int num, char *color)
/Display-Funcs/display.c:   void display_raw_sonar()
/Display-Funcs/display.c:   void display_fine_data(void)
/Display-Funcs/display.c:   void display_smooth_data(void)
/Display-Funcs/display.c:   void display_direction(int rx, int ry, int dir, char *color)
/Display-Funcs/display.c:   void display_local_minima(void)
/Display-Funcs/display.c:   void display_status(void)
/Display-Funcs/graphic_tools.c:   unsigned long GSelectColor(char *color)
/Display-Funcs/graphic_tools.c:   void GOpen(char *dpy_name)
/Display-Funcs/graphic_tools.c:   void clear_window(void)
/Display-Funcs/graphic_tools.c:   int get_mouse_arc(int *bx,int *by,int *ex,int *ey)
/Display-Funcs/graphic_tools.c:   int get_mouse_point(int *x, int *y)
/Display-Funcs/graphic_tools.c:   void draw_string(int x,int y,char *str)
/Display-Funcs/graphic_tools.c:   void remove_Event(void)
/Display-Funcs/graphic_tools.c:   void GClose(void)
/Display-Funcs/graphic_tools.c:   void ForegroundColorSet(char *color)
/Display-Funcs/graphic_tools.c:   void draw_circle(int x,int y,int r, char *color)
/Display-Funcs/graphic_tools.c:   void GBackColorSet(char *color)
/Display-Funcs/graphic_tools.c:   void draw_line_X(int x1,int y1,int x2,int y2,int wid, char *color)
/Display-Funcs/graphic_tools.c:   void draw_fill_box_X(int x1,int y1,int x2,int y2, char *color)
/Display-Funcs/graphic_tools.c:   void draw_box_X(int x1,int y1,int x2,int y2, char *color)
/Display-Funcs/graphic_tools.c:   void flush(void)

Console output

FILES:
data_print.c
FUNCTIONS:
/data_print.c:   void print_local_minima(void)
/data_print.c:   void print_node_info(NODE_TYPE *node)
/data_print.c:   void print_final_structure(void)

Auxiliary / Math functions

FILES:
calc_funcs.c
gvg.h
access.c
FUNCTIONS:
/access.c:   int sup_angle(int dir1, int dir2)
/calc_funcs.c:   double dabs(double val)
/calc_funcs.c:   double cos_deg(double value)
/calc_funcs.c:   double sin_deg(double value)
/calc_funcs.c:   int fix_angle(int angle)
/calc_funcs.c:   int calc_diff_angle(int x, int y)
/calc_funcs.c:   int calc_middle_angle(int dir1, int dir2)
/calc_funcs.c:   void calc_XY_from_deg_val(int deg, int val, int *x, int *y)
/calc_funcs.c:   void calc_deg_val_from_vector(int x, int y, int *deg, int *val)
/calc_funcs.c:   int calc_vec_to_deg(int vx, int vy)
/calc_funcs.c:   int calc_quadratic_equation(double a, double b, double c, double *x1, double *x2)
/calc_funcs.c:   int calc_circles_intersection(int ia1, int ib1, int ir1, int ia2, int ib2, int ir2, int *ix1, int *iy1, int *ideg11, int *ideg12, int *ix2, int *iy2, int *ideg21, int *ideg22)
/calc_funcs.c:   void making_unit_vector(double ix, double iy, double *ox, double *oy)
/honing.c:   void find_center(double x1, double y1, double x2, double y2, double x3, double y3, double *x, double *y)
/main.c:   void initialization(void)
/signiture.c:   void increase_upto_three(int *num)
/trace.c:   int nomad_navi_speed(void)