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 forClone
(#15394).- Users who were extending it directly (rather than using the concrete
Serializer
class) should to implement the new method.
- Users who were extending it directly (rather than using the concrete
- The
drake::geometry::GeometryState
class no longer offersExcludeCollisionsWithin
andExcludeCollisionBetween
(#15348).- This class (though not in an
internal
namespace yet) is documented to be for Drake’s internal use only.
- This class (though not in an
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:
- 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.