{"id":13445587,"url":"https://github.com/ethz-adrl/control-toolbox","last_synced_at":"2025-05-15T18:07:07.310Z","repository":{"id":40633268,"uuid":"183515197","full_name":"ethz-adrl/control-toolbox","owner":"ethz-adrl","description":"The Control Toolbox - An Open-Source C++ Library for Robotics, Optimal and Model Predictive Control","archived":false,"fork":false,"pushed_at":"2022-11-09T23:17:15.000Z","size":14413,"stargazers_count":1566,"open_issues_count":63,"forks_count":328,"subscribers_count":45,"default_branch":"v3.0.2","last_synced_at":"2025-05-15T18:07:04.204Z","etag":null,"topics":["automatic-differentiation","control-systems","cpp","disturbance-observer","extended-kalman-filter","ilqg","ilqr","lqr-controller","model-predictive-control","multiple-shooting","optimal-control","riccati-solver","rigid-body-dynamics","robotics","trajectory-optimization"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethz-adrl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-25T21:55:23.000Z","updated_at":"2025-05-15T12:04:18.000Z","dependencies_parsed_at":"2022-07-30T16:08:46.940Z","dependency_job_id":null,"html_url":"https://github.com/ethz-adrl/control-toolbox","commit_stats":null,"previous_names":["ethz-adrl/ct"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-adrl%2Fcontrol-toolbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-adrl%2Fcontrol-toolbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-adrl%2Fcontrol-toolbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethz-adrl%2Fcontrol-toolbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethz-adrl","download_url":"https://codeload.github.com/ethz-adrl/control-toolbox/tar.gz/refs/heads/v3.0.2","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254394720,"owners_count":22063984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automatic-differentiation","control-systems","cpp","disturbance-observer","extended-kalman-filter","ilqg","ilqr","lqr-controller","model-predictive-control","multiple-shooting","optimal-control","riccati-solver","rigid-body-dynamics","robotics","trajectory-optimization"],"created_at":"2024-07-31T05:00:36.245Z","updated_at":"2025-05-15T18:07:07.236Z","avatar_url":"https://github.com/ethz-adrl.png","language":"C++","funding_links":[],"categories":["7. Control","Planning and Control","⚙️ Robot Control \u0026 Dynamics"],"sub_categories":["3.4 High Performance Inference","Vector Map"],"readme":"# Control Toolbox\n![GitHub top language](https://img.shields.io/github/languages/top/ethz-adrl/control-toolbox.svg?style=social)\n![GitHub](https://img.shields.io/github/license/ethz-adrl/control-toolbox.svg?style=social)\n\n```diff\n- Important note (July 2021): this library is currently only scarcely maintained,\n- it may take a while until we respond to bugs or feature requests.\n```\n\nThis is the Control Toolbox, an efficient C++ library for control, estimation, optimization and motion planning in robotics.\n\nLink to the wiki, [quickstart!](https://github.com/ethz-adrl/control-toolbox/wiki/Quickstart) \\\nFind the detailed documentation [here](https://ethz-adrl.github.io/ct/).\n\n\n## Overview\n\nThis is the ADRL Control Toolbox ('CT'), an open-source C++ library for efficient modelling, control, \nestimation, trajectory optimization and model predictive control. The CT is applicable to a broad class of dynamic systems, but features additional modelling tools specially designed for robotics. This page outlines its general concept, its major building blocks and highlights selected application examples.\n\nThe library contains several tools to design and evaluate controllers, model dynamical systems and solve optimal control problems.\nThe CT was designed with the following features in mind:\n\n - **Systems and dynamics**: \n\t- intuitive modelling of systems governed by ordinary differential or difference equations.\n\n - **Trajectory optimization, optimal control and (nonlinear) model predictive control**:\n    - intuitive modelling of cost functions and constraints\n    - common interfaces for optimal control solvers and nonlinear model predictive control\n    - currently supported algorithms:\n      - Classical Single Shooting\n      - iLQR / iLQG (iterative Linear Quadratic Optimal Control)\n      - Multiple-shooting iLQR\n      - Gauss-Newton-Multiple-Shooting (GNMS)\n      - Classical Direct Multiple Shooting (DMS)\n    - standardized interfaces for the solvers\n      - IPOPT (first and second order)\n      - SNOPT\n      - HPIPM\n      - custom Riccati-solver\n \n - **Performance**: \n \t- solve large scale optimal control problems in MPC fashion. \n  \n - **Robot Modelling, Rigid Body Kinematics and Dynamics**: \n    - straight-forward interface to the state-of the art rigid body dynamics modelling tool [RobCoGen][robcogen-url].\n\t- implementation of a basic nonlinear-programming inverse kinematics solver for fix-base robots.\n \n - **Automatic Differentiation**:\n    - first and second order automatic differentiation of arbitrary vector-valued functions including cost functions and constraints\n    - automatic differentiation and code generation of rigid body dynamics\n    - derivative code generation for maximum efficiency\n\n\n## Robot Application Examples\n\nThe Control Toolbox has been used for Hardware and Simulation control tasks on flying, walking and ground robots.\n\n\u003ca href=\"http://www.youtube.com/watch?feature=player_embedded\u0026v=Y7-1CBqs4x4\" target=\"_blank\"\u003e\u003cimg src=\"http://img.youtube.com/vi/Y7-1CBqs4x4/0.jpg\" \nalt=\"Control Toolbox example video\" width=\"360\" height=\"270\" border=\"10\" /\u003e\u003c/a\u003e\n\u003ca href=\"http://www.youtube.com/watch?feature=player_embedded\u0026v=vuCSKtP67E4\" target=\"_blank\"\u003e\u003cimg src=\"http://img.youtube.com/vi/vuCSKtP67E4/0.jpg\" \nalt=\"Control Toolbox example video\" width=\"360\" height=\"270\" border=\"10\" /\u003e\u003c/a\u003e\n\n\u003ca href=\"http://www.youtube.com/watch?feature=player_embedded\u0026v=rWmw-ERGyz4\" target=\"_blank\"\u003e\u003cimg src=\"http://img.youtube.com/vi/rWmw-ERGyz4/0.jpg\" \nalt=\"Control Toolbox example video\" width=\"360\" height=\"270\" border=\"10\" /\u003e\u003c/a\u003e\n\u003ca href=\"http://www.youtube.com/watch?feature=player_embedded\u0026v=rVu1L_tPCoM\" target=\"_blank\"\u003e\u003cimg src=\"http://img.youtube.com/vi/rVu1L_tPCoM/0.jpg\" \nalt=\"Control Toolbox example video\" width=\"360\" height=\"270\" border=\"10\" /\u003e\u003c/a\u003e\n\nSlightly more complex optimization examples, including gait optimization for a quadruped, are availabe in [ct_ros](https://github.com/ethz-adrl/ct_ros).\n\n\n## What is the CT?\n\nA common tasks for researchers and practitioners in both the control and the robotics communities \nis to model systems, implement equations of motion and design model-based controllers, estimators, \nplanning algorithms, etc.\nSooner or later, one is confronted with questions of efficient implementation, computing derivative \ninformation, formulating cost functions and constraints or running controllers in model-predictive \ncontrol fashion.\n\nThe Control Toolbox is specifically designed for these tasks. It is written entirely in C++ and has \na strong focus on highly efficient code that can be run online (in the loop) on robots or other \nactuated hardware. A major contribution of the CT is its implementations of optimal control \nalgorithms, spanning a range from simple LQR reference implementations to constrained model predictive \ncontrol. The CT supports Automatic Differentiation (Auto-Diff) and allows to generate derivative code \nfor arbitrary scalar and vector-valued functions. \nWe designed the toolbox with usability in mind, allowing users to apply advanced concepts such as \nnonlinear model predictive control (NMPC) or numerical optimal control easily and with minimal effort.\nWhile we provide an interface to a state-of-the art Auto-Diff compatible robot modelling software, all \nother modules are independent of the a particular modelling framework, allowing the code to be interfaced \nwith existing C/C++ code or libraries. \n\nThe CT has been successfully used in a variety of different projects, including a large number of \nhardware experiments, demonstrations and academic publications. \nExample hardware applications are online trajectory optimization with collision \navoidance \\cite giftthaler2017autodiff, trajectory optimization for Quadrupeds \\cite neunert:2017:ral \nand mobile manipulators \\cite giftthaler2017efficient as well as NMPC on ground robots \\cite neunert2017mpc \nand UAVs \\cite neunert16hexrotor. The project originated from research conducted at the Agile \\\u0026 Dexterous \nRobotics Lab at ETH Zurich, but is continuously extended to cover more fields of applications and algorithms.\n \n\n## Scope of the CT\n\n Software is one of the key building blocks for robotic systems and there is a great effort \n in creating software tools and libraries for robotics. \n However, when it comes to control and especially Numerical Optimal Control, there are not \n many open source tools available that are both easy to use for fast development as well as \n efficient enough for online usage. \n While there exist mature toolboxes for Numerical Optimal Control and Trajectory Optimization, \n they are highly specialized, standalone tools that due not provide sufficient flexibility \n for other applications. Here is where the CT steps in. The CT has been designed from ground \n up to provide the tools needed for fast development and evaluation of control methods while \n being optimized for efficiency allowing for online operation. While the emphasis lies on control, \n the tools provided can also be used for simulation, estimation or optimization applications.\n\n In contrast to other robotic software, CT is not a rigid integrated application but can be \n seen quite literal as a toolbox: It offers a variety of tools which can be used and combined \n to solve a task at hand. While ease-of-use has been a major criteria during the design and \n application examples are provided, using CT still requires programming and control knowledge. \n However, it frees the users from implementing standard methods that require in-depth experience \n with linear algebra or numerical methods. Furthermore, by using common definitions and types, \n a seamless integration between different components such as systems, controllers or integrators \n is provided, enabling fast prototyping.\n\n\n## Design and Implementation\n\nThe main focus of CT is efficiency, which is why it is fully implemented in C++. \nSince CT is designed as a toolbox rather than an integrated application, we tried to provide \nmaximum flexibility to the users. Therefore, it is not tied to a specific middleware such as \nROS and dependencies are kept at a minimum. The two essential dependencies for CT are\n\u003ca href=\"http://eigen.tuxfamily.org\" target=\"_blank\"\u003eEigen\u003c/a\u003e and \n\u003ca href=\"http://github.com/ethz-asl/kindr\" target=\"_blank\"\u003eKindr\u003c/a\u003e\n(which is based on Eigen). This Eigen dependency is intentional since Eigen\nis a defacto standard for linear algebra in C++, as it provides highly efficient implementations \nof standard matrix operations as well as more advanced linear algebra methods. \nKindr is a header only Kinematics library which builds on top of it and provides data types \nfor different rotation representations such as Quaternions, Euler angles or rotation matrices.\n\n\n## Structure and Modules of the CT\n\nThe Control Toolbox consists of three main modules. The Core (`ct_core`) module, the Optimal \nControl (`ct_optcon`) module and the Rigid Body Dynamics (`ct_rbd`) module. \nThere is a clear hierarchy between the modules. \nThat means, the modules depend on each other in this order, e.g. you can use the core module \nwithout the optcon or rbd module.\n - The Core (`ct_core`) module provides general type definitions and mathematical tools.\nFor example, it contains most data type definitions, definitions for systems and controllers, \nas well as basic functionality such as numerical integrators for differential equations. \n - The Optimal Control (`ct_optcon`) module builds on top of the Core module and adds \ninfrastructure for defining and solving Optimal Control Problems. It contains the functionality\nfor defining cost functions, constraints, solver backends and a general MPC wrapper.\n - The Rigid Body Dynamics (`ct_rbd`) module provides tools for modelling Rigid Body Dynamics \nsystems and interfaces with `ct_core` and `ct_optcon` data types. \n\nFor testing as well as examples, we also provide the models module (`ct_models`) which contains \nvarious robot models including a quadruped, a robotic arm, a normal quadrotor and a quadrotor \nwith slung load. \n\nThe four different main modules are detailed in the following.\n\n\n### ct_core (Core)\n\n - Definitions of fundamental types for **control** and simulation, such as dynamic systems \n (ct::core::System), states (ct::core::StateVector), controls (ct::core::Controller), or trajectories \n (ct::core::DiscreteTrajectoryBase).\n - **Numeric integration** (ct::core::Integrator) with various ODE solvers including fixed step \n (ct::core::IntegratorEuler, ct::core::IntegratorRK4) and variable step (ct::core::IntegratorRK5Variable, \n ct::core::ODE45) integrators, as well as symplectic (semi-implicit) integrators.\n - Numerical approximation of Trajectory **Sensitivities** (ct::core::Sensitivity , e.g. by forward-integrating \n variational differential equations)\n - Common **feedback controllers** (e.g. ct::core::PIDController)\n - Derivatives/Jacobians of general functions using **Numerical Differentiation** (ct::core::DerivativesNumDiff) \n or **Automatic-Differentiation** with code-generation (ct::core::DerivativesCppadCG) and just-in-time (JIT) \n compilation (ct::core::DerivativesCppadJIT)\n \n\n### ct_optcon (Optimal Control)\n\n - Definitions for **Optimal Control Problems** (ct::optcon::OptConProblem) and **Optimal Control Solvers** (ct::optcon::OptConSolver)\n - **CostFunction toolbox** allowing to construct cost functions from file and providing first-order and **second-order approximations**, see ct::optcon::CostFunction.\n - **Constraint toolbox** for formulating constraints of Optimal Control Problems, as well as automatically computing their Jacobians.\n - reference C++ implementations of the **Linear Quadratic Regulator**, infinite-horizon LQR and time-varying LQR (ct::optcon::LQR, ct::optcon::TVLQR)\n - **Riccati-solver** (ct::optcon::GNRiccatiSolver) for unconstrained linear-quadratic optimal control problems, interface to high-performance \n \u003ca href=\"https://github.com/giaf/hpipm\" target=\"_blank\"\u003e third-party Riccati-solvers\u003c/a\u003e for constrained linear-quadratic optimal control problems\n - **iterative non-linear Optimal Control** solvers, i.e. Gauss-Newton solvers such as iLQR (ct::optcon::iLQR) and \n Gauss-Newton Multiple Shooting(ct::optcon::GNMS), constrained direct multiple-shooting (ct::optcon::DmsSolver)\n - Non-Linear **Model Predictive Control** (ct::optcon::MPC)\n - Definitions for Nonlinear Programming Problems (**NLPs**, ct::optcon::Nlp) and interfaces to third-party **NLP Solvers** \n (ct::optcon::SnoptSolver and ct::optcon::IpoptSolver)\n  \n  \n### ct_rbd (Rigid Body Dynamics)\n\n - Standard models for Rigid Body Dynamics\n - Definitions for the state of a Rigid Body System expressed as general coordinates (ct::rbd::RBDState)\n - Routines for different flavors of **Forward** and **Inverse Dynamics** (ct::rbd::Dynamics)\n - Rigid body and end-effector **kinematics** (ct::rbd::Kinematics)\n - Operational Space Controllers\n - Basic soft **auto-differentiable contact model** for arbitrary frames (ct::rbd::EEContactModel)\n - **Actuator dynamics** (ct::rbd::ActuatorDynamics)\n - Backend uses [RobCoGen][robcogen-url], \n a highly efficient Rigid Body Dynamics library\n\n[robcogen-url]: https://robcogenteam.bitbucket.io/\n\n### ct_models\n\n - Various standard models for testing and evaluation including UAVs (ct::models::Quadrotor), ground robots, \n legged robots (ct::models::HyQ), robot arms (ct::models::HyA), inverted pendulums etc.\n - Means of creating linear approximation of these models\n \n\n## How to get started\n\nTo get started with the control toolbox, please build the repository documentation with doxygen and follow the \"Getting Started\" tutorial.\n\n\n## Support\n- contact the devs: control-toolbox-dev@googlegroups.com\n\n\n## Acknowledgements\n\n### Contributors\n - Markus Giftthaler, markusgft (at) gmail (dot) com\n - Michael Neunert\n - Markus Stäuble\n - Farbod Farshidian\n - Diego Pardo\n - Timothy Sandy\n - Jan Carius\n - Ruben Grandia\n - Hamza Merzic\n \n\n### Funding\nThis software has been developed at the \u003ca href=\"http://www.adrl.ethz.ch\" target=\"_blank\"\u003eAgile \u0026 Dexterous Robotics Lab\u003c/a\u003e \nat \u003ca href=\"http://www.ethz.ch/en\" target=\"_blank\"\u003eETH Zurich\u003c/a\u003e, Switzerland between 2014 and 2018.\nDuring that time, development has been made possible through financial support from the \u003ca href=\"http://www.snf.ch/en/\" target=\"_blank\"\u003eSwiss National Science Foundation (SNF)\u003c/a\u003e \nthrough a SNF Professorship award to Jonas Buchli and the National Competence Centers in Research (NCCR) \n\u003ca href=\"https://www.nccr-robotics.ch/\" target=\"_blank\"\u003eRobotics\u003c/a\u003e and \u003ca href=\"http://www.dfab.ch/en/\" target=\"_blank\"\u003eDigital Fabrication\u003c/a\u003e.\n\n\n## Licence Information\n\nThe Control Toolbox is released under the \n\u003ca href=\"https://choosealicense.com/licenses/bsd-2-clause/\" target=\"_blank\"\u003eBSD-2 clause license\u003c/a\u003e.\nPlease see LICENCE.txt and NOTICE.txt\n\n\n##  How to cite the CT\n\n    @article{adrlCT,\n      title={The control toolbox — An open-source C++ library for robotics, optimal and model predictive control},\n      author={Markus Giftthaler and Michael Neunert and Markus St{\\\"a}uble and Jonas Buchli},\n      journal={2018 IEEE International Conference on Simulation, Modeling, and Programming for Autonomous Robots (SIMPAR)},\n      year={2018},\n      pages={123-129}\n    }\n\n## Earlier Versions\n\nEarlier versions up to v2.3 are hosted on bitbucket, they can be found at https://bitbucket.org/adrlab/ct/wiki/Home\n\n\n## Related Publications\n\nThis toolbox has been used in, or has helped to realize the following academic publications:\n\n- Markus Giftthaler, Michael Neunert, Markus Stäuble and Jonas Buchli.\n“The Control Toolbox - An Open-Source C++ Library for Robotics, Optimal and Model Predictive Control”. \nIEEE Simpar 2018 (Best Student Paper Award).\n\u003ca href=\"https://arxiv.org/abs/1801.04290\" target=\"_blank\"\u003earXiv preprint\u003c/a\u003e\n\n- Markus Giftthaler, Michael Neunert, Markus Stäuble, Jonas Buchli and Moritz Diehl.\n“A Family of iterative Gauss-Newton Shooting Methods for Nonlinear Optimal Control”.\nIROS 2018. \n\u003ca href=\"https://arxiv.org/abs/1711.11006\" target=\"_blank\"\u003earXiv preprint\u003c/a\u003e\n\n- Jan Carius, René Ranftl, Vladlen Koltun and Marco Hutter. \n\"Trajectory Optimization with Implicit Hard Contacts.\" \nIEEE Robotics and Automation Letters 3, no. 4 (2018): 3316-3323.\n\n- Michael Neunert, Markus Stäuble, Markus Giftthaler, Dario Bellicoso, Jan Carius, Christian Gehring, \nMarco Hutter and Jonas Buchli. \n“Whole Body Model Predictive Control Through Contacts For Quadrupeds”.\nIEEE Robotics and Automation Letters, 2017.\n\u003ca href=\"https://arxiv.org/abs/1712.02889\" target=\"_blank\"\u003earXiv preprint\u003c/a\u003e\n\n- Markus Giftthaler and Jonas Buchli.\n“A Projection Approach to Equality Constrained Iterative Linear Quadratic Optimal Control”. \n2017 IEEE-RAS International Conference on Humanoid Robots, November 15-17, Birmingham, UK.\n\u003ca href=\"http://ieeexplore.ieee.org/document/8239538/\" target=\"_blank\"\u003eIEEE Xplore\u003c/a\u003e\n\n- Markus Giftthaler, Michael Neunert, Markus Stäuble, Marco Frigerio, Claudio Semini and Jonas Buchli. \n“Automatic Differentiation of Rigid Body Dynamics for Optimal Control and Estimation”, \nAdvanced Robotics, SIMPAR special issue. November 2017. \n\u003ca href=\"https://arxiv.org/abs/1709.03799\" target=\"_blank\"\u003earXiv preprint\u003c/a\u003e \n\n- Michael Neunert, Markus Giftthaler, Marco Frigerio, Claudio Semini and Jonas Buchli. \n“Fast Derivatives of Rigid Body Dynamics for Control, Optimization and Estimation”, \n2016 IEEE International Conference on Simulation, Modelling, and Programming for Autonomous Robots, \nSan Francisco. (Best Paper Award). \n\u003ca href=\"http://ieeexplore.ieee.org/document/7862380/\" target=\"_blank\"\u003eIEEE Xplore\u003c/a\u003e \n\n- Michael Neunert, Farbod Farshidian, Alexander W. Winkler, Jonas Buchli\n\"Trajectory Optimization Through Contacts and Automatic Gait Discovery for Quadrupeds\",\nIEEE Robotics and Automation Letters,\n\u003ca href=\"http://ieeexplore.ieee.org/document/7845678/\" target=\"_blank\"\u003eIEEE Xplore\u003c/a\u003e\n\n- Michael Neunert, Cédric de Crousaz, Fadri Furrer, Mina Kamel, Farbod Farshidian, Roland Siegwart, Jonas Buchli.\n\"Fast nonlinear model predictive control for unified trajectory optimization and tracking\",\n2016 IEEE International Conference on Robotics and Automation (ICRA),\n\u003ca href=\"http://ieeexplore.ieee.org/document/7487274/\" target=\"_blank\"\u003eIEEE Xplore\u003c/a\u003e \n\n- Markus Giftthaler, Farbod Farshidian, Timothy Sandy, Lukas Stadelmann and Jonas Buchli. \n“Efficient Kinematic Planning for Mobile Manipulators with Non-holonomic Constraints Using Optimal Control”, \nIEEE International Conference on Robotics and Automation, 2017, Singapore.\n\u003ca href=\"https://arxiv.org/abs/1701.08051\" target=\"_blank\"\u003earXiv preprint\u003c/a\u003e \n\n- Markus Giftthaler, Timothy Sandy, Kathrin Dörfler, Ian Brooks, Mark Buckingham, Gonzalo Rey, \nMatthias Kohler, Fabio Gramazio and Jonas Buchli. \n“Mobile Robotic Fabrication at 1:1 scale: the In situ Fabricator”. Construction Robotics, Springer Journal no. 41693\n\u003ca href=\"https://arxiv.org/abs/1701.03573\" target=\"_blank\"\u003earXiv preprint\u003c/a\u003e \n\n- Timothy Sandy, Markus Giftthaler, Kathrin Dörfler, Matthias Kohler and Jonas Buchli.\n“Autonomous Repositioning and Localization of an In situ Fabricator”, \nIEEE International Conference on Robotics and Automation 2016, Stockholm, Sweden.\n\u003ca href=\"http://ieeexplore.ieee.org/document/7487449/\" target=\"_blank\"\u003eIEEE Xplore\u003c/a\u003e \n\n- Michael Neunert, Farbod Farshidian, Jonas Buchli (2014). Adaptive Real-time Nonlinear Model Predictive Motion Control. \nIn IROS 2014 Workshop on Machine Learning in Planning and Control of Robot Motion\n\u003ca href=\"http://www.adrl.ethz.ch/archive/p_14_mlpc_mpc_rezero.pdf\" target=\"_blank\"\u003epreprint\u003c/a\u003e \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethz-adrl%2Fcontrol-toolbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethz-adrl%2Fcontrol-toolbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethz-adrl%2Fcontrol-toolbox/lists"}