Drake v0.15.0

Back to Release Notes

Announcements

This release includes a number of translations of consumers of the legacy RigidBodyTree simulator to the newer MultibodyPlant, including every example used by our MIT users.

A number of substitutes for what are now C++ standard library mechanisms have completed their voyage through the deprecation pipeline; we bid farewell to drake_optional, drake_variant, and the Spruce filesystem library in this release.

Breaking Changes

These are breaking changes that did not undergo a deprecation period.

  • Removed some hydroelastic property setter methods:
    • Remove MultibodyPlant::set_elastic_modulus (#12596)
    • Remove MultibodyPlant::set_hunt_crossley_dissipation (#12596)
    • We believe this API, although public, has no downstream users.
  • Hide filesystem.h from downstreams (#12686)
    • We believe this API, although public, has no downstream users.
  • Re-implement the uniformly random rotation to actually be uniform (#12562)
    • This has caused some problems for consumers: The existing behaviour, although wrong, was relied on by some downstream code.

Dynamical Systems

New features

  • Support Gaussian initial conditions in Affine/Linear systems (#12637)
  • Enable math::ComputeNumericalGradient() for scalar types T != double (#12629)
  • Add System::IsDifferenceEquationSystem (#12579)
  • Added a new utility, MakeSimulatorFromGflags (#12527)
  • All vector-gen sources are switched to yaml format (#12684)

Fixes

  • Refactor the convergence check of Newton-Raphson iterations (#12599)
  • In AffineSystem do not add D*u to output if D==0 (#12712)

Mathematical Program

New features

  • Ability to scale decision variables (SNOPT only) (#12576)
  • Ability to stringify solvers::Binding (#12693, #12700)

#####Multibody Dynamics

New features

  • New hydroelastic contact model in progress (#12552, #12557)
    • Still only experimental
    • Improve performance
    • Improve architecture
  • Benchmark vtk and ospray render engines and add documentation (#12440)
  • MultibodyPositionToGeometryPose can now:
    • own its own MultibodyPlant (#12588)
    • use an input vector the size of the entire state (#12602)
  • Add utility for setting contact material properties generally (#12595)
  • Allow SceneGraph::AssignRole to update proximity properties (#12585)
  • Signed distance to capsule calculations with Autodiff support (#12617)
  • Faster, finalization-free MultibodyPlant body -> SceneGraph Frame registration (#12690)
  • Improve rotation matrix methods in Frame and MultibodyTree (#12683)

Fixes

  • Exclude z from MultibodyPlant::get_state_output_port() (#12619)

Examples

  • Support default parameters for AcrobotGeometry (#12601)
  • Remove controlled_kuka (#12663)
  • Remove contact_model (#12719)
  • Several examples moved off of RigidBodyTree:

Miscellaneous features and fixes

  • pyplot improvements:
    • Add recording functionality back in to pyplot visualizer (#12582)
    • Fix show logic in pyplot visualizer (#12658)
    • Fix initial vertex draw order in planar scenegraph visualizer (#12627)

Documentation updates

  • Add example of using meshcat visualizer (#12646)
  • Add linear program tutorial (#12659, #12700)
  • Import SOS tutorial from colab (#12642)
  • Update HTML5 animation to be conditional (#12615)
  • Henceforth platform reviewers should merge approved PRs (#12692)
  • macOS pre-merge validation should prefer Catalina (#12695)
  • Add instructions for updating prerequisites (#12614)
  • Update links to reflect modified MIT team names (#12639)
  • Remove allowance for the inl.h pattern (#12711)

pydrake bindings

  • Improved package top-level docstring (#12671)
  • pydrake.solvers.mathematicalprogram::LinearCost (#12651)
  • pydrake.solvers.mathematicalprogram::QuadraticCost (#12651)
  • Class docstrings for py
    • drake::examples::manipulation_station::IiwaCollisionModel (#12675)
    • drake::examples::manipulation_station::ManipulationStation (#12675)
    • drake::examples::manipulation_station::ManipulationStationHardwareInterface (#12675)
  • The upgrade of pybind11 to latest commit (#12641, below) fixes a bug that caused false cache hits for overloads (#12589)

Build system and dependencies

  • Upgrade buildifier to latest release 1.0.0 (#12696)
  • Upgrade fcl to latest release 0.6.0 (#12694)
  • Upgrade libsdformat to 9.1.0 (#12653)
  • Upgrade lcm to latest commit (#12667)
  • Upgrade meshcat_python to latest commit (#12668)
  • Upgrade pybind11 fork to latest commit (#12641)
  • Upgrade spdlog to latest release 1.5.0 (#12669)
  • Upgrade styleguide to latest commit (includes cpplint changes) (#12687, #12717)
  • Remove all dependencies on protobuf (#12689)
  • Add instructions for building experimental binary packages using Jenkins (#12586)

Newly-deprecated items

  • APIs:
    • Legacy (“attic”) manipulation/util (#12679)
    • geometry::Identifier (moved to common::Identifier) (#12621)
    • Some methods of geometry::SceneGraphInspector and geometry::GeometryState were renamed and their old spellings deprecated (#12626)
      • geometry::SceneGraphInspector::GetNumDynamicGeometries becomes geometry::SceneGraphInspector::NumDynamicGeometries
      • geometry::SceneGraphInspector::GetNumAnchoredGeometries becomes geometry::SceneGraphInspector::NumAnchoredGeometries
      • A large number of items within geometry::GeometryState; however although this class is public it is internal and should not be called.
  • Dependencies

Removal of deprecated items

  • APIs
    • Removing deprecated (“attic”) legacy support of:
      • drake::manipulation::dev::RemoteTreeViewerWrapper (#12666)
      • drake::manipulation::sensors::Xtion and its URDF models (#12665)
      • Legacy manipulation and its perception and related systems: (#12677)
        • drake::manipulation::scene_generation::RandomClutterGenerator
        • drake::manipulation::scene_generation::SimulatePlantToRest
        • drake::manipulation::util::FramePoseTracker
        • drake::manipulation::util::SimpleTreeVisualizer
        • drake::perception::estimators::ArticulatedIcpErrorSet
        • drake::perception::estimators::ArticulatedIcpErrorCost
        • drake::perception::estimators::ArticulatedIcpErrorNormCost
        • drake::perception::estimators::ArticulatedIcpLinearizedNormCost
        • drake::perception::estimators::ArticulatedIcpBodyPoints
        • drake::perception::estimators::PointCorrespondence
        • drake::perception::estimators::ArticulatedBodyInfluence
    • CalcFrameGeometricJacobianExpressedInWorld (#12685)
    • SnoptSolver::is_thread_safe (#12685)
    • drake_optional and drake_variant (#12682)
    • text_logging_gflags (#12680)
    • MakeFileInputStreamOrThrow (#12689)
  • Dependencies:
    • Spruce filesystem library (#12681)
  • Examples:

Notes

This release provides pre-compiled binaries named drake-20200212-{bionic|mac}.tar.gz. See Stable Releases for instructions on how to use them.

Drake binary releases incorporate a pre-compiled version of SNOPT as part of the Mathematical Program toolbox. Thanks to Philip E. Gill and Elizabeth Wong for their kind support.