---
title: Drake v0.15.0
date: 2020-02-12
released: 2020-02-12
---

# 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][_#12596])
  * Remove ``MultibodyPlant::set_hunt_crossley_dissipation`` ([#12596][_#12596])
  * We believe this API, although public, has no downstream users.
* Hide ``filesystem.h`` from downstreams ([#12686][_#12686])
  * We believe this API, although public, has no downstream users.
* Re-implement the uniformly random rotation to actually be uniform ([#12562][_#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][_#12637])
* Enable ``math::ComputeNumericalGradient()`` for scalar types ``T != double`` ([#12629][_#12629])
* Add ``System::IsDifferenceEquationSystem`` ([#12579][_#12579])
* Added a new utility, ``MakeSimulatorFromGflags`` ([#12527][_#12527])
* All vector-gen sources are switched to yaml format ([#12684][_#12684])

Fixes

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

# Mathematical Program

New features

* Ability to scale decision variables (SNOPT only) ([#12576][_#12576])
* Ability to stringify ``solvers::Binding`` ([#12693][_#12693], [#12700][_#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][_#12440])
* ``MultibodyPositionToGeometryPose`` can now:
  * own its own MultibodyPlant ([#12588][_#12588])
  * use an input vector the size of the entire state ([#12602][_#12602])
* Add utility for setting contact material properties generally ([#12595][_#12595])
* Allow ``SceneGraph::AssignRole`` to update proximity properties ([#12585][_#12585])
* Signed distance to capsule calculations with Autodiff support ([#12617][_#12617])
* Faster, finalization-free MultibodyPlant body -> SceneGraph
  Frame registration ([#12690][_#12690])
* Improve rotation matrix methods in ``Frame`` and ``MultibodyTree`` ([#12683][_#12683])

Fixes

* Exclude z from ``MultibodyPlant::get_state_output_port()`` ([#12619][_#12619])

# Examples

* Support default parameters for ``AcrobotGeometry`` ([#12601][_#12601])
* Remove ``controlled_kuka`` ([#12663][_#12663])
* Remove ``contact_model`` ([#12719][_#12719])
* Several examples moved off of ``RigidBodyTree``:
  * ``rimless_wheel`` ([#12607][_#12607])
  * ``compass_gait`` ([#12618][_#12618])
  * ``kuka_simulation`` (and dependencies) ([#12688][_#12688])
  * ``particles`` ([#12715][_#12715])

# Miscellaneous features and fixes

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

# Documentation updates

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

# pydrake bindings

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

# Build system and dependencies

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

# Newly-deprecated items

* APIs:
  * Legacy ("attic") ``manipulation/util`` ([#12679][_#12679])
  * ``geometry::Identifier`` (moved to ``common::Identifier``) ([#12621][_#12621])
  * Some methods of ``geometry::SceneGraphInspector`` and
    ``geometry::GeometryState`` were renamed and their old spellings deprecated
    ([#12626][_#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
  *  ``nlohmann/json`` ([#12666][_#12666])

# Removal of deprecated items

* APIs
  * Removing deprecated ("attic") legacy support of:
    * ``drake::manipulation::dev::RemoteTreeViewerWrapper`` ([#12666][_#12666])
    * ``drake::manipulation::sensors::Xtion`` and its URDF models ([#12665][_#12665])
    * Legacy manipulation and its perception and related systems: ([#12677][_#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][_#12685])
  * ``SnoptSolver::is_thread_safe`` ([#12685][_#12685])
  * ``drake_optional`` and ``drake_variant`` ([#12682][_#12682])
  * ``text_logging_gflags`` ([#12680][_#12680])
  * ``MakeFileInputStreamOrThrow`` ([#12689][_#12689])
* Dependencies:
  * Spruce filesystem library ([#12681][_#12681])
* Examples:
  * Valkyrie ([#12664][_#12664])

# Notes

This release provides
[pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v0.15.0)
named ``drake-20200212-{bionic|mac}.tar.gz``. See
[Stable Releases](/from_binary.html#stable-releases) for instructions on how to use them.

Drake binary releases incorporate a pre-compiled version of
[SNOPT](https://ccom.ucsd.edu/~optimizers/solvers/snopt/) as part of the
[Mathematical Program toolbox](https://drake.mit.edu/doxygen_cxx/group__solvers.html).
Thanks to Philip E. Gill and Elizabeth Wong for their kind support.

[_#12440]: https://github.com/RobotLocomotion/drake/pull/12440
[_#12527]: https://github.com/RobotLocomotion/drake/pull/12527
[_#12562]: https://github.com/RobotLocomotion/drake/pull/12562
[_#12576]: https://github.com/RobotLocomotion/drake/pull/12576
[_#12579]: https://github.com/RobotLocomotion/drake/pull/12579
[_#12582]: https://github.com/RobotLocomotion/drake/pull/12582
[_#12585]: https://github.com/RobotLocomotion/drake/pull/12585
[_#12586]: https://github.com/RobotLocomotion/drake/pull/12586
[_#12588]: https://github.com/RobotLocomotion/drake/pull/12588
[_#12589]: https://github.com/RobotLocomotion/drake/pull/12589
[_#12595]: https://github.com/RobotLocomotion/drake/pull/12595
[_#12596]: https://github.com/RobotLocomotion/drake/pull/12596
[_#12599]: https://github.com/RobotLocomotion/drake/pull/12599
[_#12601]: https://github.com/RobotLocomotion/drake/pull/12601
[_#12602]: https://github.com/RobotLocomotion/drake/pull/12602
[_#12607]: https://github.com/RobotLocomotion/drake/pull/12607
[_#12614]: https://github.com/RobotLocomotion/drake/pull/12614
[_#12615]: https://github.com/RobotLocomotion/drake/pull/12615
[_#12617]: https://github.com/RobotLocomotion/drake/pull/12617
[_#12618]: https://github.com/RobotLocomotion/drake/pull/12618
[_#12619]: https://github.com/RobotLocomotion/drake/pull/12619
[_#12621]: https://github.com/RobotLocomotion/drake/pull/12621
[_#12626]: https://github.com/RobotLocomotion/drake/pull/12626
[_#12627]: https://github.com/RobotLocomotion/drake/pull/12627
[_#12629]: https://github.com/RobotLocomotion/drake/pull/12629
[_#12637]: https://github.com/RobotLocomotion/drake/pull/12637
[_#12639]: https://github.com/RobotLocomotion/drake/pull/12639
[_#12641]: https://github.com/RobotLocomotion/drake/pull/12641
[_#12642]: https://github.com/RobotLocomotion/drake/pull/12642
[_#12646]: https://github.com/RobotLocomotion/drake/pull/12646
[_#12651]: https://github.com/RobotLocomotion/drake/pull/12651
[_#12653]: https://github.com/RobotLocomotion/drake/pull/12653
[_#12658]: https://github.com/RobotLocomotion/drake/pull/12658
[_#12659]: https://github.com/RobotLocomotion/drake/pull/12659
[_#12663]: https://github.com/RobotLocomotion/drake/pull/12663
[_#12664]: https://github.com/RobotLocomotion/drake/pull/12664
[_#12665]: https://github.com/RobotLocomotion/drake/pull/12665
[_#12666]: https://github.com/RobotLocomotion/drake/pull/12666
[_#12667]: https://github.com/RobotLocomotion/drake/pull/12667
[_#12668]: https://github.com/RobotLocomotion/drake/pull/12668
[_#12669]: https://github.com/RobotLocomotion/drake/pull/12669
[_#12671]: https://github.com/RobotLocomotion/drake/pull/12671
[_#12675]: https://github.com/RobotLocomotion/drake/pull/12675
[_#12677]: https://github.com/RobotLocomotion/drake/pull/12677
[_#12679]: https://github.com/RobotLocomotion/drake/pull/12679
[_#12680]: https://github.com/RobotLocomotion/drake/pull/12680
[_#12681]: https://github.com/RobotLocomotion/drake/pull/12681
[_#12682]: https://github.com/RobotLocomotion/drake/pull/12682
[_#12683]: https://github.com/RobotLocomotion/drake/pull/12683
[_#12684]: https://github.com/RobotLocomotion/drake/pull/12684
[_#12685]: https://github.com/RobotLocomotion/drake/pull/12685
[_#12686]: https://github.com/RobotLocomotion/drake/pull/12686
[_#12687]: https://github.com/RobotLocomotion/drake/pull/12687
[_#12688]: https://github.com/RobotLocomotion/drake/pull/12688
[_#12689]: https://github.com/RobotLocomotion/drake/pull/12689
[_#12690]: https://github.com/RobotLocomotion/drake/pull/12690
[_#12692]: https://github.com/RobotLocomotion/drake/pull/12692
[_#12693]: https://github.com/RobotLocomotion/drake/pull/12693
[_#12694]: https://github.com/RobotLocomotion/drake/pull/12694
[_#12695]: https://github.com/RobotLocomotion/drake/pull/12695
[_#12696]: https://github.com/RobotLocomotion/drake/pull/12696
[_#12700]: https://github.com/RobotLocomotion/drake/pull/12700
[_#12711]: https://github.com/RobotLocomotion/drake/pull/12711
[_#12712]: https://github.com/RobotLocomotion/drake/pull/12712
[_#12715]: https://github.com/RobotLocomotion/drake/pull/12715
[_#12717]: https://github.com/RobotLocomotion/drake/pull/12717
[_#12719]: https://github.com/RobotLocomotion/drake/pull/12719

{% comment %}
  Changelog oldest_commit a5dafde3b0c766cd1f66549044e36ba1188f7635 (inclusive).
  Changelog newest_commit 4d32083579906867bb75d67fb0c1faac77f657a2 (inclusive).
{% endcomment %}
