Drake v1.15.0

Back to Release Notes

Announcements

  • Drake’s sample models (e.g., package://drake/manipulation/models/jaco_description/...) are in the process of moving into their own package://drake_models instead of package://drake (#18955, #19046, #19104, #19160).
    • The drake_models package is not part of Drake’s default install media (with the exception of the docker images, which still include the models). The first time any file there is used, the drake_model data will be downloaded automatically into the user’s cache directory.
    • This drastically reduces the size of a default Drake install, and brings pip install drake on par with the other install media.
    • For the moment, most mesh files and the Atlas models have been relocated to the new package. More files will follow in future releases.
  • Drake’s PackageMap now supports packages fetched from http:// or https:// URLs (#18955). You can use this to fetch your own models on demand.
  • When installing from source, Drake’s CMake build allows compiling for any Python version >= 3.8 via -DPython_EXECUTABLE=/path/to/desired/python3 (#19023).

Breaking changes since v1.14.0

Refer to our Drake Stability Guidelines for our policy on API changes.

Recently we’ve clarified our stability policy for struct aggregate initialization. See #19145 for the changes.

Changes since v1.14.0

Dynamical Systems

New features

  • None

Fixes

  • None

Mathematical Program

New features

  • Add convenience overloads for AddIndeterminates() (#18992)
  • Add AddQuadraticConstraint() and quadratic_constraints() to MathematicalProgram (#19016)
  • PiecewisePolynomial supports serialization (#19062)
  • Add CompositeTrajectory (#19163)
  • Implement WriteObj() for VPolytope (#19117)

Fixes

  • Allow duplicated variables in MathematicalProgram’s AddDecisionVariables() and AddIndeterminates() (#19087)
  • Provide clp_version in ClpSolverDetails (#19213)

Multibody Dynamics and Geometry

New features

  • Add SpatialInertia::SolidBoxWithMass() and SpatialInertia::CubeWithMass() (#19141, #19171)
  • Adds GetPositionNames(), GetVelocityNames(), GetStateNames(), and GetActuatorNames() to MultibodyPlant (#19162, #19174)
  • Add support for remote packages (#18955)
  • Hoist recording logic from MeshcatVisualizer to Meshcat (#18433)
  • Port mujoco parser to diagnostic policy (#19157)

Fixes

  • Allow duplicate geometry names in URDF input (#19029)
  • By default, Meshcat proximity geometry is hidden (#19058)
  • Add names to visualization systems (when possible) (#19075)
  • Error out if <drake:diffuse_map> is specified in a URDF (#19066)
  • Fix the ordering of the Delassus operator approximation (#19082)
  • Make namespace of all three RenderEngine consistent (#18877)
  • Show hydroelastic tesselation for proximity shapes (#19085)
  • Don’t warn on equivalent package.xml files (#19111)
  • Fix mujoco default mesh name heuristic (#19124)
  • Don’t abort on invalid input for parsing (#19125)
  • Ignore trailing whitespace in mtl files (#19129)
  • Hide near-zero hydroelastic force or moment (#19112)
  • Provide name suggestions when Drake Model Directives frames have typos (#19154)
  • Add geometry::optimization::MakeConvexSets() (#19207)
  • Allow QueryObject signed distance between a filtered geometry pair (#19176)
  • Remove deprecated “register geometry to geometry” from SceneGraph (#19177)

Planning

New features

  • Support passing MathematicalProgram to DirectCollocation constructor (#19156)

Fixes

  • None

Tutorials and examples

  • Move meshes and models into drake_models (#19160)
  • Remove unused Atlas scene objects (blocks, etc.) (#19159)

Miscellaneous features and fixes

New features

  • PointCloud can morph its fields after construction (#18987)
  • Support passing a meshcat instance to ApplyDefaultVisualization() (#19048)
  • Add DRAKE_ALLOW_NETWORK governor (#19050)
  • Add RpyDtFromAngularVelocityInChild() (#19018)
  • Add tool for converting OBJ files to SDFormat files (#18886)

Fixes

  • Add filename, line, and column to C++ YAML error messages (#18952)
  • Sanity-check the theta arg to MakeRotationMatrixZ(), etc. (#19040)

pydrake bindings

New features

  • Provide automatic sanitization of field names in namedview (#19196)
  • Bind CalcRpyDtFromAngularVelocityInChild() (#19074)
  • Add frame (aka triad) visualization function (#19152)
  • Bind math/quaternion.h (#19208)

Fixes

  • Bind ImageWriter (#19095)
  • Bind CameraConfig.MakeCameras() (#19184)
  • Bind SpatialInertia geometries (#19134, #19172)
  • Bind InverseDynamics & MultibodyPlant (#19031)
  • Bind set_default_damping() for RevoluteJoint, PrismaticJoint (#19015)
  • Bind AddDistanceConstraint() and AddBallConstraint() (#19026)
  • Bind Polynomial::EvaluateUnivariate() (#19118)
  • Don’t crash on a failed reload (#19014)
  • Enhance model_visualizer command line (#19131)
  • Improve error message for namedview (#19148)
  • Add missing Python kwarg for Polynomial constructor (#19063)

Build system

  • Add CMake support for selecting any Python version (#19023)
  • Switch drake_models to a remote package with public visibility (#19046, #19104)

Build dependencies

  • Drop dependency on python lxml (#19027)
  • Drop vestigial meshcat dependencies (#19080)
  • Upgrade abseil_cpp_internal to latest commit (#19185)
  • Upgrade bazel to 6.1.1 (#19012)
  • Upgrade buildifier to latest release 6.1.0 (#19189)
  • Upgrade clang to 14.0.0 on Ubuntu (#19030)
  • Upgrade common_robotics_utilities to latest commit (#19036)
  • Upgrade curl_internal to latest release curl-8_0_1 (#19185)
  • Upgrade dm_control_internal to latest commit (#19185)
  • Upgrade fcl_internal to latest commit (#19006)
  • Upgrade fcl_internal to latest commit (#19185)
  • Upgrade lcm to latest commit (#19185)
  • Upgrade msgpack_internal to latest release cpp-6.0.0 (#19185)
  • Upgrade mypy_internal to latest release v1.2.0 (#19185)
  • Upgrade petsc to latest release v3.19.0 (#19186)
  • Upgrade rules_python to latest release 0.20.0 (#19185)
  • Upgrade scs_internal to latest release 3.2.3 (#19185)
  • Upgrade sdformat_internal to latest release sdformat13_13.4.1 (#19185)
  • Upgrade statsjs to latest commit (#19185)
  • Upgrade tinyobjloader to latest commit (#19185)

Newly-deprecated APIs

  • drake::geometry::render::kHasRenderEngineGl (#18877)
  • drake::geometry::render::MakeRenderEngineGl (#18877)
  • drake::geometry::render::RenderEngineGlParams (#18877)

Removal of deprecated items

  • drake::geometry::SceneGraph::RegisterGeometry against GeometryId (#19177)
  • drake::geometry::SceneGraph::GetPoseInParent (#19177)
  • //multibody/tree:multibody_element (#19216)

Notes

This release provides pre-compiled binaries named drake-20230418-{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.