---
title: Drake v1.9.0
date: 2022-10-09
released: 2022-10-09
---

# Announcements

* Drake now supports the macOS arm64 architecture (the "M1", "M2", ... CPU
  series) without using Rosetta.
  * Drake does not yet provide pypi wheels for arm64 (follow [#17906](_#17906)
    for updates). In the meantime, we recommend that you install from a
    [Direct Download](/from_binary.html#stable-releases) that includes both Python
    and C++ support, using a dedicated virtual environment.
* Preliminary support for ROS 2™ is underway
  [here](https://github.com/RobotLocomotion/drake-ros) ([#17941][_#17941]).
* Differential IK has been substantially improved
  ([#9773][_#9773], [#17977][_#17977], [#18021][_#18021]).
* Drake builds in C++20 mode by default on macOS and Ubuntu 22 ([#17943][_#17943]).
  * Ubuntu 20 is unchanged (C++17 mode).

# Breaking changes since v1.8.0

* We have elected to remove support for Ibex from IRIS; it proved to only be
  useful for exceptionally toy problems and has become a footgun for users that
  turn it on (and wait forever) ([#17987][_#17987]).
  * In particular, the drake::geometry::optimization::IrisOptions::enable_ibex
    flag (which defaulted to false) has been removed.

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

# Changes since v1.8.0

## Dynamical Systems

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

New features

* Allow specification of render engine type in CameraConfig ([#17927][_#17927])

Fixes

* None

## Mathematical Program

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

New features

* New termination conditions for IrisInConfigurationSpace ([#17987][_#17987])
* EvaluatorCost supports linearly transforming the wrapped evaluator ([#18030][_#18030])

Fixes

* Improve GraphOfConvexSets handling of infeasible problems ([#17974][_#17974])
* Fix corner case in HPolyhedron::UniformSample ([#17982][_#17982])

## Multibody Dynamics and Geometry

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

New features

* Allow Meshcat keyboard events to move sliders and click buttons ([#17947][_#17947])
* Add model directives support to Parser ([#17623][_#17623])
* Support continuous joint when parsing SDFormat ([#17956][_#17956])
* Shape specifications offer vectorized constructors ([#17983][_#17983])
* SceneGraph can report the type name of an existing render engine ([#17927][_#17927])
* render_gl reports whether the engine is available or not ([#17927][_#17927])
* Support non-convex meshes for compliant geometries in hydroelastics ([#17837][_#17837])

Fixes

* Fix dofs-related crash in ScrewJoint ([#18039][_#18039])
* Fix/improve OBB hierarchy construction ([#17937][_#17937])

## Planning

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

New features

* Differential IK supports end-effector velocity limits ([#18021][_#18021])
* Differential IK integrates through kStuck ([#18021][_#18021])

Fixes

* Clean up formulation of Differential IK ([#17977][_#17977])

## Tutorials and examples

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

* The manipulation_station now uses DifferentialInverseKinematicsIntegrator ([#17899][_#17899])
* Switch tutorials hosting to Ubuntu 22.04 ([#18000][_#18000])

## Miscellaneous features and fixes

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

* Add PointCloud::FlipNormalsTowardPoint ([#17922][_#17922])
* Add joint sliders and dual geometry capability to show_model ([#18044][_#18044])

## pydrake bindings

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

New features

* Add repr for RollPitchYaw ([#18020][_#18020])

Fixes

* Suppress numpy deprecation warnings for dtype=object operations ([#18017][_#18017])
* Fix solver_options in GraphOfConvexSetsOptions ([#18040][_#18040])

Newly bound

* pydrake.manipulation.kuka_iiwa.ApplyDriverConfig ([#17940][_#17940])
* pydrake.manipulation.kuka_iiwa.BuildIiwaControl ([#17940][_#17940], [#17984][_#17984])
* pydrake.manipulation.kuka_iiwa.IiwaDriver ([#17940][_#17940])
* pydrake.manipulation.schunk_wsg.ApplyDriverConfig ([#17940][_#17940])
* pydrake.manipulation.schunk_wsg.BuildSchunkWsgControl ([#17940][_#17940])
* pydrake.manipulation.schunk_wsg.MakeMultibodyForceToWsgForceSystem ([#17940][_#17940])
* pydrake.manipulation.schunk_wsg.SchunkWsgController ([#17940][_#17940])
* pydrake.manipulation.schunk_wsg.SchunkWsgDriver ([#17940][_#17940])
* pydrake.manipulation.util.ApplyDriverConfig ([#17940][_#17940])
* pydrake.manipulation.util.ZeroForceDriver ([#17940][_#17940])
* pydrake.multibody.benchmarks.MassDamperSpringAnalyticalSolution ([#18037][_#18037])
* pydrake.multibody.optimization.ContactWrenchFromForceInWorldFrameEvaluator ([#17988][_#17988])

## Build system

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

* Use C++20 on macOS and Ubuntu 22 ([#17943][_#17943])
* Compile macOS monterey binary releases using Xcode 14 ([#18005][_#18005], [#18045][_#18045])
* Fix Eigen and LCM include paths in the drake_bazel_installed workflow ([#17968][_#17968], [#18008][_#18008])
* Fix fmt and spdlog linker paths in the drake_cmake_external workflow ([#18027][_#18027])
* Clarify license metadata for wheel releases ([#17960][_#17960])

## Build dependencies

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

* Use Eigen 3.4 in macOS wheel builds ([#18011][_#18011])
* Upgrade abseil_cpp_internal to latest commit ([#18028][_#18028])
* Upgrade bazel to latest release 5.3.1 ([#18004][_#18004])
* Upgrade common_robotics_utilities to latest commit ([#18028][_#18028])
* Upgrade curl_internal to latest release 7.85.0 ([#18035][_#18035])
* Upgrade dm_control_internal to latest commit ([#18028][_#18028])
* Upgrade gz_math_internal to latest release 7.0.2 ([#17913][_#17913])
* Upgrade gz_utils_internal to latest release 2.0.0 ([#17913][_#17913])
* Upgrade lcm to latest commit ([#18028][_#18028])
* Upgrade meshcat to latest commit ([#17947][_#17947])
* Upgrade mypy_internal to latest release 0.982 ([#18022][_#18022], [#18028][_#18028])
* Upgrade petsc to latest release 3.18.0 ([#17953][_#17953], [#18038][_#18038])
* Upgrade qdldl to latest release 0.1.6 ([#18034][_#18034])
* Upgrade rules_pkg to latest release 0.7.1 ([#18028][_#18028])
* Upgrade rules_python to latest release 0.13.0 ([#18028][_#18028])
* Upgrade sdformat_internal to latest release 13.0.1 ([#17913][_#17913], [#18028][_#18028])

## Newly-deprecated APIs

* drake::manipulation::planner::DifferentialInverseKinematicsParameters default ctor ([#17977][_#17977])
* drake::manipulation::planner::DifferentialInverseKinematicsParameters::get_end_effector_velocity_gain ([#17977][_#17977])
* drake::manipulation::planner::DifferentialInverseKinematicsParameters::get_timestep ([#17977][_#17977])
* drake::manipulation::planner::DifferentialInverseKinematicsParameters::get_unconstrained_degrees_of_freedom_velocity_limit ([#17977][_#17977])
* drake::manipulation::planner::DifferentialInverseKinematicsParameters::set_end_effector_velocity_gain ([#17977][_#17977])
* drake::manipulation::planner::DifferentialInverseKinematicsParameters::set_timestep ([#17977][_#17977])
* drake::manipulation::planner::DifferentialInverseKinematicsParameters::set_unconstrained_degrees_of_freedom_velocity_limit ([#17977][_#17977])
* drake::math::saturate ([#17942][_#17942])
* drake::multibody::MultibodyPlant::num_multibody_states when called pre-Finalize ([#18018][_#18018])
* drake::multibody::MultibodyPlant::num_positions when called pre-Finalize ([#18018][_#18018])
* drake::multibody::MultibodyPlant::num_velocities when called pre-Finalize ([#18018][_#18018])

## Removal of deprecated items

* The @boost external ([#17308][_#17308], [#18012][_#18012])
* The @meshcat_python external ([#17374][_#17374], [#18012][_#18012])
* The entire solvers/fbstab library ([#17416][_#17416], [#18012][_#18012])
* drake/geometry/frame_kinematics_vector.h include path ([#17329][_#17329], [#18014][_#18014])
* drake::geometry::KinematicsVector::frame_ids ([#17329][_#17329], [#18014][_#18014])
* drake::lcm::DrakeLcm two-argument constructor ([#17337][_#17337], [#18014][_#18014])
* drake::multibody::GlobalInverseKinematics.AddWorldPositionConstraint(...Eigen::Isometry3d...) ([#17504][_#17504], [#18014][_#18014])

# Notes

This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v1.9.0) named
``drake-20221009-{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> -->
[_#17308]: https://github.com/RobotLocomotion/drake/pull/17308
[_#17329]: https://github.com/RobotLocomotion/drake/pull/17329
[_#17337]: https://github.com/RobotLocomotion/drake/pull/17337
[_#17374]: https://github.com/RobotLocomotion/drake/pull/17374
[_#17416]: https://github.com/RobotLocomotion/drake/pull/17416
[_#17504]: https://github.com/RobotLocomotion/drake/pull/17504
[_#17623]: https://github.com/RobotLocomotion/drake/pull/17623
[_#17837]: https://github.com/RobotLocomotion/drake/pull/17837
[_#17899]: https://github.com/RobotLocomotion/drake/pull/17899
[_#17906]: https://github.com/RobotLocomotion/drake/pull/17906
[_#17913]: https://github.com/RobotLocomotion/drake/pull/17913
[_#17922]: https://github.com/RobotLocomotion/drake/pull/17922
[_#17927]: https://github.com/RobotLocomotion/drake/pull/17927
[_#17937]: https://github.com/RobotLocomotion/drake/pull/17937
[_#17940]: https://github.com/RobotLocomotion/drake/pull/17940
[_#17941]: https://github.com/RobotLocomotion/drake/pull/17941
[_#17942]: https://github.com/RobotLocomotion/drake/pull/17942
[_#17943]: https://github.com/RobotLocomotion/drake/pull/17943
[_#17947]: https://github.com/RobotLocomotion/drake/pull/17947
[_#17953]: https://github.com/RobotLocomotion/drake/pull/17953
[_#17956]: https://github.com/RobotLocomotion/drake/pull/17956
[_#17960]: https://github.com/RobotLocomotion/drake/pull/17960
[_#17968]: https://github.com/RobotLocomotion/drake/pull/17968
[_#17974]: https://github.com/RobotLocomotion/drake/pull/17974
[_#17977]: https://github.com/RobotLocomotion/drake/pull/17977
[_#17982]: https://github.com/RobotLocomotion/drake/pull/17982
[_#17983]: https://github.com/RobotLocomotion/drake/pull/17983
[_#17984]: https://github.com/RobotLocomotion/drake/pull/17984
[_#17987]: https://github.com/RobotLocomotion/drake/pull/17987
[_#17988]: https://github.com/RobotLocomotion/drake/pull/17988
[_#18000]: https://github.com/RobotLocomotion/drake/pull/18000
[_#18004]: https://github.com/RobotLocomotion/drake/pull/18004
[_#18005]: https://github.com/RobotLocomotion/drake/pull/18005
[_#18008]: https://github.com/RobotLocomotion/drake/pull/18008
[_#18011]: https://github.com/RobotLocomotion/drake/pull/18011
[_#18012]: https://github.com/RobotLocomotion/drake/pull/18012
[_#18014]: https://github.com/RobotLocomotion/drake/pull/18014
[_#18017]: https://github.com/RobotLocomotion/drake/pull/18017
[_#18018]: https://github.com/RobotLocomotion/drake/pull/18018
[_#18020]: https://github.com/RobotLocomotion/drake/pull/18020
[_#18021]: https://github.com/RobotLocomotion/drake/pull/18021
[_#18022]: https://github.com/RobotLocomotion/drake/pull/18022
[_#18027]: https://github.com/RobotLocomotion/drake/pull/18027
[_#18028]: https://github.com/RobotLocomotion/drake/pull/18028
[_#18030]: https://github.com/RobotLocomotion/drake/pull/18030
[_#18034]: https://github.com/RobotLocomotion/drake/pull/18034
[_#18035]: https://github.com/RobotLocomotion/drake/pull/18035
[_#18037]: https://github.com/RobotLocomotion/drake/pull/18037
[_#18038]: https://github.com/RobotLocomotion/drake/pull/18038
[_#18039]: https://github.com/RobotLocomotion/drake/pull/18039
[_#18040]: https://github.com/RobotLocomotion/drake/pull/18040
[_#18044]: https://github.com/RobotLocomotion/drake/pull/18044
[_#18045]: https://github.com/RobotLocomotion/drake/pull/18045
[_#9773]: https://github.com/RobotLocomotion/drake/pull/9773
<!-- <end issue links> -->

<!--
  Current oldest_commit ec6cf7cd27253d4d5066f2efc3cde35ced11a2d6 (exclusive).
  Current newest_commit a1a5acb35c41708a2a6f0b00c7391cf79d7a3e05 (inclusive).
-->
