Drake v1.3.0

Back to Release Notes

Announcements

  • Drake now supports Clang 12 on Ubuntu, and no longer supports Clang 9 (#16937).
  • Drake now offers a MultibodyPlant simulation tutorial (#17148).
  • Drake’s multibody model parsers now do a better job of warning about ignored or unsupported input (#16953, #17017, #17060, #17101).
    • In SDFormat, some syntax problems which used to warn now issue errors.
    • In addition, parser warnings can be optionally promoted to errors; see Parser::SetStrictParsing.
  • Drake’s parsing for some mathematical programs is now much faster, including parsing large amount of linear constraints in the symbolic form, and constructing sum-of-squares (sos) problems.

Breaking changes since v1.2.0

  • None

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

Changes since v1.2.0

Dynamical Systems

New features

  • None

Fixes

  • Add controllability and observability for discrete-time systems (#17029)
  • Improve error messages for planning and control input port selection (#17191)

Mathematical Program

New features and fixes

  • Mathematical Program
    • AddQuadraticAsRotatedLorentzConeConstraint takes optional psd_tol (#17125)
    • Allow the user to specify the print out name of the Gram matrix (#17114)
    • AddEqualityConstraintBetweenPolynomials now returns linear equality constraints (#17104)
    • Make2NormSquaredCost should set convex flag to true (#17074)
    • Add LinearConstraint::RemoveTinyCoefficient (#17182)
  • Solvers
    • Ipopt supports kPrintFileName (#17034)
    • MosekSolver returns the solution even the problem is unbounded or infeasible (#17089)
    • MosekSolver returns the dual solution for positive semidefinite constraints (#17106)
  • Symbolics
    • Add Polynomial::Expand (#17156)
    • Determine if a polynomial is even or odd (#17021)
    • Polynomial evaluates a batch of indeterminates (#17065)
    • Speed up MathematicalProgram::NewFreePolynomial (#17011)
    • Speed up computing polynomials using negation instead of subtraction (#17013)
    • Speed up operator+= and operator-= of symbolic::Variables by returning a reference (#17018)
    • Monomial.ToExpression.is_expanded is true (#17201)
  • Geometry
    • Exclude edges with phi=0 constraint from optimization (#17046)
    • Add PontryaginDifference to HPolyhedron (#17056)
    • Make IrisOptions.enable_ibex = false by default (#17198)
    • Clean up vertex labels formatting in GraphOfConvexSets::GetGraphvizString and add missing default for result in the python binding (#17190)
    • Fix GetSolution for x_v in GraphOfConvexSets (#17199)

Multibody Dynamics and Geometry

New features

  • Add hydroelastic force and moment vector visualization (#16913)
  • Add API to set strict parsing (#17017)
  • Add APIs to set the default joint damping (#17151)
  • Add Joint API to retrieve viscous damping (#17019)
  • Implement a Wing class to provide basic aerodynamics (#17027, #17127)
  • Move DifferentiableNorm function to math (#17127)
  • Create methods for relative spatial acceleration to parallel spatial velocity (#17117)

Fixes

  • Warn about unsupported URDF features and modify installed example files to remove unsupported elements that provoke warnings (#16953)
  • Emit errors for invalid SDFormat syntax instead of warnings (#17060)
  • Warn about unsupported SDFormat features and modify installed example files to remove unsupported elements that provoke warnings (#17101)
  • Warn about unsupported joint actuators (#17178)
  • Route package deprecations into the diagnostic channel (#17047)
  • Prefer math::LinearSolver to plain eigen solvers when using autodiff (#17038, #17057)
  • Change actuation port in MultibodyPlant not associated with any model instance to refer to all actuation ports instead of the only actation port (#17059, #17107)
  • Improve error message for algebraic loops involving MultibodyPlant and non-contact forces (#17168)
  • Move RenderEngineVtk into its own directory (#17169)
  • Remove console spam in Run with timeout in meshcat (#17192)
  • Remove StartMeshcat support for Google Colab Python (#16949)

Tutorials and examples

  • Add MultibodyPlant simulation tutorial (#17148)
  • In examples, provide default values for actuation input ports (#17025, #17145)
    • Previously, the AcrobotPlant example crashed if the input port was not properly connected.

Miscellaneous features and fixes

  • None

pydrake bindings

New features

  • None

Fixes

  • Add missing py::return_value_policy::copy on various bound attributes (#17126)
  • Changing Python logging level also changes C++ level (#17069)
  • When using nicely formatted logging, emit “TRACE” not “Level 5” (#17069)

Newly bound

  • pydrake.geometry.Meshcat.OrthographicCamera (#17008)
  • pydrake.geometry.Meshcat.PerspectiveCamera (#17008)
  • pydrake.geometry.Meshcat.SetCamera (#17008)
  • pydrake.math.ToSymmetricMatrixFromLowerTriangularColumns (#17111)
  • pydrake.multibody.Parser.SetStrictParsing (#17181)
  • pydrake.multibody.plant.MultibodyPlant.GetRigidBodyByName (#17042)
  • pydrake.solvers.mathematicalprogram.ClearVariableScaling (#17200)
  • pydrake.solvers.mathematicalprogram.GetVariableScaling (#17200)
  • pydrake.solvers.mathematicalprogram.SetVariableScaling (#17200)
  • pydrake.symbolic.Polynomial.EqualToAfterExpansion (#17128)
  • pydrake.systems.analysis.RegionOfAttraction.use_implicit_dynamics (#17032)

Build system

Build dependencies

  • Upgrade to Clang 12 on Ubuntu (#16937)
  • Upgrade abseil_cpp_internal to latest commit (#17097)
  • Upgrade buildifier to latest release 5.1.0 (#17097)
  • Upgrade common_robotics_utilities to latest commit (#17097)
  • Upgrade dm_control to latest commit (#17097)
  • Upgrade ghc_filesystem to latest release v1.5.12 (#17097)
  • Upgrade rules_pkg to latest release 0.7.0 (#17097)
  • Upgrade rules_python to latest release 0.8.1 (#17097)
  • Upgrade stduuid to latest commit (#17097)
  • Upgrade uwebsockets to latest release v20.14.0 (#17097)
  • Upgrade voxelized_geometry_tools to latest commit (#17097)

Newly-deprecated APIs

  • Drake no longer supports Clang 9 (#16937)
  • pydrake.common.set_log_level (#17069)
  • pydrake.systems.meshcat_visualizer.MeshcatPointCloudVisualizer (#17194)
    • Use pydrake.geometry.MeshcatPointCloudVisualizer instead.
  • pydrake.systems.meshcat_visualizer.MeshcatVisualizer (#17194)
    • Use pydrake.geometry.MeshcatVisualizer instead.
  • drake::geometry::render::RenderEngineVtk (#17169)
    • Use drake::geometry::MakeRenderEngineVtk instead.
  • drake::geometry::render::RenderEngineVtkParams (#17169)
    • Use drake::geometry::RenderEngineVtkParms instead.
  • drake::yaml::YamlReadArchive (#17084)
  • drake::yaml::YamlWriteArchive (#17084)
  • drake::symbolic::Polynomial::EqualToAfterExpansion (#17202)
    • Use my_polynomial.Expand().EqualTo(other_polynomial.Expand()) instead.

Removal of deprecated items

  • drake::manipulation::perception::PoseSmoother (#16343, #17076)
  • drake::multibody::ContactResultsToMeshcat (#16437, #17076)
  • drake::multibody::ContactResultsToMeshcatParams (#16437, #17076)
  • drake::multibody::PackageMap::PopulateUpstreamToDrake (#16434, #17076)
  • drake::solvers::MathematicalProgram::AddMaximizeLogDeterminantSymmetricMatrixCost (#16309, #17076)
  • drake::solvers::MathematicalProgram::NewNonnegativePolynomial (#16375, #17076)
  • drake::systems::RandomSourced alias (#16359, #17076)
  • drake::systems::trajectory_optimization::MultipleShooting no longer inherits from drake::solvers::MathematicalProgram (#16333, #17076)

Notes

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