Drake v1.40.0

Back to Release Notes

Announcements

  • New tutorial “Configuring Rendering Lighting” (#22631)
  • macOS packages now use Python 3.13 (#22827)
    • The macOS pip wheels for Python 3.12 remain supported.
    • The macOS pip wheels for Python 3.11 remain deprecated and will no longer be published in future releases (#22581).
  • Drake’s Python wheels on Linux are now based on manylinux_2_34 (instead of manylinux_2_35) (#22779).
    • This allows wheels to install and run on more platforms such as Amazon Linux 2023, AlmaLinux 9, RHEL 9, etc.
  • Linux wheels for Python 3.13 are now available (#22580).
    • Drake’s python bindings no longer use a RobotLocomotion fork of pybind11; instead, the bindings use the upstream version plus two custom patches (#22738). Downstream Bazel projects that reuse Drake’s copy of pybind11 for their own bindings will probably need to adjust their code to be compatible with the updated pybind11.
  • Mesh and Convex geometries now allow non-uniform scaling (including mirroring via negative scale). This allows Drake’s to load model files which use such scaling (#22046).

Breaking changes since v1.39.0

  • None

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

Changes since v1.39.0

Dynamical Systems

New features

  • Add discrete-time steady-state Kalman filter (#22687)
  • Support x'Nu term in discrete-time LQR (#22686)
  • Implement create IntegratorBase from integration scheme (#22838)
  • Implement Integrator::Clone (#22773)
  • Support scalar conversion for LuenbergerObserver (#22851)
  • Compare RenderEngineParams with existing RenderEngine instances (#22871)

Fixes

  • In FiniteHorizonLinearQuadraticRegulator, avoid rejecting system with floating abstract input port (#22762)

Mathematical Program

New features

  • None

Fixes

  • None

Multibody Dynamics and Geometry

New features

  • Enable non-uniform scaling for Mesh and Convex geometries (#22772, #22785, #22822, #22824, #22823)
  • Add configuration API for MultibodyPlant DistanceConstraintParams (#22778)
  • Add Meshcat::GetButtonNames (#22806)
  • Add MultibodyPlant::AddTendonConstraint (#22803)

Fixes

  • Remove bogus SAP assertion on Kp > 0 (#22753)
  • Fix crash on frame elements not added to a plant (#22821)
  • Fix parsing of erroneous curvilinear joint input (#22840)

Planning

New features

  • None

Fixes

  • KinematicTrajectoryOptimization now leverages gradient sparsity in certain situations: AddAccelerationBounds (#22800), AddJerkBounds (#22800), and AddVelocityConstraint (#22763).

Tutorials and examples

  • Add a tutorial teaching about lighting in Drake (#22631)

Miscellaneous features and fixes

  • Add ApplyNamedPositionsAsDefaults (#22847, #22849)
  • Fix divide-by-zero in ColorizeDepthImage (#22765)

pydrake bindings

New features

  • None

Fixes

  • Fix lifetime hazards with framework port references (#22775)
  • Fix lifetime hazards with simulator constructors (#22781)
  • Fix lifetime hazards with solver costs and constraints (#22795)
  • Fix DiagramBuilder.AddSystem return value policy (#22884)
  • Add missing ApplyCameraConfig overload on LcmInterfaceSystem (#22811)
  • Bind DeformableContactInfo and ContactResults access (#22868)
  • Add some missing SceneGraph/Inspector bindings (#22879)

Build system

  • Upgrade macOS to use Python 3.13 (#22827)
  • Add Linux wheels for Python 3.13 (#22580)
  • Rebase Linux wheels to manylinux_2_34 (from manylinux_2_35) (#22779)
  • Fix CMake race condition (#22766)

Build dependencies

  • Switch pybind11 to use upstream version, plus two custom patches (#22738, #22832)
  • Add macOS wheel deps to install_prereqs –developer (#22875)
  • Upgrade Python venv (macOS) to latest versions (#22852)
  • Upgrade abseil_cpp_internal to latest commit (#22846)
  • Upgrade crate_universe to latest (#22846)
  • Upgrade dm_control_internal to latest release 1.0.28 (#22846)
  • Upgrade drake_models to latest commit (#22846, #22876)
  • Upgrade fcl_internal to latest commit (#22846)
  • Upgrade googlebenchmark to latest release 1.9.2 (#22854)
  • Upgrade gymnasium_py to latest release 1.1.1 (#22846)
  • Upgrade libpng_internal to latest release 1.6.47 (#22861)
  • Upgrade mujoco_menagerie_internal to latest commit (#22846)
  • Upgrade nanoflann_internal to latest release 1.7.1 (#22846)
  • Upgrade pycodestyle to latest release 2.13.0 (#22846)
  • Upgrade ros_xacro_internal to latest release 2.0.13 (#22846)
  • Upgrade stable_baselines3_internal to latest release 2.6.0 (#22846)
  • Upgrade styleguide to latest commit (#22878)
  • Upgrade suitesparse_internal to latest release 7.10.1 (#22846)
  • Upgrade toolchains_llvm to latest release 1.4.0 (#22888)
  • Upgrade tinyxml2_internal to latest release 11.0.0 (#22846)
  • Upgrade typing_extensions_internal to latest release 4.13.0 (#22846)
  • Upgrade vtk_internal to latest commit (#22702, #22857)

Newly-deprecated APIs

  • DiscreteTimeApproximation has moved packages; it is now part of the drake/systems/analysis package instead of drake/systems/primitives; developers should update their include or import paths (#22867).

Removal of deprecated items

  • The @common_robotics_utilities external (#22334, #22834)
  • The @voxelized_geometry_tools external (#22334, #22834)
  • drake::geometry::Convex::filename (#21881, #22834)
  • drake::geometry::Mesh::filename (#21881, #22834)
  • drake::solvers::SemidefiniteRelaxationOptions::preserve_convex_quadratic_constraints (#22123, #22834)
  • drake::systems::controllers::JointStiffnessController::get_output_port_generalized_force() (#22329)
  • drake::systems::controllers::JointStiffnessController output port named generalized_force (#22329, #22834)

Notes

This release provides pre-compiled binaries named drake-1.40.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.