Drake v1.11.0

Back to Release Notes

Announcements

  • A new 6-dof joint type, QuaternionFloatingJoint, is now supported. It is a breaking change; see below.

Breaking changes since v1.10.0

  • A QuaternionFloatingJoint is added for each free body. MultibodyPlant::num_joints() will change in all existing plants that had previously declared at least one free body. is_floating is explicitly declared to mean: is outboard to a 6-dof joint AND the parent body of the joint is world. (#18390)
    • If your code loops through all joints in the plant, you may need to update your code to explicitly check if the child of a joint is floating and ignore those joints (if they break your current analysis).
    • Free body APIs that MultibodyPlant provides (SetFreeBodyPose(), SetFreeBodySpatialVelocity(), etc.) still exist and are equivalent alternatives to the corresponding QuaternionFloatingJoint APIs that affect a given body. If you wrote code that had separate logic for handling dofs corresponding to bodies with explicitly created joints using Joint APIs and dofs corresponding to floating bodies using plant’s free body API, you might be doing some duplicate work.
  • Allow for torque-only mode for KUKA IIWA (#18295)
    • The contract for lcmt_iiwa_command has changed. It can now have zero-size positions when its control mode does not have positions enabled.
    • BuildIiwaControl and BuildSimplifiedIiwaControl no longer accept bool enable_feedforward_torque, but instead accept IiwaControlMode control_mode.
    • IiwaControlPorts::commanded_feedforward_torque is now renamed to IiwaControlPorts::commanded_torque.
  • optitrack’s LCM type is changed. Existing LCM logs will not decode using the new definitions. However, the changes to the existing types were only to add new fields, the existing fields have no behavioral changes so users who don’t care about the additional data shouldn’t have to change any code. (#18330)

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

Changes since v1.10.0

Dynamical Systems

New features

  • Add InputPort::Allocate() method (#18431)
  • Add TrajectorySource::UpdateTrajectory (#18434)

Fixes

  • None

Mathematical Program

New features

  • ScsSolver returns the dual solution for bounding-box, linear, second order cone constraints (#18360)
  • ScsSolver returns the dual solution for linear equality constraints (#18388)
  • Add SpatialVelocityConstraint of a frame C, fixed to frame B, relative to another frame A (#18364)
  • Add Iris support for Convex mesh geometries (#18376)
  • Add HPolyhedron::FindRedundant (#18432)

Fixes

  • Change the returned dual solution for rotated Lorentz cone constraint in MosekSolver (#18361)
  • GurobiSolver returns the best solution for all non-error results (#18367)
  • Snopt handles duplicated variables (#18401)
  • Fix Iris Hit and Run failure bug (#18439)

Multibody Dynamics and Geometry

New features

  • Add a new 6-dof joint type: QuaternionFloatingJoint (#18279)
  • Add SDFormat support for weld-type //world/joint (#18322)
  • Calculate SpatialInertia from Shape and TriangleSurfaceMesh (#18345)
  • Add a QuaternionFloatingJoint for each free body (#18390)
  • Compute generalized forces resulting from MultibodyForce (#18406)
  • Add PrismaticSpring force element and support its SDFormat parsing (#18240)

Fixes

  • Render server and clients use color images for label communication (#18344)
  • Fix issue setting meldis realtime rate display (#18412)
  • Fix bug for infinitely stiff SAP holonomic constraints (#18414)
  • Support fixed-distance constraints with SAP (#18196)

Planning

New features

  • Add RobotCollisionType (#18405)
  • Add RobotClearance (#18418)

Fixes

  • None

Tutorials and examples

  • None

Miscellaneous features and fixes

  • Compute a polynomial from monomial basis and the lower triangular of the Gram (#18429)
  • Allow for torque-only mode for KUKA IIWA (#18295)
  • BSplineTrajectory::EvalDerivative now clamps time (#18383)
  • Enhance ApplyVisualizationConfig with meshcat support (#18409)
  • Allow pressing Escape to stop ModelVisualizer (#18411)
  • Fix Meshcat::StaticHtml() (#18349)

pydrake bindings

New features

  • None

Fixes

  • Add Preferred Ordering mechanism and tests (#18357)

Newly bound

  • pydrake.geometry.optimization.HPolyhedron.FindRedundant (#18432)
  • pydrake.manipulation.kuka_iiwa.IiwaControlMode (#18295)
  • pydrake.multibody.optimization.SpatialVelocityConstraint (#18364)
  • pydrake.multibody.PrismaticSpring (#18240)
  • pydrake.multibody.tree.CalcSpatialInertia (#18345)
  • pydrake.multibody.tree.QuaternionFloatingJoint (#18420)
  • pydrake.multibody.tree.UnitInertia.SolidCapsule (#18341)
  • pydrake.multibody.tree.UnitInertia.SolidEllipsoid (#18341)
  • pydrake.symbolic.CalcPolynomialWLowerTriangularPart (#18429)
  • pydrake.systems.CacheEntry.Eval (#18354)
  • pydrake.systems.CacheEntry.EvalAbstract (#18354)
  • pydrake.systems.CacheEntry.get_cache_entry_value (#18354)
  • pydrake.systems.CacheEntryValue.GetValueOrThrow (#18354)
  • pydrake.systems.framework.InputPort.Allocate (#18431)
  • pydrake.systems.framework.System.AllocateInputAbstract (#18430)
  • pydrake.systems.framework.System.AllocateInputVector (#18430)

Build system

  • None

Build dependencies

  • Remove libcurl dependency (#18441)
  • Use host OS VTK 9.1 when on Ubuntu 22.04 (#18340)
  • Upgrade optitrack_driver to latest commit (#18330)
  • Upgrade meshcat to latest commit (#18349)
  • Upgrade abseil_cpp_internal to latest commit (#18394)
  • Upgrade dm_control_internal to latest commit (#18394)
  • Upgrade gz_math_internal to latest release gz-math7_7.1.0 (#18394)
  • Upgrade lcm to latest commit (#18394)
  • Upgrade mypy_internal to latest release v0.991 (#18394)
  • Upgrade petsc to latest release v3.18.2 (#18394)
  • Upgrade pycodestyle to latest release 2.10.0 (#18394)
  • Upgrade rules_pkg to latest release 0.8.0 (#18394)
  • Upgrade rules_python to latest release 0.15.1 (#18394)

Newly-deprecated APIs

  • drake::multibody::FixedOffsetFrame::SetPoseInBodyFrame (#18198)
  • drake::trajectories::PiecewisePolynomial::Cubic (#18319)

Removal of deprecated items

  • The @libcurl external (#18441)
  • The build target drake::solvers::bilinear_product_util, the function drake::solvers::ReplaceBilinearTerms, and the corresponding file (#18441)
  • drake::multibody::WeldJoint::X_PC (#18441)
  • drake::geometry::optimization::GraphOfConvexSets::SolveShortestPath overloads that directly pass the bool convex_relaxation and const solvers::SolverInterface* solver parameters (#18441)
  • drake::multibody::FixedOffsetFrame ctor without the name argument (#18441)
  • drake::multibody::Frame ctor without the name argument (#18441)
  • drake::multibody::RigidBody ctor without the body_name argument (#18441)
  • pydrake.geometry.PolygonSurfaceMesh.TransformVertices (#18441)
  • pydrake.geometry.PolygonSurfaceMesh.ReverseFaceWinding (#18441)

Notes

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