Drake v0.33.0

Back to Release Notes

Announcements

  • The geometry module offers a new CollisionFilterManager API.
  • The geometry/optimization module offers many new features.
  • The mathematical program module offers many improvements for debugging.
  • The systems module offers more convenient API sugar.
  • Several modules contain performance improvements.

Breaking changes since v0.32.0

  • The drake/examples/pendulum/Pendulum.urdf now includes a weld joint (#15426).
    • Users who were adding the weld by hand and should remove their weld.
  • The drake::systems::lcm::SerializerInterface has a new pure-virtual method for Clone (#15394).
    • Users who were extending it directly (rather than using the concrete Serializer class) should to implement the new method.
  • The drake::geometry::GeometryState class no longer offers ExcludeCollisionsWithin and ExcludeCollisionBetween (#15348).
    • This class (though not in an internal namespace yet) is documented to be for Drake’s internal use only.

Changes since v0.32.0

Dynamical Systems

New features

  • Add sugar for declaring vector ports by size (#15538)
  • Add sugar for setting/getting Eigen::VectorX data from DiscreteValues (#15539)
  • Support fixed input ports in RegionOfAttraction (#15425)
  • LCM’s SerializerInterface is now cloneable (#15394)
  • Add VectorLogSink system (#15523, #15581) and its VectorLog storage (#15484)

Fixes

  • Improve the performance (i.e., reduce the overhead) of vector-valued ports (#15431, #15432, #15470) and context checks (#15595)
  • Narrow the LcmSubscriberSystem output port dependencies (#15563)

Mathematical Program

New features

  • MathematicalProgram can report its ProgramType enum (#15340)
  • MathematicalProgram allows removing constraints (#15350)
  • AddLorentzConeConstraint allow customization of the eval_type (#15553)
  • Many improvements to configurations for debugging:
    • Improve printing for Expression and Lorentz cone constraints (#15472) (#15475)
    • GurobiSolver now support kPrintToConsole and kPrintFileName options (#15497)
    • GurobiSolver now supports GRBcomputeIIS and GRBwrite options (#15438)
    • IpoptSolver now supports the kPrintToConsole option (#15502)
    • MosekSolver now support kPrintToConsole and kPrintFileName options (#15399)
    • MosekSolver now supports writedata option (#15568)
    • OsqpSolver now supports the kPrintToConsole option (#15501)
    • SnoptSolver now supports the kPrintFileName option (#15493)
    • Solver options offers new sugar to get_print_to_console and get_print_file_name (#15473)
  • Improvements to the new geometry/optimization module:
    • Make Point mutable (#15368)
    • Add ConvexSet::IntersectsWith (#15372)
    • Add HPolyhedron::CartesianPower (#15371)
    • Add GraphOfConvexSets (#15413)
    • Add IrisInConfigurationSpace (#15476)
    • Add SolveShortestPath to GraphOfConvexSets (#15483)
    • Add MinkowskiSum is-a ConvexSet (#15543)
  • Begin adding support for IBEX (#15552)

Fixes

  • Reject NaNs in Constraint bounds (#15391)
  • Reject non-finite values in LinearConstraint A matrix (#15391)
  • GurobiSolver throws when an option is set incorrectly (#15412)
  • MosekSolver throws when an option is set incorrectly (#15411)
  • Fix assertion in AddPositiveSemidefiniteConstraint (#15580)

Multibody Dynamics and Geometry

New features

  • Add new CollisionFilterManager API for manipulating collision filters (#15348)
  • Add ability to remove collision filters (#15415)
  • Allow model_instances in MultibodyPlant CalcJacobianCenterOfMassTranslationalVelocity (#15387)
  • New hydroelastic contact model in progress (#15210, #15358)

Fixes

  • Improve hydroelastic spatial force visualization (#15416)
  • Respect (renderer, accepting) for post-hoc renderers (#15448)
  • Fix Eigen::Block use-after-free (#15451)
  • Fix joint pose computation during sdformat parsing when using frames as joint parent or child (#15290)
  • Fix URDFs included by SDFormat models to be parsed by Drake directly instead of via URDF->SDFormat conversion; now those URDFs can contain custom elements (e.g., drake:joint) and other URDF elements not supported by SDFormat (e.g., transmission) (#15140)
  • SDFormat parsing reports warnings when fed certain kinds of unrecognized elements (#15317)

Tutorials and examples

  • Include weld joint in Pendulum.urdf (#15426)

Miscellaneous features and fixes

  • Add DARE overload that takes Q, R, and N cost matrices (#15352)
  • Add Value::maybe_get_mutable_value (#15418)
  • Give DrakeLcm the ability to defer launching its thread (#15390)
  • Add ExtractDoubleOrThrow for Eigen::MatrixBase (#15518)
  • Give SortedPair compatibility with structured bindings (#15551)

pydrake bindings

New features

  • planar_scenegraph_visualizer uses SceneGraph API to visualize (#15456)
  • Don’t load native code upon ‘import pydrake’ (#15585, #15591)

Fixes

  • Support passing matrix coefficients to ZeroOrderHold and PiecewisePolynomial (#15433) (#15442)
  • Use template Binding_[{Type}] (#15409) (#15457)
  • Allow upcasting to Binding_[Constraint] (#15408)
  • Cease overriding DoPublish inappropriately (#15447)
  • Reorder overall bindings for better Python type signatures (#15410)
  • Preserve return type for mutable and const class methods (#15507)

Newly bound

  • pydrake.multibody.parsing.PackageMap.Remove (#15430)
  • pydrake.multibody.plant.MultibodyPlant.CalcMassMatrix (#15520)
  • pydrake.solvers.mathematicalprogram.MathematicalProgram.AddCost(obj=…) (#15400)
  • pydrake.systems.primitives.TrajectoryLinearSystem (#15397)

Build system

  • Add python-is-python3 and pip to 20.04 Dockerfile (#15586)
  • Improve compatibility with Eigen 3.4 pre-releases (#15452, #15453, #15556, #15580)
  • Enhance lcm.bzl to understand dots within lcm_package names (#15591)

Build dependencies

  • Upgrade gtest to latest release 1.11.0 (#15544)
  • Upgrade libibex-dev to 2.7.4.20210515 (#15531)
  • Upgrade rules_pkg to latest release 0.5.0 (#15548)
  • Upgrade styleguide latest commit (#15547)

Newly-deprecated APIs

  • DRAKE_THROW_UNLESS on a bare pointer (#15513)
  • drake::ExtractDoubleOrThrow on non-standard types (#15518)
  • drake::examples::manipulation_station::ManipulationStation “pose_bundle” output port (#15534)
  • drake::geometry::SceneGraph::ExcludeCollisionsBetween (#15396)
  • drake::geometry::SceneGraph::ExcludeCollisionsWithin (#15396)
  • drake::geometry::SceneGraph::get_pose_bundle_output_port (#15534)
  • drake::geometry::SceneGraphInspector::all_frame_ids (#15525)
  • drake::solvers::MosekSolver::set_stream_logging (#15399)
  • drake::systems::LeafSystem::DeclareOutputPort (only one overload) (#15485)
  • drake::systems::SystemBase::DeclareCacheEntry (only some overloads) (#15443)
  • drake::systems::lcm::TriggerTypeSet (#15581)
  • drake::systems::rendering::FrameVelocity (#15534)
  • drake::systems::rendering::PoseAggregator (#15534)
  • drake::systems::rendering::PoseBundle (#15534)
  • drake::systems::rendering::PoseBundleToDrawMessage (#15534)
  • drake::systems::rendering::PoseVector (#15534)
  • drake::systems::rendering::RenderPoseToGeometryPose (#15534)
  • drake::systems::sensors::RgbdSensor::X_WB_output_port (#15534)
  • drake::systems::sensors::RgbdSensorDiscrete::X_WB_output_port (#15534)
  • expose_all_files.bzl (#15469)
  • pydrake.geometry.SceneGraph.ExcludeCollisionsBetween (#15396)
  • pydrake.geometry.SceneGraph.ExcludeCollisionsWithin (#15396)
  • pydrake.solvers.mathematicalprogram.Binding_BoundingBoxConstraint (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_Constraint (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_Cost (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_EvaluatorBase (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_ExponentialConeConstraint (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_L2NormCost (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_LinearComplementarityConstraint (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_LinearConstraint (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_LinearCost (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_LinearEqualityConstraint (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_LinearMatrixInequalityConstraint (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_LorentzConeConstraint (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_PositiveSemidefiniteConstraint (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_QuadraticCost (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_RotatedLorentzConeConstraint (#15409)
  • pydrake.solvers.mathematicalprogram.Binding_VisualizationCallback (#15409)
  • pydrake.systems.planar_scenegraph_visualizer use of a PoseBundle-valued input port (#15456)

Removal of deprecated items

  • Parsing sdformat data with more than one model (#15540)
  • drake::geometry::SignedDistancePair::is_nhat_BA_W_unique (#15532)
  • drake::geometry::SignedDistanceToPoint::is_grad_w_unique (#15532)
  • lcmtypes_bot2_core (#15515)
  • lcmtypes_robotlocomotion (#15515)

Notes

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