---
title: Drake v1.23.0
date: 2023-11-17
released: 2023-11-17
---

# Announcements

* Drake now offers experimental support for the
  [Clarabel](https://github.com/oxfordcontrol/Clarabel.cpp)
  solver ([#20375][_#20375], [#20536][_#20536], [#20475][_#20475]).
  * Our
    [ClarabelSolver](https://drake.mit.edu/doxygen_cxx/classdrake_1_1solvers_1_1_clarabel_solver.html)
    wrapper supports quadratic/linear costs and
    linear/second-order/exponential-cone/positive-semidefinite constraints.
  * This feature is not available in our pre-compiled binary releases. To try it,
    you must build from source using Bazel with `--define=WITH_CLARABEL=ON`.
  * ChooseBestSolver doesn't select ClarabelSolver. To try it, you must invoke
    the solver directly.
* Per our support policy schedule, macOS Monterey on arm64 is no longer
  supported ([#20511][_#20511]).

# Breaking changes since v1.22.0

* None

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

# Changes since v1.22.0

## Dynamical Systems

New features

* Provide image-processing systems in C++ ([#20488][_#20488])
* Update ImageWriter to add forced publish event ([#20460][_#20460])

Fixes

* None

## Mathematical Program

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

New features

* Add ClarabelSolver ([#20375][_#20375], [#20536][_#20536], [#20475][_#20475])
* Add AffineBall as subclass of ConvexSet to represent bounded ellipsoidal convex sets that may not be full-dimensional ([#20038][_#20038])
* Allow linear constraints to be sparse ([#20361][_#20361])
* Allow conversion between Hyperellipsoid and AffineBall ([#20040][_#20040])
* Add ability to tighten and relax positive semi-definite (PSD) constraints as diagonally dominant constraints (DD), scaled diagonally dominant (SDD) constraints, and their dual ([#20398][_#20398])
* Add log(det(X)) >= lower to MathematicalProgram ([#20411][_#20411])
* Add AffineBall::MinimumVolumeCircumscribedEllipsoid (#20399) ([#20399][_#20399])
* Add bounding_region to IrisOptions ([#20417][_#20417])
* Add MonomialBasis for a map from Variables to its degree ([#20523][_#20523])

Fixes

* None

## Multibody Dynamics and Geometry

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

New features

* Add per model instance net actuation output port ([#20549][_#20549])
* Support .vtk meshes in CalcSpatialInertia() ([#20539][_#20539])
* Allow some uses of surface mesh or convex hull for VTK volume mesh files ([#20278][_#20278])
* Add support for using SDFormat merge-includes with custom parsed models ([#16727][_#16727])
* Use environment maps in RenderEngineVtk ([#20385][_#20385])
* Implement net actuation output port for MultibodyPlant ([#20421][_#20421])
* Add parsing of JointActuator PD controller gains ([#20497][_#20497])
* Add parsing of custom drake:mimic tag for SDFormat ([#20503][_#20503], [#20551][_#20551])

Fixes

* Fix MuJoCo parser joint kinematics ([#20414][_#20414])
* Fix actuation input ordering to be ordered by joint actuator index ([#20212][_#20212])
* Support drake:joint involving links in nested models ([#20381][_#20381])
* Make coordinate numbering for Weld mobilizers consistent with other mobilizers ([#20428][_#20428])
* Upgrade meshcat to latest commit ([#20442][_#20442])
* Fix point contact results store incorrect geometry data ([#20378][_#20378])
* RenderEngineVtk throws on errors ([#20461][_#20461])
* Apply upstream VTK changes for a textured capsule ([#20492][_#20492])
* Correct, test, and document FlattenModelDirectives ([#20438][_#20438])
* Make weld constraint use active status ([#20530][_#20530])
* Bugfix model directives ModelInstanceInfo offsets ([#20513][_#20513])

## Planning

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

New features

* Add max clique solver interface and MIP (mixed integer programming)-based max clique solver ([#20401][_#20401])
* Add continuity constraints to GcsTrajectoryOptimization ([#20441][_#20441])
* Switch CollisionChecker and VisibilityGraph to use CRU parallel-for API to support non-OpenMP parallel operations ([#20528][_#20528])

Fixes

* None

## Tutorials and examples

<!-- <relnotes for examples,tutorials go here> -->
* Adjust tutorial launcher to accommodate Jupyter 6 and 7 ([#20408][_#20408])

## Miscellaneous features and fixes

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

* Improve PointCloud::VoxelizedDownSample speed ([#20476][_#20476])
* Retain default YAML values when parsing a variant ([#20391][_#20391])
* Fix autodiff gradient in RotationMatrix::NormalizeOrThrow() ([#20406][_#20406])
* Add rotor inertias to iiwa7 model, fix rotation of inertias for link 2 and link 4 ([#20420][_#20420])
* Ensure MakeArmControllerModel uses same gravity as incoming plant ([#20513][_#20513])

## pydrake bindings

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

New features

* Add basic conversion to/from SymPy ([#20117][_#20117], [#20415][_#20415])
* Bind all image types, ImageFileFormat, and PixelScalar ([#20502][_#20502], [#20508][_#20508])

Fixes

* Fix CompositeTrajectory binding to correctly derive from PiecewiseTrajectory ([#20407][_#20407])
* Only ship `*.pyi` typestubs for native code, not pure code ([#20403][_#20403])
* Avoid stubgen timeouts when building from source ([#20403][_#20403])
* Consolidate modules to decrease download size by about 5% ([#20465][_#20465])

## Build system

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

* Identify mismatched clang-format-{on,off} comments via linting tools ([#20396][_#20396])
* Remove macOS Monterey arm64 support ([#20511][_#20511])
* Precompiled binaries for stable releases now provide the version number instead of the date ([#20532][_#20532])

## Build dependencies

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

* Build libjpeg_turbo_internal from source ([#20343][_#20343])
* Upgrade abseil_cpp_internal to latest commit ([#20469][_#20469])
* Upgrade bazel to latest release 6.4.0 ([#20410][_#20410])
* Upgrade build_bazel_apple_support to latest release 1.11.1 ([#20469][_#20469])
* Upgrade buildifier to latest release 6.4.0 ([#20543][_#20543])
* Upgrade clp_internal to latest release 1.17.9 ([#20469][_#20469])
* Upgrade coinutils_internal to latest release 2.11.10 ([#20469][_#20469])
* Upgrade common_robotics_utilities to latest commit ([#20374][_#20374], [#20387][_#20387], [#20528][_#20528])
* Upgrade crate_universe to latest releases ([#20474][_#20474])
  * Upgrade crate__num-traits to 0.2.17
  * Upgrade crate__proc-macro2 to 1.0.69
  * Upgrade crate__syn to 2.0.38
  * Upgrade crate__thiserror to 1.0.50
  * Upgrade crate__thiserror-impl to 1.0.50
* Upgrade curl_internal to latest release 8.4.0 ([#20472][_#20472])
* Upgrade dm_control_internal to latest release 1.0.15 ([#20469][_#20469])
* Upgrade ipopt_internal_fromsource to latest release 3.14.13 ([#20525][_#20525])
* Upgrade mypy_internal to latest release 1.6.1 ([#20469][_#20469])
* Upgrade platforms to latest release 0.0.8 ([#20469][_#20469])
* Upgrade pybind11 fork to latest commit, merging with upstream 2.11.1 ([#20362][_#20362], [#20524][_#20524])
* Upgrade pycodestyle to latest release 2.11.1 ([#20469][_#20469])
* Upgrade python_rules to latest release 0.26.0 ([#20473][_#20473])
* Upgrade rules_rust to latest release 0.30.0 ([#20471][_#20471])
* Upgrade suitesparse_internal to latest release 7.3.0 ([#20469][_#20469])
* Upgrade voxelized_geometry_tools to latest commit ([#20374][_#20374], [#20387][_#20387], [#20528][_#20528])

## Newly-deprecated APIs

* ``drake::multibody::MultibodyPlant::GetMutablePositions`` ([#20424][_#20424])
  * Use ``GetPositions`` and ``SetPositions`` instead
* ``drake::multibody::MultibodyPlant::GetMutablePositionsAndVelocities`` ([#20424][_#20424])
  * Use ``GetPositionsAndVelocities`` and ``SetPositionsAndVelocities`` instead
* ``drake::multibody::MultibodyPlant::GetMutableVelocities`` ([#20424][_#20424])
  * Use ``GetVelocities`` and ``SetVelocities`` instead
* ``drake::multibody::Body::floating_velocities_start`` ([#20454][_#20454])
  * Use ``floating_velocities_start_in_v`` instead
* ``@libjpeg`` external ([#20343][_#20343])
  * Please vendor your own dependency.

## Removal of deprecated items

* ``@conex`` ([#20463][_#20463])
* ``@csdp`` ([#20463][_#20463])
* ``@optitrack_driver`` ([#20463][_#20463])
* ``@petsc`` ([#20463][_#20463])
* ``@picosha2`` ([#20463][_#20463])
* ``@rules_pkg`` ([#20463][_#20463])
* ``@tinyobjloader`` ([#20463][_#20463])
* ``@usockets`` ([#20463][_#20463])
* ``@uwebsockets`` ([#20463][_#20463])
* ``drake::geometry::optimization::GraphOfConvexSets::AddEdge`` (VertexId overload only) ([#20463][_#20463])
* ``drake::geometry::optimization::GraphOfConvexSets::RemoveEdge`` (EdgeId overload only) ([#20463][_#20463])
* ``drake::geometry::optimization::GraphOfConvexSets::RemoveVertex`` (VertexId overload only) ([#20463][_#20463])
* ``drake::geometry::optimization::GraphOfConvexSets::SolveShortestPath`` (VertexId overload only) ([#20463][_#20463])
* ``drake::multibody::Body::get_num_flexible_positions`` ([#20427][_#20427])
* ``drake::multibody::Body::get_num_flexible_velocities`` ([#20427][_#20427])
* ``drake::multibody::MinimumDistanceConstraint::minimum_distance`` ([#20463][_#20463])
* ``drake::solvers::FindNonconvexQuadraticCost`` ([#20463][_#20463])
* ``drake::solvers::MinimumValueConstraint::minimum_value`` ([#20463][_#20463])
* ``drake::systems::sensors::OptitrackReceiver`` ([#20463][_#20463])
* ``drake::systems::sensors::OptitrackSender`` ([#20463][_#20463])
* ``pydrake.manipulation.kuka_iiwa`` ([#20463][_#20463])
* ``pydrake.manipulation.schunk_wsg`` ([#20463][_#20463])
* ``pydrake.manipulation.util`` ([#20463][_#20463])

# Notes


This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v1.23.0) named
``drake-1.23.0-{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> -->
[_#16727]: https://github.com/RobotLocomotion/drake/pull/16727
[_#20038]: https://github.com/RobotLocomotion/drake/pull/20038
[_#20040]: https://github.com/RobotLocomotion/drake/pull/20040
[_#20117]: https://github.com/RobotLocomotion/drake/pull/20117
[_#20212]: https://github.com/RobotLocomotion/drake/pull/20212
[_#20278]: https://github.com/RobotLocomotion/drake/pull/20278
[_#20343]: https://github.com/RobotLocomotion/drake/pull/20343
[_#20361]: https://github.com/RobotLocomotion/drake/pull/20361
[_#20362]: https://github.com/RobotLocomotion/drake/pull/20362
[_#20374]: https://github.com/RobotLocomotion/drake/pull/20374
[_#20375]: https://github.com/RobotLocomotion/drake/pull/20375
[_#20378]: https://github.com/RobotLocomotion/drake/pull/20378
[_#20381]: https://github.com/RobotLocomotion/drake/pull/20381
[_#20385]: https://github.com/RobotLocomotion/drake/pull/20385
[_#20387]: https://github.com/RobotLocomotion/drake/pull/20387
[_#20391]: https://github.com/RobotLocomotion/drake/pull/20391
[_#20396]: https://github.com/RobotLocomotion/drake/pull/20396
[_#20398]: https://github.com/RobotLocomotion/drake/pull/20398
[_#20399]: https://github.com/RobotLocomotion/drake/pull/20399
[_#20401]: https://github.com/RobotLocomotion/drake/pull/20401
[_#20403]: https://github.com/RobotLocomotion/drake/pull/20403
[_#20406]: https://github.com/RobotLocomotion/drake/pull/20406
[_#20407]: https://github.com/RobotLocomotion/drake/pull/20407
[_#20408]: https://github.com/RobotLocomotion/drake/pull/20408
[_#20410]: https://github.com/RobotLocomotion/drake/pull/20410
[_#20411]: https://github.com/RobotLocomotion/drake/pull/20411
[_#20414]: https://github.com/RobotLocomotion/drake/pull/20414
[_#20415]: https://github.com/RobotLocomotion/drake/pull/20415
[_#20417]: https://github.com/RobotLocomotion/drake/pull/20417
[_#20420]: https://github.com/RobotLocomotion/drake/pull/20420
[_#20421]: https://github.com/RobotLocomotion/drake/pull/20421
[_#20424]: https://github.com/RobotLocomotion/drake/pull/20424
[_#20427]: https://github.com/RobotLocomotion/drake/pull/20427
[_#20428]: https://github.com/RobotLocomotion/drake/pull/20428
[_#20438]: https://github.com/RobotLocomotion/drake/pull/20438
[_#20441]: https://github.com/RobotLocomotion/drake/pull/20441
[_#20442]: https://github.com/RobotLocomotion/drake/pull/20442
[_#20454]: https://github.com/RobotLocomotion/drake/pull/20454
[_#20460]: https://github.com/RobotLocomotion/drake/pull/20460
[_#20461]: https://github.com/RobotLocomotion/drake/pull/20461
[_#20463]: https://github.com/RobotLocomotion/drake/pull/20463
[_#20465]: https://github.com/RobotLocomotion/drake/pull/20465
[_#20469]: https://github.com/RobotLocomotion/drake/pull/20469
[_#20471]: https://github.com/RobotLocomotion/drake/pull/20471
[_#20472]: https://github.com/RobotLocomotion/drake/pull/20472
[_#20473]: https://github.com/RobotLocomotion/drake/pull/20473
[_#20474]: https://github.com/RobotLocomotion/drake/pull/20474
[_#20475]: https://github.com/RobotLocomotion/drake/pull/20475
[_#20476]: https://github.com/RobotLocomotion/drake/pull/20476
[_#20488]: https://github.com/RobotLocomotion/drake/pull/20488
[_#20492]: https://github.com/RobotLocomotion/drake/pull/20492
[_#20497]: https://github.com/RobotLocomotion/drake/pull/20497
[_#20502]: https://github.com/RobotLocomotion/drake/pull/20502
[_#20503]: https://github.com/RobotLocomotion/drake/pull/20503
[_#20508]: https://github.com/RobotLocomotion/drake/pull/20508
[_#20511]: https://github.com/RobotLocomotion/drake/pull/20511
[_#20513]: https://github.com/RobotLocomotion/drake/pull/20513
[_#20523]: https://github.com/RobotLocomotion/drake/pull/20523
[_#20524]: https://github.com/RobotLocomotion/drake/pull/20524
[_#20525]: https://github.com/RobotLocomotion/drake/pull/20525
[_#20528]: https://github.com/RobotLocomotion/drake/pull/20528
[_#20530]: https://github.com/RobotLocomotion/drake/pull/20530
[_#20532]: https://github.com/RobotLocomotion/drake/pull/20532
[_#20536]: https://github.com/RobotLocomotion/drake/pull/20536
[_#20539]: https://github.com/RobotLocomotion/drake/pull/20539
[_#20543]: https://github.com/RobotLocomotion/drake/pull/20543
[_#20549]: https://github.com/RobotLocomotion/drake/pull/20549
[_#20551]: https://github.com/RobotLocomotion/drake/pull/20551
<!-- <end issue links> -->

<!--
  Current oldest_commit da969f5c8f97e661c6ca9450d0cff0b52a240619 (exclusive).
  Current newest_commit 6955a4668b84b133e1c827560083685cd6d39849 (inclusive).
-->
