---
title: Drake v0.36.0
date: 2021-11-16
released: 2021-11-16
---

# Announcements

* This release introduces support for macOS 12 ("Monterey").
  * This configuration is not yet tested by our Jenkins continuous integration
    builds, so should be considered to be "experimental" for the moment.
    We expect to provide full support as of our next release.

# Breaking changes since v0.35.0

* This release removes support for MacOS 10.15 ("Catalina"), officially ending Drake support for MacOS 10 ([#16041][_#16041], [#16055][_#16055]).
  * Users should upgrade to MacOS 11 ("Big Sur").

* We now return `const VectorX&` rather than `VectorBlock` from `port.Eval()` and similar methods, where possible ([#16031][_#16031]).
  * This is a breaking change in cases where callers explicitly denote the return type as a `VectorBlock`; we expect that most callers are not relying on `VectorBlock` semantics.
  * Virtuals defined by `VectorSystem` still take `VectorBlock` parameters, so user subclasses will not be affected.

* Unused models (sphere, box, etc.) removed from sensors directory ([#15975][_#15975])

# Changes since v0.35.0

## Dynamical Systems

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

New features

* Add `systems::sensors::OptitrackReceiver` ([#16011][_#16011])
* Add `VectorX`-returning value methods to `systems::framework::BasicVector` and `systems::framework::DiscreteValues` ([#16051][_#16051])
* DiagramBuilder fails-fast if used after Build ([#16082][_#16082])

Fixes

* None

## Mathematical Program

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

New features

* Add `IrisInConfigurationSpace` with Ibex geometry optimization ([#15789][_#15789])
* Add `GetGraphvizString` to `GraphOfConvexSets` ([#16017][_#16017])
* Cleanup memory management in `GraphOfConvexSets`; this includes API-breaking changes (allowable as this is an unstable experimental API) removing `VertexIds()` (Use `Vertices()` instead) and changing the return value of `Edges()`. ([#16016][_#16016])

Fixes

* Toppra: Use one solver for every optimization and fix zero velocity bug ([#15964][_#15964])

## Multibody Dynamics and Geometry

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

New features

* Add `MeshcatPointCloudVisualizer` ([#15938][_#15938])
* Add recording methods to `MeshcatVisualizerCpp` ([#15937][_#15937])
* Add `MeshcatContactVisualizer` ([#15968][_#15968])
* Add `Meshcat::SetLine` and `Meshcat::SetLineSegments` ([#16063][_#16063])
* Add `Meshcat::SetTriangleMesh` and `Meshcat::SetObject(TriangleSurfaceMesh)` ([#16077][_#16077])
* New hydroelastic contact model in progress ([#16009][_#16009], [#15962][_#15962])

Fixes

* None

## Tutorials and examples

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

* Add perception role for PendulumGeometry ([#16100][_#16100])

## Miscellaneous features and fixes

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

* Add sugar to read and write yaml-serialized files ([#15902][_#15902], [#16000][_#16000], [#16096][_#16096])
* Allow yaml-serializing a top-level map with no enclosing struct ([#16059][_#16059])
* Allow LCM handlers for `Subscribe` to throw exceptions ([#16027][_#16027])
* Convert package URIs to use top-level drake manifest; all package URIs used within Drake's publicly accessible data now use `package://drake/...` URIs ([#15947][_#15947])

## pydrake bindings

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

New features

* Add `symbolic.Expression.Unapply` to allow visitor patterns ([#16014][_#16014])

Fixes

* Port values borrowed from a Context keep the Context alive (this prevents premature frees at cell boundaries in jupyter notebooks) ([#16095][_#16095])

Newly bound

* `geometry::optimization::GraphOfConvexSets` ([#15974][_#15974])
* `geometry::optimization::HPolyhedron::CartesianPower` ([#15999][_#15999])
* `geometry::optimization::HPolyhedron::CartesianProduct` ([#15999][_#15999])
* `symbolic::uninterpreted_function` ([#16015][_#16015])
* `symbolic::Expression.get_kind` ([#16012][_#16012])
* `systems::framework::CacheEntryValue` ([#15983][_#15983])
* `systems::framework::CacheEntry` ([#15983][_#15983])
* `systems::framework::ContextBase` ([#15979][_#15979])
* `systems::framework::SystemBase.DeclareCacheEntry` ([#15983][_#15983])
* `systems::framework::ValueProducer` ([#15983][_#15983])
* `perception::DepthImageToPointCloud.camera_pose_input_port` ([#16048][_#16048])
* All C++ lcm message type serializers ([#16026][_#16026])
  * `drake::experimental_lcmt_deformable_tri`
  * `drake::experimental_lcmt_deformable_tri_mesh_init`
  * `drake::experimental_lcmt_deformable_tri_mesh_update`
  * `drake::experimental_lcmt_deformable_tri_meshes_init`
  * `drake::experimental_lcmt_deformable_tri_meshes_update`
  * `drake::lcmt_acrobot_u`
  * `drake::lcmt_acrobot_x`
  * `drake::lcmt_acrobot_y`
  * `drake::lcmt_allegro_command`
  * `drake::lcmt_allegro_status`
  * `drake::lcmt_call_python`
  * `drake::lcmt_call_python_data`
  * `drake::lcmt_contact_results_for_viz`
  * `drake::lcmt_drake_signal`
  * `drake::lcmt_force_torque`
  * `drake::lcmt_header`
  * `drake::lcmt_hydroelastic_contact_surface_for_viz`
  * `drake::lcmt_hydroelastic_contact_surface_tri_for_viz`
  * `drake::lcmt_hydroelastic_quadrature_per_point_data_for_viz`
  * `drake::lcmt_iiwa_command`
  * `drake::lcmt_iiwa_status`
  * `drake::lcmt_iiwa_status_telemetry`
  * `drake::lcmt_image`
  * `drake::lcmt_image_array`
  * `drake::lcmt_jaco_command`
  * `drake::lcmt_jaco_status`
  * `drake::lcmt_panda_command`
  * `drake::lcmt_panda_status`
  * `drake::lcmt_planar_gripper_command`
  * `drake::lcmt_planar_gripper_finger_command`
  * `drake::lcmt_planar_gripper_finger_face_assignment`
  * `drake::lcmt_planar_gripper_finger_face_assignments`
  * `drake::lcmt_planar_gripper_finger_status`
  * `drake::lcmt_planar_gripper_status`
  * `drake::lcmt_planar_manipuland_status`
  * `drake::lcmt_planar_plant_state`
  * `drake::lcmt_point`
  * `drake::lcmt_point_cloud`
  * `drake::lcmt_point_cloud_field`
  * `drake::lcmt_point_pair_contact_info_for_viz`
  * `drake::lcmt_quaternion`
  * `drake::lcmt_robot_plan`
  * `drake::lcmt_robot_state`
  * `drake::lcmt_schunk_wsg_command`
  * `drake::lcmt_schunk_wsg_status`
  * `drake::lcmt_scope`
  * `drake::lcmt_viewer_command`
  * `drake::lcmt_viewer_draw`
  * `drake::lcmt_viewer_geometry_data`
  * `drake::lcmt_viewer_link_data`
  * `drake::lcmt_viewer_load_robot`
* All scalar templates of Polynomial and Trajectory + subclasses ([#16067][_#16067]):
  * `math::Polynomial`
  * `trajectories::BsplineTrajectory`
  * `trajectories::PiecewisePolynomial`
  * `trajectories::PiecewisePose`
  * `trajectories::PiecewiseQuaternionSlerp`
  * `trajectories::PiecewiseTrajectory`
  * `trajectories::Trajectory`

## Build system

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

* Enable support for macOS 12 Monterey (experimental) ([#16068][_#16068])
* Drop support for macOS Catalina ([#16041][_#16041], [#16055][_#16055])
* Build ibex 2.8.6 from source ([#15963][_#15963])
* Include `HAVE_SPDLOG` compile definition for cmake consumers ([#16044][_#16044])
* Fix missing `SONAME` fields for `libdrake.so` and `libdrake_marker.so` ([#16002][_#16002])
* Add `:drake_shared_library` target to `drake_bazel_installed` ([#16072][_#16072])
* Improve `drake_bazel_installed` compatibility with 'apt install drake-dev' ([#16070][_#16070])
* Display a disclaimer when 'apt-get update' is broken ([#16086][_#16086])
* Document the latest Drake-compatible CLion and Bazel versions ([#16081][_#16081])

## Build dependencies

<!-- Manually relocate any "Upgrade foo_external to latest" lines to here, -->
<!-- and then sort them alphabetically. -->

* Upgrade `buildifier` to latest release 4.2.3 ([#16004][_#16004])
* Upgrade `common_robotics_utilities` to latest commit ([#16004][_#16004])
* Upgrade `ghc_filesystem` to latest release v1.5.10 ([#16004][_#16004])
* Upgrade `ignition_math` to latest release 6.9.2 ([#16004][_#16004])
* Upgrade `lcm` to latest commit ([#16034][_#16034])
* Upgrade `pycodestyle` to latest release 2.8.0 ([#16004][_#16004])
* Upgrade `rules_python` to latest release 0.5.0 ([#16004][_#16004])
* Upgrade `tinyobjloader` to latest commit ([#16004][_#16004])
* Upgrade `uritemplate_py` to latest release 4.1.1 ([#16004][_#16004])
* Upgrade `uwebsockets` to latest release v20.6.0 ([#16004][_#16004])
* Upgrade `voxelized_geometry_tools` to latest commit ([#15951][_#15951])

## Newly-deprecated APIs

* `lcm::DrakeMockLcm` ([#16078][_#16078])
* `multibody::parsing::ModelWeldErrorFunction` ([#15949][_#15949])
* `manipulation::perception::OptitrackPoseExtractor` ([#16011][_#16011])
* `systems::controllers::CartesianSetpoint` ([#16006][_#16006], [#16023][_#16023])
* `systems::controllers::VectorSetpoint` ([#16006][_#16006], [#16023][_#16023])
* `systems::framework::System::EvalEigenVectorInput` ([#16042][_#16042])
* `testing::ExpectRotMat` ([#16007][_#16007])
* `testing::CompareTransforms` ([#16007][_#16007])
* `yaml::YamlReadArchive` constructors that accept a `YAML::Node` ([#16057][_#16057])
* `pydrake.multibody.plant.MultibodyPlant.RegisterVisualGeometry` overload that uses `Isometry3` ([#16008][_#16008])
* `pydrake.multibody.plant.MultibodyPlant.SetFreeBodyPose` overload that uses `Isometry3` ([#16008][_#16008])
* `pydrake.multibody.plant.MultibodyPlant.WeldFrames` overload that uses `Isometry3` ([#16008][_#16008])
* `pydrake.multibody.tree.FixedOffsetFrame.__init__` overload that uses `Isometry3` ([#16008][_#16008])
* `pydrake.multibody.tree.WeldJoint.__init__` overload that uses `Isometry3` ([#16008][_#16008])

## Newly-deprecated configurations

* Deprecate the use of package URIs other than `package://drake/...` to refer to Drake resources ([#15947][_#15947]):
  * `package://allegro_hand_description`
  * `package://franka_description`
  * `package://iiwa_description`
  * `package://jaco_description`
  * `package://manipulation_station`
  * `package://wsg_50_description`
  * `package://ycb`
* Deprecate installed use of kuka_simulation and kuka_plan_runner ([#16061][_#16061])
* Deprecate the use of uncommon primitive types during `yaml::YamlReadArchive` ([#16057][_#16057])
* Deprecate the colab installer helper script; use `pip install drake` instead ([#16073][_#16073])

## Removal of deprecated items

* `ExtractDoubleOrThrow` on generic types (per-type specializations remain) ([#16021][_#16021])
* `geometry::SceneGraph::ExcludeCollisionsBetween` and `geometry::SceneGraph::ExcludeCollisionsWithin` ([#16029][_#16029])
* `mathematicalprogram.Binding_{Type}` aliases ([#16038][_#16038]):
  * `mathematicalprogram.Binding_BoundingBoxConstraint`
  * `mathematicalprogram.Binding_Constraint`
  * `mathematicalprogram.Binding_Cost`
  * `mathematicalprogram.Binding_EvaluatorBase`
  * `mathematicalprogram.Binding_ExponentialConeConstraint`
  * `mathematicalprogram.Binding_L2NormCost`
  * `mathematicalprogram.Binding_LinearComplementarityConstraint`
  * `mathematicalprogram.Binding_LinearConstraint`
  * `mathematicalprogram.Binding_LinearCost`
  * `mathematicalprogram.Binding_LinearEqualityConstraint`
  * `mathematicalprogram.Binding_LinearMatrixInequalityConstraint`
  * `mathematicalprogram.Binding_LorentzConeConstraint`
  * `mathematicalprogram.Binding_PositiveSemidefiniteConstraint`
  * `mathematicalprogram.Binding_QuadraticCost`
  * `mathematicalprogram.Binding_RotatedLorentzConeConstraint`
  * `mathematicalprogram.Binding_VisualizationCallback`
* `solvers::MosekSolver::set_stream_logging` ([#16020][_#16020])
* `systems::framework::System<T>::DeclareCacheEntry` (Moved to protected access) ([#15985][_#15985])
* `systems::framework::LeafSystem::DeclareAbstractOutputPort` variant with a `make` callback ([#16021][_#16021])
* `systems::framework::SystemBase::DeclareCacheEntry` variants with a `make` callback ([#16021][_#16021])
* `systems::framework::SystemBase::DeclareCacheEntry` variants with a non-void `calc` callback ([#16021][_#16021])
* `systems::framework::SystemScalarConverter(..., GuaranteedSubtypePreservation)` ([#16021][_#16021])
* `systems::lcm::ConnectLcmScope` ([#16021][_#16021])
* The "lcm_visualization" (`PoseBundle`) port of `pydrake.systems.planar_scenegraph_visualizer.PlanarSceneGraphVisualizer` ([#16039][_#16039])
* The `expose_all_files.bzl` bazel macro ([#16018][_#16018])

This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v0.36.0) named
``drake-20211116-{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> -->
[_#15789]: https://github.com/RobotLocomotion/drake/pull/15789
[_#15902]: https://github.com/RobotLocomotion/drake/pull/15902
[_#15937]: https://github.com/RobotLocomotion/drake/pull/15937
[_#15938]: https://github.com/RobotLocomotion/drake/pull/15938
[_#15947]: https://github.com/RobotLocomotion/drake/pull/15947
[_#15949]: https://github.com/RobotLocomotion/drake/pull/15949
[_#15951]: https://github.com/RobotLocomotion/drake/pull/15951
[_#15962]: https://github.com/RobotLocomotion/drake/pull/15962
[_#15963]: https://github.com/RobotLocomotion/drake/pull/15963
[_#15964]: https://github.com/RobotLocomotion/drake/pull/15964
[_#15968]: https://github.com/RobotLocomotion/drake/pull/15968
[_#15974]: https://github.com/RobotLocomotion/drake/pull/15974
[_#15975]: https://github.com/RobotLocomotion/drake/pull/15975
[_#15979]: https://github.com/RobotLocomotion/drake/pull/15979
[_#15983]: https://github.com/RobotLocomotion/drake/pull/15983
[_#15985]: https://github.com/RobotLocomotion/drake/pull/15985
[_#15999]: https://github.com/RobotLocomotion/drake/pull/15999
[_#16000]: https://github.com/RobotLocomotion/drake/pull/16000
[_#16002]: https://github.com/RobotLocomotion/drake/pull/16002
[_#16004]: https://github.com/RobotLocomotion/drake/pull/16004
[_#16006]: https://github.com/RobotLocomotion/drake/pull/16006
[_#16007]: https://github.com/RobotLocomotion/drake/pull/16007
[_#16008]: https://github.com/RobotLocomotion/drake/pull/16008
[_#16009]: https://github.com/RobotLocomotion/drake/pull/16009
[_#16011]: https://github.com/RobotLocomotion/drake/pull/16011
[_#16012]: https://github.com/RobotLocomotion/drake/pull/16012
[_#16014]: https://github.com/RobotLocomotion/drake/pull/16014
[_#16015]: https://github.com/RobotLocomotion/drake/pull/16015
[_#16016]: https://github.com/RobotLocomotion/drake/pull/16016
[_#16017]: https://github.com/RobotLocomotion/drake/pull/16017
[_#16018]: https://github.com/RobotLocomotion/drake/pull/16018
[_#16020]: https://github.com/RobotLocomotion/drake/pull/16020
[_#16021]: https://github.com/RobotLocomotion/drake/pull/16021
[_#16023]: https://github.com/RobotLocomotion/drake/pull/16023
[_#16026]: https://github.com/RobotLocomotion/drake/pull/16026
[_#16027]: https://github.com/RobotLocomotion/drake/pull/16027
[_#16029]: https://github.com/RobotLocomotion/drake/pull/16029
[_#16031]: https://github.com/RobotLocomotion/drake/pull/16031
[_#16034]: https://github.com/RobotLocomotion/drake/pull/16034
[_#16038]: https://github.com/RobotLocomotion/drake/pull/16038
[_#16039]: https://github.com/RobotLocomotion/drake/pull/16039
[_#16041]: https://github.com/RobotLocomotion/drake/pull/16041
[_#16042]: https://github.com/RobotLocomotion/drake/pull/16042
[_#16044]: https://github.com/RobotLocomotion/drake/pull/16044
[_#16048]: https://github.com/RobotLocomotion/drake/pull/16048
[_#16051]: https://github.com/RobotLocomotion/drake/pull/16051
[_#16055]: https://github.com/RobotLocomotion/drake/pull/16055
[_#16057]: https://github.com/RobotLocomotion/drake/pull/16057
[_#16059]: https://github.com/RobotLocomotion/drake/pull/16059
[_#16061]: https://github.com/RobotLocomotion/drake/pull/16061
[_#16063]: https://github.com/RobotLocomotion/drake/pull/16063
[_#16067]: https://github.com/RobotLocomotion/drake/pull/16067
[_#16068]: https://github.com/RobotLocomotion/drake/pull/16068
[_#16070]: https://github.com/RobotLocomotion/drake/pull/16070
[_#16072]: https://github.com/RobotLocomotion/drake/pull/16072
[_#16073]: https://github.com/RobotLocomotion/drake/pull/16073
[_#16077]: https://github.com/RobotLocomotion/drake/pull/16077
[_#16078]: https://github.com/RobotLocomotion/drake/pull/16078
[_#16081]: https://github.com/RobotLocomotion/drake/pull/16081
[_#16082]: https://github.com/RobotLocomotion/drake/pull/16082
[_#16086]: https://github.com/RobotLocomotion/drake/pull/16086
[_#16095]: https://github.com/RobotLocomotion/drake/pull/16095
[_#16096]: https://github.com/RobotLocomotion/drake/pull/16096
[_#16100]: https://github.com/RobotLocomotion/drake/pull/16100
<!-- <end issue links> -->

<!--
  Current oldest_commit 6ea3f08c43846d848f3be1c6c66e3dd87bb60355 (exclusive).
  Current newest_commit ab9b236d0dba0d87ddd25fc3c1ede143024a8c55 (inclusive).
-->
