Path optimization algorithms derive from class hpp::core::PathOptimizer.
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_ |
|
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 |
| If the interpolated path as only two waypoint, treat it as a straight path. More...
|
|
void | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::appendEquivalentSpline (const PathVectorPtr_t &path, Splines_t &splines) const |
| For each subpath of path, cast it to a know path and calls appropriate appendEquivalentSpline. More...
|
|
|
typedef constraints::ExplicitSolver | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::ExplicitSolver |
|
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 |
| Compute a conservative linear representation of the constraints. More...
|
|
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::HybridSolver &hs, const value_type &guessThr=-1, const bool &useExplicitInput=false) const |
|
Path optimization algorithms derive from class hpp::core::PathOptimizer.
◆ Base
template<int _PolynomeBasis, int _SplineOrder>
◆ Bools_t
template<int _PolynomeBasis, int _SplineOrder>
◆ CollisionConstraintsResults_t
◆ Decomposition_t
◆ ExplicitSolver
template<int _PolynomeBasis, int _SplineOrder>
◆ 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>
◆ appendEquivalentSpline() [2/3]
template<int _PolynomeBasis, int _SplineOrder>
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 to a know path and calls appropriate appendEquivalentSpline.
- Parameters
-
splines | the output will be pushed back into this vector. |
◆ buildPathVector()
template<int _PolynomeBasis, int _SplineOrder>
◆ 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* : 1 - Compute cost hessian 2 - Compute optimum 3 - Check path for collision. If no collision, return solution 4 - add collision constraint 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()
◆ 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 conresponding spline.
- Parameters
-
stopAtFirst | if true, then return only at most one report correponding to the first encountered collision. |
◆ ~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 |