---
title: Drake v0.33.0
date: 2021-08-11
released: 2021-08-11
---

# Announcements

* The geometry module offers a new CollisionFilterManager API.
* The geometry/optimization module offers many new features.
* The mathematical program module offers many improvements for debugging.
* The systems module offers more convenient API sugar.
* Several modules contain performance improvements.

# Breaking changes since v0.32.0

* The ``drake/examples/pendulum/Pendulum.urdf`` now includes a weld joint ([#15426][_#15426]).
  * Users who were adding the weld by hand and should remove their weld.
* The ``drake::systems::lcm::SerializerInterface`` has a new pure-virtual method for ``Clone`` ([#15394][_#15394]).
  * Users who were extending it directly (rather than using the concrete ``Serializer`` class) should to implement the new method.
* The ``drake::geometry::GeometryState`` class no longer offers ``ExcludeCollisionsWithin`` and ``ExcludeCollisionBetween`` ([#15348][_#15348]).
  * This class (though not in an `internal` namespace yet) is documented to be for Drake's internal use only.

# Changes since v0.32.0

## Dynamical Systems

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

New features

* Add sugar for declaring vector ports by size ([#15538][_#15538])
* Add sugar for setting/getting Eigen::VectorX data from DiscreteValues ([#15539][_#15539])
* Support fixed input ports in RegionOfAttraction ([#15425][_#15425])
* LCM's SerializerInterface is now cloneable ([#15394][_#15394])
* Add VectorLogSink system ([#15523][_#15523], [#15581][_#15581]) and its VectorLog storage ([#15484][_#15484])

Fixes

* Improve the performance (i.e., reduce the overhead) of vector-valued ports ([#15431][_#15431], [#15432][_#15432], [#15470][_#15470]) and context checks ([#15595][_#15595])
* Narrow the LcmSubscriberSystem output port dependencies ([#15563][_#15563])

## Mathematical Program

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

New features

* MathematicalProgram can report its ProgramType enum ([#15340][_#15340])
* MathematicalProgram allows removing constraints ([#15350][_#15350])
* AddLorentzConeConstraint allow customization of the eval_type ([#15553][_#15553])
* Many improvements to configurations for debugging:
  * Improve printing for Expression and Lorentz cone constraints ([#15472][_#15472]) ([#15475][_#15475])
  * GurobiSolver now support kPrintToConsole and kPrintFileName options ([#15497][_#15497])
  * GurobiSolver now supports GRBcomputeIIS and GRBwrite options ([#15438][_#15438])
  * IpoptSolver now supports the kPrintToConsole option ([#15502][_#15502])
  * MosekSolver now support kPrintToConsole and kPrintFileName options ([#15399][_#15399])
  * MosekSolver now supports writedata option ([#15568][_#15568])
  * OsqpSolver now supports the kPrintToConsole option ([#15501][_#15501])
  * SnoptSolver now supports the kPrintFileName option ([#15493][_#15493])
  * Solver options offers new sugar to get_print_to_console and get_print_file_name ([#15473][_#15473])
* Improvements to the new geometry/optimization module:
  * Make Point mutable ([#15368][_#15368])
  * Add ConvexSet::IntersectsWith ([#15372][_#15372])
  * Add HPolyhedron::CartesianPower ([#15371][_#15371])
  * Add GraphOfConvexSets ([#15413][_#15413])
  * Add IrisInConfigurationSpace ([#15476][_#15476])
  * Add SolveShortestPath to GraphOfConvexSets ([#15483][_#15483])
  * Add MinkowskiSum is-a ConvexSet ([#15543][_#15543])
* Begin adding support for IBEX ([#15552][_#15552])

Fixes

* Reject NaNs in Constraint bounds ([#15391][_#15391])
* Reject non-finite values in LinearConstraint A matrix ([#15391][_#15391])
* GurobiSolver throws when an option is set incorrectly ([#15412][_#15412])
* MosekSolver throws when an option is set incorrectly ([#15411][_#15411])
* Fix assertion in AddPositiveSemidefiniteConstraint ([#15580][_#15580])

## Multibody Dynamics and Geometry

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

New features

* Add new CollisionFilterManager API for manipulating collision filters ([#15348][_#15348])
* Add ability to remove collision filters ([#15415][_#15415])
* Allow model_instances in MultibodyPlant CalcJacobianCenterOfMassTranslationalVelocity ([#15387][_#15387])
* New hydroelastic contact model in progress ([#15210][_#15210], [#15358][_#15358])

Fixes

* Improve hydroelastic spatial force visualization ([#15416][_#15416])
* Respect (renderer, accepting) for post-hoc renderers ([#15448][_#15448])
* Fix Eigen::Block use-after-free ([#15451][_#15451])
* Fix joint pose computation during sdformat parsing when using frames as joint parent or child ([#15290][_#15290])
* Fix URDFs included by SDFormat models to be parsed by Drake directly instead of via URDF->SDFormat conversion; now those URDFs can contain custom elements (e.g., drake:joint) and other URDF elements not supported by SDFormat (e.g., transmission) ([#15140][_#15140])
* SDFormat parsing reports warnings when fed certain kinds of unrecognized elements ([#15317][_#15317])

## Tutorials and examples

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

* Include weld joint in Pendulum.urdf ([#15426][_#15426])

## Miscellaneous features and fixes

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

* Add DARE overload that takes Q, R, and N cost matrices ([#15352][_#15352])
* Add Value::maybe_get_mutable_value ([#15418][_#15418])
* Give DrakeLcm the ability to defer launching its thread ([#15390][_#15390])
* Add ExtractDoubleOrThrow for Eigen::MatrixBase ([#15518][_#15518])
* Give SortedPair compatibility with structured bindings ([#15551][_#15551])

## pydrake bindings

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

New features

* planar_scenegraph_visualizer uses SceneGraph API to visualize ([#15456][_#15456])
* Don't load native code upon 'import pydrake' ([#15585][_#15585], [#15591][_#15591])

Fixes

* Support passing matrix coefficients to ZeroOrderHold and PiecewisePolynomial ([#15433][_#15433]) ([#15442][_#15442])
* Use template Binding_[{Type}] ([#15409][_#15409]) ([#15457][_#15457])
* Allow upcasting to Binding_[Constraint] ([#15408][_#15408])
* Cease overriding DoPublish inappropriately ([#15447][_#15447])
* Reorder overall bindings for better Python type signatures ([#15410][_#15410])
* Preserve return type for mutable and const class methods ([#15507][_#15507])

Newly bound

* pydrake.multibody.parsing.PackageMap.Remove ([#15430][_#15430])
* pydrake.multibody.plant.MultibodyPlant.CalcMassMatrix ([#15520][_#15520])
* pydrake.solvers.mathematicalprogram.MathematicalProgram.AddCost(obj=...) ([#15400][_#15400])
* pydrake.systems.primitives.TrajectoryLinearSystem ([#15397][_#15397])

## Build system

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

* Add python-is-python3 and pip to 20.04 Dockerfile ([#15586][_#15586])
* Improve compatibility with Eigen 3.4 pre-releases ([#15452][_#15452], [#15453][_#15453], [#15556][_#15556], [#15580][_#15580])
* Enhance lcm.bzl to understand dots within lcm_package names ([#15591][_#15591])

## Build dependencies

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

* Upgrade gtest to latest release 1.11.0 ([#15544][_#15544])
* Upgrade libibex-dev to 2.7.4.20210515 ([#15531][_#15531])
* Upgrade rules_pkg to latest release 0.5.0 ([#15548][_#15548])
* Upgrade styleguide latest commit ([#15547][_#15547])

## Newly-deprecated APIs

* DRAKE_THROW_UNLESS on a bare pointer ([#15513][_#15513])
* drake::ExtractDoubleOrThrow on non-standard types ([#15518][_#15518])
* drake::examples::manipulation_station::ManipulationStation "pose_bundle" output port ([#15534][_#15534])
* drake::geometry::SceneGraph::ExcludeCollisionsBetween ([#15396][_#15396])
* drake::geometry::SceneGraph::ExcludeCollisionsWithin ([#15396][_#15396])
* drake::geometry::SceneGraph::get_pose_bundle_output_port ([#15534][_#15534])
* drake::geometry::SceneGraphInspector::all_frame_ids ([#15525][_#15525])
* drake::solvers::MosekSolver::set_stream_logging ([#15399][_#15399])
* drake::systems::LeafSystem::DeclareOutputPort (only one overload) ([#15485][_#15485])
* drake::systems::SystemBase::DeclareCacheEntry (only some overloads) ([#15443][_#15443])
* drake::systems::lcm::TriggerTypeSet ([#15581][_#15581])
* drake::systems::rendering::FrameVelocity ([#15534][_#15534])
* drake::systems::rendering::PoseAggregator ([#15534][_#15534])
* drake::systems::rendering::PoseBundle ([#15534][_#15534])
* drake::systems::rendering::PoseBundleToDrawMessage ([#15534][_#15534])
* drake::systems::rendering::PoseVector ([#15534][_#15534])
* drake::systems::rendering::RenderPoseToGeometryPose ([#15534][_#15534])
* drake::systems::sensors::RgbdSensor::X_WB_output_port ([#15534][_#15534])
* drake::systems::sensors::RgbdSensorDiscrete::X_WB_output_port ([#15534][_#15534])
* expose_all_files.bzl ([#15469][_#15469])
* pydrake.geometry.SceneGraph.ExcludeCollisionsBetween ([#15396][_#15396])
* pydrake.geometry.SceneGraph.ExcludeCollisionsWithin ([#15396][_#15396])
* pydrake.solvers.mathematicalprogram.Binding_BoundingBoxConstraint ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_Constraint ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_Cost ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_EvaluatorBase ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_ExponentialConeConstraint ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_L2NormCost ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_LinearComplementarityConstraint ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_LinearConstraint ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_LinearCost ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_LinearEqualityConstraint ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_LinearMatrixInequalityConstraint ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_LorentzConeConstraint ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_PositiveSemidefiniteConstraint ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_QuadraticCost ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_RotatedLorentzConeConstraint ([#15409][_#15409])
* pydrake.solvers.mathematicalprogram.Binding_VisualizationCallback ([#15409][_#15409])
* pydrake.systems.planar_scenegraph_visualizer use of a PoseBundle-valued input port ([#15456][_#15456])

## Removal of deprecated items

* Parsing sdformat data with more than one model ([#15540][_#15540])
* drake::geometry::SignedDistancePair::is_nhat_BA_W_unique ([#15532][_#15532])
* drake::geometry::SignedDistanceToPoint::is_grad_w_unique ([#15532][_#15532])
* lcmtypes_bot2_core ([#15515][_#15515])
* lcmtypes_robotlocomotion ([#15515][_#15515])

# Notes

This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v0.33.0) named
``drake-20210811-{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> -->
[_#15140]: https://github.com/RobotLocomotion/drake/pull/15140
[_#15210]: https://github.com/RobotLocomotion/drake/pull/15210
[_#15290]: https://github.com/RobotLocomotion/drake/pull/15290
[_#15317]: https://github.com/RobotLocomotion/drake/pull/15317
[_#15340]: https://github.com/RobotLocomotion/drake/pull/15340
[_#15348]: https://github.com/RobotLocomotion/drake/pull/15348
[_#15350]: https://github.com/RobotLocomotion/drake/pull/15350
[_#15352]: https://github.com/RobotLocomotion/drake/pull/15352
[_#15358]: https://github.com/RobotLocomotion/drake/pull/15358
[_#15368]: https://github.com/RobotLocomotion/drake/pull/15368
[_#15371]: https://github.com/RobotLocomotion/drake/pull/15371
[_#15372]: https://github.com/RobotLocomotion/drake/pull/15372
[_#15387]: https://github.com/RobotLocomotion/drake/pull/15387
[_#15390]: https://github.com/RobotLocomotion/drake/pull/15390
[_#15391]: https://github.com/RobotLocomotion/drake/pull/15391
[_#15394]: https://github.com/RobotLocomotion/drake/pull/15394
[_#15396]: https://github.com/RobotLocomotion/drake/pull/15396
[_#15397]: https://github.com/RobotLocomotion/drake/pull/15397
[_#15399]: https://github.com/RobotLocomotion/drake/pull/15399
[_#15400]: https://github.com/RobotLocomotion/drake/pull/15400
[_#15408]: https://github.com/RobotLocomotion/drake/pull/15408
[_#15409]: https://github.com/RobotLocomotion/drake/pull/15409
[_#15410]: https://github.com/RobotLocomotion/drake/pull/15410
[_#15411]: https://github.com/RobotLocomotion/drake/pull/15411
[_#15412]: https://github.com/RobotLocomotion/drake/pull/15412
[_#15413]: https://github.com/RobotLocomotion/drake/pull/15413
[_#15415]: https://github.com/RobotLocomotion/drake/pull/15415
[_#15416]: https://github.com/RobotLocomotion/drake/pull/15416
[_#15418]: https://github.com/RobotLocomotion/drake/pull/15418
[_#15425]: https://github.com/RobotLocomotion/drake/pull/15425
[_#15426]: https://github.com/RobotLocomotion/drake/pull/15426
[_#15430]: https://github.com/RobotLocomotion/drake/pull/15430
[_#15431]: https://github.com/RobotLocomotion/drake/pull/15431
[_#15432]: https://github.com/RobotLocomotion/drake/pull/15432
[_#15433]: https://github.com/RobotLocomotion/drake/pull/15433
[_#15438]: https://github.com/RobotLocomotion/drake/pull/15438
[_#15442]: https://github.com/RobotLocomotion/drake/pull/15442
[_#15443]: https://github.com/RobotLocomotion/drake/pull/15443
[_#15447]: https://github.com/RobotLocomotion/drake/pull/15447
[_#15448]: https://github.com/RobotLocomotion/drake/pull/15448
[_#15451]: https://github.com/RobotLocomotion/drake/pull/15451
[_#15452]: https://github.com/RobotLocomotion/drake/pull/15452
[_#15453]: https://github.com/RobotLocomotion/drake/pull/15453
[_#15456]: https://github.com/RobotLocomotion/drake/pull/15456
[_#15457]: https://github.com/RobotLocomotion/drake/pull/15457
[_#15469]: https://github.com/RobotLocomotion/drake/pull/15469
[_#15470]: https://github.com/RobotLocomotion/drake/pull/15470
[_#15472]: https://github.com/RobotLocomotion/drake/pull/15472
[_#15473]: https://github.com/RobotLocomotion/drake/pull/15473
[_#15475]: https://github.com/RobotLocomotion/drake/pull/15475
[_#15476]: https://github.com/RobotLocomotion/drake/pull/15476
[_#15483]: https://github.com/RobotLocomotion/drake/pull/15483
[_#15484]: https://github.com/RobotLocomotion/drake/pull/15484
[_#15485]: https://github.com/RobotLocomotion/drake/pull/15485
[_#15493]: https://github.com/RobotLocomotion/drake/pull/15493
[_#15497]: https://github.com/RobotLocomotion/drake/pull/15497
[_#15501]: https://github.com/RobotLocomotion/drake/pull/15501
[_#15502]: https://github.com/RobotLocomotion/drake/pull/15502
[_#15507]: https://github.com/RobotLocomotion/drake/pull/15507
[_#15513]: https://github.com/RobotLocomotion/drake/pull/15513
[_#15515]: https://github.com/RobotLocomotion/drake/pull/15515
[_#15518]: https://github.com/RobotLocomotion/drake/pull/15518
[_#15520]: https://github.com/RobotLocomotion/drake/pull/15520
[_#15523]: https://github.com/RobotLocomotion/drake/pull/15523
[_#15525]: https://github.com/RobotLocomotion/drake/pull/15525
[_#15531]: https://github.com/RobotLocomotion/drake/pull/15531
[_#15532]: https://github.com/RobotLocomotion/drake/pull/15532
[_#15534]: https://github.com/RobotLocomotion/drake/pull/15534
[_#15538]: https://github.com/RobotLocomotion/drake/pull/15538
[_#15539]: https://github.com/RobotLocomotion/drake/pull/15539
[_#15540]: https://github.com/RobotLocomotion/drake/pull/15540
[_#15543]: https://github.com/RobotLocomotion/drake/pull/15543
[_#15544]: https://github.com/RobotLocomotion/drake/pull/15544
[_#15547]: https://github.com/RobotLocomotion/drake/pull/15547
[_#15548]: https://github.com/RobotLocomotion/drake/pull/15548
[_#15551]: https://github.com/RobotLocomotion/drake/pull/15551
[_#15552]: https://github.com/RobotLocomotion/drake/pull/15552
[_#15553]: https://github.com/RobotLocomotion/drake/pull/15553
[_#15556]: https://github.com/RobotLocomotion/drake/pull/15556
[_#15563]: https://github.com/RobotLocomotion/drake/pull/15563
[_#15568]: https://github.com/RobotLocomotion/drake/pull/15568
[_#15580]: https://github.com/RobotLocomotion/drake/pull/15580
[_#15581]: https://github.com/RobotLocomotion/drake/pull/15581
[_#15585]: https://github.com/RobotLocomotion/drake/pull/15585
[_#15586]: https://github.com/RobotLocomotion/drake/pull/15586
[_#15591]: https://github.com/RobotLocomotion/drake/pull/15591
[_#15595]: https://github.com/RobotLocomotion/drake/pull/15595
<!-- <end issue links> -->

<!--
  Current oldest_commit 37832588e9e65a84d6eea121159d469309c32f2e (exclusive).
  Current newest_commit 92be0bd4a6c50cdd0edb1963323ccbd178c0f608 (inclusive).
-->
