Announcements
- Drake’s binary releases currently depend on scipy (via apt on Ubuntu, or brew on macOS); that dependency is now deprecated and will be removed on or after 2022-07-01. Users who want to take advantage of pydrake’s scipy.sparse matrices after that date need to add their own dependency on scipy to their project directly. (There are exceedingly few uses of sparse matrices in pydrake, so most users need not take any action.)
- 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.
- The last published package for Ubuntu 18.04 (Bionic) is available here:
- 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 v1.0.0
- None
Refer to our Drake Stability Guidelines for our policy on API changes.
Changes since v1.0.0
Dynamical Systems
New features
- Implement RegionOfAttraction for implicit dynamics (#16704)
- Implement the square-root form of finite-horizon LQR (#16812)
- Add
MultipleShooting::AddConstraintToAllKnotPoints
variants (#16847)
Fixes
- None
Mathematical Program
New features
- Throw error for false formula in MathematicalProgram (#16813)
- Ignore empty constraints in MathematicalProgram (#16825)
- Ignore formulas that are always true in MathematicalProgram (#16854)
- Add ability to create a VPolytope from a non-minimal set of vertices (#16729)
Fixes
- Use longjmp to avoid full-program exits in CsdpSolver (#16736)
- Combine MathematicalProgram::AddConstraint overloads (#16778)
Multibody Dynamics and Geometry
New features
- Add compliant convex mesh support (#16753)
- Add Frame methods CalcRelativeSpatialVelocity() and CalcRelativeSpatialVelocityInWorld() (#16691)
- Update SpatialAcceleration methods to parallel SpatialVelocity (#16699)
- Create new method Frame::CalcSpatialAcceleration() and improve related documentation and tests (#16760)
- Add
MultibodyPlant::GetEffortLowerLimits
(and friends) (#16835) - Progress toward configurable Parser errors and warnings (#16819, #16820)
Fixes
- Fix Meshcat crash on unknown message (#16703)
- Fix Meshcat crash with duplicated controls names (#16726)
- Be sure to print exceptions from Meshcat’s worker thread (#16659)
- Repeated Meshcat::AddButton calls reset the click count (#16808)
- Fix lost visualization elements when disabling/enabling hydroelastic contact plugin (#16852, #16867)
Tutorials and examples
- Add realsense camera geometries to manipulation station (#16719, #16754)
- Remove uses of interactive matplotlib from tutorials to support deepnote/colab (#16837)
- Switch tutorial links to point to Deepnote (#16860)
Miscellaneous features and fixes
- Add support for SinCosSubstitution in Expression (#16690)
- Display matrix/vector variables using subscript for indices in ToLatex (#16720)
- Extract Options struct out of YamlReadArchive (#16801)
pydrake bindings
New features
- Add DefAttributesUsingSerialize helper function (#16718)
Fixes
- Ensure GIL is locked when logging from a C++ worker thread (#16724)
- Use NginX when on Deepnote for Meshcat connections (#16805, #16830)
- Use VPolytope::GetMinimalRepresentation to compute the convex hull in PlanarSceneGraphVisualizer (#16765)
Newly bound
- pydrake.math.BsplineBasis.EvaluateCurve (#16721)
- pydrake.multibody.plant.AddMultibodyPlant (#16717)
- pydrake.multibody.plant.MultibodyPlantConfig (#16717)
- pydrake.systems.analysis.ApplySimulatorConfig (#16717)
- pydrake.systems.analysis.ExtractSimulatorConfig (#16717)
- pydrake.systems.analysis.Simulator.set_publish_at_initialization (#16762)
- pydrake.systems.analysis.Simulator.set_publish_every_time_step with kwargs publish (#16762)
- pydrake.systems.analysis.Simulator.set_target_realtime_rate with kwargs realtime_rate (#16762)
- pydrake.systems.analysis.SimulatorConfig (#16717)
- pydrake.systems.LcmPublisherSystem.Make with kwargs publish_triggers (#16762)
Build system
- Enable split debug symbols on Ubuntu (#16587, #16788)
- Don’t build libsdformat’s URDF parser (#16772)
- Stop using mutable globals from SDFormat (#16791)
- Add interface_deps option to drake_cc_library (#16787)
- Install deprecated contact_results_to_meshcat.h header (#16789)
Build dependencies
- Add abseil-cpp dependency (#16774)
- Build yaml-cpp from source; upgrade to 0.7.0 on all platforms (#16701, #16728, #16756)
- Progress toward removing scipy dependency (#16840)
- Upgrade gurobi to 9.5.1 (which includes macOS arm64 support) (#16716, #16794, #16803)
- Upgrade scs to latest release 3.2.0 (#16686)
Newly-deprecated APIs
- drake::solvers::NonsmoothAugmentedLagrangian (#16798)
- drake::solvers::SystemIdentification (#16741)
- drake::systems::AntiDerivativeFunction::IntegrableFunctionContext (#16739)
- drake::systems::InitialValueProblem::OdeContext (#16739)
- drake::systems::ScalarInitialValueProblem::ScalarOdeContext (#16739)
- drake::TrigPoly (#16741)
Removal of deprecated items
- drake:elastic_modulus in URDF, SDFormat files (#16786)
Notes
This release provides pre-compiled binaries named
drake-20220328-{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.