---
title: Drake v0.13.0
date: 2019-12-17
released: 2019-12-17
---

# Announcements

* Drake's [tutorials][_tutorials] continue to improve, now including:
  * Rendering that uses MultibodyPlant ([#12388][_#12388])
  * Optimization using MultibodyPlant, focused on custom evaluators ([#12433][_#12433], [#12443][_#12443])

# Breaking Changes

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

* Remove all Bazel machinery for protobuf message generation ([#12450][_#12450])
* Remove drake::systems::EventCollection::Merge ([#12357][_#12357])

## Dynamical Systems

New features

* Usability improvements to SymbolicVectorSystem:
  * Add LinearizeDynamics ([#12466][_#12466])
  * Add dynamics_for_variable ([#12421][_#12421])
  * The setters for state, input, parameter, dynamics, and output offer a std::vector overload, so that a user can write ``.dynamics({-x_[1], -x_[0] + 3})``  ([#12421][_#12421])

Fixes

* Better error message when cloning a non-root Context ([#12391][_#12391])
* Improve documentation on integrators ([#12350][_#12350], [#12392][_#12392])
* Improve documentation on the use of accuracy in the Context ([#12428][_#12428])

## Mathematical Program

New features

* Add MathematicalProgram::indeterminates_index ([#12405][_#12405])
* Add MathematicalProgram::GetBindingVariableValues ([#12490][_#12490])
* Add drake::Evaluate for symbolic SparseMatrix ([#12406][_#12406])
* Add matrix version of drake::symbolic::Environment::insert ([#12409][_#12409])

Fixes

* Speed up symbolic::Polynomial::decision_variables by storing indeterminates and decision variables as members ([#11790][_#11790])
* Fix Eigen::SparseMatrix memory leak related to drake::symbolic::Expression ([#12459][_#12459])

## Multibody Dynamics

New features

* Add new generalized acceleration ports to MultibodyPlant ([#12354][_#12354])
* Implement ABA forward dynamics ([#12412][_#12412], [#12462][_#12462])
* Add missing operators to SpatialVector ([#12436][_#12436])
* Provide access to owning MultibodyPlant from any MultibodyElement ([#12380][_#12380])
* Add a query for signed distance between a single pair of geometries ([#12379][_#12379])
* Add Ellipsoid parsing from SDF ([#12324][_#12324])
* Extend Capsule Shape support for proximity queries ([#12343][_#12343], [#12332][_#12332])

Fixes

* Fix qdot-to-v mapping (and back) for discrete MultibodyPlant ([#12355][_#12355])
* Improve MultibodyPlant's TAMSI solver error messages ([#12361][_#12361])
* Improve documentation of forward dynamics algorithm and notation in MultibodyTree ([#12317][_#12317])
* Improve documentation of MultibodyTreeElement ([#12352][_#12352])
* Improve documentation of RollPitchYaw and RotationMatrix ([#12345][_#12345])
* Improve documentation of adding new Shape sub-classes ([#12372][_#12372])
* Improve documentation of QueryObject::ComputeContactSurfaces to reflect the current state of hydroelastic contact support ([#12413][_#12413])
* Remove expensive and unused "referring triangles" from SurfaceMesh ([#12438][_#12438])

New hydroelastic contact model in progress ([#12455][_#12455], [#12358][_#12358], [#12348][_#12348], [#12333][_#12333], [#12323][_#12323], [#12378][_#12378], [#12417][_#12417], [#12311][_#12311], [#12347][_#12347], [#12432][_#12432], [#12463][_#12463])

* Still only experimental
* Increase the number and types of shapes supported in the prototype
* Add more visualization infrastructure

## Miscellaneous features and fixes

Visualizer fixes:

* Update image_show.py for Python 3 ([#12422][_#12422])
* Avoid negative real time factors ([#12444][_#12444])

## pydrake bindings

New features

* Add pydrake.systems.planar_scenegraph_visualizer ([#12218][_#12218], [#12349][_#12349])
* Use lcm encoding (not protobuf) for call_python RPCs ([#12442][_#12442])

Fixes

* Fix pydrake.geometry submodules are part of .all ([#12383][_#12383])
* Fix pydrake.manipulation.simple_ui window resizing ([#12486][_#12486])
* Fix System name preservation during scalar conversion ([#12429][_#12429])
* Fix Sphinx ``__init__`` documentation in Python 3 ([#12452][_#12452])

Newly bound

* pydrake.geometry.GeometryProperties ([#12389][_#12389])
* pydrake.geometry.IllustrationProperties ([#12389][_#12389])
* pydrake.geometry.MakePhongIllustrationProperties ([#12389][_#12389])
* pydrake.geometry.PerceptionProperties ([#12389][_#12389])
* pydrake.geometry.ProximityProperties ([#12389][_#12389])
* pydrake.geometry.QueryObject.ComputeSignedDistancePairClosestPoints ([#12408][_#12408])
* pydrake.geometry.SceneGraph.AssignRole ([#12389][_#12389])
* pydrake.geometry.SceneGraph.RendererCount ([#12389][_#12389])
* pydrake.geometry.SceneGraphInspector.GetIllustrationProperties ([#12388][_#12388])
* pydrake.geometry.SceneGraphInspector.GetPerceptionProperties ([#12388][_#12388])
* pydrake.geometry.SceneGraphInspector.GetProximityProperties ([#12388][_#12388])
* pydrake.geometry.render.RenderLabel cast to to int ([#12390][_#12390])
* pydrake.multibody.inverse_kinematics.DistanceConstraint ([#12346][_#12346])
* pydrake.multibody.tree.RevoluteSpring ([#12481][_#12481])
* pydrake.multibody.tree.default_model_instance ([#12389][_#12389])
* pydrake.multibody.tree.world_model_instance ([#12389][_#12389])
* pydrake.solvers.mathematicalprogram.MathematicalProgram.AddConstraint ([#12371][_#12371])
* pydrake.solvers.mathematicalprogram.MathematicalProgram.AddQuadraticCost ([#12375][_#12375])
* pydrake.systems.analysis.Simulator.reset_context ([#12368][_#12368])
* pydrake.systems.framework.System.SetDefaultContext ([#12368][_#12368])

## Build system and dependencies

* Provide nightly binary docker images ([#10554][_#10554], [#12364][_#12364], [#12367][_#12367], [#12446][_#12446])
* Fix missing pthread linkopts for MOSEK™ ([#12337][_#12337])
* Fix variable name in FindTinyXML2 ([#12339][_#12339])
* Fix ByteSizeLong for Protobuf 3.11.0 or above ([#12425][_#12425])
* Fix linters' find_all_sources --all commands ([#12369][_#12369], [#12385][_#12385], [#12424][_#12424])
* Fix doxygen dot path ([#12416][_#12416])
* Add pkg-config as binary dependency ([#12339][_#12339])
* Add pandas as a source dependency ([#12328][_#12328])
* Add rules_python as a source dependency for python, and define use a toolchain for Python ([#12377][_#12377])
* Change graphviz from source dependency to binary dependency ([#12340][_#12340])
* Change jupyter notebook and ipywidgets from source dependencies to binary dependencies in anticipation of installing Drake's tutorial notebooks ([#12461][_#12461])
* Upgrade meshcat_python to latest commit ([#12365][_#12365])
* Upgrade fcl to latest commit ([#12395][_#12395])
* Upgrade ghc_filesystem to latest release 1.2.8 ([#12395][_#12395])
* Upgrade ignition_math to latest release 6.4.0 ([#12395][_#12395])
* Upgrade json to latest release 3.7.3 ([#12395][_#12395])
* Upgrade lcm to latest commit ([#12457][_#12457])
* Upgrade meshcat to latest commit ([#12395][_#12395])
* Upgrade optitrack-driver to latest commit ([#12377][_#12377])
* Upgrade sdformat to latest release 8.6.0 ([#12395][_#12395])
* Upgrade semantic_version to latest release 2.8.3 ([#12395][_#12395])
* Upgrade octomap to latest release 1.9.1 ([#12426][_#12426])
* Upgrade ghc_filesystem to latest release 1.2.10 ([#12426][_#12426])
* Upgrade fmt to latest release 6.1.2 ([#12426][_#12426], [#12487][_#12487])
* Upgrade supported Bazel version to 1.2 ([#12396][_#12396])
  * Users who compile Drake from source as a bazel external (as in the [drake_bazel_external][_drake_bazel_external] pattern) should no longer set ``build --incompatible_remove_legacy_whole_archive=false`` in their project’s ``.bazelrc`` ([#12262][_#12262])
* Upgrade supported macOS CMake version to 3.16  ([#12396][_#12396])
* Upgrade supported macOS Xcode version to 11.2 ([#12331][_#12331])
* Un-pin sphinx for macOS ([#12467][_#12467])
* Do not install Python 2.7 on Mac ([#12339][_#12339])
* Remove all Bazel machinery for protobuf message generation ([#12450][_#12450]), specifically:
  * @com_google_protobuf//...
  * @drake//:protobuf
  * @drake//:protobuf_python
  * @drake//:protoc
  * @drake//tools/skylark:drake_proto.bzl
  * @protoc//...
* Add experimental drake_bazel_installed support ([#12402][_#12402])

## Newly-deprecated APIs

* drake::common::NewPythonVariable ([#12442][_#12442])
* drake::multibody::MultibodyTreeElement ([#12352][_#12352])
* drake::geometry::Sphere::get_radius ([#12373][_#12373])
* drake::geometry::Cylinder::get_radius ([#12373][_#12373])
* drake::geometry::Cylinder::get_length ([#12373][_#12373])
* drake::geometry::Capsule::get_radius ([#12373][_#12373])
* drake::geometry::Capsule::get_length ([#12373][_#12373])
* drake::geometry::Ellipsoid::get_a ([#12373][_#12373])
* drake::geometry::Ellipsoid::get_b ([#12373][_#12373])
* drake::geometry::Ellipsoid::get_c ([#12373][_#12373])

## Removal of deprecated APIs

* drake::common::MatlabRPC ([#12431][_#12431])
  * Use PythonRemoteMessage instead.
* drake::common::MatlabArray ([#12431][_#12431])
  * Use PythonRemoteData instead.
* drake::common::ToMatlabArray ([#12431][_#12431])
  * Use ToPythonRemoteData instead.
* drake::math::RigidTransform::FromMatrix4 ([#12431][_#12431])
  * Use the ``pose=`` constructor instead.
* drake::geometry::ContactSurface::mesh ([#12431][_#12431])
  * Use mesh_W instead.
* drake::geometry::SurfaceVertex::Transform ([#12431][_#12431])
  * Use TransformInPlace instead.
* pydrake.multibody.ContactResults.num_contacts ([#12431][_#12431])
  * Use num_point_pair_contacts instead.
* pydrake.multibody.ContactResults.contact_info ([#12431][_#12431])
  * Use point_pair_contact_info instead.
* pydrake Eigen.Quaternion.multiply with ``position=`` kwargs ([#12431][_#12431])
  * Use ``vector=`` instead of ``position=``.

This release provides
[pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v0.13.0)
named ``drake-20191217-{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.

[_drake_bazel_external]: https://github.com/RobotLocomotion/drake-external-examples/tree/master/drake_bazel_external
[_tutorials]: https://github.com/RobotLocomotion/drake/tree/master/tutorials

[_#10554]: https://github.com/RobotLocomotion/drake/pull/10554
[_#11790]: https://github.com/RobotLocomotion/drake/pull/11790
[_#12218]: https://github.com/RobotLocomotion/drake/pull/12218
[_#12262]: https://github.com/RobotLocomotion/drake/pull/12262
[_#12311]: https://github.com/RobotLocomotion/drake/pull/12311
[_#12317]: https://github.com/RobotLocomotion/drake/pull/12317
[_#12323]: https://github.com/RobotLocomotion/drake/pull/12323
[_#12324]: https://github.com/RobotLocomotion/drake/pull/12324
[_#12328]: https://github.com/RobotLocomotion/drake/pull/12328
[_#12331]: https://github.com/RobotLocomotion/drake/pull/12331
[_#12332]: https://github.com/RobotLocomotion/drake/pull/12332
[_#12333]: https://github.com/RobotLocomotion/drake/pull/12333
[_#12337]: https://github.com/RobotLocomotion/drake/pull/12337
[_#12339]: https://github.com/RobotLocomotion/drake/pull/12339
[_#12340]: https://github.com/RobotLocomotion/drake/pull/12340
[_#12343]: https://github.com/RobotLocomotion/drake/pull/12343
[_#12345]: https://github.com/RobotLocomotion/drake/pull/12345
[_#12346]: https://github.com/RobotLocomotion/drake/pull/12346
[_#12347]: https://github.com/RobotLocomotion/drake/pull/12347
[_#12348]: https://github.com/RobotLocomotion/drake/pull/12348
[_#12349]: https://github.com/RobotLocomotion/drake/pull/12349
[_#12350]: https://github.com/RobotLocomotion/drake/pull/12350
[_#12352]: https://github.com/RobotLocomotion/drake/pull/12352
[_#12354]: https://github.com/RobotLocomotion/drake/pull/12354
[_#12355]: https://github.com/RobotLocomotion/drake/pull/12355
[_#12357]: https://github.com/RobotLocomotion/drake/pull/12357
[_#12358]: https://github.com/RobotLocomotion/drake/pull/12358
[_#12361]: https://github.com/RobotLocomotion/drake/pull/12361
[_#12364]: https://github.com/RobotLocomotion/drake/pull/12364
[_#12365]: https://github.com/RobotLocomotion/drake/pull/12365
[_#12367]: https://github.com/RobotLocomotion/drake/pull/12367
[_#12368]: https://github.com/RobotLocomotion/drake/pull/12368
[_#12369]: https://github.com/RobotLocomotion/drake/pull/12369
[_#12371]: https://github.com/RobotLocomotion/drake/pull/12371
[_#12372]: https://github.com/RobotLocomotion/drake/pull/12372
[_#12373]: https://github.com/RobotLocomotion/drake/pull/12373
[_#12375]: https://github.com/RobotLocomotion/drake/pull/12375
[_#12377]: https://github.com/RobotLocomotion/drake/pull/12377
[_#12378]: https://github.com/RobotLocomotion/drake/pull/12378
[_#12379]: https://github.com/RobotLocomotion/drake/pull/12379
[_#12380]: https://github.com/RobotLocomotion/drake/pull/12380
[_#12383]: https://github.com/RobotLocomotion/drake/pull/12383
[_#12385]: https://github.com/RobotLocomotion/drake/pull/12385
[_#12388]: https://github.com/RobotLocomotion/drake/pull/12388
[_#12389]: https://github.com/RobotLocomotion/drake/pull/12389
[_#12390]: https://github.com/RobotLocomotion/drake/pull/12390
[_#12391]: https://github.com/RobotLocomotion/drake/pull/12391
[_#12392]: https://github.com/RobotLocomotion/drake/pull/12392
[_#12395]: https://github.com/RobotLocomotion/drake/pull/12395
[_#12396]: https://github.com/RobotLocomotion/drake/pull/12396
[_#12402]: https://github.com/RobotLocomotion/drake/pull/12402
[_#12405]: https://github.com/RobotLocomotion/drake/pull/12405
[_#12406]: https://github.com/RobotLocomotion/drake/pull/12406
[_#12408]: https://github.com/RobotLocomotion/drake/pull/12408
[_#12409]: https://github.com/RobotLocomotion/drake/pull/12409
[_#12412]: https://github.com/RobotLocomotion/drake/pull/12412
[_#12413]: https://github.com/RobotLocomotion/drake/pull/12413
[_#12416]: https://github.com/RobotLocomotion/drake/pull/12416
[_#12417]: https://github.com/RobotLocomotion/drake/pull/12417
[_#12421]: https://github.com/RobotLocomotion/drake/pull/12421
[_#12422]: https://github.com/RobotLocomotion/drake/pull/12422
[_#12424]: https://github.com/RobotLocomotion/drake/pull/12424
[_#12425]: https://github.com/RobotLocomotion/drake/pull/12425
[_#12426]: https://github.com/RobotLocomotion/drake/pull/12426
[_#12428]: https://github.com/RobotLocomotion/drake/pull/12428
[_#12429]: https://github.com/RobotLocomotion/drake/pull/12429
[_#12431]: https://github.com/RobotLocomotion/drake/pull/12431
[_#12432]: https://github.com/RobotLocomotion/drake/pull/12432
[_#12433]: https://github.com/RobotLocomotion/drake/pull/12433
[_#12436]: https://github.com/RobotLocomotion/drake/pull/12436
[_#12438]: https://github.com/RobotLocomotion/drake/pull/12438
[_#12442]: https://github.com/RobotLocomotion/drake/pull/12442
[_#12443]: https://github.com/RobotLocomotion/drake/pull/12443
[_#12444]: https://github.com/RobotLocomotion/drake/pull/12444
[_#12446]: https://github.com/RobotLocomotion/drake/pull/12446
[_#12450]: https://github.com/RobotLocomotion/drake/pull/12450
[_#12452]: https://github.com/RobotLocomotion/drake/pull/12452
[_#12455]: https://github.com/RobotLocomotion/drake/pull/12455
[_#12457]: https://github.com/RobotLocomotion/drake/pull/12457
[_#12459]: https://github.com/RobotLocomotion/drake/pull/12459
[_#12461]: https://github.com/RobotLocomotion/drake/pull/12461
[_#12462]: https://github.com/RobotLocomotion/drake/pull/12462
[_#12463]: https://github.com/RobotLocomotion/drake/pull/12463
[_#12466]: https://github.com/RobotLocomotion/drake/pull/12466
[_#12467]: https://github.com/RobotLocomotion/drake/pull/12467
[_#12481]: https://github.com/RobotLocomotion/drake/pull/12481
[_#12486]: https://github.com/RobotLocomotion/drake/pull/12486
[_#12487]: https://github.com/RobotLocomotion/drake/pull/12487
[_#12490]: https://github.com/RobotLocomotion/drake/pull/12490

{% comment %}
Changelog oldest_commit bda9c0f2d2f06bd16f9fc659d976b7bea1fd3216 (inclusive).
Changelog newest_commit e7f352d26827b37d63d8f609ee0a4d5195ccf9b3 (inclusive).
{% endcomment %}
