All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
roboptim::trajectory::ConstrainedBSpline< N > Class Template Reference

Constrained B-spline. More...

#include <roboptim/trajectory/constrained-b-spline.hh>

Inheritance diagram for roboptim::trajectory::ConstrainedBSpline< N >:
roboptim::trajectory::BSpline< N > roboptim::trajectory::Trajectory< N >

Public Types

typedef parent_t::interval_t interval_t
 
- Public Types inherited from roboptim::trajectory::BSpline< N >
typedef parent_t::interval_t interval_t
 
typedef Polynomial< N > polynomial_t
 
typedef Monomial< N > monomial_t
 
typedef std::map< int,
polynomial_t, std::less< int >
, Eigen::aligned_allocator
< std::pair< const int,
polynomial_t > > > 
cox_map
 
typedef cox_map::iterator cox_map_itr_t
 
typedef std::vector
< polynomial_t,
Eigen::aligned_allocator
< polynomial_t > > 
basisPolynomials_t
 
typedef std::vector
< basisPolynomials_t
basisPolynomialsVector_t
 
- Public Types inherited from roboptim::trajectory::Trajectory< N >
typedef parent_t::interval_t interval_t
 Import interval type. More...
 

Public Member Functions

 ROBOPTIM_NTIMES_DERIVABLE_FUNCTION_FWD_TYPEDEFS_ (BSpline< N >)
 Parent type and imports. More...
 
 ConstrainedBSpline (interval_t timeRange, size_type dimension, const vector_t &parameters, const std::string name="Constrained B-Spline")
 see B-Spline constructors for documentation More...
 
 ConstrainedBSpline (interval_t tr, size_type dimension, const vector_t &parameters, const_vector_ref knots, std::string name="Constrained B-Spline")
 see B-Spline constructors for documentation More...
 
virtual ~ConstrainedBSpline ()
 Destructor of constrained B-spline. More...
 
void addFixedConstraint (double t, size_type dimension, value_type value, size_type derivative=0)
 Creates a constraint on the basic spline. More...
 
void addCoupledConstraint (value_type t_1, size_type dimension_1, value_type t_2, size_type dimension_2, size_type derivative=0, value_type factor=1.)
 Create a constraint against another part of the spline. More...
 
const vector_t & parameters () const
 Overloaded parameters method from Trajectory<N>. More...
 
void setParameters (const_vector_ref)
 Overloaded setParameters method from Trajectory<N>. More...
 
virtual Trajectory< N > * resize (interval_t timeRange) const
 Clone and resize a trajectory. More...
 
jacobian_t variationDerivWrtParam (double t, size_type order) const
 Get the variation of a derivative with respect to parameter vector. More...
 
- Public Member Functions inherited from roboptim::trajectory::BSpline< N >
 ROBOPTIM_NTIMES_DERIVABLE_FUNCTION_FWD_TYPEDEFS_ (Trajectory< N >)
 Parent type and imports. More...
 
 BSpline (const interval_t &timeRange, size_type dimension, const vector_t &parameters, const std::string name="B-Spline", bool clamped=false)
 Instantiate a B-Spline from its definition. More...
 
 BSpline (const interval_t &tr, size_type dimension, const vector_t &parameters, const_vector_ref knots, std::string name="B-Spline")
 Instantiate a B-Spline with parameters and knot points. More...
 
 BSpline (const BSpline< N > &spline)
 Copy constructor. More...
 
template<int M>
BSpline< N > derivative () const
 Compute the derivative of the B-spline for a given order. More...
 
virtual ~BSpline ()
 Virtual destructor. More...
 
virtual jacobian_t variationConfigWrtParam (value_type t) const
 
virtual jacobian_t variationDerivWrtParam (value_type t, size_type order) const
 
virtual value_type singularPointAtRank (size_type rank) const
 Get singular point at given rank. More...
 
virtual vector_t derivBeforeSingularPoint (size_type rank, size_type order) const
 Get left limit value of derivative at given singular point. More...
 
virtual vector_t derivAfterSingularPoint (size_type rank, size_type order) const
 Get right limit value of derivative at given singular point. More...
 
virtual std::ostream & print (std::ostream &o) const
 Display the function on the specified output stream. More...
 
jacobian_t variationConfigWrtParam (StableTimePoint tp) const
 
jacobian_t variationDerivWrtParam (StableTimePoint tp, size_type order) const
 
value_type Dt () const ROBOPTIM_TRAJECTORY_DEPRECATED
 
const vector_t & knotVector () const
 Return the knot vector of the spline. More...
 
size_type interval (value_type t) const
 
size_type getNumberControlPoints () const
 Get the number of control points of the spline. More...
 
void toPolynomials (basisPolynomials_t &res) const
 Return the polynomial expression of the B-spline on each time interval. More...
 
const basisPolynomialsVector_tbasisPolynomials () const
 Constant getter for the basis polynomials of the B-spline. More...
 
