A symbolic framework for numeric optimization with automatic differentiation and code generation capabilities.
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.
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.
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.
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.
Supports both forward and reverse modes on sparse computational graphs, enabling precise gradient calculations for complex optimization problems, as highlighted in the README.
Generates self-contained C-code for embedded applications and high-performance computing, making it unique for deployment in resource-constrained environments.
Accessible from C++, Python, and MATLAB/Octave, allowing seamless integration into diverse workflows and existing codebases, as noted in the features.
Interfaces with state-of-the-art solvers like IPOPT and SUNDIALS, providing reliable solutions for a wide range of optimization tasks.
Requires understanding of symbolic computation and optimization theory, which can be a barrier for newcomers without a strong mathematical background.
Code generation and solver integration often involve compilation steps, adding complexity to development and deployment, as implied by the separate install instructions.
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.
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
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.
The Open Motion Planning Library (OMPL)
Hybrid A* Path Planner for the KTH Research Concept Vehicle
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.