Drake v0.32.0

Back to Release Notes

Announcements

  • None

Breaking changes since v0.31.0

  • The Drake collision filter has been entirely switched to a new mechanism (#15297). This creates a number of small API changes to classes that we do not believe that anyone is relying on.
    • Changes to the underlying collision filter implementation has led to the removal of drake/common/sorted_vector_have_intersection.h
  • Drake has upgraded its libsdformat version; the more recent sdformat libraries are stricter (#15075)
    • Drake now enforces stricter validation of SDFormat attributes. Before, any unrecognized attributes previously printed a warning to the console. Now, unrecognized attributes will cause an exception to be thrown. Please note that unrecognized elements do not yet cause a warning or error to be issued.
  • ExpressionCell’s API has been adjusted to be more const-correct (#15364)
    • This changes some low-level Expression casting operations that (while not in an internal namespace) are internal implementation details unlikely to affect downstream users.
  • Doxygen throws clauses only mention std::exception (#15336)
    • This change loosens the documented exception type of a large number of Drake classes. No actual behaviour is changed and few users should have been relying on precise exception behaviour.
  • Drake Visualizer now uses drake’s native lcmtypes for drawing rather than bot_core’s (#15284)
    • Drake visualizer as shipped no longer supports the bot_core messages for point clouds and lidar (downstream projects with their own lcmtypes are probably already vendoring drake-visualizer anyway).

Changes since v0.31.0

Dynamical Systems

New features

  • Add sugar for declaring state output ports (#15256)
  • The new ValueProducer class offers sugar for declaring calc callbacks for output ports and cache entries (#15198, #15271)

Fixes

  • Clarify that SystemScalarConverter only supports default scalars (#15255)

Mathematical Program

New features

  • Add MathematicalProgram::CheckSatisfied (#15268)
  • MakeFirstAvailableSolver mechanism to automatically create a solver (#15319, #15325)
  • Costs can be removed from MathematicalPrograms (#15311)
  • Add L2NormCost (#15367)
  • MathematicalProgram can be printed as a string for debugging (#15370)
  • Document dReal options (#15384)
  • Establish geometry/optimization to facilitate optimization with and for SceneGraph geometries (#15194, #15285, #15266)
    • Maximum-Volume Inscribed Ellipsoid (#15243)
    • AddPointInNonnegativeScalingConstraints (#15286)
    • Add Point isa ConvexSet (#15302)
    • Add VPolytope isa ConvexSet (#15308)
    • Implements IsBounded and Hyperellipsoid Volumes (#15314)
    • Implements IRIS algorithm (#15315)
    • Python bindings for convex sets and Iris (#15333)
    • Adds HPolyhedron::ChebyshevCenter() (#15355)

Fixes

  • Disable ClpSolver console printing by default (#15254)
  • ScsSolver defaults not to print (#15257)
  • Check the variable type in AddDecisionVariables (#15253)
  • Disable CsdpSolver console printing by default (#15307)
  • Switch default eval_type of LorentzConeConstraint to ConvexSmooth (#15318)
  • More helpful error message in DecomposePSDmatrixIntoXtransposeTimesX (#15365)

Multibody Dynamics and Geometry

New features

  • Add screw mobilizer (#15104)
  • Add screw joint (#15105)
  • Support point-to-ellipsoid results in ComputeSignedDistanceToPoint query (#15232)

Fixes

  • Clarify parse error messages for obj files for proximity geometry (#15373)
  • Fix how parent bodies are resolved for frames attached to joints (#15279)

Tutorials and examples

  • Add an example of robot hands tying shoe laces (#15044)

Miscellaneous features and fixes

  • Add explicit function template instantiation macro on scalars (#15218)
  • Various performance improvements to solving cubic splines (#15248)
  • Change NiceTypeName’s internal caching to be opt-in (#15269)
  • Remove use of deprecated Eigen function (#15321)
  • Add set_log_pattern and –spdlog_pattern to our text logging (#15240)
  • Use [[noreturn]] instead of __attribute__((noreturn)) (#15351)
  • Extend copyable_unique_ptr const correctness (#15346)
  • Prepare uses of TypeSafeIndex for Eigen 3.4 compatibility (#15335)
  • Make reset_after_move be conditionally noexcept (#15362)

pydrake bindings

New features

  • None

Fixes

  • None

Newly bound

  • pydrake.solvers.CsdpSolver.__init__ argument “method” (#15274)
  • pydrake.solvers.SolverId.__hash__ (#15276)
  • pydrake.solvers.SolverId.__eq__ (#15276)
  • pydrake.solvers.SolverId.__ne__ (#15276)
  • pydrake.solvers.QuadraticConstraint (#15313)
  • pydrake.solvers.CdspSolver.id (#15326)
  • pydrake.solvers.DrealSolver.id (#15326)
  • pydrake.solvers.GurobiSolver.id (#15326)
  • pydrake.solvers.IpoptSolver.id (#15326)
  • pydrake.solvers.MosekSolver.id (#15326)
  • pydrake.solvers.NloptSolver.id (#15326)
  • pydrake.solvers.OsqpSolver.id (#15326)
  • pydrake.solvers.ScsSolver.id (#15326)
  • pydrake.solvers.SnoptSolver.id (#15326)
  • pydrake.solvers.CheckSatisfied (#15353)
  • pydrake.solvers.CheckSatisfiedAtInitialGuess (#15353)
  • pydrake.solvers.RegisterBinding for type-erased Binding argument (#15353)
  • pydrake.systems.lcm.LcmScopeSystem (#15309)
  • pydrake.solvers.CommonSolverOption (#15312)
  • pydrake.solvers.Constraint (#15304)
  • pydrake.solvers.LorentzConeConstraint.EvalType (#15304)
  • pydrake.solvers.LorentzConeConstraint.__init__ (#15304)
  • pydrake.solvers.RotatedLorentzConeConstraint.__init__ (#15304)
  • pydrake.solvers.LinearEqualityConstraint.__init__ (#15304)
  • pydrake.solvers.BoundingBoxConstraint.__init__ (#15304)
  • pydrake.solvers.PositiveSemidefiniteConstraint.__init__ (#15304)
  • pydrake.solvers.LinearMatrixInequalityConstraint.__init__ (#15304)
  • pydrake.solvers.ExponentialConeConstraint.__init__ (#15304)
  • pydrake.solvers.QuadraticCost.__init__ (#15304)

Build system

  • Default expected exception type in exception testing to std::exception (#15331)
  • Avoid std::filesystem with GCC 8 (#15265)

Build dependencies

  • Upgrade fcl to latest commit (#15288)
  • Upgrade ghc_filesystem to latest release 1.5.8 (#15293)
  • Upgrade googlebenchmark to latest release 1.5.5 (#15292)
  • Upgrade libsdformat to latest release 11.2.2 (#15301)
  • Upgrade meshcat_python to latest commit (#15296)
  • Upgrade rules_python to latest release 0.3.0 (#15289)
  • Upgrade tinyobjloader to latest commit (#15278)
  • Drake now requires Bazel version 4.0 or greater (#15289)

Newly-deprecated APIs

  • systems::framework::SystemScalarConverter(2 args) (use systems::framework::SystemScalarConverter::MakeWithoutSubtypeChecking instead) (#15267)
  • systems::lcm::ConnectLcmScope (#15282)
  • pydrake.systems.lcm.ConnectLcmScope (#15282)

Removal of deprecated items

  • @semantic_version external (#15275)
  • @tinyxml external (#15275)
  • pydrake.multibody.plant.MultibodyPlant.WeldFrames (#15277)
  • pydrake.multibody.tree.WeldJoint.__init__(4 args) (#15277)
  • pydrake.solvers.mathematicalprogram.NewNonnegativePolynomial(3 args) (#15277)
  • geometry::SignedDistanceToPointWithGradient (#15277)

Notes

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