Creative Machines Lab - Columbia University
  • Home
  • About
  • People
  • Research
    • Crystallography
    • Fingerprints
    • Hidden Variables
    • Visual Self Modeling
    • Label Representations
    • Robot Visual Behavior Modeling
    • Particle Robotics
    • Deep Self Modeling
    • Evolutionary Self Modeling
    • Self Replication
    • Laser Cooking
    • Digital Food
    • Soft Actuator
    • Layered Assembly
    • Cellular Machines
    • Inverted Laser Sintering
    • Eureqa
    • Golem
    • Data Smashing
    • Jamming Gripper
    • Soft Robot Evolution
    • Truss Reconfiguration
    • Fluidic Assembly
    • Ornithopters
    • Tensegrity
  • Papers
    • Selected Papers
    • All Papers
  • Videos
  • Talks
  • Open Source
    • Titan Library
    • Fab@Home
    • FreeLoader
    • VoxCad
    • Spyndra
    • PARA
    • Aracna Robot
    • Cuneiforms
    • Eva
    • AMF
  • Join Us
  • Internal
    • Wiki
    • Email list
  • Contact
  • Home
  • About
  • People
  • Research
    • Crystallography
    • Fingerprints
    • Hidden Variables
    • Visual Self Modeling
    • Label Representations
    • Robot Visual Behavior Modeling
    • Particle Robotics
    • Deep Self Modeling
    • Evolutionary Self Modeling
    • Self Replication
    • Laser Cooking
    • Digital Food
    • Soft Actuator
    • Layered Assembly
    • Cellular Machines
    • Inverted Laser Sintering
    • Eureqa
    • Golem
    • Data Smashing
    • Jamming Gripper
    • Soft Robot Evolution
    • Truss Reconfiguration
    • Fluidic Assembly
    • Ornithopters
    • Tensegrity
  • Papers
    • Selected Papers
    • All Papers
  • Videos
  • Talks
  • Open Source
    • Titan Library
    • Fab@Home
    • FreeLoader
    • VoxCad
    • Spyndra
    • PARA
    • Aracna Robot
    • Cuneiforms
    • Eva
    • AMF
  • Join Us
  • Internal
    • Wiki
    • Email list
  • Contact
Creative Machines Lab - Columbia University

Titan LIBRARY

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. 
Picture
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. 
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.
Picture

learn more

Titan Github page

PUBLICATIONS

  • J. Austin, R. Corrales-Fatou, S. Wyetzner, H. Lipson, "Titan: A Parallel Asynchronous Library for Multi-Agent and Soft-Body Robotics using NVIDIA CUDA", ICRA 2020

Project participants

  • Developers: Jacob Austin ([email protected]) and Rafael Corrales Fatou ([email protected]) at Columbia University.
  • Project led by Professor Hod Lipson at Columbia, and supported by DARPA funding.
Picture