Announcements
- Drake builds have switched to use a customized version of VTK, compiled from source
(#19945):
- Previously, on macOS and Ubuntu 20.04 (“Focal”) Drake used a Drake-specific precompiled binary archive downloaded at compile-time. On Ubuntu 22.04 (“Jammy”), Drake previously used the Ubuntu-provided shared libraries.
- Users on macOS (who are not running Drake’s unit tests) no longer need the
robotlocomotion/director
tap and may remove it. - For CMake users on Ubuntu 20.04 (“Focal”), Drake’s source build and pre-compiled binaries no longer provide a copy of VTK 9.1. If you still need Drake’s build of VTK 9.1 in your project, you can download it here: https://drake-packages.csail.mit.edu/vtk/vtk-9.1.0-3-focal-x86_64.tar.gz
- To avoid ABI/ODR headaches, Drake’s VTK build uses a custom namespace and hidden symbols. This is particularly an advantage for wheel builds.
- During manual testing on macOS, we found that RenderEngineVtk sometimes does
not obey
show_window=true
. It is not clear whether this is a new bug due to the upgrade. Refer to #20144 for further discussion. - On macOS, when building Drake from source as a bazel external, you must not
have
build --force_pic
in your.bazelrc
file (#20217). - Drake’s minimum compatible Bazel verison has increased to
bazel >= 5.1
.
- CMake users no longer need to install Bazel when building Drake from source (#20064).
Breaking changes since v1.20.0
- None
Refer to our Drake Stability Guidelines for our policy on API changes.
Changes since v1.20.0
Dynamical Systems
New features
- Support default scalars for TrajectorySource (#19967)
- Add to_string for Image metadata enums (#20015)
- Add PixelScalar Image metadata enum (#20015)
- Add an initialization event to LcmSubscriberSystem (#20072)
- Adjust “sole port” getters to work around deprecation (#20090)
Fixes
- Set subsystem names within InverseDynamicsController (#20078)
- Use descriptive InverseDynamics port names (#20079)
- Indicate deprecated ports in Graphviz output (#20080)
- Fix exception from empty renderer_class config (#20087)
Mathematical Program
New features
- Handle converting HPolyhedron to VPolytope if it is not full dimensional (#20001)
- Add HyperRectangles and ConvexSet::CalcVolume() (#19982)
- Implement symbolic::Polynomial::Roots() (#20161)
- Add polynomial matrix multiplication overloads (#20099)
Fixes
- GraphOfConvexSets: don’t try to display costs for convex restriction solutions (#20118)
- Improve error message for DecomposeLinearExpression and DecomposeAffineExpression (#20065)
- Give the default Variable a name (#20164)
Multibody Dynamics and Geometry
New features
- Add MultibodyPlant::GetDefaultPositions() (#19204)
- Add lights to RenderEngineVtkParams (#19948)
- RenderEngineVtk consumes and renders glTF (#19961)
- Support ApplyMultibodyPlantConfig for an existing MultibodyPlant(#20071)
- Actuators with PD control implicilty integrated with SAP (#20111)
Fixes
- Fix friction in CalcHydroelasticContactForces in continuous mode simulation (#20022)
- Fix RenderEngineVtk upside down glTF textures (#20089)
- URDF parser chooses a canonical frame when parsing planar joint (#20107)
- Fix alpha sliders for MeshcatVisualizer and Meldis for complex geometries (#20140)
- Meldis shows tessellated hydro shapes (#20179)
Planning
New features
Fixes
- None
Tutorials and examples
- Assign missing texture colors in manipulation station (#20096)
Miscellaneous features and fixes
- Adapat TRI’s internal
Parallelism
for Drake (#20093) - Port PointCloud to new Parallelism API (#20093)
- Fix some awkward grammar in an error message (#20060)
- Rewrite the DARE solver to use a faster algorithm (#20104)
- Configure camera position from Meshcat (#19968)
- The Meshcat control panel is now resizable (#20000)
- Add RotationMatrix::MakeClosestRotationToIdentityFromUnitZ (#20107)
pydrake bindings
New features
- Add bindings for CspaceFreePolytope methods (#19574)
- Add binding for Systems::ValidateContext (#20073)
- Add bindings for LcmInterfaceSystem methods (#20074)
- Add bindings for MultibodyPlant::CalcGeneralizedForce() (#20102)
- Simulator.AdvanceTo is interruptible by default (#20130)
Fixes
- Fix GraphOfConvexSets.GetSolutionPath segfault (#20050)
- Improve error message for missing witness functions (#20106)
- Bind Formula(bool) constructor (#20119)
- Add missing repr and docs for polytope options (#20181)
Build system
- Change clang-format to a testonly dependency (#20028)
- CMake source builds will use bazelisk to download Bazel when necessary (#20064)
- CMake users no longer need to install Bazel before building Drake from source.
- Provide install_prereqs opt-in/opt-out flags for installing Bazel on Ubuntu (#20046)
- Fix model_visualizer –show_rgbd_sensor (#20112)
- Drake’s minimum compatible Bazel verison has increased to
bazel >= 5.1
(#19945)
Build dependencies
- Add vendored copy of bazelisk (#20064)
- Build vendored VTK from source (named
@vtk_internal
) (#19945, #20068) - Upgrade abseil_cpp_internal to latest commit (#20145)
- Upgrade buildifier to latest release v6.3.3 (#20148)
- Upgrade googlebenchmark to latest release v1.8.3 (#20148)
- Upgrade gurobi to 10.0 (#19766)
- Upgrade gymnasium_py to latest release v0.29.1 (#20148)
- Upgrade gz_math_internal to latest release gz-math7_7.3.0 (#20146)
- Upgrade meshcat to latest commit (#20140)
- Upgrade mypy_internal to latest release v1.5.1 (#20148)
- Upgrade rules_python to latest release 0.25.0 (#20148)
- Upgrade stable_baselines3_internal to latest release v2.1.0 (#20147)
- Upgrade tinyobjloader_internal to latest commit (#20148)
- Upgrade voxelized_geometry_tools to latest commit (#20163)
Newly-deprecated APIs
drake::lcm::DrakeLcm::get_lcm_instance
(#20115)drake::multibody::Parser::AddAllModelsFromFile
(#19978)drake::multibody::Parser::AddModelFromFile
(#19978)drake::systems::controllers::InverseDynamics::get_output_port_force
(#20079)drake::systems::controllers::InverseDynamics
input port nameu0
is changed toestimated_state
(#20079)drake::systems::controllers::InverseDynamics
input port nameu1
is changed todesired_acceleration
(#20079)drake::systems::controllers::InverseDynamics
output port namey0
is changed togeneralized_force
(#20079)drake::systems::GenerateHtml
(#20183)drake::systems::sensors::Image<drake::systems::sensors::PixelType::kExpr>
(#20023)drake::systems::sensors::PixelFormat::kExpr
(#20023)drake::systems::sensors::PixelType::kExpr
(#20023)- The
@double_conversion
external (#19945)- The repository rule will continue to work during the deprecation window, but Drake no longer installs the Ubuntu package; if you need the package, ensure your project’s setup script install it.
- The
@glew
external (#19945)- The repository rule will continue to work during the deprecation window, but Drake no longer installs the Ubuntu package; if you need the package, ensure your project’s setup script install it.
- The
@liblz4
external (#19945)- The repository rule will continue to work during the deprecation window, but Drake no longer installs the Ubuntu package; if you need the package, ensure your project’s setup script install it.
- The
@liblzma
external (#19945)- The repository rule will continue to work during the deprecation window, but Drake no longer installs the Ubuntu package; if you need the package, ensure your project’s setup script install it.
- The
@vtk
external (#19945)- The repository rule will continue to work during the deprecation window, but Drake no longer installs the Ubuntu package; if you need the package, ensure your project’s setup script install it.
Removal of deprecated items
drake::geometry::optimization::GetCollisionGeometries
(#20085)drake::planning::MultipleShooting::timestep
(#20085)drake::planning::MultipleShooting::fixed_timestep
(#20085)drake::planning::MultipleShooting::timesteps_are_decision_variables
(#20085)drake::solvers::SolutionResult::kUnknownError
(#20085)drake::systems::lcm::Serializer::Clone
(#20085)drake::visualization::ApplyVisualizationConfig
overload taking a const SceneGraph (#20085)pydrake.planning.AddDirectCollocationConstraint(timestep=...)
(#20085)pydrake.planning.DirectCollocation(minimum_timestep=..., maximum_timestep=...)
(#20085)pydrake.planning.DirectTranscription(fixed_timestep=...)
(#20085)pydrake.systems.primitives.DiscreteTimeDelay(delay_timesteps=...)
(#20085)
Notes
This release provides pre-compiled binaries named
drake-20230914-{focal|jammy|mac|mac-arm64}.tar.gz
. See Stable Releases for instructions on how to use them.
Drake binary releases incorporate a pre-compiled version of SNOPT as part of the Mathematical Program toolbox. Thanks to Philip E. Gill and Elizabeth Wong for their kind support.