Drake v0.13.0

Back to Release Notes

Announcements

  • Drake’s tutorials continue to improve, now including:
    • Rendering that uses MultibodyPlant (#12388)
    • Optimization using MultibodyPlant, focused on custom evaluators (#12433, #12443)

Breaking Changes

These are breaking changes that did not undergo a deprecation period:

  • Remove all Bazel machinery for protobuf message generation (#12450)
  • Remove drake::systems::EventCollection::Merge (#12357)

Dynamical Systems

New features

  • Usability improvements to SymbolicVectorSystem:
    • Add LinearizeDynamics (#12466)
    • Add dynamics_for_variable (#12421)
    • The setters for state, input, parameter, dynamics, and output offer a std::vector overload, so that a user can write .dynamics({-x_[1], -x_[0] + 3}) (#12421)

Fixes

  • Better error message when cloning a non-root Context (#12391)
  • Improve documentation on integrators (#12350, #12392)
  • Improve documentation on the use of accuracy in the Context (#12428)

Mathematical Program

New features

  • Add MathematicalProgram::indeterminates_index (#12405)
  • Add MathematicalProgram::GetBindingVariableValues (#12490)
  • Add drake::Evaluate for symbolic SparseMatrix (#12406)
  • Add matrix version of drake::symbolic::Environment::insert (#12409)

Fixes

  • Speed up symbolic::Polynomial::decision_variables by storing indeterminates and decision variables as members (#11790)
  • Fix Eigen::SparseMatrix memory leak related to drake::symbolic::Expression (#12459)

Multibody Dynamics

New features

  • Add new generalized acceleration ports to MultibodyPlant (#12354)
  • Implement ABA forward dynamics (#12412, #12462)
  • Add missing operators to SpatialVector (#12436)
  • Provide access to owning MultibodyPlant from any MultibodyElement (#12380)
  • Add a query for signed distance between a single pair of geometries (#12379)
  • Add Ellipsoid parsing from SDF (#12324)
  • Extend Capsule Shape support for proximity queries (#12343, #12332)

Fixes

  • Fix qdot-to-v mapping (and back) for discrete MultibodyPlant (#12355)
  • Improve MultibodyPlant’s TAMSI solver error messages (#12361)
  • Improve documentation of forward dynamics algorithm and notation in MultibodyTree (#12317)
  • Improve documentation of MultibodyTreeElement (#12352)
  • Improve documentation of RollPitchYaw and RotationMatrix (#12345)
  • Improve documentation of adding new Shape sub-classes (#12372)
  • Improve documentation of QueryObject::ComputeContactSurfaces to reflect the current state of hydroelastic contact support (#12413)
  • Remove expensive and unused “referring triangles” from SurfaceMesh (#12438)

New hydroelastic contact model in progress (#12455, #12358, #12348, #12333, #12323, #12378, #12417, #12311, #12347, #12432, #12463)

  • Still only experimental
  • Increase the number and types of shapes supported in the prototype
  • Add more visualization infrastructure

Miscellaneous features and fixes

Visualizer fixes:

  • Update image_show.py for Python 3 (#12422)
  • Avoid negative real time factors (#12444)

pydrake bindings

New features

  • Add pydrake.systems.planar_scenegraph_visualizer (#12218, #12349)
  • Use lcm encoding (not protobuf) for call_python RPCs (#12442)

Fixes

  • Fix pydrake.geometry submodules are part of .all (#12383)
  • Fix pydrake.manipulation.simple_ui window resizing (#12486)
  • Fix System name preservation during scalar conversion (#12429)
  • Fix Sphinx __init__ documentation in Python 3 (#12452)

Newly bound

  • pydrake.geometry.GeometryProperties (#12389)
  • pydrake.geometry.IllustrationProperties (#12389)
  • pydrake.geometry.MakePhongIllustrationProperties (#12389)
  • pydrake.geometry.PerceptionProperties (#12389)
  • pydrake.geometry.ProximityProperties (#12389)
  • pydrake.geometry.QueryObject.ComputeSignedDistancePairClosestPoints (#12408)
  • pydrake.geometry.SceneGraph.AssignRole (#12389)
  • pydrake.geometry.SceneGraph.RendererCount (#12389)
  • pydrake.geometry.SceneGraphInspector.GetIllustrationProperties (#12388)
  • pydrake.geometry.SceneGraphInspector.GetPerceptionProperties (#12388)
  • pydrake.geometry.SceneGraphInspector.GetProximityProperties (#12388)
  • pydrake.geometry.render.RenderLabel cast to to int (#12390)
  • pydrake.multibody.inverse_kinematics.DistanceConstraint (#12346)
  • pydrake.multibody.tree.RevoluteSpring (#12481)
  • pydrake.multibody.tree.default_model_instance (#12389)
  • pydrake.multibody.tree.world_model_instance (#12389)
  • pydrake.solvers.mathematicalprogram.MathematicalProgram.AddConstraint (#12371)
  • pydrake.solvers.mathematicalprogram.MathematicalProgram.AddQuadraticCost (#12375)
  • pydrake.systems.analysis.Simulator.reset_context (#12368)
  • pydrake.systems.framework.System.SetDefaultContext (#12368)

Build system and dependencies

  • Provide nightly binary docker images (#10554, #12364, #12367, #12446)
  • Fix missing pthread linkopts for MOSEK (#12337)
  • Fix variable name in FindTinyXML2 (#12339)
  • Fix ByteSizeLong for Protobuf 3.11.0 or above (#12425)
  • Fix linters’ find_all_sources –all commands (#12369, #12385, #12424)
  • Fix doxygen dot path (#12416)
  • Add pkg-config as binary dependency (#12339)
  • Add pandas as a source dependency (#12328)
  • Add rules_python as a source dependency for python, and define use a toolchain for Python (#12377)
  • Change graphviz from source dependency to binary dependency (#12340)
  • Change jupyter notebook and ipywidgets from source dependencies to binary dependencies in anticipation of installing Drake’s tutorial notebooks (#12461)
  • Upgrade meshcat_python to latest commit (#12365)
  • Upgrade fcl to latest commit (#12395)
  • Upgrade ghc_filesystem to latest release 1.2.8 (#12395)
  • Upgrade ignition_math to latest release 6.4.0 (#12395)
  • Upgrade json to latest release 3.7.3 (#12395)
  • Upgrade lcm to latest commit (#12457)
  • Upgrade meshcat to latest commit (#12395)
  • Upgrade optitrack-driver to latest commit (#12377)
  • Upgrade sdformat to latest release 8.6.0 (#12395)
  • Upgrade semantic_version to latest release 2.8.3 (#12395)
  • Upgrade octomap to latest release 1.9.1 (#12426)
  • Upgrade ghc_filesystem to latest release 1.2.10 (#12426)
  • Upgrade fmt to latest release 6.1.2 (#12426, #12487)
  • Upgrade supported Bazel version to 1.2 (#12396)
    • Users who compile Drake from source as a bazel external (as in the drake_bazel_external pattern) should no longer set build --incompatible_remove_legacy_whole_archive=false in their project’s .bazelrc (#12262)
  • Upgrade supported macOS CMake version to 3.16 (#12396)
  • Upgrade supported macOS Xcode version to 11.2 (#12331)
  • Un-pin sphinx for macOS (#12467)
  • Do not install Python 2.7 on Mac (#12339)
  • Remove all Bazel machinery for protobuf message generation (#12450), specifically:
    • @com_google_protobuf//…
    • @drake//:protobuf
    • @drake//:protobuf_python
    • @drake//:protoc
    • @drake//tools/skylark:drake_proto.bzl
    • @protoc//…
  • Add experimental drake_bazel_installed support (#12402)

Newly-deprecated APIs

  • drake::common::NewPythonVariable (#12442)
  • drake::multibody::MultibodyTreeElement (#12352)
  • drake::geometry::Sphere::get_radius (#12373)
  • drake::geometry::Cylinder::get_radius (#12373)
  • drake::geometry::Cylinder::get_length (#12373)
  • drake::geometry::Capsule::get_radius (#12373)
  • drake::geometry::Capsule::get_length (#12373)
  • drake::geometry::Ellipsoid::get_a (#12373)
  • drake::geometry::Ellipsoid::get_b (#12373)
  • drake::geometry::Ellipsoid::get_c (#12373)

Removal of deprecated APIs

  • drake::common::MatlabRPC (#12431)
    • Use PythonRemoteMessage instead.
  • drake::common::MatlabArray (#12431)
    • Use PythonRemoteData instead.
  • drake::common::ToMatlabArray (#12431)
    • Use ToPythonRemoteData instead.
  • drake::math::RigidTransform::FromMatrix4 (#12431)
    • Use the pose= constructor instead.
  • drake::geometry::ContactSurface::mesh (#12431)
    • Use mesh_W instead.
  • drake::geometry::SurfaceVertex::Transform (#12431)
    • Use TransformInPlace instead.
  • pydrake.multibody.ContactResults.num_contacts (#12431)
    • Use num_point_pair_contacts instead.
  • pydrake.multibody.ContactResults.contact_info (#12431)
    • Use point_pair_contact_info instead.
  • pydrake Eigen.Quaternion.multiply with position= kwargs (#12431)
    • Use vector= instead of position=.

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