---
title: Drake v1.26.0
date: 2024-02-14
released: 2024-02-14
---

# Announcements

* macOS wheels on PyPI now support both Python 3.11 and Python 3.12 ([#20616][_#20616]).
* This is the last release that will support Ubuntu 20.04 ("Focal").
  * End of life timelines are documented as part of the
    [Supported Configurations](https://drake.mit.edu/installation.html#supported-configurations).

# Breaking changes since v1.25.0

* The `FindSeparationCertificateOptions.num_threads` property is now deprecated in Python, and removed in C++. Use `parallelism` instead ([#20776][_#20776]).

* `RenderEngine` no longer inherits `ShapeReifier` ([#20873][_#20873]).
  * This might be a breaking change for code that implemented its own custom `RenderEngine` and was using `this` as the `ShapeReifier` receiver. To fix the break, inherit from `ShapeReifier` directly yourself. See [#20873][_#20873] for suggestions.


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

# Changes since v1.25.0

## Dynamical Systems

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


New features

* None

Fixes

* Update MonteCarlo to use Parallelism API ([#20785][_#20785])
* Fix broken Graphviz on systems with <,>,& characters ([#20915][_#20915])

## Mathematical Program

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


New features

* IrisOptions: add more user control over termination ([#20645][_#20645])

Fixes

* Adjust "cspace free" to use the Parallelism helper ([#20776][_#20776])
* Remove ShapeReifier as a public base of ConvexSet ([#20832][_#20832])
* Remove explicit constructor on struct IrisOptions ([#20845][_#20845])
* Adjust ClarabelSolver default tolerances ([#20844][_#20844])
* Implement `mixing_steps` for uniform sampling in HPolyhedra ([#20817][_#20817])
* When removing GCS vertex, also fully remove adjacent edges ([#20875][_#20875])
* Fix `QHull` error when transforming between `HPolyhedron` and `VPolytope` with ambient dimension 1 ([#20893][_#20893])
* Normalize rows of the matrix [A,b] in `HPolyhedron::MaximumVolumeInscribedEllipsoid` to prevent numerical issues ([#20849][_#20849])

## Multibody Dynamics and Geometry

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

New features

* Add support for non-world reference frames to differential inverse kinematics ([#20735][_#20735])
* Add optional role parameter to `GetAllGeometryIds` ([#20834][_#20834])
* Add `Shape::type_name`, `Shape::to_string`, and `fmt` formatter ([#20870][_#20870])
* Add `MeshcatParams` option for `initial_properties` ([#20920][_#20920])
* `RenderEngineGltfClient` can use non-embedded glTFs (they become embedded on the fly) ([#20933][_#20933])

Fixes

* Meshcat serves the environment map over http ([#20793][_#20793])
* Meshcat unbundles glTFs to improve loading times for large files ([#20877][_#20877])
* Meshcat returns 404 (not 200) on failures ([#20790][_#20790])
* Meshcat StaticHtml no longer has browser console error messages ([#20791][_#20791])
* Meshcat recording framerate defaults to 64 fps ([#20926][_#20926])
* Defer surface meshing for deformables when inactive ([#20822][_#20822])
* Fast initialize compliant-hydroelastic nonconvex meshes and deformables ([#20798][_#20798])
* Fix bug in glTF depth and label representations in RenderEngineVtk ([#20854][_#20854])
* Allow add_directives of directives including collision filters ([#20757][_#20757])
* Fix bugs in VTK's glTF parser logic ([#20818][_#20818])


## Planning

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

New features

* Partition convex sets to satisfy convexity radius property ([#20655][_#20655])
* Support wraparound edges for unbounded revolute joints when adding edges between subgraphs ([#20700][_#20700])

Fixes

* Fix index query bug in `PairwiseIntersectionsContinuousJoints` ([#20857][_#20857])

## Tutorials and examples

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

* None

## Miscellaneous features and fixes

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

* Add `Sha256` utility class ([#20779][_#20779])
* Fix for `SchunkWsgTrajectoryGenerator` failing on delta=0 ([#20828][_#20828])
* Add `EigenMapView` to aid interop with C++ containers ([#20906][_#20906])
* Adjust iiwa 7 velocity and effort limits ([#20917][_#20917])
* Add iiwa 7 acceleration limits ([#20921][_#20921])
* Fix depth colorization to use brighter for nearer ([#20940][_#20940])
* Add Meldis --meshcat--params option ([#20927][_#20927])


## pydrake bindings

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

New features

* `yaml_load_typed` uses `schema=type(defaults)` by default ([#20922][_#20922])
* `yaml_load_typed` supports `Union[List[T], ...]` ([#20919][_#20919])

Fixes

* Release the GIL during blocking `Meshcat` operations ([#20810][_#20810])
* Release the GIL during "Run" functions ([#20811][_#20811])
* Bind `Hyperrectangle::MaybeCalcAxisAlignedBoundingBox` ([#20804][_#20804])
* Bind `GetScopedFrameByNameMaybe` ([#20905][_#20905])
* Bind `ConvexSet::CalcVolumeViaSampling` ([#20843][_#20843])

## Build system

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

* Build macOS wheels for multiple Python versions ([#20616][_#20616])

## Build dependencies

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

* Enable ClarabelSolver during linux wheel builds ([#20802][_#20802])
* Remove macOS-specific logic for zlib ([#20829][_#20829])
* Upgrade abseil_cpp_internal to latest commit ([#20900][_#20900])
* Upgrade common_robotics_utilities to latest commit ([#20786][_#20786])
* Upgrade crate_universe to latest versions ([#20814][_#20814], [#20900][_#20900])
* Upgrade curl_internal to latest release curl-8_6_0 ([#20900][_#20900])
* Upgrade drake_models to latest commit ([#20858][_#20858])
* Upgrade eigen to latest release 3.4.0 for wheel builds ([#20802][_#20802])
* Upgrade ipopt_internal_fromsource to latest release releases/3.14.14 ([#20900][_#20900])
* Upgrade libpng_internal to latest release v1.6.42 ([#20900][_#20900])
* Upgrade meshcat to latest commit ([#20805][_#20805], [#20876][_#20876], [#20904][_#20904], [#20938][_#20938])
* Upgrade nanoflann_internal to latest release v1.5.4 ([#20900][_#20900])
* Upgrade ros_xacro_internal to latest release 1.14.17 ([#20900][_#20900])
* Upgrade rules_license to latest release 0.0.8 ([#20900][_#20900])
* Upgrade rules_python to latest release 0.29.0 ([#20902][_#20902])
* Upgrade rules_rust, rust_toolchain to latest verions ([#20901][_#20901])
* Upgrade suitesparse_internal to latest release v7.6.0 ([#20900][_#20900])
* Upgrade tinyobjloader_internal to latest commit ([#20900][_#20900])
* Upgrade vtk_internal to latest commit ([#20765][_#20765], [#20867][_#20867], [#20900][_#20900])


## Newly-deprecated APIs

* `drake::geometry::optimization::FindSeparationCertificateOptions::num_threads` in Python ([#20776][_#20776])
* `drake::geometry::render::RenderEngine::GetColorDFromLabel` ([#20860][_#20860])
* `drake::geometry::render::RenderEngine::GetColorIFromLabel` ([#20860][_#20860])
* `drake::geometry::render::RenderEngine::LabelFromColor` ([#20860][_#20860])
* `drake::geometry::SceneGraphInspector::Reify` ([#20872][_#20872])
* `drake::geometry::ShapeName` ([#20870][_#20870])
* `drake::geometry::ShapeToString` ([#20870][_#20870])
* `drake::systems::analysis::kNoConcurrency` ([#20785][_#20785])
* `drake::systems::analysis::kUseHardwareConcurrency` ([#20785][_#20785])
* `drake::systems::analysis::MonteCarloSimulation` overload that accepts the `num_parallel_executions` bare integer  ([#20785][_#20785])
* `drake::systems::sensors::Color` ([#20860][_#20860])
* `drake::systems::sensors::ColorD` ([#20860][_#20860])
* `drake::systems::sensors::ColorI` ([#20860][_#20860])
* `drake::systems::sensors::ColorPalette` ([#20860][_#20860])


## Removal of deprecated items

* `@expat` ([#20846][_#20846])
* `@libjpeg` ([#20846][_#20846])
* `@libpng` ([#20846][_#20846])
* `@libtiff` ([#20846][_#20846])
* `drake::multibody::InverseKinematics::AddMinimumDistanceConstraint` ([#20846][_#20846])
* `drake::multibody::MinimumDistanceConstraint` ([#20846][_#20846])
* `drake::multibody::MinimumDistancePenaltyFunction` ([#20846][_#20846])
* `drake::multibody::MultibodyPlant::GetMutablePositions` ([#20846][_#20846])
* `drake::multibody::MultibodyPlant::GetMutablePositionsAndVelocities` ([#20846][_#20846])
* `drake::multibody::MultibodyPlant::GetMutableVelocities` ([#20846][_#20846])
* `drake::multibody::RigidBody::floating_velocities_start` ([#20846][_#20846])
* `drake::solvers::MinimumValueConstraint` ([#20846][_#20846])
* `drake::systems::LeafSystem::DeclarePeriodicDiscreteUpdateNoHandler` ([#20846][_#20846])
* `drake::systems::LeafSystem::DeclarePeriodicPublishNoHandler` ([#20846][_#20846])
* `drake::systems::LeafSystem::DeclarePeriodicUnrestrictedUpdateNoHandler` ([#20846][_#20846])
* `drake::systems::LeafSystem::DoCalcDiscreteVariableUpdates` ([#20846][_#20846])
* `drake::systems::LeafSystem::DoCalcUnrestrictedUpdate` ([#20846][_#20846])
* `drake::systems::LeafSystem::DoPublish` ([#20846][_#20846])
* `drake::systems::VectorSystem::DeclarePeriodicDiscreteUpdateNoHandler` ([#20846][_#20846])
* `pydrake.multibody.inverse_kinematics.AddMinimumDistanceConstraint` ([#20846][_#20846])
* `pydrake.multibody.inverse_kinematics.MinimumDistanceConstraint` ([#20846][_#20846])
* `pydrake.multibody.plant.MultibodyPlant.GetMutablePositions` ([#20846][_#20846])
* `pydrake.multibody.plant.MultibodyPlant.GetMutablePositionsAndVelocities` ([#20846][_#20846])
* `pydrake.multibody.plant.MultibodyPlant.GetMutableVelocities` ([#20846][_#20846])
* `pydrake.multibody.tree.RigidBody.floating_velocities_start` ([#20846][_#20846])
* `pydrake.multibody.tree.RigidBody.JointActuator.set_actuation_vector` kwarg name `u_instance` ([#20846][_#20846])
* `pydrake.solvers.MinimumValueConstraint` ([#20846][_#20846])
* `pydrake.systems.framework.LeafSystem.DeclarePeriodicDiscreteUpdateNoHandler` ([#20846][_#20846])
* `pydrake.systems.framework.LeafSystem.DeclarePeriodicPublishNoHandler` ([#20846][_#20846])
* `pydrake.systems.framework.LeafSystem.DoCalcDiscreteVariableUpdates` ([#20846][_#20846])
* `pydrake.systems.framework.LeafSystem.DoPublish` ([#20846][_#20846])
   

# Notes


This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v1.26.0) named
``drake-1.26.0-{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> -->
[_#20616]: https://github.com/RobotLocomotion/drake/pull/20616
[_#20645]: https://github.com/RobotLocomotion/drake/pull/20645
[_#20655]: https://github.com/RobotLocomotion/drake/pull/20655
[_#20700]: https://github.com/RobotLocomotion/drake/pull/20700
[_#20735]: https://github.com/RobotLocomotion/drake/pull/20735
[_#20757]: https://github.com/RobotLocomotion/drake/pull/20757
[_#20765]: https://github.com/RobotLocomotion/drake/pull/20765
[_#20776]: https://github.com/RobotLocomotion/drake/pull/20776
[_#20779]: https://github.com/RobotLocomotion/drake/pull/20779
[_#20785]: https://github.com/RobotLocomotion/drake/pull/20785
[_#20786]: https://github.com/RobotLocomotion/drake/pull/20786
[_#20790]: https://github.com/RobotLocomotion/drake/pull/20790
[_#20791]: https://github.com/RobotLocomotion/drake/pull/20791
[_#20793]: https://github.com/RobotLocomotion/drake/pull/20793
[_#20798]: https://github.com/RobotLocomotion/drake/pull/20798
[_#20802]: https://github.com/RobotLocomotion/drake/pull/20802
[_#20804]: https://github.com/RobotLocomotion/drake/pull/20804
[_#20805]: https://github.com/RobotLocomotion/drake/pull/20805
[_#20810]: https://github.com/RobotLocomotion/drake/pull/20810
[_#20811]: https://github.com/RobotLocomotion/drake/pull/20811
[_#20814]: https://github.com/RobotLocomotion/drake/pull/20814
[_#20817]: https://github.com/RobotLocomotion/drake/pull/20817
[_#20818]: https://github.com/RobotLocomotion/drake/pull/20818
[_#20822]: https://github.com/RobotLocomotion/drake/pull/20822
[_#20828]: https://github.com/RobotLocomotion/drake/pull/20828
[_#20829]: https://github.com/RobotLocomotion/drake/pull/20829
[_#20832]: https://github.com/RobotLocomotion/drake/pull/20832
[_#20834]: https://github.com/RobotLocomotion/drake/pull/20834
[_#20843]: https://github.com/RobotLocomotion/drake/pull/20843
[_#20844]: https://github.com/RobotLocomotion/drake/pull/20844
[_#20845]: https://github.com/RobotLocomotion/drake/pull/20845
[_#20846]: https://github.com/RobotLocomotion/drake/pull/20846
[_#20849]: https://github.com/RobotLocomotion/drake/pull/20849
[_#20854]: https://github.com/RobotLocomotion/drake/pull/20854
[_#20857]: https://github.com/RobotLocomotion/drake/pull/20857
[_#20858]: https://github.com/RobotLocomotion/drake/pull/20858
[_#20860]: https://github.com/RobotLocomotion/drake/pull/20860
[_#20867]: https://github.com/RobotLocomotion/drake/pull/20867
[_#20870]: https://github.com/RobotLocomotion/drake/pull/20870
[_#20872]: https://github.com/RobotLocomotion/drake/pull/20872
[_#20873]: https://github.com/RobotLocomotion/drake/pull/20873
[_#20875]: https://github.com/RobotLocomotion/drake/pull/20875
[_#20876]: https://github.com/RobotLocomotion/drake/pull/20876
[_#20877]: https://github.com/RobotLocomotion/drake/pull/20877
[_#20893]: https://github.com/RobotLocomotion/drake/pull/20893
[_#20900]: https://github.com/RobotLocomotion/drake/pull/20900
[_#20901]: https://github.com/RobotLocomotion/drake/pull/20901
[_#20902]: https://github.com/RobotLocomotion/drake/pull/20902
[_#20904]: https://github.com/RobotLocomotion/drake/pull/20904
[_#20905]: https://github.com/RobotLocomotion/drake/pull/20905
[_#20906]: https://github.com/RobotLocomotion/drake/pull/20906
[_#20915]: https://github.com/RobotLocomotion/drake/pull/20915
[_#20917]: https://github.com/RobotLocomotion/drake/pull/20917
[_#20919]: https://github.com/RobotLocomotion/drake/pull/20919
[_#20920]: https://github.com/RobotLocomotion/drake/pull/20920
[_#20921]: https://github.com/RobotLocomotion/drake/pull/20921
[_#20922]: https://github.com/RobotLocomotion/drake/pull/20922
[_#20926]: https://github.com/RobotLocomotion/drake/pull/20926
[_#20927]: https://github.com/RobotLocomotion/drake/pull/20927
[_#20933]: https://github.com/RobotLocomotion/drake/pull/20933
[_#20938]: https://github.com/RobotLocomotion/drake/pull/20938
[_#20940]: https://github.com/RobotLocomotion/drake/pull/20940
<!-- <end issue links> -->

<!--
  Current oldest_commit 849d537302191f0be98875da359580d341836869 (exclusive).
  Current newest_commit ddb32f9dba9db9984b9292ad5227a8911a5950e7 (inclusive).
-->
