InterpolationSegmentFactory Class Reference

The InterpolationSegmentFactory class Utility Class used to easily create InterpolationSegments, so that every Interpolation can be threated the same An Interpolation produced by this factory always has exactly two Waypoints and is defined between 0 and 1 With 0 being the starting pose and 1 being the end pose. More...

`#include <RobotComponents/gui-plugins/RobotTrajectoryDesignerGuiPlugin/Interpolation/InterpolationSegmentFactory.h>`

## Static Public Member Functions

static VirtualRobot::IKSolver::CartesianSelection getSmallestDominating (std::vector< VirtualRobot::IKSolver::CartesianSelection > selections)
getSmallestDominating returns the cartesian selection that dominates all other cartesian selections in selections Examples: (X,Y,Y,Y,Z) -> Pos ; (X,Y, Ori) -> All; (Ori,Ori) -> Ori ; (X,Z,Pos) -> Pos More...

static bool isDominantOver (VirtualRobot::IKSolver::CartesianSelection current, VirtualRobot::IKSolver::CartesianSelection other)
isDominantOver returns true when current selection dominates other selection Definition: A CartesianSelection dominates another CartesianSelection when additional Information is needed to solve curren after solving other Examples: - X dominates Y ; Y dominates X ; Pos dominates X,Y ans Z but X,Y and Z dont dominate Pos; Pos dominates Ori ; Ori dominates Pos More...

static bool needsOptimizing (std::vector< VirtualRobot::IKSolver::CartesianSelection > &selections)
needsOptimizing returns true if there is a CartesianSelection at i that dominates a CartesianSelection at i - 1 More...

static void optimizeControlPoints (std::vector< PoseBasePtr > &controlPoints, std::vector< VirtualRobot::IKSolver::CartesianSelection > &selections)
optimizeControlPoints changes the cartian selections and control points so that the IKSolving produces a smooth Trajectory More...

static PoseBasePtr optimizePose (armarx::PoseBasePtr original, armarx::PoseBasePtr corrected, VirtualRobot::IKSolver::CartesianSelection selectionOriginal, VirtualRobot::IKSolver::CartesianSelection selectionCorrected)
optimizePose changes the original pose so that the interpolation is smove when it changes from selectionOriginal to selectionCorrected More...

static std::vector< AbstractInterpolationPtrproduceInterpolationSegments (std::vector< PoseBasePtr > controlPoints, std::vector< InterpolationType > interpolations)
produceInterpolationSegments constructs a vector of AbstractInterpolation the concrete Interpolationtype of which is defined by interpolations More...

static std::vector< AbstractInterpolationPtrproduceLinearInterpolationSegments (std::vector< PoseBasePtr > controlPoints)
produceInterpolationSegments constructs a vector of LinearInterpolations More...

static AbstractInterpolationPtr produceSplineInterpolationSegment (std::vector< PoseBasePtr > controlPoints, PoseBasePtr segmentStart)
produceSplineInterpolationSegment constructs the splineInterpolationSegment of a splineInterpolation between given controlPoints More...

static std::vector< AbstractInterpolationPtrproduceSplineInterpolationSegments (std::vector< PoseBasePtr > controlPoints)
produceInterpolationSegments constructs a vector of SplineInterpolations More...

## Detailed Description

The InterpolationSegmentFactory class Utility Class used to easily create InterpolationSegments, so that every Interpolation can be threated the same An Interpolation produced by this factory always has exactly two Waypoints and is defined between 0 and 1 With 0 being the starting pose and 1 being the end pose.

Definition at line 37 of file InterpolationSegmentFactory.h.

## ◆ getSmallestDominating()

 IKSolver::CartesianSelection getSmallestDominating ( std::vector< VirtualRobot::IKSolver::CartesianSelection > selections )
static

getSmallestDominating returns the cartesian selection that dominates all other cartesian selections in selections Examples: (X,Y,Y,Y,Z) -> Pos ; (X,Y, Ori) -> All; (Ori,Ori) -> Ori ; (X,Z,Pos) -> Pos

Parameters
 selections the selections to get the smallest dominating selection from
Returns
the smmallestDominating Selection

Definition at line 304 of file InterpolationSegmentFactory.cpp.

Here is the call graph for this function:

## ◆ isDominantOver()

 bool isDominantOver ( VirtualRobot::IKSolver::CartesianSelection current, VirtualRobot::IKSolver::CartesianSelection other )
static

