# US 12,216,969 B2 · Methods of contact for simulation

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,216,969 B2
- Document ID: US12216969B2
- Status: Granted
- Kind: B2
- Application number: 17/012,709
- Filed: 2020-09-04
- Published: 2022-03-10
- Granted: 2025-02-04
- Earliest claimed: 2020-09-04
- Assignees: NVIDIA Corporation
- Applicants: NVIDIA Corporation
- Inventors: Miles Macklin; Matthias Mueller-Fischer; Nuttapong Chentanez; Stefan Jeschke; Tae-Yong Kim
- Web page: https://patentgrep.com/patent/US12216969B2

## CPC

- G06F 30/23: using finite element methods [FEM] or finite difference methods [FDM]
- G06F 17/16: Matrix or vector computation {, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization (matrix transposition G06F7/78)}
- G06F 30/20: Design optimisation, verification or simulation (optimisation, verification or simulation of circuit designs G06F30/30)
- G06F 30/27: using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
- G06N 3/08: Learning methods
- G06T 1/20: Processor architectures; Processor configuration, e.g. pipelining
- G06T 15/005: {General purpose rendering architectures}
- G06T 15/06: Ray-tracing
- G06T 17/20: Finite element generation, e.g. wire-frame surface description, {tesselation}
- G06F 2111/04: Constraint-based CAD
- G06F 2113/12: Cloth
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06T: IMAGE DATA PROCESSING OR GENERATION, IN GENERAL

## Abstract

Apparatuses, systems, and techniques apply to a force-based (e.g., primal) formulation for object simulation. In at least one embodiment, updates to the force-based formulation is determined by solving for constraints that are to be satisfied when simulating rigid bodies (e.g., contact rich scenarios).

## Claims

### Claim 1

A system, comprising:
one or more computers having one or more processors to:
determine one or more forces in a simulation of one or more objects to determine a set of constraints to be satisfied for the simulation where the one or more objects are to be simulated using a force-based formulation, wherein the set of constraints include at least one of velocity approximations, contact forces, or friction coefficients between the one or more objects;
apply a preconditioner to the force-based formulation to perform a gradient descent;
solve an energy minimization problem, using a primal formulation, to solve one or more constraints of the set of constraints for simulation; and
simulate the one or more objects to satisfy the set of constraints of the simulation by updating states of the one or more objects based on results from performing the gradient descent.

### Claim 2 (depends on 1)

The system of claim 1, wherein the preconditioner comprises a Hessian approximation.

### Claim 3 (depends on 1)

The system of claim 1, wherein the set of constraints for the simulation are satisfied at two or more frames of the simulation using an implicit penalty formulation.

### Claim 4 (depends on 1)

The system of claim 1, wherein the force-based formulation with the preconditioner is a differentiable contact model using Coulomb friction.

### Claim 5 (depends on 1)

The system of claim 1, wherein the one or more processors are further to perform collision detection of the one or more objects, during simulation, to determine the set of constraints.

### Claim 6 (depends on 1)

The system of claim 1, wherein the one or more processors are further to compute contact forces in the force-based formulation that satisfy the set of constraints for the simulation.

### Claim 7 (depends on 1)

The system of claim 1, wherein the one or more objects are modeled by a triangle mesh.

### Claim 8

A processor, comprising:
one or more arithmetic logic units (ALUs) to:
determine one or more forces in a simulation of one or more objects to determine a set of constraints;
perform collision detection of the one or more objects that are to be simulated using a primal formulation;
generate a preconditioner for the primal formulation to perform a gradient descent;
solve an energy minimization problem, using the primal formulation, to simulate the one or more objects; and
update states of the one or more objects, based on results from the gradient descent and the set of constraints, to simulate collisions between the one or more objects.

### Claim 9 (depends on 8)

The processor of claim 8, wherein the one or more ALUs are to generate the preconditioner for the primal formulation using approximations of second derivatives.

### Claim 10 (depends on 9)

The processor of claim 9, wherein the one or more ALUs are to generate the preconditioner by dropping higher order terms corresponding to a geometric stiffness.

### Claim 11 (depends on 8)

The processor of claim 8, wherein the primal formulation with the preconditioner is based on a differentiable contact model using Coulomb friction.

### Claim 12 (depends on 8)

The processor of claim 8, wherein the collision detection comprises determining the set of constraints when simulating the one or more objects, wherein the set of constraints include friction coefficients.

### Claim 13 (depends on 12)

The processor of claim 12, wherein the one or more ALUs are to satisfy the set of constraints at each frame, during simulation, using an implicit penalty formulation.

### Claim 14

A method, comprising:
using one or more graphics processing units (GPUs) to execute code that performs a set of instructions that:
determines one or more constraints by at least determining one or more forces in a simulation of one or more objects;
performs a gradient descent by applying a preconditioner for a primal formulation;
solve an energy minimization problem, using the primal formulation, to solve the one or more constraints for simulation; and
uses one or more gradients resulting from performing the gradient descent to update states of the one or more objects to satisfy the one or more constraints for the simulation.

### Claim 15 (depends on 14)

The method of claim 14, wherein the one or more GPUs are further to execute code to:
generate a square matrix of second-order partial derivatives of a multivariable function associated with the energy minimization problem; and
use the generated matrix as the preconditioner to perform the gradient descent.

### Claim 16 (depends on 15)

The method of claim 15, wherein the preconditioner is a diagonally invertible preconditioner.

### Claim 17 (depends on 15)

The method of claim 15, wherein the primal formulation with the preconditioner is a differentiable contact model using Coulomb friction.

### Claim 18 (depends on 14)

The method of claim 14, wherein the one or more objects comprise triangle meshes that, when simulated, experience contact forces.

### Claim 19 (depends on 14)

The method of claim 14, wherein the one or more GPUs are further to execute code to use the updated states of the one or more objects when performing a simulation for rigid body contacts.

### Claim 20 (depends on 14)

The method of claim 14, wherein the one or more GPUs are further to execute code to use the updated states of the one or more objects when performing simulation for at least one of:
generation of data for training a neural network of a control stack of an autonomous or semi-autonomous machine;
generation of data for training a neural network of a perception stack of an autonomous or semi-autonomous machine;
validation of a control stack of an autonomous or semi-autonomous machine;
validation of a perception stack of an autonomous or semi-autonomous machine;
generation of graphical output using ray-tracing for simulating lighting conditions in a rendered scene;
generation of data for a dataset used to train a deep learning model; or
generation of data for augmenting a dataset used to train a deep learning model.
