Drake v1.35.0

Back to Release Notes

Announcements

  • MultibodyPlant now provides function SetBaseBodyJointType() which can be called pre-Finalize to control what type of joint is used for connecting unattached bodies to World (#21973).
    • The default choice remains QuaternionFloatingJoint but RpyFloatingJoint and WeldJoint are options that can be set globally or for particular Model Instances.
    • The Joint API is extended to permit setting pose and velocity generically without knowing the underlying joint type.

Breaking changes since v1.34.0

  • None

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

Changes since v1.34.0

Dynamical Systems

New features

  • None

Fixes

  • Fix RgbdSensor image size parameterization crash (#22065)

Mathematical Program

New features

  • Add a convenience method for solving mathematical programs in parallel in both C++ and Python (#21957)
  • Add CommonSolverOption::to_string (#22079)
  • Introduce ImplicitGraphOfConvexSets (#22074)
  • Leverage parallelization where possible when checking boundedness of a ConvexSet (#22084)
  • Set gradient sparsity pattern in LorentzConeConstraint and RotatedLorentzConeConstraint (#22125)
  • Update single entry of coefficients in LinearCost and QuadraticCost (#22152)
  • Parallelize ComputePairwiseIntersections() for Graph of Convex Sets (with or without continuous revolute joints) (#22142)
  • Retrieve dual solution for LinearMatrixInequalityConstraint for Mosek (#22144)
  • Parallelize the GraphOfConvexSets preprocessing stage (#21965)

Fixes

  • Throw when IpoptSolver options are invalid (#22062)
  • Use GraphOfConvexSetsOptions::preprocessing_solver_options even if a specific preprocessing_solver is not specified (#22077)
  • Fix Gurobi console logging to obey our defaults again (#22108)
  • Fix bugs where empty HPolyhedron’s were reported to be unbounded (#22117)
  • Fix the boundedness check of MinkowskiSum (#22084)
  • Fix GraphOfConvexSets when passing in a trivially-infeasible upper bound (#22090)
  • Move the warning on small-size PSD matrix to each solver backend (#22136)

Multibody Dynamics and Geometry

New features

  • Allow GeometryInstance to be registered through MultibodyPlant with clarifications on the related semantics (#22102)
  • Add precomputed values to VolumeMesh and MeshFieldLinear (#22097)
  • Allow floating bodies to use RpyFloatingJoint (#21973)

Fixes

  • RenderEngineVtk now uses EGL by default on Ubuntu (#22081)
  • Bug fixes for SapHolonomicCosnstraint and SapDriver::AddWeldConstraints() (#22057)
  • Fix //geometry/proximity:refine_mesh for cwd-relative paths (#22106)
  • Improve exception message for bad geometry (zero volume mesh) in .obj file (#21929)

Planning

New features

  • Add symbolic::Expression costs and symbolic::Formula constraints to Subgraphs in GcsTrajectoryOptimization (#22091)

Fixes

  • None

Tutorials and examples

  • None

Miscellaneous features and fixes

  • Implement drake::trajectories::FunctionHandleTrajectory (#21093)
  • Add requires clause to drake::math::RigidTransform and drake::math::RotationMatrix cast (#22094)
  • Add drake::schema::Rotation::Sample() (#22113)
  • Add SliceByTime() for drake::trajectories::PiecewisePolynomial (#22099)

pydrake bindings

New features

  • Add info_handler callback to pydrake.gym.DrakeGymEnv (#21900)
  • Bind pydrake.trajectories.FunctionHandleTrajectory (#21093)

Fixes

  • Bind copy for pydrake.perception.PointCloud (#22148)
  • Bind pydrake.solvers.LinearEqualityConstraint.UpdateCoefficients with a sparse matrix (#22151)

Build system

  • None

Build dependencies

  • Force-disable CoinUtils debugging hooks (#22063)
  • Upgrade abseil_cpp_internal to latest commit (#22118)
  • Upgrade bazel to latest release 7.4.0 (#22066)
  • Upgrade bazelisk to latest release v1.22.1 (#22119)
  • Upgrade crate_universe to latest releases (#22119)
  • Upgrade dm_control_internal to latest release 1.0.24 (#22119)
  • Upgrade drake_models to latest commit (#22103)
  • Upgrade gymnasium_py to latest release v1.0.0 (#22121)
  • Upgrade msgpack_internal to latest release cpp-7.0.0 (#22119)
  • Upgrade mujoco_menagerie_internal to latest commit (#22119)
  • Upgrade mypy_internal to latest release v1.13.0 (#22119)
  • Upgrade nanoflann_internal to latest release v1.6.2 (#22130)
  • Upgrade openusd_internal to latest release 24.11 (#22082)
  • Upgrade rules_python to 0.36.0 (#22129)
  • Upgrade rules_rust to latest release 0.53.0 (#22119)
  • Upgrade statsjs to latest commit (#22119)
  • Upgrade suitesparse_internal to latest release v7.8.3 (#22119)
  • Upgrade tinyobjloader_internal to latest commit (#22119)
  • Upgrade vtk_internal to latest commit (#22119)

Newly-deprecated APIs

  • CommonSolverOption::operator<< (#22079)

Removal of deprecated items

  • drake::geometry::MeshcatVisualizer::ResetRealtimeRateCalculator() (#22086)
  • drake::multibody::CalcSpatialInertia() with the default density value (#22086)
  • drake::multibody::HydroelasticContactInfo::HydroelasticContactInfo() with quadrature_point_data argument (#22086)
  • drake::multibody::HydroelasticContactInfo::quadrature_point_data() (#22086)
  • drake::systems::VectorSystem::VectorSystem() without direct_feedthrough argument (#22086)
  • //multibody/plant:deformable_contact_info (#22086)
  • //multibody/plant:hydroelastic_contact_info (#22086)
  • //multibody/plant:hydroelastic_quadrature_point_data (#22086)
  • //multibody/plant:hydroelastic_traction (#22086)
  • //multibody/plant:point_pair_contact_info (#22086)
  • pydrake.geometry.MeshcatVisualizer.ResetRealtimeRateCalculator() (#22086)
  • pydrake.systems.framework.VectorSystem() without direct_feedthrough argument (#22086)

Notes

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