---
title: Drake v0.20.0
date: 2020-07-17
released: 2020-07-17
---

# Announcements

On macOS, Homebrew now symlinks Drake's compatible version of Python 3 (3.8)
into ``/usr/local/bin/``, so it is on the ``$PATH`` by default.  There is no
longer any need to add ``/usr/local/opt/python@3.8/bin`` to your ``$PATH``.

<div class="warning" markdown="1">
The newly-added feature for JavaScript system diagram visualization
([#13644][_#13644]) with function name ``drake::systems::GenerateHtml`` in C++ and
``pydrake.systems.framework.GenerateHtml`` in Python fetches the GoJS graph
library in your browser with only an evaluation license.  We recommend
avoiding this new feature while we sort out the licensing question
([#13705][_#13705]).
</div>

# Breaking changes since v0.19.0

There are no breaking changes that did not undergo a deprecation period.

# Changes since v0.19.0:

## Dynamical Systems

New features

* Add SystemVisitor to introspect Diagrams ([#13628][_#13628])
* Add JavaScript system diagram visualization ([#13644][_#13644])

Fixes

* None

## Mathematical Program

New features

* Create even or odd degree monomial basis ([#13605][_#13605])
* SdpaFreeFormat can remove free variables ([#13600][_#13600], [#13669][_#13669], [#13685][_#13685], [#13687][_#13687])
* GenerateSDPA supports removing free variables ([#13636][_#13636])
* MathematicalProgram creates even or odd degree polynomials ([#13637][_#13637], [#13641][_#13641])

Fixes

* None

## Multibody Dynamics

New features

* Add accelerometer sensor ([#13501][_#13501])
* Add gyroscope sensor ([#13604][_#13604])
* Enable CalcBiasSpatialAcceleration to have non-world measured-in-frame ([#13453][_#13453])
* Enable CalcBiasTranslationalAcceleration for non-world measured-in frame ([#13587][_#13587])
* RenderEngineGl is now available ([#13584][_#13584], [#13616][_#13616], [#13626][_#13626], [#13629][_#13629], [#13659][_#13659])
* RenderEngineVtk now uses full camera intrinsics ([#13655][_#13655])
* Extend camera intrinsics into geometry and geometry/render ([#13557][_#13557], [#13634][_#13634], [#13635][_#13635])
* IllustrationProperties can be updated after parsing ([#13598][_#13598])
* Allow changing point contact parameters on a per-geometry basis via SceneGraph; these become Systems Framework parameters that live in the Context ([#13630][_#13630], [#13686][_#13686])

Fixes

* Fix BeamModel's scalar conversion constructor ([#13615][_#13615])
* Declare SceneGraph related ports in MultibodyPlant constructor ([#13558][_#13558])
* Fix MultibodyPlant overflow with >128 contact points ([#13676][_#13676])

## Tutorials and examples

* Use JavaScript system diagram visualization in dynamical_system.ipynb ([#13644][_#13644])
* Move manipulation station clutter clearing bins lower relative to robot to dramatically improve kinematic feasibility ([#13666][_#13666])

## Miscellaneous features and fixes

* yaml: Add retain_map_defaults to YamlReadArchive::Options ([#13590][_#13590])
* yaml: Permit writing variant values beyond the 0'th index ([#13631][_#13631])
* yaml: Correctly write out empty sub-structs ([#13679][_#13679])
* planar_gripper: Add additional lcm message types ([#13554][_#13554])

## pydrake bindings

New features

* Add ConnectMeshcatVisualizer sugar ([#13632][_#13632])

Fixes

* Pass animation arguments through to meshcat ([#13643][_#13643])
* Size the CalcJacobianTranslationalVelocity output matrix correctly ([#13653][_#13653])

Newly bound

* pydrake.examples.acrobot.AcrobotPlant.get_mutable_parameters ([#13556][_#13556])
* pydrake.examples.acrobot.AcrobotPlant.get_mutable_state ([#13556][_#13556])
* pydrake.examples.acrobot.AcrobotPlant.get_parameters ([#13556][_#13556])
* pydrake.examples.acrobot.AcrobotPlant.get_state ([#13556][_#13556])
* pydrake.geometry.Capsule ([#13559][_#13559])
* pydrake.geometry.Ellipsoid ([#13559][_#13559])
* pydrake.geometry.QueryObject.X_PF ([#13559][_#13559])
* pydrake.geometry.QueryObject.X_WF ([#13559][_#13559])
* pydrake.geometry.QueryObject.X_WG ([#13559][_#13559])
* pydrake.geometry.SceneGraphInspector.GetName ([#13559][_#13559])
* pydrake.geometry.SceneGraphInspector.GetPoseInParent ([#13559][_#13559])
* pydrake.geometry.SceneGraphInspector.GetSourceName ([#13559][_#13559])
* pydrake.geometry.SceneGraphInspector.NumAnchoredGeometries ([#13559][_#13559])
* pydrake.geometry.SceneGraphInspector.NumDynamicGeometries ([#13559][_#13559])
* pydrake.geometry.SceneGraphInspector.NumDynamicGeometries ([#13559][_#13559])
* pydrake.geometry.SceneGraphInspector.NumGeometriesWithRole ([#13559][_#13559])
* pydrake.geometry.SceneGraphInspector.SourceIsRegistered ([#13559][_#13559])
* pydrake.multibody.plant.MultibodyPlant.CalcBiasSpatialAcceleration ([#13638][_#13638])
* pydrake.multibody.plant.MultibodyPlant.CalcBiasTranslationalAcceleration ([#13638][_#13638])
* pydrake.multibody.plant.MultibodyPlant.CalcCenterOfMassPosition ([#13594][_#13594])
* pydrake.solvers.MathematicalProgramResult.set_x_val ([#13577][_#13577])

## Build system and dependencies

* On macOS, use Sphinx from Homebrew instead of PyPI ([#13551][_#13551], [#13575][_#13575])
* On macOS, Drake's supported python3.8 is now on the default PATH ([#13660][_#13660], [#13668][_#13668])
* On Ubuntu, the minimum GCC version is now 7.5 ([#13611][_#13611])
* On Ubuntu, the supported Clang version is now 9 ([#13650][_#13650], [#13656][_#13656])
* On Ubuntu, GL-related dependencies are more precise and use libOpenGL instead of libGL ([#13649][_#13649])
* Rebuild VTK and drake-visualizer against OpenGL ([#13649][_#13649])
* Fix Ubuntu Focal 20.04 to use C++ flavor of nlopt ([#13633][_#13633])
* Upgrade buildifier to latest release 3.3.0 ([#13620][_#13620])
* Upgrade fcl to latest commit ([#13621][_#13621])
* Upgrade fmt to latest release 7.0.1 ([#13667][_#13667])
* Upgrade googlebenchmark to latest release 1.5.1 ([#13623][_#13623])
* Upgrade lcm to latest commit ([#13622][_#13622])
* Upgrade pybind11 fork to latest commit ([#13579][_#13579])
* Upgrade spdlog to latest release 1.7.0 ([#13667][_#13667])

## Newly-deprecated APIs

* Automatic conversion and interop between RigidTransform/Isometry3 ([#13595][_#13595], [#13607][_#13607], [#13608][_#13608])
  * drake::math::RigidTransform::linear
  * drake::math::RigidTransform::matrix
  * drake::math::RigidTransform::operator Isometry3
* All functions within manipulation/util/bot_core_lcm_encode_decode.h ([#13596][_#13596])
  * ::EncodeVector3d
  * ::DecodeVector3d
  * ::EncodeQuaternion
  * ::DecodeQuaternion
  * ::EncodePose
  * ::DecodePose
  * ::EncodeTwist
  * ::DecodeTwist
* manipulation/models/wsg_50_description URDF and meshes ([#13693][_#13693])
* pydrake.geometry.SceneGraphInspector.GetNameByFrameId ([#13559][_#13559])
* pydrake.geometry.SceneGraphInspector.GetNameByGeometryId ([#13559][_#13559])

## Removal of deprecated items

* ::Polynomial<T> ([#13610][_#13610])
* ::Polynomiald ([#13610][_#13610])
* ::TrigPoly<T> ([#13610][_#13610])
* ::TrigPolyd ([#13610][_#13610])
* ::VectorXPoly ([#13610][_#13610])
* ::VectorXTrigPoly ([#13610][_#13610])
* drake::examples::kuka_iiwa_arm::ApplyJointVelocityLimits ([#13612][_#13612])
* drake::examples::kuka_iiwa_arm::EncodeKeyFrames ([#13612][_#13612])
* drake::symbolic::Expression::ToPolynomial ([#13610][_#13610])
* drake::systems::AntiderivativeFunction::SpecifiedValues ([#13610][_#13610])
* drake::systems::InitialValueProblem::ODEFunction ([#13610][_#13610])
* drake::systems::InitialValueProblem::SpecifiedValues ([#13610][_#13610])
* drake::systems::ScalarInitialValueProblem::ScalarODEFunction ([#13610][_#13610])
* drake::systems::ScalarInitialValueProblem::SpecifiedValues ([#13610][_#13610])
* drake::trajectories::PiecewisePolynomial::Cubic ([#13610][_#13610])
* drake::trajectories::PiecewisePolynomial::Pchip ([#13610][_#13610])
* `drake::trajectories::PiecewisePolynomial<T>::PolynomialType` ([#13610][_#13610])
* drake::trajectories::PiecewiseQuaternionSlerp::get_quaternion_knots ([#13610][_#13610])

# Notes

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

[_#13453]: https://github.com/RobotLocomotion/drake/pull/13453
[_#13501]: https://github.com/RobotLocomotion/drake/pull/13501
[_#13551]: https://github.com/RobotLocomotion/drake/pull/13551
[_#13554]: https://github.com/RobotLocomotion/drake/pull/13554
[_#13556]: https://github.com/RobotLocomotion/drake/pull/13556
[_#13557]: https://github.com/RobotLocomotion/drake/pull/13557
[_#13558]: https://github.com/RobotLocomotion/drake/pull/13558
[_#13559]: https://github.com/RobotLocomotion/drake/pull/13559
[_#13575]: https://github.com/RobotLocomotion/drake/pull/13575
[_#13577]: https://github.com/RobotLocomotion/drake/pull/13577
[_#13579]: https://github.com/RobotLocomotion/drake/pull/13579
[_#13584]: https://github.com/RobotLocomotion/drake/pull/13584
[_#13587]: https://github.com/RobotLocomotion/drake/pull/13587
[_#13590]: https://github.com/RobotLocomotion/drake/pull/13590
[_#13594]: https://github.com/RobotLocomotion/drake/pull/13594
[_#13595]: https://github.com/RobotLocomotion/drake/pull/13595
[_#13596]: https://github.com/RobotLocomotion/drake/pull/13596
[_#13598]: https://github.com/RobotLocomotion/drake/pull/13598
[_#13600]: https://github.com/RobotLocomotion/drake/pull/13600
[_#13604]: https://github.com/RobotLocomotion/drake/pull/13604
[_#13605]: https://github.com/RobotLocomotion/drake/pull/13605
[_#13607]: https://github.com/RobotLocomotion/drake/pull/13607
[_#13608]: https://github.com/RobotLocomotion/drake/pull/13608
[_#13610]: https://github.com/RobotLocomotion/drake/pull/13610
[_#13611]: https://github.com/RobotLocomotion/drake/pull/13611
[_#13612]: https://github.com/RobotLocomotion/drake/pull/13612
[_#13615]: https://github.com/RobotLocomotion/drake/pull/13615
[_#13616]: https://github.com/RobotLocomotion/drake/pull/13616
[_#13620]: https://github.com/RobotLocomotion/drake/pull/13620
[_#13621]: https://github.com/RobotLocomotion/drake/pull/13621
[_#13622]: https://github.com/RobotLocomotion/drake/pull/13622
[_#13623]: https://github.com/RobotLocomotion/drake/pull/13623
[_#13626]: https://github.com/RobotLocomotion/drake/pull/13626
[_#13628]: https://github.com/RobotLocomotion/drake/pull/13628
[_#13629]: https://github.com/RobotLocomotion/drake/pull/13629
[_#13630]: https://github.com/RobotLocomotion/drake/pull/13630
[_#13631]: https://github.com/RobotLocomotion/drake/pull/13631
[_#13632]: https://github.com/RobotLocomotion/drake/pull/13632
[_#13633]: https://github.com/RobotLocomotion/drake/pull/13633
[_#13634]: https://github.com/RobotLocomotion/drake/pull/13634
[_#13635]: https://github.com/RobotLocomotion/drake/pull/13635
[_#13636]: https://github.com/RobotLocomotion/drake/pull/13636
[_#13637]: https://github.com/RobotLocomotion/drake/pull/13637
[_#13638]: https://github.com/RobotLocomotion/drake/pull/13638
[_#13641]: https://github.com/RobotLocomotion/drake/pull/13641
[_#13643]: https://github.com/RobotLocomotion/drake/pull/13643
[_#13644]: https://github.com/RobotLocomotion/drake/pull/13644
[_#13649]: https://github.com/RobotLocomotion/drake/pull/13649
[_#13650]: https://github.com/RobotLocomotion/drake/pull/13650
[_#13653]: https://github.com/RobotLocomotion/drake/pull/13653
[_#13655]: https://github.com/RobotLocomotion/drake/pull/13655
[_#13656]: https://github.com/RobotLocomotion/drake/pull/13656
[_#13659]: https://github.com/RobotLocomotion/drake/pull/13659
[_#13660]: https://github.com/RobotLocomotion/drake/pull/13660
[_#13666]: https://github.com/RobotLocomotion/drake/pull/13666
[_#13667]: https://github.com/RobotLocomotion/drake/pull/13667
[_#13668]: https://github.com/RobotLocomotion/drake/pull/13668
[_#13669]: https://github.com/RobotLocomotion/drake/pull/13669
[_#13676]: https://github.com/RobotLocomotion/drake/pull/13676
[_#13679]: https://github.com/RobotLocomotion/drake/pull/13679
[_#13685]: https://github.com/RobotLocomotion/drake/pull/13685
[_#13686]: https://github.com/RobotLocomotion/drake/pull/13686
[_#13687]: https://github.com/RobotLocomotion/drake/pull/13687
[_#13693]: https://github.com/RobotLocomotion/drake/pull/13693
[_#13705]: https://github.com/RobotLocomotion/drake/pull/13705

{% comment %}
Current oldest_commit 43a28f99ac2aa9d152c096b6a878465336d879f6 (inclusive).
Current newest_commit bc71215641a7f23f9a9eeb668e0efcc839c57562 (inclusive).
{% endcomment %}
