Drake v1.19.0

Back to Release Notes

Announcements

  • None

Breaking changes since v1.18.0

  • multibody::MultibodyPlant now rejects duplicate frame names. (#19724)
  • geometry::optimization::ConvexSet::AddPointInSetConstraints now returns the new variables/constraints created. This is a breaking change for subclasses of ConvexSet, which must now implement the new return type in their NVI overrides. (#19634)
  • Methods previously returning multibody::ConstraintIndex (which could not be used) now return multibody::MultibodyConstraintId (which can be used to get constraint information from the multibody plant). (#19698)

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

Changes since v1.18.0

Dynamical Systems

New features

  • Allow specifying a time offset in ZeroOrderHold. (#19650)
  • Add systems::System<T>::ExecuteInitializationEvents. (#19577)
  • Add UpdateCoefficients to AffineSystem. (#19707)
  • All RGBD sensors now have an image_time output port. (#19696)

Fixes

  • #19419: Fix a crash in FiniteHorizonLinearQuadraticRegulator. (#19653)
  • #19198: Add a zero-order hold to the pose output of RgbdSensorDiscrete. (#19696)
  • #19198: Reject negative event trigger times in RgbdSensorAsync. (#19696)
  • #19198: In RgbdSensorAsync port accessors, throw instead of returning nullptr when the requested name is not present. (#19696)
  • Split RgbdSensorDiscrete into its own file. (#19649)
  • #19752 Support non-templatized Systems in GetDowncastSubsystemByName(). (#19755)

Mathematical Program

New features

  • Add math::SoftOverMax, SoftOverMin,SoftUnderMax, SoftUnderMin. (#19591)
  • For geometry::optimization::CspaceFreePolytope subclasses, fix state dependencies for computing separating planes from kinematic chains. (#19609)
  • Add Serialize to Hyperellipsoid. (#19670)
  • geometry::optimization::VPolytope and IrisInConfigurationSpace support geometry::Mesh geometry. (#19672)
  • A variety of fixes to the sampling and guessing logic in IrisInConfigurationSpace. (#19728, #19751)
  • geometry::optimization::GraphOfConvexSets returns kInfeasibleConstraints when no path exists. (#19719)
  • Add solvers::MakeSemidefiniteRelaxation to construct a new MathematicalProgram which implements the SDP relaxation of the original program with non-convex quadratic constraints. . (#19632)
  • MosekSolver takes convex QuadraticConstraints. (#19705)
  • solvers::MathematicalProgram::AddConstraint parses quadratic constraints as QuadraticConstraint rather than ExpressionConstraint. (#19633)
  • Add optional upper bound to minimum distance constraints. (#19718)
  • Add IsEmpty methods to geometry::optimization::ConvexSet and derived classes. (#19716)
  • Add new optional default options for geometry::optimization::GraphOfConvexSets. (#19720)
  • Add method geometry::optimization::HPolyhedron::Scale(). (#19733)

Fixes

  • #19657: Acquire a local GurobiSolver license at most once per process. (#19713)
  • Improve error messages when an empty set is passed to geometry::optimization::Hyperellipsoid::MinimumUniformScalingToTouch. (#19671)

Multibody Dynamics and Geometry

New features

  • Added SpatialInertia::[Object]WithMass() functions (solid capsule, solid cylinder, solid ellipsoid). (#19737)
  • #19592: Added method multibody::ContactResults::SelectHydroelastic which allows selecting a subset of hydroelastic ContactResults. (#19663)
  • Added methods multibody::MultibodyPlant::MakeVelocityToQDotMap and MakeQDotToVelocityMap. (#19675)
  • Added joint locking support to SAP solver. (#18983)
  • Added geometry::Meshcat::GetRealtimeRate. (#19700)
  • Improved handling of glTF in geometry and visualization:
    • Meshcat can handle glTF meshes. (#19635)
    • DrakeVisualizer warns when visualizing glTF meshes instead of crashing. (#19692)
    • RenderEngineGltfClient accepts glTF files. (#19684)
    • Handle geometry::Mesh("foo.gltf", 1) throughout Drake: (#19739)
      • RenderEngineGltfClient can render Mesh/Convex which uses a glTF file.
      • Meshcat can visualize a Mesh/Convex which uses a glTF file.
      • Meldis (via DrakeVisualizer) can likewise visualize glTF files.
      • All other consumers of such meshes either dispatch exceptions or warning messages that the geometry will be ignored.
  • Use BlockSparseSuperNodalSolver in SAP solver by default. (#19757)

Fixes

  • Avoid copying the mesh in distance queries. (#19679)
  • Fix incorrect Meshcat “realtime rate” after pausing/resuming simulation. (#19667)
  • Correct the applied spatial forces returned by MultibodyPlant. (#19548)

Planning

New features

  • DifferentialIK supports num_positions != num_velocities. (#19522)

Fixes

  • Use the plant’s default configuration rather than its zero configuration CollisionChecker validates distance and interpolation functions. (#19736)

Tutorials and examples

  • #19641 Fix images and formatting of Hydroelastic Contact: Basics in Deepnote. (#19660, #19643)

Miscellaneous features and fixes

  • Enable inertia visualization by default. (#19743)
  • Fix InertiaVisualizer to show the correct rotations. (#19589)
  • Add trajectories::BezierCurve::ElevateOrder() to convert Bezier curves to higher order. (#19620)
  • Fix trajectories::BezierCurve move operators. (#19648)
  • Add acceleration limits and collision filtering for Panda arm. (#19689)
  • Avoid false self collisions in iiwa_primitive_collision.urdf by adding collision filters. (#19674)
  • Improve error message for YAML parser when parsing a non-Mapping root node. (#19730)
  • Support inertia visualization in Meldis. (#19677)

pydrake bindings

New features

  • systems.CacheEntry.is_out_of_date (#19669)
  • systems.CacheEntry.is_cache_entry_disabled (#19669)
  • systems.CacheEntry.disable_caching (#19669)
  • systems.CacheEntry.enable_caching (#19669)
  • systems.CacheEntry.disable_caching_by_default (#19669)
  • systems.CacheEntry.is_disabled_by_default (#19669)
  • systems.CacheEntry.description (#19669)
  • systems.CacheEntry.has_default_prerequisites (#19669)
  • systems.LeafOutputPort.cache_entry (#19669)
  • solvers.ExpressionCost (#19706)
  • solvers.ExpressionConstraint (#19706)

Fixes

  • Fix incorrect type casting in SortedPair<T>. (#19753)
  • Add more solvers.MixedIntegerBranchAndBound.Options bindings, fixing some ugly generated documentation. (#19639)
  • Use vanilla py::cast() for keep alive behavior. (#19655)
  • Handle empty derivatives in forwarddiff.jacobian. (#19638)
  • Add constructor overloads for autodiff unit derivatives vector. (#19623)
  • Remove error when None is passed as a callback function. (#19697)
  • Add environment variable DRAKE_PYTHON_LOGGING to disable redirection of the text log. (#19685)

Build system

  • Update default Ubuntu version for Docker to be Jammy. (#19701)

Build dependencies

  • Add the header-only nlohmann library as an internal vendored library. (#19625)

Newly-deprecated APIs

  • solvers::FindNonconvexQuadraticCost (#19668)
  • solvers::MinimumValueConstraint::minimum_value (#19665)
  • geometry::optimization::CSpaceSeparatingPlane five-argument constructor. (#19526)

Removal of deprecated items

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

Notes

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