Skip to content

MultibodyPlant vs Pinocchio Performance #181

@mposa

Description

@mposa

This is an issue to track Drake::MBP vs alternatives (currently Pinocchio). This example is on a Cassie URDF. Some comments on the plant:

  • Does not include loop closure
  • Does not include contact
  • Fixed base model (pelvis)

Test code is https://github.com/DAIRLab/dairlib/blob/pinocchio/examples/Cassie/test/benchmark_dynamics.cc

To replicate:

bazel run --define WITH_SNOPT=OFF examples/Cassie:benchmark_dynamics 

Status, July 18, 2020

As run on Michael's laptop

(multibody_plant) 100x inertia autodiff calculations took 182 miliseconds. 1820 microseconds per.
(multibody_plant) 10000x inverse dynamics calculations took 125 miliseconds. 12 microseconds per.
(multibody_plant) 100xautodiff inverse dynamics calculations took 240 miliseconds. 2400 microseconds per.
(multibody_plant) 10000x forward dynamics calculations took 304 miliseconds. 30 microseconds per.
(multibody_plant) 100xautodiff forward dynamics calculations took 348 miliseconds. 3480 microseconds per.
(pinocchio) 10000x rnea inverse dynamics calculations took 20 miliseconds. 2 microseconds per.
(pinocchio) 10000x rnea inverse dynamics derivatives calculations took 61 miliseconds. 6 microseconds per.
(pinocchio) 10000x aba forward dynamics calculations took 32 miliseconds. 3 microseconds per.
(pinocchio) 10000x aba forward dynamics derivative calculations took 120 miliseconds. 12 microseconds per.
vdot_mbp, vdot_pin, diff

Summary (Drake, Pinocchio)

For numerical derivatives, approximating by double x 42 (counting fixed-base coordinates nq=nv=16 and nu=10 )

  • Forward dynamics: (30, 3)
  • Inverse dynamics: (12, 2)
  • Forward dynamics derivatives , Drake-Autodiff: (3480, 12)
  • Forward dynamics derivatives , Drake-Numerical: (1260, 12)
  • Inverse dynamics derivatives , Drake-Autodiff: (2400, 6)
  • Inverse dynamics derivatives , Drake-Numerical: (504, 6)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions