---
title: Drake v0.23.0
date: 2020-09-13
released: 2020-09-13
---

# Announcements


* All code for RigidBodyPlant and the drake "attic" has been removed ([#13889][_#13889]).
  Refer to [v0.22.0][_v0.22.0] for the final release that contained this code.

# Breaking Changes since v0.22.0


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

* The drake::systems::Subvector and drake::systems::Supervector are now marked
  final ([#13907][_#13907]).
* Add [[nodiscard]] attributes to symbolic functions ([#14020][_#14020], [#14021][_#14021]).
* The drake/common/symbolic.h headers now ``#error`` when included incorrectly
  ([#14003][_#14003]).
* For drake::yaml::YamlReadArchive, it's now an error for yaml data to remain
  unparsed, unless the user opts in to allowing it; users who want a different
  behavior should change the Options at construction-time ([#13900][_#13900]).
* The drake::examples::rod2d::Rod2D::pose_output() port has been removed, as
  the system no longer connects to the systems::rendering API ([#13890][_#13890]).
* Remove pydrake.systems.framework.kAutoSize ([#13981][_#13981]).
* If you are using CMake to consume pydrake and you compile your own bindings
  using pybind11_add_module, you must now reset your target's default
  visibility to "default" (not "hidden") ([#14048][_#14048]).

# Changes since v0.22.0

## Dynamical Systems

{% comment %}
<relnotes for systems go here>
{% endcomment %}

New features

* Provide System::get_input_port and get_output_port sugar ([#13883][_#13883], [#13894][_#13894], [#13895][_#13895], [#13896][_#13896], [#13897][_#13897], [#13898][_#13898])
* Allow PassThrough to emit default values ([#13976][_#13976], [#13996][_#13996])
* Optionally suppress simulator initialization events ([#13872][_#13872])
* Add SequentialExpressionManager::GetSequentialExpressionNames ([#13925][_#13925])
* Implement derivatives for PiecewiseQuaternion ([#13972][_#13972])
* Add InverseDynamicsController constructor overload to own the input plant ([#14037][_#14037])

Fixes

* Add port names to InverseDynamicsController ([#13879][_#13879])
* Mark Subvector and Supervector final ([#13907][_#13907])
* Fix crash in discrete time TimeVaryingAffineSystem ([#14008][_#14008])

## Mathematical Program

{% comment %}
<relnotes for solvers go here>
{% endcomment %}

New features

* Change IPOPT eval_g to use double version of constraint evaluation ([#13891][_#13891])
* Add generic polynomial and MonomialBasisElement ([#13867][_#13867], [#13940][_#13940], [#13980][_#13980], [#13994][_#13994], [#14023][_#14023], [#14036][_#14036])
* Add a function to compute polynomial basis up to a given order ([#13870][_#13870])
* Add PiecewisePolynomial::AppendFirstOrderSegment ([#14030][_#14030])
* Add PiecewiseQuaternionSlerp::Append ([#14031][_#14031])

Fixes

* Add [[nodiscard]] attributes to symbolic functions ([#14020][_#14020], [#14021][_#14021])

## Multibody Dynamics

{% comment %}
<relnotes for geometry,multibody go here>
{% endcomment %}

New features

* Add API to compute SpatialAccelerationInWorld ([#13773][_#13773])
* Add API to set mass, center of pass, and spatial inertia in a Context ([#13860][_#13860])
* Add API to set LinearBushingRollPitchYaw parameters in a Context ([#14000][_#14000])
* Add API to get a frame's geometries ([#13999][_#13999])
* Support parsing massless bodies ([#13908][_#13908], [#13927][_#13927])
* Add Capsule and Ellipse to RenderEngineGl ([#14001][_#14001])
* New hydroelastic contact model in progress ([#13864][_#13864])

Fixes

* Fix reported world poses when queried before any updates ([#13990][_#13990])
* Eliminate heap use from CalcMassMatrix() ([#13873][_#13873], [#13928][_#13928], [#13933][_#13933], [#13953][_#13953])
* Use a faster inertia matrix rotation method ([#13962][_#13962])
* Propagate the MultibodyPlant name to the SceneGraph ([#14024][_#14024])

## Tutorials and examples

{% comment %}
<relnotes for examples,tutorials go here>
{% endcomment %}

* In manipulation station, offer better Schunk WSG models ([#13922][_#13922])
* In manipulation station, make iiwa feedforward torques input optional ([#13995][_#13995])
* In rod2d, use modern SceneGraph conventions for visualization ([#13890][_#13890])

## Miscellaneous features and fixes

{% comment %}
<relnotes for common,math,lcm,lcmtypes,manipulation,perception go here>
{% endcomment %}

* autodiff: Improve performance by reducing heap use  ([#13988][_#13988], [#14045][_#14045])
* manipulation: Add DifferentialInverseKinematicsIntegrator ([#13877][_#13877], [#13919][_#13919], [#13920][_#13920], [#14004][_#14004])
* manipulation: Make Schunk WSG limit input port optional ([#13878][_#13878])
* meshcat: Support caching mesh geometry on the zmq server ([#13971][_#13971])
* meshcat: Ignore geometry with invalid sizes ([#14013][_#14013])
* models: Remove invalid geometry from the jaco model ([#14042][_#14042])
* schema: Add stochastic, rotation, and transform types ([#13943][_#13943], [#13949][_#13949], [#13991][_#13991], [#14014][_#14014])
* yaml: Allow omitting the root name while writing ([#13915][_#13915])
* yaml: It's an error by default for yaml data to remain unparsed ([#13900][_#13900])

## pydrake bindings

{% comment %}
<relnotes for bindings go here>
{% endcomment %}

New features

* Add pydrake.systems.jupyter_widgets.WidgetSystem ([#13882][_#13882])
* Add jupyter widget version of JointSliders ([#14017][_#14017])
* Copy and adapt yaml utilities from Anzu ([#13982][_#13982])

Fixes

* Ensure that multiply (matmul) preserves input shape ([#13886][_#13886])
* Add missing import for jupyter widgets ([#13941][_#13941])
* Ensure keep_alive for Image[].data is honored ([#14015][_#14015])
* Make Jupyter fail fast when running as non-interactive kernel ([#14025][_#14025])

Newly bound

* pydrake.geometry.IllustrationPropertiescopying ([#14010][_#14010])
* pydrake.geometry.PerceptionPropertiescopying ([#14010][_#14010])
* pydrake.geometry.ProximityProperties copying ([#14010][_#14010])
* pydrake.geometry.render.MakeRenderEngineOspray ([#13893][_#13893])
* pydrake.math.UniformlyRandomAngleAxis ([#13993][_#13993])
* pydrake.math.UniformlyRandomQuaternion ([#13993][_#13993])
* pydrake.math.UniformlyRandomRPY ([#13993][_#13993])
* pydrake.math.UniformlyRandomRotationMatrix ([#13993][_#13993])
* pydrake.multibody.plant.MultibodyPlant.CalcBiasCenterOfMassTranslationalAcceleration ([#13997][_#13997])
* pydrake.multibody.plant.MultibodyPlant.CalcJacobianCenterOfMassTranslationalVelocity ([#13997][_#13997])
* pydrake.systems.primitives.TrajectoryAffineSystem ([#14009][_#14009])
* `pydrake.trajectories.PiecewisePolynomial.__add__` ([#14009][_#14009])
* pydrake.trajectories.PiecewiseQuaternionSlerp ([#13974][_#13974])
* pydrake.trajectories.Trajectory.end_time ([#14049][_#14049])
* pydrake.trajectories.Trajectory.start_time ([#14049][_#14049])

## Build system and dependencies

{% comment %}
<relnotes for attic,cmake,doc,setup,third_party,tools go here>
{% endcomment %}

* Upgrade recommended Bazel version to 3.5 ([#14005][_#14005])
* Upgrade bazel_skylib to latest release 1.0.3 ([#13969][_#13969])
* Upgrade fcl to latest commit ([#13965][_#13965])
* Upgrade fmt to latest release 7.0.3 ([#13968][_#13968])
* Upgrade ghc_filesystem to latest release 1.3.4 ([#13966][_#13966])
* Upgrade meshcat_python to latest commit ([#13971][_#13971])
* Upgrade pybind11 fork to latest commit ([#14028][_#14028], [#14046][_#14046], [#14048][_#14048])
* Upgrade ros_xacro to latest release 1.13.8 ([#13967][_#13967])
* Separate out dependencies related to documentation generation ([#13984][_#13984])

## Newly-deprecated APIs

* drake::systems::Subvector 1-argument constructor ([#13907][_#13907])
* drake::systems::kAutoSize ([#13981][_#13981])
* The bullet external ([#13986][_#13986])
* The freetype2 external ([#13986][_#13986])

## Removal of deprecated items

* All code for RigidBodyPlant and the drake "attic" ([#13889][_#13889]).
* drake::manipulation::kuka_iiwa::IiwaCommandReceiver::get_input_port ([#13939][_#13939])
* drake::manipulation::kuka_iiwa::IiwaCommandReceiver::set_initial_position ([#13939][_#13939])
* drake::manipulation::schunk_wsg::SchunkWsgPositionController::set_initial_position ([#13939][_#13939])
* drake::multibody::MultibodyPlant::CalcBiasForJacobianSpatialVelocity ([#13939][_#13939])
* drake::multibody::MultibodyPlant::CalcBiasForJacobianTranslationalVelocity ([#13939][_#13939])
* drake::multibody::MultibodyPlant::default_coulomb_friction  ([#13939][_#13939])
* drake::solvers::GetInfeasibleConstraints ([#13939][_#13939])
* drake::solvers::SolverBase one constructor ([#13939][_#13939])
* drake::systems::estimators::LuenbergerObserver one constructor ([#13939][_#13939])
* drake::systems::rendering::PoseBundle::get_pose ([#13939][_#13939])
* drake::systems::rendering::PoseBundle::set_pose ([#13939][_#13939])
* drake::systems::rendering::PoseVector::get_isometry ([#13939][_#13939])
* pydrake.multibody.VectorExternallyAppliedSpatialForced ([#13939][_#13939])
* pydrake.systems.rendering.PoseBundle.get_pose ([#13939][_#13939])
* pydrake.systems.rendering.PoseBundle.set_pose ([#13939][_#13939])
* pydrake.systems.rendering.PoseVector.get_isometry ([#13939][_#13939])
* The octomap external ([#13939][_#13939])
* The ruby external ([#13939][_#13939])

# Notes

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

[_v0.22.0]: https://github.com/RobotLocomotion/drake/releases/tag/v0.22.0

[_#13773]: https://github.com/RobotLocomotion/drake/pull/13773
[_#13860]: https://github.com/RobotLocomotion/drake/pull/13860
[_#13864]: https://github.com/RobotLocomotion/drake/pull/13864
[_#13867]: https://github.com/RobotLocomotion/drake/pull/13867
[_#13870]: https://github.com/RobotLocomotion/drake/pull/13870
[_#13872]: https://github.com/RobotLocomotion/drake/pull/13872
[_#13873]: https://github.com/RobotLocomotion/drake/pull/13873
[_#13877]: https://github.com/RobotLocomotion/drake/pull/13877
[_#13878]: https://github.com/RobotLocomotion/drake/pull/13878
[_#13879]: https://github.com/RobotLocomotion/drake/pull/13879
[_#13882]: https://github.com/RobotLocomotion/drake/pull/13882
[_#13883]: https://github.com/RobotLocomotion/drake/pull/13883
[_#13886]: https://github.com/RobotLocomotion/drake/pull/13886
[_#13889]: https://github.com/RobotLocomotion/drake/pull/13889
[_#13890]: https://github.com/RobotLocomotion/drake/pull/13890
[_#13891]: https://github.com/RobotLocomotion/drake/pull/13891
[_#13893]: https://github.com/RobotLocomotion/drake/pull/13893
[_#13894]: https://github.com/RobotLocomotion/drake/pull/13894
[_#13895]: https://github.com/RobotLocomotion/drake/pull/13895
[_#13896]: https://github.com/RobotLocomotion/drake/pull/13896
[_#13897]: https://github.com/RobotLocomotion/drake/pull/13897
[_#13898]: https://github.com/RobotLocomotion/drake/pull/13898
[_#13900]: https://github.com/RobotLocomotion/drake/pull/13900
[_#13907]: https://github.com/RobotLocomotion/drake/pull/13907
[_#13908]: https://github.com/RobotLocomotion/drake/pull/13908
[_#13915]: https://github.com/RobotLocomotion/drake/pull/13915
[_#13919]: https://github.com/RobotLocomotion/drake/pull/13919
[_#13920]: https://github.com/RobotLocomotion/drake/pull/13920
[_#13922]: https://github.com/RobotLocomotion/drake/pull/13922
[_#13925]: https://github.com/RobotLocomotion/drake/pull/13925
[_#13927]: https://github.com/RobotLocomotion/drake/pull/13927
[_#13928]: https://github.com/RobotLocomotion/drake/pull/13928
[_#13933]: https://github.com/RobotLocomotion/drake/pull/13933
[_#13939]: https://github.com/RobotLocomotion/drake/pull/13939
[_#13940]: https://github.com/RobotLocomotion/drake/pull/13940
[_#13941]: https://github.com/RobotLocomotion/drake/pull/13941
[_#13943]: https://github.com/RobotLocomotion/drake/pull/13943
[_#13949]: https://github.com/RobotLocomotion/drake/pull/13949
[_#13953]: https://github.com/RobotLocomotion/drake/pull/13953
[_#13962]: https://github.com/RobotLocomotion/drake/pull/13962
[_#13965]: https://github.com/RobotLocomotion/drake/pull/13965
[_#13966]: https://github.com/RobotLocomotion/drake/pull/13966
[_#13967]: https://github.com/RobotLocomotion/drake/pull/13967
[_#13968]: https://github.com/RobotLocomotion/drake/pull/13968
[_#13969]: https://github.com/RobotLocomotion/drake/pull/13969
[_#13971]: https://github.com/RobotLocomotion/drake/pull/13971
[_#13972]: https://github.com/RobotLocomotion/drake/pull/13972
[_#13974]: https://github.com/RobotLocomotion/drake/pull/13974
[_#13976]: https://github.com/RobotLocomotion/drake/pull/13976
[_#13980]: https://github.com/RobotLocomotion/drake/pull/13980
[_#13981]: https://github.com/RobotLocomotion/drake/pull/13981
[_#13982]: https://github.com/RobotLocomotion/drake/pull/13982
[_#13984]: https://github.com/RobotLocomotion/drake/pull/13984
[_#13986]: https://github.com/RobotLocomotion/drake/pull/13986
[_#13988]: https://github.com/RobotLocomotion/drake/pull/13988
[_#13990]: https://github.com/RobotLocomotion/drake/pull/13990
[_#13991]: https://github.com/RobotLocomotion/drake/pull/13991
[_#13993]: https://github.com/RobotLocomotion/drake/pull/13993
[_#13994]: https://github.com/RobotLocomotion/drake/pull/13994
[_#13995]: https://github.com/RobotLocomotion/drake/pull/13995
[_#13996]: https://github.com/RobotLocomotion/drake/pull/13996
[_#13997]: https://github.com/RobotLocomotion/drake/pull/13997
[_#13999]: https://github.com/RobotLocomotion/drake/pull/13999
[_#14000]: https://github.com/RobotLocomotion/drake/pull/14000
[_#14001]: https://github.com/RobotLocomotion/drake/pull/14001
[_#14003]: https://github.com/RobotLocomotion/drake/pull/14003
[_#14004]: https://github.com/RobotLocomotion/drake/pull/14004
[_#14005]: https://github.com/RobotLocomotion/drake/pull/14005
[_#14008]: https://github.com/RobotLocomotion/drake/pull/14008
[_#14009]: https://github.com/RobotLocomotion/drake/pull/14009
[_#14010]: https://github.com/RobotLocomotion/drake/pull/14010
[_#14013]: https://github.com/RobotLocomotion/drake/pull/14013
[_#14014]: https://github.com/RobotLocomotion/drake/pull/14014
[_#14015]: https://github.com/RobotLocomotion/drake/pull/14015
[_#14017]: https://github.com/RobotLocomotion/drake/pull/14017
[_#14020]: https://github.com/RobotLocomotion/drake/pull/14020
[_#14021]: https://github.com/RobotLocomotion/drake/pull/14021
[_#14023]: https://github.com/RobotLocomotion/drake/pull/14023
[_#14024]: https://github.com/RobotLocomotion/drake/pull/14024
[_#14025]: https://github.com/RobotLocomotion/drake/pull/14025
[_#14028]: https://github.com/RobotLocomotion/drake/pull/14028
[_#14030]: https://github.com/RobotLocomotion/drake/pull/14030
[_#14031]: https://github.com/RobotLocomotion/drake/pull/14031
[_#14036]: https://github.com/RobotLocomotion/drake/pull/14036
[_#14037]: https://github.com/RobotLocomotion/drake/pull/14037
[_#14042]: https://github.com/RobotLocomotion/drake/pull/14042
[_#14045]: https://github.com/RobotLocomotion/drake/pull/14045
[_#14046]: https://github.com/RobotLocomotion/drake/pull/14046
[_#14048]: https://github.com/RobotLocomotion/drake/pull/14048
[_#14049]: https://github.com/RobotLocomotion/drake/pull/14049

{% comment %}
Current oldest_commit 0de592fdd53d55132b45a7a7c86b979a99f561e4 (exclusive).
Current newest_commit 6bd5f8c25cdcbb4049e57ec0f49f6e2c136d864a (inclusive).
{% endcomment %}
