|
static void | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::copy (const Splines_t &in, Splines_t &out) |
| Copy a vector of Spline. More...
|
|
void | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::updateSplines (Splines_t &spline, const vector_t ¶m) const |
|
void | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::updateParameters (vector_t ¶m, const Splines_t &spline) const |
|
static void | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::interpolate (const Splines_t &a, const Splines_t &b, const value_type &alpha, Splines_t &res) |
| Returns res = (1 - alpha) * a + alpha * b. More...
|
|
|
typedef steeringMethod::Spline< PolynomeBasis, SplineOrder > | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SSM_t |
| Spline steering method. More...
|
|
SSM_t::Ptr_t | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::steeringMethod_ |
|
static PathVectorPtr_t | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::cleanInput (const PathVectorPtr_t &input) |
| Flatten path and remove path of zero length. More...
|
|
void | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::appendEquivalentSpline (const StraightPathPtr_t &path, Splines_t &splines) const |
|
void | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::appendEquivalentSpline (const InterpolatedPathPtr_t &path, Splines_t &splines) const |
|
void | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::appendEquivalentSpline (const PathVectorPtr_t &path, Splines_t &splines) const |
|
|
typedef Eigen::RowBlockIndices | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::RowBlockIndices |
|
typedef std::vector< bool > | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Bools_t |
|
typedef std::vector< size_type > | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Indices_t |
|
typedef std::vector< SplineOptimizationData > | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationDatas_t |
|
void | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::jointBoundConstraint (const Splines_t &splines, LinearConstraint &lc) const |
|
std::size_t | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::addBoundConstraints (const Indices_t &bci, const LinearConstraint &bc, Bools_t &activeConstraint, LinearConstraint &constraint) const |
| Unused. More...
|
|
Indices_t | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::validateBounds (const Splines_t &splines, const LinearConstraint &lc) const |
| Mostly for debugging purpose. More...
|
|
void | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::addContinuityConstraints (const Splines_t &splines, const size_type maxOrder, const SplineOptimizationDatas_t &ess, LinearConstraint &continuity) |
| Add the linear constraint to connect consecutive splines together. More...
|
|
|
virtual void | hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::addProblemConstraints (const PathVectorPtr_t &init, const Splines_t &splines, LinearConstraint &lc, SplineOptimizationDatas_t &sods) const |
|
void | hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::addProblemConstraintOnPath (const PathPtr_t &path, const size_type &idxSpline, const SplinePtr_t &spline, LinearConstraint &lc, SplineOptimizationData &sod) const |
|
Eigen::RowBlockIndices | hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::computeActiveParameters (const PathPtr_t &path, const constraints::solver::BySubstitution &hs, const value_type &guessThr=-1, const bool &useExplicitInput=false) const |
|
Path optimization algorithms derive from class hpp::core::PathOptimizer
Simple shortcut
Find shortest path composed of direct paths between all pairs of waypoints of input path.
To do so, the optimizer builds a roadmap the nodes of which are the input path waypoints and the edges of which are the collision-free output of the steering method between all pairs of nodes.
◆ Base
template<int _PolynomeBasis, int _SplineOrder>
◆ Bools_t
template<int _PolynomeBasis, int _SplineOrder>
◆ CollisionConstraintsResults_t
◆ Decomposition_t
◆ Indices_t
template<int _PolynomeBasis, int _SplineOrder>
◆ LLT_t
◆ Ptr_t
template<int _PolynomeBasis, int _SplineOrder>
◆ Reports_t
template<int _PolynomeBasis, int _SplineOrder>
◆ RowBlockIndices
template<int _PolynomeBasis, int _SplineOrder>
◆ Spline
template<int _PolynomeBasis, int _SplineOrder>
◆ SplineOptimizationDatas_t
template<int _PolynomeBasis, int _SplineOrder>
◆ SplinePtr_t
template<int _PolynomeBasis, int _SplineOrder>
◆ Splines_t
template<int _PolynomeBasis, int _SplineOrder>
◆ SSM_t
template<int _PolynomeBasis, int _SplineOrder>
◆ anonymous enum
template<int _PolynomeBasis, int _SplineOrder>
Enumerator |
---|
PolynomeBasis | |
SplineOrder | |
◆ anonymous enum
template<int _PolynomeBasis, int _SplineOrder>
Enumerator |
---|
PolynomeBasis | |
SplineOrder | |
◆ addBoundConstraints()
template<int _PolynomeBasis, int _SplineOrder>
◆ addContinuityConstraints()
template<int _PolynomeBasis, int _SplineOrder>
Add the linear constraint to connect consecutive splines together.
◆ addProblemConstraintOnPath()
template<int _PolynomeBasis, int _SplineOrder>
◆ addProblemConstraints()
template<int _PolynomeBasis, int _SplineOrder>
Compute a conservative linear representation of the constraints.
It determines:
- which DoFs can be computed explicitely. These DoFs are removed from the variables and computed explicitely.
- which DoFs are constrained implicitely. These DoFs are removed from the variables and are set constant.
- which DoFs are not constrained. These DoFs are kept as variables for optimization.
◆ addRows()
void hpp::core::pathOptimization::QuadraticProgram::addRows |
( |
const std::size_t & |
nbRows | ) |
|
|
inline |
◆ appendEquivalentSpline() [1/3]
template<int _PolynomeBasis, int _SplineOrder>
Convert a straight path into a spline and append to vector
- Parameters
-
- Return values
-
Build a spline starting from straight path initial configuration and ending at straight path final configuration. derivatives (up to an order depending on the spline degree) at start and end are set to zero.
◆ appendEquivalentSpline() [2/3]
template<int _PolynomeBasis, int _SplineOrder>
Convert an interpolated path into a spline and append to vector
- Parameters
-
- Return values
-
Build a spline starting from interpolated path initial configuration and ending at interpolated path final configuration. derivatives (up to an order depending on the spline degree) at start and end are set to zero. If the interpolated path as only two waypoint, treat it as a straight path. Otherwise, throw an exception.
◆ appendEquivalentSpline() [3/3]
template<int _PolynomeBasis, int _SplineOrder>
For each subpath of path, cast it into a known path and calls appropriate appendEquivalentSpline.
- Parameters
-
splines | the output will be pushed back into this vector. |
◆ buildPathVector()
template<int _PolynomeBasis, int _SplineOrder>
◆ cleanInput()
template<int _PolynomeBasis, int _SplineOrder>
Flatten path and remove path of zero length.
◆ computeActiveParameters()
template<int _PolynomeBasis, int _SplineOrder>
- Parameters
-
guessThr | Threshold used to check whether the Jacobian contains rows of zeros, in which case the corresponding DoF is considered passive. |
◆ computeLLT()
void hpp::core::pathOptimization::QuadraticProgram::computeLLT |
( |
| ) |
|
◆ copy()
template<int _PolynomeBasis, int _SplineOrder>
◆ create() [1/2]
Return shared pointer to new object. Default cost is path length.
◆ create() [2/2]
template<int _PolynomeBasis, int _SplineOrder>
Return shared pointer to new object. Default cost is path length.
◆ decompose()
void hpp::core::pathOptimization::QuadraticProgram::decompose |
( |
| ) |
|
◆ GradientBased()
hpp::core::pathOptimization::GradientBased::GradientBased |
( |
const Problem & |
problem | ) |
|
|
protected |
◆ initializePathValidation()
template<int _PolynomeBasis, int _SplineOrder>
Initialize validations_. Store a pointer to the path validation of the problem for each spline.
◆ interpolate()
template<int _PolynomeBasis, int _SplineOrder>
Returns res = (1 - alpha) * a + alpha * b.
◆ interrupt()
void hpp::core::PathOptimizer::interrupt |
( |
| ) |
|
|
inline |
Interrupt path optimization.
◆ jointBoundConstraint()
template<int _PolynomeBasis, int _SplineOrder>
◆ optimize() [1/3]
◆ optimize() [2/3]
◆ optimize() [3/3]
template<int _PolynomeBasis, int _SplineOrder>
Optimize path
- 1) Transform straight paths into splines
- 2) Add continuity constraints
- 3) Add problem constraints
- 4) Make cost function
- 5) Compute explicit representation of linear constraints.
- 6)
- - 6.1) Compute cost hessian
- - 6.2) Compute optimum
- - 6.3) Check path for collision. If no collision, return solution
- - 6.4) add collision constraint
- - 6.5) re-compute explicit representation of linear constraints.
- 7) - Build result path.
Implements hpp::core::PathOptimizer.
◆ PathOptimizer()
hpp::core::PathOptimizer::PathOptimizer |
( |
const Problem & |
problem | ) |
|
|
inlineprotected |
◆ problem()
const Problem& hpp::core::PathOptimizer::problem |
( |
| ) |
const |
|
inline |
◆ QuadraticProgram() [1/3]
hpp::core::pathOptimization::QuadraticProgram::QuadraticProgram |
( |
size_type |
inputSize | ) |
|
|
inline |
◆ QuadraticProgram() [2/3]
◆ QuadraticProgram() [3/3]
hpp::core::pathOptimization::QuadraticProgram::QuadraticProgram |
( |
const QuadraticProgram & |
QP | ) |
|
|
inline |
◆ reduced()
◆ solve() [1/2]
void hpp::core::pathOptimization::QuadraticProgram::solve |
( |
| ) |
|
|
inline |
◆ solve() [2/2]
Compute solution using quadprog
- Parameters
-
ce | equality constraints |
ci | inequality constraints: \( ci.J * x \ge ci.b \) |
- Note
- computeLLT must have been called before.
◆ SplineGradientBased()
template<int _PolynomeBasis, int _SplineOrder>
◆ SplineGradientBasedAbstract()
template<int _PolynomeBasis, int _SplineOrder>
◆ SplineOptimizationData() [1/2]
template<int _PolynomeBasis, int _SplineOrder>
◆ SplineOptimizationData() [2/2]
template<int _PolynomeBasis, int _SplineOrder>
◆ steer()
◆ updateParameters()
template<int _PolynomeBasis, int _SplineOrder>
Gets the parameters each spline.
- Todo:
- make this function static (currently, it only needs the robot number dof.
◆ updateSplines()
template<int _PolynomeBasis, int _SplineOrder>
Sets the parameters each spline.
- Todo:
- make this function static (currently, it only needs the robot number dof.
◆ validateBounds()
template<int _PolynomeBasis, int _SplineOrder>
Mostly for debugging purpose.
◆ validatePath()
template<int _PolynomeBasis, int _SplineOrder>
Calls each validations_ on the corresponding spline.
- Parameters
-
reordering | order in which the path validation is run. It is assumed that reordering is a permutation of [0, splines.size()[. |
stopAtFirst | if true, then return only at most one report corresponding to the first encountered collision. |
reorder | Put the portion in collision first in order to improve performance of next collision check. |
◆ ~PathOptimizer()
virtual hpp::core::PathOptimizer::~PathOptimizer |
( |
| ) |
|
|
inlinevirtual |
◆ ~QuadraticProgram()
hpp::core::pathOptimization::QuadraticProgram::~QuadraticProgram |
( |
| ) |
|
◆ activeConstraint
Eigen::VectorXi hpp::core::pathOptimization::QuadraticProgram::activeConstraint |
◆ activeParameters
template<int _PolynomeBasis, int _SplineOrder>
Variable on which we can optimize. Other variables are fully constrained.
◆ activeSetSize
int hpp::core::pathOptimization::QuadraticProgram::activeSetSize |
vector_t hpp::core::pathOptimization::QuadraticProgram::b |
◆ bIsZero
bool hpp::core::pathOptimization::QuadraticProgram::bIsZero |
◆ checkOptimum_
template<int _PolynomeBasis, int _SplineOrder>
◆ dec
◆ es
template<int _PolynomeBasis, int _SplineOrder>
A copy of the explicit solver included in set.
matrix_t hpp::core::pathOptimization::QuadraticProgram::H |
◆ interrupt_
bool hpp::core::PathOptimizer::interrupt_ |
|
protected |
Whether to interrupt computation Set to false at start of optimize method, set to true by method interrupt.
◆ llt
LLT_t hpp::core::pathOptimization::QuadraticProgram::llt |
◆ robot_
template<int _PolynomeBasis, int _SplineOrder>
◆ set
template<int _PolynomeBasis, int _SplineOrder>
The set of constraint of the corresponding path.
◆ steeringMethod_
template<int _PolynomeBasis, int _SplineOrder>
◆ trace
value_type hpp::core::pathOptimization::QuadraticProgram::trace |
◆ validations_
template<int _PolynomeBasis, int _SplineOrder>
Path validation Its size is the number of spline paths.
◆ xStar
vector_t hpp::core::pathOptimization::QuadraticProgram::xStar |