Dojo:
A differentiable simulator for robotics
Simon Le Cleac'h and Taylor Howell







Taylor Howell
Simon Le Cleac'h
Jan Brüdigam
Zico Kolter
Mac Schwager
Zachary Manchester
team

Dojo is a physics engine
that prioritizes
physical accuracy
and
differentiability









doesn't
MuJoCo/Drake/Bullet/Brax
already do that?


popular simulators
https://leggedrobotics.github.io/SimBenchmark/

github.com/dojo-sim
- Julia package: Dojo.jl
- Python wrapper: dojopy
- gym-like environments
- interface w/ PyTorch & JAX


- maximal-coordinates representation
- variational integrator
- higher-fidelity contact model
- custom interior-point solver
- smooth gradients
Dojo

maximal-coordinates representation



minimal-coordinates
representation

minimal-coordinates
representation

minimal-coordinates
representation

minimal-coordinates
representation

minimal-coordinates
representation

minimal-coordinates
representation

maximal-coordinates
representation

maximal-coordinates
representation

maximal-coordinates
representation

maximal-coordinates
representation

maximal-coordinates
representation

maximal-coordinates
representation

maximal-coordinates representation
Linear-Time Variational Integrators in Maximal Coordinates. J. Brudigam and Z. Manchester.
Linear-Time Contact and Friction Dynamics in Maximal Coordinates using Variational Integrators.
J. Brudigam and Z. Manchester.

variational integrator

variational integrator
Discrete mechanics and variational integrators. J. E. Marsden and M. West.
variational integrator
Discrete mechanics and variational integrators. J. E. Marsden and M. West.
Euler-Lagrange
variational integrator
Discrete mechanics and variational integrators. J. E. Marsden and M. West.
discretize
Euler-Lagrange
variational integrator
Discrete mechanics and variational integrators. J. E. Marsden and M. West.
discretize
discretize
Euler-Lagrange
variational integrator
Discrete mechanics and variational integrators. J. E. Marsden and M. West.
discretize
discretize
Euler-Lagrange
Euler-Lagrange
energy and momentum conservation


tennis-racket effect
astronaut
Simulation Tools for Model-Based Robotics: Comparison of Bullet, Havok, MuJoCo, ODE and PhysX.
T. Erez, Y. Tassa, and E. Todorov.
energy and momentum conservation

variational integrator
Euler:

contact model
floor penetration


drift
contact model
friction
On unilateral constraints, friction and plasticity. J. J. Moreau.

contact model
friction
On unilateral constraints, friction and plasticity. J. J. Moreau.

friction cones

approximation
exact
friction cones
Subtitle



MuJoCo linear
Dojo linear
MuJoCo nonlinear
Dojo nonlinear
contact model
impact
An Implicit Time-Stepping Scheme for Rigid Body Dynamics with Inelastic Collisions and Coloumb Friction. D. E. Stewart and J. C. Trinkle.
contact model
impact
An Implicit Time-Stepping Scheme for Rigid Body Dynamics with Inelastic Collisions and Coloumb Friction. D. E. Stewart and J. C. Trinkle.
contact model
impact
An Implicit Time-Stepping Scheme for Rigid Body Dynamics with Inelastic Collisions and Coloumb Friction. D. E. Stewart and J. C. Trinkle.
contact model
impact
An Implicit Time-Stepping Scheme for Rigid Body Dynamics with Inelastic Collisions and Coloumb Friction. D. E. Stewart and J. C. Trinkle.
impact

Dojo
MuJoCo

interior-point solver
interior-point solver
interior-point solver
interior-point solver
interior-point solver

interior-point solver

interior-point solver

interior-point solver
KKT conditions


interior-point solver
KKT conditions


interior-point solver

interior-point solver

interior-point solver

using Plots
using Dojo
rectangle(w, h, x, y) = Shape(x .+ [0,w,w,0], y .+ [0,0,h,h])
light_blue = RGBA(0.4,0.4,1.0,0.8)
f(x) = x
ϕ(x) = x
L(x, ρ) = f(x) - ρ * log.(ϕ(x))
X = 0:0.0001:1
Y = -1:0.1:1
plt = plot(ylims=(-0.2,1.0), xlims=(-0.2,1.0), yticks=[0,1], xticks=[0,1], legend=:bottomright, size=(300,300))
plot!(plt, Y, f.(Y), linewidth=6.0, color=:black, label="f(x)")
plot!(rectangle(-0.2,2,0,-1), opacity=.6, color=:red, label="ϕ(x) < 0")
anim = @animate for i = 1:10
plot!(plt, X, [1; L.(X[2:end], 10*0.5^i)], linewidth=5.0, color=light_blue, label=false)# label="ρ = 3e-1")
end
gif(anim, fps=10, "/home/simon/Downloads/anim.gif")
PHI = Vector(1:-0.005:0)
plt = plot(ylims=(-0.01,1.0), xlims=(-0.01,1.0), yticks=[0,1], xticks=[0,1], legend=:topright, size=(300,300), )
anim = @animate for i = 1:440
# for (j,κ) ∈ enumerate([1e-1, 5e-2, 1e-2])
for (j,κ) ∈ enumerate([5e-2,])
PHI_i = PHI[1:min(i,length(PHI))]
(i == 1) && plot!(plt, PHI_i, κ ./ PHI_i, color=light_blue, linewidth=1+1.5j, label="κ = $κ")
plot!(plt, PHI_i, κ ./ PHI_i, color=light_blue, linewidth=1+1.5j, label=nothing)
end
end
gif(anim, fps=40, "/home/simon/Downloads/force_solo.gif")
plot!(plt, PHI, 1e-2 ./ PHI, color=light_blue, linewidth=5.0, label="κ = 1e-2")
plot!(plt, PHI, 1e-3 ./ PHI, color=light_blue, linewidth=5.0, label="κ = 1e-3")
gradients

gradients

gradients

gradients

gradients


gradients
implicit-function theorem
Lezioni di analisi infinitesimale. U. Dini.
gradients

implicit-function theorem
Lezioni di analisi infinitesimale. U. Dini.
gradients

implicit-function theorem
Lezioni di analisi infinitesimale. U. Dini.
solution
gradients

implicit-function theorem
Lezioni di analisi infinitesimale. U. Dini.
solution
residual
gradients

implicit-function theorem
Lezioni di analisi infinitesimale. U. Dini.
solution
data
residual
trajectory optimization


Dojo: success
MuJoCo: success
Dojo: success
MuJoCo: failure
gradients

examples
trajectory optimization


optimized with iterative LQR


reinforcement learning
Subtitle


augmented random search to train static linear policies
reinforcement learning

augmented random search v. augmented gradient search
system identification
ContactNets: Learning Discontinuous Contact Dynamics with Smooth, Implicit Representations. S. Pfrommer, M. Halm, and M. Posa.

system identification
ContactNets: Learning Discontinuous Contact Dynamics with Smooth, Implicit Representations. S. Pfrommer, M. Halm, and M. Posa.

learned
ground-truth
system identification


learning via quasi-Newton method
geometry
friction coefficient
ground-truth
learned
system identification

system identification



Dojo gradient
live demo

model-predictive control


model-predictive control



model-predictive control



model-predictive control



NeRF


fast policy learning











github.com/dojo-sim
Dojo: A differentiable simulator for robotics
By taylorhowell
Dojo: A differentiable simulator for robotics
- 258