isDominantOver returns true when current selection dominates other selection Definition: A CartesianSelection dominates another CartesianSelection when additional Information is needed to solve curren after solving other Examples: - X dominates Y ; Y dominates X ; Pos dominates X,Y ans Z but X,Y and Z dont dominate Pos; Pos dominates Ori ; Ori dominates Pos

Parameters
 current the later cartesian selection other the prior cartesian selection
Returns
true if current dominates other

Definition at line 291 of file InterpolationSegmentFactory.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ needsOptimizing()

 bool needsOptimizing ( std::vector< VirtualRobot::IKSolver::CartesianSelection > & selections )
static

needsOptimizing returns true if there is a CartesianSelection at i that dominates a CartesianSelection at i - 1

Parameters
 selections the cartesian selection that should be reached
Returns
true if the cartesian Selection need optimizing for a smooth trajectory

Definition at line 278 of file InterpolationSegmentFactory.cpp.

Here is the call graph for this function:

## ◆ optimizeControlPoints()

 void optimizeControlPoints ( std::vector< PoseBasePtr > & controlPoints, std::vector< VirtualRobot::IKSolver::CartesianSelection > & selections )
static

optimizeControlPoints changes the cartian selections and control points so that the IKSolving produces a smooth Trajectory

Parameters
 controlPoints the controlPoints to change to make the Trajectory smooth selections the cartesian selections to optimize controlPoints selections

Definition at line 191 of file InterpolationSegmentFactory.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ optimizePose()

 PoseBasePtr optimizePose ( armarx::PoseBasePtr original, armarx::PoseBasePtr corrected, VirtualRobot::IKSolver::CartesianSelection selectionOriginal, VirtualRobot::IKSolver::CartesianSelection selectionCorrected )
static

optimizePose changes the original pose so that the interpolation is smove when it changes from selectionOriginal to selectionCorrected

Parameters
 original the original Pose corrected the absolute corrected Pose selectionOriginal the cartesian selection associated with the original Pose selectionCorrected the cartesian selection associated with the corrected Pose
Returns

Definition at line 347 of file InterpolationSegmentFactory.cpp.

Here is the call graph for this function:

## ◆ produceInterpolationSegments()

 std::vector< AbstractInterpolationPtr > produceInterpolationSegments ( std::vector< PoseBasePtr > controlPoints, std::vector< InterpolationType > interpolations )
static

produceInterpolationSegments constructs a vector of AbstractInterpolation the concrete Interpolationtype of which is defined by interpolations

Parameters
 controlPoints the Poses the interpolation curves go through; segment i starts at controlPoint i and ends at control point i + 1 interpolations the InterpolationTypes of the Interpolation segments (warning: at least 2 segments in a row have to have spline intepolation)
Returns
a vector of |controlPoints| - 1 AbstractInterpolations between the control points

Definition at line 36 of file InterpolationSegmentFactory.cpp.

Here is the caller graph for this function:

## ◆ produceLinearInterpolationSegments()

 std::vector< AbstractInterpolationPtr > produceLinearInterpolationSegments ( std::vector< PoseBasePtr > controlPoints )
static

produceInterpolationSegments constructs a vector of LinearInterpolations

Parameters
 controlPoints the Poses the interpolation curves go through; segment i starts at controlPoint i and ends at control point i + 1
Returns
a vector of |controlPoints| - 1 LinearInterpolations between the control points

Definition at line 151 of file InterpolationSegmentFactory.cpp.

Here is the caller graph for this function:

## ◆ produceSplineInterpolationSegment()

 AbstractInterpolationPtr produceSplineInterpolationSegment ( std::vector< PoseBasePtr > controlPoints, PoseBasePtr segmentStart )
static

produceSplineInterpolationSegment constructs the splineInterpolationSegment of a splineInterpolation between given controlPoints

Parameters
 controlPoints the controlPoints of the parent SplineInterpolatiom segmentStart the first Point in the Interval
Returns
a SplineInterpolationSegment between segmentStart and the following control point

Definition at line 178 of file InterpolationSegmentFactory.cpp.

## ◆ produceSplineInterpolationSegments()

 std::vector< AbstractInterpolationPtr > produceSplineInterpolationSegments ( std::vector< PoseBasePtr > controlPoints )
static

produceInterpolationSegments constructs a vector of SplineInterpolations

Parameters
 controlPoints the Poses the interpolation curves go through; segment i starts at controlPoint i and ends at control point i + 1
Returns
a vector of |controlPoints| - 1 SplineInterpolations between the control points

Definition at line 165 of file InterpolationSegmentFactory.cpp.

The documentation for this class was generated from the following files: