---
title: Drake v0.30.0
date: 2021-05-17
released: 2021-05-17
---

# Announcements

* Drake now provides an Ubuntu APT site that publishes our numbered releases
  ([#15016][_#15016]). Refer to
  [APT Packages for Monthly Tagged Releases][_apt-packages] for instructions.

# Breaking changes since v0.29.0

* On Ubuntu systems, Drake now requires the AVX2 and FMA family of SIMD
  intrinsics, i.e., the Intel's "Broadwell" microarchitecture or newer
  ([#15013][_#15013]).

* Drake now enforces stricter validation of SDFormat input data, so bad files
  that previously parsed without complaint now generate errors. For example,
  the `<pose>` element now has additional syntax checking ([#14852][_#14852]).

* Several methods on drake::systems::Diagram that were erroneously public have
  been made private. The affected methods are DoCalcTimeDerivatives() and
  DoCalcImplicitTimeDerivativesResidual(). Correct code should call
  EvalTimeDerivatives(), CalcTimeDerivatives(), or
  CalcImplicitTimeDerivativesResidual() instead ([#15031][_#15031]).

* Within Drake's event support, the arguments of the rarely-used handle()
  methods of PublishEvent, DiscreteUpdateEvent, and UnrestrictedUpdateEvent
  have changed. All now require a reference to the owning system as the first
  argument ([#14969][_#14969], [#15032][_#15032]).

* Drake no longer supports SDFormat's `<include>` elements. In the future, this
  feature will be restored with revised semantics. If you encounter issues with
  `<include>` elements in the interim, please notify Eric Cousineau.

# Changes since v0.29.0

## Dynamical Systems

<!-- <relnotes for systems go here> -->

New features

* Support scalar conversion by template parameter ([#14986][_#14986])
* Add compatibility checks for System methods using SystemOutput ([#15007][_#15007])
* Establish AffineSystem feedthrough without symbolics ([#15037][_#15037])

Fixes

* Reduce heap usage during Simulator advance steps ([#14912][_#14912], [#14950][_#14950], [#14969][_#14969], [#15032][_#15032], [#15010][_#15010])
* Fix image_to_lcm_image_array uninitialized data ([#14984][_#14984])
* Do not declare state variables in AffineSystem if num_states==0 ([#15003][_#15003])
* Deprecate and rename System::ValidateChildOfContext() ([#14999][_#14999])

## Mathematical Program

<!-- <relnotes for solvers go here> -->


New features

* Enable CLP to solve QP ([#14894][_#14894])

Fixes

* Set the string option in GurobiSolver ([#14930][_#14930])
* Warn about the memory issue when solving a QP with CLP ([#14934][_#14934])
* Report error when snopt fails to set a solver parameter ([#14947][_#14947])

## Multibody Dynamics

<!-- <relnotes for geometry,multibody go here> -->

New features

* Add ComPositionConstraint ([#14918][_#14918])
* Add CentroidalMomentumConstraint ([#14925][_#14925])
* Add ComInPolyhedronConstraint ([#14946][_#14946])
* Add QuaternionEulerIntegrationConstraint ([#14960][_#14960])
* Add CalcTotalMass methods to MultibodyPlant ([#14957][_#14957])
* New hydroelastic contact model in progress ([#14904][_#14904], [#14904][_#14904], [#14943][_#14943], [#14951][_#14951], [#14952][_#14952], [#14995][_#14995], [#14998][_#14998], [#15000][_#15000], [#15012][_#15012])


Fixes

* Improve model directives diagnostic when file not found ([#14923][_#14923])
* Suppress PackageMap warning on different directory spellings ([#14939][_#14939])
* Use translational jacobian for position constraint ([#14945][_#14945])
* Don't warn when parsing meshes with mtl files ([#14974][_#14974])
* Fix constness of JointActuator's SetRotorInertia() and SetGearRatio() ([#14983][_#14983])
* Defer joint limits warning until it's relevant ([#15017][_#15017])

## Tutorials and examples

<!-- <relnotes for examples,tutorials go here> -->

* Add LCM cameras to mock simulation for manipulation_station ([#14982][_#14982])
* Add getter for geometry frame to quadrotor example ([#15046][_#15046])

## Miscellaneous features and fixes

<!-- <relnotes for common,math,lcm,lcmtypes,manipulation,perception go here> -->

* New method for forming a rotation matrix from a single unit vector ([#14816][_#14816], [#15015][_#15015])
* Add AVX infrastructure and one AVX method ([#15013][_#15013])

## pydrake bindings

<!-- <relnotes for bindings go here> -->

New features

* Add autodiff_equal_to ([#14937][_#14937])
* Add \_\_repr\_\_ to several classes ([#14959][_#14959], [#14993][_#14993])
* Enable numpy math functions to work with symbolic variables ([#15039][_#15039])

Fixes

* Fix frames_to_draw visualization in Meshcat ([#14979][_#14979])

Newly bound

* pydrake.multibody.plant.MultibodyPlant.get_force_element ([#14953][_#14953])
* pydrake.manipulation.kuka_iiwa ([#14987][_#14987])

## Build system

<!-- <relnotes for cmake,doc,setup,third_party,tools go here> -->

* Do not pass --upgrade to pip3.9 on macOS ([#14962][_#14962])
* drake_visualizer: Use Drake's native lcmtypes for builtin_scripts ([#14981][_#14981])

## Build dependencies

* Upgrade buildifier to latest release 4.0.1 ([#14964][_#14964])
* Upgrade googlebenchmark to latest release ([#14965][_#14965])
* Upgrade lcm to latest commit ([#15023][_#15023])
* Upgrade libsdformat to latest release 11.0.0 ([#14852][_#14852])
* Upgrade rules_python to latest release 0.2.0 ([#14966][_#14966])
* Upgrade scs to latest release 2.1.3 ([#14970][_#14970])
* Upgrade tinyobjloader to latest commit ([#14958][_#14958])
* Upgrade voxelized_geometry_tools to latest commit ([#14919][_#14919])

## Newly-deprecated APIs

* drake::systems::sensors::InvalidDepth ([#15027][_#15027])
* drake::systems::sensors::Label ([#15027][_#15027])
* drake::systems::System::ValidateChildOfContext() ([#14999][_#14999])

## Removal of deprecated items

* drake::manipulation::PiecewiseCubicTrajectory ([#14989][_#14989])
* drake::manipulation::PiecewiseCartesianTrajectory ([#14989][_#14989])
* drake::multibody::MultibodyPlant::CalcCenterOfMassPosition ([#15050][_#15050])

# Notes

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

[_apt-packages]: https://drake.mit.edu/from_binary.html#apt-packages-for-monthly-tagged-releases
<!-- <begin issue links> -->
[_#14816]: https://github.com/RobotLocomotion/drake/pull/14816
[_#14852]: https://github.com/RobotLocomotion/drake/pull/14852
[_#14894]: https://github.com/RobotLocomotion/drake/pull/14894
[_#14904]: https://github.com/RobotLocomotion/drake/pull/14904
[_#14912]: https://github.com/RobotLocomotion/drake/pull/14912
[_#14918]: https://github.com/RobotLocomotion/drake/pull/14918
[_#14919]: https://github.com/RobotLocomotion/drake/pull/14919
[_#14923]: https://github.com/RobotLocomotion/drake/pull/14923
[_#14925]: https://github.com/RobotLocomotion/drake/pull/14925
[_#14930]: https://github.com/RobotLocomotion/drake/pull/14930
[_#14934]: https://github.com/RobotLocomotion/drake/pull/14934
[_#14937]: https://github.com/RobotLocomotion/drake/pull/14937
[_#14939]: https://github.com/RobotLocomotion/drake/pull/14939
[_#14943]: https://github.com/RobotLocomotion/drake/pull/14943
[_#14945]: https://github.com/RobotLocomotion/drake/pull/14945
[_#14946]: https://github.com/RobotLocomotion/drake/pull/14946
[_#14947]: https://github.com/RobotLocomotion/drake/pull/14947
[_#14950]: https://github.com/RobotLocomotion/drake/pull/14950
[_#14951]: https://github.com/RobotLocomotion/drake/pull/14951
[_#14952]: https://github.com/RobotLocomotion/drake/pull/14952
[_#14953]: https://github.com/RobotLocomotion/drake/pull/14953
[_#14957]: https://github.com/RobotLocomotion/drake/pull/14957
[_#14958]: https://github.com/RobotLocomotion/drake/pull/14958
[_#14959]: https://github.com/RobotLocomotion/drake/pull/14959
[_#14960]: https://github.com/RobotLocomotion/drake/pull/14960
[_#14962]: https://github.com/RobotLocomotion/drake/pull/14962
[_#14964]: https://github.com/RobotLocomotion/drake/pull/14964
[_#14965]: https://github.com/RobotLocomotion/drake/pull/14965
[_#14966]: https://github.com/RobotLocomotion/drake/pull/14966
[_#14969]: https://github.com/RobotLocomotion/drake/pull/14969
[_#14970]: https://github.com/RobotLocomotion/drake/pull/14970
[_#14974]: https://github.com/RobotLocomotion/drake/pull/14974
[_#14979]: https://github.com/RobotLocomotion/drake/pull/14979
[_#14981]: https://github.com/RobotLocomotion/drake/pull/14981
[_#14982]: https://github.com/RobotLocomotion/drake/pull/14982
[_#14983]: https://github.com/RobotLocomotion/drake/pull/14983
[_#14984]: https://github.com/RobotLocomotion/drake/pull/14984
[_#14986]: https://github.com/RobotLocomotion/drake/pull/14986
[_#14987]: https://github.com/RobotLocomotion/drake/pull/14987
[_#14989]: https://github.com/RobotLocomotion/drake/pull/14989
[_#14993]: https://github.com/RobotLocomotion/drake/pull/14993
[_#14995]: https://github.com/RobotLocomotion/drake/pull/14995
[_#14998]: https://github.com/RobotLocomotion/drake/pull/14998
[_#14999]: https://github.com/RobotLocomotion/drake/pull/14999
[_#15000]: https://github.com/RobotLocomotion/drake/pull/15000
[_#15003]: https://github.com/RobotLocomotion/drake/pull/15003
[_#15007]: https://github.com/RobotLocomotion/drake/pull/15007
[_#15010]: https://github.com/RobotLocomotion/drake/pull/15010
[_#15012]: https://github.com/RobotLocomotion/drake/pull/15012
[_#15013]: https://github.com/RobotLocomotion/drake/pull/15013
[_#15015]: https://github.com/RobotLocomotion/drake/pull/15015
[_#15016]: https://github.com/RobotLocomotion/drake/pull/15016
[_#15017]: https://github.com/RobotLocomotion/drake/pull/15017
[_#15023]: https://github.com/RobotLocomotion/drake/pull/15023
[_#15027]: https://github.com/RobotLocomotion/drake/pull/15027
[_#15031]: https://github.com/RobotLocomotion/drake/pull/15031
[_#15032]: https://github.com/RobotLocomotion/drake/pull/15032
[_#15037]: https://github.com/RobotLocomotion/drake/pull/15037
[_#15039]: https://github.com/RobotLocomotion/drake/pull/15039
[_#15046]: https://github.com/RobotLocomotion/drake/pull/15046
[_#15050]: https://github.com/RobotLocomotion/drake/pull/15050
<!-- <end issue links> -->

<!--
  Current oldest_commit a939b72dfd547f7f2cfb145f400408e4e1423e46 (exclusive).
  Current newest_commit 3e86d88df36f1a7d34cb5663e5f404eb43ce4e42 (inclusive).
-->
