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).
- On Ubuntu 20.04, support of
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.