Drake v1.0.0

Back to Release Notes

Announcements

  • Hydroelastic Contact model is now released!
    • Provides a rich, patch-based contact surface with pressure distribution between contacting objects rather than treating contact as though it occurs at a point.
    • Formerly an experimental feature, now fully supported.
    • Rigid-compliant and compliant-compliant contact both supported. A rigid object can be any shape or mesh (doesn’t even have to be closed); compliant objects are currently limited to primitive shapes.
    • See User Guide.
    • See Elandt, et al. and Masterjohn, et al. for theory.
  • Drake now documents its Stability Guidelines (#16547).
  • Reminder: Drake will no longer support Ubuntu 18.04 “Bionic” as of April 1st, 2022 (#13391).
    • Ubuntu users should plan to upgrade to Ubuntu 20.04 “Focal” before that time.
    • Drake will add support for Ubuntu 22.04 “Jammy” as soon as possible after it’s release date, most likely by June 1st, 2022.
  • Reminder: Drake will no longer support Python 3.6 or Python 3.7 of April 1st, 2022 (#13391).
    • Ubuntu users should plan to upgrade to Ubuntu 20.04 “Focal” before that time (in order to switch to Python 3.8 or Python 3.9).
    • macOS users already use Python 3.9, so will not be affected.
  • Reminder: The use of drake-visualizer on macOS is deprecated and will be removed from Drake on or after April 1st, 2022 (#16386).
    • On Ubuntu 20.04, support of drake-visualizer remains intact.
    • On Ubuntu 18.04, support of drake-visualizer will remain intact as long as our overall support of 18.04 (which ends on April 1st, 2022).

Breaking changes since v0.39.0

  • None

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

Changes since v0.39.0

Dynamical Systems

New features

  • Add DiagramBuilder::ConnectToSame sugar (#16563)
  • Add (optional) gradients to MultilayerPerceptron::BatchOutput (#16572)
  • Add (optional) sin/cos input features to MultilayerPerceptron (#16605)

Fixes

  • Remove dynamic allocations from MultilayerPerceptron (#16564)
  • Allow start_new_change_event() on const Context (#16619)

Mathematical Program

New features

  • Enable linear costs in GraphOfConvexSets (#16680)
  • Add Intersection convex set (#16629)
  • Add PerspectiveQuadraticCost and include it in GraphOfConvexSets cost options (#16679)
  • Add general transformed version of AddPointInNonnegativeScalingConstraints to ConvexSet (#16397)
  • Add two-cycle constraint to Shortest Path formulation (#16397)
  • Add optional solver and solver options to SolveShortestPath (#16616)

Fixes

  • Fix spelling of the kInfeasibleOrUnbounded constant (#16688)
  • Fix arithmetic bug in NonsmoothAugmentedLagrangian (#16689)

Multibody Dynamics and Geometry

New features

  • Enable hydroelastic contacts by default (#16569)
  • Enable AddMultibodyPlantSceneGraph for Expression (#16585)
  • Add in place transform for volume mesh (#16603)
  • Add URL and hostname customization to Meshcat (#16638, #16654)
  • Add MultibodyPlant getter to the Parser (#16655)
  • Add PositionConstraint functions to update lower and upper bounds (#16631)

Fixes

  • Fix mis-parse of drake:ignored_collision_filter_group xml input (#16594)
  • Add cleanup logic for unexpected websocket thread exit (#16670)

Tutorials and examples

  • Install tutorials in binary releases (#16644)
  • Withdraw tutorials from Colab (#16568)
  • Add hydroelastic example of compliant ball on a rigid plate mesh (#15804)
  • Add hydroelastic example of spatula slip (#16668)
  • Remove unused model.config files (#16696)

Miscellaneous features and fixes

  • Add RotationMatrix::IsNearlyIdentity (#16552)
  • Give RandomGenerator efficient default and move constructors (#16633)
  • Add if_then_else overload for Eigen::Vector (#16621)
  • Update meldis to only serve on localhost by default (#16654)

pydrake bindings

New features

  • Add pydrake.common.configure_logging() to set up a nice formatter style (#16577)
  • Remove tkinter-using classes from pydrake.all; pydrake no longer depends on python3-tk (#16656)
  • Support Python subclassing of a pydrake.trajectories.Trajectory (#16684)
  • Make BsplineTrajectory pickle-able (#16698)
  • Make some subclasses of ConvexSet pickle-able (#16628)

Fixes

  • Obey Python configuration to handle metadata formatting (#16577)
  • Only re-route logging to Python if the C++ logging configuration remains unchanged (#16577)
  • Avoid Python deprecation warning “Implicit conversion to integers using __int__” (#16632)

Newly bound

  • pydrake.math.RigidTransform.InvertAndCompose (#16573)
  • pydrake.solvers.mathematicalprogram.MathematicalProgramResult.set_solution_result (#16688)

Build system

  • Allow CMake builds to customize eigen, fmt and spdlog (#16652, #16700)
  • Developer tools for valgrind testing require Ubuntu 20.04 Focal (#16557)

Build dependencies

  • Upgrade bazel_skylib to latest release 1.2.0 (#16685)
  • Upgrade buildifier to latest release 5.0.1 (#16685)
  • Upgrade dm_control to latest commit (#16685)
  • Upgrade github3_py to latest release 3.1.2 (#16685)
  • Upgrade petsc to latest release 3.16.4 (#16685)
  • Upgrade ros_xacro to latest release 1.13.17 (#16685)
  • On Ubuntu, Use libjchart2d-java from apt (#16185)
  • On Ubuntu, offer –without-clang option to install_prereqs (#16622)
  • On Ubuntu, install recommended libomp-9-dev alongside clang-9 (#16622)

Newly-deprecated APIs

  • drake::math::RotationMatrix::IsIdentityToInternalTolerance (#16552)
  • drake::solvers::kInfeasible_Or_Unbounded (#16688)
  • pydrake.multibody.math.SpatialForce.dot kwarg name V_IBp_E (#16350)
  • pydrake.manipulation.simple_ui.JointSliders (#16656)
  • pydrake.manipulation.simple_ui.SchunkWsgButton (#16656)
  • pydrake.multibody.math.SpatialVelocity.ComposeWithMovingFrameVelocity kwarg names p_PoBo_E, V_PB_E (#16350)
  • pydrake.multibody.math.SpatialVelocity.Shift kwarg name p_BqBq_E (#16350)
  • pydrake.multibody.math.SpatialVelocity.dot kwarg name F_Bp (#16350)
  • pydrake.multibody.math.SpatialVelocity.dot kwarg name L_WBp_E (#16350)
  • pydrake.systems.system_sliders.SystemSliders (#16656)

Removal of deprecated items

  • drake::geometry::optimization::IrisInConfigurationSpace with a sample argument (#16037, #16678)
  • drake::lcm::DrakeMockLcm (#16078, #16678)
  • drake::systems::framework::System::EvalEigenVectorInput (#16042, #16678)
  • drake::yaml::YamlReadArchive constructors that accept a YAML::Node (#16057, #16673)
  • The colab installer helper script (#16073, #16678)
  • The use of package URIs other than package://drake/... to refer to Drake resources (#15947, #16674)
  • The use of uncommon primitive types during yaml::YamlReadArchive (#16057, #16673)

Notes

This release provides pre-compiled binaries named drake-20220303-{bionic|focal|mac}.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.