Drake v0.34.0

Back to Release Notes

Announcements

  • The geometry module offers new support for using Meshcat directly from C++ programs.
  • The geometry module offer new features for collision filtering.
  • The multibody module supports joint locking and unlocking for discrete-mode systems.
  • The solvers::Solve and ChooseBestSolver functions now use different heuristics to choose the most appropriate solver. If a different solver ends up being selected for certain programs, the solution results may change. Be aware of possible disturbances due to this change.
  • On or after 2022-01-01, any unrecognized SDFormat elements that are parsed by Drake will cause an error. At present, they produce warnings. This change can’t easily be tracked by formal deprecation methods, so is noted here for visibility.

Breaking changes since v0.33.0

  • MultibodyPlant SetPositions(.), SetVelocities(.) etc. take an Eigen::Ref rather than a VectorX (#15561)
    • This change is unlikely to impact most users. Some methods which used to accept a VectorX<Variable> must now have their arguments explicitly cast to VectorX<Expression> (e.g. with x.cast<symbolic::Expression>()). See (#15560) for some discussion.
  • The build system removes all uses of pycps (#15756), with these breaking changes:
    • Remove macro cmake_config() from install.bzl
    • Remove py_library @drake//tools/install:cpsutils
    • Remove @pycps external

Changes since v0.33.0

Dynamical Systems

New features

  • Make simulator config functions autodiffable (#15584)
  • Perform MonteCarloSimulation in parallel (#15537)
  • Promote RandomSource to be templated on scalar (#15708)

Fixes

  • Switch to per-context dummy CacheEntryValue for thread safety (#15564)
  • Fix deprecated AddIfSupported scalar conversion helper (#15657)

Mathematical Program

New features

  • Add support for more constraints and costs to IbexSolver (#15607)
  • For Constraint::CheckSatisfied on symbolic variables, return equality formulae when possible (#15612)
  • Support IBEX Solver options (#15612)
  • Choose best solver based on program type (#15541)
  • Add Edge::AddPhiConstraint() (#15572)
  • Add HPolyhedron::CartesianProduct (#15608)

Fixes

  • Fix program type for NLP with linear complementary constraints (#15625)

Multibody Dynamics and Geometry

New features

Fixes

  • Replace an expensive dynamic_cast with a cheap static_cast (#15489)
  • Change MultibodyPlant SetPositions(.), SetVelocities(.) etc. to take an Eigen::Ref rather than a VectorX (#15561)
  • Fix BodyNode::GetJacobianFromArray() to return an empty map when nv=0 (#15686)
  • Fix TAMSI threading hazard (#15690)

Tutorials and examples

Miscellaneous features and fixes

  • Introduce LinearSolve to differentiate Ax=b using implicit function theorem (#15682) (#15752)
  • Add SubscribeAllChannels and get_lcm_url (#15575) (#15653)
  • Fix warnings generated by SDFormat parsing of ycb objects (#15648)
  • Allow caller to clean up directory from temp_directory() (#15698)

pydrake bindings

New features

  • Enable pickling for Inertia types, CoulombFriction, and most Shapes (#15715)

Fixes

  • Support rich comparison operators over various scalar types (#15659)
  • Fix bug in meshcat contact force visualization (#15677)

Newly bound

  • pydrake.common.value.Value[float] (#15641)
  • pydrake.geometry.AddContactMaterial (#15689)
  • pydrake.geometry.AddRigidHydroelasticProperties (#15689)
  • pydrake.geometry.AddSoftHydroelasticProperties (#15689)
  • pydrake.geometry.AddSoftHydroelasticPropertiesForHalfSpace (#15689)
  • pydrake.geometry.ConvertVolumeToSurfaceMesh (#15762)
  • pydrake.geometry.SurfaceFace (#15707)
  • pydrake.geometry.SurfaceFaceIndex (#15707)
  • pydrake.geometry.SurfaceVertexIndex (#15707)
  • pydrake.geometry.VolumeElement (#15707)
  • pydrake.geometry.VolumeElementIndex (#15707)
  • pydrake.geometry.VolumeMesh (#15707)
  • pydrake.geometry.VolumeVertex (#15707)
  • pydrake.geometry.VolumeVertexIndex (#15707)
  • pydrake.multibody.plant.MultibodyPlant.CalcJacobianCenterOfMassTranslationalVelocity (overload with model_instances) (#15691)
  • pydrake.multibody.tree.SpatialInertia.__copy__ (#15676)
  • pydrake.multibody.tree.SpatialInertia.__deepcopy__ (#15676)
  • pydrake.solvers.mixed_integer_optimization_util.IntervalBinning (#15678) (#15687)
  • pydrake.solvers.mixed_integer_rotation_constraint.MixedIntegerRotationConstraintGenerator (#15678) (#15687)

Build system

  • Link ignition-math statically (#15600)
  • Remove all uses of pycps (#15756)

Build dependencies

  • Add msgpack C++ support files (#15618) (#15694)
  • Add uwebsockets release v19.4.0 (#15719)
  • Upgrade bazel to latest release 4.2.1 (#15711)
  • Upgrade common_robotics_utilities to latest commit (#15716)
  • Upgrade googlebenchmark to latest release 1.5.6 (#15718)
  • Upgrade IBEX to latest commit (#15671)
  • Upgrade intel_realsense_ros to latest release 2.3.1 (#15723)
  • Upgrade lcm to latest commit (#15717)
  • Upgrade meshcat to latest commit (#15684)
  • Upgrade meshcat-python to latest commit (#15684)
  • Upgrade ros_xacro to latest release 1.13.12 (#15724)
  • Upgrade rules_pkg to latest release 0.5.1 (#15725)
  • Upgrade tinyobjloader to latest commit v2.0.0-rc9 (#15714)
  • Upgrade voxelized_geometry_tools to latest commit (#15716)

Newly-deprecated APIs

  • The @jsoncpp external (#15639)
  • common/eigen_stl_types.h (#15639)
  • drake::math::DiscardGradient specializations for Eigen::Transform (#15697)
  • drake::math::DiscardZeroGradient: specializations for Eigen::Transform (#15697)
  • drake::math::gradientMatrixToAutoDiff (#15658)
  • drake::math::resizeDerivativesToMatchScalar (#15658)
  • drake::multibody::Parser: allowing unrecognized elements in SDFormat files (#15672) (#15680)
  • drake::systems::LogOutput (#15594)
  • drake::systems::SignalLog (#15594)
  • drake::systems::SignalLogger (#15594)
  • DRAKE_ASSERT on a bare pointer (#15597)
  • libdrake_ignition_math.so (#15600)
  • manipulation/schunk_wsg/schunk_buttons.py helper script (#15639)

Removal of deprecated items

  • drake::solvers::AddL2NormCost (#15701)
  • drake::solvers::MakeL2NormCost (#15701)
  • drake::systems::EventCollection::add_discrete_update_event (#15701)
  • drake::systems::EventCollection::add_event (#15701)
  • drake::systems::EventCollection::add_publish_event (#15701)
  • drake::systems::EventCollection::add_unrestricted_update_event (#15701)
  • drake::systems::RandomSource, non-templated version (#15708)
  • drake::systems::sensors::InvalidDepth (#15701)
  • drake::systems::sensors::Label (#15701)
  • drake::systems::System::ValidateChildOfContext (#15701)

Notes

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