---
title: Drake v1.14.0
date: 2023-03-15
released: 2023-03-15
---

# Announcements

* Drake's precopmiled Ubuntu binaries now have OpenMP enabled ([#18849][_#18849]).
* Drake's parser can add ``*.obj`` files directly into a MultibodyPlant without
  SDFormat boilerplate ([#18776][_#18776]).
* Drake no longer sets nor requires FMT_DEPRECATED_OSTREAM ([#18806][_#18806],
  [#18850][_#18850]).
  * Drake will remain compatible with this setting, so if you still need it
    for your own project you can set it yourself.

# Breaking changes since v1.13.0

* InverseKinematics no longer gives mutable access to const members ([#18793][_#18793])

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

# Changes since v1.13.0

## Dynamical Systems

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

New features

* Improve defaults for AffineSystem and LinearSystem ([#18822][_#18822])

Fixes

* None

## Mathematical Program

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

New features

* Add GUROBI_NUM_THREADS environment variable ([#18819][_#18819])
* QuadraticConstraint stores Hessian type and checks convexity ([#18965][_#18965])
* Add SubstituteAndExpand method to Polynomial ([#18752][_#18752])
* Enable symbolic matrix inversions ([#18823][_#18823])
* Adds BezierCurve (isa Trajectory) ([#18868][_#18868])

Fixes

* Fix a bug in GurobiSolver with duplicated variables in second-order cone constraints ([#18890][_#18890])
* Retrieve Mosek IPM solution if basis selection is disabled for LP ([#18895][_#18895])
* Speed up symbolic Add and Mul ([#18869][_#18869])
* Speed up symbolic Variable ([#18901][_#18901])
* Remove redundant options copying in IpoptSolver ([#18874][_#18874])
* Change SolverBase constructor to prefer SolverId directly ([#18880][_#18880])

## Multibody Dynamics and Geometry

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

New features

* Implement Meshcat::PlotSurface() ([#18924][_#18924])
* Implement Meshcat::GetSliderNames() ([#18949][_#18949])
* Add SpatialInertia::PointMass() ([#18864][_#18864])
* Add SpatialInertia::HollowSphereWithDensity() ([#18865][_#18865])
* Add SpatialInertia::SolidCubeWithDensity() ([#18866][_#18866])
* Add SpatialInertia::SolidCylinderAboutEnd() ([#18889][_#18889])
* Add SpatialInertia::ThinRodWithMass() ([#18891][_#18891])
* Add SpatialInertia::ThinRodWithMassAboutEnd() ([#18950][_#18950])
* Allow models to be parsed into plant from ``*.obj`` files ([#18776][_#18776])
* Support auto-renaming of models ([#18921][_#18921])
* Retrieve joint actuators and actuated joints per model instance ([#18959][_#18959])

Fixes

* Improve SDFormat parsing error reporting ([#18462][_#18462])
* Ignore collision filter groups from model directives if there's no scene graph ([#18798][_#18798])
* SceneGraphInspector provides ordering guarantees on reported ids ([#18903][_#18903])
* Relax single model test in SDFormat singular API ([#18888][_#18888])

## Planning

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

New features

* Ongoing work in progress on the C-IRIS feature:
  * Move c_iris_collision_geometry out of dev folder ([#18824][_#18824])
  * Move c_iris_separating_plane out of dev ([#18852][_#18852])
  * Move cspace_free_polytope.h out of dev folder ([#18860][_#18860])
  * Move CspaceFreePolytope constructor out of dev folder ([#18863][_#18863])
* Add PointToLineDistanceConstraint ([#18817][_#18817])

Fixes

* InverseKinematics no longer gives mutable access to const members ([#18793][_#18793])
* Further improve welded body check ([#18723][_#18723])
* Clean up ZmpPlanner ([#18845][_#18845])

## Tutorials and examples

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

* Add Diagram tutorial ([#18873][_#18873])
* Add an example of using `namedview` in authoring leaf systems ([#18809][_#18809])
* Add and use drake_models/package.xml ([#18919][_#18919])
* Fix skydio model prop colors and normals ([#18867][_#18867])
* Move the distal geometry for the Jaco arm to link 7 ([#18799][_#18799])

## Miscellaneous features and fixes

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

* Visualiation improvements
  * Meldis displays point cloud data ([#18896][_#18896])
  * ModelVisualizer preserves joint posture on reload ([#18933][_#18933], [#18949][_#18949])
  * Add contact visualization to meshcat defaults ([#18907][_#18907])
* Logging changes
  * Add DRAKE_FORMATTER_AS ([#18771][_#18771])
  * Add fmt_eigen ([#18811][_#18811])
  * Add fmt::streamed and fmt::ostream_formatter polyfills  ([#18801][_#18801])
* Add DrakeLcmBase ([#18847][_#18847])
* Add DrakeLcmInterface::SubscribeMultichannel ([#18826][_#18826])
* Serializable objects can also be output as JSON ([#18943][_#18943])

## pydrake bindings

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


New features

* None

Fixes

* Leave C++ logging sink intact (but no-op) ([#18750][_#18750])
* Condense pydrake.manipulation into a single module ([#18973][_#18973])
* Use nice names for default template classes ([#18972][_#18972])

## Build system

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

* Remove opt-in to FMT_DEPRECATED_OSTREAM ([#18806][_#18806]), [#18850][_#18850])
* Enable OpenMP in Ubuntu binaries ([#18849][_#18849])
* Automatically fix more GCC 12 installation mistakes on Jammy ([#18925][_#18925])

## Build dependencies

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

* Upgrade abseil_cpp_internal to latest commit ([#18926][_#18926])
* Upgrade bazel_skylib to latest release 1.4.1 ([#18926][_#18926])
* Upgrade curl_internal to latest release 7.88.1 ([#18929][_#18929])
* Upgrade lcm to latest commit ([#18926][_#18926])
* Upgrade mypy_internal to latest release v1.0.1 ([#18926][_#18926])
* Upgrade petsc to latest release v3.18.5 ([#18926][_#18926])
* Upgrade ros_xacro_internal to latest release 1.14.15 ([#18926][_#18926])
* Upgrade rules_pkg to latest release 0.8.1 ([#18926][_#18926])
* Upgrade rules_python to latest release 0.19.0 ([#18926][_#18926])
* Upgrade sdformat_internal to latest release 13.3.0 ([#18931][_#18931])
* Upgrade tinyobjloader to latest commit ([#18926][_#18926])
* Upgrade typing_extensions_internal to latest release 4.5.0 ([#18926][_#18926])

## Newly-deprecated APIs

* drake::SortedPair::operator<< ([#18892][_#18892])
* drake::copyable_unique_ptr::operator<< ([#18771][_#18771])
* drake::kHomogeneousTransformSize ([#18857][_#18857])
* drake::kQuaternionSize ([#18857][_#18857])
* drake::kRotmatSize ([#18857][_#18857])
* drake::kRpySize ([#18857][_#18857])
* drake::kSpaceDimension ([#18857][_#18857])
* drake::kTwistSize ([#18857][_#18857])
* drake::multibody::parsing::GetInstanceScopeName ([#17482][_#17482])
* drake::multibody::parsing::GetScopedFrameName ([#17482][_#17482])
* drake::multibody::parsing::ParseScopedName ([#17482][_#17482])
* drake::multibody::parsing::PrefixName ([#17482][_#17482])
* drake::planning::CollisionChecker::GetScopedName ([#17482][_#17482])
* drake::solvers::SolverBase constructor with a SolverId-returning functor ([#18880][_#18880])
* drake::systems::controllers::ZMPPlanner ([#18845][_#18845])
* pydrake.multibody.parsing.GetScopedFrameName ([#17482][_#17482])
* pydrake.multibody.plant.CalcJacobianSpatialVelocity(*, p_BP) use p_BoBp_B ([#18876][_#18876])
* pydrake.planning.CollisionChecker.GetScopedName ([#17482][_#17482])

## Removal of deprecated items

* drake::trajectories::PiecewisePolynomial::Cubic ([#18927][_#18927])
* drake::multibody::MultibodyPlant::AddCouplerConstraint with non-double gear_ratio and offet ([#18927][_#18927])
* drake::multibody::MultibodyPlant continuous_state port ([#18927][_#18927])
* drake::multibody::MoultibodyPlant port suffixed with _continuous_state ([#18927][_#18927])
* drake::multibody::FixedOffsetFrame::SetPoseInBodyFrame ([#18927][_#18927])
* drake::systems::LeafSystem::DeclarePeriodicPublish ([#18927][_#18927])
* drake::systems::LeafSystem::DeclarePeriodicDiscreteUpdate ([#18927][_#18927])
* drake::systems::LeafSystem::DeclarePeriodicUnrestrictedUpdate ([#18927][_#18927])
* drake::systems::System::CalcDiscreteVariableUpdates ([#18927][_#18927])
* drake::systems::System::CalcUnrestrictedUpdate ([#18927][_#18927])
* drake::systems::System::Publish(context) ([#18927][_#18927])
* pydrake.multibody.tree.FixedOffsetFrame.SetPoseInBodyFrame ([#18927][_#18927])
* pydrake.systems.framework.LeafSystem.DeclarePeriodicPublish ([#18927][_#18927])
* pydrake.systems.framework.LeafSystem.DeclarePeriodicDiscreteUpdate ([#18927][_#18927])
* pydrake.systems.framework.System.CalcDiscreteVariableUpdates ([#18927][_#18927])
* pydrake.systems.framework.System.CalcUnrestrictedUpdate ([#18927][_#18927])
* pydrake.systems.framework.System.Publish ([#18927][_#18927])

# Notes


This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v1.14.0) named
``drake-20230315-{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> -->
[_#17482]: https://github.com/RobotLocomotion/drake/pull/17482
[_#18462]: https://github.com/RobotLocomotion/drake/pull/18462
[_#18723]: https://github.com/RobotLocomotion/drake/pull/18723
[_#18750]: https://github.com/RobotLocomotion/drake/pull/18750
[_#18752]: https://github.com/RobotLocomotion/drake/pull/18752
[_#18771]: https://github.com/RobotLocomotion/drake/pull/18771
[_#18776]: https://github.com/RobotLocomotion/drake/pull/18776
[_#18793]: https://github.com/RobotLocomotion/drake/pull/18793
[_#18798]: https://github.com/RobotLocomotion/drake/pull/18798
[_#18799]: https://github.com/RobotLocomotion/drake/pull/18799
[_#18801]: https://github.com/RobotLocomotion/drake/pull/18801
[_#18806]: https://github.com/RobotLocomotion/drake/pull/18806
[_#18809]: https://github.com/RobotLocomotion/drake/pull/18809
[_#18811]: https://github.com/RobotLocomotion/drake/pull/18811
[_#18817]: https://github.com/RobotLocomotion/drake/pull/18817
[_#18819]: https://github.com/RobotLocomotion/drake/pull/18819
[_#18822]: https://github.com/RobotLocomotion/drake/pull/18822
[_#18823]: https://github.com/RobotLocomotion/drake/pull/18823
[_#18824]: https://github.com/RobotLocomotion/drake/pull/18824
[_#18826]: https://github.com/RobotLocomotion/drake/pull/18826
[_#18845]: https://github.com/RobotLocomotion/drake/pull/18845
[_#18847]: https://github.com/RobotLocomotion/drake/pull/18847
[_#18849]: https://github.com/RobotLocomotion/drake/pull/18849
[_#18850]: https://github.com/RobotLocomotion/drake/pull/18850
[_#18852]: https://github.com/RobotLocomotion/drake/pull/18852
[_#18857]: https://github.com/RobotLocomotion/drake/pull/18857
[_#18860]: https://github.com/RobotLocomotion/drake/pull/18860
[_#18863]: https://github.com/RobotLocomotion/drake/pull/18863
[_#18864]: https://github.com/RobotLocomotion/drake/pull/18864
[_#18865]: https://github.com/RobotLocomotion/drake/pull/18865
[_#18866]: https://github.com/RobotLocomotion/drake/pull/18866
[_#18867]: https://github.com/RobotLocomotion/drake/pull/18867
[_#18868]: https://github.com/RobotLocomotion/drake/pull/18868
[_#18869]: https://github.com/RobotLocomotion/drake/pull/18869
[_#18873]: https://github.com/RobotLocomotion/drake/pull/18873
[_#18874]: https://github.com/RobotLocomotion/drake/pull/18874
[_#18876]: https://github.com/RobotLocomotion/drake/pull/18876
[_#18880]: https://github.com/RobotLocomotion/drake/pull/18880
[_#18888]: https://github.com/RobotLocomotion/drake/pull/18888
[_#18889]: https://github.com/RobotLocomotion/drake/pull/18889
[_#18890]: https://github.com/RobotLocomotion/drake/pull/18890
[_#18891]: https://github.com/RobotLocomotion/drake/pull/18891
[_#18892]: https://github.com/RobotLocomotion/drake/pull/18892
[_#18895]: https://github.com/RobotLocomotion/drake/pull/18895
[_#18896]: https://github.com/RobotLocomotion/drake/pull/18896
[_#18901]: https://github.com/RobotLocomotion/drake/pull/18901
[_#18903]: https://github.com/RobotLocomotion/drake/pull/18903
[_#18907]: https://github.com/RobotLocomotion/drake/pull/18907
[_#18919]: https://github.com/RobotLocomotion/drake/pull/18919
[_#18921]: https://github.com/RobotLocomotion/drake/pull/18921
[_#18924]: https://github.com/RobotLocomotion/drake/pull/18924
[_#18925]: https://github.com/RobotLocomotion/drake/pull/18925
[_#18926]: https://github.com/RobotLocomotion/drake/pull/18926
[_#18927]: https://github.com/RobotLocomotion/drake/pull/18927
[_#18929]: https://github.com/RobotLocomotion/drake/pull/18929
[_#18931]: https://github.com/RobotLocomotion/drake/pull/18931
[_#18933]: https://github.com/RobotLocomotion/drake/pull/18933
[_#18943]: https://github.com/RobotLocomotion/drake/pull/18943
[_#18949]: https://github.com/RobotLocomotion/drake/pull/18949
[_#18950]: https://github.com/RobotLocomotion/drake/pull/18950
[_#18959]: https://github.com/RobotLocomotion/drake/pull/18959
[_#18965]: https://github.com/RobotLocomotion/drake/pull/18965
[_#18972]: https://github.com/RobotLocomotion/drake/pull/18972
[_#18973]: https://github.com/RobotLocomotion/drake/pull/18973
<!-- <end issue links> -->

<!--
  Current oldest_commit f062738a338ab26776d24c14e6d5d79b2280a79c (exclusive).
  Current newest_commit 91e3dccea12c6b5fa73ec215d8af0ff4ee7f1876 (inclusive).
-->
