Announcements
- An implementation of Time Optimal Path Parameterization based on Reachability Analysis (TOPPRA) has been added to Drake C++ and Python (#15731, #15799)
- SDFormat 1.9 supported (#15852)
- Provides
//pose[@rotation_format]
attribute to choose between Euler RPY or Quaternions for the rotation component. Angles can now be expressed in degrees using the//pose[@degrees = true]
attribute when using Euler RPY. - Add a new attribute
//include[@merge]
that allows including nested models without introducing new scopes (the contents of the included model are moved without any modification to the parent model). (Note: This currently does not support URDFs parsed via SDFormat composition.)
- Provides
- This release is the first to include PyPI wheels.
- Refer to Installation via Pip for instructions and known limitations.
Breaking changes since v0.34.0
- DRAKE_DEFAULT_COPY_AND_MOVE_AND_ASSIGN now detects mis-uses (#15884)
- The lcmt_panda_command message has changed (#15784)
- ScsSolverDetails member fields have changed (#15886)
- The publish period for visualizers (meshcat, drake_visualizer) has changed (#15850).
- Remove solvers/fast_qp.h and solvers/gurobi_qp.h (#15817)
- Bushing and joint declarations must use frames that have been declared in the same URDF/SDFormat file (#15941)
- This requires the frame name to be part of the currently parsed model instance, and it allows a model which declares a bushing to be loaded multiple times.
- Previously, parsing one file could inadvertently reference a frame added by a previous file. Any workflow that relied on that implicit cross-file integration will now break.
Changes since v0.34.0
Dynamical Systems
New features
- None
Fixes
- SystemBase::DeclareCacheEntry is now protected, per announced deprecation (#15862)
Mathematical Program
New features
- Add CartesianProduct inheriting from ConvexSet (#15571)
Fixes
- None
Multibody Dynamics and Geometry
New features
- Add implementation of Time Optimal Path Parameterization based on Reachability Analysis (TOPPRA) (#15731, #15799)
- Add publish_period option to LCM contact results (#15848)
- Add MultibodyPlantConfig for YAML-based configuration (#15826)
- Add MultibodyPlant::GetFrameIndices (#15787)
- Add heap-free variants of MultibodyPlant::GetPositions(ModelInstanceIndex) and related functions (#15900)
- New hydroelastic contact model in progress (#15903, #15912, #15913, #15932, #15933, #15772, #15773, #15911, #15942)
- Various Meshcat C++ improvements
- Allow parsing of deprecation information from ROS package manifests (#15896)
Fixes
- Fix URDF unconditional warnings to be reported only once (#15783)
- Fix segfault for Meshcat C++ on macOS when exiting a binary while a browser is still connected (#15823)
- Set default visualization publish period to 32 Hz or 64 Hz by default (#15850)
- Replace LDLT in MultibodyPlant with math::LinearSolver for better performance with AutoDiffScalar (#15874)
Tutorials and examples
- Clean up Drake-owned URDF files (#15783)
- Use a smaller time step in Atlas example to avoid discrete solver errors (#15814)
- Fix camera + robot positioning for
rendering_multibody_plant
notebook (#15841) - Ensure a SceneGraph is connected for contact visualization (#15849)
- Ensure AcrobotPlant::get_mutable_parameters are actually mutable (removes spurious const) (#15812)
Miscellaneous features and fixes
- Fix DoMakeDerivative for derivatives of order higher than basis degree (#15939)
- Allow
copyable_unique_ptr
to be usable on forward-declared types (#15906) - Ensure show_model only reads the top-level package_path (#15801)
- Add LinearSolver class (#15818, #15790)
- Clean up PiecewisePose and add python bindings (#15786)
- Provide more useful error messages for piecewise polynomial spline generation (#15795)
- Initialize AutoDiffXd::value field to NaN (#15792)
- Add PiecewisePose::MakeLinear (#15803)
- Provide Google Style Guide-compliant spellings for autodiff utility functions; deprecate old spellings (#15699, #15875)
- Update lcmt_panda_command to be more concise about command mode and which fields are required vs. ignored (#15784)
- Ensure SortedPair is consistent with the wrapper type’s operators (#15907)
- Ensure BsplineTrajectory::EvalDerivative works (#15895)
- Ensure DRAKE_DEFAULT_COPY_AND_MOVE_AND_ASSIGN detects mis-uses (#15884)
pydrake bindings
New features
- Expose
pydrake.common.deprecation.deprecated_callable
as decorator (#15877)
Fixes
- None
Newly bound
- pydrake.autodiffutils.ExtractGradient (#15699)
- pydrake.autodiffutils.ExtractValue (#15699)
- pydrake.autodiffutils.InitializeAutoDiff (#15699)
- pydrake.autodiffutils.InitializeAutoDiffTuple (#15699)
- pydrake.math.RigidTransform.IsExactlyIdentity (#15785)
- pydrake.math.RigidTransform.IsIdentityToEpsilon (#15785)
- pydrake.math.RigidTransform.IsNearlyEqualTo (#15785)
- pydrake.solvers.ibex.IbexSolver (#15793)
- pydrake.solvers.mathematicalprogram.SolverType.kIbex (#15793)
- pydrake.systems.primitives.Integrator.set_integral_value (#15794)
- pydrake.trajectories.PiecewisePose (#15786)
Build system
- Offer a
-y
option for Ubuntuinstall_prereqs
(#15819) - Fix ODR violations in get_new_id bindings (#15857)
- Ensure Drake compiles with XCode 13 on macOS (Apple clang 13) (#15838, #15839)
Build dependencies
- Upgrade bazel_skylib to latest release 1.1.1 (#15885)
- Upgrade buildifier to latest release 4.2.0 (#15880)
- Upgrade fcl to latest commit (#15885)
- Upgrade googlebenchmark to latest release v1.6.0 (#15885)
- Upgrade ignition_math to latest release 6.9.1 (#15885)
- Upgrade libsdformat to latest release 12.0.0 (#15852)
- Upgrade meshcat and meshcat_python to latest commit (#15898)
- Upgrade ros_xacro to latest release 1.13.14 (#15885)
- Upgrade rules_python to latest release 0.4.0 (#15870)
- Upgrade usockets to latest release v0.8.1 (#15885)
- Upgrade uwebsockets to latest release v20.5.0 (#15885)
- Upgrade scs to latest release 3.0.0 (#15886)
Newly-deprecated APIs
- drake::geometry::FrameIndex (#15778)
- drake::geometry::MeshFieldLinear::name (#15847)
- drake::manipulation::planner::DoDifferentialInverseKinematics overloads using Eigen::Isometry3 (#15909)
- drake::math::LinearSolve (#15790)
- drake::math::autoDiffToGradientMatrix (#15699)
- drake::math::autoDiffToValueMatrix (#15699)
- drake::math::initializeAutoDiffGivenGradientMatrix (#15699
- drake::math::initializeAutoDiffTuple (#15699)
Removal of deprecated items
- All overloads for the following functions which do not pass a name
(#15834)
- drake::systems::LeafSystem::DeclareAbstractInputPort
- drake::systems::LeafSystem::DeclareAbstractOutputPort
- drake::systems::LeafSystem::DeclareVectorInputPort
- drake::systems::LeafSystem::DeclareVectorOutputPort
- drake::systems::System::DeclareInputPort
- drake/math/orthonormal_basis.h (#15834)
- drake::systems::SystemScalarConverter::Add (the ConverterFunction overload)
- drake::systems::SystemScalarConverter::AddIfSupported (#15834)
- drake::systems::SystemScalarConverter::ConverterFunction (#15863)
- drake::systems::SystemBase::DeclareCacheEntry is now protected (#15862)
- drake::systems::SystemBase::DeclareCacheEntry (the non-ValueProducer overload) (#15834) (#15863)
- pydrake.math.ComputeBasisFromAxis (#15834)
Notes
This release provides pre-compiled binaries named
drake-20211021-{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.