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.
- This changes some low-level Expression casting operations that (while not in an
- 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.