int order () const
 Retrieve the order of the spline. More...
 
template<int M>
BSpline< N >
::basisPolynomialsVector_t 
deriveBasisPolynomials () const
 
- Public Member Functions inherited from roboptim::trajectory::Trajectory< N >
 ROBOPTIM_NTIMES_DERIVABLE_FUNCTION_FWD_TYPEDEFS_ (NTimesDerivableFunction< DerivabilityOrder >)
 Parent type and imports. More...
 
virtual ~Trajectory ()
 
result_t operator() (StableTimePoint argument) const
 
void operator() (result_ref result, StableTimePoint argument) const
 
derivative_t derivative (StableTimePoint argument, size_type order=1) const
 
void derivative (derivative_ref derivative, StableTimePoint argument, size_type order=1) const
 
bool isValidTime (value_type t) const
 
virtual void normalizeAngles (size_type index)
 Normalize angles in parameters array. More...
 
virtual Trajectory
< DerivabilityOrder > * 
clone () const =0
 
const vector_t & parameters () const
 
interval_t timeRange () const
 
value_type length () const
 
virtual vector_t state (double t, size_type order) const
 Get state along trajectory. More...
 
virtual vector_t state (StableTimePoint t, size_type order) const
 
virtual jacobian_t variationConfigWrtParam (double t) const =0
 Get the variation of a configuration with respect to parameter vector. More...
 
jacobian_t variationStateWrtParam (double t, size_type order) const
 Get the variation of the state with respect to parameter vector. More...
 
jacobian_t variationStateWrtParam (StableTimePoint stp, size_type order) const
 
size_type singularPoints () const
 Get number of singular points. More...
 
void tolerance (const double &tolerance)
 
double tolerance () const
 Get tolerance for inclusion of parameter in interval of definition. More...
 

Protected Member Functions

void updateProjector ()
 Update the projector matrix. Called after adding a constraint. More...
 
