Drake v1.28.0

Back to Release Notes

Announcements

  • Most model files (.urdf and .sdf) previously located within the Drake tree are now in the https://github.com/RobotLocomotion/models repository.
    • This leads to path changes like: "package://drake/examples/manipulation_station/models/sphere.sdf" to "package://drake_models/manipulation_station/sphere.sdf".
  • The meaning of the Convex shape has changed. Previously it was a way for the user to communicate that the provided mesh was a convex polytope. Now, it’s a request for Drake to use the convex hull of an arbitrary mesh. (#21147)
    • The mesh declared as Convex (or using <drake:declare_convex> in a model file) need no longer be convex itself.
    • A tetrahedral vtk mesh or .gltf mesh can be declared convex (its convex hull will be used).
    • Performance of point contact with convex hulls is also improved.

Breaking changes since v1.27.0

  • Change the type of F in LinearMatrixInequalityConstraint from std::vector<Eigen::Ref<const Eigen::MatrixXd>> to std::vector<Eigen::MatrixXd>. (#21152)
  • Due to the changes in the Convex shape semantics and visualization (#21147, #21189), a Convex used with an illustration role or proximity role will no longer render as the mesh, but render as a faceted polytope (its convex hull).
    • If you need it to render it as the source mesh, declare it as Mesh instead of Convex.

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

Changes since v1.27.0

Dynamical Systems

New features

  • Implement DiscreteTimeIntegrator primitive (#21222)

Fixes

  • None

Mathematical Program

New features

  • Change the type of F in LinearMatrixInequalityConstraint (#21152)
  • Add optional sparsity groups to MakeSemidefiniteRelaxation (#21043)
  • Add SolverOptions to IrisOptions (#21182)
  • Add get_sparse_A() and GetDenseA() to L2NormCost (#21199)
  • MosekSolver treats LMI as affine cone constraints (#21117)
  • GurobiSolver supports L2NormCost (#21256)
  • Clarabel and SCS support L2NormCost (#21271)
  • Mosek supports L2NormCost (#21274)
  • Add method for finding inner approximations of HPolyhedron objects (#20931)

Fixes

  • Reinitialize polytope at start of iteration via A and b (#21248)

Multibody Dynamics and Geometry

New features

  • Report accumulated collision filter groups (#21138)
  • Update definition of Convex shape to mean “use the convex hull” (#21147)
  • Add Shape::Visit (#21181)
  • Convex shapes render as flat-shaded convex polytopes in visual roles (#21189, #21281)
  • Mujoco parser supports new autolimits (#21205)
  • Implement MultibodyPlant::RemoveJointActuator (#20711)
  • Allow model directive ‘add_model’ to pose free body with respect to an arbitrary frame (#21263)
  • Add SpatialInertia::Zero() (#21198)

Fixes

  • Silence gltf basisu extension warnings by default (#21183)
  • Add python bindings for Convex/Mesh GetConvexHull() (#21208)
  • AddRigidBody() defaults to zero inertia when not specified (#21198)

Planning

New features

  • Add zero derivative constraints to GcsTrajectoryOptimization (#21180)

Fixes

  • Match RobotDiagram default time step to MultibodyPlant’s default (#21098)
  • Fix bugs in IrisInConfigurationSpaceFromCliqueCover (#21237)

Tutorials and examples

  • Move pr2_description to drake_models (#21185)
  • Move manipulation_station models into drake_models (#21233)
  • Move punyo files into drake_models (#21231)
  • Move quadrotor.urdf to drake_models (#21238)
  • Move hydroelastic models to drake_models (#21244, #21258)

Miscellaneous features and fixes

  • Update IIWA .obj references to .gltf (#21079)
  • Move allegro_hand_description into drake_models (#21184)
  • Move ycb models into drake_models package (#21190)
  • Move realsense2 models into drake_models package (#21191)
  • Move manipulation station models to drake_models package (#21218)
  • Delete robot descriptions that now live in drake_models (#21243)
  • Switch Atlas to use glTF meshes (#21250)

pydrake bindings

New features

  • None

Fixes

  • Remove Eigen::Translation type caster (#21157)
  • Bind EvalBodySpatialAccelerationInWorld (#21161)
  • Ensure DiscreteValues accessors work for T != double (#21236)
  • Meldis reload logic corrected to include glTF content (#21297)

Build system

  • Install bazelisk on Ubuntu arm64 (#21201)
  • Bump C++17 to C++20 in various CMake places (#21247)
  • Overhaul how VERSION.TXT is generated (#21146)

Build dependencies

  • Straighten out repo rules for MOSEK, TBB, OpenUSD (#21155)
  • Upgrade abseil_cpp_internal to latest commit (#21260)
  • Upgrade build_bazel_apple_support to latest release 1.15.1 (#21260)
  • Upgrade buildifier to latest release v7.1.0 (#21261)
  • Upgrade com_github_nelhage_rules_boost_internal to latest commit (#21260)
  • Upgrade common_robotics_utilities to latest commit (#21260)
  • Upgrade curl_internal to latest release 8.7.1 (#21265)
  • Upgrade drake_models to latest commit (#21217, #21213, #21241, #21250, #21227, #21233, #21231, #21238, #21244, #21258, #21079, #21184, #21190, #21191, #21218)
  • Upgrade gz_math_internal to latest release 7.4.0 (#21262)
  • Upgrade msgpack_internal to latest release cpp-6.1.1 (#21260)
  • Upgrade nanoflann_internal to latest release v1.5.5 (#21260)
  • Upgrade platforms to latest release 0.0.9 (#21260)
  • Upgrade stable_baselines3_internal to latest release v2.3.0 (#21260)
  • Upgrade suitesparse_internal to latest release v7.7.0 (#21260)
  • Upgrade sdformat_internal to latest release 14.1.1 (#21262)

Newly-deprecated APIs

  • drake::multibody::SpatialInertia::SpatialInertia() (#21198)
  • drake::solvers::L2NormCost::A() (#21199)
  • pydrake.multibody.SpatialInertia.__init__() (#21198)
  • mosek_repository() without providing mirrors (#21155)

Removal of deprecated items

  • drake::multibody::BodyFrame (#21226)
  • multibody/tree/body.h (#21226)
  • pydrake.multibody.tree.BodyFrame (#21226)
  • pydrake.multibody.tree.BodyFrame_ (#21226)

Notes

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