---
title: Drake v0.35.0
date: 2021-10-21
released: 2021-10-21
---

# Announcements

* An implementation of [Time Optimal Path Parameterization based on
Reachability Analysis](https://ieeexplore.ieee.org/document/8338417) (TOPPRA)
has been added to Drake C++ and Python ([#15731][_#15731], [#15799][_#15799])
* SDFormat 1.9 supported ([#15852][_#15852])
    * Provides `//pose[@rotation_format]` attribute to choose between Euler RPY
    or Quaternions for the rotation component. Angles can now be expressed in
    degrees using the `//pose[@degrees = true]` attribute when using Euler RPY.
    * Add a new attribute `//include[@merge]` that allows including nested
    models without introducing new scopes (the contents of the included model
    are moved without any modification to the parent model). (*Note*: This
    currently does not support URDFs parsed via SDFormat composition.)
* This release is the first to include PyPI wheels.
    * Refer to [Installation via Pip](/pip.html) for instructions and known limitations.

# Breaking changes since v0.34.0

* DRAKE_DEFAULT_COPY_AND_MOVE_AND_ASSIGN now detects mis-uses ([#15884][_#15884])
* The lcmt_panda_command message has changed ([#15784][_#15784])
* ScsSolverDetails member fields have changed ([#15886][_#15886])
* The publish period for visualizers (meshcat, drake_visualizer) has changed ([#15850][_#15850]).
* Remove solvers/fast_qp.h and solvers/gurobi_qp.h ([#15817][_#15817])
* Bushing and joint declarations must use frames that have been declared in the same URDF/SDFormat file ([#15941][_#15941])
    * This requires the frame name to be part of the currently parsed model instance, and it allows a model which declares a bushing to be loaded multiple times.
    * Previously, parsing one file could inadvertently reference a frame added by a previous file. Any workflow that relied on that implicit cross-file integration will now break.

# Changes since v0.34.0

## Dynamical Systems

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

New features

* None

Fixes

* SystemBase::DeclareCacheEntry is now protected, per announced deprecation ([#15862][_#15862])

## Mathematical Program

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

New features

* Add CartesianProduct inheriting from ConvexSet ([#15571][_#15571])

Fixes

* None

## Multibody Dynamics and Geometry

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

New features

* Add implementation of Time Optimal Path Parameterization based on Reachability Analysis (TOPPRA) ([#15731][_#15731], [#15799][_#15799])
* Add publish_period option to LCM contact results ([#15848][_#15848])
* Add MultibodyPlantConfig for YAML-based configuration ([#15826][_#15826])
* Add MultibodyPlant::GetFrameIndices ([#15787][_#15787])
* Add heap-free variants of MultibodyPlant::GetPositions(ModelInstanceIndex) and related functions ([#15900][_#15900])
* New hydroelastic contact model in progress ([#15903][_#15903], [#15912][_#15912], [#15913][_#15913], [#15932][_#15932], [#15933][_#15933], [#15772][_#15772], [#15773][_#15773], [#15911][_#15911], [#15942][_#15942])
* Various Meshcat C++ improvements
    * Support for texture maps for obj files ([#15788][_#15788])
    * Add SetAnimation ([#15876][_#15876])
    * Add visualization for Point Clouds ([#15851][_#15851])
    * Add MeshcatCone isa Shape ([#15936][_#15936])
* Allow parsing of deprecation information from ROS package manifests ([#15896][_#15896])

Fixes

* Fix URDF unconditional warnings to be reported only once ([#15783][_#15783])
* Fix segfault for Meshcat C++ on macOS when exiting a binary while a browser is still connected ([#15823][_#15823])
* Set default visualization publish period to 32 Hz or 64 Hz by default ([#15850][_#15850])
* Replace LDLT in MultibodyPlant with math::LinearSolver for better performance with AutoDiffScalar ([#15874][_#15874])

## Tutorials and examples

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

* Clean up Drake-owned URDF files ([#15783][_#15783])
* Use a smaller time step in Atlas example to avoid discrete solver errors ([#15814][_#15814])
* Fix camera + robot positioning for `rendering_multibody_plant` notebook ([#15841][_#15841])
* Ensure a SceneGraph is connected for contact visualization ([#15849][_#15849])
* Ensure AcrobotPlant::get_mutable_parameters are actually mutable (removes spurious const) ([#15812][_#15812])

## Miscellaneous features and fixes

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

* Fix DoMakeDerivative for derivatives of order higher than basis degree ([#15939][_#15939])
* Allow `copyable_unique_ptr` to be usable on forward-declared types ([#15906][_#15906])
* Ensure show_model only reads the top-level package_path ([#15801][_#15801])
* Add LinearSolver class ([#15818][_#15818], [#15790][_#15790])
* Clean up PiecewisePose and add python bindings ([#15786][_#15786])
* Provide more useful error messages for piecewise polynomial spline generation ([#15795][_#15795])
* Initialize AutoDiffXd::value field to NaN ([#15792][_#15792])
* Add PiecewisePose::MakeLinear ([#15803][_#15803])
* Provide Google Style Guide-compliant spellings for autodiff utility functions; deprecate old spellings ([#15699][_#15699], [#15875][_#15875])
* Update lcmt_panda_command to be more concise about command mode and which fields are required vs. ignored ([#15784][_#15784])
* Ensure SortedPair is consistent with the wrapper type's operators ([#15907][_#15907])
* Ensure BsplineTrajectory::EvalDerivative works ([#15895][_#15895])
* Ensure DRAKE_DEFAULT_COPY_AND_MOVE_AND_ASSIGN detects mis-uses ([#15884][_#15884])

## pydrake bindings

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

New features

* Expose `pydrake.common.deprecation.deprecated_callable` as decorator ([#15877][_#15877])

Fixes

* None

Newly bound

* pydrake.autodiffutils.ExtractGradient ([#15699][_#15699])
* pydrake.autodiffutils.ExtractValue ([#15699][_#15699])
* pydrake.autodiffutils.InitializeAutoDiff ([#15699][_#15699])
* pydrake.autodiffutils.InitializeAutoDiffTuple ([#15699][_#15699]) <!-- Not a binding per se, but still present in bindings themselves. -->
* pydrake.math.RigidTransform.IsExactlyIdentity ([#15785][_#15785])
* pydrake.math.RigidTransform.IsIdentityToEpsilon ([#15785][_#15785])
* pydrake.math.RigidTransform.IsNearlyEqualTo ([#15785][_#15785])
* pydrake.solvers.ibex.IbexSolver ([#15793][_#15793])
* pydrake.solvers.mathematicalprogram.SolverType.kIbex ([#15793][_#15793])
* pydrake.systems.primitives.Integrator.set_integral_value ([#15794][_#15794])
* pydrake.trajectories.PiecewisePose ([#15786][_#15786])

## Build system

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

* Offer a `-y` option for Ubuntu `install_prereqs` ([#15819][_#15819])
* Fix ODR violations in get_new_id bindings ([#15857][_#15857])
* Ensure Drake compiles with XCode 13 on macOS (Apple clang 13) ([#15838][_#15838], [#15839][_#15839])

## Build dependencies

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

* Upgrade bazel_skylib to latest release 1.1.1 ([#15885][_#15885])
* Upgrade buildifier to latest release 4.2.0 ([#15880][_#15880])
* Upgrade fcl to latest commit ([#15885][_#15885])
* Upgrade googlebenchmark to latest release v1.6.0 ([#15885][_#15885])
* Upgrade ignition_math to latest release 6.9.1 ([#15885][_#15885])
* Upgrade libsdformat to latest release 12.0.0 ([#15852][_#15852])
* Upgrade meshcat and meshcat_python to latest commit ([#15898][_#15898])
* Upgrade ros_xacro to latest release 1.13.14 ([#15885][_#15885])
* Upgrade rules_python to latest release 0.4.0 ([#15870][_#15870])
* Upgrade usockets to latest release v0.8.1 ([#15885][_#15885])
* Upgrade uwebsockets to latest release v20.5.0 ([#15885][_#15885])
* Upgrade scs to latest release 3.0.0 ([#15886][_#15886])

## Newly-deprecated APIs

* drake::geometry::FrameIndex ([#15778][_#15778])
* drake::geometry::MeshFieldLinear::name ([#15847][_#15847])
* drake::manipulation::planner::DoDifferentialInverseKinematics overloads using Eigen::Isometry3 ([#15909][_#15909])
* drake::math::LinearSolve ([#15790][_#15790])
* drake::math::autoDiffToGradientMatrix ([#15699][_#15699])
* drake::math::autoDiffToValueMatrix ([#15699][_#15699])
* drake::math::initializeAutoDiffGivenGradientMatrix ([#15699][_#15699]
* drake::math::initializeAutoDiffTuple ([#15699][_#15699])

## Removal of deprecated items

* All overloads for the following functions which do *not* pass a name
([#15834][_#15834])
    * drake::systems::LeafSystem::DeclareAbstractInputPort
    * drake::systems::LeafSystem::DeclareAbstractOutputPort
    * drake::systems::LeafSystem::DeclareVectorInputPort
    * drake::systems::LeafSystem::DeclareVectorOutputPort
    * drake::systems::System::DeclareInputPort
* drake/math/orthonormal_basis.h ([#15834][_#15834])
* drake::systems::SystemScalarConverter::Add (the ConverterFunction overload)
* drake::systems::SystemScalarConverter::AddIfSupported ([#15834][_#15834])
* drake::systems::SystemScalarConverter::ConverterFunction ([#15863][_#15863])
* drake::systems::SystemBase::DeclareCacheEntry is now protected ([#15862][_#15862])
* drake::systems::SystemBase::DeclareCacheEntry (the non-ValueProducer overload) ([#15834][_#15834]) ([#15863][_#15863])
* pydrake.math.ComputeBasisFromAxis ([#15834][_#15834])

# Notes

This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v0.35.0) named
``drake-20211021-{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> -->
[_#15571]: https://github.com/RobotLocomotion/drake/pull/15571
[_#15699]: https://github.com/RobotLocomotion/drake/pull/15699
[_#15731]: https://github.com/RobotLocomotion/drake/pull/15731
[_#15772]: https://github.com/RobotLocomotion/drake/pull/15772
[_#15773]: https://github.com/RobotLocomotion/drake/pull/15773
[_#15778]: https://github.com/RobotLocomotion/drake/pull/15778
[_#15783]: https://github.com/RobotLocomotion/drake/pull/15783
[_#15784]: https://github.com/RobotLocomotion/drake/pull/15784
[_#15785]: https://github.com/RobotLocomotion/drake/pull/15785
[_#15786]: https://github.com/RobotLocomotion/drake/pull/15786
[_#15787]: https://github.com/RobotLocomotion/drake/pull/15787
[_#15788]: https://github.com/RobotLocomotion/drake/pull/15788
[_#15790]: https://github.com/RobotLocomotion/drake/pull/15790
[_#15792]: https://github.com/RobotLocomotion/drake/pull/15792
[_#15793]: https://github.com/RobotLocomotion/drake/pull/15793
[_#15794]: https://github.com/RobotLocomotion/drake/pull/15794
[_#15795]: https://github.com/RobotLocomotion/drake/pull/15795
[_#15799]: https://github.com/RobotLocomotion/drake/pull/15799
[_#15801]: https://github.com/RobotLocomotion/drake/pull/15801
[_#15803]: https://github.com/RobotLocomotion/drake/pull/15803
[_#15812]: https://github.com/RobotLocomotion/drake/pull/15812
[_#15814]: https://github.com/RobotLocomotion/drake/pull/15814
[_#15817]: https://github.com/RobotLocomotion/drake/pull/15817
[_#15818]: https://github.com/RobotLocomotion/drake/pull/15818
[_#15819]: https://github.com/RobotLocomotion/drake/pull/15819
[_#15823]: https://github.com/RobotLocomotion/drake/pull/15823
[_#15826]: https://github.com/RobotLocomotion/drake/pull/15826
[_#15834]: https://github.com/RobotLocomotion/drake/pull/15834
[_#15838]: https://github.com/RobotLocomotion/drake/pull/15838
[_#15839]: https://github.com/RobotLocomotion/drake/pull/15839
[_#15841]: https://github.com/RobotLocomotion/drake/pull/15841
[_#15847]: https://github.com/RobotLocomotion/drake/pull/15847
[_#15848]: https://github.com/RobotLocomotion/drake/pull/15848
[_#15849]: https://github.com/RobotLocomotion/drake/pull/15849
[_#15850]: https://github.com/RobotLocomotion/drake/pull/15850
[_#15851]: https://github.com/RobotLocomotion/drake/pull/15851
[_#15852]: https://github.com/RobotLocomotion/drake/pull/15852
[_#15857]: https://github.com/RobotLocomotion/drake/pull/15857
[_#15862]: https://github.com/RobotLocomotion/drake/pull/15862
[_#15863]: https://github.com/RobotLocomotion/drake/pull/15863
[_#15870]: https://github.com/RobotLocomotion/drake/pull/15870
[_#15874]: https://github.com/RobotLocomotion/drake/pull/15874
[_#15875]: https://github.com/RobotLocomotion/drake/pull/15875
[_#15876]: https://github.com/RobotLocomotion/drake/pull/15876
[_#15877]: https://github.com/RobotLocomotion/drake/pull/15877
[_#15880]: https://github.com/RobotLocomotion/drake/pull/15880
[_#15884]: https://github.com/RobotLocomotion/drake/pull/15884
[_#15885]: https://github.com/RobotLocomotion/drake/pull/15885
[_#15886]: https://github.com/RobotLocomotion/drake/pull/15886
[_#15895]: https://github.com/RobotLocomotion/drake/pull/15895
[_#15896]: https://github.com/RobotLocomotion/drake/pull/15896
[_#15898]: https://github.com/RobotLocomotion/drake/pull/15898
[_#15900]: https://github.com/RobotLocomotion/drake/pull/15900
[_#15903]: https://github.com/RobotLocomotion/drake/pull/15903
[_#15906]: https://github.com/RobotLocomotion/drake/pull/15906
[_#15907]: https://github.com/RobotLocomotion/drake/pull/15907
[_#15909]: https://github.com/RobotLocomotion/drake/pull/15909
[_#15911]: https://github.com/RobotLocomotion/drake/pull/15911
[_#15912]: https://github.com/RobotLocomotion/drake/pull/15912
[_#15913]: https://github.com/RobotLocomotion/drake/pull/15913
[_#15932]: https://github.com/RobotLocomotion/drake/pull/15932
[_#15933]: https://github.com/RobotLocomotion/drake/pull/15933
[_#15936]: https://github.com/RobotLocomotion/drake/pull/15936
[_#15939]: https://github.com/RobotLocomotion/drake/pull/15939
[_#15941]: https://github.com/RobotLocomotion/drake/pull/15941
[_#15942]: https://github.com/RobotLocomotion/drake/pull/15942
<!-- <end issue links> -->

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