src/smp/components/extenders/dubins.h

Go to the documentation of this file.
00001 
00010 #ifndef _SMP_SYSTEM_DUBINS_H_
00011 #define _SMP_SYSTEM_DUBINS_H_
00012 
00013 
00014 #include <smp/components/extenders/state_array_double.h>
00015 #include <smp/components/extenders/input_array_double.h>
00016 #include <smp/components/extenders/base.h>
00017 
00018 #include <list>
00019 
00020 using namespace std;
00021 
00022 
00023 namespace smp {
00024 
00026 
00033     class state_dubins : public state_array_double <3> {
00034     
00035     };
00036 
00037 
00038 
00040 
00048     class input_dubins : public input_array_double<2> {
00049 
00050 
00051     };
00052 
00053 
00055 
00060     template< class typeparams >
00061     class extender_dubins : public extender_base<typeparams> {
00062 
00063 
00064 
00065         typedef typename typeparams::state state_t;
00066         typedef typename typeparams::input input_t;
00067         typedef typename typeparams::vertex_data vertex_data_t;
00068         typedef typename typeparams::edge_data edge_data_t;
00069 
00070         typedef vertex<typeparams> vertex_t;
00071         typedef edge<typeparams> edge_t;
00072 
00073         typedef trajectory<typeparams> trajectory_t;
00074 
00075         int extend_dubins_spheres (double x_s1, double y_s1, double t_s1, 
00076                                    double x_s2, double y_s2, double t_s2, int comb_no,
00077                                    int *fully_extends, list<state_t *> *list_states, list<input_t *> *list_inputs);
00078     
00079         double extend_dubins_all (state_t *state_ini, state_t *state_fin, 
00080                                   int *fully_extends, list<state_t *> *list_states_out, list<input_t *> *list_inputs_out);
00081     
00082 
00083     public :
00084 
00085         extender_dubins ();
00086         ~extender_dubins ();
00087     
00088 
00089         int ex_update_insert_vertex (vertex_t *vertex_in);
00090     
00091 
00092         int ex_update_insert_edge (edge_t *edge_in);  
00093 
00094 
00095         int ex_update_delete_vertex (vertex_t *vertex_in);
00096     
00097     
00098         int ex_update_delete_edge (edge_t *edge_in);
00099 
00100    
00101         int extend (state_t *state_from_in, state_t *state_towards_in,
00102                     int *exact_connection_out, trajectory_t *trajectory_out,
00103                     list<state_t*> *intermediate_vertices_out);
00104     
00105     };
00106 
00107 
00108 }
00109 
00110 #endif