---
title: Drake v0.16.0
date: 2020-03-11
released: 2020-03-11
---

# Announcements

* New tutorial on nonlinear programming ([#12744][_#12744])
* The C++ Doxygen pages are somewhat less cluttered now ([#12795][_#12795], [#12796][_#12796])

# Breaking Changes since v0.15.0

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

* Drake no longer supports user-defined scalar types ([#12657][_#12657], [#12797][_#12797], [#12823][_#12823], [#12816][_#12816], [#12825][_#12825])
  * See issue [#12814][_#12814] for more details.
* Removed the ability to override LeafSystem allocation methods ([#12792][_#12792])
  * Subclasses should use the model vector (or model value) APIs to declare
    state, parameters, etc. instead of overriding these virtual methods.
* Removed pydrake.examples.AcrobotPlant.CalcPotentialEnergy ([#12794][_#12794])
* Removed pydrake.examples.AcrobotPlant.CalcKineticEnergy ([#12794][_#12794])
* Renamed RigidBodyTree-based implementation of
  drake::manipulation::planner::ConstraintRelaxingIk to
  drake::manipulation::planner::ConstraintRelaxingIkRbt ([#12732][_#12732])
* Removed godotengine build rules ([#12826][_#12826])

# Changes since v0.15.0:

## Dynamical Systems

New features

* Allow specific cache entries to be initially disabled ([#12803][_#12803])
* Systems reject ContinuousState that they did not create ([#12630][_#12630])
* Added math::IsPositiveDefinite ([#12813][_#12813])
* Added first implementation of general region of attraction code ([#12827][_#12827])

Fixes

* Diagrams now report correct state counts ([#12701][_#12701])

## Mathematical Program

No changes in this release.

## Multibody Dynamics

New features

* Added more MultibodyPlant intermediate calculations to cache
  * Shift vector p_PoBo_W to cache ([#12724][_#12724])
  * spatial acceleration bias Ab_WB and ABA bias Zb_Bo_W ([#12716][_#12716], [#12750][_#12750])
* Improved error message for invalid spatial inertia ([#12766][_#12766])
* SpatialInertia support for massless bodies ([#12809][_#12809])
* Velocity-implicit Euler integrator in progress ([#12543][_#12543], [#12740][_#12740])
* Added doc about the availability of force/torque sensor ([#12791][_#12791])
* Added support for derivative of signed distance between a pair of geometries ([#12720][_#12720])
* Added build system skeleton for forthcoming OpenGL render engine ([#12623][_#12623])
* Implemented Composite Body Algorithm to compute the mass matrix ([#12764][_#12764])
* Discrete-mode MultibodyPlant is faster, particularly in cases with branched
  kinematics, due to incorporation of Composite Body Algorithm in the discrete solver ([#12838][_#12838])
* New hydroelastic contact model in progress ([#12597][_#12597], [#12699][_#12699], [#12751][_#12751],
  [#12763][_#12763], [#12745][_#12745], [#12730][_#12730], [#12840][_#12840])
  * Still only experimental
  * Improve performance
  * Improve architecture

Fixes

* Got rid of accidental heap allocation within CalcArticulatedBodyForceBiasCache() ([#12728][_#12728])
* Alphabetized targets in geometry/proximity/BUILD ([#12748][_#12748])
* Quarantined FCL's haphazard use of const in broadphase ([#12746][_#12746])
* Fixed catastrophic cancellation in point mass unit inertias ([#12758][_#12758])

## Miscellaneous features and fixes

* Add the capability to visualize collisions in geometry_inspector ([#12736][_#12736])
* Add operator<< to sorted_pair ([#12801][_#12801])
* Fixed allegro_hand discrete update period ([#12734][_#12734])
* Improve the simple_gripper example to make it possible to test more integrators ([#12742][_#12742])
* Added more methods to symbolic::Polynomial ([#12835][_#12835])
* Fixed accidental quadratic parsing of Yaml ([#12830][_#12830])

## pydrake bindings

* pydrake.systems.framework.System.EvalKineticEnergy ([#12794][_#12794]) 
* pydrake.systems.framework.System.EvalPotentialEnergy ([#12794][_#12794]) 
* pydrake.systems.primitives.DiscreteDerivative ([#12770][_#12770])
* pydrake.systems.primitives.StateInterpolatorWithDiscreteDerivative ([#12770][_#12770])
* Fixed pydrake.solvers.ScsSolverDetails numpy-typed fields ([#12737][_#12737])
* Fixed pydrake.solvers.SnoptSolverDetails numpy-typed fields ([#12737][_#12737])

## Build system and dependencies

* GCC 7.5 is now Ubuntu's default compiler ([#12845][_#12845])
* Added new dependency on OpenGL on Ubuntu only ([#12623][_#12623])
* Use system Eigen >= 3.3.4, not downloaded bitbucket tag ([#12784][_#12784], [#12780][_#12780])
* Upgraded bazel minimum and recommended versions to 2.0 and 2.1 respectively ([#12729][_#12729])
* Upgraded buildifier to latest release 2.0.0 ([#12836][_#12836])
* Upgraded fcl to latest release ([#12762][_#12762])
* Upgraded ghc_filesystem to latest release 1.3.0 ([#12799][_#12799])
* Upgraded styleguide to latest commit (includes cpplint changes) ([#12765][_#12765], [#12800][_#12800], [#12776][_#12776])
* Fixed missing load() in drake_bazel_installed support ([#12605][_#12605])

## Newly-deprecated APIs

* APIs:
  * drake::examples::kuka_iiwa_arm::EncodeKeyFrames ([#12732][_#12732])
  * drake::examples::kuka_iiwa_arm::IiwaContactResultsToExternalTorque ([#12732][_#12732])
  * drake::examples::kuka_iiwa_arm::VerifyIiwaTree ([#12732][_#12732])
  * drake::manipulation::planner::ConstraintRelaxingIkRbt ([#12732][_#12732])
  * DRAKE_DECLARE_COPY_AND_MOVE_AND_ASSIGN ([#12735][_#12735])
  * DRAKE_DEFINE_DEFAULT_COPY_AND_MOVE_AND_ASSIGN_T ([#12735][_#12735])

## Removal of deprecated items

* APIs
  * drake::geometry::Capsule::get_length ([#12781][_#12781])
  * drake::geometry::Capsule::get_radius ([#12781][_#12781])
  * drake::geometry::Cylinder::get_length ([#12781][_#12781])
  * drake::geometry::Cylinder::get_radius ([#12781][_#12781])
  * drake::geometry::Ellipsoid::get_a ([#12781][_#12781])
  * drake::geometry::Ellipsoid::get_b ([#12781][_#12781])
  * drake::geometry::Ellipsoid::get_c ([#12781][_#12781])
  * drake::geometry::Sphere::get_radius ([#12781][_#12781])
  * pydrake.attic.multibody.rigid_body_tree.RigidBodyTree.number_of_positions ([#12781][_#12781])
  * pydrake.attic.multibody.rigid_body_tree.RigidBodyTree.number_of_velocities ([#12781][_#12781])
  * pydrake.geometry.Capsule.get_length ([#12781][_#12781])
  * pydrake.geometry.Capsule.get_radius ([#12781][_#12781])
  * pydrake.geometry.Cylinder.get_length ([#12781][_#12781])
  * pydrake.geometry.Cylinder.get_radius ([#12781][_#12781])
  * pydrake.geometry.Ellipsoid.get_a ([#12781][_#12781])
  * pydrake.geometry.Ellipsoid.get_b ([#12781][_#12781])
  * pydrake.geometry.Ellipsoid.get_c ([#12781][_#12781])
  * pydrake.geometry.Sphere.get_radius ([#12781][_#12781])
  * DRAKE_SPDLOG_TRACE ([#12781][_#12781])
  * DRAKE_SPDLOG_DEBUG ([#12781][_#12781])
  * drake/multibody/tree/multibody_tree_element.h header ([#12781][_#12781])
* Examples:
  * Double pendulum ([#12725][_#12725])
  * PR2 Passive Simulation ([#12708][_#12708])

# Notes

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

[_#12543]: https://github.com/RobotLocomotion/drake/pull/12543
[_#12597]: https://github.com/RobotLocomotion/drake/pull/12597
[_#12605]: https://github.com/RobotLocomotion/drake/pull/12605
[_#12623]: https://github.com/RobotLocomotion/drake/pull/12623
[_#12630]: https://github.com/RobotLocomotion/drake/pull/12630
[_#12657]: https://github.com/RobotLocomotion/drake/pull/12657
[_#12699]: https://github.com/RobotLocomotion/drake/pull/12699
[_#12701]: https://github.com/RobotLocomotion/drake/pull/12701
[_#12708]: https://github.com/RobotLocomotion/drake/pull/12708
[_#12716]: https://github.com/RobotLocomotion/drake/pull/12716
[_#12720]: https://github.com/RobotLocomotion/drake/pull/12720
[_#12724]: https://github.com/RobotLocomotion/drake/pull/12724
[_#12725]: https://github.com/RobotLocomotion/drake/pull/12725
[_#12728]: https://github.com/RobotLocomotion/drake/pull/12728
[_#12729]: https://github.com/RobotLocomotion/drake/pull/12729
[_#12730]: https://github.com/RobotLocomotion/drake/pull/12730
[_#12732]: https://github.com/RobotLocomotion/drake/pull/12732
[_#12734]: https://github.com/RobotLocomotion/drake/pull/12734
[_#12735]: https://github.com/RobotLocomotion/drake/pull/12735
[_#12736]: https://github.com/RobotLocomotion/drake/pull/12736
[_#12737]: https://github.com/RobotLocomotion/drake/pull/12737
[_#12740]: https://github.com/RobotLocomotion/drake/pull/12740
[_#12742]: https://github.com/RobotLocomotion/drake/pull/12742
[_#12744]: https://github.com/RobotLocomotion/drake/pull/12744
[_#12745]: https://github.com/RobotLocomotion/drake/pull/12745
[_#12746]: https://github.com/RobotLocomotion/drake/pull/12746
[_#12748]: https://github.com/RobotLocomotion/drake/pull/12748
[_#12750]: https://github.com/RobotLocomotion/drake/pull/12750
[_#12751]: https://github.com/RobotLocomotion/drake/pull/12751
[_#12758]: https://github.com/RobotLocomotion/drake/pull/12758
[_#12762]: https://github.com/RobotLocomotion/drake/pull/12762
[_#12763]: https://github.com/RobotLocomotion/drake/pull/12763
[_#12764]: https://github.com/RobotLocomotion/drake/pull/12764
[_#12765]: https://github.com/RobotLocomotion/drake/pull/12765
[_#12766]: https://github.com/RobotLocomotion/drake/pull/12766
[_#12770]: https://github.com/RobotLocomotion/drake/pull/12770
[_#12776]: https://github.com/RobotLocomotion/drake/pull/12776
[_#12780]: https://github.com/RobotLocomotion/drake/pull/12780
[_#12781]: https://github.com/RobotLocomotion/drake/pull/12781
[_#12784]: https://github.com/RobotLocomotion/drake/pull/12784
[_#12791]: https://github.com/RobotLocomotion/drake/pull/12791
[_#12792]: https://github.com/RobotLocomotion/drake/pull/12792
[_#12794]: https://github.com/RobotLocomotion/drake/pull/12794
[_#12795]: https://github.com/RobotLocomotion/drake/pull/12795
[_#12796]: https://github.com/RobotLocomotion/drake/pull/12796
[_#12797]: https://github.com/RobotLocomotion/drake/pull/12797
[_#12799]: https://github.com/RobotLocomotion/drake/pull/12799
[_#12800]: https://github.com/RobotLocomotion/drake/pull/12800
[_#12801]: https://github.com/RobotLocomotion/drake/pull/12801
[_#12803]: https://github.com/RobotLocomotion/drake/pull/12803
[_#12809]: https://github.com/RobotLocomotion/drake/pull/12809
[_#12813]: https://github.com/RobotLocomotion/drake/pull/12813
[_#12814]: https://github.com/RobotLocomotion/drake/pull/12814
[_#12816]: https://github.com/RobotLocomotion/drake/pull/12816
[_#12823]: https://github.com/RobotLocomotion/drake/pull/12823
[_#12825]: https://github.com/RobotLocomotion/drake/pull/12825
[_#12826]: https://github.com/RobotLocomotion/drake/pull/12826
[_#12827]: https://github.com/RobotLocomotion/drake/pull/12827
[_#12830]: https://github.com/RobotLocomotion/drake/pull/12830
[_#12835]: https://github.com/RobotLocomotion/drake/pull/12835
[_#12836]: https://github.com/RobotLocomotion/drake/pull/12836
[_#12838]: https://github.com/RobotLocomotion/drake/pull/12838
[_#12840]: https://github.com/RobotLocomotion/drake/pull/12840
[_#12845]: https://github.com/RobotLocomotion/drake/pull/12845

{% comment %}
Current oldest_commit 65e58dfe7ef972ac524c8ab683db490548ac4c42 (inclusive).
Current newest_commit 2d4887435434b096ba23249fd39f195b97b7efa5 (inclusive).
{% endcomment %}
