# ethz-adrl/control-toolbox

The Control Toolbox - An Open-Source C++ Library for Robotics, Optimal and Model Predictive Control

Repository: https://github.com/ethz-adrl/control-toolbox
Canonical: https://ross.abutalabs.com/products/control-toolbox
Language: C++
License: BSD-2-Clause
License Family: permissive
Topics: optimal-control, model-predictive-control, ilqr, ilqg, robotics, trajectory-optimization, lqr-controller, control-systems, cpp, extended-kalman-filter, riccati-solver, multiple-shooting, disturbance-observer, automatic-differentiation, rigid-body-dynamics
Last push: 2022-11-09T23:17:15+00:00

## Health v2 (maintenance only)
Score: 23/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 0, release rhythm 8, longevity 100
- inputs: {"age_days": 2687, "days_push": 1393, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1705, forks 342 (observed 2026-08-28T04:05:24.853867+00:00)

## What it is
The Control Toolbox (CT) is an open-source C++ library for modelling dynamical systems, control, estimation, trajectory optimization and model predictive control, with special tooling for robotics. It provides solvers such as iLQR/iLQG, multiple shooting, and interfaces to IPOPT, SNOPT and HPIPM, plus automatic differentiation and rigid body dynamics via RobCoGen.

## Use cases
- solve optimal control problems for robotic systems in C++
- implement model predictive control (MPC) on real robots
- perform trajectory optimization with iLQR or multiple shooting
- model rigid body dynamics and kinematics for manipulators
- design extended Kalman filters and disturbance observers
- generate derivative code for dynamics with automatic differentiation
- run nonlinear MPC in real time on flying, walking or ground robots

## When to choose
- you need a high-performance C++ library for optimal control or MPC
- you are working on robotics control with rigid body dynamics models
- you want solver flexibility across IPOPT, SNOPT, HPIPM or custom Riccati solvers
- you need automatic differentiation and code generation for dynamics

## When to avoid
- you need actively maintained software with quick bug fixes (scarcely maintained since 2021)
- you want a Python-first control library
- your problem is simple PID/linear control that lighter tools handle
- you need extensive documentation or community support

## Facets
- artifact type: library
- maturity: maintenance
- function: simulation, math, machine-learning
- domain: robotics, simulation, autonomous-vehicles
- platform: cpp, cross-platform
- tags: optimal-control, model-predictive-control, trajectory-optimization, ilqr, ilqg, riccati-solver, automatic-differentiation, rigid-body-dynamics, extended-kalman-filter, multiple-shooting, motion-planning, robotics-control, optimization, algorithms, linux, macos

## Member repositories
- ethz-adrl/control-toolbox (main) score 23

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:24.853867+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T03:37:31.646416+00:00, confidence not recorded.
  - readme: https://github.com/ethz-adrl/control-toolbox (fetched 2026-08-28T04:05:24.853867+00:00, sha 4093fce1ab4b)
- Data as of 2026-08-30T08:39:29.467469+00:00.
