Continuum Mechanics
What is the continuous problem we want to solve before we think about discretization schemes?
Current configuration
Next configuration
Find the displacement field subject to quasistatic force balance
Elastic deformation
Body forces (gravity)
Boundary traction forces
Continuum Mechanics
In linear elasticity, the strain dependent forces are linearly dependent on strain, which is the gradient of our decision variable.
This equation can be solved with Galerkin's method (e.g. FEM, MPM)
But the boundary traction forces are tough to handle. Folks have used penalty-based methods to explicitly define contact forces.
But our application is a bit special since it involves large changes in boundary conditions. Can we take this formulation to what we had in the rigid-body case?
Contribution 1. Energy optimization
We turn this into an optimization problem whose optimality conditions imply force balance.
Potential strain energy
Multiplier term
Contribution 1. Energy optimization
We turn this into an optimization problem whose optimality conditions imply force balance.
Stationarity
Feasibility and complementarity
Energy optimization
Generalizes quasistatic rigid-body models to the continuum mechanics setting
Contact forces (traction) is naturally handled by the non-penetration constraint
Parallel story for implicit time-stepping vs. penalty method
Solvable with Newton's method based on MPM discretization
Finally, add in a kinetic energy term to regularize the cost term
But has many drawbacks which makes me want to look for a different approach.
- Still quite costly to solve, computationally not much of a gain with second-order
- Gap in equivalence of force balance & potential minimization in presence of friction
- Does not have modeling power for plasticity.
An alternative approach
Motivated more on position-based dynamics, with an explicit volume constraint
Intuitive physics??
Deformables in Drake
We are hoping to benchmark our method against Drake's FEM implementation.
Drake's FEM implementation:
Deformed configuration
Exporting Deformed Configuration
We plan to export the point cloud of the dough ball in the deformed configuration and compare the positions of the points to the results obtained using our model.
--E=5000 --nu=0.4 --density=800 --time_step=1e-2
FEM Solver Failures
Experimenting with different parameters and situations that lead to solver failures:
Linear solve did not converge in Newton iterations in FemSolver.
abort: Failure at multibody/contact_solvers/sap/sap_model.cc:391 in CalcDelassusDiagonalApproximation(): condition 'A_ldlt[c].eigen_linear_solver().isPositive()' failed.
E=1000 instead of 5000 and trying to squeeze the grippers closed more (closed_width = kL * 0.1 instead of kL * 0.4), it fails mid squeeze:
When time step = 1e-3 it doesn’t fail at the same place (initial gripping of the torus), but it does fail at the end (collision with ground).
FEM Solver Failures (2)
--E=5000
--nu=0.4
--density=800
--time_step=1e-2
Dropping the torus with default settings from a higher height (0.28 instead of 0.18), it would fail when it hit the ground: (you can see that the torus has penetrated the ground quite a bit)
Can be fixed by setting the time step to be 1e-3 instead of 1e-2.
--E=5000
--nu=0.4
--density=800
--time_step=1e-3
Moving Least Square Material Point Method (MLS-MPM)
"PlasticineLab: A Soft-Body Manipulation Benchmark with Differentiable Physics"
One-way coupling between rigid objects and soft bodies (but Compatible Particle-In-Cell (CPIC) algorithm can handle two-way coupling)
Deformed configuration
Key parameters & Runtimes
Key parameters:
Runtimes on 2019 Macbook Pro CPU
Taichi-Lang supports Mac GPU (Metal), but this particular implementation results in a segfault.
This video is 570 iterations of MPM
With rendering: , about 6 minutes
Without rendering: about 18 seconds
MLS-MPM Failure Cases
dt = 1e-3 (10x default)
dt = 2e-4 (2x default)
Courant–Friedrichs–Lewy Condition Comparison
dt = 1e-4 (default)
dt = 3e-4 (3x default)
Max Courant Number = 0.135471
Max Courant Number = 0.4 -> 2 -> 3.8 -> 18 -> 101156765360651704991744 ->inf
JMLR Ideas
How do we extend what we have right now?
In some sense, the question is always about "how to do policy gradient the right way". We've considered variation in terms of gradients, but there are other variations?
1. Where should we inject noise / take expectations to smooth out the irregular landscape? (dynamics, policy output, parameters)
Contact-Aware Control
What does stability and feedback control mean in the context of manipulation?