Drake v1.9.0

Back to Release Notes

Announcements

  • Drake now supports the macOS arm64 architecture (the “M1”, “M2”, … CPU series) without using Rosetta.
    • Drake does not yet provide pypi wheels for arm64 (follow #17906 for updates). In the meantime, we recommend that you install from a Direct Download that includes both Python and C++ support, using a dedicated virtual environment.
  • Preliminary support for ROS 2 is underway here (#17941).
  • Differential IK has been substantially improved (#9773, #17977, #18021).
  • Drake builds in C++20 mode by default on macOS and Ubuntu 22 (#17943).
    • Ubuntu 20 is unchanged (C++17 mode).

Breaking changes since v1.8.0

  • We have elected to remove support for Ibex from IRIS; it proved to only be useful for exceptionally toy problems and has become a footgun for users that turn it on (and wait forever) (#17987).
    • In particular, the drake::geometry::optimization::IrisOptions::enable_ibex flag (which defaulted to false) has been removed.

Refer to our Drake Stability Guidelines for our policy on API changes.

Changes since v1.8.0

Dynamical Systems

New features

  • Allow specification of render engine type in CameraConfig (#17927)

Fixes

  • None

Mathematical Program

New features

  • New termination conditions for IrisInConfigurationSpace (#17987)
  • EvaluatorCost supports linearly transforming the wrapped evaluator (#18030)

Fixes

  • Improve GraphOfConvexSets handling of infeasible problems (#17974)
  • Fix corner case in HPolyhedron::UniformSample (#17982)

Multibody Dynamics and Geometry

New features

  • Allow Meshcat keyboard events to move sliders and click buttons (#17947)
  • Add model directives support to Parser (#17623)
  • Support continuous joint when parsing SDFormat (#17956)
  • Shape specifications offer vectorized constructors (#17983)
  • SceneGraph can report the type name of an existing render engine (#17927)
  • render_gl reports whether the engine is available or not (#17927)
  • Support non-convex meshes for compliant geometries in hydroelastics (#17837)

Fixes

  • Fix dofs-related crash in ScrewJoint (#18039)
  • Fix/improve OBB hierarchy construction (#17937)

Planning

New features

  • Differential IK supports end-effector velocity limits (#18021)
  • Differential IK integrates through kStuck (#18021)

Fixes

  • Clean up formulation of Differential IK (#17977)

Tutorials and examples

  • The manipulation_station now uses DifferentialInverseKinematicsIntegrator (#17899)
  • Switch tutorials hosting to Ubuntu 22.04 (#18000)

Miscellaneous features and fixes

  • Add PointCloud::FlipNormalsTowardPoint (#17922)
  • Add joint sliders and dual geometry capability to show_model (#18044)

pydrake bindings

New features

  • Add repr for RollPitchYaw (#18020)

Fixes

  • Suppress numpy deprecation warnings for dtype=object operations (#18017)
  • Fix solver_options in GraphOfConvexSetsOptions (#18040)

Newly bound

  • pydrake.manipulation.kuka_iiwa.ApplyDriverConfig (#17940)
  • pydrake.manipulation.kuka_iiwa.BuildIiwaControl (#17940, #17984)
  • pydrake.manipulation.kuka_iiwa.IiwaDriver (#17940)
  • pydrake.manipulation.schunk_wsg.ApplyDriverConfig (#17940)
  • pydrake.manipulation.schunk_wsg.BuildSchunkWsgControl (#17940)
  • pydrake.manipulation.schunk_wsg.MakeMultibodyForceToWsgForceSystem (#17940)
  • pydrake.manipulation.schunk_wsg.SchunkWsgController (#17940)
  • pydrake.manipulation.schunk_wsg.SchunkWsgDriver (#17940)
  • pydrake.manipulation.util.ApplyDriverConfig (#17940)
  • pydrake.manipulation.util.ZeroForceDriver (#17940)
  • pydrake.multibody.benchmarks.MassDamperSpringAnalyticalSolution (#18037)
  • pydrake.multibody.optimization.ContactWrenchFromForceInWorldFrameEvaluator (#17988)

Build system

  • Use C++20 on macOS and Ubuntu 22 (#17943)
  • Compile macOS monterey binary releases using Xcode 14 (#18005, #18045)
  • Fix Eigen and LCM include paths in the drake_bazel_installed workflow (#17968, #18008)
  • Fix fmt and spdlog linker paths in the drake_cmake_external workflow (#18027)
  • Clarify license metadata for wheel releases (#17960)

Build dependencies

  • Use Eigen 3.4 in macOS wheel builds (#18011)
  • Upgrade abseil_cpp_internal to latest commit (#18028)
  • Upgrade bazel to latest release 5.3.1 (#18004)
  • Upgrade common_robotics_utilities to latest commit (#18028)
  • Upgrade curl_internal to latest release 7.85.0 (#18035)
  • Upgrade dm_control_internal to latest commit (#18028)
  • Upgrade gz_math_internal to latest release 7.0.2 (#17913)
  • Upgrade gz_utils_internal to latest release 2.0.0 (#17913)
  • Upgrade lcm to latest commit (#18028)
  • Upgrade meshcat to latest commit (#17947)
  • Upgrade mypy_internal to latest release 0.982 (#18022, #18028)
  • Upgrade petsc to latest release 3.18.0 (#17953, #18038)
  • Upgrade qdldl to latest release 0.1.6 (#18034)
  • Upgrade rules_pkg to latest release 0.7.1 (#18028)
  • Upgrade rules_python to latest release 0.13.0 (#18028)
  • Upgrade sdformat_internal to latest release 13.0.1 (#17913, #18028)

Newly-deprecated APIs

  • drake::manipulation::planner::DifferentialInverseKinematicsParameters default ctor (#17977)
  • drake::manipulation::planner::DifferentialInverseKinematicsParameters::get_end_effector_velocity_gain (#17977)
  • drake::manipulation::planner::DifferentialInverseKinematicsParameters::get_timestep (#17977)
  • drake::manipulation::planner::DifferentialInverseKinematicsParameters::get_unconstrained_degrees_of_freedom_velocity_limit (#17977)
  • drake::manipulation::planner::DifferentialInverseKinematicsParameters::set_end_effector_velocity_gain (#17977)
  • drake::manipulation::planner::DifferentialInverseKinematicsParameters::set_timestep (#17977)
  • drake::manipulation::planner::DifferentialInverseKinematicsParameters::set_unconstrained_degrees_of_freedom_velocity_limit (#17977)
  • drake::math::saturate (#17942)
  • drake::multibody::MultibodyPlant::num_multibody_states when called pre-Finalize (#18018)
  • drake::multibody::MultibodyPlant::num_positions when called pre-Finalize (#18018)
  • drake::multibody::MultibodyPlant::num_velocities when called pre-Finalize (#18018)

Removal of deprecated items

  • The @boost external (#17308, #18012)
  • The @meshcat_python external (#17374, #18012)
  • The entire solvers/fbstab library (#17416, #18012)
  • drake/geometry/frame_kinematics_vector.h include path (#17329, #18014)
  • drake::geometry::KinematicsVector::frame_ids (#17329, #18014)
  • drake::lcm::DrakeLcm two-argument constructor (#17337, #18014)
  • drake::multibody::GlobalInverseKinematics.AddWorldPositionConstraint(…Eigen::Isometry3d…) (#17504, #18014)

Notes

This release provides pre-compiled binaries named drake-20221009-{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.