Closed-form Path-Speed-Time Dynamics / by Jeffrey Johnson

Release 9 includes a dynamics library for computing reachability under acceleration bounds in closed form in Path-Speed-Time (PST) space. Additionally, a geometry package is added that supports intervals, axis-aligned bounding boxes, and quadratic polynomials:

Below are more details about the packages.

New & Updated

maeve_dynamics (new):

    The dynamics library computes reachable speed intervals at points in path-time space under speed and acceleration bounds. The plot below shows reachable speed intervals after one second at various path positions. The plot was generated with initial speed 5 m/s and acceleration bounds of +/-4 m/s^2:

    reachable-small.png

    The plot is showing that the nearest path position that can be reached after one second is 3 m, and the farthest is 7 m. At each path position, the vertical interval between the blue and green curves defines the interval of speeds reachable at that position.

    This reachability information is computed by solving for bang-singular-bang trajectories that achieve extremal speed bounds at path-time point. These trajectories are computed analytically in closed-form in O(1) time. Below is an example trajectory that connects two path-time points with maximum terminal speed under acceleration bounds:

    connector-small.png

    Each trajectory is composed of an initial parabolic (extremal acceleration) component, a middle linear (zero acceleration) component, and a terminal parabolic (extremal acceleration) component. These components can be seen in the plot above.

    All objects in the maeve_dynamics library have ostream overloads that serialize them into JSON format. This is intended to make it easy to quickly to share data with other languages, such as python or matlab, especially for generating plots. Note, however, that the serialization loses precision, so it should not be used for numerical applications.

    For more details and example usages, see the README.

    maeve_geometry (new):

    This package contains a library for manipulating simple geometric types and functions. All objects in the maeve_geometry library have ostream overloads that serialize them into JSON format. This is intended to make it easy to quickly to share data with other languages, such as python or matlab, especially for generating plots. Note, however, that the serialization loses precision, so it should not be used for numerical applications.

    For more details and example usages, see the README.