libmove3d-planners
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros Groups Pages
configuration.hpp
1 #ifndef CONFIGURATION_HPP
2 #define CONFIGURATION_HPP
3 
4 
5 
6 #include <Eigen/Core>
7 #define EIGEN_USE_NEW_STDVECTOR
8 #include <Eigen/Geometry>
9 #include <Eigen/StdVector>
10 #include <tr1/memory>
11 
12 class Robot;
13 
26 
27 public:
28  //constructor and destructor
29  // EIGEN_MAKE_ALIGNED_OPERATOR_NEW
30 
35  Configuration(Robot* R);
36 
44  Configuration(Robot* R, double* C, bool noCopy = false);
45 
50  Configuration(const Configuration& conf);
51 
56 
60  Configuration & operator= (const Configuration & other);
61 
65  double& at(const int &i) { return _Configuration[i]; }
66 
70  double& operator [] ( const int &i ) const { return _Configuration[i]; }
71 
75  double& operator () ( const int &i ) const { return _Configuration[i]; }
76 
80  void Clear();
81 
82  //Accessors
87  Robot* getRobot();
88 
93  Eigen::Quaterniond getQuaternion();
94 
98  void setQuaternionsToEuler();
99 
104  double* getConfigStruct();
105 
110  double* getConfigStructCopy();
111 
116  void setConfiguration(double* C);
122 
127  // bool isQuatInit();
128 
132  // void initQuaternions();
133 
137  // void initQuaternions(int quatDof,Eigen::Quaternion<double> quat);
138 
142  void convertToRadian();
143 
147  std::tr1::shared_ptr<Configuration> getConfigInDegree();
148 
154  double dist(Configuration& Conf, bool print=false);
155 
162  double dist(Configuration& q, int distChoice);
163 
165  double distance(Configuration * q);
166 
168  double squareDistance(Configuration * q);
169 
174  bool isInCollision();
175 
180  bool isOutOfBounds(bool print = false);
181 
187 
191  void setAsNotTested();
192 
193 
198  double distEnv();
199 
204  double getActiveDoF(unsigned int ith);
205 
209  void setActiveDoF(unsigned int ith, double value);
210 
216  bool equal(Configuration& Conf, bool print=false);
217 
221  bool operator==(Configuration& Conf) { return this->equal(Conf); }
222 
226  bool operator!=(Configuration& Conf) { return !(this->equal(Conf)); }
227 
232  std::tr1::shared_ptr<Configuration> copy();
233 
238  void copyPassive(Configuration& C);
239 
244  double cost();
245 
249  void setCostAsNotTested();
250 
256 
260  bool setConstraints();
261 
262 #ifdef LIGHT_PLANNER
263 
267  Eigen::Vector3d getTaskPos();
268 #endif
269 
273  std::tr1::shared_ptr<Configuration> add(Configuration& C);
274 
278  std::tr1::shared_ptr<Configuration> operator+(Configuration& Conf) { return this->add(Conf); }
279 
283  std::tr1::shared_ptr<Configuration> sub(Configuration& C);
284 
288  std::tr1::shared_ptr<Configuration> operator-(Configuration& Conf) { return this->sub(Conf); }
289 
293  Configuration& mult(double coeff);
294 
298  Configuration& operator*(double coeff) { return this->mult(coeff); }
299 
303  Eigen::VectorXd getEigenVector();
304  Eigen::VectorXd getEigenVector(const int& startIndex, const int& endIndex);
305 
309  void setFromEigenVector(const Eigen::VectorXd& conf);
310  void setFromEigenVector(const Eigen::VectorXd& conf, const int& startIndex, const int& endIndex);
311 
315  void print(bool withPassive = false);
316 
320  void printCompare(Configuration *conf,bool withPassive = false);
321 
322 
323 private:
324  bool _flagInitQuaternions;
325  int _QuatDof;
326  // Eigen::Quaterniond _Quaternions;
327 
328  bool _CollisionTested;
329  bool _InCollision;
330 
331  bool _CostTested;
332  double _Cost;
333 
334  Robot* _Robot;
335  double* _Configuration;
338  /*************************************************************************************
339  **************** FlyCrane ***********************************************
340  *************************************************************************************/
341 
342 public:
345 
347  Eigen::Vector3d getPosition() const { return position; }
348 
350  double * getOrientation() { return orientation; }
351 
353  double * getDihedralAngles() { return dihedralAngles; }
354 
356  Eigen::Vector3d * getQuadCMs() { return CM; }
357 
359  Eigen::Vector3d * getQuadAnchors() { return A; }
360 
362  bool getAssignedQuadAnchors() const { return assignedQuadAnchors; }
363 
365  double * getMaximalTensions() { return maximalTensions; }
366 
368  double * getMinimalTensions() { return minimalTensions; }
369 
371  double * getQuadForces() { return quadForces; }
372 
374  void setCentersOfMass(Eigen::Vector3d * centersOfMass);
375 
377  void setQuadAnchors(Eigen::Vector3d * anchors);
378 
380  void setTensionsAndForces(double maxTensions[], double minTensions[], double forces[]);
381 
382  bool isConnectible();
383 
384 private:
386  Eigen::Vector3d position;
387 
389  double orientation[3];
390 
392  double dihedralAngles[3];
393 
395  Eigen::Vector3d CM[3];
396 
398  Eigen::Vector3d A[3];
399 
401  bool assignedQuadAnchors;
402 
404  double maximalTensions[6];
405 
407  double minimalTensions[6];
408 
410  double quadForces[3];
411 };
412 
413 typedef std::tr1::shared_ptr<Configuration> confPtr_t;
414 
415 #endif
std::tr1::shared_ptr< Configuration > operator+(Configuration &Conf)
Adds tow configurations.
Definition: configuration.hpp:278
void initializeFlyCraneConfiguration()
Initialize the FlyCrane attributes.
Definition: configuration.cpp:787
Eigen::Vector3d getPosition() const
Get the position (in translation) of the reference point of the platform.
Definition: configuration.hpp:347
void convertToRadian()
indique si le vecteur de Quaternions est initialisé
Definition: configuration.cpp:130
double distEnv()
Compute the min distance to a CSpace obstacle.
Definition: configuration.cpp:412
~Configuration()
Destructeur de la classe.
Definition: configuration.cpp:116
void copyPassive(Configuration &C)
copie les joints passifs de la Configuration courante dans la Configuration entrée ...
Definition: configuration.cpp:525
double & operator()(const int &i) const
Acces the configuration.
Definition: configuration.hpp:75
void setQuadAnchors(Eigen::Vector3d *anchors)
Set the coordinates of the anchor points of the quadrotors (expressed in the global reference frame)...
Definition: configuration.cpp:818
double * getConfigStructCopy()
obtient le pointeur sur la ConfigPt
Definition: configuration.cpp:157
double getActiveDoF(unsigned int ith)
Get the Ith Active Dof.
Definition: configuration.cpp:441
void setAsNotTested()
Set the configuration as not tested.
Definition: configuration.cpp:407
double & at(const int &i)
Acces the configuration.
Definition: configuration.hpp:65
double * getQuadForces()
Get the norms of the forces exerted by the quadrotors.
Definition: configuration.hpp:371
Eigen::VectorXd getEigenVector()
Get the Eigen Vector of the configuration.
Definition: configuration.cpp:579
double distance(Configuration *q)
Compute the distance between this configuration and the given one.
Definition: configuration.cpp:348
bool operator!=(Configuration &Conf)
Compare tow configurations.
Definition: configuration.hpp:226
double * getMinimalTensions()
Get the lower bounds on the estimations of the tensions exerted on the cables.
Definition: configuration.hpp:368
double * getOrientation()
Get the position (in rotation) of the reference point of the platform.
Definition: configuration.hpp:350
std::tr1::shared_ptr< Configuration > copy()
copie une Configuration
Definition: configuration.cpp:520
void setCentersOfMass(Eigen::Vector3d *centersOfMass)
Set the coordinates of the center of mass of each quadrotor (in the global reference frame)...
Definition: configuration.cpp:808
bool setConstraintsWithSideEffect()
Sets the configuration to respect robot constraints Leaves the robot in the last configuration.
Definition: configuration.cpp:630
void setActiveDoF(unsigned int ith, double value)
Set the ith active DoF.
Definition: configuration.cpp:469
Robot * getRobot()
obtient le Robot pour lequel la Configuration est créée
Definition: configuration.cpp:147
double & operator[](const int &i) const
Acces the configuration.
Definition: configuration.hpp:70
Eigen::Vector3d * getQuadCMs()
Get the coordinates of the center of mass of each quadrotor (expressed in the global reference frame)...
Definition: configuration.hpp:356
This class holds a the robot represented by a kinematic chain.
Definition: robot.hpp:42
bool equal(Configuration &Conf, bool print=false)
compare à une autre Configuration
Definition: configuration.cpp:497
std::tr1::shared_ptr< Configuration > operator-(Configuration &Conf)
Adds tow configurations.
Definition: configuration.hpp:288
void Clear()
détruie la configPt stockée
Definition: configuration.cpp:121
void setConfiguration(double *C)
modifie la structure configPt stockée
Eigen::Vector3d * getQuadAnchors()
Get the coordinates of the anchor point of each quadrotor (expressed in the global reference frame)...
Definition: configuration.hpp:359
void setQuaternionsToEuler()
Sets EulersAngles.
double * getDihedralAngles()
Get the orientations of the pairs of ropes with respect to the platform.
Definition: configuration.hpp:353
bool isOutOfBounds(bool print=false)
True is the configuration respects DoFs bounds.
Definition: configuration.cpp:392
void adaptCircularJointsLimits()
True is the configuration respects DoFs bounds.
Definition: configuration.cpp:397
Configuration(Robot *R)
Constructeur de la classe.
Definition: configuration.cpp:33
double squareDistance(Configuration *q)
Compute the square of the distance between this configuration and the given one.
Definition: configuration.cpp:356
bool getAssignedQuadAnchors() const
Have the coordinates of the anchor points on the quadrotors been assigned?
Definition: configuration.hpp:362
void printCompare(Configuration *conf, bool withPassive=false)
print a comparison between the 2 confs
Definition: configuration.cpp:746
void setTensionsAndForces(double maxTensions[], double minTensions[], double forces[])
Set the tension bounds and force norms.
Definition: configuration.cpp:829
Eigen::Quaterniond getQuaternion()
Gets the quaternion.
double cost()
obtient le cout de la Configuration suivant l'espace des fonctions de cout
Definition: configuration.cpp:681
void setFromEigenVector(const Eigen::VectorXd &conf)
set the Eigen Vector of the configuration
Definition: configuration.cpp:612
bool setConstraints()
Sets the configuration to respect robot constraints.
Definition: configuration.cpp:645
Classe représentant une Configuration d'un Robot.
Definition: configuration.hpp:25
double * getMaximalTensions()
Get the upper bounds on the estimations of the tensions exerted on the cables.
Definition: configuration.hpp:365
Configuration & operator=(const Configuration &other)
Asignation.
Definition: configuration.cpp:95
double dist(Configuration &Conf, bool print=false)
calcule la distance à une Configuration
Definition: configuration.cpp:260
double * getConfigStruct()
obtient le pointeur sur la ConfigPt
Definition: configuration.cpp:152
void setCostAsNotTested()
Set the configuration as not tested.
Definition: configuration.cpp:694
bool isInCollision()
indique si la Configuration est en collision
Definition: configuration.cpp:361
std::tr1::shared_ptr< Configuration > getConfigInDegree()
Get Config in degrees.
Definition: configuration.cpp:138
bool operator==(Configuration &Conf)
Compare tow configurations.
Definition: configuration.hpp:221