Announcements
- As announced in v1.37.0, for Bazel users Drake has been ported
to Bazel modules instead of repository
rules. Drake’s legacy support for
WORKSPACE
is now deprecated and will be removed on or after 2025-09-01. (#22660) - MultibodyPlant’s
*_desired_state
input ports for implicit PD control are now much easier to use (i.e., come with fewer restrictions). (#22542, #22715) - The protected Joint API has changed. This will only affect you if you have created a custom joint. Joint::MakeMobilizerForJoint() can now create Frames. (#22735)
- VTK’s lighting calculations for image-based lighting has been corrected. The
implication is that renderings that use an environment map will get a bit
dimmer. (The environment map was mistakenly contributing too much energy to
the scene). To account for this correction, you may need to dim your explicit
lights (spot, point, etc.) slightly and increase your
exposure
to rebalance the exposure of the final image. (#22629) - Calling `FiniteHorizonLinearQuadraticRegulator() will invoke discrete-time finite-horizon LQR under certain circumstances. See the function documentation for details. (#22609)
Breaking changes since v1.38.0
drake::planning::CollisionCheckerParams::model
has gone fromstd::unique_ptr
tostd::shared_ptr
. This constitutes an important semantic change, but is unlikely to cause downstream issues. (#22619)
Refer to our Drake Stability Guidelines for our policy on API changes.
Changes since v1.38.0
Dynamical Systems
New features
- Implement discrete-time finite-horizon LQR (#22609)
- Allow an initial value to be specified for Integrator (#22682)
- Give SemiExplicitEulerIntegrator support for Expression scalar type (#22751)
- Add Selector primitive system (#22635)
- Introduce BusCreator, BusSelector, BusValue (#22679)
Fixes
- Correct null pointer dereference in SemiExplicitEulerIntegrator constructor (#22743)
Mathematical Program
New features
- Add HessianType::kZero to QuadraticConstraint (#22659)
Fixes
- None
Multibody Dynamics and Geometry
New features
- Add GetScopedFrameByName overloads on scalar type (#22644)
- Parse cameras from mujoco (#22531)
- Add PackageMap overloads for filesystem and pathlib (#22731)
- Unambiguously identify ephemeral elements (#22712)
- MakeMobilizerForJoint() can now create Frames (#22735)
- Remove all temporal setup limitations on PD gains (#22715)
Fixes
- Check RotationalInertia moments/products with IsFinite() instead of IsNaN() (#22642)
- Fix Delassus approximation in SAP (#22705)
- Fix Clone methods for Frames (#22696)
- Allow desired-state input ports to remain unconnected (#22542)
- When feeding a .OBJ file directly to a Parser, uses SceneGraph’s default proximity properties (#22674)
- Implement hydro box mesh with faces split into four triangles (#22640)
- Speed up VolumeMeshRefiner (refine_mesh tool) with local search (#22709)
- Specular reflections of direct lights no longer disappear on perfectly smooth materials (#22632)
- Correct image-based lighting diffuse contribution in RenderEngineVtk (#22629)
Planning
New features
- Define IrisZo parameterization with a vector of Expressions (#22706)
- Add new factory method of drake::planning::IrisZoOptions for a drake::multibody::RationalForwardKinematics object (#22618)
- IRIS-ZO given the ability to support additional constraints (#22583)
Fixes
- Make IrisZo better handle the case where the ellipsoid center is invalid (in-collision or violates user-specified constraints) (#22737)
Tutorials and examples
- None
Miscellaneous features and fixes
drake::manipulation::schunk_wsg::SchunkWsgTrajectoryGenerator
can opt-out of force limits ports (#22671)- Fix wrong port name in
SchunkWsgTrajectoryGenerator
documentation (#22671)
pydrake bindings
New features
- Add bindings for
drake::geometry::MeshcatAnimation
(#22650) - Add bindings for
drake::trajectories::DiscreteTimeTrajectory
(#22653) - Add bindings for
drake::systems::sensors::CameraConfig
helper structs (#22697) - Add bindings for
drake::planning::IrisZoOptions::SetParameterizationFromExpression
(#22583) - Add bindings for
drake::planning::IrisZoOptions::set_parameterization
(#22618) - Add bindings for
drake::planning::IrisZoOptions::get_parameterization_in_threadsafe
(#22618) - Add bindings for
drake::planning::IrisZoOptions::get_parameterization_dimension
(#22618) - Add bindings for
drake::planning::IrisZoOptions::get_paramterization
(#22618) - Add bindings for
drake::planning::CreateWithRationalKinematicParameterization
(#22618)
Fixes
- None
Build system
- Add CMake options for opting out of each open-source solver (#22626)
- Stop using brew
--no-lock
option (#22704)
Build dependencies
- Upgrade abseil_cpp_internal to latest commit (#22670)
- Upgrade Bazel to latest release 8.1.1 (#22690)
- Upgrade buildifier to latest release v8.0.3 (#22670)
- Upgrade clarabel_cpp_internal to latest release v0.10.0 (#22732)
- Upgrade common_robotics_utilities to latest (#22484)
- Upgrade crate_universe to latest releases (#22732)
- Upgrade curl_internal to latest release 8.12.1 (#22677)
- Upgrade drake_models to latest commit (#22670)
- Upgrade gtest to latest release v1.16.0 (#22670)
- Upgrade gymnasium_py to latest release v1.1.0 (#22670)
- Upgrade gz_math_internal,gz_utils_internal to latest (#22701)
- Upgrade mujoco_menagerie_internal to latest commit (#22670)
- Upgrade mypy_internal to latest release v1.15.0 (#22670)
- Upgrade nanoflann_internal to latest release v1.7.0 (#22670)
- Upgrade nlopt_internal to latest release v2.10.0 (#22678)
- Upgrade openusd_internal to latest release v25.02a (#22670)
- Upgrade Python venv (mac) to latest (#22692)
- Upgrade sdformat to latest release 15.2.0 (#22680)
- Upgrade spral_internal to latest release v2025.03.06 (#22713)
- Upgrade suitesparse_internal to latest release v7.9.0 (#22670)
- Upgrade voxelized_geometry_tools to latest (#22484)
Newly-deprecated APIs
drake::multibody::SpatialInertia::CriticizeNotPhysicallyValid()
(#22474)- Deprecate using Drake as a workspace external (#22660)
Removal of deprecated items
- None
Notes
This release provides pre-compiled binaries named
drake-1.39.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.