00001 00010 #ifndef _SMP_COLLISION_CHECKER_BASE_H_ 00011 #define _SMP_COLLISION_CHECKER_BASE_H_ 00012 00013 #include <smp/planner_utils/trajectory.h> 00014 #include <smp/planner_utils/vertex_edge.h> 00015 00016 00017 namespace smp { 00018 00020 00028 template< class typeparams > 00029 class collision_checker_base { 00030 00031 00032 00033 typedef typename typeparams::state state_t; 00034 typedef typename typeparams::input input_t; 00035 typedef typename typeparams::vertex_data vertex_data_t; 00036 typedef typename typeparams::edge_data edge_data_t; 00037 00038 typedef vertex<typeparams> vertex_t; 00039 typedef edge<typeparams> edge_t; 00040 00041 typedef trajectory<typeparams> trajectory_t; 00042 00043 00044 public: 00045 00046 virtual ~collision_checker_base () { }; 00047 00048 00059 virtual int cc_update_insert_vertex (vertex_t *vertex_in) = 0; 00060 00061 00072 virtual int cc_update_insert_edge (edge_t *edge_in) = 0; 00073 00074 00085 virtual int cc_update_delete_vertex (vertex_t *vertex_in) = 0; 00086 00087 00098 virtual int cc_update_delete_edge (edge_t *edge_in) = 0; 00099 00100 00110 virtual int check_collision_state (state_t *state_in) = 0; 00111 00112 00122 virtual int check_collision_trajectory (trajectory_t *trajectory_in) = 0; 00123 00124 }; 00125 00126 00127 } 00128 00129 #endif