---
title: Drake v1.5.0
date: 2022-07-14
released: 2022-07-14
---

# Announcements

* Drake now supports Ubuntu 22.04 ("Jammy Jellyfish") when building from source
  or using a nightly build ([#17489][_#17489]).
  * We anticipate adding Jammy as a stable release in the next (August) release.

* This release enables the **new Semi-Analytic Primal ("SAP") contact solver** option:
  * This is an option for the solver used to compute contact forces during
    simulation.
  * SAP has theoretical guaranteed global convergence and therefore should
    always succeed. As a result it is stable at larger time steps, yielding
    faster simulations.
  * There is a limit to how large the time step size can be:
    * The time step must be small enough to resolve the relevant dynamics of
      the problem.
    * Time step sizes that are too large might lead to *tunneling* -- objects
      passing through each other without interacting due to contact.
  * SAP exploits the sparsity of the problem, and so you can expect a greater
    speedup for complex models with multiple robots and objects.
  * The treatment of joint damping and rotor inertia is implicit and therefore
    very stable; this enables the modeling of stiff damping components. We
    strongly encourage you to include damping and/or rotor inertia for the
    modeling of small gripper fingers.
  * SAP uses a linear model of compliant contact forces in which dissipation is
    parameterized by `drake::relaxation_time`; see
    [#17087](https://github.com/RobotLocomotion/drake/issues/17087) for some
    preliminary documentation.  This parameter has a default value of 100 ms but
    you can change it on a per-geometry basis in your SDF/URDF model files.

  **Keep in mind that the solver is relatively new and is likely to have bugs.**
  Therefore, this solver is not on by default (the default remains the TAMSI
  solver). You can enable this solver for your simulation via the
  `MultibodyPlant::set_contact_solver()` method or the corresponding
  `MultibodyPlantConfig` option.

For details, refer to [[Castro et al., 2022]](https://arxiv.org/abs/2110.10107).

# Breaking changes since v1.4.0

* The protected constructor for class `drake::multibody::Body` removed the
  `mass` parameter ([#17472][_#17472]).
  * Users who were subclassing `Body` will need to update their code to match.

* The class `drake::multibody::Body` renamed a pure virtual member function
  from `get_default_mass()` to `default_mass()` ([#17528][_#17528]).
  * Users who were subclassing `Body` will need to update their code to match.

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

# Changes since v1.4.0

## Dynamical Systems

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

* None

Fixes

* None

## Mathematical Program

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

New features

* Replace sin/cos in a symbolic polynomial with half-angle rational functions ([#17491][_#17491])
* Add and use `MatrixLikewise` sugar typedef (derives an `Eigen::Matrix` type of same topology but different scalar) [#17497][_#17497])

Fixes

* When multiplying a variable and a polynomial, include that variable in the result's decision variables. ([#17543][_#17543])

## Multibody Dynamics and Geometry

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

New features

* Add `MultibodyPlant::set_contact_solver()` and corresponding `MultibodyPlantConfig` option ([#17400][_#17400]) ([#17545][_#17545])
* Parse relaxation_time for SAP ([#17512][_#17512]) ([#17554][_#17554])
* Meshcat now displays a performance strip chart including realtime rate ([#16981][_#16981])
* Add `ProcessModelDirectives` overload with a simpler signature ([#17450][_#17450])
* Add PackageMap::PopulateFromRosPackagePath ([#17251][_#17251])

Fixes

* Remove redundant default mass in body.h in favor of default mass in rigid_body.h ([#17472][_#17472])
* Add missed check in SDFormat `drake:proximity_properties` ([#17510][_#17510])
* `MultibodyPlant` documentation now warns users about preconditions for `finalize()` ([#17445][_#17445])
* Improve error detection and messages for all-zero quaternions ([#17399][_#17399])
* More robust parsing of .mtl texture map filenames ([#17550][_#17550])

## Tutorials and examples

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

* Manipulation station end-effector joystick control demo updated to use C++ Meshcat interface, more consistent option names ([#17300][_#17300])
* Fold pydrake.examples into a single module ([#17454][_#17454])
* Use `AcrobotParams` for `AcrobotPlant::SetMitAcrobotParameters` ([#17423][_#17423])

## Miscellaneous features and fixes

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

* Add UR3e model and TRI Homecart ([#17387][_#17387])
* During yaml serialization, output special floating point values correctly ([#17517][_#17517])
* Extract core symbolic algebra into its own library ([#17419][_#17419])
* Separate remaining non-core symbolic files into smaller libraries ([#17479][_#17479])
* Add --host option to meldis ([#17477][_#17477])

## pydrake bindings

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

New features

* Fold pydrake.solvers into a single module ([#17453][_#17453])

Fixes

* None

Newly bound

* `systems.sensors.CameraInfo.{fov_x,fov_y}` ([#17428][_#17428])
* `multibody.inverse_dynamics.global_ik` ([#17504][_#17504])

## Build system

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

* Don't rename github files or directories named "build" (for compatibility with https://github.com/mrdoob/stats.js) ([#17534][_#17534])
* Remove build-time transitive dependency on LCM headers ([#17442][_#17442])

## Build dependencies

* Remove dependency on python3-tk ([#17438][_#17438])
* Add pydrake build-time dependency on mypy ([#17521][_#17521])
* Add pydrake build-time dependency on mypy_extensions ([#17521][_#17521])
* Add pydrake build-time dependency on tomli ([#17521][_#17521])
* Add pydrake build-time dependency on typing_extensions ([#17521][_#17521])
* Upgrade abseil_cpp_internal to latest commit ([#17431][_#17431], [#17496][_#17496])
* Upgrade common_robotics_utilities to latest commit ([#17496][_#17496])
* Upgrade gtest to latest release release-1.12.1 ([#17452][_#17452], [#17496][_#17496])
* Upgrade petsc to latest release v3.17.3 ([#17509][_#17509])
* Upgrade picosat to latest commit ([#17505][_#17505])
* Upgrade pybind11 to address numpy 1.23 issue ([#17475][_#17475])
* Upgrade rules_python to latest release 0.10.0 ([#17496][_#17496])
* Upgrade stduuid to latest commit ([#17496][_#17496])
* Upgrade tinyobjloader to latest commit ([#17496][_#17496])

## Newly-deprecated APIs

* `drake::autodiffxd_make_coherent` ([#17499][_#17499])
* The header `common/symbolic.h` (include more specific headers instead) ([#17479][_#17479])
* All symbolic libraries in the `@drake` bazel module (all `//common:symbolic_<name>` have moved to `//common/symbolic:<name>`) ([#17479][_#17479])
  * `//common:symbolic`
  * `//common:symbolic_decompose`
  * `//common:symbolic_latex`
  * `//common:symbolic_trigonometric_polynomial`
* `pydrake.geometry.MeshcatVisualizerCpp` ([#17462][_#17462])
* `drake::multibody::GlobalInverseKinematics.AddWorldPositionConstraint(...Eigen::Isometry3d...)` ([#17504][_#17504])
* `drake::multibody::Body.get_default_mass()` ([#17528][_#17528])

## Removal of deprecated items

* `drake::systems::AntiderivativeFunction::IntegrableFunctionContext` ([#17459][_#17459])
* `drake::systems::AntiderivativeFunction::AntiderivativeFunction(...IntegrableFunctionContext...)` ([#17459][_#17459])
* `drake::systems::AntiderivativeFunction::Evaluate(...IntegrableFunctionContext...)` ([#17459][_#17459])
* `drake::systems::AntiderivativeFunction::MakeDenseEvalFunction(...IntegrableFunctionContext...)` ([#17459][_#17459])
* `drake::systems::InitialValueProblem::OdeContext` ([#17459][_#17459])
* `drake::systems::InitialValueProblem::InitialValueProblem(...OdeContext...)` ([#17459][_#17459])
* `drake::systems::InitialValueProblem::Solve(...OdeContext...)` ([#17459][_#17459])
* `drake::systems::InitialValueProblem::DenseSolve(...OdeContext...)` ([#17459][_#17459])
* `drake::systems::ScalarInitialValueProblem::ScalarOdeContext` ([#17459][_#17459])
* `drake::systems::ScalarInitialValueProblem::ScalarInitialValueProblem(...ScalarOdeContext...)` ([#17459][_#17459])
* `drake::systems::InitialValueProblem::Solve(...OdeContext...)` ([#17459][_#17459])
* `drake::systems::InitialValueProblem::DenseSolve(...OdeContext...)` ([#17459][_#17459])
* `pydrake.solvers.mathematicalprogram.Infeasible_Or_Unbounded` ([#17460][_#17460])
* `@drake//solvers:system_identification` ([#17460][_#17460])
* `drake::solvers::NonsmoothAugmentedLagrangian` ([#17460][_#17460])
* `pydrake.multibody.math.SpatialAcceleration.Shift` with monographed kwargs ([#17461][_#17461])
* `pydrake.multibody.math.SpatialAcceleration.ComposeWithMovingFrameAcceleration` with monographed kwargs ([#17461][_#17461])
* `@drake//solvers:trig_poly` ([#17461][_#17461])

# Notes


This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v1.5.0) named
``drake-2022-07-14-{focal|mac}.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> -->
[_#16981]: https://github.com/RobotLocomotion/drake/pull/16981
[_#17251]: https://github.com/RobotLocomotion/drake/pull/17251
[_#17300]: https://github.com/RobotLocomotion/drake/pull/17300
[_#17387]: https://github.com/RobotLocomotion/drake/pull/17387
[_#17399]: https://github.com/RobotLocomotion/drake/pull/17399
[_#17400]: https://github.com/RobotLocomotion/drake/pull/17400
[_#17419]: https://github.com/RobotLocomotion/drake/pull/17419
[_#17423]: https://github.com/RobotLocomotion/drake/pull/17423
[_#17428]: https://github.com/RobotLocomotion/drake/pull/17428
[_#17431]: https://github.com/RobotLocomotion/drake/pull/17431
[_#17438]: https://github.com/RobotLocomotion/drake/pull/17438
[_#17442]: https://github.com/RobotLocomotion/drake/pull/17442
[_#17445]: https://github.com/RobotLocomotion/drake/pull/17445
[_#17450]: https://github.com/RobotLocomotion/drake/pull/17450
[_#17452]: https://github.com/RobotLocomotion/drake/pull/17452
[_#17453]: https://github.com/RobotLocomotion/drake/pull/17453
[_#17454]: https://github.com/RobotLocomotion/drake/pull/17454
[_#17459]: https://github.com/RobotLocomotion/drake/pull/17459
[_#17460]: https://github.com/RobotLocomotion/drake/pull/17460
[_#17461]: https://github.com/RobotLocomotion/drake/pull/17461
[_#17462]: https://github.com/RobotLocomotion/drake/pull/17462
[_#17472]: https://github.com/RobotLocomotion/drake/pull/17472
[_#17475]: https://github.com/RobotLocomotion/drake/pull/17475
[_#17477]: https://github.com/RobotLocomotion/drake/pull/17477
[_#17479]: https://github.com/RobotLocomotion/drake/pull/17479
[_#17489]: https://github.com/RobotLocomotion/drake/pull/17489
[_#17491]: https://github.com/RobotLocomotion/drake/pull/17491
[_#17496]: https://github.com/RobotLocomotion/drake/pull/17496
[_#17497]: https://github.com/RobotLocomotion/drake/pull/17497
[_#17499]: https://github.com/RobotLocomotion/drake/pull/17499
[_#17504]: https://github.com/RobotLocomotion/drake/pull/17504
[_#17505]: https://github.com/RobotLocomotion/drake/pull/17505
[_#17509]: https://github.com/RobotLocomotion/drake/pull/17509
[_#17510]: https://github.com/RobotLocomotion/drake/pull/17510
[_#17512]: https://github.com/RobotLocomotion/drake/pull/17512
[_#17517]: https://github.com/RobotLocomotion/drake/pull/17517
[_#17521]: https://github.com/RobotLocomotion/drake/pull/17521
[_#17528]: https://github.com/RobotLocomotion/drake/pull/17528
[_#17534]: https://github.com/RobotLocomotion/drake/pull/17534
[_#17543]: https://github.com/RobotLocomotion/drake/pull/17543
[_#17545]: https://github.com/RobotLocomotion/drake/pull/17545
[_#17550]: https://github.com/RobotLocomotion/drake/pull/17550
[_#17554]: https://github.com/RobotLocomotion/drake/pull/17554
<!-- <end issue links> -->

<!--
  Current oldest_commit 2b3eeed634be21a963194f301d5c44370e280d33 (exclusive).
  Current newest_commit dc024c28bf306c8f1226fe1b12dbd2800cb63746 (inclusive).
-->
