Announcements
- None
Breaking changes since v1.18.0
multibody::MultibodyPlantnow rejects duplicate frame names. (#19724)geometry::optimization::ConvexSet::AddPointInSetConstraintsnow returns the new variables/constraints created. This is a breaking change for subclasses ofConvexSet, which must now implement the new return type in their NVI overrides. (#19634)- Methods previously returning
multibody::ConstraintIndex(which could not be used) now returnmultibody::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
UpdateCoefficientstoAffineSystem. (#19707) - All RGBD sensors now have an
image_timeoutput 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
RgbdSensorAsyncport accessors, throw instead of returningnullptrwhen the requested name is not present. (#19696) - Split
RgbdSensorDiscreteinto its own file. (#19649) - #19752 Support non-templatized
Systems inGetDowncastSubsystemByName(). (#19755)
Mathematical Program
New features
- Add
math::SoftOverMax,SoftOverMin,SoftUnderMax,SoftUnderMin. (#19591) - For
geometry::optimization::CspaceFreePolytopesubclasses, fix state dependencies for computing separating planes from kinematic chains. (#19609) - Add
SerializetoHyperellipsoid. (#19670) geometry::optimization::VPolytopeandIrisInConfigurationSpacesupportgeometry::Meshgeometry. (#19672)- A variety of fixes to the sampling and guessing logic in
IrisInConfigurationSpace. (#19728, #19751) geometry::optimization::GraphOfConvexSetsreturnskInfeasibleConstraintswhen no path exists. (#19719)- Add
solvers::MakeSemidefiniteRelaxationto construct a newMathematicalProgramwhich implements the SDP relaxation of the original program with non-convex quadratic constraints. . (#19632) MosekSolvertakes convexQuadraticConstraints. (#19705)solvers::MathematicalProgram::AddConstraintparses quadratic constraints asQuadraticConstraintrather thanExpressionConstraint. (#19633)- Add optional upper bound to minimum distance constraints. (#19718)
- Add
IsEmptymethods togeometry::optimization::ConvexSetand 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
GurobiSolverlicense 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::SelectHydroelasticwhich allows selecting a subset of hydroelastic ContactResults. (#19663) - Added methods
multibody::MultibodyPlant::MakeVelocityToQDotMapandMakeQDotToVelocityMap. (#19675) - Added joint locking support to SAP solver. (#18983)
- Added
geometry::Meshcat::GetRealtimeRate. (#19700) - Improved handling of glTF in
geometryandvisualization:- Meshcat can handle glTF meshes. (#19635)
DrakeVisualizerwarns when visualizing glTF meshes instead of crashing. (#19692)RenderEngineGltfClientaccepts glTF files. (#19684)- Handle
geometry::Mesh("foo.gltf", 1)throughout Drake: (#19739)RenderEngineGltfClientcan 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
BlockSparseSuperNodalSolverin 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
DifferentialIKsupportsnum_positions != num_velocities. (#19522)
Fixes
- Use the plant’s default configuration rather than its zero configuration
CollisionCheckervalidates distance and interpolation functions. (#19736)
Tutorials and examples
Miscellaneous features and fixes
- Enable inertia visualization by default. (#19743)
- Fix
InertiaVisualizerto show the correct rotations. (#19589) - Add
trajectories::BezierCurve::ElevateOrder()to convert Bezier curves to higher order. (#19620) - Fix
trajectories::BezierCurvemove operators. (#19648) - Add acceleration limits and collision filtering for Panda arm. (#19689)
- Avoid false self collisions in
iiwa_primitive_collision.urdfby 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.Optionsbindings, 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
autodiffunit derivatives vector. (#19623) - Remove error when
Noneis passed as a callback function. (#19697) - Add environment variable
DRAKE_PYTHON_LOGGINGto 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::CSpaceSeparatingPlanefive-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.