Drake v0.18.0

Back to Release Notes

Announcements

On macOS, Drake only supports Python 3.8. Users must read #13097 for upgrade instructions.

When paths are set incorrectly, you will see an error such as this:

ImportError: Python version mismatch: module was compiled for Python 3.8,
but the interpreter version is incompatible: 3.7.7
  • RigidBodyPlant and all of the drake “attic” is scheduled for removal on 2020-09-01 (#12158, #13030).
    • Please see #12158 for details of the timeline, and let us know if this will cause a problem.
  • A new tutorial on AddVisualizationCallback is available (#13211).

Breaking Changes since v0.17.0

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

  • All pydrake.solvers SolverDetails classes are now read-only. (#13152)

Changes since v0.17.0:

Dynamical Systems

New features

  • Trajectories
    • Add Trajectory::has_derivative and EvalDerivative (#13144)
    • Add DiscreteTimeTrajectory (#13157)
    • Improve BsplineBasis and BsplineTrajectory (#13149, #13057, #13158)
    • Add PiecewisePolynomial unary minus (#13109)
    • Add Subsitute(var, Polynomial) with support for multivariate polynomials (#13108)
    • Add Lagrange Interpolating Polynomial and Block(i,j,p,q) (#13269)
  • System
    • Add support for implicit equations (#13068)
    • Add a dependency ticket for all sources excluding input ports (#13088)
  • Controllers
    • FittedValueIteration supports MultibodyPlant + SceneGraph (#13113)
    • Add support for affine terms in finite-horizon LQR (#13272)
    • Add support for Finite Horizon LQR result as a System (#13178)
    • Add Acrobot example of Finite Lorizon LQR (#13250, #13252)

Fixes

  • None

Mathematical Program

New features

  • None

Fixes

  • Fix memcpy undefined behavior in unconstrained optimization (#13111)
  • Fix AutoDiffXd derivatives for min and max (#13112)

Multibody Dynamics

New features

  • Add universal joint and mobilizer (#13055, #13054)
  • Add propeller model (#13135)
  • Add planar four bar linkage example (#13036)
  • Add custom tag in SDF/URDF (#13255)
  • Add get_body_poses_output_port (#13137)
  • Make joint store default value (#13105)

  • New hydroelastic contact model in progress (#13114, #13138, #13140)
    • Still only experimental

Fixes

  • Allow CollectRegisteredGeometries to be called pre-finalize (#13281)

Miscellaneous features and fixes

  • Upgrade quadrotor to Skydio R2 model (#13050)
  • Add lcmtypes for panda command/status (#13163)
  • Move Jaco LCM helpers from examples to manipulation (#13275)
  • Install Drake’s custom drake_visualizer plugins (#13127)

pydrake bindings

Newly bound

  • pydrake.common.kDrakeAssertIsArmed (#13183, #13195)
  • pydrake.geometry.QueryObject.__init__ (#13156)
  • pydrake.multibody.plant.MultibodyPlant.get_body_poses_output_port (#13229)
  • pydrake.multibody.plant.MultibodyPlant.get_contact_penalty_method_time_scale (#13294)
  • pydrake.multibody.plant.MultibodyPlant.set_stiction_tolerance (#13294)
  • pydrake.solvers.gurobi.GurobiSolverDetails (#13152)
  • pydrake.solvers.mosek.MosekSolverDetails (#13151)
  • pydrake.systems.framework.DiagramBuilder.GetMutableSystems (#13270)
  • pydrake.systems.framework.DiagramBuilder.empty (#13270)
  • pydrake.systems.framework.OutputPort.Allocate (#13270)

New features

  • Move the Value and AbstractValue classes from the pydrake.systems.framework module to the pydrake.common.value module (#13217, #13225)

Fixes

  • Add stricter checks and friendlier errors for mathematical program user-functions (#13183)
  • Resolve AbstractValue RTTI linking inconsistency on macOS (#13225)
  • Provide more specific type names in diagnostics (#13194)

Build system and dependencies

  • Use clang-format version 9, not version 6 (#13259, #13260, #13286, #13287)
  • Upgrade buildifier to latest release 3.0.0 (#13198)
  • Upgrade dreal to latest commit (#13133)
  • Upgrade fcl to latest commit (#13274)
  • Upgrade fmt to latest release 6.2.0 (#13200)
  • Upgrade gurobi to 9.0.2 and use GUROBI_HOME instead of GUROBI_PATH (#13049)
  • Upgrade lcm to latest commit (#13199)
  • Upgrade meshcat to latest commit (#13141)
  • Upgrade meshcat_python to latest commit (#13155)
  • Upgrade pycodestyle to latest release 2.5.0 (#13197, #13204)
  • Upgrade semantic_version to latest release 2.8.5 (#13197)
  • Only compile the parts of FCL that we need (#13230)
  • Remove use of octomap (#13230)
  • Remove use of ruby (#13262)
  • Remove use of tinydir (#13180)
  • Disable python imports from /.local during build on Ubuntu (#13190)
  • Fetch sdformat and ignition_math from GitHub, not Bitbucket (#13188)
  • Don’t install unused sdformat data (#13268)
  • Fix bazel third_party include path complaints (#13189)
  • Begin Ubuntu 20.04 (Focal Fossa) accomodations (#13142, #13235, #13303)

Newly-deprecated APIs

Removal of deprecated items

  • DRAKE_NODISCARD in common/drake_nodiscard.h (#13170)
  • drake::examples::kuka_iiwa_arm::ComputeLumpedGripperInertiaInEndEffectorFrame (#13169)
  • drake::examples::kuka_iiwa_arm::CreateTreedFromFixedModelAtPose (#13169)
  • drake::examples::kuka_iiwa_arm::IiwaAndWsgPlantWithStateEstimator (#13169)
  • drake::examples::kuka_iiwa_arm::KukaTorqueController for RigidBodyTree (#13169)
  • drake::examples::kuka_iiwa_arm::OracularStateEstimation (#13169)
  • drake::geometry::Identifier (#13170)
  • drake::geometry::SceneGraphInspector::GetNumAnchoredGeometries (#13170)
  • drake::geometry::SceneGraphInspector::GetNumDynamicGeometries (#13170)
  • drake::multibody::AddMultibodyPlantSceneGraph(builder) (#13170)
  • drake::multibody::MultibodyPlant default constructor (#13170)
  • drake::systems::Simulator::reset_integrator (#13172)
  • drake::systems::System::CheckValidContextT (#13172)
  • drake::systems::SystemBase::CheckValidContext (#13172)
  • drake::systems::SystemBase::DoCheckValidContext (#13172)
  • drake::systems::SystemBase::ThrowIfContextNotCompatible (#13172)
  • pydrake.examples.manipulation_station.ManipulationStation.SetIiwaPosition(q, context) (#13233)
  • pydrake.examples.manipulation_station.ManipulationStation.SetIiwaVelocity(v, context) (#13233)
  • pydrake.examples.manipulation_station.ManipulationStation.SetWsgPosition(q, context) (#13233)
  • pydrake.examples.manipulation_station.ManipulationStation.SetWsgVelocity(v, context) (#13233)
  • pydrake.geometry.FrameId constructor (#13233)
  • pydrake.geometry.GeometryId constructor (#13233)
  • pydrake.geometry.SceneGraph.AddRenderer(renderer_name=) (#13233)
  • pydrake.geometry.SourceId constructor (#13233)
  • pydrake.multibody.AddMultibodyPlantSceneGraph(builder) (#13170)
  • pydrake.multibody.MultibodyPlant zero-argument constructor (#13170)
  • Legacy (“attic”) manipulation/util (#13169)
  • The json external (#13171)
  • The –config=snopt_fortran bazel option (#13171)
  • drake/examples/kuka_iiwa/iiwa_wsg_simulation (#13169)

Notes

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