Namespaces | Classes | Typedefs | Enumerations | Enumerator | Functions | Variables
Path Optimization

Path optimization algorithms derive from class hpp::core::PathOptimizer. More...

Namespaces

 hpp::core::pathOptimization
 

Classes

struct  hpp::core::pathOptimization::ConfigOptimizationTraits
 Optimize the waypoints of the path and optionally add the constraint::ConfigurationConstraint to the ConfigProjector of the path. More...
 
class  hpp::core::pathOptimization::ConfigOptimization
 
class  hpp::core::pathOptimization::GradientBased
 
struct  hpp::core::pathOptimization::PartialShortcutTraits
 Partial shortcut. More...
 
class  hpp::core::pathOptimization::PartialShortcut
 
struct  hpp::core::pathOptimization::QuadraticProgram
 
class  hpp::core::pathOptimization::SimpleTimeParameterization
 Add a TimeParameterization to paths so that the velocity does not exceeds the velocity limits. More...
 
struct  hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData
 
class  hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >
 Common base for optimization-based path optimizer with splines. More...
 
class  hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >
 
class  hpp::core::PathOptimizer
 Abstraction of path optimizer. More...
 
class  hpp::core::RandomShortcut
 Random shortcut. More...
 

Typedefs

typedef std::vector< CollisionConstraintsResult > hpp::core::pathOptimization::CollisionConstraintsResults_t
 
typedef Eigen::JacobiSVD< matrix_thpp::core::pathOptimization::QuadraticProgram::Decomposition_t
 
typedef Eigen::LLT< matrix_t, Eigen::Lower > hpp::core::pathOptimization::QuadraticProgram::LLT_t
 
typedef path::Spline< PolynomeBasis, SplineOrderhpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Spline
 
typedef Spline::Ptr_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplinePtr_t
 
typedef std::vector< SplinePtr_thpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Splines_t
 
typedef SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder > hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::Base
 
typedef boost::shared_ptr< SplineGradientBasedhpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::Ptr_t
 

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
}
 

Functions

static GradientBasedPtr_t hpp::core::pathOptimization::GradientBased::create (const Problem &problem)
 Return shared pointer to new object. More...
 
virtual PathVectorPtr_t hpp::core::pathOptimization::GradientBased::optimize (const PathVectorPtr_t &path)
 Optimize path. More...
 
 hpp::core::pathOptimization::GradientBased::GradientBased (const Problem &problem)
 
 hpp::core::pathOptimization::QuadraticProgram::QuadraticProgram (size_type inputSize)
 
 hpp::core::pathOptimization::QuadraticProgram::QuadraticProgram (const QuadraticProgram &QP, const LinearConstraint &lc)
 
 hpp::core::pathOptimization::QuadraticProgram::QuadraticProgram (const QuadraticProgram &QP)
 
 hpp::core::pathOptimization::QuadraticProgram::~QuadraticProgram ()
 
void hpp::core::pathOptimization::QuadraticProgram::addRows (const std::size_t &nbRows)
 
 hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineGradientBasedAbstract (const Problem &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 Problem &problem)
 Return shared pointer to new object. More...
 
virtual PathVectorPtr_t hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::optimize (const PathVectorPtr_t &path)
 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. More...
 
 hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::SplineGradientBased (const Problem &problem)
 
virtual hpp::core::PathOptimizer::~PathOptimizer ()
 
const Problemhpp::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...
 
 hpp::core::PathOptimizer::PathOptimizer (const Problem &problem)
 
PathPtr_t hpp::core::PathOptimizer::steer (ConfigurationIn_t q1, ConfigurationIn_t q2) const
 

Variables

ConstraintSetPtr_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData::set
 The set of constraint of the corresponding path. More...
 
boost::shared_ptr< ExplicitSolverhpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData::es
 A copy of the explicit solver included in set. More...
 
RowBlockIndices hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData::activeParameters
 Variable on which we can optimize. More...
 
DevicePtr_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::robot_
 
bool hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::checkOptimum_
 
bool hpp::core::PathOptimizer::interrupt_
 Whether to interrupt computation Set to false at start of optimize method, set to true by method interrupt. More...
 

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)
 Compute solution using quadprog. More...
 

Model

