---
title: Drake v0.12.0
date: 2019-11-08
released: 2019-11-08
---

# Announcements

This release requires Python 3, C++17, and one of either Ubuntu 18.04 or macOS Mojave (or newer). Older platforms and toolchains are no longer supported.

# Breaking changes since v0.11.0

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

* Use dynamic (not static) friction coefficient while computing point contact, i.e., the static coefficient of friction is ignored from both URDF/SDF files when using a discrete MultibodyPlant model with point contact ([#12109][_#12109]).
* Previously, in ``*.sdf`` files a ``<static>`` element within a ``<model>`` was ignored, but is now being parsed. Users with invalid ``*.sdf`` files might receive error messages. The correct solution is to remove the tag (if everything is already welded to the world), or remove any redundant welds ([#12226][_#12226]).
* drake::multibody::ContactResults methods AddContactInfo and Clear are removed ([#12249][_#12249]).
* Rename ImplicitStribeck to Tamsi to match notation in arXiv paper ([#12053][_#12053]):
  * drake::multibody::ImplicitStribeckSolver is now named TamsiSolver
  * drake::multibody::ImplicitStribeckSolverParameters is now named TamsiSolverParameters
  * drake::multibody::ImplicitStribeckSolverResults is now named TamsiSolverResults
* Users who compile Drake from source as a bazel external (as in the [drake_bazel_external][_drake_bazel_external] pattern) must set ``build --incompatible_remove_legacy_whole_archive=false`` in their project’s ``.bazelrc`` for now ([#12150][_#12150]).
* Remove installed stx headers and stx-config.cmake; Drake no longer provides stx ([#12246][_#12246]).

# Changes since v0.11.0:

## Dynamical Systems

New features

* Add Dormand-Prince (RK45) integrator ([#12223][_#12223])
* Add monitor callback for Simulator trajectories ([#12213][_#12213])
* Add GetMyContextFromRoot methods for subsystems ([#12237][_#12237])

Fixes

* Fix: Implicit Euler and 1-stage Radau now match ([#12088][_#12088])
* Fix: Guard against NaN in integrators ([#12217][_#12217], [#12263][_#12263])
* Fix: Improve PiecewisePolynomial error message ([#12183][_#12183])

## Mathematical Program

No changes.

## Multibody Dynamics

### New features

* Add MultibodyPlant reaction_forces output port ([#12123][_#12123])
* Add MultibodyPlant generalized_contact_forces output port support when using continuous time ([#12162][_#12162])
* Add MultibodyPlant method GetActutationFromArray ([#12011][_#12011])
* Add SceneGraph boolean query HasCollisions ([#12211][_#12211])
* Add multibody ``*.sdf`` parsing support for link initial poses during CreateDefaultContext ([#12226][_#12226])
* Add multibody ``*.sdf`` parser support for the ``<static>`` element within a ``<model>``; note that "freezing" articulated joints is not supported ([#12226][_#12226])
* Add partial multibody geometry support for the capsule primitive, including urdf parsing ([#12254][_#12254]), sdf parsing with custom drake:capsule tag ([#12258][_#12258]), visualization ([#12235][_#12235]), and vtk and ospray sensor rendering ([#12293][_#12293], [#12305][_#12305])
* Add partial multibody geometry support for the ellipsoid primitive ([#12256][_#12256], [#12323][_#12323])

### Fixes

* Fix: Enforce sensible shape specifications ([#12172][_#12172])
* Fix: Improve documentation of Jacobians ([#12135][_#12135], [#12192][_#12192]), SpatialAcceleration ([#12297][_#12297]), and model instances ([#12269][_#12269])

New hydroelastic contact model in progress ([#12102][_#12102], [#12114][_#12114], [#12163][_#12163], [#12184][_#12184], [#12190][_#12190], [#12193][_#12193], [#12212][_#12212], [#12233][_#12233], [#12245][_#12245], [#12285][_#12285], [#12311][_#12311]):

* This is experimental and will change in the near future! (And it will not be used by default.)
* Hydroelastics only supports soft-hard contact with spheres; see demo at ``examples/multibody/rolling_sphere``.
* For more information, see Elandt, et al. "A pressure field model for fast, robust approximation of net contact force and moment between nominally rigid objects" to appear in IROS 2019. `ArXiv pre-print <https://arxiv.org/abs/1904.11433.

## Miscellaneous features and fixes

* Add vector_gen support for yaml input format ([#12228][_#12228], [#12244][_#12244])
* Add DRAKE_LOGGER_TRACE and DRAKE_LOGGER_DEBUG macros ([#12309][_#12309])
* Add DRAKE_EXPECT_NO_THROW helper macros ([#12242][_#12242])
* Add planar_scenegraph_visualizer to pydrake ([#12218][_#12218])
* Fix: In meshcat visualizer, use correct frame for world geometry ([#12129][_#12129])

## pydrake bindings

* pydrake.autodiffutils.initializeAutoDiffGivenGradientMatrix ([#12229][_#12229])
* pydrake.geometry.Box.width ([#12185][_#12185])
* pydrake.geometry.Box.depth ([#12185][_#12185])
* pydrake.geometry.Box.height ([#12185][_#12185])
* pydrake.geometry.Box.size ([#12185][_#12185])
* pydrake.geometry.Cylinder.get_length ([#12185][_#12185])
* pydrake.geometry.Cylinder.get_radius ([#12185][_#12185])
* pydrake.geometry.SceneGraph.model_inspector ([#12177][_#12177])
* pydrake.geometry.SceneGraphInspector.GetAllGeometryIds ([#12177][_#12177])
* pydrake.geometry.SceneGraphInspector.GetFrameId ([#12177][_#12177])
* pydrake.geometry.SceneGraphInspector.GetGeometryIdByName ([#12177][_#12177])
* pydrake.geometry.SceneGraphInspector.GetNameByFrameId ([#12177][_#12177])
* pydrake.geometry.SceneGraphInspector.GetNameByGeometryId ([#12177][_#12177])
* pydrake.geometry.SceneGraphInspector.GetPoseInFrame ([#12177][_#12177])
* pydrake.geometry.SceneGraphInspector.GetShape ([#12177][_#12177])
* pydrake.geometry.SceneGraphInspector.num_frames ([#12177][_#12177])
* pydrake.geometry.SceneGraphInspector.num_geometries ([#12177][_#12177])
* pydrake.geometry.SceneGraphInspector.num_sources ([#12177][_#12177])
* pydrake.geometry.Sphere.get_radius ([#12185][_#12185])
* pydrake.math.RotationMatrix.ToAngleAxis ([#12313][_#12313])
* pydrake.multibody.inverse_kinematics.InverseKinematics.context ([#12232][_#12232])
* pydrake.multibody.inverse_kinematics.InverseKinematics.get_mutable_context ([#12232][_#12232])
* pydrake.multibody.plant.CalcContactFrictionFromSurfaceProperties ([#12219][_#12219])
* pydrake.multibody.plant.CoulombFriction.dynamic_friction ([#12219][_#12219])
* pydrake.multibody.plant.CoulombFriction.static_friction ([#12219][_#12219])
* pydrake.multibody.plant.MultibodyPlant.CalcJacobianAngularVelocity ([#12229][_#12229])
* pydrake.multibody.plant.MultibodyPlant.CalcJacobianTranslationalVelocity ([#12229][_#12229])
* pydrake.multibody.plant.MultibodyPlant.GetBodyFrameIdOrThrow ([#12177][_#12177])
* pydrake.multibody.plant.MultibodyPlant.default_coulomb_friction ([#12219][_#12219])
* pydrake.multibody.plant.MultibodyPlant.num_collision_geometries ([#12219][_#12219])
* pydrake.multibody.tree.RigidBody.default_com ([#12209][_#12209])
* pydrake.multibody.tree.RigidBody.default_mass ([#12209][_#12209])
* pydrake.multibody.tree.RigidBody.default_spatial_inertia ([#12209][_#12209])
* pydrake.multibody.tree.RigidBody.default_unit_inertia ([#12209][_#12209])
* pydrake.solvers.mathematicalprogram.EvaluatorBase.SetGradientSparsityPattern ([#12232][_#12232])
* pydrake.solvers.mathematicalprogram.EvaluatorBase.gradient_sparsity_pattern ([#12232][_#12232])
* Add pydrake.systems.sensors.CameraInfo support for pickling ([#12131][_#12131])

## Build system and dependencies

* Add macOS Catalina (10.15) support ([#12148][_#12148], [#12194][_#12194])
* Require C++ >= 17 ([#12240][_#12240]), Bazel >= 1.1 ([#12124][_#12124], [#12224][_#12224], [#12239][_#12239]), and CMake >= 3.10 ([#12239][_#12239])
* Upgrade spdlog to latest release 1.4.2 and switch to building shared library, not header-only ([#12322][_#12322])
* Update sdformat to latest release 8.4.0 ([#12268][_#12268])
* Update gtest to latest release 1.10.0 ([#12267][_#12267])
* Update clang-cindex-python3 to latest commit ([#12321][_#12321])
* Update dependency minimum versions in drake-config.cmake ([#12195][_#12195])
* Remove dependency on stx ([#12246][_#12246])
* Change dReal to private dependency compiled from source ([#12186][_#12186])
* Set FMT_USE_GRISU=1 for fmt ([#12318][_#12318])
* Install sdf data of the planar gripper ([#12176][_#12176])
* Fix: Install and use find-module for GFlags ([#12205][_#12205], [#12216][_#12216], [#12250][_#12250])
* Fix: Install and use find-module for TinyXML2 ([#12195][_#12195])
* Fix: Incompatibilities between Eigen <= 3.3.7 and Apple LLVM 11.0.0 ([#12133][_#12133])
* Fix: Incompatibilities with NumPy 1.17.0 ([#12153][_#12153])
* Remove support for macOS High Sierra (10.13) ([#12194][_#12194])
* Remove support for Ubuntu Xenial (16.04) ([#12238][_#12238])
* Remove support for Python 2 ([#12126][_#12126], [#12138][_#12138], [#12146][_#12146], [#12147][_#12147], [#12243][_#12243], [#12155][_#12155], [#12296][_#12296], [#12320][_#12320]).
  * Notably, the Drake-specific bazel command line options ``bazel build --config python2`` and ``bazel build --config python3`` are removed.

## Newly-deprecated APIs

* DRAKE_SPDLOG_TRACE and DRAKE_SPDLOG_DEBUG ([#12309][_#12309])
* drake::optional, drake::nullopt ([#12278][_#12278])
* drake::variant, drake::get, drake::holds_alternative ([#12282][_#12282])
* drake::logging::HandleSpdlogGflags, i.e., text_logging_gflags ([#12261][_#12261], [#12287][_#12287])
* drake::multibody::plant::MultibodyPlant::CalcFrameGeometricJacobianExpressedInWorld ([#12197][_#12197])
* Everything under attic/perception, e.g., RigidBodyPointCloudFilter ([#12292][_#12292])
* Everything under attic/manipulation/dev, e.g., RemoveTreeViewerWrapper ([#12294][_#12294])
* Everything under attic/manipulation/scene_generation, e.g., RandomClutterGenerator ([#12294][_#12294])
* Everything under attic/manipulation/sensors, e.g., Xtion ([#12294][_#12294])
* Some code under attic/manipulation/util, e.g., SimpleTreeVisualizer ([#12294][_#12294])
* Everything under attic/systems/robotInterfaces, e.g., QPLocomotionPlan ([#12291][_#12291])
* Everything under attic/systems/controllers, e.g., InstantaneousQPController ([#12291][_#12291])
* Everything under examples/valkyrie ([#12170][_#12170])
* drake:MakeFileInputStreamOrThrow for protobufs ([#12220][_#12220])
* vector_gen ``*.named_vector`` protobuf input format ([#12228][_#12228])
* //bindings/pydrake/common:drake_optional_pybind BUILD label ([#12246][_#12246])
* //bindings/pydrake/common:drake_variant_pybind BUILD label ([#12246][_#12246])
* //solvers:mathematical_program_lite BUILD label ([#12142][_#12142], [#12149][_#12149])
* @spruce BUILD label ([#12161][_#12161], [#12178][_#12178], [#12179][_#12179], [#12180][_#12180], [#12182][_#12182])
* @stx BUILD label ([#12246][_#12246])

## Removal of deprecated APIs

* drake::SpatialForce ([#12301][_#12301])
  * Use Vector6<> instead.
* drake::geometry::FramePoseVector::FramePoseVector taking an Isometry3d ([#12300][_#12300])
  * Use RigidTransform instead of Isometry3.
* drake::geometry::FramePoseVector::set_value taking an Isometry3d ([#12300][_#12300])
  * Use RigidTransform instead of Isometry3.
* drake::geometry::GeometryInstance::GeometryInstance taking an Isometry3d ([#12300][_#12300])
  * Use RigidTransform instead of Isometry3.
* drake::geometry::SceneGraphInspector::all_geometry_ids ([#12300][_#12300])
  * Use GetAllGeometryIds instead.
* drake::geometry::SceneGraphInspector::X_PG ([#12300][_#12300])
  * Use GetPoseInParent instead.
* drake::geometry::SceneGraphInspector::X_FG ([#12300][_#12300])
  * Use GetPoseInFrame instead.
* drake::multibody::MultibodyPlant::CalcPointsGeometricJacobianExpressedInWorld ([#12157][_#12157])
  * Use CalcJacobianTranslationalVelocity().
* drake::multibody::MultibodyPlant::CalcPointsGeometricJacobianExpressedInWorld ([#12157][_#12157])
  * Use CalcJacobianTranslationalVelocity().
* drake::multibody::MultibodyPlant::CalcPointsAnalyticalJacobianExpressedInWorld ([#12171][_#12171])
  * Use CalcJacobianTranslationalVelocity().
* drake::multibody::SceneGraph::Finalize(SceneGraph*) ([#12144][_#12144])
  * Remove the scene_graph argument instead.
* drake::multibody::SceneGraph::RegisterVisualGeometry(..., SceneGraph*) ([#12144][_#12144])
  * Remove the scene_graph argument instead.
* drake::multibody::SceneGraph::RegisterCollisionGeometry(..., SceneGraph*) ([#12144][_#12144])
  * Remove the scene_graph argument instead.
* drake::systems::UniformRandomSource ([#12144][_#12144])
  * Use RandomSource(kUniform, ...) instead.
* drake::systems::GaussianRandomSource ([#12144][_#12144])
  * Use RandomSource(kGaussian, ...) instead.
* drake::systems::ExponentialRandomSource ([#12144][_#12144])
  * Use RandomSource(kExponential, ...) instead.
* drake::systems::controllers::plan_eval (everything in namespace) ([#12143][_#12143])
  * No replacement.
* drake::systems::controllers::qp_inverse_dynamics (everything in namespace) ([#12143][_#12143])
  * No replacement.
* drake::examples::qp_inverse_dynamics (everything in namespace) ([#12143][_#12143])
  * No replacement.
* RigidBodyTreeAliasGroups::LoadFromFile ([#12143][_#12143])
  * Construct the groups using C++ API calls instead.
* pydrake.multibody.collision module ([#12145][_#12145])
  * Use pydrake.attic.multibody.collision instead.
* pydrake.multibody.joints module ([#12145][_#12145])
  * Use pydrake.attic.multibody.joints instead.
* pydrake.multibody.parsers module ([#12145][_#12145])
  * Use pydrake.attic.multibody.parsers instead.
* pydrake.multibody.rigid_body module ([#12145][_#12145])
  * Use pydrake.attic.multibody.rigid_body instead.
* pydrake.multibody.rigid_body_plant module ([#12145][_#12145])
  * Use pydrake.attic.multibody.rigid_body_plant instead.
* pydrake.multibody.rigid_body_tree module ([#12145][_#12145])
  * Use pydrake.attic.multibody.rigid_body_tree instead.
* pydrake.multibody.shapes module ([#12145][_#12145])
  * Use pydrake.attic.multibody.shapes instead.
* pydrake.solvers.ik module ([#12145][_#12145])
  * Use pydrake.attic.solvers.ik instead.
* pydrake.systems.framework.LeafSystem._DeclareAbstractInputPort ([#12181][_#12181])
  * Use DeclareAbstractInputPort (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclareAbstractInputPort ([#12181][_#12181])
  * Use DeclareAbstractInputPort (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclareAbstractParameter ([#12181][_#12181])
  * Use DeclareAbstractParameter (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclareNumericParameter ([#12181][_#12181])
  * Use DeclareNumericParameter (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclareAbstractOutputPort ([#12181][_#12181])
  * Use DeclareAbstractOutputPort (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclareVectorInputPort ([#12181][_#12181])
  * Use DeclareVectorInputPort (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclareVectorOutputPort ([#12181][_#12181])
  * Use DeclareVectorOutputPort (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclareInitializationEvent ([#12181][_#12181])
  * Use DeclareInitializationEvent (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclarePeriodicPublish ([#12181][_#12181])
  * Use DeclarePeriodicPublish (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclarePeriodicDiscreteUpdate ([#12181][_#12181])
  * Use DeclarePeriodicDiscreteUpdate (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclarePeriodicEvent ([#12181][_#12181])
  * Use DeclarePeriodicEvent (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclarePerStepEvent ([#12181][_#12181])
  * Use DeclarePerStepEvent (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DoPublish ([#12181][_#12181])
  * Use DoPublish (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclareContinuousState ([#12181][_#12181])
  * Use DeclareContinuousState (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclareDiscreteState ([#12181][_#12181])
  * Use DeclareDiscreteState (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DoCalcTimeDerivatives ([#12181][_#12181])
  * Use DoCalcTimeDerivatives (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DoCalcDiscreteVariableUpdates ([#12181][_#12181])
  * Use DoCalcDiscreteVariableUpdates (no leading underscore) instead.
* pydrake.systems.framework.LeafSystem._DeclareAbstractState ([#12181][_#12181])
  * Use DeclareAbstractState (no leading underscore) instead.
* //multibody BUILD label aliases into the attic ([#12159][_#12159])
  * Use the //attic/multibody labels instead.
* Remove F2C build flavor of SNOPT solver, i.e., ``-DWITH_SNOPT=F2C`` in CMake
  or ``--config snopt_f2c`` in Bazel ([#12299][_#12299])
  * Only the Fortran build flavor is supported from now on.

# Notes

This release provides
[pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v0.12.0)
named ``drake-20191108-{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
[_#12011]: https://github.com/RobotLocomotion/drake/pull/12011
[_#12053]: https://github.com/RobotLocomotion/drake/pull/12053
[_#12088]: https://github.com/RobotLocomotion/drake/pull/12088
[_#12102]: https://github.com/RobotLocomotion/drake/pull/12102
[_#12109]: https://github.com/RobotLocomotion/drake/pull/12109
[_#12114]: https://github.com/RobotLocomotion/drake/pull/12114
[_#12123]: https://github.com/RobotLocomotion/drake/pull/12123
[_#12124]: https://github.com/RobotLocomotion/drake/pull/12124
[_#12126]: https://github.com/RobotLocomotion/drake/pull/12126
[_#12129]: https://github.com/RobotLocomotion/drake/pull/12129
[_#12131]: https://github.com/RobotLocomotion/drake/pull/12131
[_#12133]: https://github.com/RobotLocomotion/drake/pull/12133
[_#12135]: https://github.com/RobotLocomotion/drake/pull/12135
[_#12138]: https://github.com/RobotLocomotion/drake/pull/12138
[_#12142]: https://github.com/RobotLocomotion/drake/pull/12142
[_#12143]: https://github.com/RobotLocomotion/drake/pull/12143
[_#12144]: https://github.com/RobotLocomotion/drake/pull/12144
[_#12145]: https://github.com/RobotLocomotion/drake/pull/12145
[_#12146]: https://github.com/RobotLocomotion/drake/pull/12146
[_#12147]: https://github.com/RobotLocomotion/drake/pull/12147
[_#12148]: https://github.com/RobotLocomotion/drake/pull/12148
[_#12149]: https://github.com/RobotLocomotion/drake/pull/12149
[_#12150]: https://github.com/RobotLocomotion/drake/pull/12150
[_#12153]: https://github.com/RobotLocomotion/drake/pull/12153
[_#12155]: https://github.com/RobotLocomotion/drake/pull/12155
[_#12157]: https://github.com/RobotLocomotion/drake/pull/12157
[_#12159]: https://github.com/RobotLocomotion/drake/pull/12159
[_#12161]: https://github.com/RobotLocomotion/drake/pull/12161
[_#12162]: https://github.com/RobotLocomotion/drake/pull/12162
[_#12163]: https://github.com/RobotLocomotion/drake/pull/12163
[_#12170]: https://github.com/RobotLocomotion/drake/pull/12170
[_#12171]: https://github.com/RobotLocomotion/drake/pull/12171
[_#12172]: https://github.com/RobotLocomotion/drake/pull/12172
[_#12176]: https://github.com/RobotLocomotion/drake/pull/12176
[_#12177]: https://github.com/RobotLocomotion/drake/pull/12177
[_#12178]: https://github.com/RobotLocomotion/drake/pull/12178
[_#12179]: https://github.com/RobotLocomotion/drake/pull/12179
[_#12180]: https://github.com/RobotLocomotion/drake/pull/12180
[_#12181]: https://github.com/RobotLocomotion/drake/pull/12181
[_#12182]: https://github.com/RobotLocomotion/drake/pull/12182
[_#12183]: https://github.com/RobotLocomotion/drake/pull/12183
[_#12184]: https://github.com/RobotLocomotion/drake/pull/12184
[_#12185]: https://github.com/RobotLocomotion/drake/pull/12185
[_#12186]: https://github.com/RobotLocomotion/drake/pull/12186
[_#12190]: https://github.com/RobotLocomotion/drake/pull/12190
[_#12192]: https://github.com/RobotLocomotion/drake/pull/12192
[_#12193]: https://github.com/RobotLocomotion/drake/pull/12193
[_#12194]: https://github.com/RobotLocomotion/drake/pull/12194
[_#12195]: https://github.com/RobotLocomotion/drake/pull/12195
[_#12197]: https://github.com/RobotLocomotion/drake/pull/12197
[_#12205]: https://github.com/RobotLocomotion/drake/pull/12205
[_#12209]: https://github.com/RobotLocomotion/drake/pull/12209
[_#12211]: https://github.com/RobotLocomotion/drake/pull/12211
[_#12212]: https://github.com/RobotLocomotion/drake/pull/12212
[_#12213]: https://github.com/RobotLocomotion/drake/pull/12213
[_#12216]: https://github.com/RobotLocomotion/drake/pull/12216
[_#12217]: https://github.com/RobotLocomotion/drake/pull/12217
[_#12218]: https://github.com/RobotLocomotion/drake/pull/12218
[_#12219]: https://github.com/RobotLocomotion/drake/pull/12219
[_#12220]: https://github.com/RobotLocomotion/drake/pull/12220
[_#12223]: https://github.com/RobotLocomotion/drake/pull/12223
[_#12224]: https://github.com/RobotLocomotion/drake/pull/12224
[_#12226]: https://github.com/RobotLocomotion/drake/pull/12226
[_#12228]: https://github.com/RobotLocomotion/drake/pull/12228
[_#12229]: https://github.com/RobotLocomotion/drake/pull/12229
[_#12232]: https://github.com/RobotLocomotion/drake/pull/12232
[_#12233]: https://github.com/RobotLocomotion/drake/pull/12233
[_#12235]: https://github.com/RobotLocomotion/drake/pull/12235
[_#12237]: https://github.com/RobotLocomotion/drake/pull/12237
[_#12238]: https://github.com/RobotLocomotion/drake/pull/12238
[_#12239]: https://github.com/RobotLocomotion/drake/pull/12239
[_#12240]: https://github.com/RobotLocomotion/drake/pull/12240
[_#12242]: https://github.com/RobotLocomotion/drake/pull/12242
[_#12243]: https://github.com/RobotLocomotion/drake/pull/12243
[_#12244]: https://github.com/RobotLocomotion/drake/pull/12244
[_#12245]: https://github.com/RobotLocomotion/drake/pull/12245
[_#12246]: https://github.com/RobotLocomotion/drake/pull/12246
[_#12249]: https://github.com/RobotLocomotion/drake/pull/12249
[_#12250]: https://github.com/RobotLocomotion/drake/pull/12250
[_#12254]: https://github.com/RobotLocomotion/drake/pull/12254
[_#12256]: https://github.com/RobotLocomotion/drake/pull/12256
[_#12258]: https://github.com/RobotLocomotion/drake/pull/12258
[_#12261]: https://github.com/RobotLocomotion/drake/pull/12261
[_#12263]: https://github.com/RobotLocomotion/drake/pull/12263
[_#12267]: https://github.com/RobotLocomotion/drake/pull/12267
[_#12268]: https://github.com/RobotLocomotion/drake/pull/12268
[_#12269]: https://github.com/RobotLocomotion/drake/pull/12269
[_#12278]: https://github.com/RobotLocomotion/drake/pull/12278
[_#12282]: https://github.com/RobotLocomotion/drake/pull/12282
[_#12285]: https://github.com/RobotLocomotion/drake/pull/12285
[_#12287]: https://github.com/RobotLocomotion/drake/pull/12287
[_#12291]: https://github.com/RobotLocomotion/drake/pull/12291
[_#12292]: https://github.com/RobotLocomotion/drake/pull/12292
[_#12293]: https://github.com/RobotLocomotion/drake/pull/12293
[_#12294]: https://github.com/RobotLocomotion/drake/pull/12294
[_#12296]: https://github.com/RobotLocomotion/drake/pull/12296
[_#12297]: https://github.com/RobotLocomotion/drake/pull/12297
[_#12299]: https://github.com/RobotLocomotion/drake/pull/12299
[_#12300]: https://github.com/RobotLocomotion/drake/pull/12300
[_#12301]: https://github.com/RobotLocomotion/drake/pull/12301
[_#12305]: https://github.com/RobotLocomotion/drake/pull/12305
[_#12309]: https://github.com/RobotLocomotion/drake/pull/12309
[_#12311]: https://github.com/RobotLocomotion/drake/pull/12311
[_#12313]: https://github.com/RobotLocomotion/drake/pull/12313
[_#12318]: https://github.com/RobotLocomotion/drake/pull/12318
[_#12320]: https://github.com/RobotLocomotion/drake/pull/12320
[_#12321]: https://github.com/RobotLocomotion/drake/pull/12321
[_#12322]: https://github.com/RobotLocomotion/drake/pull/12322
[_#12323]: https://github.com/RobotLocomotion/drake/pull/12323