- Protected Member Functions inherited from roboptim::trajectory::BSpline< N >
 BSpline (ConstructionMode mode, const interval_t &timeRange, size_type dimension, const vector_t &parameters, const std::string name="B-Spline", bool clamped=false)
 Special constructor used internally for specific cases (e.g. More...
 
void impl_compute (result_ref, value_type) const
 
void impl_derivative (derivative_ref g, value_type x, size_type order) const
 
void impl_derivative (derivative_ref g, StableTimePoint, size_type order) const
 
vector_t basisFunctions (value_type t, size_type order) const ROBOPTIM_TRAJECTORY_DEPRECATED
 
void computeBasisPolynomials ()
 Compute the basis polynomials. More...
 
template<int M>
basisPolynomialsVector_t deriveBasisPolynomials () const
 Derive basis polynomials, but express the result as polynomials of BSpline<N> instead of BSpline<N-M>. More...
 
cox_map cox_de_boor (size_type j, size_type n) const
 Generate base polynomial set For the basic spline formula noted in the pdf from the docs section, this implements (3), the recursion formula. More...
 
void initializeKnots (bool clamped)
 Initialize the knot vector. More...
 
- Protected Member Functions inherited from roboptim::trajectory::Trajectory< N >
virtual void normalizeAngles (size_type index, size_type offset)
 Internal version of normalizeAngles allowing an optional offset. More...
 
void impl_compute (result_ref, StableTimePoint) const
 
 Trajectory (interval_t, size_type, const vector_t &, std::string name=std::string())
 

Protected Attributes

matrix_t constraints_
 Matrix storing constraints. More...
 
vector_t constraint_values_
 Constraint values. More...
 
vector_t tunables_
 Tunable parameters, i.e. the free parameters. More...
 
matrix_t projector_
 Projector matrix. More...
 
vector_t projector_offset_
 Result of: Constraints * X = Constraint values. More...
 

Additional Inherited Members

- Protected Types inherited from roboptim::trajectory::BSpline< N >
enum  ConstructionMode {
  NORMAL = 0,
  UNINITIALIZED = 1
}
 Enum for special constructors. More...
 
- Static Protected Attributes inherited from roboptim::trajectory::BSpline< N >
static const size_type order_ = N
 Order of the B-Spline. More...
 
static log4cxx::LoggerPtr logger
 Pointer to B-spline logger (see log4cxx documentation). More...
 

Detailed Description

template<int N>
class roboptim::trajectory::ConstrainedBSpline< N >

Constrained B-spline.

Template Parameters
NB-spline order.

Member Typedef Documentation

template<int N>
typedef parent_t::interval_t roboptim::trajectory::ConstrainedBSpline< N >::interval_t

Constructor & Destructor Documentation

template<int N>
roboptim::trajectory::ConstrainedBSpline< N >::ConstrainedBSpline ( interval_t  timeRange,
size_type  dimension,
const vector_t &  parameters,
const std::string  name = "Constrained B-Spline" 
)

see B-Spline constructors for documentation

template<int N>
roboptim::trajectory::ConstrainedBSpline< N >::ConstrainedBSpline ( interval_t  tr,
size_type  dimension,
const vector_t &  parameters,
const_vector_ref  knots,
std::string  name = "Constrained B-Spline" 
)

see B-Spline constructors for documentation

Destructor of constrained B-spline.

Member Function Documentation

template<int N>
void roboptim::trajectory::ConstrainedBSpline< N >::addCoupledConstraint ( value_type  t_1,
size_type  dimension_1,
value_type  t_2,
size_type  dimension_2,
size_type  derivative = 0,
value_type  factor = 1. 
)

Create a constraint against another part of the spline.

\(\frac{\partial^d}{\partial t^d} f_{d_1}(t_1) = factor * \frac{\partial^d}{\partial t^d} f_{d_2}(t_2) \)

Parameters
t_1first time.
dimension_1first dimension.
t_2second time.
dimension_2second dimension.
derivativederivative order ( \(d\)).
factorscalar factor.

References roboptim::trajectory::detail::fixTime().

template<int N>
void roboptim::trajectory::ConstrainedBSpline< N >::addFixedConstraint ( double  t,
size_type  dimension,
value_type  value,
size_type  derivative = 0 
)

Creates a constraint on the basic spline.

This reduces the number of parameter by one. The constraint equation is: \(value = \frac{\partial^derivative}{\partial t^derivative} f_{dimension}(t) \)

Parameters
ttime in the spline to constrain.
dimensionWhich dimension of the spline to constrain.
valueDesired spline value at t.
derivativeWhich derivative of the spline to constrain.

References roboptim::trajectory::detail::fixTime().

template<int N>
const ConstrainedBSpline< N >::vector_t & roboptim::trajectory::ConstrainedBSpline< N >::parameters ( ) const

Overloaded parameters method from Trajectory<N>.

Returns only the tunable parameters.

template<int N>
Trajectory< N > * roboptim::trajectory::ConstrainedBSpline< N >::resize ( interval_t  timeRange) const
virtual

Clone and resize a trajectory.

Parameters
timeRangenew time range.
Returns
cloned trajectory with new time range.

Reimplemented from roboptim::trajectory::BSpline< N >.

References roboptim::trajectory::ConstrainedBSpline< N >::constraint_values_, roboptim::trajectory::ConstrainedBSpline< N >::constraints_, and roboptim::trajectory::ConstrainedBSpline< N >::tunables_.

template<int N>
roboptim::trajectory::ConstrainedBSpline< N >::ROBOPTIM_NTIMES_DERIVABLE_FUNCTION_FWD_TYPEDEFS_ ( BSpline< N >  )

Parent type and imports.

template<int N>
void roboptim::trajectory::ConstrainedBSpline< N >::setParameters ( const_vector_ref  parameters_in)
virtual

Overloaded setParameters method from Trajectory<N>.

Given the free parameters, it calculates the spline parameters.

Reimplemented from roboptim::trajectory::BSpline< N >.

template<int N>
void roboptim::trajectory::ConstrainedBSpline< N >::updateProjector ( )
protected

Update the projector matrix. Called after adding a constraint.

(defined ROBOPTIM_HAS_FENV_H && defined ENABLE_SIGFPE)

template<int N>
ConstrainedBSpline< N >::jacobian_t roboptim::trajectory::ConstrainedBSpline< N >::variationDerivWrtParam ( double  t,
size_type  order 
) const
virtual

Get the variation of a derivative with respect to parameter vector.

Parameters
tvalue \(t\) in the definition interval.
orderorder \(r\) of the derivative.
Returns
jacobian

\[ \frac{\partial}{\partial\textbf{p}} \left(\frac{d^r\Gamma_{\textbf{p}}}{dt^r}(t)\right) \]

Implements roboptim::trajectory::Trajectory< N >.

References roboptim::trajectory::Polynomial< N >::derivative().

Member Data Documentation

template<int N>
vector_t roboptim::trajectory::ConstrainedBSpline< N >::constraint_values_
protected
template<int N>
matrix_t roboptim::trajectory::ConstrainedBSpline< N >::constraints_
protected

Matrix storing constraints.

One row per constraint, one column per parameter.

Referenced by roboptim::trajectory::ConstrainedBSpline< N >::resize().

template<int N>
matrix_t roboptim::trajectory::ConstrainedBSpline< N >::projector_
protected

Projector matrix.

template<int N>
vector_t roboptim::trajectory::ConstrainedBSpline< N >::projector_offset_
protected

Result of: Constraints * X = Constraint values.

template<int N>
vector_t roboptim::trajectory::ConstrainedBSpline< N >::tunables_
protected

Tunable parameters, i.e. the free parameters.

Referenced by roboptim::trajectory::ConstrainedBSpline< N >::resize().