---
title: Drake v1.3.0
date: 2022-05-17
released: 2022-05-17
---

# Announcements

* Drake now supports Clang 12 on Ubuntu, and no longer supports
  Clang 9 ([#16937][_#16937]).
* Drake now offers a [MultibodyPlant simulation tutorial](/#tutorials)
  ([#17148][_#17148]).
* Drake's multibody model parsers now do a better job of warning about ignored
  or unsupported input ([#16953][_#16953], [#17017][_#17017], [#17060][_#17060],
  [#17101][_#17101]).
  * In SDFormat, some syntax problems which used to warn now issue errors.
  * In addition, parser warnings can be optionally promoted to errors; see
    ``Parser::SetStrictParsing``.
* Drake's parsing for some mathematical programs is now much faster, including
  parsing large amount of linear constraints in the symbolic form, and
  constructing sum-of-squares (sos) problems.

# Breaking changes since v1.2.0

* None

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

# Changes since v1.2.0

## Dynamical Systems

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

New features

* None

Fixes

* Add controllability and observability for discrete-time systems ([#17029][_#17029])
* Improve error messages for planning and control input port selection ([#17191][_#17191])

## Mathematical Program

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

New features and fixes

* Mathematical Program
  * AddQuadraticAsRotatedLorentzConeConstraint takes optional psd_tol ([#17125][_#17125])
  * Allow the user to specify the print out name of the Gram matrix ([#17114][_#17114])
  * AddEqualityConstraintBetweenPolynomials now returns linear equality constraints ([#17104][_#17104])
  * Make2NormSquaredCost should set convex flag to true ([#17074][_#17074])
  * Add LinearConstraint::RemoveTinyCoefficient ([#17182][_#17182])

* Solvers
  * Ipopt supports kPrintFileName ([#17034][_#17034])
  * MosekSolver returns the solution even the problem is unbounded or infeasible ([#17089][_#17089])
  * MosekSolver returns the dual solution for positive semidefinite constraints ([#17106][_#17106])

* Symbolics
  * Add Polynomial::Expand ([#17156][_#17156])
  * Determine if a polynomial is even or odd ([#17021][_#17021])
  * Polynomial evaluates a batch of indeterminates ([#17065][_#17065])
  * Speed up MathematicalProgram::NewFreePolynomial ([#17011][_#17011])
  * Speed up computing polynomials using negation instead of subtraction ([#17013][_#17013])
  * Speed up operator+= and operator-= of symbolic::Variables by returning a reference ([#17018][_#17018])
  * Monomial.ToExpression.is_expanded is true ([#17201][_#17201])

* Geometry
  * Exclude edges with ``phi=0`` constraint from optimization ([#17046][_#17046])
  * Add PontryaginDifference to HPolyhedron ([#17056][_#17056])
  * Make `IrisOptions.enable_ibex = false` by default ([#17198][_#17198])
  * Clean up vertex labels formatting in `GraphOfConvexSets::GetGraphvizString` and add missing
    default for `result` in the python binding ([#17190][_#17190])
  * Fix GetSolution for `x_v` in GraphOfConvexSets ([#17199][_#17199])

## Multibody Dynamics and Geometry

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

New features

* Add hydroelastic force and moment vector visualization ([#16913][_#16913])
* Add API to set strict parsing ([#17017][_#17017])
* Add APIs to set the default joint damping ([#17151][_#17151])
* Add `Joint` API to retrieve viscous damping ([#17019][_#17019])
* Implement a `Wing` class to provide basic aerodynamics ([#17027][_#17027], [#17127][_#17127])
* Move `DifferentiableNorm` function to `math` ([#17127][_#17127])
* Create methods for relative spatial acceleration to parallel spatial velocity ([#17117][_#17117])

Fixes

* Warn about unsupported URDF features and modify installed example files to remove unsupported elements that provoke warnings ([#16953][_#16953]) 
* Emit errors for invalid SDFormat syntax instead of warnings ([#17060][_#17060])
* Warn about unsupported SDFormat features and modify installed example files to remove unsupported elements that provoke warnings ([#17101][_#17101]) 
* Warn about unsupported joint actuators ([#17178][_#17178])
* Route package deprecations into the diagnostic channel ([#17047][_#17047])
* Prefer math::LinearSolver to plain eigen solvers when using autodiff ([#17038][_#17038], [#17057][_#17057])
* Change actuation port in MultibodyPlant not associated with any model instance to refer to all actuation ports instead of the only actation port ([#17059][_#17059], [#17107][_#17107])
* Improve error message for algebraic loops involving MultibodyPlant and non-contact forces ([#17168][_#17168])
* Move RenderEngineVtk into its own directory ([#17169][_#17169])
* Remove console spam in Run with timeout in meshcat ([#17192][_#17192])
* Remove StartMeshcat support for Google Colab Python ([#16949][_#16949])

## Tutorials and examples

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

* Add MultibodyPlant simulation tutorial ([#17148][_#17148])
* In examples, provide default values for actuation input ports ([#17025][_#17025], [#17145][_#17145])
  * Previously, the AcrobotPlant example crashed if the input port was not properly connected.

## Miscellaneous features and fixes

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

* None

## pydrake bindings

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

New features

* None

Fixes

* Add missing `py::return_value_policy::copy` on various bound attributes ([#17126][_#17126])
* Changing Python logging level also changes C++ level ([#17069][_#17069])
* When using nicely formatted logging, emit "TRACE" not "Level 5" ([#17069][_#17069])

Newly bound

* pydrake.geometry.Meshcat.OrthographicCamera ([#17008][_#17008])
* pydrake.geometry.Meshcat.PerspectiveCamera ([#17008][_#17008])
* pydrake.geometry.Meshcat.SetCamera ([#17008][_#17008])
* pydrake.math.ToSymmetricMatrixFromLowerTriangularColumns ([#17111][_#17111])
* pydrake.multibody.Parser.SetStrictParsing ([#17181][_#17181])
* pydrake.multibody.plant.MultibodyPlant.GetRigidBodyByName ([#17042][_#17042])
* pydrake.solvers.mathematicalprogram.ClearVariableScaling ([#17200][_#17200])
* pydrake.solvers.mathematicalprogram.GetVariableScaling ([#17200][_#17200])
* pydrake.solvers.mathematicalprogram.SetVariableScaling ([#17200][_#17200])
* pydrake.symbolic.Polynomial.EqualToAfterExpansion ([#17128][_#17128])
* pydrake.systems.analysis.RegionOfAttraction.use_implicit_dynamics ([#17032][_#17032])

## Build system

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

* Preliminary support for macOS native ARM64 is underway ([#17009][_#17009])
* Failure to run install_prereqs produces an error ([#17082][_#17082], [#17062][_#17062])
* Add Bazel config for compiler selection ([#17043][_#17043])
* Fix some undefined behavior bugs identified by Clang 12 ([#17094][_#17094], [#17095][_#17095], [#17096][_#17096], [#17102][_#17102], [#17115][_#17115], [#17133][_#17133])
* Remove support for Binder ([#17158][_#17158])

## Build dependencies

<!-- Manually relocate any "Upgrade foo_external to latest" lines to here, -->
<!-- and then sort them alphabetically. -->

* Upgrade to Clang 12 on Ubuntu ([#16937][_#16937])
* Upgrade abseil_cpp_internal to latest commit ([#17097][_#17097])
* Upgrade buildifier to latest release 5.1.0 ([#17097][_#17097])
* Upgrade common_robotics_utilities to latest commit ([#17097][_#17097])
* Upgrade dm_control to latest commit ([#17097][_#17097])
* Upgrade ghc_filesystem to latest release v1.5.12 ([#17097][_#17097])
* Upgrade rules_pkg to latest release 0.7.0 ([#17097][_#17097])
* Upgrade rules_python to latest release 0.8.1 ([#17097][_#17097])
* Upgrade stduuid to latest commit ([#17097][_#17097])
* Upgrade uwebsockets to latest release v20.14.0 ([#17097][_#17097])
* Upgrade voxelized_geometry_tools to latest commit ([#17097][_#17097])

## Newly-deprecated APIs

* Drake no longer supports Clang 9 ([#16937][_#16937])
* pydrake.common.set_log_level ([#17069][_#17069])
* pydrake.systems.meshcat_visualizer.MeshcatPointCloudVisualizer ([#17194][_#17194])
  * Use pydrake.geometry.MeshcatPointCloudVisualizer instead.
* pydrake.systems.meshcat_visualizer.MeshcatVisualizer ([#17194][_#17194])
  * Use pydrake.geometry.MeshcatVisualizer instead.
* drake::geometry::render::RenderEngineVtk ([#17169][_#17169])
  * Use drake::geometry::MakeRenderEngineVtk instead.
* drake::geometry::render::RenderEngineVtkParams ([#17169][_#17169])
  * Use drake::geometry::RenderEngineVtkParms instead.
* drake::yaml::YamlReadArchive ([#17084][_#17084])
* drake::yaml::YamlWriteArchive ([#17084][_#17084])
* drake::symbolic::Polynomial::EqualToAfterExpansion ([#17202][_#17202])
  * Use `my_polynomial.Expand().EqualTo(other_polynomial.Expand())` instead.

## Removal of deprecated items

* drake::manipulation::perception::PoseSmoother ([#16343][_#16343], [#17076][_#17076])
* drake::multibody::ContactResultsToMeshcat ([#16437][_#16437], [#17076][_#17076])
* drake::multibody::ContactResultsToMeshcatParams ([#16437][_#16437], [#17076][_#17076])
* drake::multibody::PackageMap::PopulateUpstreamToDrake ([#16434][_#16434], [#17076][_#17076])
* drake::solvers::MathematicalProgram::AddMaximizeLogDeterminantSymmetricMatrixCost ([#16309][_#16309], [#17076][_#17076])
* drake::solvers::MathematicalProgram::NewNonnegativePolynomial ([#16375][_#16375], [#17076][_#17076])
* drake::systems::RandomSourced alias ([#16359][_#16359], [#17076][_#17076])
* drake::systems::trajectory_optimization::MultipleShooting no longer inherits from drake::solvers::MathematicalProgram ([#16333][_#16333], [#17076][_#17076])

# Notes

This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v1.3.0) named
``drake-20220517-{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> -->
[_#16309]: https://github.com/RobotLocomotion/drake/pull/16309
[_#16333]: https://github.com/RobotLocomotion/drake/pull/16333
[_#16343]: https://github.com/RobotLocomotion/drake/pull/16343
[_#16359]: https://github.com/RobotLocomotion/drake/pull/16359
[_#16375]: https://github.com/RobotLocomotion/drake/pull/16375
[_#16434]: https://github.com/RobotLocomotion/drake/pull/16434
[_#16437]: https://github.com/RobotLocomotion/drake/pull/16437
[_#16913]: https://github.com/RobotLocomotion/drake/pull/16913
[_#16937]: https://github.com/RobotLocomotion/drake/pull/16937
[_#16949]: https://github.com/RobotLocomotion/drake/pull/16949
[_#16953]: https://github.com/RobotLocomotion/drake/pull/16953
[_#17008]: https://github.com/RobotLocomotion/drake/pull/17008
[_#17009]: https://github.com/RobotLocomotion/drake/pull/17009
[_#17011]: https://github.com/RobotLocomotion/drake/pull/17011
[_#17013]: https://github.com/RobotLocomotion/drake/pull/17013
[_#17017]: https://github.com/RobotLocomotion/drake/pull/17017
[_#17018]: https://github.com/RobotLocomotion/drake/pull/17018
[_#17019]: https://github.com/RobotLocomotion/drake/pull/17019
[_#17021]: https://github.com/RobotLocomotion/drake/pull/17021
[_#17025]: https://github.com/RobotLocomotion/drake/pull/17025
[_#17027]: https://github.com/RobotLocomotion/drake/pull/17027
[_#17029]: https://github.com/RobotLocomotion/drake/pull/17029
[_#17032]: https://github.com/RobotLocomotion/drake/pull/17032
[_#17034]: https://github.com/RobotLocomotion/drake/pull/17034
[_#17038]: https://github.com/RobotLocomotion/drake/pull/17038
[_#17042]: https://github.com/RobotLocomotion/drake/pull/17042
[_#17043]: https://github.com/RobotLocomotion/drake/pull/17043
[_#17046]: https://github.com/RobotLocomotion/drake/pull/17046
[_#17047]: https://github.com/RobotLocomotion/drake/pull/17047
[_#17056]: https://github.com/RobotLocomotion/drake/pull/17056
[_#17057]: https://github.com/RobotLocomotion/drake/pull/17057
[_#17059]: https://github.com/RobotLocomotion/drake/pull/17059
[_#17060]: https://github.com/RobotLocomotion/drake/pull/17060
[_#17062]: https://github.com/RobotLocomotion/drake/pull/17062
[_#17065]: https://github.com/RobotLocomotion/drake/pull/17065
[_#17069]: https://github.com/RobotLocomotion/drake/pull/17069
[_#17074]: https://github.com/RobotLocomotion/drake/pull/17074
[_#17076]: https://github.com/RobotLocomotion/drake/pull/17076
[_#17082]: https://github.com/RobotLocomotion/drake/pull/17082
[_#17084]: https://github.com/RobotLocomotion/drake/pull/17084
[_#17089]: https://github.com/RobotLocomotion/drake/pull/17089
[_#17094]: https://github.com/RobotLocomotion/drake/pull/17094
[_#17095]: https://github.com/RobotLocomotion/drake/pull/17095
[_#17096]: https://github.com/RobotLocomotion/drake/pull/17096
[_#17097]: https://github.com/RobotLocomotion/drake/pull/17097
[_#17101]: https://github.com/RobotLocomotion/drake/pull/17101
[_#17102]: https://github.com/RobotLocomotion/drake/pull/17102
[_#17104]: https://github.com/RobotLocomotion/drake/pull/17104
[_#17106]: https://github.com/RobotLocomotion/drake/pull/17106
[_#17107]: https://github.com/RobotLocomotion/drake/pull/17107
[_#17111]: https://github.com/RobotLocomotion/drake/pull/17111
[_#17114]: https://github.com/RobotLocomotion/drake/pull/17114
[_#17115]: https://github.com/RobotLocomotion/drake/pull/17115
[_#17117]: https://github.com/RobotLocomotion/drake/pull/17117
[_#17125]: https://github.com/RobotLocomotion/drake/pull/17125
[_#17126]: https://github.com/RobotLocomotion/drake/pull/17126
[_#17127]: https://github.com/RobotLocomotion/drake/pull/17127
[_#17128]: https://github.com/RobotLocomotion/drake/pull/17128
[_#17133]: https://github.com/RobotLocomotion/drake/pull/17133
[_#17145]: https://github.com/RobotLocomotion/drake/pull/17145
[_#17148]: https://github.com/RobotLocomotion/drake/pull/17148
[_#17151]: https://github.com/RobotLocomotion/drake/pull/17151
[_#17156]: https://github.com/RobotLocomotion/drake/pull/17156
[_#17158]: https://github.com/RobotLocomotion/drake/pull/17158
[_#17168]: https://github.com/RobotLocomotion/drake/pull/17168
[_#17169]: https://github.com/RobotLocomotion/drake/pull/17169
[_#17178]: https://github.com/RobotLocomotion/drake/pull/17178
[_#17181]: https://github.com/RobotLocomotion/drake/pull/17181
[_#17182]: https://github.com/RobotLocomotion/drake/pull/17182
[_#17190]: https://github.com/RobotLocomotion/drake/pull/17190
[_#17191]: https://github.com/RobotLocomotion/drake/pull/17191
[_#17192]: https://github.com/RobotLocomotion/drake/pull/17192
[_#17194]: https://github.com/RobotLocomotion/drake/pull/17194
[_#17198]: https://github.com/RobotLocomotion/drake/pull/17198
[_#17199]: https://github.com/RobotLocomotion/drake/pull/17199
[_#17200]: https://github.com/RobotLocomotion/drake/pull/17200
[_#17201]: https://github.com/RobotLocomotion/drake/pull/17201
[_#17202]: https://github.com/RobotLocomotion/drake/pull/17202
<!-- <end issue links> -->

<!--
  Current oldest_commit 4e1146e7251aaff1e263b3b10a41f915827d9acb (exclusive).
  Current newest_commit 7fcdd44b8a48c2ae5b99ab60db31740f8192acc8 (inclusive).
-->
