Drake v1.23.0

Back to Release Notes

Announcements

  • Drake now offers experimental support for the Clarabel solver (#20375, #20536, #20475).
    • Our ClarabelSolver 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).

Breaking changes since v1.22.0

  • None

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

Changes since v1.22.0

Dynamical Systems

New features

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

Fixes

  • None

Mathematical Program

New features

  • Add ClarabelSolver (#20375, #20536, #20475)
  • Add AffineBall as subclass of ConvexSet to represent bounded ellipsoidal convex sets that may not be full-dimensional (#20038)
  • Allow linear constraints to be sparse (#20361)
  • Allow conversion between Hyperellipsoid and AffineBall (#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)
  • Add log(det(X)) >= lower to MathematicalProgram (#20411)
  • Add AffineBall::MinimumVolumeCircumscribedEllipsoid (#20399) (#20399)
  • Add bounding_region to IrisOptions (#20417)
  • Add MonomialBasis for a map from Variables to its degree (#20523)

Fixes

  • None

Multibody Dynamics and Geometry

New features

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

Fixes

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

Planning

New features

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

Fixes

  • None

Tutorials and examples

  • Adjust tutorial launcher to accommodate Jupyter 6 and 7 (#20408)

Miscellaneous features and fixes

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

pydrake bindings

New features

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

Fixes

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

Build system

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

Build dependencies

  • Build libjpeg_turbo_internal from source (#20343)
  • Upgrade abseil_cpp_internal to latest commit (#20469)
  • Upgrade bazel to latest release 6.4.0 (#20410)
  • Upgrade build_bazel_apple_support to latest release 1.11.1 (#20469)
  • Upgrade buildifier to latest release 6.4.0 (#20543)
  • Upgrade clp_internal to latest release 1.17.9 (#20469)
  • Upgrade coinutils_internal to latest release 2.11.10 (#20469)
  • Upgrade common_robotics_utilities to latest commit (#20374, #20387, #20528)
  • Upgrade crate_universe to latest releases (#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)
  • Upgrade dm_control_internal to latest release 1.0.15 (#20469)
  • Upgrade ipopt_internal_fromsource to latest release 3.14.13 (#20525)
  • Upgrade mypy_internal to latest release 1.6.1 (#20469)
  • Upgrade platforms to latest release 0.0.8 (#20469)
  • Upgrade pybind11 fork to latest commit, merging with upstream 2.11.1 (#20362, #20524)
  • Upgrade pycodestyle to latest release 2.11.1 (#20469)
  • Upgrade python_rules to latest release 0.26.0 (#20473)
  • Upgrade rules_rust to latest release 0.30.0 (#20471)
  • Upgrade suitesparse_internal to latest release 7.3.0 (#20469)
  • Upgrade voxelized_geometry_tools to latest commit (#20374, #20387, #20528)

Newly-deprecated APIs

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

Removal of deprecated items

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

Notes

This release provides pre-compiled binaries named drake-1.23.0-{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.