ocra-recipes
Doxygen documentation for the ocra-recipes repository
ExperimentalTrajectory.h
Go to the documentation of this file.
1 #ifndef EXPERIMENTALTRAJECTORY_H
2 #define EXPERIMENTALTRAJECTORY_H
3 
5 
6 
7 
8 namespace ocra
9 {
10 
12 {
14 
15  public:
16 
18 
19  Eigen::MatrixXd getDesiredValues(double time);
20  Eigen::VectorXd getVariance(double time);
21 
22 
23  void getDesiredValues(double time, Eigen::MatrixXd& desiredValues, Eigen::VectorXd& variance);
24  void getDesiredValues(double time, Eigen::Displacementd& position, Eigen::Twistd& velocity, Eigen::Twistd& acceleration);
25 
26  double getMaxVariance();
27 
28  Eigen::MatrixXd getWaypointData();
29 
30  void addNewWaypoint(Eigen::VectorXd newWaypoint, double waypointTime);
32  void removeWaypoint(int index);
33 
34  Eigen::MatrixXd getRbfnKernelCurves();
35 
36  protected:
37  virtual void initializeTrajectory();
38  double t0, t0_variance;
40 
41  private:
42  Eigen::MatrixXd originalWaypoints;
43  int youngestWaypointIndex;
44 
45 
46  int numberOfKernels;
47  Eigen::VectorXd kernelCenters; // where the centers are placed
48  Eigen::VectorXd maxCovariance; // maximum allowable covariance (or variance for each dof)
49  double kernelLengthParameter; // influence of the kernel centers on one another
50 
51  Eigen::MatrixXd designMatrix, designMatrixInv; // big K matrix
52 
53 
54  void precalculateTrajectory(double DT, Eigen::MatrixXd& path, Eigen::VectorXd& timeline);
55  Eigen::MatrixXd kernelFunction(double m);
56  Eigen::MatrixXd kernelFunction(Eigen::VectorXd& evalVec);
57 
58 
59 
60  // rbfn
61  Eigen::VectorXd rbfnKernelFunction(double m);
62  Eigen::MatrixXd rbfnKernelFunction(Eigen::VectorXd& evalVec);
63  void calculateRbfnWeights();
64  Eigen::MatrixXd rbfnWeights;
65 
66  Eigen::VectorXd getRbfnOutput(double m);
67  Eigen::MatrixXd getRbfnOutput(Eigen::VectorXd& evalVec);
68 
69  Eigen::VectorXd posOld;
70  Eigen::VectorXd velOld;
71  double t_old;
72 
73 
74  void reinitialize();
75 
76 };
77 
78 } // end of namespace ocra
79 #endif // EXPERIMENTALTRAJECTORY_H
Eigen::VectorXd getVariance(double time)
#define DEFINE_CLASS_POINTER_TYPEDEFS(Class)
Definition: Macros.h:8
Optimization-based Robot Controller namespace. a library of classes to write and solve optimization p...
Eigen::MatrixXd getDesiredValues(double time)
void addNewWaypoint(Eigen::VectorXd newWaypoint, double waypointTime)