src/smp/planners/rrg.h

Go to the documentation of this file.
00001 
00008 #ifndef _SMP_PLANNER_RRG_H_
00009 #define _SMP_PLANNER_RRG_H_
00010 
00011 #include <smp/planners/base_incremental.h>
00012 #include <smp/planners/planner_parameters.h>
00013 
00014 
00015 namespace smp {
00016 
00018 
00024     template< class typeparams > 
00025     class rrg : public planner_incremental< typeparams > {
00026 
00027 
00028         typedef typename typeparams::state state_t;
00029         typedef typename typeparams::input input_t;
00030 
00031         typedef trajectory<typeparams> trajectory_t;
00032 
00033         typedef vertex<typeparams> vertex_t;
00034         typedef edge<typeparams> edge_t;
00035 
00036         typedef planner_incremental<typeparams> planner_t;
00037 
00038         typedef planner_parameters parameters_t;
00039 
00040         typedef sampler_base<typeparams> sampler_t;
00041         typedef distance_evaluator_base<typeparams> distance_evaluator_t;
00042         typedef extender_base<typeparams> extender_t;
00043         typedef collision_checker_base<typeparams> collision_checker_t;
00044         typedef model_checker_base<typeparams> model_checker_t;
00045 
00046     private:
00047 
00048 
00049         // This function adds the given state to the beginning of the tracjetory and calls the collision checker.
00050         int check_extended_trajectory_for_collision (state_t *state, trajectory_t *trajectory) {
00051 
00052             trajectory->list_states.push_front (state);
00053             int collision_check = this->collision_checker.check_collision_trajectory (trajectory);
00054             trajectory->list_states.pop_front ();
00055 
00056             return collision_check;
00057         }
00058 
00059 
00060 
00061     public:
00062 
00063 
00065 
00070         parameters_t parameters;
00071 
00072 
00073         rrg ();
00074         ~rrg ();
00075 
00089         rrg (sampler_t &sampler_in, distance_evaluator_t &distance_evaluator_in, extender_t &extender_in, 
00090              collision_checker_t &collision_checker_in, model_checker_t &model_checker_in);
00091 
00092 
00132         int iteration (); 
00133 
00134     };
00135 
00136 
00137 }
00138 
00139 #endif