Tropic stands for "TRajectory Online Planning in InteraCtion". We selected the name "tropic", because it's a library with a number of hot features:
- Implementations of minimum-jerk trajectory profile with arbitrary number of constraints, to be flexibly applied to position, velocity or acceleration levels, or any combination of these
- Flexible way of incorporating new kinds of trajectory profiles
- ConstraintSet class implementing a hierarchically organized collection of constraints spanning several trajectories, similar to the concept of motion primitives
- Implementation of trajectories in several orientation representations without any representational issues such as jumps at representation boundaries
- Receding horizon implementation to step and re-plan trajectories at every time step
- Class to couple trajectory generation to task-level control to easily run with inverse kinematics / inverse dynamics
- XML factory to read and write trajectories from and to file
- Classes to display trajectories in OpenScenegraph and for plotting
Tropic is written entirely in C++ and requires the standard C++11. It has been successfully compiled and ran on several Linux and Windows systems (Ubuntu 14, 16, 18, 20, Visual studio 2015, 2017). It depends on the Rcs library, a BSD 3-clause licensed library that can freely be downloaded from GitHub: https://github.com/HRI-EU/Rcs. It has been hardened in several research projects, such as for instance this one: https://www.honda-ri.de/human-robot-cooperative-object-manipulation-with-contact-changes
Tropic can be compiled with the cmake build system. To compile it, just type:
cd <build-directory>
cmake <source-directory>
make
To build the doxygen documentation, just type:
make TrajectoryDoc
The library comes with several examples. The file TestSimpleTrajectory.cpp contains examples for plotting of single trajectories and stepping them over time. The file TestTrajectory.cpp contains examples for high-dimensional trajectories, and how to step and modify them interactively at run-time. The examples can be started with the command-line option "-h", which will display a help message on all available command line options and graphics window key interactions.
This project is licensed under the BSD 3-clause license - see the LICENSE.md file for details
- Rename to better wording:
- fromXML() and toXML() should return false instead of exiting fatally
- relPos / relRot in PositionConstraint / EulerConstraint
- How to deal with transform pointers as anchors? Body names?
- Fix activation access in testIK() of TestTrajectory.cpp