---
title: Drake v1.12.0
date: 2023-01-12
released: 2023-01-12
---

# Announcements

* Drake now provides PyPI wheels for Python 3.11 running on Linux
  ([#18468][_#18468]).

# Breaking changes since v1.11.0

* Demote the `InputPortBase` protected constructor out of the Stable API,
  and change its signature ([#18525][_#18525]).
  * We expect that nobody was using this constructor in practice.
* `MultibodyElement` no longer takes the `Body` and `BodyNodeIndex` template
  parameters.  We expect that nobody was using that class in practice, but
  if you were, simply delete the first and last template parameters.
  ([#18460][_#18460]) ([#18526][_#18526])

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

# Changes since v1.11.0

## Dynamical Systems

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

New features

* None

Fixes

* None

## Mathematical Program

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

New features

* `NloptSolver`'s algorithm can be set via `SolverOptions::SetOption`; see the
  documentation for solver options for details. ([#18535][_#18535])
* Add ability to construct an `HPoyhedron` from a VPolytope ([#18493][_#18493])

Fixes

* None

## Multibody Dynamics and Geometry

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

New features

* Add `ComputeQ` to rational forward kinematics ([#18476][_#18476])
* Add ability for `SceneGraph` to change geometry shape ([#18513][_#18513])

Fixes

* Fix misuse of forward-declared classes ([#18538][_#18538])
* Change a user-facing error to throw, not abort ([#18543][_#18543])
* When directly constructing mesh objects (not via SDFormat/URDF parsers), paths
  to mesh geometries are no longer documented as absolute paths; relative
  paths will be resolved to absolute paths based on the working directory. ([#18536][_#18536])

## Planning

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

New features

* Add `CollisionCheckerContext` ([#18428][_#18428])
* Add `BodyShapeDescription` ([#18424][_#18424]) ([#18472][_#18472])
* Add `CollisionCheckerParams` ([#18473][_#18473])

Fixes

* None

## Tutorials and examples

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

* Add carrot scooping video to the drake gallery ([#18489][_#18489])

## Miscellaneous features and fixes

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

* Add sliders for geometry alpha in `MeshcatVisualizer` ([#18454][_#18454]) ([#18469][_#18469]) ([#18481][_#18481])
* Enable manual model reloading in `ModelVisualizer` ([#18488][_#18488])

## pydrake bindings

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

New features

* Rational forward kinematics python bindings ([#18495][_#18495])
* Begin adding typed (i.e., schema-based) YAML loading ([#18564][_#18564])

Fixes

* Add `__repr__` to several classes ([#18529][_#18529])

## Build system

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

New features

* Add Linux Python 3.11 wheel ([#18468][_#18468])

Fixes

* Allow unsupported compilers with warning (CMake) ([#18498][_#18498])

## Build dependencies

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

* Add dependency on OpenAI Gym ([#18440][_#18440])
* Add dependency on a subset of `stable_baselines3` ([#18440][_#18440])
* Upgrade `abseil_cpp_internal` to latest commit ([#18516][_#18516])
* Upgrade `curl_internal` to latest release 7.87.0 ([#18516][_#18516])
* Upgrade `dm_control_internal` to latest commit ([#18516][_#18516])
* Upgrade `googlebenchmark` to 1.7.1 ([#18457][_#18457])
* Upgrade `petsc` to latest release 3.18.3 ([#18516][_#18516])
* Upgrade `rules_python` to latest release 0.16.1 ([#18524][_#18524])
* Upgrade `stable_baselines3_internal` to latest release 1.6.2 ([#18516][_#18516])
* Upgrade `tinyobjloader` to latest commit ([#18516][_#18516])
* Upgrade `usockets` to latest release 0.8.5 ([#18516][_#18516])
* Upgrade `uwebsockets` to latest releases 20.35.0 ([#18516][_#18516])
* Drake is now compatible with NumPy 1.24 ([#18486][_#18486])
* Drake is now compatible with any Gurobi 9.5.x patch version ([#18464][_#18464])
* Build msgpack privately from source ([#18559][_#18559])
* Fix `conex` build with modern compilers ([#18537][_#18537])
* Add `pybind11_strip` to the CMake build to enable `-DCMAKE_BUILD_TYPE=Release` ([#18453][_#18453])
* Avoid accidentally installing OpenBLAS ([#18540][_#18540])

## Newly-deprecated APIs

* The parameter `absolute_pathname` in `pydrake.geometry.Mesh()` and
  `pydrake.geometry.Convex()` has been renamed `pathname` ([#18536][_#18536])
* Deprecate "register w.r.t. geometry" SceneGraph APIs ([#18448][_#18448])
  * `geometry::SceneGraph.RegisterGeometry` (the geometry-as-parent overloads)
  * `geometry::SceneGraphInspector.GetPoseInParent`
* Repair some physical dependency defects in `MultibodyTree` ([#18522][_#18522])
  * Bazel label `//multibody/tree:multibody_element`
* The `@msgpack` external ([#18559][_#18559])

## Removal of deprecated items

* `drake::systems::ApplySimulatorConfig` with simulator argument first ([#18533][_#18533])
* The `@tinyxml2` external ([#18509][_#18509])
* The `@ghc_filesystem` external ([#18509][_#18509])
* The `@json` external ([#18532][_#18532])
* The `@nlopt` external ([#18532][_#18532])
* Require `Finalize()` to be called before state counts are available (remove previous
  deprecated behavior of returning inaccurate counts) ([#18515][_#18515])
  * `multibody::plant::MultibodyPlant.num_positions` when called pre-`Finalize()`
  * `multibody::plant::MultibodyPlant.num_velocities` when called pre-`Finalize()`
  * `multibody::plant::MultibodyPlant.num_mulitbody_states` when called pre-`Finalize()`
* Several Differential Inverse Kinematics parameters ([#18549][_#18549])
  * `manipulation::planner::DifferentialInverseKinmeaticsParameters()` with no arguments.
  * `manipulation::planner::DifferentialInverseKinmeaticsParameters.get_timestep()`
  * `manipulation::planner::DifferentialInverseKinmeaticsParameters.set_timestep()`
  * `manipulation::planner::DifferentialInverseKinmeaticsParameters.get_end_effector_velocity_gain()`
  * `manipulation::planner::DifferentialInverseKinmeaticsParameters.set_end_effector_velocity_gain()`
  * `manipulation::planner::DifferentialInverseKinmeaticsParameters.get_unconstrained_degrees_of_freedom_velocity_limit()`
  * `manipulation::planner::DifferentialInverseKinmeaticsParameters.set_unconstrained_degrees_of_freedom_velocity_limit()`

# Notes

This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v1.12.0) named
``drake-20230112-{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> -->
[_#18424]: https://github.com/RobotLocomotion/drake/pull/18424
[_#18428]: https://github.com/RobotLocomotion/drake/pull/18428
[_#18440]: https://github.com/RobotLocomotion/drake/pull/18440
[_#18448]: https://github.com/RobotLocomotion/drake/pull/18448
[_#18453]: https://github.com/RobotLocomotion/drake/pull/18453
[_#18454]: https://github.com/RobotLocomotion/drake/pull/18454
[_#18457]: https://github.com/RobotLocomotion/drake/pull/18457
[_#18460]: https://github.com/RobotLocomotion/drake/pull/18460
[_#18464]: https://github.com/RobotLocomotion/drake/pull/18464
[_#18468]: https://github.com/RobotLocomotion/drake/pull/18468
[_#18469]: https://github.com/RobotLocomotion/drake/pull/18469
[_#18472]: https://github.com/RobotLocomotion/drake/pull/18472
[_#18473]: https://github.com/RobotLocomotion/drake/pull/18473
[_#18476]: https://github.com/RobotLocomotion/drake/pull/18476
[_#18481]: https://github.com/RobotLocomotion/drake/pull/18481
[_#18486]: https://github.com/RobotLocomotion/drake/pull/18486
[_#18488]: https://github.com/RobotLocomotion/drake/pull/18488
[_#18489]: https://github.com/RobotLocomotion/drake/pull/18489
[_#18493]: https://github.com/RobotLocomotion/drake/pull/18493
[_#18495]: https://github.com/RobotLocomotion/drake/pull/18495
[_#18498]: https://github.com/RobotLocomotion/drake/pull/18498
[_#18509]: https://github.com/RobotLocomotion/drake/pull/18509
[_#18513]: https://github.com/RobotLocomotion/drake/pull/18513
[_#18515]: https://github.com/RobotLocomotion/drake/pull/18515
[_#18516]: https://github.com/RobotLocomotion/drake/pull/18516
[_#18522]: https://github.com/RobotLocomotion/drake/pull/18522
[_#18524]: https://github.com/RobotLocomotion/drake/pull/18524
[_#18525]: https://github.com/RobotLocomotion/drake/pull/18525
[_#18526]: https://github.com/RobotLocomotion/drake/pull/18526
[_#18529]: https://github.com/RobotLocomotion/drake/pull/18529
[_#18532]: https://github.com/RobotLocomotion/drake/pull/18532
[_#18533]: https://github.com/RobotLocomotion/drake/pull/18533
[_#18535]: https://github.com/RobotLocomotion/drake/pull/18535
[_#18536]: https://github.com/RobotLocomotion/drake/pull/18536
[_#18537]: https://github.com/RobotLocomotion/drake/pull/18537
[_#18538]: https://github.com/RobotLocomotion/drake/pull/18538
[_#18540]: https://github.com/RobotLocomotion/drake/pull/18540
[_#18543]: https://github.com/RobotLocomotion/drake/pull/18543
[_#18549]: https://github.com/RobotLocomotion/drake/pull/18549
[_#18559]: https://github.com/RobotLocomotion/drake/pull/18559
[_#18564]: https://github.com/RobotLocomotion/drake/pull/18564
<!-- <end issue links> -->

<!--
  Current oldest_commit d735ad725492253b9dbd71d8aeef6702178b2dfb (exclusive).
  Current newest_commit 643caa184dc645cf47775ed75d7a2052ab723dc7 (inclusive).
-->
