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.
| 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:
| 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.