.. index:: pair: page; Introduction
Introduction
============
**OCS2** is a C++ toolbox tailored for **O**\ ptimal **C**\ ontrol for
**S**\ witched **S**\ ystems (OCS2). The toolbox provides an efficient
implementation of the following algorithms:
* **SLQ**\: Continuous-time domain constrained DDP
* **iLQR**\: Discrete-time domain constrained DDP
* **SQP**\: Multiple-shooting algorithm based on `HPIPM `__
* **IPM**\: Multiple-shooting algorithm based on nonlinear interior point method
* **SLP**\: Sequential Linear Programming based on `PIPG `__
OCS2 handles general path constraints through Augmented Lagrangian or
relaxed barrier methods. To facilitate the application of OCS2 in robotic
tasks, it provides the user with additional tools to set up the system
dynamics (such as kinematic or dynamic models) and cost/constraints
(such as self-collision avoidance and end-effector tracking) from a
URDF model. The library also provides an automatic differentiation
tool to calculate derivatives of the system dynamics, constraints, and
cost. To facilitate its deployment on robotic platforms, the OCS2
provides tools for ROS interfaces. The toolbox’s efficient and
numerically stable implementations in conjunction with its user-friendly
interface have paved the way for employing it on numerous robotic
applications with limited onboard computation power.
|GitHub| Source code on GitHub: `leggedrobotics/ocs2 `_
.. |GitHub| image:: ../tools/sphinx/_static/img/GitHub-Mark-120px-plus.png
:scale: 25
:alt: GitHub logo cannot be displayed!
:target: _static/img/GitHub-Mark-120px-plus.png
:class: no-scaled-link