Drake v0.20.0

Back to Release Notes

Announcements

On macOS, Homebrew now symlinks Drake’s compatible version of Python 3 (3.8) into /usr/local/bin/, so it is on the $PATH by default. There is no longer any need to add /usr/local/opt/python@3.8/bin to your $PATH.

The newly-added feature for JavaScript system diagram visualization (#13644) with function name drake::systems::GenerateHtml in C++ and pydrake.systems.framework.GenerateHtml in Python fetches the GoJS graph library in your browser with only an evaluation license. We recommend avoiding this new feature while we sort out the licensing question (#13705).

Breaking changes since v0.19.0

There are no breaking changes that did not undergo a deprecation period.

Changes since v0.19.0:

Dynamical Systems

New features

  • Add SystemVisitor to introspect Diagrams (#13628)
  • Add JavaScript system diagram visualization (#13644)

Fixes

  • None

Mathematical Program

New features

  • Create even or odd degree monomial basis (#13605)
  • SdpaFreeFormat can remove free variables (#13600, #13669, #13685, #13687)
  • GenerateSDPA supports removing free variables (#13636)
  • MathematicalProgram creates even or odd degree polynomials (#13637, #13641)

Fixes

  • None

Multibody Dynamics

New features

  • Add accelerometer sensor (#13501)
  • Add gyroscope sensor (#13604)
  • Enable CalcBiasSpatialAcceleration to have non-world measured-in-frame (#13453)
  • Enable CalcBiasTranslationalAcceleration for non-world measured-in frame (#13587)
  • RenderEngineGl is now available (#13584, #13616, #13626, #13629, #13659)
  • RenderEngineVtk now uses full camera intrinsics (#13655)
  • Extend camera intrinsics into geometry and geometry/render (#13557, #13634, #13635)
  • IllustrationProperties can be updated after parsing (#13598)
  • Allow changing point contact parameters on a per-geometry basis via SceneGraph; these become Systems Framework parameters that live in the Context (#13630, #13686)

Fixes

  • Fix BeamModel’s scalar conversion constructor (#13615)
  • Declare SceneGraph related ports in MultibodyPlant constructor (#13558)
  • Fix MultibodyPlant overflow with >128 contact points (#13676)

Tutorials and examples

  • Use JavaScript system diagram visualization in dynamical_system.ipynb (#13644)
  • Move manipulation station clutter clearing bins lower relative to robot to dramatically improve kinematic feasibility (#13666)

Miscellaneous features and fixes

  • yaml: Add retain_map_defaults to YamlReadArchive::Options (#13590)
  • yaml: Permit writing variant values beyond the 0’th index (#13631)
  • yaml: Correctly write out empty sub-structs (#13679)
  • planar_gripper: Add additional lcm message types (#13554)

pydrake bindings

New features

  • Add ConnectMeshcatVisualizer sugar (#13632)

Fixes

  • Pass animation arguments through to meshcat (#13643)
  • Size the CalcJacobianTranslationalVelocity output matrix correctly (#13653)

Newly bound

  • pydrake.examples.acrobot.AcrobotPlant.get_mutable_parameters (#13556)
  • pydrake.examples.acrobot.AcrobotPlant.get_mutable_state (#13556)
  • pydrake.examples.acrobot.AcrobotPlant.get_parameters (#13556)
  • pydrake.examples.acrobot.AcrobotPlant.get_state (#13556)
  • pydrake.geometry.Capsule (#13559)
  • pydrake.geometry.Ellipsoid (#13559)
  • pydrake.geometry.QueryObject.X_PF (#13559)
  • pydrake.geometry.QueryObject.X_WF (#13559)
  • pydrake.geometry.QueryObject.X_WG (#13559)
  • pydrake.geometry.SceneGraphInspector.GetName (#13559)
  • pydrake.geometry.SceneGraphInspector.GetPoseInParent (#13559)
  • pydrake.geometry.SceneGraphInspector.GetSourceName (#13559)
  • pydrake.geometry.SceneGraphInspector.NumAnchoredGeometries (#13559)
  • pydrake.geometry.SceneGraphInspector.NumDynamicGeometries (#13559)
  • pydrake.geometry.SceneGraphInspector.NumDynamicGeometries (#13559)
  • pydrake.geometry.SceneGraphInspector.NumGeometriesWithRole (#13559)
  • pydrake.geometry.SceneGraphInspector.SourceIsRegistered (#13559)
  • pydrake.multibody.plant.MultibodyPlant.CalcBiasSpatialAcceleration (#13638)
  • pydrake.multibody.plant.MultibodyPlant.CalcBiasTranslationalAcceleration (#13638)
  • pydrake.multibody.plant.MultibodyPlant.CalcCenterOfMassPosition (#13594)
  • pydrake.solvers.MathematicalProgramResult.set_x_val (#13577)

Build system and dependencies

  • On macOS, use Sphinx from Homebrew instead of PyPI (#13551, #13575)
  • On macOS, Drake’s supported python3.8 is now on the default PATH (#13660, #13668)
  • On Ubuntu, the minimum GCC version is now 7.5 (#13611)
  • On Ubuntu, the supported Clang version is now 9 (#13650, #13656)
  • On Ubuntu, GL-related dependencies are more precise and use libOpenGL instead of libGL (#13649)
  • Rebuild VTK and drake-visualizer against OpenGL (#13649)
  • Fix Ubuntu Focal 20.04 to use C++ flavor of nlopt (#13633)
  • Upgrade buildifier to latest release 3.3.0 (#13620)
  • Upgrade fcl to latest commit (#13621)
  • Upgrade fmt to latest release 7.0.1 (#13667)
  • Upgrade googlebenchmark to latest release 1.5.1 (#13623)
  • Upgrade lcm to latest commit (#13622)
  • Upgrade pybind11 fork to latest commit (#13579)
  • Upgrade spdlog to latest release 1.7.0 (#13667)

Newly-deprecated APIs

  • Automatic conversion and interop between RigidTransform/Isometry3 (#13595, #13607, #13608)
    • drake::math::RigidTransform::linear
    • drake::math::RigidTransform::matrix
    • drake::math::RigidTransform::operator Isometry3
  • All functions within manipulation/util/bot_core_lcm_encode_decode.h (#13596)
    • ::EncodeVector3d
    • ::DecodeVector3d
    • ::EncodeQuaternion
    • ::DecodeQuaternion
    • ::EncodePose
    • ::DecodePose
    • ::EncodeTwist
    • ::DecodeTwist
  • manipulation/models/wsg_50_description URDF and meshes (#13693)
  • pydrake.geometry.SceneGraphInspector.GetNameByFrameId (#13559)
  • pydrake.geometry.SceneGraphInspector.GetNameByGeometryId (#13559)

Removal of deprecated items

  • ::Polynomial ([#13610][_#13610])
  • ::Polynomiald (#13610)
  • ::TrigPoly ([#13610][_#13610])
  • ::TrigPolyd (#13610)
  • ::VectorXPoly (#13610)
  • ::VectorXTrigPoly (#13610)
  • drake::examples::kuka_iiwa_arm::ApplyJointVelocityLimits (#13612)
  • drake::examples::kuka_iiwa_arm::EncodeKeyFrames (#13612)
  • drake::symbolic::Expression::ToPolynomial (#13610)
  • drake::systems::AntiderivativeFunction::SpecifiedValues (#13610)
  • drake::systems::InitialValueProblem::ODEFunction (#13610)
  • drake::systems::InitialValueProblem::SpecifiedValues (#13610)
  • drake::systems::ScalarInitialValueProblem::ScalarODEFunction (#13610)
  • drake::systems::ScalarInitialValueProblem::SpecifiedValues (#13610)
  • drake::trajectories::PiecewisePolynomial::Cubic (#13610)
  • drake::trajectories::PiecewisePolynomial::Pchip (#13610)
  • drake::trajectories::PiecewisePolynomial<T>::PolynomialType (#13610)
  • drake::trajectories::PiecewiseQuaternionSlerp::get_quaternion_knots (#13610)

Notes

This release provides pre-compiled binaries named drake-20200717-{bionic|focal|mac}.tar.gz. See Nightly 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.