44 #include "kinopath.hpp"
46 #include "API/Device/robot.hpp"
47 #include "API/Trajectory/trajectory.hpp"
48 #include "API/ConfigSpace/configuration.hpp"
51 #include "API/Trajectory/kinotrajectorygenomstruct.h"
55 double time_from_start;
56 std::vector<double> positions;
57 std::vector<double> velocities;
66 KinoTrajectory(
const KinoPath &path,
const Eigen::VectorXd &maxVelocity,
const Eigen::VectorXd &maxAcceleration,
double timeStep = 0.001,
double initialVel = 0);
75 double getDuration()
const;
78 Eigen::VectorXd getPosition(
double time)
const;
79 Eigen::VectorXd getVelocity(
double time)
const;
80 std::list<Eigen::VectorXd> getWaypointsAfter(
double time)
const;
82 KinoPath getPath()
const {
return path;};
83 Eigen::VectorXd getMaxVelocity()
const {
return maxVelocity;};
84 Eigen::VectorXd getMaxAcceleration()
const {
return maxAcceleration;};
85 double getTimeStep()
const {
return timeStep;};
86 double getPathVelocity(
double time)
const;
88 double getFactor()
const {
return factor;};
89 void setFactor(
double factor) { this->factor = factor;};
94 static KinoTrajectory* createKinoTrajectory(p3d_traj* p3dTrajectory, std::vector<unsigned int> dofs,
double timeStep = 0.001);
97 static KinoGenomTrajectory createKinoGenomTrajectory(p3d_traj* p3dTrajectory, std::vector<unsigned int> dofs,
double timeStep = 0.001);
107 std::vector<KinoROSPoint> toROS(
unsigned int intSteps=0)
const;
111 void toGazebo(
unsigned int intSteps = 0)
const;
112 void print(
unsigned int intSteps = 0)
const;
115 void outputPhasePlaneKinoTrajectory()
const;
118 struct KinoTrajectoryStep {
119 KinoTrajectoryStep() {}
120 KinoTrajectoryStep(
double pathPos,
double pathVel) :
129 void compute(
double initialVel = 0.0);
130 bool getNextSwitchingPoint(
double pathPos, KinoTrajectoryStep &nextSwitchingPoint,
double &beforeAcceleration,
double &afterAcceleration);
131 bool getNextAccelerationSwitchingPoint(
double pathPos, KinoTrajectoryStep &nextSwitchingPoint,
double &beforeAcceleration,
double &afterAcceleration);
132 bool getNextVelocitySwitchingPoint(
double pathPos, KinoTrajectoryStep &nextSwitchingPoint,
double &beforeAcceleration,
double &afterAcceleration);
133 bool integrateForward(std::list<KinoTrajectoryStep> &trajectory,
double acceleration);
134 void integrateBackward(std::list<KinoTrajectoryStep> &startKinoTrajectory,
double pathPos,
double pathVel,
double acceleration);
135 double getMinMaxPathAcceleration(
double pathPosition,
double pathVelocity,
bool max);
136 double getMinMaxPhaseSlope(
double pathPosition,
double pathVelocity,
bool max);
137 double getAccelerationMaxPathVelocity(
double pathPos)
const;
138 double getVelocityMaxPathVelocity(
double pathPos)
const;
139 double getAccelerationMaxPathVelocityDeriv(
double pathPos);
140 double getVelocityMaxPathVelocityDeriv(
double pathPos);
142 std::list<KinoTrajectoryStep>::const_iterator getKinoTrajectorySegment(
double time)
const;
144 static double deltaValue(
double q1,
double q2);
147 Eigen::VectorXd maxVelocity;
148 Eigen::VectorXd maxAcceleration;
151 std::list<KinoTrajectoryStep> trajectory;
152 std::list<KinoTrajectoryStep> endTrajectory;
154 static const double eps;
155 const double timeStep;
157 mutable double cachedTime;
158 mutable std::list<KinoTrajectoryStep>::const_iterator cachedTrajectorySegment;
Definition: kinopath.hpp:76
Definition: kinotrajectorygenomstruct.h:11
This class holds a the robot represented by a kinematic chain.
Definition: robot.hpp:42
Definition: kinotrajectory.hpp:62
Definition: trajectory.hpp:40
Definition: kinotrajectory.hpp:54