---
title: Drake v0.29.0
date: 2021-04-18
released: 2021-04-18
---

# Announcements

* None

# Breaking changes since v0.28.0

* Drake no longer uses LCM messages from
  [RobotLocomotion/lcmtypes](https://github.com/RobotLocomotion/lcmtypes)
  nor
  [openhumanoids/bot_core_lcmtypes](https://github.com/openhumanoids/bot_core_lcmtypes)
  ([#14884][_#14884], [#14885][_#14885], [#14908][_#14908]).

  * Drake's compiled messages from those repositories are deprecated and will
    no longer be incorporated into our releases after 2021-08-01. 
  * We have provided compatibility aliases for some of these message at
    ``#include <drake/systems/sensors/robotlocomotion_compat.h>`` but
    the aliasing (especially in pydrake) is incomplete, so this may be a
    breaking change, depending on how your calling code is written.

* The build rules for Drake's website and documentation were erroneously set
  to public visibility.  As part of our ongoing website improvements, we are
  reworking those rules, and have marked all of them as private.  Downstream
  software should not depend on Drake's documentation (the files under
  ``drake/doc``).

# Changes since v0.28.0

## Dynamical Systems

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

New features

* Add limited support for integration of symbolic polynomials ([#14807][_#14807])
* DirectTranscription now supports continuous-time MultibodyPlant ([#14840][_#14840], [#14854][_#14854], [#14859][_#14859])

Fixes

* Improve diagram building performance when computing subsystem feedthrough maps ([#14788][_#14788])
* Fix infinite loop in discrete algebraic Riccati equation ([#14865][_#14865])

## Mathematical Program

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

New features

* Add [CLP solver](https://github.com/coin-or/Clp#clp) wrapper ([#14776][_#14776], [#14820][_#14820])
* Expose all parameters of OSQP solver ([#14886][_#14886])

Fixes

* Fix constant term in SNOPT optimal cost ([#14809][_#14809])

## Multibody Dynamics

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

New features

* Add limited support for lumped parameter decomposition ([#14863][_#14863])
* Add ability to filter and convert GeometrySet into unordered_set\<GeometryId\> ([#14871][_#14871])
* New hydroelastic contact model in progress ([#14897][_#14897], [#14903][_#14903])

Fixes

* Rename confusing parameters of WeldJoint and WeldFrames ([#14805][_#14805])  
* GeometryPairContactWrenchEvaluatorBinding is now public, not internal ([#14835][_#14835])

## Tutorials and examples

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

* Add a tutorial on debugging tips for MathematicalProgram ([#14815][_#14815])

## Miscellaneous features and fixes

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

None

## pydrake bindings

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

New features

* Add //bindings/pydrake:test_utilities_py target in support of drake_bazel_external workflows ([#14812][_#14812])

Fixes

* None

Newly bound

* pydrake.geometry.GeometrySet constructor ([#14898][_#14898])
* pydrake.geometry.GeometrySet.Add ([#14898][_#14898])
* pydrake.math.wrap_to overloads for AutoDiffXd and Expression ([#14845][_#14845])
* pydrake.systems.primitives.LogOutput overloads for AutoDiffXd and Expression ([#14823][_#14823])

## Build system

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

* Improve compatibility with Eigen 3.4.0 pre-release for not_equal_strict on symbolic expressions ([#14868][_#14868])
* Offer ability to download and extract a wheel from PyPI ([#14906][_#14906])
* On Ubuntu 18.04, fix search for Python when using CMake 3.10 ([#14798][_#14798])
* On macOS, fix ibex@2.7.4 formula to point at robotlocomotion/director tap ([#14888][_#14888])

## Build dependencies

* Add ignition_utils 1.0.0 for use by sdformat 11.0.0 ([#14853][_#14853])
* Add opencl in anticipation of future use ([#14843][_#14843])
* Add python-tk@3.9 on macOS to track homebrew split ([#14832][_#14832])
* Add python3-semantic-version (on Ubuntu) or semantic-version (on macOS) ([#14784][_#14784], [#14907][_#14907])
* Upgrade ghc_filesystem to latest release 1.5.4 ([#14851][_#14851])
* Upgrade ignition_math to latest release 6.8.0 ([#14848][_#14848])
* Upgrade meshcat to latest commit ([#14890][_#14890])
* Upgrade pycodestyle to latest release 2.7.0 ([#14850][_#14850])
* Upgrade rules_pkg to latest release 0.4.0 ([#14867][_#14867])
* Upgrade tinyobjloader to latest commit ([#14866][_#14866])
* Upgrade voxelized_geometry_tools to latest commit ([#14843][_#14843])

## Newly-deprecated APIs

* drake::geometry::SignedDistancePair::is_nhat_BA_W_unique ([#14875][_#14875])
* drake::geometry::SignedDistanceToPoint::is_grad_w_unique ([#14875][_#14875])
* drake::geometry::SignedDistanceToPointWithGradient ([#14793][_#14793])
* pydrake.multibody.plant.MultibodyPlant.WeldFrames kwargs names A and B ([#14805][_#14805])
* pydrake.multibody.tree.WeldJoint constructor kwarg names parent_frame_P and child_frame_C ([#14805][_#14805])
* pydrake.solvers.mathematicalprogram.MathematicalProgram.NewNonnegativePolynomial kwarg name "grammian" ([#14790][_#14790])
* The @bot2_core_lcmtypes external ([#14884][_#14884])
* The @robotlocomotion_lcmtypes external ([#14884][_#14884])
* The @semantic_version external ([#14784][_#14784])
* The @sphinx external ([#14804][_#14804])

## Removal of deprecated items

* The ability for MeshcatVisualizer to use a pose_bundle input port ([#14292][_#14292])
* drake::examples::manipulation_station::RegisterRgbdSensor with DepthCameraProperties ([#14855][_#14855])
* drake::geometry::ConnectDrakeVisualizer ([#14855][_#14855])
* drake::geometry::DispatchLoadMessage ([#14855][_#14855])
* drake::geometry::GeometryState::GetSourceName ([#14855][_#14855])
* drake::geometry::GeometryState::RenderColorImage with CameraProperties ([#14855][_#14855])
* drake::geometry::GeometryState::RenderDepthImage with DepthCameraProperties ([#14855][_#14855])
* drake::geometry::GeometryState::RenderLabelImage with CameraProperties ([#14855][_#14855])
* drake::geometry::GeometryState::X_PF ([#14855][_#14855])
* drake::geometry::GeometryState::X_WF ([#14855][_#14855])
* drake::geometry::GeometryState::X_WG ([#14855][_#14855])
* drake::geometry::QueryObject::RenderColorImage with CameraProperties ([#14855][_#14855])
* drake::geometry::QueryObject::RenderDepthImage with DepthCameraProperties ([#14855][_#14855])
* drake::geometry::QueryObject::RenderLabelImage with CameraProperties ([#14855][_#14855])
* drake::geometry::QueryObject::X_PF ([#14855][_#14855])
* drake::geometry::QueryObject::X_WF ([#14855][_#14855])
* drake::geometry::QueryObject::X_WG ([#14855][_#14855])
* drake::geometry::SceneGraph(data_as_state=true) ([#14855][_#14855])
* drake::geometry::SceneGraphInspector::GetSourceName ([#14855][_#14855])
* drake::geometry::SurfaceMesh::kDim ([#14855][_#14855])
* drake::geometry::VolumeMesh::kDim ([#14855][_#14855])
* drake::geometry::render::CameraProperties ([#14855][_#14855])
* drake::geometry::render::DepthCameraProperties ([#14855][_#14855])
* drake::geometry::render::RenderEngine::RenderColorImage with CameraProperties ([#14855][_#14855])
* drake::geometry::render::RenderEngine::RenderDepthImage with DepthCameraProperties ([#14855][_#14855])
* drake::geometry::render::RenderEngine::RenderLabelImage with CameraProperties ([#14855][_#14855])
* drake::systems::ContextBase::FixInputPort with AbstractValue unique_ptr ([#14846][_#14846])
* drake::systems::LeafSystem::DeclareAbstractState with AbstractValue unique_ptr ([#14846][_#14846])
* drake::systems::framework::Diagram::get_input_port_locator ([#14846][_#14846])
* drake::systems::sensors::RgbdSensor::CameraPoses ([#14855][_#14855])
* drake::systems::sensors::RgbdSensor::RgbdSensor constructor with CameraPoses or CameraProperties ([#14855][_#14855])
* lcmtypes/lcmt_body_acceleration.lcm ([#14842][_#14842])
* lcmtypes/lcmt_body_motion_data.lcm ([#14842][_#14842])
* lcmtypes/lcmt_body_wrench_data.lcm ([#14842][_#14842])
* lcmtypes/lcmt_constrained_values.lcm ([#14842][_#14842])
* lcmtypes/lcmt_contact_information.lcm ([#14842][_#14842])
* lcmtypes/lcmt_desired_body_motion.lcm ([#14842][_#14842])
* lcmtypes/lcmt_desired_centroidal_momentum_dot.lcm ([#14842][_#14842])
* lcmtypes/lcmt_desired_dof_motions.lcm ([#14842][_#14842])
* lcmtypes/lcmt_foot_flag.lcm ([#14842][_#14842])
* lcmtypes/lcmt_inverse_dynamics_debug_info.lcm ([#14842][_#14842])
* lcmtypes/lcmt_joint_pd_override.lcm ([#14842][_#14842])
* lcmtypes/lcmt_manipulator_plan_move_end_effector.lcm ([#14842][_#14842])
* lcmtypes/lcmt_piecewise_polynomial.lcm ([#14842][_#14842])
* lcmtypes/lcmt_plan_eval_debug_info.lcm ([#14842][_#14842])
* lcmtypes/lcmt_polynomial.lcm ([#14842][_#14842])
* lcmtypes/lcmt_polynomial_matrix.lcm ([#14842][_#14842])
* lcmtypes/lcmt_qp_controller_input.lcm ([#14842][_#14842])
* lcmtypes/lcmt_qp_input.lcm ([#14842][_#14842])
* lcmtypes/lcmt_quadrotor_input_t.lcm ([#14842][_#14842])
* lcmtypes/lcmt_quadrotor_output_t.lcm ([#14842][_#14842])
* lcmtypes/lcmt_resolved_contact.lcm ([#14842][_#14842])
* lcmtypes/lcmt_scope_data.lcm ([#14842][_#14842])
* lcmtypes/lcmt_simulation_command.lcm ([#14842][_#14842])
* lcmtypes/lcmt_support_data.lcm ([#14842][_#14842])
* lcmtypes/lcmt_viewer2_comms.lcm ([#14842][_#14842])
* lcmtypes/lcmt_whole_body_data.lcm ([#14842][_#14842])
* lcmtypes/lcmt_zmp_com_observer_state.lcm ([#14842][_#14842])
* lcmtypes/lcmt_zmp_data.lcm ([#14842][_#14842])

# Notes

This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v0.29.0) named
``drake-20210418-{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> -->
[_#14292]: https://github.com/RobotLocomotion/drake/pull/14292
[_#14776]: https://github.com/RobotLocomotion/drake/pull/14776
[_#14784]: https://github.com/RobotLocomotion/drake/pull/14784
[_#14788]: https://github.com/RobotLocomotion/drake/pull/14788
[_#14790]: https://github.com/RobotLocomotion/drake/pull/14790
[_#14793]: https://github.com/RobotLocomotion/drake/pull/14793
[_#14798]: https://github.com/RobotLocomotion/drake/pull/14798
[_#14804]: https://github.com/RobotLocomotion/drake/pull/14804
[_#14805]: https://github.com/RobotLocomotion/drake/pull/14805
[_#14807]: https://github.com/RobotLocomotion/drake/pull/14807
[_#14809]: https://github.com/RobotLocomotion/drake/pull/14809
[_#14812]: https://github.com/RobotLocomotion/drake/pull/14812
[_#14815]: https://github.com/RobotLocomotion/drake/pull/14815
[_#14820]: https://github.com/RobotLocomotion/drake/pull/14820
[_#14823]: https://github.com/RobotLocomotion/drake/pull/14823
[_#14832]: https://github.com/RobotLocomotion/drake/pull/14832
[_#14835]: https://github.com/RobotLocomotion/drake/pull/14835
[_#14840]: https://github.com/RobotLocomotion/drake/pull/14840
[_#14842]: https://github.com/RobotLocomotion/drake/pull/14842
[_#14843]: https://github.com/RobotLocomotion/drake/pull/14843
[_#14845]: https://github.com/RobotLocomotion/drake/pull/14845
[_#14846]: https://github.com/RobotLocomotion/drake/pull/14846
[_#14848]: https://github.com/RobotLocomotion/drake/pull/14848
[_#14850]: https://github.com/RobotLocomotion/drake/pull/14850
[_#14851]: https://github.com/RobotLocomotion/drake/pull/14851
[_#14853]: https://github.com/RobotLocomotion/drake/pull/14853
[_#14854]: https://github.com/RobotLocomotion/drake/pull/14854
[_#14855]: https://github.com/RobotLocomotion/drake/pull/14855
[_#14859]: https://github.com/RobotLocomotion/drake/pull/14859
[_#14863]: https://github.com/RobotLocomotion/drake/pull/14863
[_#14865]: https://github.com/RobotLocomotion/drake/pull/14865
[_#14866]: https://github.com/RobotLocomotion/drake/pull/14866
[_#14867]: https://github.com/RobotLocomotion/drake/pull/14867
[_#14868]: https://github.com/RobotLocomotion/drake/pull/14868
[_#14871]: https://github.com/RobotLocomotion/drake/pull/14871
[_#14875]: https://github.com/RobotLocomotion/drake/pull/14875
[_#14884]: https://github.com/RobotLocomotion/drake/pull/14884
[_#14885]: https://github.com/RobotLocomotion/drake/pull/14885
[_#14886]: https://github.com/RobotLocomotion/drake/pull/14886
[_#14888]: https://github.com/RobotLocomotion/drake/pull/14888
[_#14890]: https://github.com/RobotLocomotion/drake/pull/14890
[_#14897]: https://github.com/RobotLocomotion/drake/pull/14897
[_#14898]: https://github.com/RobotLocomotion/drake/pull/14898
[_#14903]: https://github.com/RobotLocomotion/drake/pull/14903
[_#14906]: https://github.com/RobotLocomotion/drake/pull/14906
[_#14907]: https://github.com/RobotLocomotion/drake/pull/14907
[_#14908]: https://github.com/RobotLocomotion/drake/pull/14908
<!-- <end issue links> -->

<!--
  Current oldest_commit 306baa8e0fd2a600c7d07c99f85ca1b940877603 (exclusive).
  Current newest_commit a939b72dfd547f7f2cfb145f400408e4e1423e46 (inclusive).
-->
