#16 · Primary category: Optimization & Heuristic Algorithms

ifopt

catkin cmake cpp eigen ipopt mathematical-programming nlp nonlinear-optimization optimization robotics ros snopt trajectory-optimization

An Eigen-based, light-weight C++ Interface to Nonlinear Programming Solvers (Ipopt, Snopt)

Project last updated:11/03/25

GitHub Stars

866

Forks

161

Contributors

18

License

BSD-3-Clause

Why we included this project

Hand-coding a nonlinear program directly against Ipopt or Snopt's C API means tracking variable indices yourself and assembling Jacobians from raw pointers, a common source of subtle bugs. ifopt puts a compact Eigen-based layer in front of those solvers: you define variables, costs, and constraints as separate classes, and the library builds the full problem and its derivative blocks from them. That organization pays off in robotics and trajectory optimization, where the same constraints get reused across many formulations and you do not want to redo index bookkeeping each time. The model description is solver-independent, so moving between Ipopt and Snopt is a backend swap rather than a rewrite. At roughly two thousand lines, it is small enough to read through and adapt, which matters for teams embedding native optimization into a larger C++ or ROS codebase.

Articles for this project

No articles for this project yet.

To suggest a topic or contribute an article, contact us.

Related projects in this category