ocra-recipes
Doxygen documentation for the ocra-recipes repository
TimeOptimalTrajectory.cpp
Go to the documentation of this file.
2 #include <math.h>
3 
4 namespace ocra
5 {
6 
8 {
9  delete gt_trajectory;
10 }
11 
12 
13 Eigen::MatrixXd TimeOptimalTrajectory::getDesiredValues(double _time)
14 {
15  if (startTrigger)
16  {
17  startTrigger = false;
18  t0 = _time;
19  }
20 
21  Eigen::MatrixXd desiredValue = Eigen::MatrixXd::Zero(nDoF, TRAJ_DIM);
22 
23  double t = _time - t0;
24 
25  if (t <= duration) {
26  desiredValue.col(POS_INDEX) = gt_trajectory->getPosition(t);
27  desiredValue.col(VEL_INDEX) = gt_trajectory->getVelocity(t);
28  } else {
29  desiredValue.col(POS_INDEX) = gt_trajectory->getPosition(duration);
30  desiredValue.col(VEL_INDEX) = gt_trajectory->getVelocity(duration);
31  }
32  return desiredValue;
33 }
34 
36 {
37  duration = 0.0;
38  /* For reaching */
39  // maximumVelocityVector = Eigen::VectorXd::Constant(nDoF, 0.05);
40  // maximumAccelerationVector = Eigen::VectorXd::Constant(nDoF, 0.05);
41 
42  /* For reaching on real robot */
43  // maximumVelocityVector = Eigen::VectorXd::Constant(nDoF, 0.05); // will work for original case
44  // maximumAccelerationVector = Eigen::VectorXd::Constant(nDoF, 0.05); // will work for original case
45  // maximumVelocityVector = Eigen::VectorXd::Constant(nDoF, 0.01);
46  // maximumAccelerationVector = Eigen::VectorXd::Constant(nDoF, 0.01);
47 
48 
49  /* For standing up */
50  maximumVelocityVector = Eigen::VectorXd::Constant(nDoF, 0.1);
51  maximumAccelerationVector = Eigen::VectorXd::Constant(nDoF, 0.1);
52  maxDeviation = 0.1;
53  timeStep = 0.01;
54 
56 }
57 
59 {
60  return duration;
61 }
62 
64 {
65  gttraj::Path path = gttraj::Path(waypointList, maxDeviation);
67  if(gt_trajectory->isValid()) {
68  duration = gt_trajectory->getDuration();
69  }
70  else {
71  OCRA_WARNING("Trajectory generation failed.")
72  }
73 }
74 
75 
76 
77 } //namespace ocra
#define VEL_INDEX
Definition: Trajectory.h:21
#define TRAJ_DIM
Definition: Trajectory.h:24
Eigen::MatrixXd getDesiredValues(double time)
Optimization-based Robot Controller namespace. a library of classes to write and solve optimization p...
std::list< Eigen::VectorXd > waypointList
Definition: Trajectory.h:116
gttraj::Trajectory * gt_trajectory
Eigen::VectorXd maximumAccelerationVector
Definition: Trajectory.h:113
#define POS_INDEX
Definition: Trajectory.h:20
Eigen::VectorXd maximumVelocityVector
Definition: Trajectory.h:111