Trajectory generator

This chapter describes the TrajectoryGenerator interface. It represents an entity which calculates movement trajectories. Different types of trajectory generator are available, such as: trajectory generators for 3rd order trajectories, 4th order, or with/without end-point-correction.

Signals

Signals present for all trajectory generator types are listed in table Generic trajectory generator signals. Depending on the type of trajectory generator, additional signals may be available.

Generic trajectory generator signals

Name

Data type

R/W

Description

MaximumVelocity

Float

RW

Maximum velocity used for calculating new trajectories

MaximumAcceleration

Float

RW

Maximum acceleration used for calculating new trajectories

MaximumJerk

Float

RW

Maximum jerk used for calculating new trajectories

QuickstopDeceleration

Float

RW

Deceleration used for calculating quickstop trajectories

TrajectoryIsCalculating

Bool

R

Trajectory generator is busy calculating a new trajectory

TrajectoryCount

UInt32

R

Total number of calculated trajectories since last power up

TrajectoryAverageTime

Float

R

Average trajectory calculation time since last power up

TrajectoryMaximumTime

Float

R

Maximum trajectory calculation time since last power up

Note

Demand* signals of the TrajectoryInterpolator are bounded by design by their corresponding Maximum* signal, but may exceed them by at most std::nextafterf(value, inf) due to numerical processing and internal datatype conversions.

As an example:

Example explaining how a maximum value can be exceeded

Type

Value

Original

0.1

Float-equiv

0.100000001490116119384765625

Next-float-equiv

0.10000000894069671630859375

Hence in this example, when writing double value = 0.1 to one of these Maximum* signals, the corresponding Demand* signal is actually bounded by ~0.1000000089.

See also

TrajectoryGenerator

XML configuration example of the trajectory generator interface.