matrix_t hpp::core::pathOptimization::QuadraticProgram::H
 
vector_t hpp::core::pathOptimization::QuadraticProgram::b
 
bool hpp::core::pathOptimization::QuadraticProgram::bIsZero
 

Data (for inequality constraints)

LLT_t hpp::core::pathOptimization::QuadraticProgram::llt
 
value_type hpp::core::pathOptimization::QuadraticProgram::trace
 
Eigen::VectorXi hpp::core::pathOptimization::QuadraticProgram::activeConstraint
 
int hpp::core::pathOptimization::QuadraticProgram::activeSetSize
 

Data (for equality constraints)

Decomposition_t hpp::core::pathOptimization::QuadraticProgram::dec
 
vector_t hpp::core::pathOptimization::QuadraticProgram::xStar
 

Spline convinience functions

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 &param) const
 Sets the parameters each spline. More...
 
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...
 

Spline creation

typedef steeringMethod::Spline< PolynomeBasis, SplineOrderhpp::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...
 

Path validation

typedef std::vector< std::pair< CollisionPathValidationReportPtr_t, std::size_t > > hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Reports_t
 
std::vector< PathValidationPtr_thpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::validations_
 Path validation Its size is the number of spline paths. More...
 
virtual void hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::initializePathValidation (const Splines_t &splines)
 Initialize validations_. More...
 
Reports_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::validatePath (const Splines_t &splines, bool stopAtFirst) const
 Calls each validations_ on the conresponding spline. More...
 

Constraint creation

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_typehpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Indices_t
 
typedef std::vector< SplineOptimizationDatahpp::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...
 

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
 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
 

Detailed Description

Path optimization algorithms derive from class hpp::core::PathOptimizer.

Typedef Documentation

◆ Base

template<int _PolynomeBasis, int _SplineOrder>
typedef SplineGradientBasedAbstract<_PolynomeBasis, _SplineOrder> hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::Base

◆ Bools_t

template<int _PolynomeBasis, int _SplineOrder>
typedef std::vector<bool> hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Bools_t
protected

◆ CollisionConstraintsResults_t

typedef std::vector<CollisionConstraintsResult> hpp::core::pathOptimization::CollisionConstraintsResults_t

◆ Decomposition_t

◆ ExplicitSolver

template<int _PolynomeBasis, int _SplineOrder>
typedef constraints::ExplicitSolver hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::ExplicitSolver
protected

◆ Indices_t

template<int _PolynomeBasis, int _SplineOrder>
typedef std::vector<size_type> hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Indices_t
protected

◆ LLT_t

◆ Ptr_t

template<int _PolynomeBasis, int _SplineOrder>
typedef boost::shared_ptr<SplineGradientBased> hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::Ptr_t

◆ Reports_t

template<int _PolynomeBasis, int _SplineOrder>
typedef std::vector<std::pair <CollisionPathValidationReportPtr_t, std::size_t> > hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Reports_t
protected

◆ RowBlockIndices

template<int _PolynomeBasis, int _SplineOrder>
typedef Eigen::RowBlockIndices hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::RowBlockIndices
protected

◆ Spline

template<int _PolynomeBasis, int _SplineOrder>
typedef path::Spline<PolynomeBasis, SplineOrder> hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Spline

◆ SplineOptimizationDatas_t

template<int _PolynomeBasis, int _SplineOrder>
typedef std::vector<SplineOptimizationData> hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationDatas_t
protected

◆ SplinePtr_t

template<int _PolynomeBasis, int _SplineOrder>
typedef Spline::Ptr_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplinePtr_t

◆ Splines_t

template<int _PolynomeBasis, int _SplineOrder>
typedef std::vector<SplinePtr_t> hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::Splines_t

◆ SSM_t

template<int _PolynomeBasis, int _SplineOrder>
typedef steeringMethod::Spline<PolynomeBasis, SplineOrder> hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SSM_t
protected

Spline steering method.

Enumeration Type Documentation

◆ anonymous enum

template<int _PolynomeBasis, int _SplineOrder>
anonymous enum
Enumerator
PolynomeBasis 
SplineOrder 

◆ anonymous enum

template<int _PolynomeBasis, int _SplineOrder>
anonymous enum
Enumerator
PolynomeBasis 
SplineOrder 

