Skip to main content

SplineTrajectory Class

SplineTrajectory fits piecewise splines to target positions by minimizing a specified cost function via convex optimization. The constructor sets up all the memory needed for running the optimization in the fit function and querying new points using the evaluate function. More...

Declaration

class SplineTrajectory { ... }

Included Headers

#include <spline_trajectory.hpp>

Public Constructors Index

SplineTrajectory (size_t num_points, size_t num_coefficients)

The constructor initializes all memory needed for the optimization and evaluation. More...

Public Member Functions Index

voidfit (const moveit_pro_controllers::Trajectory &points, const SplineOptimizationParameters &optimization_parameters, double scaled_time_base=1.05)

Fits the piecewise spline to the given trajectory points. More...

const moveit_pro_controllers::TimedJointState &evaluate (double ti)

Evaluates the spline at a given time point. More...

const std::vector< double > &getKnots () const

Returns the vector of knot time points used in the spline trajectory. More...

Private Member Functions Index

voidenforceConstraints (const moveit_pro_controllers::Trajectory &points, const SplineOptimizationParameters &optimization_parameters, const double scaled_time_base)
voidreparameterizeWithConstraints (const SplineOptimizationParameters &optimization_parameters, double time_scale)
doublecalculateScaleTimeForConstraints (const SplineOptimizationParameters &optimization_parameters)
doubleestimateConstraintScaleFactor (double ti, const Eigen::VectorNd &velocity_limits, const Eigen::VectorNd &acceleration_limits)
voidvalidateInputs (const moveit_pro_controllers::Trajectory &points, const SplineOptimizationParameters &optimization_parameters) const
voidsetupKnots (const moveit_pro_controllers::Trajectory &points)
voidsetupQueryPoint (const moveit_pro_controllers::Trajectory &points)
voidsetupCostMatrix (const std::vector< double > &knots, const SplineOptimizationParameters &optimization_parameters)
voidsetupConstraintMatrixVelocityAcceleration (const std::vector< double > &knots)
voidsetupConstraintMatrixPosition (const moveit_pro_controllers::Trajectory &points, const SplineOptimizationParameters &optimization_parameters, Eigen::Index dim)
std::pair< Eigen::Index, double >positionPenaltyAnchor (Eigen::Index point_idx) const
voidsetupBoundaryConstraints (SplineOptimizationParameters optimization_parameters, Eigen::Index dim)
voidsetupAndRunOptimization (const moveit_pro_controllers::Trajectory &points, const SplineOptimizationParameters &optimization_parameters)
voidsolveOptimization (const SplineOptimizationParameters &optimization_parameters, Eigen::Index dim)
boolfactorizationCacheValid (const SplineOptimizationParameters &optimization_parameters) const
voidupdateFactorizationCache (const SplineOptimizationParameters &optimization_parameters)
voidsetPositionBasis (double delta_ti, Eigen::Index segment_index, Eigen::Ref< Eigen::MatrixXd > block) const
voidsetVelocityBasis (double delta_ti, Eigen::Index segment_index, Eigen::Ref< Eigen::MatrixXd > block) const
voidsetAccelerationBasis (double delta_ti, Eigen::Index segment_index, Eigen::Ref< Eigen::MatrixXd > block) const
voidsetJerkBasis (double delta_ti, Eigen::Index segment_index, Eigen::Ref< Eigen::MatrixXd > block) const
voidsetCostBlock (double delta_ti, Eigen::Index segment_index, int derivative_order, const SplineOptimizationParameters &optimization_parameters, Eigen::Ref< Eigen::MatrixXd > block) const

Private Member Attributes Index

