Template Class InputParameter

Class Documentation

template<size_t DOFs, template<class, size_t> class CustomVector = StandardVector>
class InputParameter

Input of the Ruckig algorithm.

Public Functions

template<size_t D = DOFs, typename std::enable_if<(D >= 1), int>::type = 0>
inline InputParameter()
template<size_t D = DOFs, typename std::enable_if<(D == 0), int>::type = 0>
inline InputParameter(size_t dofs)
template<bool throw_validation_error = true>
inline bool validate(bool check_current_state_within_limits = false, bool check_target_state_within_limits = true) const

Validate the input for trajectory calculation.

inline bool operator!=(const InputParameter<DOFs, CustomVector> &rhs) const
inline std::string to_string() const

Public Members

size_t degrees_of_freedom
ControlInterface control_interface = {ControlInterface::Position}
Synchronization synchronization = {Synchronization::Time}
DurationDiscretization duration_discretization = {DurationDiscretization::Continuous}
Vector<double> current_position

Current state.

Vector<double> current_velocity
Vector<double> current_acceleration
Vector<double> target_position

Target state.

Vector<double> target_velocity
Vector<double> target_acceleration
Vector<double> max_velocity

Kinematic constraints.

Vector<double> max_acceleration
Vector<double> max_jerk
std::optional<Vector<double>> min_velocity
std::optional<Vector<double>> min_acceleration
std::vector<Vector<double>> intermediate_positions

Intermediate waypoints (only in Ruckig Pro)

std::optional<std::vector<Vector<double>>> per_section_max_velocity

Kinematic constraints for intermediate sections (between waypoints) (only in Ruckig Pro)

std::optional<std::vector<Vector<double>>> per_section_max_acceleration
std::optional<std::vector<Vector<double>>> per_section_max_jerk
std::optional<std::vector<Vector<double>>> per_section_min_velocity
std::optional<std::vector<Vector<double>>> per_section_min_acceleration
std::optional<std::vector<Vector<double>>> per_section_max_position
std::optional<std::vector<Vector<double>>> per_section_min_position
std::optional<Vector<double>> max_position

Positional constraints (only in Ruckig Pro)

std::optional<Vector<double>> min_position
Vector<bool> enabled

Is the DoF considered for calculation?

std::optional<Vector<ControlInterface>> per_dof_control_interface

Per-DoF control_interface (overwrites global control_interface)

std::optional<Vector<Synchronization>> per_dof_synchronization

Per-DoF synchronization (overwrites global synchronization)

std::optional<double> minimum_duration

Optional minimum trajectory duration.

std::optional<std::vector<double>> per_section_minimum_duration

Optional minimum trajectory duration for each intermediate sections (only in Ruckig Pro)

std::optional<double> interrupt_calculation_duration

Optional duration [µs] after which the trajectory calculation is (softly) interrupted (only in Ruckig Pro)

The total calculation consists of a first iterative phase and a second fixed phase. The interrupt signal is applied to the iterative phase only, and the real-time capable (constant) second phase is computed afterwards. Therefore, the total calculation duration might exceed this interrupt signal by a constant offset, which should be considered (subtracted) here.