Announcements
- Drake’s tutorials continue to improve, now including:
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:
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:
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)
- Users who compile Drake from source as a bazel external (as in the drake_bazel_external pattern) should no longer set
- 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.
- Use the
- 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 ofposition=
.
- Use
This release provides
pre-compiled binaries
named drake-20191217-{bionic|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.