Reflexxes Motion Libraries
Manual and Documentation (Type II, Version 1.2.6)

This page contains four sections
The interface (ReflexxesAPI) of all Reflexxes Motion Libraries is very simple and can easily be integrated into existing systems. Based on the current state of motion and the kinematic motion constraints, a new state of motion is calculated with lies exactly on the timeoptimal trajectory to reach the desired target state of motion. All input values can change arbitrarily based on sensor signals and even discontinuously, and a steady jerklimited motion trajectory is always guaranteed at the output The above figure shows the input and output values of the RML algorithm in a generic manner. It is the task of the algorithm to timeoptimally transfer an arbitrary current state of motion
into the desired target state of motion
under consideration of the kinematic motion constraints
The algorithm works memoryless and calculates only the next state of motion , which is used as input value for lowerlevel motion controllers. The resulting trajectories are timeoptimal and synchronized, such that all selected DOFs coinstantaneously reach their target state of motion. The selection vector contains boolean values to mask single DOFs, for which no output values are calculated. All types and variant of the algorithm consist of three steps, which are introduced in the following.
For a better understanding of the basic algorithm for Type II OnLine Trajectory generation (OTG), this section presents a brief overview. For a detailed description, please refer to
T. Kroeger.
OnLine Trajectory Generation in Robotic Systems.
Springer Tracts in Advanced Robotics, Vol. 58, Springer, January 2010.
http://www.springer.com/9783642051746
Although only one single scalar value is calculate in this step, it the the most complex one. First, the minimum execution times are calculated for each selected DOF . The value of the minimum synchronization time must be equal or greater than the minimum value of all minimum execution times. To transfer the motion state of one DOF to another, a finite set of motion profiles is considered, and a decision tree selects a motion profile for each selected DOF . To calculate , a system of nonlinear equation is setup, and the solution contains the desired value.
Depending on the type of the algorithm (IIX), it may happen that up to time intervals are existent, within which the target state of motion cannot be reached. For the Type II algorithm only inoperative interval may be existent. The decision trees 1B and 1C are used to calculate all limits of these intervals , whose elements are denoted by
Finally, the minimum time not being within any inoperative time interval
is selected as the value for the synchronization time .
All selected DOFs that did not determine have to be synchronized to this time value. In principal, an infinite number of solutions can be found to parameterize a trajectory that transfers such a DOF from to in . In order to achieve a deterministic framework, an optimization criterion must be used in order to compute a time or a phasesynchronized motion trajectory. Therefore, another decision tree is used, which selects a motion profile for each DOF from a different set that is denoted by . Based on this profile, a nonlinear system of equations can be solved, and the solution contains all required parameters for the synchronized motion trajectory.
This last step is trivial: the resulting trajectory parameters of Step 2 are used to calculate a new state of motion , which is used as setpoint for lowerlevel controllers at .
The figure above summarizes the generic version of the OTG algorithm for timesynchronization, while the figure below summarizes the version, in which phasesynchronization is applied.
The class ReflexxesAPI constitutes the actual user interface and provides the complete set of functionalities while hiding all parts of the library that are not required by the user. Users, who like to take a deeper look to the implementation of the algorithm, may learn about the class TypeIIRMLPosition and the namespace TypeIIRMLMath, both of which contain all mathematical details.