|
static GradientBasedPtr_t | hpp::core::pathOptimization::GradientBased::create (const ProblemConstPtr_t &problem) |
|
virtual PathVectorPtr_t | hpp::core::pathOptimization::GradientBased::optimize (const PathVectorPtr_t &path) |
| Optimize path. More...
|
|
| hpp::core::pathOptimization::GradientBased::GradientBased (const ProblemConstPtr_t &problem) |
|
| hpp::core::pathOptimization::QuadraticProgram::QuadraticProgram (size_type inputSize, bool useProxqp=true) |
|
| hpp::core::pathOptimization::QuadraticProgram::QuadraticProgram (const QuadraticProgram &QP, const LinearConstraint &lc, bool useProxqp=true) |
|
| hpp::core::pathOptimization::QuadraticProgram::QuadraticProgram (const QuadraticProgram &QP) |
|
| hpp::core::pathOptimization::QuadraticProgram::~QuadraticProgram () |
|
void | hpp::core::pathOptimization::QuadraticProgram::accuracy (value_type acc) |
|
value_type | hpp::core::pathOptimization::QuadraticProgram::accuracy () const |
|
void | hpp::core::pathOptimization::QuadraticProgram::addRows (const std::size_t &nbRows) |
|
| hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineGradientBasedAbstract (const ProblemConstPtr_t &problem) |
|
| hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData::SplineOptimizationData () |
|
| hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData::SplineOptimizationData (size_type rDof) |
|
PathVectorPtr_t | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::buildPathVector (const Splines_t &splines) const |
|
static Ptr_t | hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::create (const ProblemConstPtr_t &problem) |
|
virtual PathVectorPtr_t | hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::optimize (const PathVectorPtr_t &path) |
|
| hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::SplineGradientBased (const ProblemConstPtr_t &problem) |
|
virtual | hpp::core::PathOptimizer::~PathOptimizer () |
|
ProblemConstPtr_t | hpp::core::PathOptimizer::problem () const |
| Get problem. More...
|
|
virtual PathVectorPtr_t | hpp::core::PathOptimizer::optimize (const PathVectorPtr_t &path)=0 |
| Optimize path. More...
|
|
void | hpp::core::PathOptimizer::interrupt () |
| Interrupt path optimization. More...
|
|
void | hpp::core::PathOptimizer::maxIterations (const unsigned long int &n) |
| Set maximal number of iterations. More...
|
|
void | hpp::core::PathOptimizer::timeOut (const double &timeOut) |
| set time out (in seconds) More...
|
|
| hpp::core::PathOptimizer::PathOptimizer (const ProblemConstPtr_t &problem) |
|
PathPtr_t | hpp::core::PathOptimizer::steer (ConfigurationIn_t q1, ConfigurationIn_t q2) const |
|
void | hpp::core::PathOptimizer::monitorExecution () |
|
void | hpp::core::PathOptimizer::endIteration () |
|
bool | hpp::core::PathOptimizer::shouldStop () const |
|
void | hpp::core::PathOptimizer::initFromParameters () |
|
|
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...
|
|
|
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...
|
|
|
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 | |
◆ accuracy() [1/2]
value_type hpp::core::pathOptimization::QuadraticProgram::accuracy |
( |
| ) |
const |
|
inline |
Get accuracy of internal QP solver
- Note
- only used by proxqp The accuracy corresponds to \(\epsilon_{abs}\) in this paper (Equation (2)).
◆ accuracy() [2/2]
void hpp::core::pathOptimization::QuadraticProgram::accuracy |
( |
value_type |
acc | ) |
|
|
inline |
Set accuracy of internal QP solver
- Parameters
-
- Note
- only used by proxqp The accuracy corresponds to \(\epsilon_{abs}\) in this paper (Equation (2)).
◆ 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 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() [2/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. |
◆ appendEquivalentSpline() [3/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.
◆ 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 |
( |
| ) |
|
◆ endIteration()
void hpp::core::PathOptimizer::endIteration |
( |
| ) |
|
|
inlineprotected |
◆ GradientBased()
hpp::core::pathOptimization::GradientBased::GradientBased |
( |
const ProblemConstPtr_t & |
problem | ) |
|
|
protected |
◆ initFromParameters()
void hpp::core::PathOptimizer::initFromParameters |
( |
| ) |
|
|
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>
◆ maxIterations()
void hpp::core::PathOptimizer::maxIterations |
( |
const unsigned long int & |
n | ) |
|
Set maximal number of iterations.
◆ monitorExecution()
void hpp::core::PathOptimizer::monitorExecution |
( |
| ) |
|
|
protected |
◆ optimize() [1/3]
◆ optimize() [2/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.
◆ optimize() [3/3]
◆ PathOptimizer()
◆ problem()
◆ QuadraticProgram() [1/3]
hpp::core::pathOptimization::QuadraticProgram::QuadraticProgram |
( |
const QuadraticProgram & |
QP | ) |
|
|
inline |
◆ QuadraticProgram() [2/3]
Constructor
- Parameters
-
inputSize | dimension of the space on which the quadratic cost is defined, |
lc | linear equality constraint, |
useProxqp | whether to use proxqp instead of eiquadprog_2011 as the internal solver. This parameter will soon be removed and proxqp be the internal solver. |
◆ QuadraticProgram() [3/3]
hpp::core::pathOptimization::QuadraticProgram::QuadraticProgram |
( |
size_type |
inputSize, |
|
|
bool |
useProxqp = true |
|
) |
| |
|
inline |
Constructor
- Parameters
-
inputSize | dimension of the space on which the quadratic cost is defined, |
useProxqp | whether to use proxqp instead of eiquadprog_2011 as the internal solver. This parameter will soon be removed and proxqp be the internal solver. |
◆ reduced()
◆ shouldStop()
bool hpp::core::PathOptimizer::shouldStop |
( |
| ) |
const |
|
protected |
◆ 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 \) |
- Returns
- the cost of the solution.
- Note
- computeLLT must have been called before.
-
if the problem is ill-conditioned, member xStar is left unchanged.
◆ 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()
◆ timeOut()
void hpp::core::PathOptimizer::timeOut |
( |
const double & |
timeOut | ) |
|
set time out (in seconds)
◆ 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 |
( |
| ) |
|
◆ accuracy_
value_type hpp::core::pathOptimization::QuadraticProgram::accuracy_ |
◆ 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
◆ enabled [1/2]
bool hpp::core::PathOptimizer::enabled |
◆ [2/2]
◆ 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.
◆ [1/2]
size_type { ... } ::iteration |
◆ iteration [2/2]
size_type hpp::core::PathOptimizer::iteration |
◆ 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>
◆ timeStart [1/2]
boost::posix_time::ptime hpp::core::PathOptimizer::timeStart |
◆ [2/2]
boost::posix_time::ptime { ... } ::timeStart |
◆ trace
value_type hpp::core::pathOptimization::QuadraticProgram::trace |
◆ useProxqp_
bool hpp::core::pathOptimization::QuadraticProgram::useProxqp_ |
◆ validations_
template<int _PolynomeBasis, int _SplineOrder>
Path validation Its size is the number of spline paths.
◆ xStar
vector_t hpp::core::pathOptimization::QuadraticProgram::xStar |