Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Robotic Tooling
  3. mpcc

mpcc

Apache-2.0C++

A Model Predictive Contouring Controller (MPCC) for autonomous racing, enabling high-speed path following and obstacle avoidance.

GitHubGitHub
1.8k stars423 forks0 contributors

What is mpcc?

MPCC is a Model Predictive Contouring Controller developed for autonomous racing, enabling vehicles to follow reference paths at high speeds while minimizing errors and avoiding obstacles. It formulates path following as an optimization problem that maximizes progress along the path, penalizes contouring and lag errors, and enforces track constraints. The controller uses nonlinear vehicle dynamics and efficient solvers to achieve real-time performance in simulation and experimental platforms.

Target Audience

Researchers and engineers working on autonomous vehicle control, particularly in racing or high-performance path-following applications. It is also suitable for academic institutions and labs focusing on model predictive control, robotics, and optimization-based control systems.

Value Proposition

MPCC provides a specialized, open-source implementation of a contouring controller tailored for racing, with support for obstacle avoidance and realistic vehicle dynamics. Its dual C++ and Matlab implementations offer flexibility for simulation and deployment, backed by research from ETH Zurich and proven in real-world autonomous racing systems like the AMZ Driverless car.

Overview

Model Predictive Contouring Controller (MPCC) for Autonomous Racing

Use Cases

Best For

  • Simulating autonomous racing controllers in research environments
  • Implementing high-speed path following for miniature or full-scale race cars
  • Studying optimization-based control with nonlinear vehicle dynamics
  • Developing obstacle avoidance algorithms for autonomous vehicles
  • Experimenting with model predictive control in real-time applications
  • Teaching advanced control concepts in academic courses or labs

Not Ideal For

  • Commercial projects needing simple, out-of-the-box controllers without deep optimization knowledge
  • Real-time systems with ultra-low latency requirements beyond the C++ implementation's optimizations
  • Applications requiring extensive documentation or active community support beyond academic papers
  • Teams looking for plug-and-play obstacle avoidance in both C++ and Matlab versions

Pros & Cons

Pros

Realistic Vehicle Dynamics

Incorporates a nonlinear bicycle model with Magic Formula tire models, accurately simulating high-speed racing behavior as detailed in the formulation section.

Dual Implementation Flexibility

Provides both C++ and Matlab code, allowing for research simulation in Matlab and deployment-ready implementations in C++, based on the README's separate instructions.

Advanced Optimization Integration

Supports efficient solvers like hpipm, Yalmip, CVX, and QuadProg, enabling real-time performance by approximating the nonlinear problem as a quadratic program.

Research-Proven Reliability

Backed by ETH Zurich research and used in real-world systems like AMZ Driverless, with multiple cited papers validating its effectiveness in autonomous racing.

Cons

Incomplete Feature Parity

Obstacle avoidance is only available in the Matlab implementation, not in C++, limiting deployment options for full autonomous systems as noted in the README.

High Setup Complexity

Requires installation of specific solvers and tools, with separate instructions for C++ and Matlab, making it challenging for users unfamiliar with optimization software.

Niche Application Scope

Focused primarily on autonomous racing with a specific vehicle model, so adapting it to other autonomous driving scenarios requires significant modification and expertise.

Frequently Asked Questions

Quick Stats

Stars1,823
Forks423
Contributors0
Open Issues5
Last commit1 month ago
CreatedSince 2018

Tags

#robotics#c-plus-plus#vehicle-dynamics#model-predictive-control#optimization#control-systems#matlab

Built With

M
MATLAB
C
C++

Included in

Robotic Tooling3.8k
Auto-fetched 1 day ago

Related Projects

pinocchiopinocchio

A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives

Stars3,444
Forks541
Last commit1 day ago
EGO-PlannerEGO-Planner

EGO-Planner is an ESDF-free gradient-based local planner designed for quadrotor navigation. It significantly reduces computation time compared to state-of-the-art methods by avoiding the computationally expensive Euclidean Signed Distance Field (ESDF) construction, enabling real-time performance with total planning times around 1ms. ## Key Features - **ESDF-Free Planning** — Eliminates the need to compute Euclidean Signed Distance Fields, drastically reducing computational overhead. - **Lightweight Gradient-Based Optimization** — Uses a gradient-based approach for efficient local trajectory generation. - **GPU/CPU Versatility** — Offers both GPU and CPU versions of its local sensing module for depth image generation or pointcloud processing. - **Fast Computation** — Achieves planning times of approximately 1ms, suitable for real-time drone control. - **Simulation-Ready** — Includes a lightweight quadrotor simulator and supports integration with sensors like Intel RealSense for hardware testing. ## Philosophy EGO-Planner prioritizes computational efficiency and real-time performance by removing the ESDF construction bottleneck, making advanced local planning accessible for resource-constrained aerial robotics applications.

Stars2,510
Forks396
Last commit1 year ago
casADicasADi

CasADi is a symbolic framework for numeric optimization implementing automatic differentiation in forward and reverse modes on sparse matrix-valued computational graphs. It supports self-contained C-code generation and interfaces state-of-the-art codes such as SUNDIALS, IPOPT etc. It can be used from C++, Python or Matlab/Octave.

Stars2,225
Forks448
Last commit1 day ago
omplompl

The Open Motion Planning Library (OMPL)

Stars2,072
Forks692
Last commit8 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub