Announcements
-
Drake now supports Clarabel, an open-source convex conic solver. This solver can solve convex optimization problems with linear, second-order, positive semidefinite or exponential cone constraints and linear/quadratic objective functions (#20604).
-
Drake now supports macOS Sonoma (#20678).
-
We introduce two new convex approximations of contact, Similar (
multibody::DiscreteContactApproximation::kSimilar
) and Lagged (multibody::DiscreteContactApproximation::kLagged
), in the SAP solver. Users can now use the model previously implemented in TAMSI (compliant contact with Hunt and Crossley dissipation and regularized friction) in the SAP solver. These new models are preferred given that the Hunt and Crossley model is based on physics and experimental observations. Moreover, unlike the TAMSI solver, the SAP solver provides theoretical and practical convergence guarantees. Practically this means:- Exactly the same physical parameters that apply to TAMSI (multibody::DiscreteContactApproximation::kTamsi) now apply to the Similar and the Lagged model. Users simply need to flip a single switch in
multibody::DiscreteContactApproximation
to take advantage of the new convex approximations. - The
relaxation_time
parameter for dissipation only applies to themultibody::DiscreteContactApproximation::kSap
approximation, as before. MultibodyPlant::set_discrete_contact_approximation()
orMultibodyPlantConfig::discrete_contact_approximation
should be used to configure the model of discrete contact approximation. The solver type is inferred from the type of contact approximation.MultibodyPlant::set_discrete_contact_solver()
andMultibodyPlantConfig::discrete_contact_solver
are deprecated.- We encourage you to start using the
multibody::DiscreteContactApproximation::kLagged
andmultibody::DiscreteContactApproximation::kSimilar
models in your own simulations. Refer to the documentation for the differences between the two approximations. One of them will become the default contact model, and your feedback in advance is appreciated. - Refer to our paper, available at https://arxiv.org/abs/2312.03908, if you want to learn more about this new feature and its underlying theory.
- Exactly the same physical parameters that apply to TAMSI (multibody::DiscreteContactApproximation::kTamsi) now apply to the Similar and the Lagged model. Users simply need to flip a single switch in
Breaking changes since v1.23.0
- Drake no longer supports the
$SDF_PATH
environment variable for resolving SDFormat<include>
statements (#20642).- SDFormat include statements should use
package://
URIs, instead.
- SDFormat include statements should use
Refer to our Drake Stability Guidelines for our policy on API changes.
Changes since v1.23.0
Dynamical Systems
New features
- Configure label image publishing in CameraConfig (#20554)
- ConcatenateImages allows for variable size inputs (#20599)
- Add ImageIo (#20447)
Fixes
- None
Mathematical Program
New features
- Add ClarabelSolver to ChooseBestSolver (#20587)
- Enable Clarabel by default (#20604)
- Get dual solution from Clarabel (#20597)
- ClarabelSolver obeys SolverOptions (#20602)
- Add Clarabel to preferred_solvers in MinimumUniformScalingToTouch (#20677)
- Add constraints for enforcing that a principal submatrix of a symmetric matrix be positive semidefinite (#20586)
- Add an environment variable to disable SnoptSolver (#20636)
Fixes
- Reset IRIS consecutive_failures after falsifying lower bound (#20627)
- Check ConvexSet::IsBounded first in MaybeCalcAxisAlignedBoundingBox (#20680)
Multibody Dynamics and Geometry
New features
- Support downloading meshcat html files via URLs (#20504)
- Meshcat can report “current” meshcat camera pose (#20484)
- Compute gradient of signed distance when boxes touch (#20033)
- MultibodyPlant supports Hunt and Crossley constraint (#20654)
Fixes
- Correct phong-to-pbr promotion in presence of diffuse texture (#20607)
Planning
New features
- Add wraparound edges to GcsTrajectoryOptimization, for unbounded revolute joints (#20509)
- Add GetContinuousRevoluteJointIndices as a helper function for GCS (#20652)
Fixes
- None
Tutorials and examples
- Clean up PR2 model (#20588)
Miscellaneous features and fixes
model_visualizer
enables camera tracking and makes use of the pose (#20484)- Use PYTHON_VERSION (not UBUNTU_RELEASE) to toggle DrakeGym example on/off (#20574)
- Add ExtractPrincipalSubmatrix and ToLowerTriangularColumnsFromMatrix utility functions (#20646)(#20670)
pydrake bindings
New features
- Add python bindings for FlattenModelDirectives (#20608)
- Add python bindings for ClarabelSolver (#20569)
Fixes
- None
Build system
- Prune unnecessary dependencies (#20563)
- Avoid installing vestigial drake_visualizer scripts (#20564)
- Cull SDFormat use of environment and subprocess. In particular, Drake no longer supports the
$SDF_PATH
environment variable for resolving SDFormat<include>
statements. SDFormat include statements should usepackage://
URIs, instead. (#20642) - Fix some errors with Bazel 7 (#20658)
- This might not yet achieve full Bazel 7 compatibility, but it does fix some acute problems for users that are merely installing Drake.
- Offically support macOS Sonoma (#20678)
Build dependencies
- Add rules_license 0.0.7 (#20560)
- Upgrade abseil_cpp_internal to latest commit (#20630)
- Upgrade bazelisk to latest release v1.19.0 (#20631)
- Upgrade bazel_skylib to latest release 1.5.0 (#20630)
- Upgrade fcl_internal to latest commit (#20630)
- Upgrade gz_utils_internal to latest release gz-utils2_2.2.0 (#20637)
- Upgrade meshcat to latest commit (#20484)
- Upgrade MOSEK to latest release 10.1.21 (#20634)
- Upgrade mypy_internal to latest release v1.7.1 (#20630)
- Upgrade nanoflann_internal to latest release v1.5.2 (#20630)
- Upgrade nlohmann_internal to latest release v3.11.3 (#20630)
- Upgrade rules_python to latest release 0.27.1 (#20630)
- Upgrade rules_rust to latest release 0.32.0 (#20630)
- Upgrade stable_baselines3_internal to latest release v2.2.1 (#20632)
- Upgrade suitesparse_internal to latest release v7.3.1 (#20630)
Newly-deprecated APIs
drake::multibody::Body::node_index
(#20603)- The
@drake_detected_os
external (#20600) drake::multibody::MultibodyPlant::set_discrete_contact_solver
anddrake::multibody::MultibodyPlantConfig::discrete_contact_solver
(#20672)- Instead of choosing a solver, users now must choose a discrete contact approximation. The solver is inferred from the approximation. Users can select an approximation with
drake::multibody::MultibodyPlant::set_discrete_contact_approximation
or viadrake::multibody::MultibodyPlantConfig::discrete_contact_approximation
.
- Instead of choosing a solver, users now must choose a discrete contact approximation. The solver is inferred from the approximation. Users can select an approximation with
Removal of deprecated items
drake::geometry::RenderEngineGlParams::default_label
(#20589)drake::geometry::RenderEngineGltfClientParams::default_label
(#20589)drake::geometry::RenderEngineVtkParams::default_label
(#20589)drake::systems::sensors::Image<drake::systems::sensors::PixelType::kExpr>
(#20590)drake::systems::sensors::PixelFormat::kExpr
(#20590)drake::systems::sensors::PixelType::kExpr
(#20590)drake::systems::DiscreteUpdateEvent::DiscreteUpdateCallback
(#20591)drake::systems::DiscreteUpdateEvent::DiscreteUpdateEvent
overloads taking legacy callback type signatures (#20591)drake::systems::DiscreteUpdateEvent::SystemCallback
(#20591)drake::systems::PublishEvent::PublishCallback
(#20591)drake::systems::PublishEvent::PublishEvent
overloads taking legacy callback type signatures (#20591)drake::systems::PublishEvent::SystemCallback
(#20591)drake::systems::UnrestrictedUpdateEvent::SystemCallback
(#20591)drake::systems::UnrestrictedUpdateEvent::UnrestrictedUpdateCallback
(#20591)drake::systems::UnrestrictedUpdateEvent::UnrestrictedUpdateEvent
overloads taking legacy callback type signatures (#20591)- The
@clp
external (#20592) - The
@gym_py
external (#20592) drake::multibody::UnitInertia::SolidCylinder
two-argument form (#20593)drake::multibody::UnitInertia::SolidCylinderAboutEnd
two-argument overload (#20593)- The following functions’ semantics have changed even though their signature have not:
drake::multibody::UnitInertia::AxiallySymmetric
now requires a normalized unit vector (#20593)drake::multibody::UnitInertia::SolidCapsule
three-argument form now requires a normalized unit vector (#20593)drake::multibody::UnitInertia::SolidCylinder
three-argument form now requires a normalized unit vector (#20593)drake::multibody::UnitInertia::SolidCylinderAboutEnd
three-argument form now requires a normalized unit vector (#20593)drake::multibody::UnitInertia::StraightLine
now requires a normalized unit vector (#20593)drake::multibody::UnitInertia::ThinRod
now requires a normalized unit vector (#20593)
Notes
This release provides pre-compiled binaries named
drake-1.24.0-{focal|jammy|mac|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.