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 acceptIiwaControlMode control_mode
. - IiwaControlPorts::
commanded_feedforward_torque
is now renamed toIiwaControlPorts::commanded_torque
.
- The contract for
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
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
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
andconst 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.