Titan is a GPU-accelerated physics simulation library designed for rapid simulations of large-scale spring mass systems. Titan can massively accelerate the simulation of flexible robots, solid and soft-body objects, and even fluids. Titan uses NVIDIA CUDA to provide a GPU-accelerated environment for physics primitives like springs and masses. Library users can create masses, springs, and more complicated objects, apply constraints, and modify simulation parameters in real time, while the simulation runs asynchronously on the GPU. Running on the GPU, Titan is able to outperform almost all existing CPU-based simulation software, with million-mass simulations running in nearly realtime. With an optional graphics engine, Titan can also be used to generate animations of complex systems. Titan is written in C++, but has a Python API which makes running code simpler and more accessible for everyone. Titan can be downloaded here.
|
Titan is one of the first open-source libraries to support physics simulations using NVIDIA CUDA, and outperforms almost all existing libraries for spring-based animations and simulations. The library can model bodies with hundreds of thousands of components and millions of springs in near real time, allowing robotics simulations and evolutionary algorithms training to be massively accelerated. The library is deliberately low-level, supporting operations on primitives like creating springs and masses, manipulating them, adding forces, and deleting them. This can be extended easily with a higher level library that allows more applications for robotics.
The library also has a new Python API that makes implementing algorithms and running simulations far easier. Installation instructions for both the C++ and Python versions can be found on the project Wiki. A brief tutorial and overview of the project can be found here. The C++ version supports a variety of experimental features like .STL file imports and rotations which the Python version does not yet support. The project was led by students from Columbia University's Computer Science and Mechanical Engineering department.
The library also has a new Python API that makes implementing algorithms and running simulations far easier. Installation instructions for both the C++ and Python versions can be found on the project Wiki. A brief tutorial and overview of the project can be found here. The C++ version supports a variety of experimental features like .STL file imports and rotations which the Python version does not yet support. The project was led by students from Columbia University's Computer Science and Mechanical Engineering department.
Running a Simple Titan Program
|
The Titan library uses an asynchronous memory model that allows the CPU to continue running while the GPU performs computation. You can create masses and springs, add constraints, boundary regions, physics operations, and even import from .STL files. Computation can be run on the CPU while the GPU is running, and then control functions like sim.pause() or sim.setBreakpoint(time) can be called to synchronize with the GPU. This makes the library a powerful way of doing dynamic simulations that require CPU input and GPU speed. Further details can be found in the overview of the language model here.
Titan can also be extended easily by modifying the source code and rebuilding. For example, Coral currently supports ball and plane constraints, but new constraints can be added easily by defining a new subclass of the Constraint object and using it to build constraints. |
learn more |
PUBLICATIONS |
|
Project participants |
|