|
| 1 | +<!DOCTYPE html> |
| 2 | +<html> |
| 3 | +<head> |
| 4 | + <meta charset="utf-8"> |
| 5 | + <meta name="description" |
| 6 | + content="Parallelized proximal constrained LQR"> |
| 7 | + <meta name="keywords" content="Numerical optimization, Numerical optimal control, LQR, Riccati"> |
| 8 | + <meta name="viewport" content="width=device-width, initial-scale=1"> |
| 9 | + <title>aligator</title> |
| 10 | + |
| 11 | + <link href="https://fonts.googleapis.com/css?family=Google+Sans|Noto+Sans|Castoro" |
| 12 | + rel="stylesheet"> |
| 13 | + |
| 14 | + <link rel="stylesheet" href="./static/css/bulma.min.css"> |
| 15 | + <link rel="stylesheet" href="./static/css/bulma-carousel.min.css"> |
| 16 | + <link rel="stylesheet" href="./static/css/bulma-slider.min.css"> |
| 17 | + <link rel="stylesheet" href="./static/css/fontawesome.all.min.css"> |
| 18 | + <link rel="stylesheet" |
| 19 | + href="https://cdn.jsdelivr.net/gh/jpswalsh/academicons@1/css/academicons.min.css"> |
| 20 | + <link rel="stylesheet" href="./static/css/index.css"> |
| 21 | + <link rel="icon" href="./static/images/favicon.svg"> |
| 22 | + |
| 23 | + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> |
| 24 | + <script defer src="./static/js/fontawesome.all.min.js"></script> |
| 25 | + <script src="./static/js/bulma-carousel.min.js"></script> |
| 26 | + <script src="./static/js/bulma-slider.min.js"></script> |
| 27 | + <script src="./static/js/index.js"></script> |
| 28 | + <link rel=" stylesheet" href=" https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css" integrity=" sha384-wcIxkf4k558AjM3Yz3BBFQUbk/zgIYC2R0QpeeYb+TwlBVMrlgLqwRjRtGZiK7ww" crossorigin=" anonymous" > |
| 29 | + <script defer src=" https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.js" integrity=" sha384-hIoBPJpTUs74ddyc4bFZSM1TVlQDA60VBbJS0oA934VSz82sBx1X7kSx2ATBDIyd" crossorigin=" anonymous" ></script> |
| 30 | + <script defer src=" https://cdn.jsdelivr.net/npm/[email protected]/dist/contrib/auto-render.min.js" integrity=" sha384-43gviWU0YVjaDtb/GhzOouOXtZMP/7XUzwPTstBeZFe/+rCMvRwr4yROQP43s0Xk" crossorigin=" anonymous" onload=" renderMathInElement(document.body);" ></script> |
| 31 | +</head> |
| 32 | +<body> |
| 33 | + |
| 34 | +<nav class="navbar" role="navigation" aria-label="main navigation"> |
| 35 | + <div class="navbar-brand"> |
| 36 | + <a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false"> |
| 37 | + <span aria-hidden="true"></span> |
| 38 | + <span aria-hidden="true"></span> |
| 39 | + <span aria-hidden="true"></span> |
| 40 | + </a> |
| 41 | + </div> |
| 42 | + <div class="navbar-menu"> |
| 43 | + <div class="navbar-start" style="flex-grow: 1; justify-content: center;"> |
| 44 | + <a class="navbar-item" href="https://simple-robotics.github.io"> |
| 45 | + <span class="icon"> |
| 46 | + <i class="fas fa-home"></i> |
| 47 | + </span> |
| 48 | + </a> |
| 49 | + |
| 50 | + <div class="navbar-item has-dropdown is-hoverable"> |
| 51 | + <a class="navbar-link"> |
| 52 | + More Research |
| 53 | + </a> |
| 54 | + <div class="navbar-dropdown"> |
| 55 | + <a class="navbar-item" href="https://ieeexplore.ieee.org/document/9981586"> |
| 56 | + Constrained DDP: a primal-dual augmented Lagrangian approach |
| 57 | + </a> |
| 58 | + <a class="navbar-item" href="https://ieeexplore.ieee.org/document/9811647"> |
| 59 | + Implicit differential dynamic programming |
| 60 | + </a> |
| 61 | + <a class="navbar-item" href="https://ieeexplore.ieee.org/document/10521997/"> |
| 62 | + Condensed Semi-Implicit Dynamics for Trajectory Optimization in Soft Robotics |
| 63 | + </a> |
| 64 | + </div> |
| 65 | + </div> |
| 66 | + </div> |
| 67 | + |
| 68 | + </div> |
| 69 | +</nav> |
| 70 | + |
| 71 | + |
| 72 | +<section class="hero"> |
| 73 | + <div class="hero-body"> |
| 74 | + <div class="container is-max-desktop"> |
| 75 | + <div class="columns is-centered"> |
| 76 | + <div class="column has-text-centered"> |
| 77 | + <h1 class="title is-1 publication-title">PROXDDP: Proximal Constrained Trajectory Optimization</h1> |
| 78 | + <h2 class="subtitle is-5 is-italic">Published in IEEE Transactions on Robotics, Volume 41, 2025</h2> |
| 79 | + <div class="is-size-5 publication-authors"> |
| 80 | + <span class="author-block"> |
| 81 | + <a href="https://manifoldfr.github.io">Wilson Jallet</a><sup>1,2</sup>, |
| 82 | + </span> |
| 83 | + <span class="author-block"> |
| 84 | + <a href="https://github.com/edantec">Antoine Bambade</a><sup>1</sup>, |
| 85 | + </span> |
| 86 | + <span class="author-block"> |
| 87 | + <a href="https://github.com/etiennear">Etienne Arlaud</a><sup>1</sup>, |
| 88 | + </span> |
| 89 | + <span class="author-block"> |
| 90 | + <a href="https://github.com/sarah-quinones">Sarah El-Kazdadi</a><sup>1</sup>, |
| 91 | + </span> |
| 92 | + <span class="author-block"> |
| 93 | + <a href="https://gepettoweb.laas.fr/index.php/Members/NicolasMansard">Nicolas Mansard</a><sup>2</sup>, |
| 94 | + </span> |
| 95 | + <span class="author-block"> |
| 96 | + <a href="https://jcarpent.github.io">Justin Carpentier</a><sup>1</sup>, |
| 97 | + </span> |
| 98 | + </div> |
| 99 | + |
| 100 | + <div class="is-size-5 publication-authors"> |
| 101 | + <span class="author-block"> |
| 102 | + <sup>1</sup>Willow team, INRIA and Département d'Informatique de l'École normale supérieure, Paris, France<br> |
| 103 | + <sup>2</sup>Gepetto team, LAAS-CNRS, 7 av. du colonel Roche, 31400 Toulouse, France |
| 104 | + </span> |
| 105 | + </div> |
| 106 | + |
| 107 | + <div class="column has-text-centered"> |
| 108 | + <div class="publication-links"> |
| 109 | + <!-- PDF Link. --> |
| 110 | + <span class="link-block"> |
| 111 | + <a href="https://ieeexplore.ieee.org/abstract/document/10938351" |
| 112 | + class="external-link button is-normal is-rounded is-dark"> |
| 113 | + <span class="icon"> |
| 114 | + <i class="fas fa-book"></i> |
| 115 | + </span> |
| 116 | + <span>IEEEXplore</span> |
| 117 | + </a> |
| 118 | + </span> |
| 119 | + <span class="link-block"> |
| 120 | + <a href="https://inria.hal.science/hal-04332348" |
| 121 | + class="external-link button is-normal is-rounded is-dark"> |
| 122 | + <span class="icon"> |
| 123 | + <i class="fas fa-globe-europe"></i> |
| 124 | + </span> |
| 125 | + <span>HAL</span> |
| 126 | + </a> |
| 127 | + </span> |
| 128 | + <!-- Video Link. --> |
| 129 | + <!-- <span class="link-block"> |
| 130 | + <a href="https://youtu.be/KONsHN7nBnU" |
| 131 | + class="external-link button is-normal is-rounded is-dark"> |
| 132 | + <span class="icon"> |
| 133 | + <i class="fab fa-youtube"></i> |
| 134 | + </span> |
| 135 | + <span>Video</span> |
| 136 | + </a> |
| 137 | + </span> --> |
| 138 | + <!-- Code Link. --> |
| 139 | + <span class="link-block"> |
| 140 | + <a href="https://github.com/Simple-Robotics/aligator" |
| 141 | + class="external-link button is-normal is-rounded is-dark"> |
| 142 | + <span class="icon"> |
| 143 | + <i class="fab fa-github"></i> |
| 144 | + </span> |
| 145 | + <span>Repository for aligator</span> |
| 146 | + </a> |
| 147 | + </span> |
| 148 | + </div> |
| 149 | + |
| 150 | + </div> |
| 151 | + </div> |
| 152 | + </div> |
| 153 | + </div> |
| 154 | + </div> |
| 155 | +</section> |
| 156 | + |
| 157 | +<section class="section"> |
| 158 | + <div class="container is-max-desktop"> |
| 159 | + <div class="is-centered publication-banner"> |
| 160 | + <img src="./static/images/quad_slalom.png" alt="slaloming quadcopter"> |
| 161 | + </div> |
| 162 | + <!-- Paper video. --> |
| 163 | + <!-- <div class="columns is-centered has-text-centered"> |
| 164 | + <div class="column is-four-fifths"> |
| 165 | + <div class="publication-video"> |
| 166 | + <iframe src="https://www.youtube.com/embed/KONsHN7nBnU" |
| 167 | + frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe> |
| 168 | + </div> |
| 169 | + </div> |
| 170 | + </div> --> |
| 171 | + <!--/ Paper video. --> |
| 172 | + |
| 173 | + <!-- Abstract. --> |
| 174 | + <div class="columns is-centered has-text-centered"> |
| 175 | + <div class="column is-four-fifths"> |
| 176 | + <h2 class="title is-3">Abstract</h2> |
| 177 | + <div class="content has-text-justified"> |
| 178 | + <p>Trajectory optimization has been a popular choice for motion generation and control in robotics for at least a decade. Several numerical approaches have exhibited the required speed to enable online computation of trajectories for real-time of various systems, including complex robots. Many of these said are based on the differential dynamic programming (DDP) algorithm—initially designed for unconstrained trajectory optimization problems— and its variants, which are relatively easy to implement and provide good runtime performance.</p> |
| 179 | + <p>However, several problems in robot control call for using constrained formulations (e.g., torque limits, obstacle avoidance), from which several difficulties arise when trying to adapt DDP-type methods: numerical stability, computational efficiency, and constraint satisfaction. In this article, we leverage proximal methods for constrained optimization and introduce a DDP-type method for fast, constrained trajectory optimization suited for model-predictive control (MPC) applications with easy warm-starting.</p> |
| 180 | + <p>Compared to earlier solvers, our approach effectively manages hard constraints without warm-start limitations and exhibits good convergence behavior. We provide a complete implementation as part of an open-source and flexible C++ trajectory optimization library called ALIGATOR. These algorithmic contributions are validated through several trajectory planning scenarios from the robotics literature and the real-time whole-body MPC of a quadruped robot.</p> |
| 181 | + </div> |
| 182 | + </div> |
| 183 | + </div> |
| 184 | + <!--/ Abstract. --> |
| 185 | + |
| 186 | + <!-- Results. --> |
| 187 | + <h2 class="title is-3">Results</h2> |
| 188 | + |
| 189 | + <div class="has-text-justified"> |
| 190 | + <h3 class="title is-4">Benchmarks</h3> |
| 191 | + <p> |
| 192 | + An additional contribution of our journal paper is the inclusion of benchmarks against two other numerical solvers: IPOPT, which is a generic NLP solver often used in the OC community, and ALTRO, a tailored constrained solver. |
| 193 | + </p> |
| 194 | + <figure class="content has-text-centered"> |
| 195 | + <div class="columns"> |
| 196 | + <img class="column is-size-2" src="./static/images/ur5_reach_iterations.svg" alt="UR5 reach, iterations"> |
| 197 | + <img class="column is-size-2" src="./static/images/ur5_reach_perfprofile_time.svg" alt="UR5 reach, perf profile"> |
| 198 | + </div> |
| 199 | + <figcaption class="has-text-weight-semibold">UR5 reaching task: iterations and performance profile</figcaption> |
| 200 | + </figure> |
| 201 | + <figure class="content has-text-centered"> |
| 202 | + <div class="columns"> |
| 203 | + <img class="column" src="./static/images/ur10_ballistic_iterations.svg" alt="UR10 ballistic, iterations"> |
| 204 | + <img class="column" src="./static/images/ur10_ballistic_perfprofile_time.svg" alt="UR10 ballistic, perf profile"> |
| 205 | + </div> |
| 206 | + <figcaption class="has-text-weight-semibold">UR10 ballistic task: iterations and performance profile</figcaption> |
| 207 | + </figure> |
| 208 | + <p> |
| 209 | + More details can be found in Section VIII of the paper. |
| 210 | + </p> |
| 211 | + </div> |
| 212 | + |
| 213 | + |
| 214 | + <!--/ Results. --> |
| 215 | + </div> |
| 216 | +</section> |
| 217 | + |
| 218 | + |
| 219 | +<section class="section"> |
| 220 | + <div class="container is-max-desktop"> |
| 221 | + |
| 222 | + <!-- Concurrent Work. --> |
| 223 | + <div class="columns is-centered"> |
| 224 | + <div class="column is-full-width"> |
| 225 | + <h2 class="title is-3">Related Links</h2> |
| 226 | + |
| 227 | + <div class="content has-text-justified"> |
| 228 | + This work heavily relies on the |
| 229 | + <a href="https://github.com/Simple-Robotics/aligator">aligator</a> |
| 230 | + and |
| 231 | + <a href="https://github.com/stack-of-tasks/pinocchio">Pinocchio</a> |
| 232 | + libraries, as well as the |
| 233 | + <a href="https://github.com/inria-paris-robotics-lab/quadruped-reactive-walking">quadruped-reactive-walking</a> framework for whole-body NMPC on Solo. |
| 234 | + </div> |
| 235 | + </div> |
| 236 | + </div> |
| 237 | + <!--/ Concurrent Work. --> |
| 238 | + |
| 239 | + </div> |
| 240 | +</section> |
| 241 | + |
| 242 | + |
| 243 | +<section class="section" id="BibTeX"> |
| 244 | + <div class="container is-max-desktop content"> |
| 245 | + <h2 class="title">BibTeX</h2> |
| 246 | + <pre><code>@article{jalletPROXDDPProximalConstrained2025, |
| 247 | + title = {PROXDDP: Proximal Constrained Trajectory Optimization}, |
| 248 | + shorttitle = {PROXDDP}, |
| 249 | + author = {Jallet, Wilson and Bambade, Antoine and Arlaud, Etienne and {El-Kazdadi}, Sarah and Mansard, Nicolas and Carpentier, Justin}, |
| 250 | + year = {2025}, |
| 251 | + journal = {IEEE Transactions on Robotics}, |
| 252 | + pages = {1--20}, |
| 253 | + issn = {1941-0468}, |
| 254 | + doi = {10.1109/TRO.2025.3554437}, |
| 255 | + urldate = {2025-04-04}, |
| 256 | + keywords = {Convergence,Heuristic algorithms,Legged Robots,Libraries,Linear systems,Minimization,Model-Predictive Control,Newton method,Optimization,Optimization and Optimal Control,Predictive control,Robots,Trajectory optimization} |
| 257 | +}</code></pre> |
| 258 | + </div> |
| 259 | +</section> |
| 260 | + |
| 261 | + |
| 262 | +<footer class="footer"> |
| 263 | + <div class="container"> |
| 264 | + <div class="content has-text-centered"> |
| 265 | + <a class="icon-link" |
| 266 | + href="./static/paper/rssparallelclqr2024.pdf"> |
| 267 | + <i class="fas fa-file-pdf"></i> |
| 268 | + </a> |
| 269 | + <a class="icon-link" href="https://github.com/Simple-Robotics" class="external-link" disabled> |
| 270 | + <i class="fab fa-github"></i> |
| 271 | + </a> |
| 272 | + </div> |
| 273 | + <div class="columns is-centered"> |
| 274 | + <div class="column is-8"> |
| 275 | + <div class="content"> |
| 276 | + <p> |
| 277 | + This website is licensed under a <a rel="license" |
| 278 | + href="http://creativecommons.org/licenses/by-sa/4.0/">Creative |
| 279 | + Commons Attribution-ShareAlike 4.0 International License</a>. |
| 280 | + </p> |
| 281 | + <p> |
| 282 | + We thank <a |
| 283 | + href="https://github.com/nerfies/nerfies.github.io">Nerfies</a> for creating the template of this webpage. |
| 284 | + You are free to borrow the <a |
| 285 | + href="https://github.com/simple-robotics.github.io/publications/simple-contact-solver">source code</a>, |
| 286 | + we just ask that you link back to the <a |
| 287 | + href="https://github.com/nerfies/nerfies.github.io">Nerfies</a> page in the footer. |
| 288 | + </p> |
| 289 | + </div> |
| 290 | + </div> |
| 291 | + </div> |
| 292 | + </div> |
| 293 | +</footer> |
| 294 | + |
| 295 | +</body> |
| 296 | +</html> |
0 commit comments