cuda-mppi

Overview

cuda-mppi is a high-performance, GPU-accelerated library for Model Predictive Path Integral (MPPI) control. It provides a flexible C++ core with Python bindings, designed to serve as the backend for advanced autonomous navigation and control research.

WarningImportant - Development

This repository is currently in active development. It should not be used for production purposes.

Key Features

  • Speed: Pure CUDA implementation capable of evaluating thousands of trajectories in parallel at hundreds of Hz.
  • Flexibility: Template-based architecture allows for zero-overhead swapping of Dynamics and Cost functions.
  • Multiple variants: Standard MPPI, Smooth MPPI (S-MPPI), Kernel MPPI (K-MPPI), B-Spline MPPI, and Informative MPPI (I-MPPI) — all exposed to Python.
  • JIT Compilation: Define dynamics and cost in C++/CUDA strings; the library compiles a .cubin at runtime via NVRTC.
  • Pixi environment: reproducible builds pinned through a conda-forge lock file.

Performance snapshot

Lemniscate tracking, 30 s, K=900 rollouts, N=40, dt=0.02 s:

Controller RMSE (m) Compute / step
MPPI 0.60 0.17 ms
K-MPPI 0.79 0.03 ms
S-MPPI – (#30)

JAX vs CUDA MPPI

Same algorithm, same GPU, different stack. Both run quadrotor lemniscate tracking with identical parameters.

3D trajectory comparison

Compute latency

Reproduce with:

pixi run python scripts/bench_jax_mppi.py --compare --plot

Documentation Structure

Getting Started

Installation instructions for C++ standalone usage and Python integration.

Core Concepts

Understanding the architecture, memory model, and JIT Compilation.

Controllers

Detailed theoretical derivation and usage of the reactive tracking controllers.

Planners

Documentation for the Informative-MPPI (I-MPPI) exploration planner.

API Reference

Python API documentation for cuda_mppi.

License

MIT License.