Drake v1.36.0

Back to Release Notes

Announcements

  • On macOS when building from source, Drake now requires Xcode 16 or newer.
  • For Bazel users, take note that Drake has begun porting to Bazel modules instead of repository rules. Please start studying the new technology and how it will impact you. After Drake has good support for modules, we plan to deprecate Drake’s repository rules for removal. For progress updates, follow #20731. To see our up-to-date best advice for how to depend on Drake from your own project, follow drake-external-examples.
  • For IpoptSolver on Ubuntu, we now support setting the Ipopt solver option "linear_solver" to "spral" (instead of the default of "mumps"). We encourage users to try out SPRAL and provide feedback. We intend to change the default to SPRAL in a future release (for both macOS and Ubuntu), and to eventually deprecate and remove support for MUMPS entirely.

Breaking changes since v1.35.0

  • In MathematicalProgram, the return value of AddPrincipalSubmatrixIsPsdConstraint for a matrix of symbolic::Expression has changed. It now returns Binding<LinearMatrixInequalityConstraint>. (#22234)

Refer to our Drake Stability Guidelines for our policy on API changes.

Changes since v1.35.0

Dynamical Systems

New features

  • None

Fixes

  • Speed up feedthrough calculation during diagram building (#21632)

Mathematical Program

New features

  • Return dual solution for PSD constraint in SCS and Clarabel (#22147)
  • Add PSD constraint for a scalar as a linear constraint in Mosek (#22141)
  • SCS and Clarabel parse scalar PSD constraint as linear constraint (#22200)
  • Add MathematicalProgram::AddLinearMatrixInequalityConstraint() for a matrix of symbolic::Expression (#22211)
  • Scs and Clarabel parse 2x2 PSD/LMI constraints as second order cone constraints (#22219)
  • Discourage AddPositiveSemidefiniteConstraint() for a matrix of symbolic::Expression (#22234)
  • Mosek imposes linear or rotated quadratic constraint for small-size LMI constraints (#22238)
  • Mosek parses PSD constraint on 2x2 matrix as rotated Lorentz cone (#22231)
  • Parallelize the Rounding Stage of GraphOfConvexSets (#22222)
  • Reproduce the SCS program with python code (#22223, #22273)
  • IpoptSolver can use SPRAL on Ubuntu (#22206)
  • Add methods to update individual A or b entries of some costs (#22260)

Fixes

  • Drop unnecessary convex quadratic constraints in semidefinite relaxation programs (#22123)
  • Fix a bug in MosekSolver on parsing PSD matrix with repeated variable (#22173)
  • Compute Minimal Representation of Degenerate VPolytopes (#22220)

Multibody Dynamics and Geometry

New features

  • Allow reversed weld joints (#22122)
  • ComputeSignedDistanceToPoint from meshes (#21471)
  • Differentiate visual roles in SDFormat file (#22013, #22301)
  • RenderEngineVtk can be forced into physically-based rendering mode (#22170)

Fixes

  • Improve error message when MultibodyPlant meets unknown geometries (#22178)
  • Fix a RenderEngineVtk bug with handling phong materials in cloned instances (#22170)
  • Update and document MultibodyPlant’s default proximity values (#21463)
  • Don’t compute inertia of a HalfSpace when parsing mujoco files (#22290)
  • Fix bug with geometries in marginal contact (#22153)

Planning

New features

  • Add Expression Costs and Formula Constraints to EdgesBetweenSubgraphs in GcsTrajectoryOptimization (#22155)
  • Add Generic Binding<Cost> and Binding<Constraint> to vertices and edges within a GcsTrajectoryOptimization::Subgraph (#22179)
  • Implement IRIS ZO (#22168)
  • Add Generic Binding<Cost> and Binding<Constraint> to vertices and edges within a GcsTrajectoryOptimization::EdgesBetweenSubgraphs (#22199)

Fixes

  • Fix bug in IrisFromCliqueCover edge case (#22239)
  • Fix broadcasting bug in IrisFromCliqueCover (#22246)
  • Fix typo: UnwrapToContinous => UnwrapToContinuous (#22280)

Tutorials and examples

  • None

Miscellaneous features and fixes

  • Add fmt_debug_string polyfill (#22150)
  • Speed up ExtractAndAppendVariablesFromExpression (#22201)
  • Support (opt-in) derivatives in FunctionHandleTrajectory (#22262)
  • Fix edge cases in yaml C++ string writing (#22299)

pydrake bindings

New features

  • Bind methods of GcsTrajectoryOptimization::Subgraph for adding generic costs and constraints (#22156)
  • Bind methods of GcsTrajectoryOptimization::EdgesBetweenSubgraphs for adding generic costs and constraints (#22177)
  • Bind AffineBall::MakeAffineBallFromLineSegment (#22254)

Fixes

  • Add missing solver options bindings (#22180)

Build system

  • Fix compatibility with Bazel 8 (#22235, #22237)
  • Fix compatibility with Clang 16+ (Xcode 16) (#22172)
  • Fix missing Ubuntu package dependency on libegl1 (#22197)
  • Add Xcode 16 specific build configuration (#22227)

Build dependencies

  • Add gklib_internal (#22206)
  • Add metis_internal (#22206)
  • Add poisson_disk_sampling_internal (#22243)
  • Add spral_internal (#22206)
  • Remove xvfb from deepnote (#22197)
  • Upgrade Python venv requirements to latest releases (#22165, #22267)
  • Upgrade abseil_cpp_internal to latest commit (#22249)
  • Upgrade bazel to latest release 8.0.0 (#22266, #22285)
  • Upgrade bazelisk to latest release 1.25.0 (#22249, #22292)
  • Upgrade crate_universe to latest (#22255)
  • Upgrade curl_internal to latest release 8.11.0 (#22256)
  • Upgrade dm_control_internal to latest release 1.0.25 (#22249)
  • Upgrade googlebenchmark to latest release 1.9.1 (#22249)
  • Upgrade gz_math_internal latest release 8.1.0 (#22259)
  • Upgrade gz_utils_internal latest release 3.1.0 (#22259)
  • Upgrade mujoco_menagerie_internal to latest commit (#22249)
  • Upgrade nlopt_internal to latest release 2.9.1 (#22257)
  • Upgrade rules_cc to latest 0.0.x release 0.0.17 (#22183, #22263)
  • Upgrade rules_rust to latest release 0.55.6 (#22272, #22302)
  • Upgrade rust_toolchain to 1.83.0 (#22272, #22302)
  • Upgrade sdformat_internal to latest release 15.1.1 (#22259)
  • Upgrade stable_baselines3_internal to latest release 2.4.0 (#22249)
  • Upgrade tinyobjloader_internal to latest commit (#22249)
  • Upgrade tomli_internal to latest release 2.2.1 (#22249)
  • Upgrade vtk_internal to latest commit (#22249)

Newly-deprecated APIs

  • drake::solvers::SemidefiniteRelaxationOptions::preserve_convex_quadratic_constraints (#22123)
  • drake::symbolic::ExtractAndAppendVariablesFromExpression override taking a VectorX<Variable>* argument (#22201)
  • pydrake.solvers.SolverOptions.SetOption with parameters solver_option and option_value (#22282)

Removal of deprecated items

  • drake::geometry::CalcPairwiseIntersections (#22248)
  • drake::multibody::DeformableContactPointData (#22248)
  • drake::multibody::HydroelasticQuadraturePointData (#22248)
  • pydrake.multibody.MultibodyPlant.SetDefaultFreeBodyPose with parameter X_WB (#22248)
  • pydrake.multibody.MultibodyPlant.SetFreeBodyPose with parameter X_WB (#22248)
  • pydrake.multibody.MultibodyPlant.SetFreeBodySpatialVelocity with parameter V_WB (#22248)

Notes

This release provides pre-compiled binaries named drake-1.36.0-{jammy|noble|mac-arm64}.tar.gz. See Stable Releases for instructions on how to use them.

Drake binary releases incorporate a pre-compiled version of SNOPT as part of the Mathematical Program toolbox. Thanks to Philip E. Gill and Elizabeth Wong for their kind support.