Announcements
- Drake no longer supports Ubuntu 20.04 (“Focal”) (#20952).
- End of life timelines are documented as part of the Supported Configurations.
- As a result, we have some new lower bounds on supported tool versions (#21107):
- C++ standard >= 20
- GCC >= 11
- Clang >= 14
- Bazel >= 6.0
- Remove drake_visualizer (#20963)
- On macOS our primary Python version is now 3.12 (#21013)
- Building from source via Bazel defaults to 3.12, but is configurable.
- Drake wheels are still supported and distributed for both 3.11 and 3.12.
- The drake binaries tarballs (
*.tgz
) are 3.12 only.
- On macOS, some support has reached end of life:
- Drake’s support for Monterey (i.e., macOS 12) reached end of life in Drake v1.22.0. We have continued to ship some Monterey packages as a courtesy, but this be the last release to do so.
- Drake’s support for running on
x86_64
reached end of life in Drake v1.22.0. We have continued to ship x86 packages as a courtesy, but this will be the last release to do so. In the future, we will only ship*.whl
packages for macOS x86_64 (not*.tgz
packages), and only for stable releases (no more nightly builds). - We are no longer running CI testing on macOS
x86_64
, except for the minimal recipe that compiles the wheel packages.
Breaking changes since v1.26.0
- The
drake_bazel_installed
installation workflow is deprecated and no longer tested in CI (#21057)- This particular workflow for using Drake binaries via Bazel is characterized
by a line like this in your
WORKSPACE
file:load("@drake_binary//:share/drake/repo.bzl", "drake_repository")
- During the deprecation window we will continue to install the code in case it still happens to work for you, but we are no longer testing it in our CI so it will probably bitrot at some point.
- For Bazel users who only need pydrake, note that the rules_python support for pip wheel is pretty good these days; using the pydrake wheels via rules_python is a good option.
- This particular workflow for using Drake binaries via Bazel is characterized
by a line like this in your
Refer to our Drake Stability Guidelines for our policy on API changes.
Changes since v1.26.0
Dynamical Systems
New features
- Add System::IsDifferentialEquationSystem (#20976)
- Add batch (multithreaded) evaluation of system dynamics (#20979)
Fixes
- Disable unused dependency trackers for better performance (#21134)
- Fail-fast when given a mismatched context for primitive systems (#20958)
Mathematical Program
New features
- Add serialization for GraphOfConvexSetsOptions (#20946)
- Add mixing_steps to IrisOptions (#20974)
- Make PairwiseIntersectionsContinuousJoints Non-Internal (#21011)
- Implement a constructor for HPolyhedron that takes in a linear program, and outputs its feasible set (#21027)
- Add support for LorentzConeConstraint and RotatedLorentzConeConstraint in GraphOfConvexSets edges and vertices (#21001)
- Add support of intersection of hyperrectangles (#21076)
Fixes
- Prevent segfaults in
VPolytope
by checking square matrix (#21060) - Add finite check to linear constraints (#21049)
- Fix a logic bug when constructing an AffineSubspace as the affine hull of a ConvexSet did not find all basis vectors (#21009)
Multibody Dynamics and Geometry
New features
- Collision filter group can be named as a member of another collision filter group when parsing (#20925)
- Add RpyFloatingJoint (providing alternative to QuanternionFloatingJoint) (#20912)
- Add shadow maps in RenderEngineVtk (#20944)
- Add MultibodyPlant::MakeActuationMatrixPseudoinverse (#20975)
- Implements PackageMap::ResolveUrl() (#21042)
- Add methods for detecting extremely erroneous spatial inertial values (#20897)
- Drake-generated meshes render faceted in meshcat (#21021)
- Add support for
tags in the mujoco parser ([#21087][_#21087]) - Visualization makes use of the convex hull for visualization when appropriate (#21061)
- Allow tiny compliant primitives to vanish (#21100)
- Make joint damping a system parameter (#20947)
Fixes
- Fix behavior of lights expressed in the camera frame for RenderEngineVtk (#20930)
- Defining a collision filter group multiple times no longer allows later definitions to supplant earlier definitions (#20925)
- Mujoco parser assigns unique names to default geometries (#21045)
- Obey extensionsUsed and extensionsRequired in glTF files in RenderEngineVtk (#21090)
Planning
New features
- Unwrap GraphOfConvexSets trajectories with continuous revolute joints to continuous Euclidean space (#21137)
- Enable solving a path via convex restriction (#20895)
- Return bindings from KinematicTrajectoryOptimization Add* methods (#21014)
- Add new algorithm, IrisInConfigurationSpaceFromCliqueCover, for efficiently placing IRIS regions (#20831)
- Implement wraparound edges together with the subspace machinery (#20886)
- Enable removal of subgraphs (#21006)
- Implement MaxCliqueSolverViaGreedy, a greedy heuristic for obtaining large maximal cliques (#21097)
Fixes
- None
Tutorials and examples
- Add tutorial for hydroelastic contact with a nonconvex mesh (#20774)
Miscellaneous features and fixes
- Improve variant support for primitive types in yaml serialization (#20937)
- Move
tri_homecart
todrake_models
package (#21004) - Add
trajectories::DerivativeTrajectory
(#21036) - Promote
manipulation::kuka_iiwa::SimIiwaDriver
to public API (#21040) - Adjust
FindResource
on installed Drake to chase symlinks (#21092)
pydrake bindings
New features
- Convert Drake
ExpressionKind.Constant
toSympy
Integer
andFloat
(#20996) - Allow
visualization.AddFrameTriadIllustration
to accept a multibody Frame (#21064)
Fixes
- Bind
MultibodyPlant::GetVisualGeometriesForBody
(#21153) - Bind
SpatialInertia::CalcPrincipalSemiDiametersAndPoseForSolidEllipsoid
(#21149) - Avoid
runpy
warning due to import order (#20968) - Warn about implausible scale in
mesh_to_model
tool (#20966) - Handle
UnionType
hints in yaml serialization (#21108)
Build system
- Drop Ubuntu 20.04 (“Focal”) as a supported platform (#20952)
- Simplify CMakeLists to use whatever OS codename for bazel customizations (#21089)
- Bump minimum supported versions (#21107)
- Update MacOS Python to 3.12 (#21013)
- CMake only installs during the install step (not the build step) (#20916)
- Disable legacy_create_init by default (#21126)
- Fix linker options for building on arm64 (#21047)
Build dependencies
- Remove drake_visualizer (#20963)
- Remove determine_os logic (#21089)
- Add boost_internal (#21037)
- This is not used by default; it is only used when –WITH_USD=ON is enabled.
- Add com_github_nelhage_rules_boost_internal (#21037
- This is not used by default; it is only used when –WITH_USD=ON is enabled.
- Upgrade Bazel to latest release 7.0.2 (#21103)
- Upgrade abseil_cpp_internal to latest commit (#21072)
- Upgrade build_bazel_apple_support to latest release 1.14.0 (#21072)
- Upgrade com_github_nelhage_rules_boost_internal to latest commit (#21072)
- Upgrade crate_universe to latest (#21072)
- Upgrade crate_universe to latest (#21083)
- Upgrade drake_models to latest commit (#21039)
- Upgrade intel_realsense_ros to latest commit (#20960)
- Upgrade libpng_internal to latest release v1.6.43 (#21072)
- Upgrade meshcat to latest commit (#21080)
- Upgrade openusd_internal to latest release v24.03 (#21078)
- Upgrade ros_xacro to latest commit (#20960)
- Upgrade rules_python to latest release 0.31.0 (#21072)
- Upgrade rules_rust to latest release 0.40.0 (#21083)
- Upgrade rust_toolchain to latest (#21083)
- Upgrade typing_extensions_internal to latest release 4.10.0 (#21072)
- Upgrade vtk_internal to latest commit (#21072)
- Upgrade xmlrunner_py to latest release 3.2.0 (#21071)
- Fix github.bzl for extracting attachments without a prefix (#21111)
Newly-deprecated APIs
- The
drake_bazel_installed
installation workflow (#21057) drake::multibody::BallRpyJoint::damping()
(#20947)drake::multibody::DifferentialInverseKinematicsIntegrator
input portX_WE_desired
input port (#20973)drake::multibody::Joint::damping_vector()
(#20947)drake::multibody::PlanarJoint::damping()
(#20947)drake::multibody::PrismaticJoint::damping()
(#20947)drake::multibody::QuaternionFloatingJoint::angular_damping()
(#20947)drake::multibody::QuaternionFloatingJoint::translational_damping()
(#20947)drake::multibody::RevoluteJoint::damping()
(#20947)drake::multibody::RpyFloatingJoint::angular_damping()
(#20947)drake::multibody::RpyFloatingJoint::translational_damping()
(#20947)drake::multibody::ScrewJoint::damping()
(#20947)drake::multibody::UniversalJoint::damping()
(#20947)
Removal of deprecated items
- Remove drake_visualizer (#20963)
drake::multibody::Body::node_index
(#20603, #21075)- The
@drake_detected_os
external (#20600, #21075)
Notes
This release provides pre-compiled binaries named
drake-1.27.0-{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.