No version for distro humble showing foxy. Known supported distros are highlighted in the buttons above.
Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

No version for distro jazzy showing foxy. Known supported distros are highlighted in the buttons above.
Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

No version for distro kilted showing foxy. Known supported distros are highlighted in the buttons above.
Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

No version for distro rolling showing foxy. Known supported distros are highlighted in the buttons above.
Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

No version for distro ardent showing foxy. Known supported distros are highlighted in the buttons above.
Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

No version for distro bouncy showing foxy. Known supported distros are highlighted in the buttons above.
Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

No version for distro crystal showing foxy. Known supported distros are highlighted in the buttons above.
Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

No version for distro eloquent showing foxy. Known supported distros are highlighted in the buttons above.
Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

No version for distro dashing showing foxy. Known supported distros are highlighted in the buttons above.
Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

No version for distro galactic showing foxy. Known supported distros are highlighted in the buttons above.
Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

No version for distro iron showing foxy. Known supported distros are highlighted in the buttons above.
Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
lunar

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
towr

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

No version for distro jade showing foxy. Known supported distros are highlighted in the buttons above.
Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
indigo

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
towr

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

No version for distro hydro showing foxy. Known supported distros are highlighted in the buttons above.
Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
foxy

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
kinetic

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
towr

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
melodic

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status Continuous Integration : 0 / 0
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
towr

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange

Package symbol

ifopt package from ifopt repo

ifopt

ROS Distro
noetic

Package Summary

Tags No category tags.
Version 2.1.4
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-adrl/ifopt.git
VCS Type git
VCS Version master
Last Updated 2025-03-21
Dev Status MAINTAINED
CI status Continuous Integration : 0 / 0
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

An

Additional Links

Maintainers

  • Alexander W. Winkler

Authors

  • Alexander W. Winkler

Build Status Documentation ROS integration CodeFactor License BSD-3-Clause DOI

A modern, light-weight, [Eigen]-based C++ interface to Nonlinear Programming solvers, such as [Ipopt] and [Snopt].

An example nonlinear optimization problem to solve is defined as:

</br>

FeaturesInstallExamplesContributePublicationsAuthors

Features

Combines the advantages of [Ipopt] / [Snopt] and [Eigen]:

[Ipopt] / [Snopt] [Eigen]
:heavy_check_mark: high-quality solvers for nonlinear optimization :heavy_check_mark: modern, intuitive formulations of vectors and matrices
:x: C++ API inconvenient and error-prone (raw pointers, index management, jacobian construction) :heavy_check_mark: highly efficient implementations
:x: linking and exporting difficult  
  • Solver independent formulation of variables and constraints with Eigen (highly efficient)
  • Automatic index management by formulation of variable- and constraint-sets
  • Integration: pure cmake find_package(ifopt) or [catkin]/[ROS] (optional)
  • light-weight (~2k lines of code) makes it easy to use and extend

</br>

An optimization problem consists of multiple independent variable- and constraint-sets. Each set represents a common concept, e.g. a set of variables might represents spline coefficients, another footstep positions. Similarly, a constraint-set groups similar constraints together. ifopt allows users to define each of these sets independently in separate classes and then builds the overall problem from these sets. (No more worrying adapting indices when adding or removing sets).

</br>

find x0, x1                              (variable-sets 0 & 1)
s.t
  x0_lower  <= x0 <= x0_upper            (bounds on variable-set x0 \in R^2)

  {x0,x1} = arg min c0(x0,x1)+c1(x0,x1)  (cost-terms 0 and 1)

  g0_lower < g0(x0,x1) < g0_upper        (constraint-set 0 \in R^2)
  g1_lower < g1(x0,x1) < g0_upper        (constraint-set 1 \in R^1)

</br>

Supplying derivative information greatly increases solution speed. ifopt allows to define the derivative of each cost-term/constraint-set with respect to each variable-set independently. This ensures that when the order of variable-sets changes in the overall vector, this derivative information is still valid. These “Jacobian blocks” must be supplied through ConstraintSet::FillJacobianBlock() and are then used to build the complete Jacobian for the cost and constraints.

</br>

A graphical overview as UML can be seen here.

Install

The easiest way to install is through the ROS binaries and you’re all set!

sudo apt-get install ros-<distro>-ifopt

Install dependencies

In case you don’t use ROS or the binaries don’t exist for your distro, you can easily build these packages from source. For this, install the required dependencies [Cmake], [Eigen] and [Ipopt] using

sudo apt-get install cmake libeigen3-dev coinor-libipopt-dev

If you want to link to a local installation of [Ipopt] or to [Snopt], see here.

Build with cmake

  • Install
  git clone https://github.com/ethz-adrl/ifopt.git && cd ifopt
  mkdir build && cd build
  cmake ..
  make
  sudo make install # copies files in this folder to /usr/local/*
  # sudo xargs rm < install_manifest.txt # in case you want to uninstall the above
  

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ifopt

2.1.4 (2025-01-17)

  • Fix cpack and add pipeline
  • Add missing cmake include to ifopt-config.cmake
  • Use system Eigen3 CMake Config and Eigen target when linking (#99)
  • Fix unused parameter error (#98)
  • Add .clang-format and .run-clang-format files
  • Apply Google Style
  • Use CMake version variable
  • Added CPack for debian binary packaging
  • Rethrow nonIpopt exceptions (#81)
  • Contributors: Konstantinos Chatzilygeroudis, Krzysztof Wojciechowski, Levi Armstrong, Michael Ripperger, brian soe

2.1.3 (2022-03-24)

  • Enable building of static libs
  • (#77) Implement Required Method
  • Fix CMake install() rules for Windows DLLs
  • Contributors: Josh Langsfeld, Konstantinos Chatzilygeroudis, Rafael Rojas

2.1.2 (2021-11-29)

  • Expose epsilon for cost gradient finite difference approximation
  • Contributors: Levi Armstrong

2.1.1 (2021-11-15)

  • replace static variable falsely shared between contraints and costs
  • Reduce calls to GetJacobian
  • Changes to support windows build (#65)
  • set default parameter or finite diff for backwards compatibility
  • add return-status getter also to SNOPT
  • calculate finite difference of cost-term for IPOPT if flag set. (#61)
  • add explanation setting jacobian sparsity pattern (#47) (#55)
  • Update README.md
  • Switch between catkin and ament based on ROS_VERSION (#52)
  • Add GetConstraints and GetCosts to Problem (#51)
  • Add GetJacobianOfCosts to Problem (#50)
  • Make FillJacobianBlock public in ConstraintSet (#49)

2.0.7 (2019-11-19)

  • Create function to get the time statistics and the return code from the optimization solver. (#40)
  • Contributors: viviansuzano

2.0.6 (2019-01-17)

  • Enable problems without constraints: Fix issue (#34 , #35)
  • Fix/segfaults (#33)
  • Contributors: Wolfgang Merkt, viviansuzano

2.0.5 (2018-07-30)

  • set default print level to 4 to show derivative test errors.
  • Improve print-out of cost terms (specifically print cost)
  • Improve docs (#27)
  • Implemented more efficient method for building constraint jacobian (#26)
  • Contributors: Alexander Winkler, fbiemueller

2.0.4 (2018-07-17)

  • generalize ipopt solver interface, so source never has to be touched.
  • Fix/simplify image path in doxygen.
  • Simplify and generalize testing procedure (#25)
  • have cmake fail if IPOPT version <3.11.9
  • Install binaries to /lib/ifopt, just as catkin does.
  • Update README.md to always use [make test]{.title-ref} for testing.
  • Improve doxygen (#22)
  • Contributors: Alexander Winkler

2.0.3 (2018-07-10)

  • Add codefactor integration and contributing guidelines
  • display indices more precisely in printout
  • remove rsl jekins, use ros build farm
  • remove warning from version number
  • Contributors: Alexander Winkler

2.0.2 (2018-07-02)

  • fully remove catkin dependency
  • increase cmake project version number manually
  • DRY in cmake list (reuse ${LIB_CORE})

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ifopt at Robotics Stack Exchange