Function Documentation

◆ addBoundConstraints()

template<int _PolynomeBasis, int _SplineOrder>
std::size_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::addBoundConstraints ( const Indices_t bci,
const LinearConstraint bc,
Bools_t activeConstraint,
LinearConstraint constraint 
) const
protected

Unused.

◆ addContinuityConstraints()

template<int _PolynomeBasis, int _SplineOrder>
void hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::addContinuityConstraints ( const Splines_t splines,
const size_type  maxOrder,
const SplineOptimizationDatas_t ess,
LinearConstraint continuity 
)
protected

Add the linear constraint to connect consecutive splines together.

◆ addProblemConstraintOnPath()

template<int _PolynomeBasis, int _SplineOrder>
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
protected

◆ addProblemConstraints()

template<int _PolynomeBasis, int _SplineOrder>
virtual void hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::addProblemConstraints ( const PathVectorPtr_t init,
const Splines_t splines,
LinearConstraint lc,
SplineOptimizationDatas_t sods 
) const
protectedvirtual

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>
void hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::appendEquivalentSpline ( const StraightPathPtr_t path,
Splines_t splines 
) const
protected

◆ appendEquivalentSpline() [2/3]

template<int _PolynomeBasis, int _SplineOrder>
void hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::appendEquivalentSpline ( const InterpolatedPathPtr_t path,
Splines_t splines 
) const
protected

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>
void hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::appendEquivalentSpline ( const PathVectorPtr_t path,
Splines_t splines 
) const
protected

For each subpath of path, cast it to a know path and calls appropriate appendEquivalentSpline.

Parameters
splinesthe output will be pushed back into this vector.

◆ buildPathVector()

template<int _PolynomeBasis, int _SplineOrder>
PathVectorPtr_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::buildPathVector ( const Splines_t splines) const
protected

◆ computeActiveParameters()

template<int _PolynomeBasis, int _SplineOrder>
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
protected
Parameters
guessThrThreshold 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>
static void hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::copy ( const Splines_t in,
Splines_t out 
)
static

Copy a vector of Spline.

◆ create() [1/2]

static GradientBasedPtr_t hpp::core::pathOptimization::GradientBased::create ( const Problem problem)
static

Return shared pointer to new object.

Default cost is path length.

◆ create() [2/2]

template<int _PolynomeBasis, int _SplineOrder>
static Ptr_t hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::create ( const Problem problem)
static

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>
virtual void hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::initializePathValidation ( const Splines_t splines)
protectedvirtual

Initialize validations_.

Store a pointer to the path validation of the problem for each spline.

◆ interpolate()

template<int _PolynomeBasis, int _SplineOrder>
static void hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::interpolate ( const Splines_t a,
const Splines_t b,
const value_type alpha,
Splines_t res 
)
static

Returns res = (1 - alpha) * a + alpha * b.

◆ interrupt()

void hpp::core::PathOptimizer::interrupt ( )
inline

Interrupt path optimization.

◆ jointBoundConstraint()

template<int _PolynomeBasis, int _SplineOrder>
void hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::jointBoundConstraint ( const Splines_t splines,
LinearConstraint lc 
) const
protected

◆ optimize() [1/3]

virtual PathVectorPtr_t hpp::core::pathOptimization::GradientBased::optimize ( const PathVectorPtr_t path)
virtual

Optimize path.

Implements hpp::core::PathOptimizer.

◆ optimize() [2/3]

virtual PathVectorPtr_t hpp::core::PathOptimizer::optimize ( const PathVectorPtr_t path)
pure virtual

◆ optimize() [3/3]

template<int _PolynomeBasis, int _SplineOrder>
virtual PathVectorPtr_t hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::optimize ( const PathVectorPtr_t path)
virtual

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

Get problem.

◆ QuadraticProgram() [1/3]

hpp::core::pathOptimization::QuadraticProgram::QuadraticProgram ( size_type  inputSize)
inline

◆ QuadraticProgram() [2/3]

hpp::core::pathOptimization::QuadraticProgram::QuadraticProgram ( const QuadraticProgram QP,
const LinearConstraint lc 
)
inline

◆ QuadraticProgram() [3/3]

