-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[doc] Add release notes v1.37.0 (#22413)
Co-Authored-By: Jeremy Nimmer <[email protected]>
- Loading branch information
1 parent
0965a43
commit 707ae4c
Showing
3 changed files
with
342 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,333 @@ | ||
--- | ||
title: Drake v1.37.0 | ||
date: 2025-01-15 | ||
released: 2025-01-15 | ||
--- | ||
|
||
# Announcements | ||
|
||
* The default `DiscreteContactApproximation` for MultibodyPlant has been updated to `kLagged`. | ||
* This approximation integrates engineering-quality, physics-based models | ||
into our convex formulations, providing strong convergence guarantees. The | ||
resulting SAP formulation is both robust and high-performing, while | ||
preserving physical accuracy. Refer to [Castro et al., 2024](https://arxiv.org/abs/2312.03908) | ||
for further details. Keep in mind that this may cause different simulation | ||
results, and users who rely on a specific contact approximation might need | ||
to update their code and/or modeling assumptions ([#21294][_#21294]). | ||
* Drake now officially supports macOS 15 Sequoia ([#22324][_#22324]). | ||
* On macOS, Ipopt is now compiled from source instead of using Homebrew ([#22331][_#22331]). | ||
* One consequence is that MUMPS is no longer available as one of Ipopt's | ||
linear solvers. The only available linear solver is SPRAL. | ||
* For Bazel users, Drake has been ported to | ||
[Bazel modules](https://bazel.build/external/module) instead of repository | ||
rules ([#22338][_#22338], [#22432][_#22432]). | ||
* Please start porting your project to the new technology. See the | ||
[drake_bazel_external](https://github.com/RobotLocomotion/drake-external-examples/tree/main/drake_bazel_external) | ||
example for how to use this from your project. | ||
* Refer to the comments in | ||
[drake/tools/flags/BUILD.bazel](https://github.com/RobotLocomotion/drake/blob/master/tools/flags/BUILD.bazel) | ||
to see new flags you can use to govern the dependencies. | ||
* After Drake has good support for modules, we plan to deprecate Drake's | ||
repository rules for removal. For updates, follow [#20731][_#20731]. | ||
* When building from source with CMake, the default value for `WITH_USER_EIGEN` | ||
and `WITH_USER_FMT` and `WITH_USER_SPDLOG` is now `ON`. In other words, CMake | ||
will use `find_package` to locate dependencies, instead of `pkg-config` | ||
([#22421][_#22421]). | ||
* YAML load/save can now handle bytes and paths ([#22288][_#22288], [#22318][_#22318]). | ||
* Drake now uses AVX512 instructions (when available) for hand-coded Highway (SIMD) functions. ([#22423][_#22423]). | ||
To opt-out for reproducible results, see | ||
<a href="/doxygen_cxx/group__environment__variables.html">DRAKE_DISABLE_CPU_FEATURES</a>. | ||
|
||
# Breaking changes since v1.36.0 | ||
|
||
* `InitialValueProgram` changed the data type of some static constants ([#22358][_#22358]) | ||
* Remove LinearModelPredictiveControl ([#22306][_#22306]) | ||
* If downstream C++ code calls RenderEngine::Clone and the runtime type of the RenderEngine is a downstream Python subclass, then the call will now throw an exception. The C++ call must be updated to opt-in to the shared_ptr template argument. ([#22353][_#22353]) | ||
* `InverseDynamicsController::get_output_port_control()` now reports the actuation on joint actuators instead of generalized forces on all joints. The generalized forces on all joints are still reported, but through `get_output_port_generalized_force()` ([#22315][_#22315]) | ||
|
||
Refer to our [Drake Stability Guidelines](/stable.html) for our policy | ||
on API changes. | ||
|
||
# Changes since v1.36.0 | ||
|
||
## Dynamical Systems | ||
|
||
<!-- <relnotes for systems go here> --> | ||
|
||
|
||
|
||
New features | ||
|
||
* Add SparseMatrixGain as a primitive system ([#22314][_#22314]) | ||
* Add DiagramBuilder overloads for shared_ptr ([#22347][_#22347]) | ||
* Add LuenbergerObserver and KalmanFilter support for shared_ptr ([#22351][_#22351]) | ||
* Add PidControlledSystem and RgbdSensorDiscrete support for shared_ptr ([#22347][_#22347]) | ||
* Add SteadyStateKalmanFilter overload to accept the context by-const-ref ([#22351][_#22351]) | ||
|
||
Fixes | ||
|
||
* Fix JointStiffnessController to output actuation instead of generalized_force ([#22329][_#22329]) | ||
* Fix InverseDynamicsController to output actuation instead of generalized_force ([#22315][_#22315]) | ||
|
||
## Mathematical Program | ||
|
||
<!-- <relnotes for solvers go here> --> | ||
|
||
New features | ||
|
||
* Add MathematicalProgram::AddQuadraticCost w*‖x-x_d‖² ([#22424][_#22424]) | ||
* SolverOptions is serializable to/from YAML ([#22078][_#22078]) | ||
|
||
Fixes | ||
|
||
* Change solver names to upstream's preferred case ([#22407][_#22407]) | ||
* Fix MobyLCPSolver to use Drake logging not cerr ([#22359][_#22359]) | ||
* IpoptSolver by default now uses SPRAL (not MUMPS) ([#22385][_#22385]) | ||
* Relax the tolerance in IpoptSolver ([#22426][_#22426]) | ||
|
||
## Multibody Dynamics and Geometry | ||
|
||
<!-- <relnotes for geometry,multibody go here> --> | ||
|
||
New features | ||
|
||
* Add a Parser::scene_graph() accessor ([#22317][_#22317]) | ||
* Implement `ref` for joints in MuJoCo parser ([#22446][_#22446]) | ||
* Add functionality to create Convex shapes from vertices and enable geometry::VPolytope to use it to create its corresponding Convex shape. ([#22390][_#22390], [#22442][_#22442]) | ||
* AddUnitQuaternionConstraintOnPlant also adds the constraint that quaternion variables lie in [-1,1] ([#22373][_#22373]) | ||
* Implement AddMultibodyPlantConstraints() that maps from the constraints used in MultibodyPlant to the constraints used in MathematicalProgram ([#22327][_#22327]) | ||
* Use AddMultibodyPlantConstraints in InverseKinematics ([#22361][_#22361]) | ||
* Add RenderEngine support for shared_ptr ([#22353][_#22353]) | ||
|
||
Fixes | ||
|
||
* Fix "more than one orientation" error in mujoco parser ([#22387][_#22387]) | ||
* Fix a throw from RotationalInertia in debug mode ([#22401][_#22401]) | ||
* Improve Mujoco parser's error message for "size from mesh" ([#22389][_#22389]) | ||
* Make SAP the default discrete contact solver ([#21294][_#21294]) | ||
|
||
## Planning | ||
|
||
<!-- <relnotes for planning go here> --> | ||
|
||
|
||
New features | ||
|
||
* None | ||
|
||
Fixes | ||
|
||
* None | ||
|
||
## 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> --> | ||
|
||
* Improvements to YAML serialization: | ||
* Add support for `std::filesystem::path` and `pathlib.Path` ([#22288][_#22288]) | ||
* Add support for `drake::FileSource` ([#22288][_#22288]) | ||
* Add support for YAML's `!!binary` tag ([#22318][_#22318]) | ||
* In C++ the type is `std::vector<std::byte>`. | ||
* In Python the type is `bytes`. | ||
* Fix Python `yaml_dump_typed` for Union on str ([#22394][_#22394]) | ||
* Add PiecewiseConstantCurvatureTrajectory ([#22214][_#22214]) | ||
|
||
## pydrake bindings | ||
|
||
<!-- <relnotes for bindings go here> --> | ||
|
||
New features | ||
|
||
* Add binding for MultibodyPlant::GetActuationFromArray() ([#22356][_#22356]) | ||
|
||
Fixes | ||
|
||
* Fix diagram memory leaks ([#22221][_#22221], [#22343][_#22343]) | ||
|
||
## Build system | ||
|
||
<!-- <relnotes for cmake,doc,setup,third_party,tools go here> --> | ||
|
||
* Officially support macOS 15 Sequoia ([#22324][_#22324]) | ||
* The command line option `--define=DRAKE_WERROR=ON` no longer has any effect ([#22335][_#22335]) | ||
* The `DRAKE_OS` environment variable no longer has any effect ([#22432][_#22432]) | ||
* Use AVX512 instructions when available ([#22423][_#22423]) | ||
|
||
## Build dependencies | ||
|
||
<!-- <relnotes for workspace go here> --> | ||
|
||
* Require Bazel >= 7.4 ([#22305][_#22305]) | ||
* Use `MODULE.bazel` for all dependencies ([#22338][_#22338]) | ||
* Modular Bazel builds use eigen, fmt, spdlog from bzlmod by default ([#22432][_#22432]) | ||
* CMake builds prefer find_package over pkg-config ([#22421][_#22421]) | ||
* Provide new Bazel flag to opt-out of spdlog entirely ([#22432][_#22432]) | ||
* Provide new Bazel flags to control solver dependencies ([#22393][_#22393]) | ||
* Add `rules_java` external ([#22305][_#22305]) | ||
* Add `rules_shell` external ([#22305][_#22305]) | ||
* Use `ipopt_internal` on macOS (previously was Ubuntu-only) ([#22331][_#22331]) | ||
* Use `py_cc_toolchain` for configuring pybind11 ([#22346][_#22346]) | ||
* Update `styleguide` to latest commit ([#22409][_#22409]) | ||
* Upgrade `abseil_cpp_internal` to latest commit ([#22375][_#22375], [#22411][_#22411]) | ||
* Upgrade `crate_universe` to latest ([#22310][_#22310]) | ||
* Upgrade `crate_universe` to latest ([#22375][_#22375]) | ||
* Upgrade `curl_internal` to latest release 8.11.1 ([#22376][_#22376]) | ||
* Upgrade `dm_control_internal` to latest release 1.0.26 ([#22375][_#22375]) | ||
* Upgrade `drake_models` to latest commit ([#22321][_#22321], [#22408][_#22408]) | ||
* Upgrade `ipopt_internal` to latest release 3.14.17 ([#22388][_#22388]) | ||
* Upgrade `lcm` to latest release v1.5.1 ([#22458][_#22458]) | ||
* Upgrade `mypy_internal` to latest release 1.14.1 ([#22375][_#22375]) | ||
* Upgrade `rules_rust` to latest release 0.56.0 ([#22319][_#22319]) | ||
* Upgrade `rules_cc` to latest release 0.1.0 -- for MODULE only, not WORKSPACE ([#22432][_#22432]) | ||
* Upgrade `tinygltf_internal` to latest release 2.9.4 ([#22375][_#22375]) | ||
* Upgrade `vtk_internal` to latest commit ([#22384][_#22384]) | ||
* Remove vendored `libcrypt` from wheel builds ([#22392][_#22392]) | ||
* (macOS only) Upgrade Python venv lockfile to latest versions ([#22381][_#22381]) | ||
|
||
## Newly-deprecated APIs | ||
|
||
* Subclassing `drake::multibody::MultibodyPlant` ([#22397][_#22397]) | ||
* Setting the `drake::solvers::IpoptSolver` solver option named `linear_solver` to the value `mumps` ([#22385][_#22385]) | ||
* `drake::solvers::MathematicalProgram::GetSolverOptionsDouble()` ([#22078][_#22078]) | ||
* `drake::solvers::MathematicalProgram::GetSolverOptionsInt()` ([#22078][_#22078]) | ||
* `drake::solvers::MathematicalProgram::GetSolverOptionsStr()` ([#22078][_#22078]) | ||
* `drake::solvers::MobyLCPSolver::SetLoggingEnabled` ([#22359][_#22359]) | ||
* `drake::solvers::SolverOptions::CheckOptionKeysForSolver()` ([#22078][_#22078]) | ||
* `drake::solvers::SolverOptions::GetOptionsDouble()` ([#22078][_#22078]) | ||
* `drake::solvers::SolverOptions::GetOptionsInt()` ([#22078][_#22078]) | ||
* `drake::solvers::SolverOptions::GetOptionsStr()` ([#22078][_#22078]) | ||
* `drake::solvers::SolverOptions::GetOptions()` ([#22078][_#22078]) | ||
* `drake::solvers::SolverOptions::GetSolverIds()` ([#22078][_#22078]) | ||
* `drake::solvers::SolverOptions::common_solver_options()` ([#22078][_#22078]) | ||
* `drake::solvers::SolverOptions::get_max_threads()` ([#22078][_#22078]) | ||
* `drake::solvers::SolverOptions::get_print_file_name()` ([#22078][_#22078]) | ||
* `drake::solvers::SolverOptions::get_print_to_console()` ([#22078][_#22078]) | ||
* `drake::solvers::SolverOptions::get_standalone_reproduction_file_name()` ([#22078][_#22078]) | ||
* `drake::solvers::SolverOptions::operator<<()` ([#22078][_#22078]) | ||
* `drake::solvers::to_string(const &SolverOptions)` ([#22078][_#22078]) | ||
* `drake::systems::controllers::JointStiffnessController::get_output_port_generalized_force()` ([#22329][_#22329]) | ||
* `drake::systems::controllers::JointStiffnessController` output port named `generalized_force` ([#22329][_#22329]) | ||
* `drake::trajectories::Trajectory` virtual interface for subclasses ([#22395][_#22395]) | ||
* Subclasses are no longer allowed to override public virtual methods. They | ||
must now override the NVI ("non-virtual interface") protected methods, e.g., | ||
`do_cols()` instead of `cols()`. | ||
* `pydrake.common.yaml.yaml_load_typed` behavior with certain implicit primitive conversions ([#22410][_#22410]); the following behaviors are deprecated: | ||
* writing a bool in a document and loading it into an int; | ||
* writing a bool in a document and loading it into a float; | ||
* writing a bool in a document and loading it into a string; | ||
* writing an int in a document and loading it into a bool; | ||
* writing an int in a document and loading it into a string; | ||
* writing a float in a document and loading it into a bool; | ||
* writing a non-integral float in a document and loading it into an int; | ||
* writing a float in a document and loading it into a string; | ||
* writing a string in a document and loading it into a bool. | ||
* `@python//:python` label in Bazel ([#22346][_#22346]) | ||
* `@python//:python_direct_link` label in Bazel ([#22346][_#22346]) | ||
* The `@cc` external ([#22335][_#22335]) | ||
* The `@common_robotics_utilities` external ([#22334][_#22334]) | ||
* The `@ipopt` external ([#22331][_#22331]) | ||
* The `@voxelized_geometry_tools` external ([#22334][_#22334]) | ||
|
||
## Removal of deprecated items | ||
|
||
* `//manipulation/util:meshlab_to_sdf` ([#22368][_#22368]) | ||
* `//manipulation/util:show_model` ([#22368][_#22368]) | ||
* `drake::geometry::ReadObjToTriangleSurfaceMesh` overload that takes a `std::istream` ([#21914][_#21914], [#22368][_#22368]) | ||
* `drake::multibody::FrameBase` ([#21891][_#21891], [#22368][_#22368]) | ||
* `drake::multibody::MultibodyPlant::set_discrete_contact_solver()` ([#20672][_#20672], [#21294][_#21294]) | ||
* `drake::systems::sensors::RgbdSensor::X_BC` ([#21937][_#21937], [#22368][_#22368]) | ||
* `drake::systems::sensors::RgbdSensor::X_BD` ([#21937][_#21937], [#22368][_#22368]) | ||
* `drake::systems::sensors::RgbdSensor::X_PB` ([#21937][_#21937], [#22368][_#22368]) | ||
* `drake::systems::sensors::RgbdSensor::color_render_camera` ([#21937][_#21937], [#22368][_#22368]) | ||
* `drake::systems::sensors::RgbdSensor::depth_camera_info` ([#21937][_#21937], [#22368][_#22368]) | ||
* `drake::systems::sensors::RgbdSensor::depth_render_camera` ([#21937][_#21937], [#22368][_#22368]) | ||
* `drake::systems::sensors::RgbdSensor::parent_frame_id` ([#21937][_#21937], [#22368][_#22368]) | ||
|
||
# Notes | ||
|
||
|
||
This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v1.37.0) named | ||
``drake-1.37.0-{jammy|noble|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> --> | ||
[_#20672]: https://github.com/RobotLocomotion/drake/pull/20672 | ||
[_#20731]: https://github.com/RobotLocomotion/drake/pull/20731 | ||
[_#21294]: https://github.com/RobotLocomotion/drake/pull/21294 | ||
[_#21891]: https://github.com/RobotLocomotion/drake/pull/21891 | ||
[_#21914]: https://github.com/RobotLocomotion/drake/pull/21914 | ||
[_#21937]: https://github.com/RobotLocomotion/drake/pull/21937 | ||
[_#22078]: https://github.com/RobotLocomotion/drake/pull/22078 | ||
[_#22214]: https://github.com/RobotLocomotion/drake/pull/22214 | ||
[_#22221]: https://github.com/RobotLocomotion/drake/pull/22221 | ||
[_#22288]: https://github.com/RobotLocomotion/drake/pull/22288 | ||
[_#22305]: https://github.com/RobotLocomotion/drake/pull/22305 | ||
[_#22306]: https://github.com/RobotLocomotion/drake/pull/22306 | ||
[_#22310]: https://github.com/RobotLocomotion/drake/pull/22310 | ||
[_#22314]: https://github.com/RobotLocomotion/drake/pull/22314 | ||
[_#22315]: https://github.com/RobotLocomotion/drake/pull/22315 | ||
[_#22317]: https://github.com/RobotLocomotion/drake/pull/22317 | ||
[_#22318]: https://github.com/RobotLocomotion/drake/pull/22318 | ||
[_#22319]: https://github.com/RobotLocomotion/drake/pull/22319 | ||
[_#22321]: https://github.com/RobotLocomotion/drake/pull/22321 | ||
[_#22324]: https://github.com/RobotLocomotion/drake/pull/22324 | ||
[_#22327]: https://github.com/RobotLocomotion/drake/pull/22327 | ||
[_#22329]: https://github.com/RobotLocomotion/drake/pull/22329 | ||
[_#22331]: https://github.com/RobotLocomotion/drake/pull/22331 | ||
[_#22334]: https://github.com/RobotLocomotion/drake/pull/22334 | ||
[_#22335]: https://github.com/RobotLocomotion/drake/pull/22335 | ||
[_#22338]: https://github.com/RobotLocomotion/drake/pull/22338 | ||
[_#22343]: https://github.com/RobotLocomotion/drake/pull/22343 | ||
[_#22346]: https://github.com/RobotLocomotion/drake/pull/22346 | ||
[_#22347]: https://github.com/RobotLocomotion/drake/pull/22347 | ||
[_#22351]: https://github.com/RobotLocomotion/drake/pull/22351 | ||
[_#22353]: https://github.com/RobotLocomotion/drake/pull/22353 | ||
[_#22356]: https://github.com/RobotLocomotion/drake/pull/22356 | ||
[_#22358]: https://github.com/RobotLocomotion/drake/pull/22358 | ||
[_#22359]: https://github.com/RobotLocomotion/drake/pull/22359 | ||
[_#22361]: https://github.com/RobotLocomotion/drake/pull/22361 | ||
[_#22368]: https://github.com/RobotLocomotion/drake/pull/22368 | ||
[_#22373]: https://github.com/RobotLocomotion/drake/pull/22373 | ||
[_#22375]: https://github.com/RobotLocomotion/drake/pull/22375 | ||
[_#22376]: https://github.com/RobotLocomotion/drake/pull/22376 | ||
[_#22381]: https://github.com/RobotLocomotion/drake/pull/22381 | ||
[_#22384]: https://github.com/RobotLocomotion/drake/pull/22384 | ||
[_#22385]: https://github.com/RobotLocomotion/drake/pull/22385 | ||
[_#22387]: https://github.com/RobotLocomotion/drake/pull/22387 | ||
[_#22388]: https://github.com/RobotLocomotion/drake/pull/22388 | ||
[_#22389]: https://github.com/RobotLocomotion/drake/pull/22389 | ||
[_#22390]: https://github.com/RobotLocomotion/drake/pull/22390 | ||
[_#22392]: https://github.com/RobotLocomotion/drake/pull/22392 | ||
[_#22393]: https://github.com/RobotLocomotion/drake/pull/22393 | ||
[_#22394]: https://github.com/RobotLocomotion/drake/pull/22394 | ||
[_#22395]: https://github.com/RobotLocomotion/drake/pull/22395 | ||
[_#22397]: https://github.com/RobotLocomotion/drake/pull/22397 | ||
[_#22401]: https://github.com/RobotLocomotion/drake/pull/22401 | ||
[_#22407]: https://github.com/RobotLocomotion/drake/pull/22407 | ||
[_#22408]: https://github.com/RobotLocomotion/drake/pull/22408 | ||
[_#22409]: https://github.com/RobotLocomotion/drake/pull/22409 | ||
[_#22410]: https://github.com/RobotLocomotion/drake/pull/22410 | ||
[_#22411]: https://github.com/RobotLocomotion/drake/pull/22411 | ||
[_#22421]: https://github.com/RobotLocomotion/drake/pull/22421 | ||
[_#22423]: https://github.com/RobotLocomotion/drake/pull/22423 | ||
[_#22424]: https://github.com/RobotLocomotion/drake/pull/22424 | ||
[_#22426]: https://github.com/RobotLocomotion/drake/pull/22426 | ||
[_#22432]: https://github.com/RobotLocomotion/drake/pull/22432 | ||
[_#22442]: https://github.com/RobotLocomotion/drake/pull/22442 | ||
[_#22446]: https://github.com/RobotLocomotion/drake/pull/22446 | ||
[_#22458]: https://github.com/RobotLocomotion/drake/pull/22458 | ||
<!-- <end issue links> --> | ||
|
||
<!-- | ||
Current oldest_commit b95c19c62d2eab2c2a6a3e37d11788e696b2111f (exclusive). | ||
Current newest_commit 6e2350171d34d51cb66b8d5e520252a638c2729a (inclusive). | ||
--> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters