25 #ifndef DESIGNERTRAJECTORYMANAGER_H
26 #define DESIGNERTRAJECTORYMANAGER_H
35 #include <RobotAPI/interface/core/PoseBase.h>
37 #include <RobotComponents/interface/components/RobotIK.h>
39 #include "../Environment.h"
40 #include "../Interpolation/InterpolationSegmentFactory.h"
41 #include "../Interpolation/InterpolationType.h"
42 #include "../KinematicSolver.h"
43 #include "../Model/DesignerTrajectory.h"
44 #include "../TrajectoryCalculation/DesignerTrajectoryCalculator.h"
45 #include <MotionPlanning/CSpace/CSpaceSampled.h>
46 #include <MotionPlanning/Planner/BiRrt.h>
64 struct ManipulationInterval
67 std::list<UserWaypointPtr> userWaypointsList;
68 std::list<TransitionPtr> transitionsList;
70 std::set<int> breakpointIndicesSet;
83 unsigned int upperIntervalLimit;
84 unsigned int lowerIntervalLimit;
86 std::vector<UserWaypointPtr> userWaypoints;
87 std::vector<TransitionPtr> transitions;
94 std::vector<unsigned int> breakpointIndices;
97 std::vector<std::vector<PoseBasePtr>> interpolatedTransitions;
100 std::vector<unsigned int> newIndexOfUserWaypoint;
105 void addBreakpointIndex(
int index);
112 TransitionPtr getTransitionByRealIndex(
unsigned int i)
const;
113 TransitionPtr getTransitionByZeroBasedIndex(
unsigned int i)
const;
115 std::vector<std::vector<double>>
116 getUserWaypointsIKSolutions(std::vector<std::vector<double>>& ikSolutions,
117 unsigned int intervalStart,
118 unsigned int intervalEnd);
119 void applyJointAnglesOfUserWaypoints(std::vector<std::vector<double>> ikSolution);
122 struct InsertTransition
125 unsigned int transitionIndex;
129 unsigned int insertionIndex;
134 std::list<DesignerTrajectoryPtr> mementoList;
135 unsigned int currentMemento = 0;
141 VirtualRobot::RobotNodeSetPtr rns;
144 bool isInitialized =
false;
146 static const unsigned int MEMENTO_MAX = 20;
147 static const unsigned int DEFAULT_FRAME_COUNT = 100;
148 static constexpr
double MAX_DEVIATION = 0.0001;
196 ManipulationInterval calculateManipulationInterval(
unsigned int manipulationIndex);
206 std::vector<AbstractInterpolationPtr> getInterpolationObjects(ManipulationInterval& mi);
215 void calculateInterpolatedPoints(std::vector<AbstractInterpolationPtr> interpolationObjects,
217 ManipulationInterval& mi);
226 bool checkTransitionReachability(ManipulationInterval& mi,
unsigned int transitionIndex);
251 std::vector<std::vector<double>> calculateIKSolutions(
252 ManipulationInterval& mi
261 std::vector<TimedTrajectory>
262 calculateTimeOptimalTrajectories(std::vector<std::vector<double>> ikSolutions,
263 ManipulationInterval& mi);
265 void theUniversalMethod(
unsigned int index);
267 std::vector<double> getNewIkSolutionOfFirstPoint(PoseBasePtr oldStart,
268 PoseBasePtr newStart,
269 std::vector<double> jointAnglesOldStart);
408 #endif // DESIGNERTRAJECTORYMANAGER_H