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