libmove3d-planners
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros Groups Pages
PerturbationRoadmap.hpp
1 //
2 // PerturbationRoadmap.hpp
3 // libmove3d-motion
4 //
5 // Created by Jim Mainprice on 01/02/12.
6 // Copyright (c) 2012 LAAS-CNRS. All rights reserved.
7 //
8 
9 #ifndef PERTURBATION_ROADMAP_hpp
10 #define PERTURBATION_ROADMAP_hpp
11 
12 #include "planner/PRM/PRM.hpp"
13 #include "planner/TrajectoryOptim/Classic/costOptimization.hpp"
14 
15 #include "API/Trajectory/trajectory.hpp"
16 
17 class PerturbationRoadmap : public PRM
18 {
19 public:
27 
32 
37  virtual unsigned init();
38 
39 protected:
40 
44  void getTranslationBounds();
45 
49  void addTrajectory(const API::Trajectory& T);
50 
54  bool testPerturb( confPtr_t q_new, std::vector<Node*>& vect_conf );
55 
59  bool findBestCycle( confPtr_t q_new, double dist, std::vector<Node*>& vect_conf );
60 
64  bool addPerturbation( confPtr_t q_rand );
65 
69  bool expandPerturbation( confPtr_t q_rand );
70 
71 
75  confPtr_t trajShootConfiguration();
76 
80  confPtr_t getExpansionConfiguration(bool sample_on_traj);
81 
85  Node* getClosestOnTraj( confPtr_t q_rand );
86 
90  double distToTraj( confPtr_t q_rand );
91 
95  virtual void expandOneStep();
96 
97 private:
101  Node* m_main_compco;
102  double m_delta;
103  bool m_descent;
104  bool m_sampled_on_traj;
105  double m_max_dist_to_traj;
106  int m_K_Nearest;
107 
108  bool m_use_rejection;
109  double m_std_dev_trans;
110  double m_std_dev_rot;
111  double m_radian_steps;
112  double m_transl_steps;
113  double m_transl_max;
114 
115  confPtr_t m_qi;
116  confPtr_t m_qf;
117 
118  API::CostOptimization* m_traj;
119 };
120 
121 #endif
void getTranslationBounds()
Compute the translation bounds of the robot.
Definition: PerturbationRoadmap.cpp:50
bool testPerturb(confPtr_t q_new, std::vector< Node * > &vect_conf)
Test if the perturbation is valid.
Definition: PerturbationRoadmap.cpp:228
Classe représentant un Node d'un Graph.
Definition: node.hpp:39
Classe représentant l'algorithme PRM.
Definition: PRM.hpp:12
Definition: costOptimization.hpp:20
Definition: PerturbationRoadmap.hpp:17
Definition: graph.hpp:28
bool addPerturbation(confPtr_t q_rand)
Add a perturbation to the graph.
Definition: PerturbationRoadmap.cpp:277
Node * getClosestOnTraj(confPtr_t q_rand)
Get colest on traj.
Definition: PerturbationRoadmap.cpp:131
This class holds a the robot represented by a kinematic chain.
Definition: robot.hpp:42
confPtr_t getExpansionConfiguration(bool sample_on_traj)
Get the expansion direction.
Definition: PerturbationRoadmap.cpp:400
virtual unsigned init()
initialize the Planner
Definition: PerturbationRoadmap.cpp:68
Definition: trajectory.hpp:40
double distToTraj(confPtr_t q_rand)
Get colest on traj.
Definition: PerturbationRoadmap.cpp:142
~PerturbationRoadmap()
Deletes a perturbation planner.
Definition: PerturbationRoadmap.cpp:45
confPtr_t trajShootConfiguration()
Get the expansion direction.
Definition: PerturbationRoadmap.cpp:385
void addTrajectory(const API::Trajectory &T)
Adds a trajectory.
Definition: PerturbationRoadmap.cpp:105
bool findBestCycle(confPtr_t q_new, double dist, std::vector< Node * > &vect_conf)
Find the best cycle in the graph.
Definition: PerturbationRoadmap.cpp:156
virtual void expandOneStep()
Adds nodes to Graph.
Definition: PerturbationRoadmap.cpp:420
PerturbationRoadmap(Robot *R, Graph *G)
Creates a perturbation roadmap from a given robot and a given graph
Definition: PerturbationRoadmap.cpp:29