---
title: Drake v0.18.0
date: 2020-05-14
released: 2020-05-14
---

# Announcements

<div class="warning" markdown="1">
On macOS, Drake only supports Python 3.8.  Users **must** read
[#13097][_#13097] for upgrade instructions.

When paths are set incorrectly, you will see an error such as this:

```
ImportError: Python version mismatch: module was compiled for Python 3.8,
but the interpreter version is incompatible: 3.7.7
```
</div>

* RigidBodyPlant and all of the drake "attic" is scheduled for removal on
  2020-09-01 ([#12158][_#12158], [#13030][_#13030]).
  * Please see [#12158][_#12158] for details of the timeline, and let us know if this
    will cause a problem.
* A new tutorial on AddVisualizationCallback is available ([#13211][_#13211]).

# Breaking Changes since v0.17.0


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

* All pydrake.solvers SolverDetails classes are now read-only. ([#13152][_#13152])

# Changes since v0.17.0:


## Dynamical Systems

New features

* Trajectories
  * Add Trajectory::has_derivative and EvalDerivative ([#13144][_#13144])
  * Add DiscreteTimeTrajectory ([#13157][_#13157])
  * Improve BsplineBasis and BsplineTrajectory ([#13149][_#13149], [#13057][_#13057], [#13158][_#13158])
  * Add PiecewisePolynomial unary minus ([#13109][_#13109])
  * Add Substitute(var, Polynomial) with support for multivariate polynomials ([#13108][_#13108])
  * Add Lagrange Interpolating Polynomial and Block(i,j,p,q) ([#13269][_#13269])
* System
  * Add support for implicit equations ([#13068][_#13068])
  * Add a dependency ticket for all sources excluding input ports ([#13088][_#13088])
* Controllers
  * FittedValueIteration supports MultibodyPlant + SceneGraph ([#13113][_#13113])
  * Add support for affine terms in finite-horizon LQR ([#13272][_#13272])
  * Add support for Finite Horizon LQR result as a System ([#13178][_#13178])
  * Add Acrobot example of Finite Lorizon LQR ([#13250][_#13250], [#13252][_#13252])

Fixes

* None

## Mathematical Program

New features

* None

Fixes

* Fix memcpy undefined behavior in unconstrained optimization ([#13111][_#13111])
* Fix AutoDiffXd derivatives for min and max ([#13112][_#13112])

## Multibody Dynamics

New features

* Add universal joint and mobilizer ([#13055][_#13055], [#13054][_#13054])
* Add propeller model ([#13135][_#13135])
* Add planar four bar linkage example ([#13036][_#13036])
* Add custom <drake:linear_bushing_rpy/> tag in SDF/URDF ([#13255][_#13255])
* Add get_body_poses_output_port ([#13137][_#13137])
* Make joint store default value ([#13105][_#13105])

* New hydroelastic contact model in progress ([#13114][_#13114], [#13138][_#13138], [#13140][_#13140])
  * Still only experimental

Fixes

* Allow CollectRegisteredGeometries to be called pre-finalize ([#13281][_#13281])

## Miscellaneous features and fixes

* Upgrade quadrotor to Skydio R2 model ([#13050][_#13050])
* Add lcmtypes for panda command/status ([#13163][_#13163])
* Move Jaco LCM helpers from examples to manipulation ([#13275][_#13275])
* Install Drake's custom drake_visualizer plugins ([#13127][_#13127])

## pydrake bindings

Newly bound

* pydrake.common.kDrakeAssertIsArmed ([#13183][_#13183], [#13195][_#13195])
* `pydrake.geometry.QueryObject.__init__` ([#13156][_#13156])
* pydrake.multibody.plant.MultibodyPlant.get_body_poses_output_port ([#13229][_#13229])
* pydrake.multibody.plant.MultibodyPlant.get_contact_penalty_method_time_scale ([#13294][_#13294])
* pydrake.multibody.plant.MultibodyPlant.set_stiction_tolerance ([#13294][_#13294])
* pydrake.solvers.gurobi.GurobiSolverDetails ([#13152][_#13152])
* pydrake.solvers.mosek.MosekSolverDetails ([#13151][_#13151])
* pydrake.systems.framework.DiagramBuilder.GetMutableSystems ([#13270][_#13270])
* pydrake.systems.framework.DiagramBuilder.empty ([#13270][_#13270])
* pydrake.systems.framework.OutputPort.Allocate ([#13270][_#13270])

New features

* Move the Value and AbstractValue classes from the pydrake.systems.framework module to the pydrake.common.value module ([#13217][_#13217], [#13225][_#13225])

Fixes

* Add stricter checks and friendlier errors for mathematical program user-functions ([#13183][_#13183])
* Resolve AbstractValue RTTI linking inconsistency on macOS ([#13225][_#13225])
* Provide more specific type names in diagnostics ([#13194][_#13194])

## Build system and dependencies

* Use clang-format version 9, not version 6 ([#13259][_#13259], [#13260][_#13260], [#13286][_#13286], [#13287][_#13287])
* Upgrade buildifier to latest release 3.0.0 ([#13198][_#13198])
* Upgrade dreal to latest commit ([#13133][_#13133])
* Upgrade fcl to latest commit ([#13274][_#13274])
* Upgrade fmt to latest release 6.2.0 ([#13200][_#13200])
* Upgrade gurobi to 9.0.2 and use GUROBI_HOME instead of GUROBI_PATH ([#13049][_#13049])
* Upgrade lcm to latest commit ([#13199][_#13199])
* Upgrade meshcat to latest commit ([#13141][_#13141])
* Upgrade meshcat_python to latest commit ([#13155][_#13155])
* Upgrade pycodestyle to latest release 2.5.0 ([#13197][_#13197], [#13204][_#13204])
* Upgrade semantic_version to latest release 2.8.5 ([#13197][_#13197])
* Only compile the parts of FCL that we need ([#13230][_#13230])
* Remove use of octomap ([#13230][_#13230])
* Remove use of ruby ([#13262][_#13262])
* Remove use of tinydir ([#13180][_#13180]) 
* Disable python imports from /.local during build on Ubuntu ([#13190][_#13190])
* Fetch sdformat and ignition_math from GitHub, not Bitbucket ([#13188][_#13188])
* Don't install unused sdformat data ([#13268][_#13268])
* Fix bazel third_party include path complaints ([#13189][_#13189])
* Begin Ubuntu 20.04 (Focal Fossa) accommodations ([#13142][_#13142], [#13235][_#13235], [#13303][_#13303])

## Newly-deprecated APIs

* drake::Polynomial::IsApprox ([#13108][_#13108])
* pydrake.systems.framework.AbstractValue ([#13217][_#13217], [#13225][_#13225])
* pydrake.systems.framework.Value ([#13217][_#13217], [#13225][_#13225])
* The octomap external ([#13230][_#13230])
* The ruby external ([#13262][_#13262])
* The tinydir external ([#13180][_#13180])
* The bitbucket.bzl macros ([#13193][_#13193])

## Removal of deprecated items

* DRAKE_NODISCARD in common/drake_nodiscard.h ([#13170][_#13170])
* drake::examples::kuka_iiwa_arm::ComputeLumpedGripperInertiaInEndEffectorFrame ([#13169][_#13169])
* drake::examples::kuka_iiwa_arm::CreateTreedFromFixedModelAtPose ([#13169][_#13169])
* drake::examples::kuka_iiwa_arm::IiwaAndWsgPlantWithStateEstimator ([#13169][_#13169])
* drake::examples::kuka_iiwa_arm::KukaTorqueController for RigidBodyTree ([#13169][_#13169])
* drake::examples::kuka_iiwa_arm::OracularStateEstimation ([#13169][_#13169])
* drake::geometry::Identifier ([#13170][_#13170])
* drake::geometry::SceneGraphInspector::GetNumAnchoredGeometries ([#13170][_#13170])
* drake::geometry::SceneGraphInspector::GetNumDynamicGeometries ([#13170][_#13170])
* drake::multibody::AddMultibodyPlantSceneGraph(builder) ([#13170][_#13170])
* drake::multibody::MultibodyPlant default constructor ([#13170][_#13170])
* drake::systems::Simulator::reset_integrator ([#13172][_#13172])
* drake::systems::System::CheckValidContextT ([#13172][_#13172])
* drake::systems::SystemBase::CheckValidContext ([#13172][_#13172])
* drake::systems::SystemBase::DoCheckValidContext ([#13172][_#13172])
* drake::systems::SystemBase::ThrowIfContextNotCompatible ([#13172][_#13172])
* pydrake.examples.manipulation_station.ManipulationStation.SetIiwaPosition(q, context) ([#13233][_#13233])
* pydrake.examples.manipulation_station.ManipulationStation.SetIiwaVelocity(v, context) ([#13233][_#13233])
* pydrake.examples.manipulation_station.ManipulationStation.SetWsgPosition(q, context) ([#13233][_#13233])
* pydrake.examples.manipulation_station.ManipulationStation.SetWsgVelocity(v, context) ([#13233][_#13233])
* pydrake.geometry.FrameId constructor ([#13233][_#13233])
* pydrake.geometry.GeometryId constructor ([#13233][_#13233])
* pydrake.geometry.SceneGraph.AddRenderer(renderer_name=) ([#13233][_#13233])
* pydrake.geometry.SourceId constructor ([#13233][_#13233])
* pydrake.multibody.AddMultibodyPlantSceneGraph(builder) ([#13170][_#13170])
* pydrake.multibody.MultibodyPlant zero-argument constructor ([#13170][_#13170])
* Legacy ("attic") manipulation/util ([#13169][_#13169])
* The json external ([#13171][_#13171])
* The --config=snopt_fortran bazel option ([#13171][_#13171])
* drake/examples/kuka_iiwa/iiwa_wsg_simulation ([#13169][_#13169])

# Notes

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

[_#12158]: https://github.com/RobotLocomotion/drake/pull/12158
[_#13030]: https://github.com/RobotLocomotion/drake/pull/13030
[_#13036]: https://github.com/RobotLocomotion/drake/pull/13036
[_#13049]: https://github.com/RobotLocomotion/drake/pull/13049
[_#13050]: https://github.com/RobotLocomotion/drake/pull/13050
[_#13054]: https://github.com/RobotLocomotion/drake/pull/13054
[_#13055]: https://github.com/RobotLocomotion/drake/pull/13055
[_#13057]: https://github.com/RobotLocomotion/drake/pull/13057
[_#13068]: https://github.com/RobotLocomotion/drake/pull/13068
[_#13088]: https://github.com/RobotLocomotion/drake/pull/13088
[_#13097]: https://github.com/RobotLocomotion/drake/pull/13097
[_#13105]: https://github.com/RobotLocomotion/drake/pull/13105
[_#13108]: https://github.com/RobotLocomotion/drake/pull/13108
[_#13109]: https://github.com/RobotLocomotion/drake/pull/13109
[_#13111]: https://github.com/RobotLocomotion/drake/pull/13111
[_#13112]: https://github.com/RobotLocomotion/drake/pull/13112
[_#13113]: https://github.com/RobotLocomotion/drake/pull/13113
[_#13114]: https://github.com/RobotLocomotion/drake/pull/13114
[_#13127]: https://github.com/RobotLocomotion/drake/pull/13127
[_#13133]: https://github.com/RobotLocomotion/drake/pull/13133
[_#13135]: https://github.com/RobotLocomotion/drake/pull/13135
[_#13137]: https://github.com/RobotLocomotion/drake/pull/13137
[_#13138]: https://github.com/RobotLocomotion/drake/pull/13138
[_#13140]: https://github.com/RobotLocomotion/drake/pull/13140
[_#13141]: https://github.com/RobotLocomotion/drake/pull/13141
[_#13142]: https://github.com/RobotLocomotion/drake/pull/13142
[_#13144]: https://github.com/RobotLocomotion/drake/pull/13144
[_#13149]: https://github.com/RobotLocomotion/drake/pull/13149
[_#13151]: https://github.com/RobotLocomotion/drake/pull/13151
[_#13152]: https://github.com/RobotLocomotion/drake/pull/13152
[_#13155]: https://github.com/RobotLocomotion/drake/pull/13155
[_#13156]: https://github.com/RobotLocomotion/drake/pull/13156
[_#13157]: https://github.com/RobotLocomotion/drake/pull/13157
[_#13158]: https://github.com/RobotLocomotion/drake/pull/13158
[_#13163]: https://github.com/RobotLocomotion/drake/pull/13163
[_#13169]: https://github.com/RobotLocomotion/drake/pull/13169
[_#13170]: https://github.com/RobotLocomotion/drake/pull/13170
[_#13171]: https://github.com/RobotLocomotion/drake/pull/13171
[_#13172]: https://github.com/RobotLocomotion/drake/pull/13172
[_#13178]: https://github.com/RobotLocomotion/drake/pull/13178
[_#13180]: https://github.com/RobotLocomotion/drake/pull/13180
[_#13183]: https://github.com/RobotLocomotion/drake/pull/13183
[_#13188]: https://github.com/RobotLocomotion/drake/pull/13188
[_#13189]: https://github.com/RobotLocomotion/drake/pull/13189
[_#13190]: https://github.com/RobotLocomotion/drake/pull/13190
[_#13193]: https://github.com/RobotLocomotion/drake/pull/13193
[_#13194]: https://github.com/RobotLocomotion/drake/pull/13194
[_#13195]: https://github.com/RobotLocomotion/drake/pull/13195
[_#13197]: https://github.com/RobotLocomotion/drake/pull/13197
[_#13198]: https://github.com/RobotLocomotion/drake/pull/13198
[_#13199]: https://github.com/RobotLocomotion/drake/pull/13199
[_#13200]: https://github.com/RobotLocomotion/drake/pull/13200
[_#13204]: https://github.com/RobotLocomotion/drake/pull/13204
[_#13211]: https://github.com/RobotLocomotion/drake/pull/13211
[_#13217]: https://github.com/RobotLocomotion/drake/pull/13217
[_#13225]: https://github.com/RobotLocomotion/drake/pull/13225
[_#13229]: https://github.com/RobotLocomotion/drake/pull/13229
[_#13230]: https://github.com/RobotLocomotion/drake/pull/13230
[_#13233]: https://github.com/RobotLocomotion/drake/pull/13233
[_#13235]: https://github.com/RobotLocomotion/drake/pull/13235
[_#13250]: https://github.com/RobotLocomotion/drake/pull/13250
[_#13252]: https://github.com/RobotLocomotion/drake/pull/13252
[_#13255]: https://github.com/RobotLocomotion/drake/pull/13255
[_#13259]: https://github.com/RobotLocomotion/drake/pull/13259
[_#13260]: https://github.com/RobotLocomotion/drake/pull/13260
[_#13262]: https://github.com/RobotLocomotion/drake/pull/13262
[_#13268]: https://github.com/RobotLocomotion/drake/pull/13268
[_#13269]: https://github.com/RobotLocomotion/drake/pull/13269
[_#13270]: https://github.com/RobotLocomotion/drake/pull/13270
[_#13272]: https://github.com/RobotLocomotion/drake/pull/13272
[_#13274]: https://github.com/RobotLocomotion/drake/pull/13274
[_#13275]: https://github.com/RobotLocomotion/drake/pull/13275
[_#13281]: https://github.com/RobotLocomotion/drake/pull/13281
[_#13286]: https://github.com/RobotLocomotion/drake/pull/13286
[_#13287]: https://github.com/RobotLocomotion/drake/pull/13287
[_#13294]: https://github.com/RobotLocomotion/drake/pull/13294
[_#13303]: https://github.com/RobotLocomotion/drake/pull/13303

{% comment %}
Current oldest_commit 77a7b9437331f1540666b9089395b53da403e4fa (inclusive).
Current newest_commit 3e70123bd8cfbeebba57aa513531383d5e52d1cb (inclusive).
{% endcomment %}
