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