BSpline
Functions
-
void interpolate(InputDataSet Input, int Num, int P, OutputDataSet *Output)
This function takes the Input structure, performs the BSpline interpolation and outputs the result into Output structure
-
void approximate(InputDataSet Input, int Num, int Q, int P, OutputDataSet *Output)
This function takes the Input structure, performs the BSpline LS approximation and outputs the result into Output structure
-
void basisFunction(double t, Eigen::VectorXd U, int I, int P, double *NN, double *NN1, double *NN2)
This function calculates the basis functions NN of order P, and derivatives NN1, NN2, for a given time t and knot vector U
-
class InputDataSet
- #include <BSpline.h>
The InputDataSet class contains the information about the points that must be interpolated. It is used as a data structure to intialize the inputs that are passed to the interpolating function.
Public Functions
-
InputDataSet()
This constructor initializes an Input structure for BSpline interpolation
-
InputDataSet(Eigen::VectorXd X1, Eigen::VectorXd X2, Eigen::VectorXd X3)
The constructor requires 3 N-dimensional vectors containing the coordinates of the waypoints
-
~InputDataSet()
Generic destructor
-
void setXDot_0(Eigen::Vector3d XDot_0)
Set the first derivative of the starting point (optional)
-
void setXDot_N(Eigen::Vector3d XDot_N)
Set the first derivative of the last point (optional)
-
void setXDDot_0(Eigen::Vector3d XDDot_0)
Set the second derivative of the starting point (optional)
-
void setXDDot_N(Eigen::Vector3d XDDot_N)
Set the second derivative of the last point (optional)
-
void setT(Eigen::VectorXd T)
Set the time tags for each waypoint (optional). Cannot be imposed together with avg velocity norm below
-
void setW(Eigen::VectorXd W)
Set the weights for each waypoint. Weights are used in the LS approximation
-
void setAvgXDot(double AvgXDot)
Set the average velocity norm (optional). Cannot be imposed together with time tag vector above
Public Members
-
double AvgXDot
desired average velocity norm
-
Eigen::VectorXd T
time tags: specifies at what time each waypoint is hit
-
Eigen::VectorXd W
weight vector for the LS approximation
-
Eigen::VectorXd X1
coordinate #1 of the waypoints
-
Eigen::VectorXd X2
coordinate #2 of the waypoints
-
Eigen::VectorXd X3
coordinate #3 of the waypoints
-
Eigen::Vector3d XDot_0
3D vector containing the first derivative at starting point
-
Eigen::Vector3d XDot_N
3D vector containing the first derivative at final point
-
Eigen::Vector3d XDDot_0
3D vector containing the second derivative at starting point
-
Eigen::Vector3d XDDot_N
3D vector containing the second derivative at final point
-
bool T_flag
indicates that time tags have been specified; if true, AvgXDot_flag is false
-
bool AvgXDot_flag
indicates that avg velocity norm has been specified; if true, T_flag is false
-
bool W_flag
indicates that weight vector has been specified
-
bool XDot_0_flag
indicates that first derivative at starting point has been specified
-
bool XDot_N_flag
indicates that first derivative at final point has been specified
-
bool XDDot_0_flag
indicates that second derivative at starting point has been specified
-
bool XDDot_N_flag
indicates that second derivative at final point has been specified
-
InputDataSet()
-
class OutputDataSet
- #include <BSpline.h>
The OutputDataSet class is used as a data structure to contain the interpolated function and its first- and second-order derivatives, together with the time-tag vector T.
Public Functions
-
OutputDataSet()
This constructor initializes an Output structure for BSpline interpolation
-
~OutputDataSet()
Generic destructor
-
void getData(double t, double x[3], double xDot[3], double xDDot[3])
This method returns x, xDot and xDDot at the desired input time T
-
double getStates(double t, int derivative, int index)
This method returns single coordinates of x, xDot and xDDot at the desired input time T.
It is designed to be accessible from Python
Public Members
-
Eigen::VectorXd T
time tags for each point of the interpolated trajectory
-
Eigen::VectorXd X1
coordinate #1 of the interpolated trajectory
-
Eigen::VectorXd X2
coordinate #2 of the interpolated trajectory
-
Eigen::VectorXd X3
coordinate #3 of the interpolated trajectory
-
Eigen::VectorXd XD1
first derivative of coordinate #1 of the interpolated trajectory
-
Eigen::VectorXd XD2
first derivative of coordinate #2 of the interpolated trajectory
-
Eigen::VectorXd XD3
first derivative of coordinate #3 of the interpolated trajectory
-
Eigen::VectorXd XDD1
second derivative of coordinate #1 of the interpolated trajectory
-
Eigen::VectorXd XDD2
second derivative of coordinate #2 of the interpolated trajectory
-
Eigen::VectorXd XDD3
second derivative of coordinate #3 of the interpolated trajectory
-
int P
polynomial degree of the BSpline
-
Eigen::VectorXd U
knot vector of the BSpline
-
Eigen::VectorXd C1
coordinate #1 of the control points
-
Eigen::VectorXd C2
coordinate #2 of the control points
-
Eigen::VectorXd C3
coordinate #3 of the control points
-
OutputDataSet()