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.