Eigen::MatrixXdA_
Eigen::VectorXdb_
Eigen::MatrixXdH_
Eigen::VectorXdf_
Eigen::JacobiSVD< Eigen::MatrixXd >svd_
FactorizationCachefactorization_cache_
Eigen::VectorXdall_coefficients_
std::vector< double >knots_
const Eigen::Indexnum_points_ = 0
const Eigen::Indexnum_coefficients_ = 0
const Eigen::Indextotal_coefficients_ = 0
const Eigen::Indextotal_constraints_ = 0
moveit_pro_controllers::TimedJointStatequery_point_
Eigen::MatrixXdtmp_block_
Eigen::MatrixXdtmp_solution_
Eigen::MatrixXdtmp_solution_1_
Eigen::MatrixXdtmp_solution_2_
Eigen::MatrixXdtmp_constraint_tolerance_
std::vector< double >tmp_knots_

Description

SplineTrajectory fits piecewise splines to target positions by minimizing a specified cost function via convex optimization. The constructor sets up all the memory needed for running the optimization in the fit function and querying new points using the evaluate function.

The cost function to minimize is the $\int (\dot{x}^2 + \ddot{x}^2 + \dddot{x}^2) \, dt$, where $x = \sum_{i=0}^{\text{num\_coefficients}} x_i \cdot t^i$.

Definition at line 101 of file spline_trajectory.hpp.

Public Constructors

SplineTrajectory()

SplineTrajectory::SplineTrajectory (size_t num_points, size_t num_coefficients)

The constructor initializes all memory needed for the optimization and evaluation.

Parameters
num_points

The number of points to fit the spline to.

num_coefficients

The number of polynomial terms to use per piecewise spline.

Declaration at line 109 of file spline_trajectory.hpp, definition at line 17 of file spline_trajectory.cpp.

Public Member Functions

evaluate()

const moveit_pro_controllers::TimedJointState & SplineTrajectory::evaluate (double ti)

Evaluates the spline at a given time point.

Parameters
ti

The time from start at which to evaluate the spline.

Returns

The joint state (position, velocity, acceleration) at the specified time.

Declaration at line 138 of file spline_trajectory.hpp, definition at line 581 of file spline_trajectory.cpp.

fit()

void SplineTrajectory::fit (const moveit_pro_controllers::Trajectory & points, const SplineOptimizationParameters & optimization_parameters, double scaled_time_base=1.05)

Fits the piecewise spline to the given trajectory points.

Exceptions
std::runtime_error

Thrown if:

  • The provided points have zero dimensions.
  • The number of dimensions in the provided points does not match the dimensions specified in the spline optimization parameters.
  • The velocity limits must all be positive and match the number of dimensions in the points.
  • The acceleration limits must all be positive and match the number of dimensions in the points.
  • The velocity limits, if provided, must each be greater than the corresponding start and end velocity for their dimension.
  • The acceleration limits, if provided, must each be greater than the corresponding start and end acceleration for their dimension.
Parameters
points

The trajectory points to fit the spline to.

optimization_parameters

Parameters for spline optimization, including weights and constraints.

scaled_time_base

The multiplier to iteratively scale time if the inequality dynamic constraints are not met.

Declaration at line 129 of file spline_trajectory.hpp, definition at line 131 of file spline_trajectory.cpp.

getKnots()

const std::vector< double > & SplineTrajectory::getKnots ()

Returns the vector of knot time points used in the spline trajectory.

Returns

A const reference to the vector of knot times.

Declaration at line 144 of file spline_trajectory.hpp, definition at line 619 of file spline_trajectory.cpp.

Private Member Functions

calculateScaleTimeForConstraints()

double SplineTrajectory::calculateScaleTimeForConstraints (const SplineOptimizationParameters & optimization_parameters)

Declaration at line 152 of file spline_trajectory.hpp, definition at line 566 of file spline_trajectory.cpp.

enforceConstraints()

void SplineTrajectory::enforceConstraints (const moveit_pro_controllers::Trajectory & points, const SplineOptimizationParameters & optimization_parameters, const double scaled_time_base)

Declaration at line 147 of file spline_trajectory.hpp, definition at line 83 of file spline_trajectory.cpp.

estimateConstraintScaleFactor()

double SplineTrajectory::estimateConstraintScaleFactor (double ti, const Eigen::VectorNd & velocity_limits, const Eigen::VectorNd & acceleration_limits)

Declaration at line 154 of file spline_trajectory.hpp, definition at line 519 of file spline_trajectory.cpp.

factorizationCacheValid()

bool SplineTrajectory::factorizationCacheValid (const SplineOptimizationParameters & optimization_parameters)

Declaration at line 184 of file spline_trajectory.hpp, definition at line 394 of file spline_trajectory.cpp.

positionPenaltyAnchor()

std::pair< Eigen::Index, double > SplineTrajectory::positionPenaltyAnchor (Eigen::Index point_idx)

Declaration at line 173 of file spline_trajectory.hpp, definition at line 250 of file spline_trajectory.cpp.

reparameterizeWithConstraints()

void SplineTrajectory::reparameterizeWithConstraints (const SplineOptimizationParameters & optimization_parameters, double time_scale)

Declaration at line 150 of file spline_trajectory.hpp, definition at line 535 of file spline_trajectory.cpp.

setAccelerationBasis()

void SplineTrajectory::setAccelerationBasis (double delta_ti, Eigen::Index segment_index, Eigen::Ref< Eigen::MatrixXd > block)

Declaration at line 191 of file spline_trajectory.hpp, definition at line 649 of file spline_trajectory.cpp.

setCostBlock()

void SplineTrajectory::setCostBlock (double delta_ti, Eigen::Index segment_index, int derivative_order, const SplineOptimizationParameters & optimization_parameters, Eigen::Ref< Eigen::MatrixXd > block)

Declaration at line 195 of file spline_trajectory.hpp, definition at line 180 of file spline_trajectory.cpp.

setJerkBasis()

void SplineTrajectory::setJerkBasis (double delta_ti, Eigen::Index segment_index, Eigen::Ref< Eigen::MatrixXd > block)

Declaration at line 193 of file spline_trajectory.hpp, definition at line 663 of file spline_trajectory.cpp.

setPositionBasis()

void SplineTrajectory::setPositionBasis (double delta_ti, Eigen::Index segment_index, Eigen::Ref< Eigen::MatrixXd > block)

Declaration at line 187 of file spline_trajectory.hpp, definition at line 624 of file spline_trajectory.cpp.

setupAndRunOptimization()

void SplineTrajectory::setupAndRunOptimization (const moveit_pro_controllers::Trajectory & points, const SplineOptimizationParameters & optimization_parameters)

Declaration at line 177 of file spline_trajectory.hpp, definition at line 49 of file spline_trajectory.cpp.

setupBoundaryConstraints()

void SplineTrajectory::setupBoundaryConstraints (SplineOptimizationParameters optimization_parameters, Eigen::Index dim)

Declaration at line 175 of file spline_trajectory.hpp, definition at line 371 of file spline_trajectory.cpp.

setupConstraintMatrixPosition()

void SplineTrajectory::setupConstraintMatrixPosition (const moveit_pro_controllers::Trajectory & points, const SplineOptimizationParameters & optimization_parameters, Eigen::Index dim)

Declaration at line 168 of file spline_trajectory.hpp, definition at line 262 of file spline_trajectory.cpp.

setupConstraintMatrixVelocityAcceleration()

void SplineTrajectory::setupConstraintMatrixVelocityAcceleration (const std::vector< double > & knots)

Declaration at line 166 of file spline_trajectory.hpp, definition at line 343 of file spline_trajectory.cpp.

setupCostMatrix()

void SplineTrajectory::setupCostMatrix (const std::vector< double > & knots, const SplineOptimizationParameters & optimization_parameters)

Declaration at line 164 of file spline_trajectory.hpp, definition at line 215 of file spline_trajectory.cpp.

setupKnots()

void SplineTrajectory::setupKnots (const moveit_pro_controllers::Trajectory & points)

Declaration at line 160 of file spline_trajectory.hpp, definition at line 169 of file spline_trajectory.cpp.

setupQueryPoint()

void SplineTrajectory::setupQueryPoint (const moveit_pro_controllers::Trajectory & points)

Declaration at line 162 of file spline_trajectory.hpp, definition at line 160 of file spline_trajectory.cpp.

