Drake v1.27.0

Back to Release Notes

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.

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 to drake_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 to Sympy Integer and Float (#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)
    • Fix apple_support for Bazel 7 compatibility (#21116)
    • Fix rules_rust for Bazel 7 compatibility (#21104)
    • Fix gflags for Bazel 7 compatibility (#21106)
  • 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 port X_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

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.