|
| 1 | +<!DOCTYPE html> |
| 2 | +<html> |
| 3 | +<head> |
| 4 | + <meta charset="utf-8"> |
| 5 | + <meta name="description" |
| 6 | + content="Constrained Articulated Body Algorithms for Closed-Loop Mechanisms"> |
| 7 | + <meta name="keywords" content="Constrained Dynamics, Rigid Body Dynamics Algorithms, Physics Simulation"> |
| 8 | + <meta name="viewport" content="width=device-width, initial-scale=1"> |
| 9 | + <title>Constrained Articulated Body Algorithms for Closed-Loop Mechanisms</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 | +</head> |
| 29 | +<body> |
| 30 | + |
| 31 | +<nav class="navbar" role="navigation" aria-label="main navigation"> |
| 32 | + <div class="navbar-brand"> |
| 33 | + <a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false"> |
| 34 | + <span aria-hidden="true"></span> |
| 35 | + <span aria-hidden="true"></span> |
| 36 | + <span aria-hidden="true"></span> |
| 37 | + </a> |
| 38 | + </div> |
| 39 | + <div class="navbar-menu"> |
| 40 | + <div class="navbar-start" style="flex-grow: 1; justify-content: center;"> |
| 41 | + <a class="navbar-item" href="https://simple-robotics.github.io"> |
| 42 | + <span class="icon"> |
| 43 | + <i class="fas fa-home"></i> |
| 44 | + </span> |
| 45 | + </a> |
| 46 | + |
| 47 | + <!-- <div class="navbar-item has-dropdown is-hoverable"> |
| 48 | + <a class="navbar-link"> |
| 49 | + More Research |
| 50 | + </a> |
| 51 | + <div class="navbar-dropdown"> |
| 52 | + <a class="navbar-item" href="https://arxiv.org/abs/2304.06372"> |
| 53 | + Constrained Dynamics |
| 54 | + </a> |
| 55 | + <a class="navbar-item" href="https://quentinll.github.io/projects/diffsim/"> |
| 56 | + Differentiable Simulation |
| 57 | + </a> |
| 58 | + <a class="navbar-item" href="https://ieeexplore.ieee.org/document/10494919"> |
| 59 | + GJK++: accelerated collision detection |
| 60 | + </a> |
| 61 | + <a class="navbar-item" href="https://lmontaut.github.io/diffcol_rs.github.io/"> |
| 62 | + Differentiable Collisions Detection |
| 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">Constrained Articulated Body Algorithms for Closed-Loop Mechanisms</h1> |
| 78 | + <div class="is-size-5 publication-authors"> |
| 79 | + <span class="author-block"> |
| 80 | + <a href="https://www.ajaysathya.com">Ajay Suresha Sathya</a><sup></sup>,</span> |
| 81 | + <span class="author-block"> |
| 82 | + <a href="https://jcarpent.github.io">Justin Carpentier</a><sup></sup>,</span> |
| 83 | + </div> |
| 84 | + |
| 85 | + <!-- <div class="is-size-5 publication-authors"> |
| 86 | + <span class="author-block"><sup>*</sup>Equal contribution. Authors are listed in alphabetical order.</span> |
| 87 | + </div> --> |
| 88 | + |
| 89 | + <div class="is-size-5 publication-authors"> |
| 90 | + <span class="author-block">All authors are with INRIA Willow.</span> |
| 91 | + </div> |
| 92 | + |
| 93 | + <div class="column has-text-centered"> |
| 94 | + <div class="publication-links"> |
| 95 | + <!-- PDF Link. --> |
| 96 | + <span class="link-block"> |
| 97 | + <a href="./static/paper/LCABA.pdf" |
| 98 | + class="external-link button is-normal is-rounded is-dark"> |
| 99 | + <span class="icon"> |
| 100 | + <i class="fas fa-file-pdf"></i> |
| 101 | + </span> |
| 102 | + <span>Paper</span> |
| 103 | + </a> |
| 104 | + </span> |
| 105 | + <span class="link-block"> |
| 106 | + <a href="https://hal.science/hal-04895583/" |
| 107 | + class="external-link button is-normal is-rounded is-dark"> |
| 108 | + <span class="icon"> |
| 109 | + <i class="fas fa-globe-europe"></i> |
| 110 | + </span> |
| 111 | + <span>HAL</span> |
| 112 | + </a> |
| 113 | + </span> |
| 114 | + <!-- <span class="link-block"> |
| 115 | + <a href="https://ieeexplore.ieee.org/document/10758251/" |
| 116 | + class="external-link button is-normal is-rounded is-dark"> |
| 117 | + <span class="icon"> |
| 118 | + <i class="fas fa-globe-europe"></i> |
| 119 | + </span> |
| 120 | + <span>IEEE T-RO</span> |
| 121 | + </a> |
| 122 | + </span> --> |
| 123 | + <!-- <span class="link-block"> |
| 124 | + <a href="https://arxiv.org/abs/2405.17020" |
| 125 | + class="external-link button is-normal is-rounded is-dark"> |
| 126 | + <span class="icon"> |
| 127 | + <i class="ai ai-arxiv"></i> |
| 128 | + </span> |
| 129 | + <span>arXiv</span> |
| 130 | + </a> |
| 131 | + </span> --> |
| 132 | + <!-- Video Link. |
| 133 | + <span class="link-block"> |
| 134 | + <a href="https://youtu.be/i_qg9cTx0NY?si=NGtx1tiYrIGtHXSK" |
| 135 | + class="external-link button is-normal is-rounded is-dark"> |
| 136 | + <span class="icon"> |
| 137 | + <i class="fab fa-youtube"></i> |
| 138 | + </span> |
| 139 | + <span>Video</span> |
| 140 | + </a> |
| 141 | + </span> --> |
| 142 | + <!-- Code Link. --> |
| 143 | + <!-- <span class="link-block"> |
| 144 | + <a href="https://github.com/stack-of-tasks/pinocchio/blob/d091266a94b5e2357862548ecfe0836e230a2c75/include/pinocchio/algorithm/pv.hxx" |
| 145 | + class="external-link button is-normal is-rounded is-dark"> |
| 146 | + <span class="icon"> |
| 147 | + <i class="fab fa-github"></i> |
| 148 | + </span> |
| 149 | + <span>Code</span> |
| 150 | + </a> |
| 151 | + </span> |
| 152 | + </div> --> |
| 153 | + |
| 154 | + </div> |
| 155 | + </div> |
| 156 | + </div> |
| 157 | + </div> |
| 158 | + </div> |
| 159 | +</section> |
| 160 | + |
| 161 | +<section class="section"> |
| 162 | + <!-- <div class="container is-max-desktop"> |
| 163 | +
|
| 164 | + <div class="columns is-centered has-text-centered"> |
| 165 | + <div class="column is-four-fifths"> |
| 166 | + <div class="publication-video"> |
| 167 | + <iframe src="https://www.youtube.com/embed/i_qg9cTx0NY" |
| 168 | + frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe> |
| 169 | + </div> |
| 170 | + </div> |
| 171 | + </div> --> |
| 172 | + <!--/ Paper video. --> |
| 173 | + |
| 174 | + <!-- Abstract. --> |
| 175 | + <div class="columns is-centered has-text-centered"> |
| 176 | + <div class="column is-four-fifths"> |
| 177 | + <h2 class="title is-3">Abstract</h2> |
| 178 | + <div class="content has-text-justified"> |
| 179 | + <p> |
| 180 | + Efficient rigid-body dynamics algorithms are instrumental in enabling high-frequency dynamics evaluation for resource-intensive applications (e.g., model predictive control, large-scale simulation, reinforcement learning), potentially on resource-constrained hardware. Existing recursive algorithms with low computational complexity are mostly restricted to kinematic trees with external contact constraints or are sensitive to singular cases (e.g., linearly dependent constraints and kinematic singularities), severely impacting their practical usage in existing simulators. This article introduces two original low-complexity recursive algorithms, loop-constrained articulated body algorithm (LCABA) and proxBBO, based on proximal dynamics formulation for forward simulation of mechanisms with loops. These algorithms are derived from first principles using non-serial dynamic programming, depict linear complexity in practical scenarios, and are numerically robust to singular cases. They extend the existing constrained articulated body algorithm (constrainedABA) to handle internal loops and the pioneering BBO algorithm from the 1980s to singular cases. Both algorithms have been implemented by leveraging the open-source Pinocchio library, benchmarked in detail, and depict state-of-the-art performance for various robot topologies, including over 6x speed-ups compared to existing non-recursive algorithms for high degree-of-freedom systems with internal loops such as recent humanoid robots. |
| 181 | + </p> |
| 182 | + </div> |
| 183 | + </div> |
| 184 | + </div> |
| 185 | + <!--/ Abstract. --> |
| 186 | + <div class="columns is-centered has-text-centered"> |
| 187 | + <div class="column is-max-desktop"> |
| 188 | + <h2 class="title is-3">Overview</h2> |
| 189 | + <div class="container is-max-desktop"> |
| 190 | + |
| 191 | + <div class="columns is-centered"> |
| 192 | + |
| 193 | + <div class="column"> |
| 194 | + <div class="content"> |
| 195 | + <image src="./static/images/closed_loop_examples.png" alt="Closed loop mechanism examples." style="width:100%"></image> |
| 196 | + </div> |
| 197 | + </div> |
| 198 | + |
| 199 | + </div> |
| 200 | + </div> |
| 201 | + </div> |
| 202 | + </div> |
| 203 | + <!--/ Benchmarks. --> |
| 204 | + </div> |
| 205 | +</section> |
| 206 | + <!-- Benchmarks. --> |
| 207 | + <div class="columns is-centered has-text-centered"> |
| 208 | + <div class="column is-max-desktop"> |
| 209 | + <h2 class="title is-3">Selected Benchmark</h2> |
| 210 | + <div class="container is-max-desktop"> |
| 211 | + |
| 212 | + <div class="columns is-centered"> |
| 213 | + |
| 214 | + <div class="column"> |
| 215 | + <div class="content"> |
| 216 | + <image src="./static/images/tab_timings_turbo.png" alt="Computational timings of different algorithms." style="width:100%"></image> |
| 217 | + </div> |
| 218 | + </div> |
| 219 | + |
| 220 | + <!-- <div class="column"> |
| 221 | + <div class="content"> |
| 222 | + <image src="./static/images/humanoid.png" alt="Computational time for MuJoCo humanoid." style="width:100%"> |
| 223 | + </div> |
| 224 | + </div> --> |
| 225 | + |
| 226 | + <!-- <div class="column"> |
| 227 | + <div class="content"> |
| 228 | + <image src="./static/images/operation_count_talos.png" alt="Operation count Talos." style="width:100%"> |
| 229 | + </div> |
| 230 | + </div> --> |
| 231 | + </div> |
| 232 | + </div> |
| 233 | + </div> |
| 234 | + </div> |
| 235 | + <!--/ Benchmarks. --> |
| 236 | + </div> |
| 237 | +</section> |
| 238 | + |
| 239 | + |
| 240 | +<section class="section"> |
| 241 | + <div class="container is-max-desktop"> |
| 242 | + |
| 243 | + <!-- Concurrent Work. --> |
| 244 | + <div class="columns is-centered"> |
| 245 | + <div class="column is-full-width"> |
| 246 | + <h2 class="title is-3">Related Links</h2> |
| 247 | + |
| 248 | + <div class="content has-text-justified"> |
| 249 | + This work heavily relies on the <a |
| 250 | + href="https://github.com/stack-of-tasks/pinocchio">Pinocchio</a> library. |
| 251 | + </div> |
| 252 | + </div> |
| 253 | + </div> |
| 254 | + <!--/ Concurrent Work. --> |
| 255 | + |
| 256 | + </div> |
| 257 | +</section> |
| 258 | + |
| 259 | + |
| 260 | +<section class="section" id="BibTeX"> |
| 261 | + <div class="container is-max-desktop content"> |
| 262 | + <h2 class="title">BibTeX</h2> |
| 263 | + <pre><code>@unpublished{sathya:hal-04895583, |
| 264 | + TITLE = {{Constrained Articulated Body Algorithms for Closed-Loop Mechanisms}}, |
| 265 | + AUTHOR = {Sathya, Ajay Suresha and Carpentier, Justin}, |
| 266 | + URL = {https://hal.science/hal-04895583}, |
| 267 | + NOTE = {working paper or preprint}, |
| 268 | + YEAR = {2025}, |
| 269 | + MONTH = Jan, |
| 270 | + PDF = {https://hal.science/hal-04895583v1/file/LCABA_HAL.pdf}, |
| 271 | + HAL_ID = {hal-04895583}, |
| 272 | + HAL_VERSION = {v1}, |
| 273 | + } |
| 274 | + </code></pre> |
| 275 | + </div> |
| 276 | +</section> |
| 277 | + |
| 278 | + |
| 279 | +<footer class="footer"> |
| 280 | + <div class="container"> |
| 281 | + <div class="content has-text-centered"> |
| 282 | + <a class="icon-link" |
| 283 | + href="./static/paper/main.pdf"> |
| 284 | + <i class="fas fa-file-pdf"></i> |
| 285 | + </a> |
| 286 | + <a class="icon-link" href="https://github.com/Simple-Robotics" class="external-link" disabled> |
| 287 | + <i class="fab fa-github"></i> |
| 288 | + </a> |
| 289 | + </div> |
| 290 | + <div class="columns is-centered"> |
| 291 | + <div class="column is-8"> |
| 292 | + <div class="content"> |
| 293 | + <p> |
| 294 | + This website is licensed under a <a rel="license" |
| 295 | + href="http://creativecommons.org/licenses/by-sa/4.0/">Creative |
| 296 | + Commons Attribution-ShareAlike 4.0 International License</a>. |
| 297 | + </p> |
| 298 | + <p> |
| 299 | + We thank <a |
| 300 | + href="https://github.com/nerfies/nerfies.github.io">Nerfies</a> for creating the template of this webpage. |
| 301 | + You are free to borrow the <a |
| 302 | + href="https://github.com/simple-robotics.github.io/publications/simple-contact-solver">source code</a>, |
| 303 | + we just ask that you link back to the <a |
| 304 | + href="https://github.com/nerfies/nerfies.github.io">Nerfies</a> page in the footer. |
| 305 | + </p> |
| 306 | + </div> |
| 307 | + </div> |
| 308 | + </div> |
| 309 | + </div> |
| 310 | +</footer> |
| 311 | + |
| 312 | +</body> |
| 313 | +</html> |
0 commit comments