This library is used to generate time-optimal trajectories for FRC robots.
Trajectory optimization works by mathematically formulating the problem of travelling along a given path with the minimum possible time. The physical constraints of motor power capacity are applied along with waypoint constraints, which force the robot to begin and end a segment of the trajectory with a certain state. A mathematical solver must vary the position of the robot at each discrete timestamp to minimize total time.
- Currently only supports swerve drives with arbitray module configurations
- Position and velocity constraints at each waypoint
- Circle and polygon obstacle avoidance
- Custom physical constraints of robot
- Custom bumper shape
- Java and C++ API with almost complete parity
- CasADi dependencies bundled with Jar
- C++20 compiler
- On Windows, install Visual Studio Community 2022 and select the C++ programming language during installation
- On Linux, install GCC 11 or greater via
sudo apt install gcc
- On macOS, install the Xcode command-line build tools via
xcode-select --install
. Xcode 13 or later is required.
- CMake 3.24 or greater
- On Windows, install from the link above
- On Linux, install via
sudo apt install cmake
- On macOS, install via
brew install cmake
- Rust compiler
- Sleipnir (optional backend)
- CasADi (optional backend)
- Catch2 (tests only)
Library dependencies which aren't installed locally will be automatically downloaded and built by CMake.
On Windows, open a Developer PowerShell. On Linux or macOS, open a Bash shell.
Clone the repository.
git clone git@github.com:SleipnirGroup/TrajoptLib
cd TrajoptLib
# Configure with Sleipnir backend; automatically downloads library dependencies
cmake -B build -S . -DOPTIMIZER_BACKEND=sleipnir
# Configure with CasADi backend; automatically downloads library dependencies
cmake -B build -S . -DOPTIMIZER_BACKEND=casadi
# Build
cmake --build build
# Test
cd build
ctest
cd ..
# Install
cmake --install build --prefix pkgdir
The following build types can be specified via -DCMAKE_BUILD_TYPE
during CMake configure:
- Debug
- Optimizations off
- Debug symbols on
- Release
- Optimizations on
- Debug symbols off
- RelWithDebInfo (default)
- Release build type, but with debug info
- MinSizeRel
- Minimum size release build
cargo build --features sleipnir # Sleipnir backend
cargo build --features casadi # CasADi backend