---
title: Drake v0.34.0
date: 2021-09-15
released: 2021-09-15
---

# Announcements

* The geometry module offers new support for using Meshcat directly from C++ programs.
* The geometry module offer new features for collision filtering.
* The multibody module supports joint locking and unlocking for discrete-mode systems.
* The solvers::Solve and ChooseBestSolver functions now use different heuristics to choose the most appropriate solver. If a different solver ends up being selected for certain programs, the solution results may change. Be aware of possible disturbances due to this change.
* On or after 2022-01-01, any unrecognized SDFormat elements that are parsed by Drake will cause an error. At present, they produce warnings. This change can't easily be tracked by formal deprecation methods, so is noted here for visibility.

# Breaking changes since v0.33.0

* MultibodyPlant SetPositions(.), SetVelocities(.) etc. take an Eigen::Ref rather than a VectorX ([#15561][_#15561])
  * This change is unlikely to impact most users. Some methods which used to accept a `VectorX<Variable>` must now have their arguments explicitly cast to `VectorX<Expression>` (e.g. with `x.cast<symbolic::Expression>()`). See ([#15560][_#15560]) for some discussion.
* The build system removes all uses of pycps ([#15756][_#15756]), with these breaking changes:
  * Remove macro cmake_config() from install.bzl
  * Remove py_library @drake//tools/install:cpsutils
  * Remove @pycps external

# Changes since v0.33.0

## Dynamical Systems

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

New features

* Make simulator config functions autodiffable ([#15584][_#15584])
* Perform MonteCarloSimulation in parallel ([#15537][_#15537])
* Promote RandomSource to be templated on scalar ([#15708][_#15708])

Fixes

* Switch to per-context dummy CacheEntryValue for thread safety ([#15564][_#15564])
* Fix deprecated AddIfSupported scalar conversion helper ([#15657][_#15657])

## Mathematical Program

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

New features

* Add support for more constraints and costs to IbexSolver ([#15607][_#15607])
* For Constraint::CheckSatisfied on symbolic variables, return equality formulae when possible ([#15612][_#15612])
* Support IBEX Solver options ([#15612][_#15612])
* Choose best solver based on program type ([#15541][_#15541])
* Add Edge::AddPhiConstraint() ([#15572][_#15572])
* Add HPolyhedron::CartesianProduct ([#15608][_#15608])

Fixes

* Fix program type for NLP with linear complementary constraints ([#15625][_#15625])

## Multibody Dynamics and Geometry

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

New features

* Add joint locking ([#15644][_#15644])
* Establish Meshcat in C++ ([#15618][_#15618]) ([#15626][_#15626]) ([#15647][_#15647]) ([#15670][_#15670]) ([#15679][_#15679]) ([#15683][_#15683]) ([#15728][_#15728]) ([#15727][_#15727]) ([#15768][_#15768])
* Add collision filter groups SDFormat support ([#15477][_#15477])
* Introduce "transient" collision filter modifications ([#15492][_#15492])
* Add more compatibility checks between Systems and their State ([#15646][_#15646])
* Add and register top-level Drake package.xml ([#15468][_#15468])
* Move DrakeVisualizerParams into dedicated header ([#15599][_#15599])
* Allow assigning geometries to "world" in URDF ([#15763][_#15763])
* New hydroelastic contact model in progress ([#15610][_#15610]) ([#15642][_#15642]) ([#15656][_#15656]) ([#15706][_#15706]) ([#15739][_#15739]) ([#15741][_#15741]) ([#15762][_#15762])


Fixes

* Replace an expensive dynamic_cast with a cheap static_cast ([#15489][_#15489])
* Change MultibodyPlant SetPositions(.), SetVelocities(.) etc. to take an Eigen::Ref rather than a VectorX ([#15561][_#15561])
* Fix BodyNode::GetJacobianFromArray() to return an empty map when nv=0 ([#15686][_#15686])
* Fix TAMSI threading hazard ([#15690][_#15690])

## Tutorials and examples

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

## Miscellaneous features and fixes

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

* Introduce LinearSolve to differentiate Ax=b using implicit function theorem ([#15682][_#15682]) ([#15752][_#15752])
* Add SubscribeAllChannels and get_lcm_url ([#15575][_#15575]) ([#15653][_#15653])
* Fix warnings generated by SDFormat parsing of ycb objects ([#15648][_#15648])
* Allow caller to clean up directory from temp_directory() ([#15698][_#15698])

## pydrake bindings

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

New features

* Enable pickling for Inertia types, CoulombFriction, and most Shapes ([#15715][_#15715])

Fixes

* Support rich comparison operators over various scalar types ([#15659][_#15659])
* Fix bug in meshcat contact force visualization ([#15677][_#15677])

Newly bound

* pydrake.common.value.Value[float] ([#15641][_#15641])
* pydrake.geometry.AddContactMaterial ([#15689][_#15689])
* pydrake.geometry.AddRigidHydroelasticProperties ([#15689][_#15689])
* pydrake.geometry.AddSoftHydroelasticProperties ([#15689][_#15689])
* pydrake.geometry.AddSoftHydroelasticPropertiesForHalfSpace ([#15689][_#15689])
* pydrake.geometry.ConvertVolumeToSurfaceMesh ([#15762][_#15762])
* pydrake.geometry.SurfaceFace ([#15707][_#15707])
* pydrake.geometry.SurfaceFaceIndex ([#15707][_#15707])
* pydrake.geometry.SurfaceVertexIndex ([#15707][_#15707])
* pydrake.geometry.VolumeElement ([#15707][_#15707])
* pydrake.geometry.VolumeElementIndex ([#15707][_#15707])
* pydrake.geometry.VolumeMesh ([#15707][_#15707])
* pydrake.geometry.VolumeVertex ([#15707][_#15707])
* pydrake.geometry.VolumeVertexIndex ([#15707][_#15707])
* pydrake.multibody.plant.MultibodyPlant.CalcJacobianCenterOfMassTranslationalVelocity (overload with model_instances) ([#15691][_#15691])
* pydrake.multibody.tree.SpatialInertia.\_\_copy\_\_ ([#15676][_#15676])
* pydrake.multibody.tree.SpatialInertia.\_\_deepcopy\_\_ ([#15676][_#15676])
* pydrake.solvers.mixed_integer_optimization_util.IntervalBinning ([#15678][_#15678]) ([#15687][_#15687])
* pydrake.solvers.mixed_integer_rotation_constraint.MixedIntegerRotationConstraintGenerator ([#15678][_#15678]) ([#15687][_#15687])

## Build system

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

* Link ignition-math statically ([#15600][_#15600])
* Remove all uses of pycps ([#15756][_#15756])

## Build dependencies

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

* Add msgpack C++ support files ([#15618][_#15618]) ([#15694][_#15694])
* Add uwebsockets release v19.4.0 ([#15719][_#15719])
* Upgrade bazel to latest release 4.2.1 ([#15711][_#15711])
* Upgrade common_robotics_utilities to latest commit ([#15716][_#15716])
* Upgrade googlebenchmark to latest release 1.5.6 ([#15718][_#15718])
* Upgrade IBEX to latest commit ([#15671][_#15671])
* Upgrade intel_realsense_ros to latest release 2.3.1 ([#15723][_#15723])
* Upgrade lcm to latest commit ([#15717][_#15717])
* Upgrade meshcat to latest commit ([#15684][_#15684])
* Upgrade meshcat-python to latest commit ([#15684][_#15684])
* Upgrade ros_xacro to latest release 1.13.12 ([#15724][_#15724])
* Upgrade rules_pkg to latest release 0.5.1 ([#15725][_#15725])
* Upgrade tinyobjloader to latest commit v2.0.0-rc9 ([#15714][_#15714])
* Upgrade voxelized_geometry_tools to latest commit ([#15716][_#15716])

## Newly-deprecated APIs

* The @jsoncpp external ([#15639][_#15639])
* common/eigen_stl_types.h ([#15639][_#15639])
* drake::math::DiscardGradient specializations for Eigen::Transform ([#15697][_#15697])
* drake::math::DiscardZeroGradient: specializations for Eigen::Transform ([#15697][_#15697])
* drake::math::gradientMatrixToAutoDiff ([#15658][_#15658])
* drake::math::resizeDerivativesToMatchScalar ([#15658][_#15658])
* drake::multibody::Parser: allowing unrecognized elements in SDFormat files ([#15672][_#15672]) ([#15680][_#15680])
* drake::systems::LogOutput ([#15594][_#15594])
* drake::systems::SignalLog ([#15594][_#15594])
* drake::systems::SignalLogger ([#15594][_#15594])
* DRAKE_ASSERT on a bare pointer ([#15597][_#15597])
* libdrake_ignition_math.so ([#15600][_#15600])
* manipulation/schunk_wsg/schunk_buttons.py helper script ([#15639][_#15639])

## Removal of deprecated items

* drake::solvers::AddL2NormCost ([#15701][_#15701])
* drake::solvers::MakeL2NormCost ([#15701][_#15701])
* drake::systems::EventCollection::add_discrete_update_event ([#15701][_#15701])
* drake::systems::EventCollection::add_event ([#15701][_#15701])
* drake::systems::EventCollection::add_publish_event ([#15701][_#15701])
* drake::systems::EventCollection::add_unrestricted_update_event ([#15701][_#15701])
* drake::systems::RandomSource, non-templated version ([#15708][_#15708])
* drake::systems::sensors::InvalidDepth ([#15701][_#15701])
* drake::systems::sensors::Label ([#15701][_#15701])
* drake::systems::System::ValidateChildOfContext ([#15701][_#15701])

# Notes

This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v0.34.0) named
``drake-20210915-{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> -->
[_#15468]: https://github.com/RobotLocomotion/drake/pull/15468
[_#15477]: https://github.com/RobotLocomotion/drake/pull/15477
[_#15489]: https://github.com/RobotLocomotion/drake/pull/15489
[_#15492]: https://github.com/RobotLocomotion/drake/pull/15492
[_#15537]: https://github.com/RobotLocomotion/drake/pull/15537
[_#15541]: https://github.com/RobotLocomotion/drake/pull/15541
[_#15560]: https://github.com/RobotLocomotion/drake/pull/15560
[_#15561]: https://github.com/RobotLocomotion/drake/pull/15561
[_#15564]: https://github.com/RobotLocomotion/drake/pull/15564
[_#15572]: https://github.com/RobotLocomotion/drake/pull/15572
[_#15575]: https://github.com/RobotLocomotion/drake/pull/15575
[_#15584]: https://github.com/RobotLocomotion/drake/pull/15584
[_#15594]: https://github.com/RobotLocomotion/drake/pull/15594
[_#15597]: https://github.com/RobotLocomotion/drake/pull/15597
[_#15599]: https://github.com/RobotLocomotion/drake/pull/15599
[_#15600]: https://github.com/RobotLocomotion/drake/pull/15600
[_#15607]: https://github.com/RobotLocomotion/drake/pull/15607
[_#15608]: https://github.com/RobotLocomotion/drake/pull/15608
[_#15610]: https://github.com/RobotLocomotion/drake/pull/15610
[_#15612]: https://github.com/RobotLocomotion/drake/pull/15612
[_#15618]: https://github.com/RobotLocomotion/drake/pull/15618
[_#15625]: https://github.com/RobotLocomotion/drake/pull/15625
[_#15626]: https://github.com/RobotLocomotion/drake/pull/15626
[_#15639]: https://github.com/RobotLocomotion/drake/pull/15639
[_#15641]: https://github.com/RobotLocomotion/drake/pull/15641
[_#15642]: https://github.com/RobotLocomotion/drake/pull/15642
[_#15644]: https://github.com/RobotLocomotion/drake/pull/15644
[_#15646]: https://github.com/RobotLocomotion/drake/pull/15646
[_#15647]: https://github.com/RobotLocomotion/drake/pull/15647
[_#15648]: https://github.com/RobotLocomotion/drake/pull/15648
[_#15653]: https://github.com/RobotLocomotion/drake/pull/15653
[_#15656]: https://github.com/RobotLocomotion/drake/pull/15656
[_#15657]: https://github.com/RobotLocomotion/drake/pull/15657
[_#15658]: https://github.com/RobotLocomotion/drake/pull/15658
[_#15659]: https://github.com/RobotLocomotion/drake/pull/15659
[_#15670]: https://github.com/RobotLocomotion/drake/pull/15670
[_#15671]: https://github.com/RobotLocomotion/drake/pull/15671
[_#15672]: https://github.com/RobotLocomotion/drake/pull/15672
[_#15676]: https://github.com/RobotLocomotion/drake/pull/15676
[_#15677]: https://github.com/RobotLocomotion/drake/pull/15677
[_#15678]: https://github.com/RobotLocomotion/drake/pull/15678
[_#15679]: https://github.com/RobotLocomotion/drake/pull/15679
[_#15680]: https://github.com/RobotLocomotion/drake/pull/15680
[_#15682]: https://github.com/RobotLocomotion/drake/pull/15682
[_#15683]: https://github.com/RobotLocomotion/drake/pull/15683
[_#15684]: https://github.com/RobotLocomotion/drake/pull/15684
[_#15686]: https://github.com/RobotLocomotion/drake/pull/15686
[_#15687]: https://github.com/RobotLocomotion/drake/pull/15687
[_#15689]: https://github.com/RobotLocomotion/drake/pull/15689
[_#15690]: https://github.com/RobotLocomotion/drake/pull/15690
[_#15691]: https://github.com/RobotLocomotion/drake/pull/15691
[_#15694]: https://github.com/RobotLocomotion/drake/pull/15694
[_#15697]: https://github.com/RobotLocomotion/drake/pull/15697
[_#15698]: https://github.com/RobotLocomotion/drake/pull/15698
[_#15701]: https://github.com/RobotLocomotion/drake/pull/15701
[_#15706]: https://github.com/RobotLocomotion/drake/pull/15706
[_#15707]: https://github.com/RobotLocomotion/drake/pull/15707
[_#15708]: https://github.com/RobotLocomotion/drake/pull/15708
[_#15711]: https://github.com/RobotLocomotion/drake/pull/15711
[_#15714]: https://github.com/RobotLocomotion/drake/pull/15714
[_#15715]: https://github.com/RobotLocomotion/drake/pull/15715
[_#15716]: https://github.com/RobotLocomotion/drake/pull/15716
[_#15717]: https://github.com/RobotLocomotion/drake/pull/15717
[_#15718]: https://github.com/RobotLocomotion/drake/pull/15718
[_#15719]: https://github.com/RobotLocomotion/drake/pull/15719
[_#15723]: https://github.com/RobotLocomotion/drake/pull/15723
[_#15724]: https://github.com/RobotLocomotion/drake/pull/15724
[_#15725]: https://github.com/RobotLocomotion/drake/pull/15725
[_#15727]: https://github.com/RobotLocomotion/drake/pull/15727
[_#15728]: https://github.com/RobotLocomotion/drake/pull/15728
[_#15739]: https://github.com/RobotLocomotion/drake/pull/15739
[_#15741]: https://github.com/RobotLocomotion/drake/pull/15741
[_#15752]: https://github.com/RobotLocomotion/drake/pull/15752
[_#15756]: https://github.com/RobotLocomotion/drake/pull/15756
[_#15762]: https://github.com/RobotLocomotion/drake/pull/15762
[_#15763]: https://github.com/RobotLocomotion/drake/pull/15763
[_#15768]: https://github.com/RobotLocomotion/drake/pull/15768
<!-- <end issue links> -->

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