Drake v1.18.0

Back to Release Notes

Announcements

  • An important new tutorial is available, “Basic Hydroelastic Contact” (#19467).
  • The OpenGL-based render engine (MakeRenderEngineGl) is now compatible with multi-threading, e.g., as part of a MonteCarloSimulation (#19426).

Breaking changes since v1.17.0

  • The YAML-serialized HPolyhedron no longer uses trailing underscores on the field names (#19469).

Refer to our Drake Stability Guidelines for our policy on API changes.

Changes since v1.17.0

Dynamical Systems

New features

  • Add RgbdSensorAsync (#19553)

Fixes

  • None

Mathematical Program

New features

  • Add binary operator overloads between a Polynomial and an Expression (#19457)

Fixes

  • OsqpSolver allows for primal-only warm-start (#19499)
  • Fix EqualityConstrainedQPSolver (#19528)
  • Adjust names HPolyhedron::Serialize to match convention (#19469)

Multibody Dynamics and Geometry

New features

  • Add MeshcatPoseSliders (#19513)
  • Add MultibodyPlant::IsVelocityEqualToQDot (#19563)
  • Add SceneGraphInspector::GetAllSourceIds (#19525)
  • Add functions to convert SpatialInertia to equivalent dimensions and pose for a solid uniform-density ellipsoid and box (#19414)

Fixes

  • MeshcatVisualizer sets visibility directly without events (#19578)
  • Make RenderEngineGl intelligently thread-safe (#19426)
  • MultibodyPlant no longer assigns a default perception color (#19533)
  • Add context validation to SceneGraph (#19587)
  • Fix warning when ball joint has an axis (#18966)
  • Fix SpatialInertia::MakeFromCentralInertia() so it does not reject valid inputs (#19581)
  • Fix the functional form of the SapHolonomicConstraint cost, making it consistent with its analytical gradient and Hessian (#19493)

Planning

New features

  • Add a default constructor to all ConvexSet subclasses (#19321)
  • ConvexSet can report when its just a point (#19279)
  • Implement the more general perspective function for Spectrahedron (#19527)
  • Add IrisOptions::Serialize (#19512)

Fixes

  • Locked joints are held fixed during inverse kinematics (#19442)
  • Fail-fast when some controllers that require v == qdot are asked to control a plant that does not meet that criterion (#19563)
  • Fix caching for autodiff in direct collocation (#19468)
  • Fix ConvexSet move operations (#19311)

Tutorials and examples

  • Add tutorial on “Basic Hydroelastic Contact” (#19467)
  • Fix some xml file typos in examples (#19487)

Miscellaneous features and fixes

  • Add basic inertia visualizer (#19210)
  • Update URDFs for Franka with the reflected rotor inertia values (#19500)
  • Make LCM CONTACT_RESULTS from ApplyVisualizationConfig() respect publish_period (#19590)

pydrake bindings

New features

  • Bind pydrake.multibody.tree.JointActuator methods for rotor inertias (#19509)
  • Bind pydrake.multibody.tree.RotationalInertia.CalcPrincipalMomentsAndAxesOfInertia (#19521)
  • Add SaveIrisRegionsYamlFile and LoadIrisRegionsYamlFile (#19612)

Fixes

  • Fix type inference for Value constructor (#19595)

Build system

  • Default clang_format_lint to be enabled in new packages (#19547)
  • By accident for this release only, the DockerHub tag 1.18.0 is based on Ubuntu 20.04 instead of Ubuntu 22.04. Use the tag jammy-1.18.0 instead if you want 22.04.

Build dependencies

  • Upgrade abseil_cpp_internal to latest commit (#19536)
  • Upgrade bazel to latest release 6.2.0 (#19502)
  • Upgrade bazel_skylib to latest release 1.4.2 (#19539)
  • Upgrade curl_internal to latest release curl-8_1_2 (#19536)
  • Upgrade googlebenchmark to latest release v1.8.0 (#19537)
  • Upgrade mypy_internal to latest release v1.3.0 (#19536)
  • Upgrade osqp_internal to latest release v0.6.3 (#19538)
  • Upgrade petsc to latest release v3.19.2 (#19536)
  • Upgrade ros_xacro_internal to latest release 1.14.16 (#19536)
  • Upgrade rules_python to latest release 0.22.0
  • Upgrade sdformat_internal to latest release sdformat13_13.5.0 (#19536)
  • Upgrade tinyobjloader to latest commit (#19536)
  • Upgrade typing_extensions_internal to latest release 4.6.3 (#19536)
  • Upgrade voxelized_geometry_tools to latest commit (#19536)

Newly-deprecated APIs

  • drake::solvers::SolutionResult::kUnknownError (#19450)
  • pydrake.planning.AddDirectCollocationConstraint(timestep=…) (#19470)
  • pydrake.planning.DirectCollocation(minimum_timestep=…, maximum_timestep=…) (#19470)
  • pydrake.planning.DirectTranscription(fixed_timestep=…) (#19470)
  • pydrake.planning.MultipleShooting.fixed_timestep (#19470)
  • pydrake.planning.MultipleShooting.timestep (#19470)
  • pydrake.systems.primitives.DiscreteTimeDelay(delay_timesteps=…) (#19475)

Removal of deprecated items

Notes

This release provides pre-compiled binaries named drake-20230620-{focal|jammy|mac|mac-arm64}.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.