---
title: Drake v1.10.0
date: 2022-11-16
released: 2022-11-16
---

# Announcements

* macOS Big Sur is no longer supported ([#18299][_#18299])
* The new module pydrake.visualization.model_visualizer provides an easy way to visualize SDFormat and/or URDF models ([#18180][_#18180])
* pydrake now provides ``*.pyi`` files to improve VSCode auto-completion ([#18074][_#18074])
* New Event API has been provided for more consistent and clear definition and execution of events ([#18106][_#18106])

# Breaking changes since v1.9.0

* BsplineTrajectory construction in pydrake has changed how it interprets numpy array parameters. ([#18182][_#18182])
* drake::systems::EventData (and its binding in pydrake) as a base class has been eliminated; its role is now played by std::variant. ([#18068][_#18068])

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

# Changes since v1.9.0

## Dynamical Systems

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

New features

* Factor out magical lcm_buses lookup for reuse ([#18090][_#18090])
* Add more by-name sugar to Diagram and DiagramBuilder ([#18078][_#18078])
* Add lcm_bus name to CameraConfig ([#18069][_#18069])
* Add APIs for manual triggering of periodic discrete updates ([#18048][_#18048])
* Implement JointStiffnessController ([#18272][_#18272])
* InverseDynamics and InverseDynamicsController support Drake default scalars ([#18271][_#18271])
* Add the ability to deprecate input and output ports ([#18274][_#18274])
* Add KinematicTrajectoryOptimization ([#18190][_#18190]) ([#18309][_#18309])
* Modernize and clarify Event APIs on System and LeafSystem ([#18106][_#18106])

Fixes

* None

## Mathematical Program

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

New features

* Add affine cone constraint in MOSEK™ ([#18114][_#18114])
* Support L2NormCost in SnoptSolver and IpoptSolver ([#18184][_#18184])
* Replace quadratic cost with affine cone constraint and linear cost in MOSEK™ ([#18185][_#18185])
* Allow IrisInConfigurationSpace to optionally consider configuration space obstacles ([#18136][_#18136])

Fixes

* GraphOfConvexSets correctly handles multiple costs for a Vertex ([#18043][_#18043])
* Fix depth first search failure in GraphOfConvexSets rounding ([#18063][_#18063])
* Remove requirement that CartesianProduct sets must be bounded ([#18140][_#18140])
* Gurobi solver options are handled more gracefully ([#18124][_#18124])
* Fix MathematicalProgram::Clone to clone everything ([#18135][_#18135])
* Aggregate duplicated variables in constraints in MosekSolver ([#18280][_#18280])
* Enable Gurobi to handle duplicated variables in its linear constraints ([#18291][_#18291])
* Fix bug in HPolyhedron::ReduceInequalities ([#18302][_#18302])

## Multibody Dynamics and Geometry

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

* Meshcat's JointSliders::Run() returns the final positions ([#18215][_#18215])
* Support keycodes in Meshcat's JointSliders ([#18087][_#18087])
* Add capsule support for Meshcat ([#17319][_#17319])
* Add Parser::AddModelsFromString ([#18110][_#18110])
* Add new Parser::AddModels function ([#18208][_#18208])
* Add ScrewJoint constructor that accepts axis vector ([#18019][_#18019])
* Parse screw joints from SDFormat ([#18127][_#18127])
* Parse screw joints from URDF ([#18191][_#18191])
* Add RationalForwardKinematics ([#17572][_#17572])
* Add ExternallyAppliedSpatialForceMultiplexer ([#18171][_#18171])
* Add 16U PNG and TIFF depth support to remote rendering ([#18205][_#18205])
* Add support for gamepads in Meshcat ([#18243][_#18243])
* Implement CalcVolume for Mesh and Convex Shapes ([#18312][_#18312])
* Implement basic material and mesh support in MuJoCo parser ([#18317][_#18317])

Fixes

* Correct calculations of spatial velocity across ScrewJoint ([#18019][_#18019])
* Add hydroelastic forces to continuous mode reaction forces computation ([#18057][_#18057])
* Add multibody::world_frame_index() getter ([#18149][_#18149])
* Change world body name from "WorldBody" to "world" ([#18158][_#18158])
* Fix Meshcat's PerspectiveCamera msgpack ([#18213][_#18213])
* Fix two bugs in GlobalInverseKinematics ([#18206][_#18206])
* Improve MultibodyPlant detection/feedback for invalid mass/inertia properties ([#18153][_#18153]) 
* Add FixedOffsetFrame::SetPoseInParentFrame() ([#18198][_#18198])

## Planning

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


New features

* None

Fixes

* None

## Tutorials and examples

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

* Add python flavor of the hardware_sim example ([#18066][_#18066])

## Miscellaneous features and fixes

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

New features

* Add optional use_robot_state port to Diff IK Integrator ([#18073][_#18073])
* Expose utime input port for IiwaCommandSender and IiwaStatusSender ([#18167][_#18167])
* Add tests for RotationMatrix::ToRollPitchYaw() ([#18172][_#18172])
* Convert between std::vector<VectorX<T>> and MatrixX<T> ([#18183][_#18183])
* Support prismatic joint in RationalForwardKinematics ([#18179][_#18179])
* Apply stereographic projection substitution for more general trigonometric polynomial ([#18203][_#18203])
* Compute monomial basis with the degree for each variable <= 1 ([#18222][_#18222])
* Add jaco lcm time input/output ports ([#18220][_#18220])
* Add helper systems ColorizeDepthImage, ColorizeLabelImage, and ConcatenateImages ([#17597][_#17597])
* Add StackedTrajectory ([#18192][_#18192])
* Parallelize point cloud operations with OpenMP and use `common_robotics_utilities`'s DynamicSpatialHashedVoxelGrid for voxel filter ([#18216][_#18216])

Fixes

* Remove manipulation/util/geometry_inspector ([#18058][_#18058])
* Fix SparseMatrix<Expression> data loss ([#18219][_#18219])
* Don't use march=broadwell on Ubuntu arm64 machines in @drake//math ([#18238][_#18238])
<!-- included as it effects a visualizer; should it be limited to workspace? -->
* Fully evict pydrake from drake-visualizer ([#18144][_#18144])

## pydrake bindings

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

New features

* Add get_module_name() to cpp_template.py ([#18169][_#18169])
* Use Python's typing for generic types ([#18117][_#18117])
* Add repr() for spatial vectors ([#18112][_#18112])
* Add type canonicalization for all unsigned ints ([#18115][_#18115])
* Improve BsplineTrajectory usability ([#18182][_#18182])
* Bind dataclass-like schemas for serializable structs ([#18109][_#18109])
* Move manip/util/show_model to pydrake/visualization/model_visualizer ([#18180][_#18180])
* Add a Stop Running button and Meshcat reuse to ModelVisualizer ([#18284][_#18284])
* Add VideoWriter system ([#17597][_#17597])

Fixes

* py serialize: Add missing .Finished() for no-doc case ([#18207][_#18207])
* 'import pydrake' now loads its native code immediately, instead of deferring it ([#18141][_#18141])
* Move import-error handling out of pydrake.all ([#18081][_#18081])
* Remove spurous keep-alive annotations ([#18301][_#18301])
* Do not show stack trace for meldis on sigint ([#18293][_#18293])

Newly bound

* pydrake.geometry.Meshcat.SetTriangleColorMesh ([#18100][_#18100])
* pydrake.math.RigidTransform.IsExactlyEqualTo ([#18173][_#18173])
* pydrake.math.RigidTransform.GetmaximumAbsoluteDifference ([#18173][_#18173])
* pydrake.math.RigidTransform.GetmaximumAbsoluteTranslationDifference ([#18173][_#18173])
* pydrake.math.RotationMatrix.ToRollPitchYaw ([#18187][_#18187])
* pydrake.math.VectorToSkewSymmetric ([#18086][_#18086])
* pydrake.multibody.parsing.AddCollisionFilterGroup ([#18108][_#18108])
* pydrake.multibody.parsing.AddDirectives ([#18108][_#18108])
* pydrake.multibody.parsing.AddModel ([#18108][_#18108])
* pydrake.multibody.parsing.AddModelInstance ([#18108][_#18108])
* pydrake.multibody.parsing.AddWeld ([#18108][_#18108])
* pydrake.multibody.parsing.ModelDirective ([#18066][_#18066])
* pydrake.multibody.plant.DiscreteContactSolver ([#18214][_#18214])
* pydrake.multibody.plant.MultibodyPlant.get_discrete_contact_solver ([#18214][_#18214])
* pydrake.multibody.plant.MultibodyPlant.set_discrete_contact_solver ([#18214][_#18214])
* pydrake.multibody.plant.MultibodyPlant.MakeActuatorSelectorMatrix ([#18209][_#18209])
* pydrake.multibody.tree.ScrewJoint ([#18049][_#18049])
* pydrake.systems.Context.SetStateAndParametersFrom ([#18267][_#18267])
* pydrake.systems.framework.State.get_abstract_state ([#18070][_#18070])
* pydrake.systems.primitives.PortSwitch ([#18072][_#18072])
* pydrake.systems.sensors.LcmImageArrayToImages ([#18237][_#18237])
* pydrake.systems.sensors.Image.Image (default constructor) ([#17597][_#17597])

## Build system

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

New features

* Provide Python module information in drake-config.cmake ([#18201][_#18201])
* Install .pyi files ([#18074][_#18074])

Fixes

* Fix installation of symlinks ([#18107][_#18107])
* Improve error reporting when pydrake import fails ([#18015][_#18015])
* Remove errors on Ubuntu arm64 ([#18261][_#18261])
* Drop macOS Big Sur support ([#18299][_#18299])

## Build dependencies

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

* Remove dependency on msgpack_lite_js ([#18269][_#18269])
* Fully evict pydrake from drake-visualizer ([#18144][_#18144])
* Add dependency on bazelbuild/platforms ([#18250][_#18250])
* Don't abort for unsupported macOS versions ([#18210][_#18210])
* Upgrade abseil_cpp_internal to latest commit ([#18244][_#18244])
* Upgrade common_robotics_utilities to latest commit ([#18128][_#18128])
* Upgrade curl_internal to latest release 7.86.0 ([#18285][_#18285])
* Upgrade dm_control_internal to latest commit ([#18244][_#18244])
* Upgrade meshcat to latest commit ([#18132][_#18132]) ([#18269][_#18269])
* Upgrade petsc to latest release v3.18.1 ([#18244][_#18244])
* Upgrade ros_xacro_internal to latest release 1.14.14 ([#18244][_#18244])
* Upgrade sdformat_internal to 13.1.0 ([#18130][_#18130])
* Upgrade styleguide to latest commit ([#18244][_#18244])
* Upgrade tinyobjloader to latest commit ([#18244][_#18244])
* Upgrade typing_extensions_internal to latest release 4.4.0 ([#18244][_#18244])
* Upgrade wheel build's libjpeg-turbo to release 2.1.4 ([#18189][_#18189])
* Upgrade wheel build's libpng to release 1.6.38 ([#18189][_#18189])

## Newly-deprecated APIs

* drake::common::PiecewisePolynomial::Cubic ([#18319][_#18319])
* drake::multibody::FixedOffsetFrame::SetPoseInBodyFrame ([18198][_#18198])
* drake::multibody::MultibodyPlant::GetOutputPort("continuous_state") (and model instance-specific prefixed state port, e.g., "my_robot_continuous_state") ([#18274][_#18274])
* drake::multibody::parsing::AddModelFromString ([#18110][_#18110])
* drake::multibody::parsing::PopulateFromEnvironment("ROS_PACKAGE_PATH") ([#18226][_#18226])
* drake::solvers::DrealSolver ([#18156][_#18156])
* drake::solvers::SolverType::kDReal ([#18156][_#18156])
* drake::solvers::IbexSolver ([#18156][_#18156])
* drake::solvers::SolverType::kIbex ([#18156][_#18156])
* drake::symbolic::SubstituteStereographicProjection symbolic::Exprssion overload  ([#18179][_#18179])
* drake::systems::LeafSystem::DeclarePeriodicDiscreteUpdate ([#18106][_#18106])
* drake::systems::LeafSystem::DeclarePeriodicPublish ([#18106][_#18106])
* drake::systems::LeafSystem::DeclarePeriodicUnrestrictedUpdate ([#18106][_#18106])
* drake::systems::System::CalcDiscreteVariableUpdates ([#18106][_#18106])
* drake::systems::System::CalcUnrestrictedUpdate ([#18106][_#18106])
* drake::systems::System::Publish ([#18106][_#18106])
* pydrake.multibody.parsing.AddModelFromString ([#18110][_#18110])
* pydrake.solvers.dreal.DrealSolver ([#18156][_#18156])
* pydrake.solvers.ibex.IbexSolver ([#18156][_#18156])
* pydrake.solvers.SolverType.kDRael ([#18156][_#18156])
* pydrake.solvers.SolverType.kIbex ([#18156][_#18156])
* pydrake.systems.LeafSystem.DeclarePeriodicDiscreteUpdate ([#18106][_#18106])
* pydrake.systems.LeafSystem.DeclarePeriodicPublish ([#18106][_#18106])
* pydrake.systems.LeafSystem.DeclarePeriodicUnrestrictedUpdate ([#18106][_#18106])
* pydrake.systems.System.CalcDiscreteVariableUpdates ([#18106][_#18106])
* pydrake.systems.System.CalcUnrestrictedUpdate ([#18106][_#18106])
* pydrake.systems.System.Publish ([#18106][_#18106])
* pydrake.visualization.meldis ([#18160][_#18160])
* pydrake.visualization.plotting ([#18160][_#18160])
* Referencing the world body in MultibodyPlant as "WorldBody" (it is now "world") ([#18158][_#18158])
* Deprecate cds ([#18156][_#18156])
* Deprecate dreal ([#18156][_#18156])
* Deprecate ibex ([#18156][_#18156])
* Deprecate picosat ([#18156][_#18156])


## Removal of deprecated items

* The build target, file, and function for drake::autodiffxd_make_coherent ([#18224][_#18224])
* The build target and header file: @drake//common:symbolic and drake/common/symbolic.h ([#18224][_#18224])
* The build target @drake//common:symbolic_decompose (and header file drake/common/sybmolic_latex.h) ([#18224][_#18224])
* The build target @drake//common:symbolic_latex ([#18224][_#18224])
* The build target @drake//common:symbolic_trigonometric_polynomial ([#18224][_#18224])
* drake::multibody::Body::get_default_mass() ([#18242][_#18242])
* drake::symbolic::DecomposeAffineExpressions (reference-valued coeffs overload) ([#18224][_#18224])
* drake::systems::sensors::ApplyCameraConfig() (without lcm_buses) ([#18069][_#18069])
* drake::systems::System::GetPeriodicEvents() (no parameters) ([#18094][_#18094])
* pydrake.geometry.MeshcatVisualizerCpp ([#18225][_#18225])
* pydrake.geometry.MeshcatPointCloudVisualizerCpp ([#18225][_#18225])
* pydrake.multibody.tree.ScrewJoint constructor with default parameters ([#18122][_#18122])

# Notes

This release provides [pre-compiled binaries](https://github.com/RobotLocomotion/drake/releases/tag/v1.10.0) named
``drake-20221116-{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> -->
[_#17319]: https://github.com/RobotLocomotion/drake/pull/17319
[_#17572]: https://github.com/RobotLocomotion/drake/pull/17572
[_#17597]: https://github.com/RobotLocomotion/drake/pull/17597
[_#18015]: https://github.com/RobotLocomotion/drake/pull/18015
[_#18019]: https://github.com/RobotLocomotion/drake/pull/18019
[_#18043]: https://github.com/RobotLocomotion/drake/pull/18043
[_#18048]: https://github.com/RobotLocomotion/drake/pull/18048
[_#18049]: https://github.com/RobotLocomotion/drake/pull/18049
[_#18057]: https://github.com/RobotLocomotion/drake/pull/18057
[_#18058]: https://github.com/RobotLocomotion/drake/pull/18058
[_#18063]: https://github.com/RobotLocomotion/drake/pull/18063
[_#18066]: https://github.com/RobotLocomotion/drake/pull/18066
[_#18068]: https://github.com/RobotLocomotion/drake/pull/18068
[_#18069]: https://github.com/RobotLocomotion/drake/pull/18069
[_#18070]: https://github.com/RobotLocomotion/drake/pull/18070
[_#18072]: https://github.com/RobotLocomotion/drake/pull/18072
[_#18073]: https://github.com/RobotLocomotion/drake/pull/18073
[_#18074]: https://github.com/RobotLocomotion/drake/pull/18074
[_#18078]: https://github.com/RobotLocomotion/drake/pull/18078
[_#18081]: https://github.com/RobotLocomotion/drake/pull/18081
[_#18086]: https://github.com/RobotLocomotion/drake/pull/18086
[_#18087]: https://github.com/RobotLocomotion/drake/pull/18087
[_#18090]: https://github.com/RobotLocomotion/drake/pull/18090
[_#18094]: https://github.com/RobotLocomotion/drake/pull/18094
[_#18100]: https://github.com/RobotLocomotion/drake/pull/18100
[_#18106]: https://github.com/RobotLocomotion/drake/pull/18106
[_#18107]: https://github.com/RobotLocomotion/drake/pull/18107
[_#18108]: https://github.com/RobotLocomotion/drake/pull/18108
[_#18109]: https://github.com/RobotLocomotion/drake/pull/18109
[_#18110]: https://github.com/RobotLocomotion/drake/pull/18110
[_#18112]: https://github.com/RobotLocomotion/drake/pull/18112
[_#18114]: https://github.com/RobotLocomotion/drake/pull/18114
[_#18115]: https://github.com/RobotLocomotion/drake/pull/18115
[_#18117]: https://github.com/RobotLocomotion/drake/pull/18117
[_#18122]: https://github.com/RobotLocomotion/drake/pull/18122
[_#18124]: https://github.com/RobotLocomotion/drake/pull/18124
[_#18127]: https://github.com/RobotLocomotion/drake/pull/18127
[_#18128]: https://github.com/RobotLocomotion/drake/pull/18128
[_#18130]: https://github.com/RobotLocomotion/drake/pull/18130
[_#18132]: https://github.com/RobotLocomotion/drake/pull/18132
[_#18135]: https://github.com/RobotLocomotion/drake/pull/18135
[_#18136]: https://github.com/RobotLocomotion/drake/pull/18136
[_#18140]: https://github.com/RobotLocomotion/drake/pull/18140
[_#18141]: https://github.com/RobotLocomotion/drake/pull/18141
[_#18144]: https://github.com/RobotLocomotion/drake/pull/18144
[_#18149]: https://github.com/RobotLocomotion/drake/pull/18149
[_#18153]: https://github.com/RobotLocomotion/drake/pull/18153
[_#18156]: https://github.com/RobotLocomotion/drake/pull/18156
[_#18158]: https://github.com/RobotLocomotion/drake/pull/18158
[_#18160]: https://github.com/RobotLocomotion/drake/pull/18160
[_#18167]: https://github.com/RobotLocomotion/drake/pull/18167
[_#18169]: https://github.com/RobotLocomotion/drake/pull/18169
[_#18171]: https://github.com/RobotLocomotion/drake/pull/18171
[_#18172]: https://github.com/RobotLocomotion/drake/pull/18172
[_#18173]: https://github.com/RobotLocomotion/drake/pull/18173
[_#18179]: https://github.com/RobotLocomotion/drake/pull/18179
[_#18180]: https://github.com/RobotLocomotion/drake/pull/18180
[_#18182]: https://github.com/RobotLocomotion/drake/pull/18182
[_#18183]: https://github.com/RobotLocomotion/drake/pull/18183
[_#18184]: https://github.com/RobotLocomotion/drake/pull/18184
[_#18185]: https://github.com/RobotLocomotion/drake/pull/18185
[_#18187]: https://github.com/RobotLocomotion/drake/pull/18187
[_#18189]: https://github.com/RobotLocomotion/drake/pull/18189
[_#18190]: https://github.com/RobotLocomotion/drake/pull/18190
[_#18191]: https://github.com/RobotLocomotion/drake/pull/18191
[_#18192]: https://github.com/RobotLocomotion/drake/pull/18192
[_#18198]: https://github.com/RobotLocomotion/drake/pull/18198
[_#18201]: https://github.com/RobotLocomotion/drake/pull/18201
[_#18203]: https://github.com/RobotLocomotion/drake/pull/18203
[_#18205]: https://github.com/RobotLocomotion/drake/pull/18205
[_#18206]: https://github.com/RobotLocomotion/drake/pull/18206
[_#18207]: https://github.com/RobotLocomotion/drake/pull/18207
[_#18208]: https://github.com/RobotLocomotion/drake/pull/18208
[_#18209]: https://github.com/RobotLocomotion/drake/pull/18209
[_#18210]: https://github.com/RobotLocomotion/drake/pull/18210
[_#18213]: https://github.com/RobotLocomotion/drake/pull/18213
[_#18214]: https://github.com/RobotLocomotion/drake/pull/18214
[_#18215]: https://github.com/RobotLocomotion/drake/pull/18215
[_#18216]: https://github.com/RobotLocomotion/drake/pull/18216
[_#18219]: https://github.com/RobotLocomotion/drake/pull/18219
[_#18220]: https://github.com/RobotLocomotion/drake/pull/18220
[_#18222]: https://github.com/RobotLocomotion/drake/pull/18222
[_#18224]: https://github.com/RobotLocomotion/drake/pull/18224
[_#18225]: https://github.com/RobotLocomotion/drake/pull/18225
[_#18226]: https://github.com/RobotLocomotion/drake/pull/18226
[_#18237]: https://github.com/RobotLocomotion/drake/pull/18237
[_#18238]: https://github.com/RobotLocomotion/drake/pull/18238
[_#18242]: https://github.com/RobotLocomotion/drake/pull/18242
[_#18243]: https://github.com/RobotLocomotion/drake/pull/18243
[_#18244]: https://github.com/RobotLocomotion/drake/pull/18244
[_#18250]: https://github.com/RobotLocomotion/drake/pull/18250
[_#18261]: https://github.com/RobotLocomotion/drake/pull/18261
[_#18267]: https://github.com/RobotLocomotion/drake/pull/18267
[_#18269]: https://github.com/RobotLocomotion/drake/pull/18269
[_#18271]: https://github.com/RobotLocomotion/drake/pull/18271
[_#18272]: https://github.com/RobotLocomotion/drake/pull/18272
[_#18274]: https://github.com/RobotLocomotion/drake/pull/18274
[_#18280]: https://github.com/RobotLocomotion/drake/pull/18280
[_#18284]: https://github.com/RobotLocomotion/drake/pull/18284
[_#18285]: https://github.com/RobotLocomotion/drake/pull/18285
[_#18291]: https://github.com/RobotLocomotion/drake/pull/18291
[_#18293]: https://github.com/RobotLocomotion/drake/pull/18293
[_#18299]: https://github.com/RobotLocomotion/drake/pull/18299
[_#18301]: https://github.com/RobotLocomotion/drake/pull/18301
[_#18302]: https://github.com/RobotLocomotion/drake/pull/18302
[_#18309]: https://github.com/RobotLocomotion/drake/pull/18309
[_#18312]: https://github.com/RobotLocomotion/drake/pull/18312
[_#18317]: https://github.com/RobotLocomotion/drake/pull/18317
[_#18319]: https://github.com/RobotLocomotion/drake/pull/18319
<!-- <end issue links> -->

<!--
  Current oldest_commit a1a5acb35c41708a2a6f0b00c7391cf79d7a3e05 (exclusive).
  Current newest_commit 2ae55dd652945cc26ab8ae7f56f945dde1b6e021 (inclusive).
-->
