Drake v0.16.0

Back to Release Notes

Announcements

  • New tutorial on nonlinear programming (#12744)
  • The C++ Doxygen pages are somewhat less cluttered now (#12795, #12796)

Breaking Changes since v0.15.0

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

  • Drake no longer supports user-defined scalar types (#12657, #12797, #12823, #12816, #12825)
    • See issue #12814 for more details.
  • Removed the ability to override LeafSystem allocation methods (#12792)
    • Subclasses should use the model vector (or model value) APIs to declare state, parameters, etc. instead of overriding these virtual methods.
  • Removed pydrake.examples.AcrobotPlant.CalcPotentialEnergy (#12794)
  • Removed pydrake.examples.AcrobotPlant.CalcKineticEnergy (#12794)
  • Renamed RigidBodyTree-based implementation of drake::manipulation::planner::ConstraintRelaxingIk to drake::manipulation::planner::ConstraintRelaxingIkRbt (#12732)
  • Removed godotengine build rules (#12826)

Changes since v0.15.0:

Dynamical Systems

New features

  • Allow specific cache entries to be initially disabled (#12803)
  • Systems reject ContinuousState that they did not create (#12630)
  • Added math::IsPositiveDefinite (#12813)
  • Added first implementation of general region of attraction code (#12827)

Fixes

  • Diagrams now report correct state counts (#12701)

Mathematical Program

No changes in this release.

Multibody Dynamics

New features

  • Added more MultibodyPlant intermediate calculations to cache
    • Shift vector p_PoBo_W to cache (#12724)
    • spatial acceleration bias Ab_WB and ABA bias Zb_Bo_W (#12716, #12750)
  • Improved error message for invalid spatial inertia (#12766)
  • SpatialInertia support for massless bodies (#12809)
  • Velocity-implicit Euler integrator in progress (#12543, #12740)
  • Added doc about the availability of force/torque sensor (#12791)
  • Added support for derivative of signed distance between a pair of geometries (#12720)
  • Added build system skeleton for forthcoming OpenGL render engine (#12623)
  • Implemented Composite Body Algorithm to compute the mass matrix (#12764)
  • Discrete-mode MultibodyPlant is faster, particularly in cases with branched kinematics, due to incorporation of Composite Body Algorithm in the discrete solver (#12838)
  • New hydroelastic contact model in progress (#12597, #12699, #12751, #12763, #12745, #12730, #12840)
    • Still only experimental
    • Improve performance
    • Improve architecture

Fixes

  • Got rid of accidental heap allocation within CalcArticulatedBodyForceBiasCache() (#12728)
  • Alphabetized targets in geometry/proximity/BUILD (#12748)
  • Quarantined FCL’s haphazard use of const in broadphase (#12746)
  • Fixed catastrophic cancellation in point mass unit inertias (#12758)

Miscellaneous features and fixes

  • Add the capability to visualize collisions in geometry_inspector (#12736)
  • Add operator« to sorted_pair (#12801)
  • Fixed allegro_hand discrete update period (#12734)
  • Improve the simple_gripper example to make it possible to test more integrators (#12742)
  • Added more methods to symbolic::Polynomial (#12835)
  • Fixed accidental quadratic parsing of Yaml (#12830)

pydrake bindings

  • pydrake.systems.framework.System.EvalKineticEnergy (#12794)
  • pydrake.systems.framework.System.EvalPotentialEnergy (#12794)
  • pydrake.systems.primitives.DiscreteDerivative (#12770)
  • pydrake.systems.primitives.StateInterpolatorWithDiscreteDerivative (#12770)
  • Fixed pydrake.solvers.ScsSolverDetails numpy-typed fields (#12737)
  • Fixed pydrake.solvers.SnoptSolverDetails numpy-typed fields (#12737)

Build system and dependencies

  • GCC 7.5 is now Ubuntu’s default compiler (#12845)
  • Added new dependency on OpenGL on Ubuntu only (#12623)
  • Use system Eigen >= 3.3.4, not downloaded bitbucket tag (#12784, #12780)
  • Upgraded bazel minimum and recommended versions to 2.0 and 2.1 respectively (#12729)
  • Upgraded buildifier to latest release 2.0.0 (#12836)
  • Upgraded fcl to latest release (#12762)
  • Upgraded ghc_filesystem to latest release 1.3.0 (#12799)
  • Upgraded styleguide to latest commit (includes cpplint changes) (#12765, #12800, #12776)
  • Fixed missing load() in drake_bazel_installed support (#12605)

Newly-deprecated APIs

  • APIs:
    • drake::examples::kuka_iiwa_arm::EncodeKeyFrames (#12732)
    • drake::examples::kuka_iiwa_arm::IiwaContactResultsToExternalTorque (#12732)
    • drake::examples::kuka_iiwa_arm::VerifyIiwaTree (#12732)
    • drake::manipulation::planner::ConstraintRelaxingIkRbt (#12732)
    • DRAKE_DECLARE_COPY_AND_MOVE_AND_ASSIGN (#12735)
    • DRAKE_DEFINE_DEFAULT_COPY_AND_MOVE_AND_ASSIGN_T (#12735)

Removal of deprecated items

  • APIs
    • drake::geometry::Capsule::get_length (#12781)
    • drake::geometry::Capsule::get_radius (#12781)
    • drake::geometry::Cylinder::get_length (#12781)
    • drake::geometry::Cylinder::get_radius (#12781)
    • drake::geometry::Ellipsoid::get_a (#12781)
    • drake::geometry::Ellipsoid::get_b (#12781)
    • drake::geometry::Ellipsoid::get_c (#12781)
    • drake::geometry::Sphere::get_radius (#12781)
    • pydrake.attic.multibody.rigid_body_tree.RigidBodyTree.number_of_positions (#12781)
    • pydrake.attic.multibody.rigid_body_tree.RigidBodyTree.number_of_velocities (#12781)
    • pydrake.geometry.Capsule.get_length (#12781)
    • pydrake.geometry.Capsule.get_radius (#12781)
    • pydrake.geometry.Cylinder.get_length (#12781)
    • pydrake.geometry.Cylinder.get_radius (#12781)
    • pydrake.geometry.Ellipsoid.get_a (#12781)
    • pydrake.geometry.Ellipsoid.get_b (#12781)
    • pydrake.geometry.Ellipsoid.get_c (#12781)
    • pydrake.geometry.Sphere.get_radius (#12781)
    • DRAKE_SPDLOG_TRACE (#12781)
    • DRAKE_SPDLOG_DEBUG (#12781)
    • drake/multibody/tree/multibody_tree_element.h header (#12781)
  • Examples:

Notes

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