---
title: Drake v0.28.0
date: 2021-03-15
released: 2021-03-15
---

# Announcements

* We are pleased to announce a major update to the Drake website, with clearer
  and more modern design.  We welcome any and all feedback and suggestions for
  how we can keep making it even better in the future!

* On macOS, Drake now supports Python 3.9 (and no longer supports 3.8).

# Breaking changes since v0.27.0

* A major bug fix for Systems with high-rate timed events (such as LCM publishers) ([#14663][_#14663])
  * Such systems in the past may have skipped time steps ([#12620][_#12620]).
  * With this change they will no longer miss those time steps, which may appear to the user as a performance regression or small behaviour change.
* The upgrade to libsdformat 10.3.0  ([#14705][_#14705]) means that malformed `<pose/>` elements will now throw an error rather than having erroneous values replaced with zero (e.g. you only specify 5 floats instead of the required 6, or you use `${pi / 4}` which is not valid in raw SDFormat).
  * You will need to ensure that any malformed `<pose/>` elements are fixed.

# Changes since v0.27.0

## Dynamical Systems

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

New features

* None

Fixes

* Evaluating fixed input ports with cloned contexts no longer segfaults ([#14701][_#14701])
* Earlier and more explicit checks that a Context matches its System ([#14738][_#14738])

## Mathematical Program

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

New features

* None

Fixes

* None

## Multibody Dynamics

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

New features

* Add capsule mesh ([#14642][_#14642])
* Add capsule field ([#14664][_#14664])
* Allow RenderEngine implementations that require warm starting ([#14677][_#14677])

Fixes

* Give better error when a joint has multiple mobilizers (typically caused by a user typo when creating the joint) ([#14655][_#14655])
* Give better error for unconnected input ports ([#14773][_#14773])
* All `systems::multibody::MultibodyPlant` APIs that previously took `const std::string&` now use `std::string_view` instead.  This does not require any changes to callers, as the types convert transparently. ([#14719][_#14719])

## Tutorials and examples

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

* Add missing tutorials to build file ([#14722][_#14722])
* Add LCM period argument to `AllegroCommandReceiver`'s constructor ([#14732][_#14732])
* Do not use `yaml.CLoader` in acrobot example ([#14750][_#14750])

## Miscellaneous features and fixes

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

* Fix C++20 compatibility ([#14648][_#14648])
* Improve `AbstractValue` error message suggestions ([#14709][_#14709])

## pydrake bindings

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

New features

* None

Fixes

* Fix the jupyter `runAll` mechanism when using `process_ipywidget_events` ([#14742][_#14742])

Newly bound

* None

## Build system

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

* Switch to Python 3.9 on macOS ([#14605][_#14605])
* Allow users to build object code using `-std=c++20` mode without angering libclang ([#14669][_#14669])
* Use correct suffix for Python C extensions ([#14730][_#14730])

## Build dependencies

* Add [CLP](https://projects.coin-or.org/Clp) as a direct dependency, in preparation for adding it as a MathematicalProgram solver; previously, it was was only an indirect dependency via dReal ([#14729][_#14729])
* Upgrade recommended Bazel version to 4.0 ([#14717][_#14717])
* Upgrade common_robotics_utilities to latest commit ([#14728][_#14728])
* Upgrade ghc_filesystem to latest release 1.5.0 ([#14711][_#14711])
* Upgrade intel_realsense_ros to latest release 2.2.22 ([#14713][_#14713])
* Upgrade meshcat latest commit ([#14715][_#14715])
* Upgrade meshcat_python to latest commit ([#14715][_#14715])
* Upgrade osqp to latest release 0.6.2 ([#14714][_#14714])
* Upgrade pybind11 fork to latest commit ([#14225][_#14225])
* Upgrade qdldl to latest release 0.1.5 ([#14714][_#14714])
* Upgrade ros_xacro to latest release 1.13.10 ([#14712][_#14712])
* Upgrade sdformat to latest release 10.3.0 ([#14705][_#14705])
* Upgrade tinyobjloader to new upstream repository and latest commit ([#14656][_#14656])
* Upgrade voxelized_geometry_tools to latest commit ([#14728][_#14728])

## Newly-deprecated APIs

* The `@tinyxml` external is being removed from Drake on or after 2021-07-01.  Downstream projects should add it to their own WORKSPACE if needed. ([#14705][_#14705])

## Removal of deprecated items

* None

# Notes


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

<!-- <begin issue links> -->
[_#12620]: https://github.com/RobotLocomotion/drake/pull/12620
[_#14225]: https://github.com/RobotLocomotion/drake/pull/14225
[_#14605]: https://github.com/RobotLocomotion/drake/pull/14605
[_#14642]: https://github.com/RobotLocomotion/drake/pull/14642
[_#14648]: https://github.com/RobotLocomotion/drake/pull/14648
[_#14655]: https://github.com/RobotLocomotion/drake/pull/14655
[_#14656]: https://github.com/RobotLocomotion/drake/pull/14656
[_#14663]: https://github.com/RobotLocomotion/drake/pull/14663
[_#14664]: https://github.com/RobotLocomotion/drake/pull/14664
[_#14669]: https://github.com/RobotLocomotion/drake/pull/14669
[_#14677]: https://github.com/RobotLocomotion/drake/pull/14677
[_#14701]: https://github.com/RobotLocomotion/drake/pull/14701
[_#14705]: https://github.com/RobotLocomotion/drake/pull/14705
[_#14709]: https://github.com/RobotLocomotion/drake/pull/14709
[_#14711]: https://github.com/RobotLocomotion/drake/pull/14711
[_#14712]: https://github.com/RobotLocomotion/drake/pull/14712
[_#14713]: https://github.com/RobotLocomotion/drake/pull/14713
[_#14714]: https://github.com/RobotLocomotion/drake/pull/14714
[_#14715]: https://github.com/RobotLocomotion/drake/pull/14715
[_#14717]: https://github.com/RobotLocomotion/drake/pull/14717
[_#14719]: https://github.com/RobotLocomotion/drake/pull/14719
[_#14722]: https://github.com/RobotLocomotion/drake/pull/14722
[_#14728]: https://github.com/RobotLocomotion/drake/pull/14728
[_#14729]: https://github.com/RobotLocomotion/drake/pull/14729
[_#14730]: https://github.com/RobotLocomotion/drake/pull/14730
[_#14732]: https://github.com/RobotLocomotion/drake/pull/14732
[_#14738]: https://github.com/RobotLocomotion/drake/pull/14738
[_#14742]: https://github.com/RobotLocomotion/drake/pull/14742
[_#14750]: https://github.com/RobotLocomotion/drake/pull/14750
[_#14771]: https://github.com/RobotLocomotion/drake/pull/14771
[_#14773]: https://github.com/RobotLocomotion/drake/pull/14773
<!-- <end issue links> -->

<!--
  Current oldest_commit fc1e0e5e7eb8cef3b9a38de650bd8ccdff04a4e4 (exclusive).
  Current newest_commit 178275cba6308ed8205712a72a7a57b4a8aee6e9 (inclusive).
-->
