---
title: Drake v1.4.0
date: 2022-06-21
released: 2022-06-21
---

# Announcements

* Drake now supports loading MuJoCo's MJCF format ([#17358][_#17358])
  * Note that not all elements of the file format are supported yet, but many
    of the most commonly-used element are available.
* Drake's collision filter groups in SDFormat and model directives may now span
  multiple robots ([#17175][_#17175], [#17270][_#17270]).

# Breaking changes since v1.3.0

* Direct access to MultibodyPlant's [scalar-converting copy
  constructor](https://drake.mit.edu/doxygen_cxx/group__system__scalar__conversion.html)
  has been removed ([#17354][_#17354]).
  * This constructor was intended to be for internal use only, but was not marked
    as such; now it is.
  * Anyone who was accidentally using this constructor might now receive a linker
    error, for certain compilers.
  * To perform scalar conversion of a System, C++ users should call, e.g.,
    ``System::ToAutoDiffXd`` instead of the direct constructor.
  * Python users are unaffected.

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

# Changes since v1.3.0

## Dynamical Systems

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

New features

* Add SharedPointerSystem ([#17260][_#17260])
* Add equality constraints in LQR ([#17327][_#17327])

Fixes

* Improve error messages for GetInputPort and GetOutputPort ([#17255][_#17255])

## Mathematical Program

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

New features

* Add GetAvailableSolvers() ([#17225][_#17225])
* CsdpSolver accepts RemoveFreeVariableMethod via SolverOptions ([#17275][_#17275])
* Support half-angle formulas in sin/cos substitution ([#17282][_#17282])
* Evaluate polynomial (with affine coefficients) on a batch of indeterminates ([#17357][_#17357])

Fixes

* Fix SparseMatrixToTriplets to only permit sparse matrices ([#17331][_#17331])
* Fix exception handling in SnoptSolver on macOS ([#17272][_#17272])
* SdpaFreeFormat ignores empty constraints ([#17368][_#17368])
* Add C++ [[nodiscard]] checks ([#17330][_#17330], [#17380][_#17380])
* DecomposeAffineExpression passes coeffs as a pointer ([#17348][_#17348])
* Check if influence_value_offset is strictly positive and finite in MinimumValueConstraint ([#17404][_#17404])

## Multibody Dynamics and Geometry

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

New features

* Add support for parsing MuJoCo's MJCF format ([#17358][_#17358])
* Enable multi-robot collision filter groups in SDFormat and model directives ([#17175][_#17175], [#17270][_#17270])
* Add meshcat JointSliders::SetPositions ([#17247][_#17247])
* Add GeometryConfigurationVector container ([#17329][_#17329])

Fixes

* Improve error messages for GetBodyByName and similar functions ([#17259][_#17259])
* Reject duplicate-named frames for same source ([#17243][_#17243])
* MultibodyPlant throws exceptions on NaN input port values ([#17174][_#17174])
* Remove model instance restrictions in ComInPolyhedronConstraint ([#15830][_#15830])
* Move render_gl into new directory structure ([#17410][_#17410])

## Tutorials and examples

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

* Add tutorial for using MOSEK™ on Deepnote ([#17213][_#17213])
* Update manipulation_station example to use Meshcat instead of Tcl/Tk ([#16816][_#16816], [#17292][_#17292] [#17298][_#17298])
* Update joint velocity limits for Jaco arms ([#17407][_#17407])
* Expose parameters in QuadrotorPlant ([#17402][_#17402])

## Miscellaneous features and fixes

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

* Add DrakeLcm option for a channel name suffix ([#17337][_#17337])
* Add a keep_going option to ConstraintRelaxingIk ([#17224][_#17224])
* Update geometry_inspector to use newer meshcat ([#17214][_#17214])
* DRAKE_EXPECT_THROWS_MESSAGE now requires an expression ([#17341][_#17341])

## pydrake bindings

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

New features

* None

Fixes

* Fix IpoptSolver in pip wheels ([#17346][_#17346])
  * Remove more meshes to still fit under 100 MiB ([#17401][_#17401])

Newly bound

* pydrake.geometry.SceneGraph.RegisterGeometry (additional overloads) ([#17342][_#17342])
* pydrake.geometry.SceneGraph.RemoveGeometry ([#17336][_#17336])

## Build system

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

* Use stable URLs for GitHub downloads where possible ([#17344][_#17344])
* Fail fast if setup script is invoked with sudo when already root ([#17284][_#17284])

## Build dependencies

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

* Add MUMPS dependency to wheel builds ([#17346][_#17346])
  * Remove more meshes to still fit under 100 MiB ([#17401][_#17401])
* Add libpython as Ubuntu binary tarball prerequisite ([#17294][_#17294])
* Remove macOS python-tk dependency ([#17389][_#17389])
* Remove msgpack boost dependency ([#17286][_#17286])
* Build NLopt from source; upgrade to 2.7.1 ([#17288][_#17288])
* Improve qhull hidden visibility ([#17229][_#17229])
* Upgrade abseil_cpp_internal to latest commit ([#17322][_#17322], [#17352][_#17352])
* Upgrade clang-cindex-python3 to latest commit ([#17315][_#17315])
* Upgrade common_robotics_utilities and voxelized_geometry_tools to latest commit ([#17322][_#17322], [#17359][_#17359])
* Upgrade dm_control to latest commit ([#17322][_#17322])
* Upgrade gz_utils to latest release 1.4.0 ([#17417][_#17417])
* Upgrade ignition_math to latest release 6.11.0 ([#17322][_#17322])
* Upgrade libcmaes to latest commit ([#17322][_#17322])
* Upgrade libsdformat to latest release 12.5.0 ([#17250][_#17250])
* Upgrade mosek to release 9.3.20 ([#17238][_#17238])
* Upgrade petsc to latest release v3.17.1 ([#17273][_#17273])
* Upgrade stduuid to latest commit ([#17322][_#17322])

## Newly-deprecated APIs

* drake::lcm::DrakeLcm two-argument constructor ([#17337][_#17337])
* drake::solvers::CsdpSolver constructor with RemoveFreeVariableMethod argument ([#17275][_#17275])
* drake::symbolic::DecomposeAffineExpression overload that mis-used a const reference for the ``coeffs`` output ([#17348][_#17348])
* drake/geometry/frame_kinematics_vector.h include path ([#17329][_#17329])
* drake/geometry/render/gl_renderer/render_engine_gl_factory.h include path ([#17410][_#17410])
* drake/geometry/render/gl_renderer/render_engine_gl_params.h include path ([#17410][_#17410])
* The entire solvers/fbstab library ([#17416][_#17416])
* The @boost external ([#17308][_#17308])
* The @clang_cindex_python3 external ([#17324][_#17324])
* The @dm_control external ([#17324][_#17324])
* The @github3_py external ([#17324][_#17324])
* The @ignition_math external ([#17303][_#17303])
* The @ignition_utils external ([#17303][_#17303])
* The @intel_realsense_ros external ([#17324][_#17324])
* The @json external ([#17283][_#17283])
* The @meshcat_python external ([#17374][_#17374])
* The @models external ([#17324][_#17324])
* The @nlopt external ([#17288][_#17288])
* The @qhull external ([#17229][_#17229])
* The @ros_xacro external ([#17324][_#17324])
* The @sdformat external ([#17303][_#17303])
* The @uritemplate_py external ([#17324][_#17324])

## Removal of deprecated items

* drake::manipulation::kinova_jaco::JacoCommandReceiver::get_input_port ([#17296][_#17296], [#16483][_#16483])
* drake::manipulation::kinova_jaco::JacoCommandReceiver::set_initial_position ([#17296][_#17296], [#16483][_#16483])
* drake::math::RigidTransform::IsIdentityToEpsilon ([#17296][_#17296], [#16541][_#16541])
* drake::math::RotationMatrix::IsIdentityToInternalTolerance ([#17296][_#17296], [#16552][_#16552])
* pydrake.manipulation.simple_ui.JointSliders ([#17295][_#17295], [#16656][_#16656])
* pydrake.manipulation.simple_ui.SchunkWsgButton ([#17295][_#17295], [#16656][_#16656])
* pydrake.multibody.math.SpatialVelocity.Shift kwarg name p_BqBq_E ([#17296][_#17296], [#16350][_#16350])
* pydrake.multibody.math.SpatialVelocity.dot kwarg name F_Bp ([#17296][_#17296], [#16350][_#16350])
* pydrake.multibody.math.SpatialVelocity.dot kwarg name L_WBp_E ([#17296][_#17296], [#16350][_#16350])
* pydrake.systems.system_sliders.SystemSliders ([#17295][_#17295], [#16656][_#16656])
* DRAKE_ASSERT_THROWS_MESSAGE overload with three arguments ([#17296][_#17296], [#16514][_#16514])
* DRAKE_ASSERT_THROWS_MESSAGE_IF_ARMED overload with three arguments ([#17296][_#17296], [#16514][_#16514])
* DRAKE_EXPECT_THROWS_MESSAGE overload with three arguments ([#17296][_#17296], [#16514][_#16514])
* DRAKE_EXPECT_THROWS_MESSAGE_IF_ARMED overload with three arguments ([#17296][_#17296], [#16514][_#16514])

# Notes

This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v1.4.0) named
``drake-20220621-{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> -->
[_#15830]: https://github.com/RobotLocomotion/drake/pull/15830
[_#16350]: https://github.com/RobotLocomotion/drake/pull/16350
[_#16483]: https://github.com/RobotLocomotion/drake/pull/16483
[_#16514]: https://github.com/RobotLocomotion/drake/pull/16514
[_#16541]: https://github.com/RobotLocomotion/drake/pull/16541
[_#16552]: https://github.com/RobotLocomotion/drake/pull/16552
[_#16656]: https://github.com/RobotLocomotion/drake/pull/16656
[_#16816]: https://github.com/RobotLocomotion/drake/pull/16816
[_#17174]: https://github.com/RobotLocomotion/drake/pull/17174
[_#17175]: https://github.com/RobotLocomotion/drake/pull/17175
[_#17213]: https://github.com/RobotLocomotion/drake/pull/17213
[_#17214]: https://github.com/RobotLocomotion/drake/pull/17214
[_#17224]: https://github.com/RobotLocomotion/drake/pull/17224
[_#17225]: https://github.com/RobotLocomotion/drake/pull/17225
[_#17229]: https://github.com/RobotLocomotion/drake/pull/17229
[_#17238]: https://github.com/RobotLocomotion/drake/pull/17238
[_#17243]: https://github.com/RobotLocomotion/drake/pull/17243
[_#17247]: https://github.com/RobotLocomotion/drake/pull/17247
[_#17250]: https://github.com/RobotLocomotion/drake/pull/17250
[_#17255]: https://github.com/RobotLocomotion/drake/pull/17255
[_#17259]: https://github.com/RobotLocomotion/drake/pull/17259
[_#17260]: https://github.com/RobotLocomotion/drake/pull/17260
[_#17270]: https://github.com/RobotLocomotion/drake/pull/17270
[_#17272]: https://github.com/RobotLocomotion/drake/pull/17272
[_#17273]: https://github.com/RobotLocomotion/drake/pull/17273
[_#17275]: https://github.com/RobotLocomotion/drake/pull/17275
[_#17282]: https://github.com/RobotLocomotion/drake/pull/17282
[_#17283]: https://github.com/RobotLocomotion/drake/pull/17283
[_#17284]: https://github.com/RobotLocomotion/drake/pull/17284
[_#17286]: https://github.com/RobotLocomotion/drake/pull/17286
[_#17288]: https://github.com/RobotLocomotion/drake/pull/17288
[_#17292]: https://github.com/RobotLocomotion/drake/pull/17292
[_#17294]: https://github.com/RobotLocomotion/drake/pull/17294
[_#17295]: https://github.com/RobotLocomotion/drake/pull/17295
[_#17296]: https://github.com/RobotLocomotion/drake/pull/17296
[_#17298]: https://github.com/RobotLocomotion/drake/pull/17298
[_#17303]: https://github.com/RobotLocomotion/drake/pull/17303
[_#17308]: https://github.com/RobotLocomotion/drake/pull/17308
[_#17315]: https://github.com/RobotLocomotion/drake/pull/17315
[_#17322]: https://github.com/RobotLocomotion/drake/pull/17322
[_#17324]: https://github.com/RobotLocomotion/drake/pull/17324
[_#17327]: https://github.com/RobotLocomotion/drake/pull/17327
[_#17329]: https://github.com/RobotLocomotion/drake/pull/17329
[_#17330]: https://github.com/RobotLocomotion/drake/pull/17330
[_#17331]: https://github.com/RobotLocomotion/drake/pull/17331
[_#17336]: https://github.com/RobotLocomotion/drake/pull/17336
[_#17337]: https://github.com/RobotLocomotion/drake/pull/17337
[_#17341]: https://github.com/RobotLocomotion/drake/pull/17341
[_#17342]: https://github.com/RobotLocomotion/drake/pull/17342
[_#17344]: https://github.com/RobotLocomotion/drake/pull/17344
[_#17346]: https://github.com/RobotLocomotion/drake/pull/17346
[_#17348]: https://github.com/RobotLocomotion/drake/pull/17348
[_#17352]: https://github.com/RobotLocomotion/drake/pull/17352
[_#17354]: https://github.com/RobotLocomotion/drake/pull/17354
[_#17357]: https://github.com/RobotLocomotion/drake/pull/17357
[_#17358]: https://github.com/RobotLocomotion/drake/pull/17358
[_#17359]: https://github.com/RobotLocomotion/drake/pull/17359
[_#17368]: https://github.com/RobotLocomotion/drake/pull/17368
[_#17374]: https://github.com/RobotLocomotion/drake/pull/17374
[_#17380]: https://github.com/RobotLocomotion/drake/pull/17380
[_#17389]: https://github.com/RobotLocomotion/drake/pull/17389
[_#17401]: https://github.com/RobotLocomotion/drake/pull/17401
[_#17402]: https://github.com/RobotLocomotion/drake/pull/17402
[_#17404]: https://github.com/RobotLocomotion/drake/pull/17404
[_#17407]: https://github.com/RobotLocomotion/drake/pull/17407
[_#17410]: https://github.com/RobotLocomotion/drake/pull/17410
[_#17416]: https://github.com/RobotLocomotion/drake/pull/17416
[_#17417]: https://github.com/RobotLocomotion/drake/pull/17417
<!-- <end issue links> -->

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