Repository navigation
Expand file tree
/
Copy pathsupercharging.html
More file actions
459 lines (422 loc) · 33.5 KB
/
Copy pathsupercharging.html
File metadata and controls
459 lines (422 loc) · 33.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
<!doctype html>
<html class="no-js" lang="en" data-content_root="./">
<head><meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-2LMJZFSYL3"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-2LMJZFSYL3');
</script>
<link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" /><link rel="next" title="Robot Models" href="modules/robot.html" /><link rel="prev" title="Installation" href="install.html" />
<!-- Generated with Sphinx 8.1.3 and Furo 2024.08.06 -->
<title>Supercharging Tactile Robotics Simulation with NVIDIA Warp and Newton - Taccel - Docs</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=354aac6f" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
<link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=302659d7" />
<style>
body {
--color-code-background: #f8f8f8;
--color-code-foreground: black;
}
@media not print {
body[data-theme="dark"] {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
@media (prefers-color-scheme: dark) {
body:not([data-theme="light"]) {
--color-code-background: #202020;
--color-code-foreground: #d0d0d0;
}
}
}
</style></head>
<body>
<script>
document.body.dataset.theme = localStorage.getItem("theme") || "auto";
</script>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="svg-toc" viewBox="0 0 24 24">
<title>Contents</title>
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
<path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
</svg>
</symbol>
<symbol id="svg-menu" viewBox="0 0 24 24">
<title>Menu</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</symbol>
<symbol id="svg-arrow-right" viewBox="0 0 24 24">
<title>Expand</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</symbol>
<symbol id="svg-sun" viewBox="0 0 24 24">
<title>Light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
</symbol>
<symbol id="svg-moon" viewBox="0 0 24 24">
<title>Dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
</svg>
</symbol>
<symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
<title>Auto light/dark, in light mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
<line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
<line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
<line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
<line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
<line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
<line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
<line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
<line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
<circle cx="14.5" cy="9.55" r="3.6"/>
</svg>
</symbol>
<symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
<title>Auto light/dark, in dark mode</title>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
class="icon-custom-derived-from-feather-sun-and-tabler-moon">
<path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
<line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
<line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
<line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
<line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
<line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
<line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
<line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
<line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
<circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
</svg>
</symbol>
<symbol id="svg-pencil" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
<path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
<path d="M13.5 6.5l4 4" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
<symbol id="svg-eye" viewBox="0 0 24 24">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path
d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>
</symbol>
</svg>
<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation">
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc">
<label class="overlay sidebar-overlay" for="__navigation">
<div class="visually-hidden">Hide navigation sidebar</div>
</label>
<label class="overlay toc-overlay" for="__toc">
<div class="visually-hidden">Hide table of contents sidebar</div>
</label>
<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>
<div class="page">
<header class="mobile-header">
<div class="header-left">
<label class="nav-overlay-icon" for="__navigation">
<div class="visually-hidden">Toggle site navigation sidebar</div>
<i class="icon"><svg><use href="#svg-menu"></use></svg></i>
</label>
</div>
<div class="header-center">
<a href="index.html"><div class="brand">Taccel - Docs</div></a>
</div>
<div class="header-right">
<div class="theme-toggle-container theme-toggle-header">
<button class="theme-toggle">
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-header-icon" for="__toc">
<div class="visually-hidden">Toggle table of contents sidebar</div>
<i class="icon"><svg><use href="#svg-toc"></use></svg></i>
</label>
</div>
</header>
<aside class="sidebar-drawer">
<div class="sidebar-container">
<div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
<span class="sidebar-brand-text">Taccel - Docs</span>
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
<input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
<input type="hidden" name="check_keywords" value="yes">
<input type="hidden" name="area" value="default">
</form>
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
<p class="caption" role="heading"><span class="caption-text">Get Started</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
<li class="toctree-l1 current current-page"><a class="current reference internal" href="#">Blog Post</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Warp-IPC References</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="modules/robot.html">Robot Models</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/model.html">ASR Model APIs</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/integrator.html">IPC Integrator</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/handle.html">Simulation Handles</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/envvar.html">Environment Variables</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Taccel References</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="modules/tactile_robot.html">Tactile Robot Models</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/sensor.html">VBTS Config</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules/taccel.html">Taccel APIs</a></li>
<li class="toctree-l1"><a class="reference internal" href="examples/taccel_examples.html">Taccel Examples</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Tools</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="tools/render.html">Rendering Tools</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Development</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="contribute.html">Contribution</a></li>
<li class="toctree-l1"><a class="reference internal" href="issue_todos.html">Current Progress</a></li>
</ul>
</div>
</div>
</div>
</div>
</aside>
<div class="main">
<div class="content">
<div class="article-container">
<a href="#" class="back-to-top muted-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
</svg>
<span>Back to top</span>
</a>
<div class="content-icon-container">
<div class="view-this-page">
<a class="muted-link" href="https://github.com/Taccel-Simulator/Taccel/blob/main/docs/supercharging.md?plain=true" title="View this page">
<svg><use href="#svg-eye"></use></svg>
<span class="visually-hidden">View this page</span>
</a>
</div><div class="edit-this-page">
<a class="muted-link" href="https://github.com/Taccel-Simulator/Taccel/edit/main/docs/supercharging.md" title="Edit this page">
<svg><use href="#svg-pencil"></use></svg>
<span class="visually-hidden">Edit this page</span>
</a>
</div><div class="theme-toggle-container theme-toggle-content">
<button class="theme-toggle">
<div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
<svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
<svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
<svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
<svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
</button>
</div>
<label class="toc-overlay-icon toc-content-icon" for="__toc">
<div class="visually-hidden">Toggle table of contents sidebar</div>
<i class="icon"><svg><use href="#svg-toc"></use></svg></i>
</label>
</div>
<article role="main" id="furo-main-content">
<section id="supercharging-tactile-robotics-simulation-with-nvidia-warp-and-newton">
<h1>Supercharging Tactile Robotics Simulation with NVIDIA Warp and Newton<a class="headerlink" href="#supercharging-tactile-robotics-simulation-with-nvidia-warp-and-newton" title="Link to this heading">¶</a></h1>
<p>The ability to perceive and interact with the world through touch is fundamental to human-level interaction skills with the physical world. A robust sense of touch is indispensable for robots to achieve similar capabilities. Vision-based tactile sensors (VBTSs) have emerged as a leading technology in this domain, offering high-resolution feedback at a relatively low cost.</p>
<div style="width: 100%; position: relative; padding-bottom: 56.25%;">
<iframe
src="https://player.vimeo.com/video/1075961685"
frameborder="0"
allow="autoplay; fullscreen; picture-in-picture"
allowfullscreen=""
title="Taccel"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
></iframe>
</div>
<p>VBTSs typically employ a camera to observe the deformation of an elastic gel pad, allowing the robots to “feel” subtle changes in contact and pressure. However, this very property that makes VBTSs so powerful—the soft, deformable nature of the gel pads—also makes them incredibly complex to simulate accurately and efficiently. The intricate physics of soft body deformation, contact mechanics, and the subsequent generation of realistic tactile imagery present significant computational hurdles. The lack of high-fidelity and user-friendly simulators, particularly those employing Finite Element Methods (FEM) for an accurate representation of these soft bodies, has been a major bottleneck, slowing down the pace of research and development in tactile robotics.</p>
<p>To fill these gaps, a collaboration between <a class="reference external" href="https://pku.ai/">CoRe Lab, Peking University</a>, and <a class="reference external" href="https://www.math.ucla.edu/aivc/">AIVC Lab, UCLA</a>, yields a GPU-based physics simulator, <a class="reference external" href="https://taccel-simulator.github.io/">Taccel</a> (pronounced as “taxel”). Taccel is a high-performance simulation platform curated for simulating VBTSs and diverse robots integrated with these sensors. Taccel was initially built on NVIDIA <a class="reference external" href="https://nvidia.github.io/warp/modules/sim.html">warp.sim</a> module and is now being migrated to its official successor, the <a class="reference external" href="https://newton-physics.github.io/newton/guide/overview.html">Newton Physics</a>. These powerful frameworks allow the project to leverage a rich ecosystem of GPU-based toolkits for advanced research and development in robotics simulation. Boosted by <a class="reference external" href="https://nvidia.github.io/warp/index.html">NVIDIA Warp</a> and CUDA-X, Taccel aims to bridge the gap by providing an accurate and scalable simulation environment, while providing user-friendly Python APIs for researchers, accelerating innovation in how robots learn to touch and interact with their surroundings.</p>
<section id="behind-taccel-the-nvidia-warp-implemented-ipc-solver-for-nvidia-warp-and-newton">
<h2>Behind Taccel: The NVIDIA Warp-implemented IPC Solver for NVIDIA Warp and Newton<a class="headerlink" href="#behind-taccel-the-nvidia-warp-implemented-ipc-solver-for-nvidia-warp-and-newton" title="Link to this heading">¶</a></h2>
<p>The remarkable performance of Taccel, especially its ability to handle dense and precise computations for complex body dynamics and contact in massively parallel environments, is heavily reliant on cutting-edge GPU computing. Researchers from the AIVC Lab have developed the Warp-IPC, a physics simulation engine combining the Affine-Body Dynamics (ABD) and Incremental Potential Contact (IPC) algorithms for solid material and robot simulation.</p>
<video width="50%" height="100%" autoplay loop muted playsinline>
<source src="./_static/teddy.mp4" type="video/mp4">
</video>
<p><em><strong>Movie 1:</strong> Taccel simulating a RobotiQ-3F with soft gel pads grasping and lifting a soft teddy bear.</em></p>
<p>Writing efficient, parallelized code for sophisticated physics simulations like IPC is a demanding task. This is where NVIDIA Warp plays a pivotal role. Taccel leverages NVIDIA Warp, a Python framework that allows developers to write high-performance simulation and graphics code that is just-in-time compiled to highly optimized CUDA kernels for NVIDIA AI infrastructure. This allows us to develop complex physics within a productive Python environment while achieving the raw performance of low-level GPU programming.</p>
<p>The CUDA programming model, accessed via NVIDIA Warp and Newton, unlocks the massive parallelism inherent in NVIDIA GPUs, along with rich tools for spatial computing. Taccel exploits them to simulate thousands of independent simulation environments simultaneously, each with unprecedented precision. The core computations within IPC and ABD (like solving large linear systems during optimization iterations) are offloaded to the GPU, drastically reducing the time per simulation step. This GPU acceleration is fundamental to Taccel achieving its high speeds and large-scale parallelization capabilities.</p>
<p><img alt="" src="_images/infra.png" />
<em><strong>Figure 2:</strong> Infrastructure of Taccel, including the warp.sim-based infra in the initial version and the target infra for Newton-based infra in the future release</em></p>
<p>The Warp-IPC contributes to the broader <a class="reference external" href="https://developer.nvidia.com/blog/train-a-quadruped-locomotion-policy-and-simulate-cloth-manipulation-with-nvidia-isaac-lab-and-newton/">NVIDIA Warp and Newton ecosystem for general robotics simulation purpose</a>, providing a brand-new solver that focuses on precision. It leverages the strong user-defined extensibility of warp and Newton, which allows powerful third-party solvers to enter the game. As illustrated in <em><strong>Figure 2</strong></em>, Warp-IPC is implemented following the disentangled model-integrator infrastructure, either in its initial release based on warp.sim, or the future version based on Newton Physics. The <code class="docutils literal notranslate"><span class="pre">Model</span></code> instance holds data for affine bodies, soft bodies, and the robot links that represent the simulation scene. The <code class="docutils literal notranslate"><span class="pre">IPCIntegrator</span></code> (<code class="docutils literal notranslate"><span class="pre">SolverIPC</span></code> in the Newton-based version) is responsible for performing time stepping on the model instance using the ABD and IPC algorithms. Additional utilities curated for tactile robotics are also provided for tactile robotics and soft robotics research. This architecture ensures compatibility with the NVIDIA Warp and Newton framework while holding the potential for further adaptation to NVIDIA’s Newton framework for more powerful facilities for robotics research.</p>
</section>
<section id="precise-and-scalable-robot-simulation-with-taccel">
<h2>Precise and Scalable Robot Simulation with Taccel<a class="headerlink" href="#precise-and-scalable-robot-simulation-with-taccel" title="Link to this heading">¶</a></h2>
<p>Taccel is engineered from the ground up to deliver on precision in physics and tactile signal synthesis, unprecedented simulation scalability, and flexibility in configuration and use.</p>
<p><img alt="" src="_images/overview.png" /></p>
<p><em><strong>Figure 3:</strong> Taccel integrates IPC and ABD implemented with NVIDIA Warp for precise and efficient simulation, and provides user-friendly APIs for flexibly setting up simulation scenes.</em></p>
<p>Physical accuracy is paramount for meaningful tactile simulation. At its core, Taccel integrates two pioneering simulation techniques: <a class="reference external" href="https://ipc-sim.github.io/">Incremental Potential Contact (IPC)</a> and <a class="reference external" href="https://dl.acm.org/doi/abs/10.1145/3528223.3530064">Affine Body Dynamics (ABD)</a> for efficiently and accurately modeling soft and stiff bodies for representing robot links, sensor gel pads, objects, as well as solving their diverse interactions. For the soft gel pads, IPC guarantees inversion-free and intersection-free states. For stiffer materials, such as robot links or manipulated objects, ABD provides an efficient and precise simulation approach that fits in the IPC simulation framework. This ensures stable and physically realistic behavior in complex contact scenarios like the bolt-and-nut assembly shown in <em><strong>Movie 2</strong></em>.</p>
<video width="50%" height="100%" autoplay loop muted playsinline>
<source src="./_static/bolt_and_nut.mp4" type="video/mp4">
</video>
<p><em><strong>Movie 2:</strong> Bolt-and-nut, showcasing Taccel’s precise contact handling</em></p>
<p>Taccel doesn’t just simulate the physics; it also generates high-fidelity tactile signals, as shown in <em><strong>Figure 3</strong></em>. It can produce detailed depth maps from the simulated deformation of the gel surface and generate high-fidelity RGB tactile images and marker flows for tactile perception. The synthetic tactile data can be useful for generating synthetic tactile data and simulating tactile-informed robotic manipulation.</p>
<p><img alt="" src="_images/sim_tactile.png" /></p>
<p><em><strong>Figure 1:</strong> Taccel generates realistic simulated tactile signals</em></p>
<p>Supported by the precision in physics and tactile signal simulation, Taccel excels in simulating complex, contact-rich manipulation tasks. As shown in <em><strong>Movie 3-4,</strong></em> the researchers have tested the Tac-Man framework for manipulating articulated objects like drawers (prismatic joints), microwave ovens (revolute joints), <em>e.t.c</em>. In the sim-real comparison, Taccel accurately simulates the crucial gel pad deformation and contact dynamics, leading to execution-recovery patterns that closely match real-world trajectories, a significant step forward in achieving high-fidelity simulation in tactile robotics.</p>
<video width="100%" height="100%" autoplay loop muted playsinline>
<source src="./_static/tacman.mp4" type="video/mp4">
</video>
<p><em><strong>Movie 3:</strong> Real-world execution versus Taccel simulation for Tac-Man manipulation reveals small sim-real gap</em></p>
<video width="100%" height="100%" autoplay loop muted playsinline>
<source src="./_static/tacman_sim.mp4" type="video/mp4">
</video>
<p><em><strong>Movie 4:</strong> More Tac-Man simulation on cabinets, drawers, and bolt-nut assemblies.</em></p>
<p>One of Taccel’s most significant advancements is its massive scalability, enabling large-scale experiments that were previously intractable. In a peg-insertion task with dual tactile pads shown in <em><strong>Movie 5</strong></em>, Taccel can fit over 4096 parallel environments running on a single 80 GB GRAM. This translates to an incredible 900+ FPS (18-fold acceleration over real-world wall-clock time) in the test. This capability is crucial for training reinforcement learning agents that require vast amounts of simulation experience.</p>
<video width="50%" height="100%" autoplay loop muted playsinline>
<source src="./_static/peg.mp4" type="video/mp4">
</video>
<p><em><strong>Movie 5:</strong> 4096 Peg Insertion Video, demonstrating massive parallelization</em></p>
</section>
<section id="taccel-in-action-flexible-and-user-friendly-apis">
<h2>Taccel in Action: Flexible and User-friendly APIs<a class="headerlink" href="#taccel-in-action-flexible-and-user-friendly-apis" title="Link to this heading">¶</a></h2>
<p>Taccel is designed to be adaptable to a wide array of research needs. It provides intuitive Python APIs, allowing users to easily load robots from URDF files, configure sensors, and define object properties. Interaction with the simulation, such as setting kinematic targets, can be done using familiar formats like NumPy arrays or PyTorch tensors. Leveraging the NVIDIA Warp and Newton framework, Taccel seamlessly integrates advanced functions such as ray-tracing, OpenGL-based visualization, and USD-based rendering, enriching the simulation experience. Further, Taccel supports a broad spectrum of robotic platforms and sensor arrangements, from simple parallel grippers to complex multi-fingered hands equipped with numerous tactile sensors as shown in <em><strong>Movie 6.</strong></em></p>
<video width="100%" height="100%" autoplay loop muted playsinline>
<source src="./_static/robots.mp4" type="video/mp4">
</video>
<p><em><strong>Movie 6:</strong> Various robots and VBTS integration supported in Taccel</em></p>
</section>
<section id="conclusion">
<h2>Conclusion<a class="headerlink" href="#conclusion" title="Link to this heading">¶</a></h2>
<p>Taccel represents a step forward in vision-based tactile robotics simulation powered by NVIDIA Warp and Newton Physics Engine. By combining advanced physics modeling algorithms like IPC and ABD with a highly optimized GPU implementation leveraging NVIDIA Warp, Taccel offers a unique blend of precision, scalability, and flexibility. This empowers researchers to tackle more complex problems, generate vast datasets for learning, and rapidly iterate on robot and sensor designs. The roles of NVIDIA AI infrastructure and innovative frameworks like NVIDIA Warp are crucial enablers for the level of performance and scale that Taccel achieves.</p>
</section>
<section id="see-also">
<h2>See Also<a class="headerlink" href="#see-also" title="Link to this heading">¶</a></h2>
<ul class="simple">
<li><p><a class="reference external" href="https://dl.acm.org/doi/10.1145/3528223.3530064">Affine Body Dynamics (ABD)</a></p></li>
<li><p><a class="reference external" href="https://ipc-sim.github.io/">Incremental Potential Contact (IPC)</a></p></li>
<li><p>NVIDIA Warp: <a class="reference external" href="https://developer.nvidia.com/warp-python">Developer Page</a> and <a class="reference external" href="https://nvidia.github.io/warp/">Docs</a></p></li>
<li><p>Newton Physics: <a class="reference external" href="https://developer.nvidia.com/newton-physics">Developer Page</a> and <a class="reference external" href="https://newton-physics.github.io/newton/guide/overview.html">Docs</a></p></li>
<li><p><a class="reference external" href="https://developer.nvidia.com/blog/train-a-quadruped-locomotion-policy-and-simulate-cloth-manipulation-with-nvidia-isaac-lab-and-newton/">Robot Learning and Simulation with Isaac Lab and Newton Physics</a></p></li>
</ul>
</section>
<section id="references">
<h2>References<a class="headerlink" href="#references" title="Link to this heading">¶</a></h2>
<p>Li Y, Du W, Yu C, et al. Taccel: Scaling Up Vision-based Tactile Robotics via High-performance GPU Simulation[J]. arXiv preprint arXiv:2504.12908, 2025.</p>
<p>Li, Minchen, et al. “Incremental potential contact: intersection-and inversion-free, large-deformation dynamics.” <em>ACM Trans. Graph.</em> 39.4 (2020): 49.</p>
<p>Lan, Lei, et al. “Affine body dynamics: fast, stable and intersection-free simulation of stiff materials.” <em>ACM Transactions on Graphics (TOG)</em> 41.4 (2022): 1-14.</p>
<p>Huang, Kemeng, et al. “StiffGIPC: Advancing GPU IPC for Stiff Affine-Deformable Simulation.” <em>ACM Transactions on Graphics</em> (2025).</p>
<p>Macklin, Miles. “Warp: Differentiable Spatial Computing for Python.” <em>ACM SIGGRAPH 2024 Courses</em>. 2024. 1-147.</p>
<p>Zhao, Zihang, et al. “Tac-Man: Tactile-informed prior-free manipulation of articulated objects.” <em>IEEE Transactions on Robotics</em> (2024).</p>
<p>Zhao, Zihang, et al. “Embedding high-resolution touch across robotic hands enables adaptive human-like grasping.” <em>Nature Machine Intelligence</em> (2025): 1-12.</p>
<p>Du, Wenxin, et al. “TacIPC: Intersection-and Inversion-Free FEM-Based Elastomer Simulation for Optical Tactile Sensors.” IEEE Robotics and Automation Letters 9.3 (2024): 2559-2566.</p>
<p>Chen, Yunuo, et al. “A unified newton barrier method for multibody dynamics.” ACM Transactions on Graphics (TOG) 41.4 (2022): 1-14.</p>
</section>
</section>
</article>
</div>
<footer>
<div class="related-pages">
<a class="next-page" href="modules/robot.html">
<div class="page-info">
<div class="context">
<span>Next</span>
</div>
<div class="title">Robot Models</div>
</div>
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
</a>
<a class="prev-page" href="install.html">
<svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
<div class="page-info">
<div class="context">
<span>Previous</span>
</div>
<div class="title">Installation</div>
</div>
</a>
</div>
<div class="bottom-of-page">
<div class="left-details">
<div class="copyright">
Copyright © 2025, the Taccel Team
</div>
Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
<a href="https://github.com/pradyunsg/furo">Furo</a>
</div>
<div class="right-details">
<div class="icons">
<a class="muted-link fa-brands fa-solid fa-github fa-2x" href="https://github.com/Taccel-Simulator/Taccel" aria-label="GitHub"></a>
</div>
</div>
</div>
</footer>
</div>
<aside class="toc-drawer">
<div class="toc-sticky toc-scroll">
<div class="toc-title-container">
<span class="toc-title">
On this page
</span>
</div>
<div class="toc-tree-container">
<div class="toc-tree">
<ul>
<li><a class="reference internal" href="#">Supercharging Tactile Robotics Simulation with NVIDIA Warp and Newton</a><ul>
<li><a class="reference internal" href="#behind-taccel-the-nvidia-warp-implemented-ipc-solver-for-nvidia-warp-and-newton">Behind Taccel: The NVIDIA Warp-implemented IPC Solver for NVIDIA Warp and Newton</a></li>
<li><a class="reference internal" href="#precise-and-scalable-robot-simulation-with-taccel">Precise and Scalable Robot Simulation with Taccel</a></li>
<li><a class="reference internal" href="#taccel-in-action-flexible-and-user-friendly-apis">Taccel in Action: Flexible and User-friendly APIs</a></li>
<li><a class="reference internal" href="#conclusion">Conclusion</a></li>
<li><a class="reference internal" href="#see-also">See Also</a></li>
<li><a class="reference internal" href="#references">References</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</aside>
</div>
</div><script src="_static/documentation_options.js?v=4ebf8126"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/scripts/furo.js?v=5fa4622c"></script>
<script src="_static/clipboard.min.js?v=a7894cd8"></script>
<script src="_static/copybutton.js?v=f281be69"></script>
</body>
</html>