---
title: Drake v1.13.0
date: 2023-02-15
released: 2023-02-15
---

# Announcements

* Drake on macOS now uses Python 3.11 ([#18262][_#18262]).
  * Please upvote or reply in [#18791][_#18791] if you have suggestions
    for Homebrew Python version transitions on macOS.
* The new RenderEngineGltfClient allows connecting to third-party
  renderers, e.g., for higher-quality rendering ([#18480][_#18480],
  [#18387][_#18387]).
* The SceneGraphCollisionChecker offers a convenient wrapper for collision
  queries  ([#18629][_#18629]).
* MultibodyPlant parsing continues to improve ([#18692][_#18692],
  [#18625][_#18625], [#18728][_#18728], [#18351][_#18351], [#18735][_#18735]).
* Python YAML parsing is much improved ([#18566][_#18566], [#18572][_#18572],
  [#18604][_#18604], [#18606][_#18606]).

# Breaking changes since v1.12.0

* Introduce name mangling for Python template classes ([#18587][_#18587]).
  * For template instantiations, we now use Unicode mangling instead of square
    brackets for the underlying class name, and similarly for commas and periods
    within the template param. Python class names are not allowed to use
    brackets; doing so causes headaches for tools like Mypy.
  * This is breaking change in the sense that the underlying ``cls.__name__``
    will change, which might affect certain kinds of regression tests or
    pickling.
* Remove SortedPair's mutable structured bindings ([#18767][_#18767]).
  * Mutation allows the user to violate the sorting invariant.
* Rename pydrake's symbolic ``FormulaKind.True`` and ``FormulaKind.False``
  ([#18589][_#18589]).
  * The new names are ``FormulaKind.True_`` and ``FormulaKind.False_``.
  * The unadorned ``True`` and ``False`` are reserved words in Python.

## Other important changes

* URDF parsing now respects the ``<mimic/>`` element ([#18728][_#18728]).
  * This will change the MultibodyPlant behavior for models that declared the
    element.
* The manipulation_station example provides an applied_spatial_force_input_port
  ([#18268][_#18268]).
  * Generalized forces due to these externally applied forces are now included
    in the "iiwa_torque_external" output port.
  * This is relevant if a user decides to apply non-zero spatial forces and
    "iiwa_torque_external" is being used to only consider contact).

Refer to our [Drake Stability Guidelines](/stable.html) for our policy
on API changes.

# Changes since v1.12.0

## Dynamical Systems

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

New features

* Add System::Clone ([#18687][_#18687])

Fixes

* Enhance Diagram scalar conversion to allow preserving subtypes even across multiple chained conversions ([#18717][_#18717])

## Mathematical Program

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

New features

* ScsSolver adds quadratic cost directly ([#18605][_#18605])
* Adding time-varying constraints to TOPPRA ([#18738][_#18738])

Fixes

* Avoid auto-diff for linear IPOPT constraints ([#18603][_#18603])
* Adjust symbolic::Expression for compatibility with newer Eigen (pre-3.5) ([#18710][_#18710])

## Multibody Dynamics and Geometry

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

New features - Multibody

* Add SAP ball constraint ([#18470][_#18470])
* Add more shapes to SpatialInertia factories ([#18483][_#18483])
* Add tetrahedron to SpatialInertia and UnitInertia ([#18618][_#18618])
* Function to shift a body's center of mass and preserve its central unit inertia ([#18582][_#18582]) 
* Allow opt out of adjacent body collision filters ([#18736][_#18736])
* Differential inverse kinematics (Diff IK) has moved into the ``multibody/inverse_kinematics`` package ([#18715][_#18715])
- Constraint relaxing IK has moved into the ``multibody/inverse_kinematics`` package ([#18664][_#18664])

New features - Geometry

* Add SceneGraph::Clone ([#18717][_#18717])
* SceneGraph supports AutoDiff-to-double and Expression-to-double scalar conversions ([#18717][_#18717])

New features - Rendering

* Add RenderEngineGltfClient ([#18480][_#18480], [#18387][_#18387])
* RenderEngine can also consume non-uchar-channel textures ([#18410][_#18410])
* Add array-based getters and setters to Rgba ([#18571][_#18571])

New features - Parsing

* Add Parser::AddModelsFromUrl function ([#18692][_#18692])
* Add Parser constructors for model name prefixing ([#18625][_#18625])
* UDRF: Add support for URDF mimic element ([#18728][_#18728])
* Mujoco: Add initial collision filter support ([#18351][_#18351])

Fixes

* Contact results are consistent for either choice of the contact solver ([#18647][_#18647])
* Meshcat checks whether browser supports gamepads ([#18720][_#18720])
* Fix URDF planar joint parsing ([#18735][_#18735])
* Warn when unsupported geometries are parsed from SDFormat ([#18594][_#18594])

## Planning

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

New features

* Add CollisionChecker base class ([#18558][_#18558])
* Add SceneGraphCollisionChecker ([#18629][_#18629])
* Add RobotDiagram::Clone ([#18717][_#18717])
* The ``planning/trajectory_optimization`` package has been renamed to ``planning/trajectory_optimization`` ([#18697][_#18697])

Fixes

* Simplify RobotDiagramBuilder function names ([#18770][_#18770], [#18772][_#18772])
* Optimize CollisionChecker welded body checks  ([#18718][_#18718])
* Add CollisionChecker logging of OpenMP enablement ([#18709][_#18709])
* Fix malformed include statements ([#18628][_#18628])

## Tutorials and examples

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

* Add tutorial on authoring leaf systems ([#18769][_#18769])
* The hardware_sim Python example shows how to use yaml parsing ([#18566][_#18566])
* The manipulation_station example exports an applied_spatial_force_input_port ([#18268][_#18268])

## Miscellaneous features and fixes

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

* Avoid Meldis reloading when the scene hasn't changed ([#18626][_#18626])
* Add installed shortcuts for meldis and model_visualizer ([#18764][_#18764])
* Fix erroneous Meldis warnings ([#18671][_#18671])
* Fix a bug in DiscreteLyapunovEquation ([#18600][_#18600])
* Fix a bug in QuaternionToHopfCoordinate ([#18747][_#18747])
* RobotPlanInterpolator has moved to the ``manipulation/util`` package ([#18664][_#18664])

## pydrake bindings

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

New features

* Introduce name mangling for template classes ([#18587][_#18587])
* Add pybind11 support to yaml_load_typed ([#18572][_#18572])
* Add YAML parsing for variant/union ([#18604][_#18604])
* Add YAML parsing for schema.Transform ([#18606][_#18606])
* Allow Simulator monitor to return None ([#18696][_#18696])

New bindings

* Add more bindings for CollisionChecker ([#18670][_#18670])
* Add more bindings for DiagramBuilder ([#18636][_#18636])
* Add more bindings for DistributionVector ([#18567][_#18567])
* Add more bindings for RobotDiagram ([#18650][_#18650])
* Add more bindings for Rotation and Transform ([#18581][_#18581])
* Add more bindings for SceneGraph.RemoveRole ([#18645][_#18645])
* Add more bindings for Simulator ([#18612][_#18612])

Fixes

* Fix incompatibilities with Mypy ([#18674][_#18674])
* Ensure ``Value[object].SetFrom()`` copies the value ([#18655][_#18655])
* Fix AddContactMaterial parameter ordering ([#18591][_#18591])
* Fix MathematicalProgramResult.num_suboptimal_solution ([#18607][_#18607])
* Fix RollPitchYaw repr for missing template annotation ([#18588][_#18588])
* Add pydrake.planning to pydrake.all ([#18670][_#18670], [#18675][_#18675])

## Build system

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

* Update macOS to Python 3.11 ([#18262][_#18262])
* Automatically fix GCC 12 installation mistakes on Jammy ([#18669][_#18669])
* Improve compatibility with Ubuntu derivatives ([#18680][_#18680])
* Avoid Mypy timeouts ([#18644][_#18644])

## Build dependencies

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

* Fail fast on too-old Bazel 3.x ([#18637][_#18637])
* Build gflags from source, instead of using the host version  ([#18586][_#18586])
* Patch conex for missing include statement ([#18695][_#18695])
* Patch fcl for missing include statement ([#18694][_#18694])
* Switch ccd to be an internal-use-only build ([#18611][_#18611], ([#18678][_#18678])
* Switch fcl to be an internal-use-only build ([#18611][_#18611], ([#18678][_#18678])
* Switch osqp to be an internal-use-only rebuild ([#18690][_#18690])
* Switch qdldl to be an internal-use-only rebuild ([#18690][_#18690])
* Switch scs to be an internal-use-only rebuild ([#18690][_#18690])
* Switch stduuid to an internal-use-only, namespace-vendored build ([#18610][_#18610])
* Switch suitesparse to be an internal-use-only rebuild with hidden visibility ([#18690][_#18690])
* Downgrade usockets to v0.8.1 ([#18755][_#18755])
* Downgrade usockets to v20.14.0 ([#18755][_#18755])
* Upgrade abseil_cpp_internal to latest commit ([#18753][_#18753])
* Upgrade bazel to 6.0.0 ([#18545][_#18545])
* Upgrade bazel_skylib to latest release 1.4.0 ([#18753][_#18753])
* Upgrade buildifier to latest release 6.0.1 ([#18763][_#18763])
* Upgrade common_robotics_utilities to latest commit ([#18709][_#18709])
* Upgrade dm_control_internal to latest commit ([#18753][_#18753])
* Upgrade gtest to latest release v1.13.0 ([#18633][_#18633])
* Upgrade msgpack_internal to latest release cpp-5.0.0 ([#18753][_#18753])
* Upgrade mypy_extensions_internal to latest release 1.0.0 ([#18753][_#18753])
* Upgrade mypy_internal to latest release v1.0.0 ([#18753][_#18753])
* Upgrade petsc to latest release v3.18.4 ([#18753][_#18753])
* Upgrade rules_python to latest release 0.17.3 ([#18753][_#18753])
* Upgrade stable_baselines3_internal to latest release v1.7.0 ([#18753][_#18753])
* Upgrade stduuid_internal to latest commit v1.2.3 ([#18652][_#18652])
* Upgrade tinyobjloader to latest commit ([#18753][_#18753], [#18785][_#18785])
* Upgrade voxelized_geometry_tools to latest commit ([#18709][_#18709])
* Remove unused libyaml and libdl2 dependencies ([#18734][_#18734])
* Drop unused suitesparse from install_prereqs ([#18690][_#18690])

## Newly-deprecated APIs

* drake::manipulation::planner (moved elsewhere) ([#18664][_#18664], [#18715][_#18715])
* drake::planning::RobotDiagramBuilder::BuildDiagram ([#18770][_#18770])
* drake::planning::RobotDiagramBuilder::FinalizePlant ([#18772][_#18772]) 
* drake::planning::RobotDiagramBuilder::IsPlantFinalized ([#18772][_#18772]) 
* drake::planning::RobotDiagramBuilder::mutable_builder ([#18772][_#18772]) 
* drake::planning::RobotDiagramBuilder::mutable_parser ([#18772][_#18772]) 
* drake::planning::RobotDiagramBuilder::mutable_plant ([#18772][_#18772]) 
* drake::planning::RobotDiagramBuilder::mutable_scene_graph ([#18772][_#18772]) 
* drake::systems::trajectory_optimization (moved elsewhere) ([#18697][_#18697])
* pydrake.examples.acrobot as a sub-module ([#18685][_#18685])
* pydrake.examples.compass_gait as a sub-module ([#18685][_#18685])
* pydrake.examples.manipulation_station as a sub-module ([#18685][_#18685])
* pydrake.manipulation.planner (moved elsewhere) ([#18664][_#18664], [#18715][_#18715])
* pydrake.solvers.augmented_lagrangian as a sub-module ([#18683][_#18683])
* pydrake.solvers.branch_and_bound as a sub-module ([#18683][_#18683])
* pydrake.solvers.clp as a sub-module ([#18683][_#18683])
* pydrake.solvers.csdp as a sub-module ([#18683][_#18683])
* pydrake.solvers.dreal as a sub-module ([#18683][_#18683])
* pydrake.solvers.gurobi as a sub-module ([#18683][_#18683])
* pydrake.solvers.ipopt as a sub-module ([#18683][_#18683])
* pydrake.solvers.mathematicalprogram as a sub-module ([#18683][_#18683])
* pydrake.solvers.mixed_integer_optimization_util as a sub-module ([#18683][_#18683])
* pydrake.solvers.mixed_integer_rotation_constraint as a sub-module ([#18683][_#18683])
* pydrake.solvers.mosek as a sub-module ([#18683][_#18683])
* pydrake.solvers.nlopt as a sub-module ([#18683][_#18683])
* pydrake.solvers.osqp as a sub-module ([#18683][_#18683])
* pydrake.solvers.scs as a sub-module ([#18683][_#18683])
* pydrake.solvers.sdpa_free_format as a sub-module ([#18683][_#18683])
* pydrake.solvers.snopt as a sub-module ([#18683][_#18683])
* pydrake.systems.trajectory_optimization (moved elsewhere) ([#18697][_#18697])
* The @ccd bazel external ([#18611][_#18611])
* The @fcl bazel external ([#18611][_#18611])
* The @osqp bazel external ([#18690][_#18690])
* The @qdldl bazel external ([#18690][_#18690])
* The @scs bazel external ([#18690][_#18690])
* The @stduuid bazel external ([#18610][_#18610])
* The @suitesparse bazel external ([#18690][_#18690])
* On macOS, the `--with-maintainer-only` install_prereqs flag ([#18665][_#18665])

## Removal of deprecated items

* drake::multibody::parsing::PopulateFromEnvironment("ROS_PACKAGE_PATH") ([#18689][_#18689], [#18226][_#18226])
* drake::solvers::DrealSolver ([#18686][_#18686], [#18156][_#18156])
* drake::solvers::IbexSolver ([#18686][_#18686], [#18156][_#18156])
* drake::solvers::SolverType::kDReal ([#18686][_#18686], [#18156][_#18156])
* drake::solvers::SolverType::kIbex ([#18686][_#18686], [#18156][_#18156])
* drake::symbolic::SubstituteStereographicProjection symbolic::Exprssion overload  ([#18716][_#18716], [#18179][_#18179])
* drake::systems::System::GetPeriodicEvents() (no parameters) ([#18716][_#18716], [#18094][_#18094])
* drake::systems::sensors::ApplyCameraConfig() (without lcm_buses) ([#18689][_#18689], [#18069][_#18069])
* pydrake.multibody.tree.ScrewJoint constructor with default parameters ([#18716][_#18716], [#18122][_#18122])
* pydrake.solvers.SolverType.kDRael ([#18686][_#18686], [#18156][_#18156])
* pydrake.solvers.SolverType.kIbex ([#18686][_#18686], [#18156][_#18156])
* pydrake.solvers.dreal.DrealSolver ([#18686][_#18686], [#18156][_#18156])
* pydrake.solvers.ibex.IbexSolver ([#18686][_#18686], [#18156][_#18156])
* pydrake.visualization.meldis ([#18689][_#18689], [#18160][_#18160])
* pydrake.visualization.plotting ([#18689][_#18689], [#18160][_#18160])

# Notes

This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v1.13.0) named
``drake-20230215-{focal|jammy|mac|mac-arm64}.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> -->
[_#18069]: https://github.com/RobotLocomotion/drake/pull/18069
[_#18094]: https://github.com/RobotLocomotion/drake/pull/18094
[_#18122]: https://github.com/RobotLocomotion/drake/pull/18122
[_#18156]: https://github.com/RobotLocomotion/drake/pull/18156
[_#18160]: https://github.com/RobotLocomotion/drake/pull/18160
[_#18179]: https://github.com/RobotLocomotion/drake/pull/18179
[_#18226]: https://github.com/RobotLocomotion/drake/pull/18226
[_#18262]: https://github.com/RobotLocomotion/drake/pull/18262
[_#18268]: https://github.com/RobotLocomotion/drake/pull/18268
[_#18351]: https://github.com/RobotLocomotion/drake/pull/18351
[_#18387]: https://github.com/RobotLocomotion/drake/pull/18387
[_#18410]: https://github.com/RobotLocomotion/drake/pull/18410
[_#18470]: https://github.com/RobotLocomotion/drake/pull/18470
[_#18480]: https://github.com/RobotLocomotion/drake/pull/18480
[_#18483]: https://github.com/RobotLocomotion/drake/pull/18483
[_#18545]: https://github.com/RobotLocomotion/drake/pull/18545
[_#18558]: https://github.com/RobotLocomotion/drake/pull/18558
[_#18566]: https://github.com/RobotLocomotion/drake/pull/18566
[_#18567]: https://github.com/RobotLocomotion/drake/pull/18567
[_#18571]: https://github.com/RobotLocomotion/drake/pull/18571
[_#18572]: https://github.com/RobotLocomotion/drake/pull/18572
[_#18581]: https://github.com/RobotLocomotion/drake/pull/18581
[_#18582]: https://github.com/RobotLocomotion/drake/pull/18582
[_#18586]: https://github.com/RobotLocomotion/drake/pull/18586
[_#18587]: https://github.com/RobotLocomotion/drake/pull/18587
[_#18588]: https://github.com/RobotLocomotion/drake/pull/18588
[_#18589]: https://github.com/RobotLocomotion/drake/pull/18589
[_#18591]: https://github.com/RobotLocomotion/drake/pull/18591
[_#18594]: https://github.com/RobotLocomotion/drake/pull/18594
[_#18600]: https://github.com/RobotLocomotion/drake/pull/18600
[_#18603]: https://github.com/RobotLocomotion/drake/pull/18603
[_#18604]: https://github.com/RobotLocomotion/drake/pull/18604
[_#18605]: https://github.com/RobotLocomotion/drake/pull/18605
[_#18606]: https://github.com/RobotLocomotion/drake/pull/18606
[_#18607]: https://github.com/RobotLocomotion/drake/pull/18607
[_#18610]: https://github.com/RobotLocomotion/drake/pull/18610
[_#18611]: https://github.com/RobotLocomotion/drake/pull/18611
[_#18612]: https://github.com/RobotLocomotion/drake/pull/18612
[_#18618]: https://github.com/RobotLocomotion/drake/pull/18618
[_#18625]: https://github.com/RobotLocomotion/drake/pull/18625
[_#18626]: https://github.com/RobotLocomotion/drake/pull/18626
[_#18628]: https://github.com/RobotLocomotion/drake/pull/18628
[_#18629]: https://github.com/RobotLocomotion/drake/pull/18629
[_#18633]: https://github.com/RobotLocomotion/drake/pull/18633
[_#18636]: https://github.com/RobotLocomotion/drake/pull/18636
[_#18637]: https://github.com/RobotLocomotion/drake/pull/18637
[_#18644]: https://github.com/RobotLocomotion/drake/pull/18644
[_#18645]: https://github.com/RobotLocomotion/drake/pull/18645
[_#18647]: https://github.com/RobotLocomotion/drake/pull/18647
[_#18650]: https://github.com/RobotLocomotion/drake/pull/18650
[_#18652]: https://github.com/RobotLocomotion/drake/pull/18652
[_#18655]: https://github.com/RobotLocomotion/drake/pull/18655
[_#18664]: https://github.com/RobotLocomotion/drake/pull/18664
[_#18665]: https://github.com/RobotLocomotion/drake/pull/18665
[_#18669]: https://github.com/RobotLocomotion/drake/pull/18669
[_#18670]: https://github.com/RobotLocomotion/drake/pull/18670
[_#18671]: https://github.com/RobotLocomotion/drake/pull/18671
[_#18674]: https://github.com/RobotLocomotion/drake/pull/18674
[_#18675]: https://github.com/RobotLocomotion/drake/pull/18675
[_#18678]: https://github.com/RobotLocomotion/drake/pull/18678
[_#18680]: https://github.com/RobotLocomotion/drake/pull/18680
[_#18683]: https://github.com/RobotLocomotion/drake/pull/18683
[_#18685]: https://github.com/RobotLocomotion/drake/pull/18685
[_#18686]: https://github.com/RobotLocomotion/drake/pull/18686
[_#18687]: https://github.com/RobotLocomotion/drake/pull/18687
[_#18689]: https://github.com/RobotLocomotion/drake/pull/18689
[_#18690]: https://github.com/RobotLocomotion/drake/pull/18690
[_#18692]: https://github.com/RobotLocomotion/drake/pull/18692
[_#18694]: https://github.com/RobotLocomotion/drake/pull/18694
[_#18695]: https://github.com/RobotLocomotion/drake/pull/18695
[_#18696]: https://github.com/RobotLocomotion/drake/pull/18696
[_#18697]: https://github.com/RobotLocomotion/drake/pull/18697
[_#18709]: https://github.com/RobotLocomotion/drake/pull/18709
[_#18710]: https://github.com/RobotLocomotion/drake/pull/18710
[_#18715]: https://github.com/RobotLocomotion/drake/pull/18715
[_#18716]: https://github.com/RobotLocomotion/drake/pull/18716
[_#18717]: https://github.com/RobotLocomotion/drake/pull/18717
[_#18718]: https://github.com/RobotLocomotion/drake/pull/18718
[_#18720]: https://github.com/RobotLocomotion/drake/pull/18720
[_#18728]: https://github.com/RobotLocomotion/drake/pull/18728
[_#18734]: https://github.com/RobotLocomotion/drake/pull/18734
[_#18735]: https://github.com/RobotLocomotion/drake/pull/18735
[_#18736]: https://github.com/RobotLocomotion/drake/pull/18736
[_#18738]: https://github.com/RobotLocomotion/drake/pull/18738
[_#18747]: https://github.com/RobotLocomotion/drake/pull/18747
[_#18753]: https://github.com/RobotLocomotion/drake/pull/18753
[_#18755]: https://github.com/RobotLocomotion/drake/pull/18755
[_#18763]: https://github.com/RobotLocomotion/drake/pull/18763
[_#18764]: https://github.com/RobotLocomotion/drake/pull/18764
[_#18767]: https://github.com/RobotLocomotion/drake/pull/18767
[_#18769]: https://github.com/RobotLocomotion/drake/pull/18769
[_#18770]: https://github.com/RobotLocomotion/drake/pull/18770
[_#18772]: https://github.com/RobotLocomotion/drake/pull/18772
[_#18785]: https://github.com/RobotLocomotion/drake/pull/18785
[_#18791]: https://github.com/RobotLocomotion/drake/pull/18791
<!-- <end issue links> -->

<!--
  Current oldest_commit 643caa184dc645cf47775ed75d7a2052ab723dc7 (exclusive).
  Current newest_commit f062738a338ab26776d24c14e6d5d79b2280a79c (inclusive).
-->
