Michael Chuah's page for MAS.864 The Nature of Mathematical Modelling

mcx "at" mit "dot" edu

Home

Final Project

While there are many robotic simulators available today, such as Gazebo which was used for the DARPA Robotics Challenge, most of them focus on the modelling of robots as rigid links. However there is growing interest in modelling flexible and elastic materials that could be used in bioinspired engineering and soft robotics.

For my final project, I would like to investigate this further, by modelling a simple robot that is made up of both soft and rigid parts. This could possibly be accomplished in Python using either Open Dynamics Engine, SimTK, Bullet Physics or PETSc.

Many commercial simulators do all for soft body dynamics, but most of them are concerned with the appearance and not necessarily the accuracy of the simulation. Disney Research and Pixar have also done some research into cloth simulation and elastic collisions.

Physics Simulation SDKs

ODE (Open Dynamics Engine)

http://www.ode.org/

COMSOL Multiphysics

http://www.comsol.com/comsol-multiphysics

Robotics Focused

As expected, most of these only include rigid body dynamics.

DART (Dynamic Animation and Robotics Toolkit)

http://dartsim.github.io/

V-REP (Virtual Robotics Experimental Platform)

http://www.coppeliarobotics.com/features.html

ARS (Autonomous Robot Simulator)

https://pypi.python.org/pypi/ARS
Physically-accurate robotics simulator

Open Source Robotics Foundation

(ROS + Gazebo)
http://osrfoundation.org/
http://gazebosim.org/
http://www.ros.org/

Game Focused

The main goal here is realistic-looking simulations for computer graphics applications, but accuracy is be sacrificed for speed.

Bullet Physics Library

http://bulletphysics.org/wordpress/
Multi-physics support including: Rigid body dynamics including constraint solvers, generic constraints, ragdolls, hinge, ball-socket Maximal coordinates, with velocity level MLCP and reduced coordinates Featherstone Articulated Body Algorithm Support for constraint limits and motors Soft body support including cloth, rope and deformable Bullet is integrated into Maya, Houdini, Cinema 4D, Lightwave, Blender and Carrara. Plugins for 3ds Max are available. Serialization of physics data in the cross-platform binary .bullet file format.
http://bulletphysics.org/Bullet/BulletFull/

Havok Physics

http://www.havok.com/products/physics

Nvidia PhysX

http://www.geforce.com/hardware/technology/physx

Medical Focused

While soft-body dynamics can be found, the code is generally not well supported or updated.

SimBody: Multibody Physics API

https://simtk.org/home/simbody/

SOFA (Simulation Open Framework Architecture)

http://www.sofa-framework.org/
SOFA is an Open Source framework primarily targeted at real-time simulation, with an emphasis on medical simulation. It is mostly intended for the research community to help develop newer algorithms, but can also be used as an efficient prototyping tool.

OpenTissue

http://www.opentissue.org/mediawiki/index.php/Main_Page
OpenTissue is [a collection of] generic algorithms and data structures for rapid development of interactive modeling and simulation.

Finite Element libraries

Most FEM are unable to handle geometrically nonlinear/large deformation problems that are commonly found in soft body dynamics. This is a good resource for FEM libraries.

FEniCS Project

http://fenicsproject.org/about/
FEniCS has an extensive list of features for automated, efficient solution of differential equations, including automated solution of variational problems, automated error control and adaptivity, a comprehensive library of finite elements, high performance linear algebra and many more.
http://fenicsproject.org/documentation/dolfin/1.0.0/cpp/demo/pde/hyperelasticity/cpp/documentation.html
https://bitbucket.org/fenics-apps/fenics-solid-mechanics

Vega FEM

http://run.usc.edu/vega/
Vega is a computationally efficient and stable C/C++ physics library for three-dimensional deformable object simulation. It is designed to model large deformations, including geometric and material nonlinearities, and can also efficiently simulate linear systems. Vega is open-source and free. It is released under the 3-clause BSD license, which means that it can be used freely both in academic research and in commercial applications.

PETSc

http://www.mcs.anl.gov/petsc/
PETSc, pronounced PET-see (the S is silent), is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. It supports MPI, shared memory pthreads, and GPUs through CUDA or OpenCL, as well as hybrid MPI-shared memory pthreads or MPI-GPU parallelism.

GetGEM++

