---
title: Drake v1.18.0
date: 2023-06-20
released: 2023-06-20
---

# Announcements

* An important new tutorial is available, "Basic Hydroelastic Contact"
  ([#19467][_#19467]).
* The OpenGL-based render engine (`MakeRenderEngineGl`) is now compatible with
  multi-threading, e.g., as part of a `MonteCarloSimulation`
  ([#19426][_#19426]).

# Breaking changes since v1.17.0

* The YAML-serialized HPolyhedron no longer uses trailing underscores on the
  field names ([#19469][_#19469]).

Refer to our [Drake Stability Guidelines](/stable.html) for our policy
on API changes.

# Changes since v1.17.0

## Dynamical Systems

<!-- <relnotes for systems go here> -->

New features

* Add RgbdSensorAsync ([#19553][_#19553])

Fixes

* None

## Mathematical Program

<!-- <relnotes for solvers go here> -->

New features

* Add binary operator overloads between a Polynomial and an Expression ([#19457][_#19457])

Fixes

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

## Multibody Dynamics and Geometry

<!-- <relnotes for geometry,multibody go here> -->

New features

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

Fixes

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

## Planning

<!-- <relnotes for planning go here> -->

New features

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

Fixes

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

## Tutorials and examples

<!-- <relnotes for examples,tutorials go here> -->

* Add tutorial on "Basic Hydroelastic Contact" ([#19467][_#19467])
* Fix some xml file typos in examples ([#19487][_#19487])

## Miscellaneous features and fixes

<!-- <relnotes for common,math,lcm,lcmtypes,manipulation,perception,visualization go here> -->

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

## pydrake bindings

<!-- <relnotes for bindings go here> -->

New features

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

Fixes

* Fix type inference for Value constructor ([#19595][_#19595])

## Build system

<!-- <relnotes for cmake,doc,setup,third_party,tools go here> -->

* Default clang_format_lint to be enabled in new packages ([#19547][_#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

<!-- <relnotes for workspace go here> -->

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

## Newly-deprecated APIs

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

## Removal of deprecated items

* On macOS, the `--with-maintainer-only` install_prereqs flag ([#18665][_#18665], [#19307][_#19307], [#19518][_#19518])
* Referencing the world body in MultibodyPlant as "WorldBody" ([#18158][_#18158], [#19516][_#19516])
* drake::EigenSizeMinPreferDynamic ([#18857][_#18857], [#19516][_#19516])
* drake::EigenSizeMinPreferFixed ([#18857][_#18857], [#19516][_#19516])
* drake::MultiplyEigenSizes ([#18857][_#18857], [#19516][_#19516])
* drake::SortedPair::operator<< ([#18892][_#18892], [#19516][_#19516])
* drake::SquareTwistMatrix ([#18857][_#18857], [#19516][_#19516])
* drake::Translation3 ([#18857][_#18857], [#19516][_#19516])
* drake::TwistMatrix ([#18857][_#18857], [#19516][_#19516])
* drake::TwistVector ([#18857][_#18857], [#19516][_#19516])
* drake::WrenchVector ([#18857][_#18857], [#19516][_#19516])
* drake::copyable_unique_ptr::operator<< ([#18771][_#18771], [#19516][_#19516])
* drake::kHomogeneousTransformSize ([#18857][_#18857], [#19516][_#19516])
* drake::kQuaternionSize ([#18857][_#18857], [#19516][_#19516])
* drake::kRotmatSize ([#18857][_#18857], [#19516][_#19516])
* drake::kRpySize ([#18857][_#18857], [#19516][_#19516])
* drake::kSpaceDimension ([#18857][_#18857], [#19516][_#19516])
* drake::kTwistSize ([#18857][_#18857], [#19516][_#19516])
* drake::planning::RobotDiagramBuilder::BuildDiagram ([#18770][_#18770], [#19516][_#19516])
* drake::planning::RobotDiagramBuilder::FinalizePlant ([#18772][_#18772], [#19516][_#19516]) 
* drake::planning::RobotDiagramBuilder::IsPlantFinalized ([#18772][_#18772], [#19516][_#19516]) 
* drake::planning::RobotDiagramBuilder::mutable_builder ([#18772][_#18772], [#19516][_#19516]) 
* drake::planning::RobotDiagramBuilder::mutable_parser ([#18772][_#18772], [#19516][_#19516]) 
* drake::planning::RobotDiagramBuilder::mutable_plant ([#18772][_#18772], [#19516][_#19516]) 
* drake::planning::RobotDiagramBuilder::mutable_scene_graph ([#18772][_#18772], [#19516][_#19516]) 
* drake::solvers::SolverBase constructor with a SolverId-returning functor ([#18880][_#18880], [#19516][_#19516])
* drake::systems::controllers::ZMPPlanner ([#18845][_#18845], [#19516][_#19516])
* pydrake.manipulation.planner ([#18664][_#18664], [#18715][_#18715], [#19516][_#19516])
* pydrake.multibody.plant.CalcJacobianSpatialVelocity(*, p_BP) use p_BoBp_B ([#18876][_#18876], [#19516][_#19516])

# Notes


This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v1.18.0) named
``drake-20230620-{focal|jammy|mac|mac-arm64}.tar.gz``. See [Stable Releases](/from_binary.html#stable-releases) for instructions on how to use them.

Drake binary releases incorporate a pre-compiled version of [SNOPT](https://ccom.ucsd.edu/~optimizers/solvers/snopt/) as part of the
[Mathematical Program toolbox](https://drake.mit.edu/doxygen_cxx/group__solvers.html). Thanks to
Philip E. Gill and Elizabeth Wong for their kind support.

<!-- <begin issue links> -->
[_#18158]: https://github.com/RobotLocomotion/drake/pull/18158
[_#18664]: https://github.com/RobotLocomotion/drake/pull/18664
[_#18665]: https://github.com/RobotLocomotion/drake/pull/18665
[_#18715]: https://github.com/RobotLocomotion/drake/pull/18715
[_#18770]: https://github.com/RobotLocomotion/drake/pull/18770
[_#18771]: https://github.com/RobotLocomotion/drake/pull/18771
[_#18772]: https://github.com/RobotLocomotion/drake/pull/18772
[_#18845]: https://github.com/RobotLocomotion/drake/pull/18845
[_#18857]: https://github.com/RobotLocomotion/drake/pull/18857
[_#18876]: https://github.com/RobotLocomotion/drake/pull/18876
[_#18880]: https://github.com/RobotLocomotion/drake/pull/18880
[_#18892]: https://github.com/RobotLocomotion/drake/pull/18892
[_#18966]: https://github.com/RobotLocomotion/drake/pull/18966
[_#19210]: https://github.com/RobotLocomotion/drake/pull/19210
[_#19279]: https://github.com/RobotLocomotion/drake/pull/19279
[_#19307]: https://github.com/RobotLocomotion/drake/pull/19307
[_#19311]: https://github.com/RobotLocomotion/drake/pull/19311
[_#19321]: https://github.com/RobotLocomotion/drake/pull/19321
[_#19414]: https://github.com/RobotLocomotion/drake/pull/19414
[_#19426]: https://github.com/RobotLocomotion/drake/pull/19426
[_#19442]: https://github.com/RobotLocomotion/drake/pull/19442
[_#19450]: https://github.com/RobotLocomotion/drake/pull/19450
[_#19457]: https://github.com/RobotLocomotion/drake/pull/19457
[_#19467]: https://github.com/RobotLocomotion/drake/pull/19467
[_#19468]: https://github.com/RobotLocomotion/drake/pull/19468
[_#19469]: https://github.com/RobotLocomotion/drake/pull/19469
[_#19470]: https://github.com/RobotLocomotion/drake/pull/19470
[_#19475]: https://github.com/RobotLocomotion/drake/pull/19475
[_#19487]: https://github.com/RobotLocomotion/drake/pull/19487
[_#19493]: https://github.com/RobotLocomotion/drake/pull/19493
[_#19499]: https://github.com/RobotLocomotion/drake/pull/19499
[_#19500]: https://github.com/RobotLocomotion/drake/pull/19500
[_#19502]: https://github.com/RobotLocomotion/drake/pull/19502
[_#19509]: https://github.com/RobotLocomotion/drake/pull/19509
[_#19512]: https://github.com/RobotLocomotion/drake/pull/19512
[_#19513]: https://github.com/RobotLocomotion/drake/pull/19513
[_#19516]: https://github.com/RobotLocomotion/drake/pull/19516
[_#19518]: https://github.com/RobotLocomotion/drake/pull/19518
[_#19521]: https://github.com/RobotLocomotion/drake/pull/19521
[_#19525]: https://github.com/RobotLocomotion/drake/pull/19525
[_#19527]: https://github.com/RobotLocomotion/drake/pull/19527
[_#19528]: https://github.com/RobotLocomotion/drake/pull/19528
[_#19533]: https://github.com/RobotLocomotion/drake/pull/19533
[_#19536]: https://github.com/RobotLocomotion/drake/pull/19536
[_#19537]: https://github.com/RobotLocomotion/drake/pull/19537
[_#19538]: https://github.com/RobotLocomotion/drake/pull/19538
[_#19539]: https://github.com/RobotLocomotion/drake/pull/19539
[_#19547]: https://github.com/RobotLocomotion/drake/pull/19547
[_#19553]: https://github.com/RobotLocomotion/drake/pull/19553
[_#19563]: https://github.com/RobotLocomotion/drake/pull/19563
[_#19578]: https://github.com/RobotLocomotion/drake/pull/19578
[_#19581]: https://github.com/RobotLocomotion/drake/pull/19581
[_#19587]: https://github.com/RobotLocomotion/drake/pull/19587
[_#19590]: https://github.com/RobotLocomotion/drake/pull/19590
[_#19595]: https://github.com/RobotLocomotion/drake/pull/19595
[_#19612]: https://github.com/RobotLocomotion/drake/pull/19612
<!-- <end issue links> -->

<!--
  Current oldest_commit 1ee1e1aac46d783fcd8504ee88c8b28944884d05 (exclusive).
  Current newest_commit 381370dced7e311343a034ca881247c621ae0061 (inclusive).
-->
