|
hpp-core 9.0.2
Implement basic classes for canonical path planning for kinematic chains.
|
Namespaces | |
| namespace | hpp::core::pathOptimization |
Enumerations | |
| enum | { hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::PolynomeBasis = _PolynomeBasis , hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOrder = _SplineOrder } |
| enum | { hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::PolynomeBasis = _PolynomeBasis , hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::SplineOrder = _SplineOrder } |
Path validation | |
| typedef std::vector< std::pair< PathValidationReportPtr_t, std::size_t > > | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Reports_t |
| std::vector< PathValidationPtr_t > | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::validations_ |
| virtual void | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::initializePathValidation (const Splines_t &splines) |
| Reports_t | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::validatePath (const Splines_t &splines, std::vector< std::size_t > &reordering, bool stopAtFirst, bool reorder) const |
Model | |
| matrix_t | hpp::core::pathOptimization::QuadraticProgram::H |
| vector_t | hpp::core::pathOptimization::QuadraticProgram::b |
| bool | hpp::core::pathOptimization::QuadraticProgram::bIsZero |
Data (for equality constraints) | |
| Decomposition_t | hpp::core::pathOptimization::QuadraticProgram::dec |
| vector_t | hpp::core::pathOptimization::QuadraticProgram::xStar |
Program subject to linear equality constraints. | |
| void | hpp::core::pathOptimization::QuadraticProgram::reduced (const LinearConstraint &lc, QuadraticProgram &QPr) const |
| void | hpp::core::pathOptimization::QuadraticProgram::decompose () |
| void | hpp::core::pathOptimization::QuadraticProgram::solve () |
Program subject to linear equality and inequality constraints. | |
| void | hpp::core::pathOptimization::QuadraticProgram::computeLLT () |
| double | hpp::core::pathOptimization::QuadraticProgram::solve (const LinearConstraint &ce, const LinearConstraint &ci) |
Spline convinience functions | |
| static void | hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::copy (const Splines_t &in, Splines_t &out) |
| Copy a vector of Spline. | |
| 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. | |
Constraint creation | |
| 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.
| typedef SplineGradientBasedAbstract<_PolynomeBasis, _SplineOrder> hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::Base |
|
protected |
| typedef std::vector<CollisionConstraintsResult> hpp::core::pathOptimization::CollisionConstraintsResults_t |
| typedef Eigen::JacobiSVD<matrix_t> hpp::core::pathOptimization::QuadraticProgram::Decomposition_t |
|
protected |
| typedef Eigen::LLT<matrix_t, Eigen::Lower> hpp::core::pathOptimization::QuadraticProgram::LLT_t |
| typedef shared_ptr<SplineGradientBased> hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::Ptr_t |
|
protected |
|
protected |
| typedef path::Spline<PolynomeBasis, SplineOrder> hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Spline |
|
protected |
| typedef Spline::Ptr_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplinePtr_t |
| typedef std::vector<SplinePtr_t> hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Splines_t |
|
protected |
Spline steering method.
|
inline |
Get accuracy of internal QP solver
|
inline |
Set accuracy of internal QP solver
| acc | the desired accuracy |
|
protected |
Unused.
|
protected |
Add the linear constraint to connect consecutive splines together.
|
protected |
|
protectedvirtual |
Compute a conservative linear representation of the constraints.
It determines:
|
inline |
|
protected |
Convert an interpolated path into a spline and append to vector
| path | interpolated path, |
| splines | vector of splines |
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.
|
protected |
For each subpath of path, cast it into a known path and calls appropriate appendEquivalentSpline.
| splines | the output will be pushed back into this vector. |
|
protected |
Convert a straight path into a spline and append to vector
| path | straight path, |
| splines | vector of splines |
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.
|
protected |
|
staticprotected |
Flatten path and remove path of zero length.
|
protected |
| guessThr | Threshold used to check whether the Jacobian contains rows of zeros, in which case the corresponding DoF is considered passive. |
| void hpp::core::pathOptimization::QuadraticProgram::computeLLT | ( | ) |
|
static |
Copy a vector of Spline.
|
static |
Return shared pointer to new object. Default cost is path length.
|
static |
Return shared pointer to new object. Default cost is path length.
| void hpp::core::pathOptimization::QuadraticProgram::decompose | ( | ) |
|
inlineprotected |
|
protected |
|
protected |
|
protectedvirtual |
Initialize validations_. Store a pointer to the path validation of the problem for each spline.
|
static |
Returns res = (1 - alpha) * a + alpha * b.
|
inline |
Interrupt path optimization.
|
protected |
| void hpp::core::PathOptimizer::maxIterations | ( | const unsigned long int & | n | ) |
Set maximal number of iterations.
|
protected |
|
virtual |
Optimize path.
Implements hpp::core::PathOptimizer.
|
virtual |
Optimize path
Implements hpp::core::PathOptimizer.
|
pure virtual |
Optimize path.
Implemented in hpp::core::pathOptimization::ConfigOptimization, hpp::core::pathOptimization::GradientBased, hpp::core::pathOptimization::PartialShortcut, hpp::core::pathOptimization::RandomShortcut, hpp::core::pathOptimization::RSTimeParameterization, hpp::core::pathOptimization::SimpleShortcut, hpp::core::pathOptimization::SimpleTimeParameterization, hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >, and hpp::core::pathOptimization::TrapezoidalTimeParameterization.
|
protected |
|
inline |
Get problem.
|
inline |
|
inline |
Constructor
| inputSize | dimension of the space on which the quadratic cost is defined, |
| lc | linear equality constraint, |
|
inline |
Constructor
| inputSize | dimension of the space on which the quadratic cost is defined, |
|
inline |
|
protected |
|
inline |
| double hpp::core::pathOptimization::QuadraticProgram::solve | ( | const LinearConstraint & | ce, |
| const LinearConstraint & | ci ) |
Compute solution using quadprog
| ce | equality constraints |
| ci | inequality constraints: \( ci.J * x \ge ci.b \) |
|
protected |
|
protected |
|
inline |
|
inline |
|
protected |
| void hpp::core::PathOptimizer::timeOut | ( | const double & | timeOut | ) |
set time out (in seconds)
| void hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::updateParameters | ( | vector_t & | param, |
| const Splines_t & | spline ) const |
Gets the parameters each spline.
| void hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::updateSplines | ( | Splines_t & | spline, |
| const vector_t & | param ) const |
Sets the parameters each spline.
|
protected |
Mostly for debugging purpose.
|
protected |
Calls each validations_ on the corresponding spline.
| 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. |
|
inlinevirtual |
| hpp::core::pathOptimization::QuadraticProgram::~QuadraticProgram | ( | ) |
| value_type hpp::core::pathOptimization::QuadraticProgram::accuracy_ |
| Eigen::VectorXi hpp::core::pathOptimization::QuadraticProgram::activeConstraint |
| RowBlockIndices hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData::activeParameters |
Variable on which we can optimize. Other variables are fully constrained.
| int hpp::core::pathOptimization::QuadraticProgram::activeSetSize |
| value_type hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::alphaInit |
In [0,1]. Initial value when interpolating between non-colliding current solution and the optimal colliding trajectory.
| bool hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::alwaysStopAtFirst |
If true, consider only one (not all) collision constraint per iteration.
| vector_t hpp::core::pathOptimization::QuadraticProgram::b |
| bool hpp::core::pathOptimization::QuadraticProgram::bIsZero |
| bool hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::checkJointBound |
If true, joint bounds are enforced.
|
protected |
| size_type hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::costOrder |
Order of the derivative used for the optimized cost function (most likely 1, 2, or 3).
| value_type hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::costThreshold |
Stop optimizing if the cost improves less than this threshold between two iterations.
| Decomposition_t hpp::core::pathOptimization::QuadraticProgram::dec |
| bool { ... } ::enabled |
| bool hpp::core::PathOptimizer::enabled |
| shared_ptr<constraints::ExplicitConstraintSet> hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData::es |
A copy of the explicit solver included in set.
| value_type hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::guessThreshold |
Threshold used to check whether the Jacobian contains rows of zeros, in which case the corresponding DoF is considered passive. Negative disables the check.
| matrix_t hpp::core::pathOptimization::QuadraticProgram::H |
|
protected |
Whether to interrupt computation Set to false at start of optimize method, set to true by method interrupt.
| size_type { ... } ::iteration |
| size_type hpp::core::PathOptimizer::iteration |
| bool hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::linearizeAtEachStep |
If true, collision constraint will be re-linearized at each iteration.
| LLT_t hpp::core::pathOptimization::QuadraticProgram::llt |
| value_type hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::QPAccuracy |
Accuracy of QP solver (only used by proxqp).
| bool hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::reorderIntervals |
If true, intervals in collision are checked first at the next iteration.
| bool hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::returnOptimum |
(For debugging purpose) If true, returns the optimum regardless of collision.
|
protected |
| ConstraintSetPtr_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData::set |
The set of constraint of the corresponding path.
|
protected |
| boost::posix_time::ptime { ... } ::timeStart |
| boost::posix_time::ptime hpp::core::PathOptimizer::timeStart |
| value_type hpp::core::pathOptimization::QuadraticProgram::trace |
| bool hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::usePathLengthAsWeights |
If true, the initial path length is used to weight the splines.
|
protected |
Path validation Its size is the number of spline paths.
| vector_t hpp::core::pathOptimization::QuadraticProgram::xStar |