Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

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

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Robotic Tooling
  3. casADi

casADi

LGPL-3.0C++3.7.2

A symbolic framework for numeric optimization with automatic differentiation and code generation capabilities.

Visit WebsiteGitHubGitHub
2.3k stars453 forks0 contributors

What is casADi?

CasADi is a symbolic framework for numeric optimization that implements automatic differentiation on sparse matrix-valued computational graphs. It solves complex optimization problems by providing tools for gradient calculation, code generation, and integration with advanced numerical solvers. The framework enables efficient formulation and solution of optimization tasks in scientific computing and engineering applications.

Target Audience

Researchers, engineers, and developers working on numerical optimization problems in fields like control systems, robotics, and computational physics. It's particularly valuable for those needing efficient gradient computations and code generation for embedded or high-performance applications.

Value Proposition

Developers choose CasADi for its robust automatic differentiation capabilities, support for multiple programming languages, and seamless integration with state-of-the-art solvers. Its ability to generate self-contained C-code makes it unique for deployment in resource-constrained or real-time environments.

Overview

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.

Use Cases

Best For

  • Solving nonlinear optimization problems with automatic differentiation
  • Generating efficient C-code for embedded optimization applications
  • Implementing model predictive control (MPC) algorithms
  • Research and development in robotics trajectory optimization
  • Integrating with high-performance solvers like IPOPT and SUNDIALS
  • Teaching and prototyping optimization methods in Python or MATLAB

Not Ideal For

  • Projects focused solely on convex optimization with user-friendly interfaces like CVXPY
  • Applications requiring rapid prototyping without code generation or compilation steps
  • Teams without prior experience in symbolic mathematics or numerical methods

Pros & Cons

Pros

Efficient Automatic Differentiation

Supports both forward and reverse modes on sparse computational graphs, enabling precise gradient calculations for complex optimization problems, as highlighted in the README.

Code Generation for Deployment

Generates self-contained C-code for embedded applications and high-performance computing, making it unique for deployment in resource-constrained environments.

Multi-language Flexibility

Accessible from C++, Python, and MATLAB/Octave, allowing seamless integration into diverse workflows and existing codebases, as noted in the features.

Robust Solver Integration

Interfaces with state-of-the-art solvers like IPOPT and SUNDIALS, providing reliable solutions for a wide range of optimization tasks.

Cons

Steep Learning Curve

Requires understanding of symbolic computation and optimization theory, which can be a barrier for newcomers without a strong mathematical background.

Setup and Compilation Overhead

Code generation and solver integration often involve compilation steps, adding complexity to development and deployment, as implied by the separate install instructions.

Limited General-purpose Use

Primarily focused on optimization problems, so it may not be suitable for broader numerical computing tasks outside its core domain, such as general data analysis or machine learning.

Frequently Asked Questions

Quick Stats

Stars2,258
Forks453
Contributors0
Open Issues711
Last commit20 days ago
CreatedSince 2012

Tags

#scientific-computing#mathematics#cpp-library#derivatives#python-library#academic-project#automatic-differentiation#matlab-toolbox#mathematical-optimization#symbolic-computation#sparse-matrices#optimization#parameter-estimation#code-generation

Built With

O
Octave
P
Python
M
MATLAB
C
C++

Links & Resources

Website

Included in

Robotic Tooling3.8k
Auto-fetched 6 hours ago

Related Projects

pinocchiopinocchio

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

Stars3,597
Forks560
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,577
Forks404
Last commit1 year ago
omplompl

The Open Motion Planning Library (OMPL)

Stars2,113
Forks702
Last commit3 days ago
path_plannerpath_planner

Hybrid A* Path Planner for the KTH Research Concept Vehicle

Stars1,904
Forks570
Last commit3 months 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