http://download.gna.org/getfem/html/homepage/index.html
GetFEM++ is basically a generic C++ finite element library which aims to offer the widest range of finite element methods and elementary matrix computations for the approximation of linear or non-linear problems, possibly in hybrid form and possibly coupled. The dimension of the problem is arbitrary and may be a parameter of the problem. GetFEM++ offers a description of models in the form of bricks whose objective is to enable reusability of the approximations made. The system of bricks, now mature, is used to assemble components such as standard models (elasticity in small and large deformations, Helmholtz problem, scalar elliptic problem ...) to components representing the boundary conditions (Neumann, Dirichlet, Fourier-Robin, contact, friction...), also to components representing constraints (incompressibility, removing rigid motions ...) and to coupling components for coupled models.
http://download.gna.org/getfem/html/homepage/userdoc/model_nonlinear_elasticity.html

OpenFFW

http://openffw.googlecode.com/svn/homepage/index.htm
https://code.google.com/p/openffw/downloads/lis
The goal of this software package is to provide our target audience, students and researchers in the field of finite element research, a tool which presents various methods in a reference implementation and to provide a platform for future research and development.

FAESOR

http://hogwarts.ucsd.edu/~pkrysl/faesor/faesor_publish.html
Thermal and Stress Analysis with the Finite Element Method

Isogeometric analysis

http://en.wikipedia.org/wiki/Isogeometric_analysis
Isogeometric analysis is a recently developed computational approach that offers the possibility of integrating finite element analysis (FEA) into conventional NURBS-based CAD design tools. Currently, it is necessary to convert data between CAD and FEA packages to analyse new designs during development, a difficult task since the computational geometric approach for each is different. Isogeometric analysis employs complex NURBS geometry (the basis of most CAD packages) in the FEA application directly. This allows models to be designed, tested and adjusted in one go, using a common data set.

GeoPDEs

http://geopdes.apnetwork.it/?pagina=p&id=72
GeoPDEs is a suite of software tools for research on Isogeometric Analysis of PDEs. It provides a common and flexible framework for implementing and testing new isogeometric methods in different application areas. GeoPDEs is written in Octave and fully compatible with Matlab.

igafem - Open source 3D Matlab Isogeometric Analysis Code

http://sourceforge.net/projects/cmcodes/
Isogeometric analysis (IGA) is a fundamental step forward in computational mechanics that offers the possibility of integrating methods for analysis into Computer Aided Design (CAD) tools and vice versa. The benefits of such an approach are evident, since the time taken from design to analysis is greatly reduced leading to large savings in cost and time for industry. The tight coupling of CAD and analysis within IGA requires knowledge from both fields and it is one of the goals of the MIGFEM is to provide a simple-to-understand IGA FEM code.

PetIGA: A framework for high performance Isogeometric Analysis

https://bitbucket.org/dalcinl/petiga
This software framework implements a NURBS-based Galerkin finite element method (FEM), popularly known as isogeometric analysis (IGA). It is heavily based on PETSc, the Portable, Extensible Toolkit for Scientific Computation. PETSc is a collection of algorithms and data structures for the solution of scientific problems, particularly those modeled by partial differential equations (PDEs). PETSc is written to be applicable to a range of problem sizes, including large-scale simulations where high performance parallel is a must. PetIGA can be thought of as an extension of PETSc, which adds the NURBS discretization capability and the integration of forms. The PetIGA framework is intended for researchers in the numeric solution of PDEs who have applications which require extensive computational resources.

Interesting papers

Fast Volume-Preserving Free Form Deformation Using Multi-Level Optimization

Constraint-based Motion Synthesis for Deformable Models

Interactive Continuous Collision Detection between Deformable Models using Connectivity-Based Culling

Model order reduction for hyperelastic materials

An Implicit Finite Element Method for Elastic Solids in Contact

Modelling liver tissue properties using a non-linear visco-elastic model for surgery simulation

Non-linear anisotropic elasticity for real-time surgery simulation

A shape design system using volumetric implicit PDEs

Dynamic PDE-based surface design using geometric and physical constraints

On shifted Jacobi spectral method for high-order multi-point boundary value problems

A general model for soft body simulation in motion

Volume conserving finite element simulations of deformable models

Isogeometric Analysis of Hyperelastic Materials Using PetIGA