hpp::core::pathOptimization::QuadraticProgram::QuadraticProgram ( const QuadraticProgram QP)
inline

◆ reduced()

void hpp::core::pathOptimization::QuadraticProgram::reduced ( const LinearConstraint lc,
QuadraticProgram QPr 
) const
inline

◆ solve() [1/2]

void hpp::core::pathOptimization::QuadraticProgram::solve ( )
inline

◆ solve() [2/2]

double hpp::core::pathOptimization::QuadraticProgram::solve ( const LinearConstraint ce,
const LinearConstraint ci 
)

Compute solution using quadprog.

Parameters
ceequality constraints
ciinequality constraints: \( ci.J * x \ge ci.b \)
Note
computeLLT must have been called before.

◆ SplineGradientBased()

template<int _PolynomeBasis, int _SplineOrder>
hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::SplineGradientBased ( const Problem problem)
protected

◆ SplineGradientBasedAbstract()

template<int _PolynomeBasis, int _SplineOrder>
hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineGradientBasedAbstract ( const Problem problem)
protected

◆ SplineOptimizationData() [1/2]

template<int _PolynomeBasis, int _SplineOrder>
hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData::SplineOptimizationData ( )
inline

◆ SplineOptimizationData() [2/2]

template<int _PolynomeBasis, int _SplineOrder>
hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData::SplineOptimizationData ( size_type  rDof)
inline

◆ steer()

PathPtr_t hpp::core::PathOptimizer::steer ( ConfigurationIn_t  q1,
ConfigurationIn_t  q2 
) const
protected

◆ updateSplines()

template<int _PolynomeBasis, int _SplineOrder>
void hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::updateSplines ( Splines_t spline,
const vector_t param 
) const

Sets the parameters each spline.

Todo:
make this function static (currently, it only needs the robot number dof.

◆ validateBounds()

template<int _PolynomeBasis, int _SplineOrder>
Indices_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::validateBounds ( const Splines_t splines,
const LinearConstraint lc 
) const
protected

Mostly for debugging purpose.

◆ validatePath()

template<int _PolynomeBasis, int _SplineOrder>
Reports_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::validatePath ( const Splines_t splines,
bool  stopAtFirst 
) const
protected

Calls each validations_ on the conresponding spline.

Parameters
stopAtFirstif 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 ( )

Variable Documentation

◆ activeConstraint

Eigen::VectorXi hpp::core::pathOptimization::QuadraticProgram::activeConstraint

◆ activeParameters

template<int _PolynomeBasis, int _SplineOrder>
RowBlockIndices hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData::activeParameters

Variable on which we can optimize.

Other variables are fully constrained.

◆ activeSetSize

int hpp::core::pathOptimization::QuadraticProgram::activeSetSize

◆ b

vector_t hpp::core::pathOptimization::QuadraticProgram::b

◆ bIsZero

bool hpp::core::pathOptimization::QuadraticProgram::bIsZero

◆ checkOptimum_

template<int _PolynomeBasis, int _SplineOrder>
bool hpp::core::pathOptimization::SplineGradientBased< _PolynomeBasis, _SplineOrder >::checkOptimum_
protected

◆ dec

Decomposition_t hpp::core::pathOptimization::QuadraticProgram::dec

◆ es

template<int _PolynomeBasis, int _SplineOrder>
boost::shared_ptr<ExplicitSolver> hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData::es

A copy of the explicit solver included in set.

◆ H

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>
DevicePtr_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::robot_
protected

◆ set

template<int _PolynomeBasis, int _SplineOrder>
ConstraintSetPtr_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::SplineOptimizationData::set

The set of constraint of the corresponding path.

◆ steeringMethod_

template<int _PolynomeBasis, int _SplineOrder>
SSM_t::Ptr_t hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::steeringMethod_
protected

◆ trace

value_type hpp::core::pathOptimization::QuadraticProgram::trace

◆ validations_

template<int _PolynomeBasis, int _SplineOrder>
std::vector<PathValidationPtr_t> hpp::core::pathOptimization::SplineGradientBasedAbstract< _PolynomeBasis, _SplineOrder >::validations_
protected

Path validation Its size is the number of spline paths.

◆ xStar

vector_t hpp::core::pathOptimization::QuadraticProgram::xStar