setVelocityBasis()

void SplineTrajectory::setVelocityBasis (double delta_ti, Eigen::Index segment_index, Eigen::Ref< Eigen::MatrixXd > block)

Declaration at line 189 of file spline_trajectory.hpp, definition at line 636 of file spline_trajectory.cpp.

solveOptimization()

void SplineTrajectory::solveOptimization (const SplineOptimizationParameters & optimization_parameters, Eigen::Index dim)

Declaration at line 180 of file spline_trajectory.hpp, definition at line 435 of file spline_trajectory.cpp.

updateFactorizationCache()

void SplineTrajectory::updateFactorizationCache (const SplineOptimizationParameters & optimization_parameters)

Declaration at line 185 of file spline_trajectory.hpp, definition at line 420 of file spline_trajectory.cpp.

validateInputs()

void SplineTrajectory::validateInputs (const moveit_pro_controllers::Trajectory & points, const SplineOptimizationParameters & optimization_parameters)

Declaration at line 157 of file spline_trajectory.hpp, definition at line 141 of file spline_trajectory.cpp.

Private Member Attributes

A_

Eigen::MatrixXd SplineTrajectory::A_

Definition at line 200 of file spline_trajectory.hpp.

all_coefficients_

Eigen::VectorXd SplineTrajectory::all_coefficients_

Definition at line 233 of file spline_trajectory.hpp.

b_

Eigen::VectorXd SplineTrajectory::b_

Definition at line 203 of file spline_trajectory.hpp.

f_

Eigen::VectorXd SplineTrajectory::f_

Definition at line 209 of file spline_trajectory.hpp.

factorization_cache_

FactorizationCache SplineTrajectory::factorization_cache_

Definition at line 230 of file spline_trajectory.hpp.

H_

Eigen::MatrixXd SplineTrajectory::H_

Definition at line 206 of file spline_trajectory.hpp.

knots_

std::vector<double> SplineTrajectory::knots_

Definition at line 236 of file spline_trajectory.hpp.

num_coefficients_

const Eigen::Index SplineTrajectory::num_coefficients_ = 0

Definition at line 242 of file spline_trajectory.hpp.

num_points_

const Eigen::Index SplineTrajectory::num_points_ = 0

Definition at line 239 of file spline_trajectory.hpp.

query_point_

moveit_pro_controllers::TimedJointState SplineTrajectory::query_point_

Definition at line 251 of file spline_trajectory.hpp.

svd_

Eigen::JacobiSVD<Eigen::MatrixXd> SplineTrajectory::svd_

Definition at line 212 of file spline_trajectory.hpp.

tmp_block_

Eigen::MatrixXd SplineTrajectory::tmp_block_
mutable

Definition at line 254 of file spline_trajectory.hpp.

tmp_constraint_tolerance_

Eigen::MatrixXd SplineTrajectory::tmp_constraint_tolerance_
mutable

Definition at line 258 of file spline_trajectory.hpp.

tmp_knots_

std::vector<double> SplineTrajectory::tmp_knots_
mutable

Definition at line 259 of file spline_trajectory.hpp.

tmp_solution_

Eigen::MatrixXd SplineTrajectory::tmp_solution_
mutable

Definition at line 255 of file spline_trajectory.hpp.

tmp_solution_1_

Eigen::MatrixXd SplineTrajectory::tmp_solution_1_
mutable

Definition at line 256 of file spline_trajectory.hpp.

tmp_solution_2_

Eigen::MatrixXd SplineTrajectory::tmp_solution_2_
mutable

Definition at line 257 of file spline_trajectory.hpp.

total_coefficients_

const Eigen::Index SplineTrajectory::total_coefficients_ = 0

Definition at line 245 of file spline_trajectory.hpp.

total_constraints_

const Eigen::Index SplineTrajectory::total_constraints_ = 0

Definition at line 248 of file spline_trajectory.hpp.


The documentation for this class was generated from the following files:


Generated via doxygen2docusaurus 2.2.2 by Doxygen 1.9.8.