Skip to content
/ vurtis Public

A simple header-only library for NMPC using the Real Time Iteration Scheme

License

Notifications You must be signed in to change notification settings

tombelv/vurtis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Very Uncomplicated Real Time Iteration Scheme (vurtis)

This repository contains a simple header-only implementation of the RTI scheme in a multiple-shooting fashion using the sparse OSQP solver and autodiff for algorithmic differentiation.

The goal is to provide a fast - yet simple - C++ NMPC library. While care has been taken to optimize performance, surely much more could be done.

Everything is still experimental and breaking changes might occur.

It can be used by including it as an INTERFACE library, see examples.

Requirements

and their dependencies.

The autodiff header-only library is bundled in the include/ directory.

Usage

The user is required to define the implementation of the system dynamics, constraints and cost function via the two classes vurtis::Model and vurtis::Cost which inherit the additional necessary functionality from the abstract classes vurtis::ModelBase and vurtis::CostBase respectively.

The numerical integration is performed using 4-th order Runge-Kutta method and all the sensitivities are automatically computed using AD.

It is possible to define step-wise parameters for the constraints.

Example

The provided examples/simple_example.cpp performs trajectory tracking with a kinematic unicycle vehicle while satisfying input constraints.

TODO

  • include autodiff as a submodule or system dependency
  • some interface to set OSQP settings during setup
  • maybe rewrite the OSQP wrapper to avoid unnecessary checks
  • interface with qpSWIFT

About

A simple header-only library for NMPC using the Real Time Iteration Scheme

Resources

License

Stars

Watchers

Forks

Languages