Drake v0.38.0

Back to Release Notes

Announcements

  • 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.
  • 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.
  • 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.37.0

  • MultipleShooting no longer inherits from MathematicalProgram (#16333)
    • Background: Previously the trajectory optimization base class MultipleShooting derived from MathematicalProgram (MultipleShooting is-a MathematicalProgram). This changes that relationship to MultipleShooting has-a MathematicalProgram (as a member variable). This is the pattern used in much of our other optimization classes, such as InverseKinematics and the (forthcoming) KinematicTrajectoryOptimization. It has a number of advantages, including the ability to create multiple trajectory optimization problems in the same mathematical program.
    • This change makes every effort to provide a deprecation transition, but there could still be cases for which this is a breaking change. For instance, if user code creates a cost/constraint class that takes a MathematicalProgram as an argument, it was previously possible to pass a MultipleShooting instance to that method directly. Now you must pass MultipleShooting.prog().

Changes since v0.37.0

Dynamical Systems

New features

  • MultipleShooting no longer inherits from MathematicalProgram (#16333)

Fixes

  • None

Mathematical Program

New features

  • Add VPolytope from HPolyhedron (#16272)
  • VPolytope implements convex geometry (#16351)
  • GraphOfConvexSets has L1NormCost and LInfNormCost cost options (#16334)
  • GraphOfConvexSets enables removing Vertices and Edges (#16299)
  • AddL2NormCostUsingConicConstraint (#16208)
  • AddNonnegativePolynomialConstraint (#16289)
  • Add UpdateCoefficients to (rotated)LorentzConeConstraint (#16297)
  • Return the new cost and slack variables from AddMaximizeLogDeterminantSymmetricMatrixCost (#16296)
  • Output symbolic::Expression/Formula as a LaTeX string (#16336)

Fixes

  • None

Multibody Dynamics and Geometry

New features

  • Add meshcat option to disable SetTransform during recording (#16271)
  • Add UnitInertia::SolidEllipsoid utility (#16349)
  • Some MultibodyPlant functions that look up element names are now heapless (#16303)
  • Add CalcVolume for basic shapes (#16354)
  • New hydroelastic contact model in progress (#16219, #16224, #16238, #16249, #16257)

Fixes

  • Fix meshcat errors related to the message queue filling up (#16256)
  • Improve error messages during SDFormat parsing (#16347)
  • Remove errant comma when writing a RotationalInertia (#16222)
  • Redirect sdformat console messages to drake logging (#16348)

Tutorials and examples

  • manipulation_station: Fix point cloud simulation by using the same extrinsics and intrinsics for color and depth (#15186)
  • kuka_iiwa: Update position, velocity, and effort limits for KUKA iiwa14 variants (#16003)

pydrake bindings

New features

  • Add pydrake.geometry.StartMeshcat for Deepnote/Colab (#16273)
  • Add documentation advice for exception-triggered pdb debugging (#16227)

Fixes

  • Fix the return type of pydrake.multibody.plant.MultibodyPlant.GetUniqueFreeBaseBodyOrThrow (#16274)

Newly bound

  • pydrake.common.schema.Deterministic.__copy__ (#16261)
  • pydrake.common.schema.DeterministicVectorX.__copy__ (#16261)
  • pydrake.common.schema.Distribution.__copy__ (#16261)
  • pydrake.common.schema.Gaussian.__copy__ (#16261)
  • pydrake.common.schema.GaussianVectorX.__copy__ (#16261)
  • pydrake.common.schema.Rotation.__copy__ (#16261)
  • pydrake.common.schema.Transform.__copy__ (#16261)
  • pydrake.common.schema.UniformDiscrete.__copy__ (#16261)
  • pydrake.common.schema.UniformVectorX.__copy__ (#16261)
  • pydrake.systems.controllers.InverseDynamicsController.get_multibody_plant_for_control (#16254)
  • pydrake.systems.framework.Diagram.GetInputPortLocators (#16352)
  • pydrake.systems.framework.Diagram.connection_map (#16352)
  • pydrake.systems.framework.LeafSystem.CalcUnrestrictedUpdate (#16266)
  • pydrake.systems.framework.LeafSystem.DeclareForcedDiscreteUpdateEvent (#16266)
  • pydrake.systems.framework.LeafSystem.DeclareForcedPublishEvent (#16266)
  • pydrake.systems.framework.LeafSystem.DeclareForcedUnrestrictedUpdateEvent (#16266)
  • pydrake.systems.framework.LeafSystem.DeclareInitializationDiscreteUpdateEvent (#16251)
  • pydrake.systems.framework.LeafSystem.DeclareInitializationPublishEvent (#16251)
  • pydrake.systems.framework.LeafSystem.DeclareInitializationUnrestrictedUpdateEvent (#16251)
  • pydrake.systems.framework.LeafSystem.DeclarePerStepDiscreteUpdateEvent (#16251)
  • pydrake.systems.framework.LeafSystem.DeclarePerStepPublishEvent (#16251)
  • pydrake.systems.framework.LeafSystem.DeclarePerStepUnrestrictedUpdateEvent (#16251)
  • pydrake.systems.framework.LeafSystem.DeclarePeriodicDiscreteUpdateEvent (#16251)
  • pydrake.systems.framework.LeafSystem.DeclarePeriodicPublishEvent (#16251)
  • pydrake.systems.framework.LeafSystem.DeclarePeriodicUnrestrictedUpdateEvent (#16207)
  • pydrake.systems.framework.State.get_mutable_abstract_state (#16207)
  • pydrake.systems.framework.State.get_mutable_discrete_state (#16207)
  • pydrake.systems.framework.System.Accept (#16352)
  • pydrake.systems.framework.SystemVisitor (#16352)
  • pydrake.systems.framework.get_output_port_locator (#16352)

Build system

  • ‘pip install drake’ now supports Python 3.8 on Ubuntu 20 (#16226)
  • ‘pip install drake’ now supports Python 3.9 on Ubuntu 20 (#16308)
  • Offer option to disable drake-visualizer (#16221)

Build dependencies

  • Add libcurl dependency (#16233)
  • Add nlohmann/json dependency (#16231)
  • Add picosha2 dependency (#16232)
  • Upgrade buildifier to latest release 4.2.4 (#16324)
  • Upgrade common_robotics_utilities to latest commit (#16324)
  • Upgrade json to latest release v3.10.5 (#16324)
  • Upgrade petsc to latest release v3.16.3 (#16324)
  • Upgrade rules_python to latest release 0.6.0 (#16324)
  • Upgrade tinyobjloader to latest commit (#16324)
  • Upgrade uwebsockets to latest release v20.9.0 (#16324)
  • Upgrade voxelized_geometry_tools to latest commit (#16324)

Newly-deprecated APIs

  • The use of drake-visualizer on macOS is deprecated.
  • drake::manipulation::perception::PoseSmoother (#16343)
  • drake::solvers::MathematicalProgram::AddMaximizeLogDeterminantSymmetricMatrixCost has been renamed to AddMaximizeLogDeterminantCost (#16309)
  • drake::systems::RandomSourced alias (#16359)
  • drake::systems::trajectory_optimization::MultipleShooting no longer inherits from drake::solvers::MathematicalProgram (#16333)

Removal of deprecated items

  • The installed use of kuka_simulation and kuka_plan_runner (#16061, #16326)
  • Visualizing contact results without a SceneGraph (#16329, #15849)
  • drake::geometry::FrameIndex (#16327, #15778)
  • drake::geometry::MeshFieldLinear::name (#16327, #15847)
  • drake::math::LinearSolve (#16327, #15790)
  • drake::trajectories::PiecewisePose snake_case member functions (#16327, #15786)

Notes

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