Drake v0.35.0

Back to Release Notes

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.)
  • This release is the first to include PyPI wheels.

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
    • Support for texture maps for obj files (#15788)
    • Add SetAnimation (#15876)
    • Add visualization for Point Clouds (#15851)
    • Add MeshcatCone isa Shape (#15936)
  • 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 Ubuntu install_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.