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 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
UpdateCoefficients
toAffineSystem
. (#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 returningnullptr
when the requested name is not present. (#19696) - Split
RgbdSensorDiscrete
into its own file. (#19649) - #19752 Support non-templatized
System
s inGetDowncastSubsystemByName()
. (#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
toHyperellipsoid
. (#19670) geometry::optimization::VPolytope
andIrisInConfigurationSpace
supportgeometry::Mesh
geometry. (#19672)- A variety of fixes to the sampling and guessing logic in
IrisInConfigurationSpace
. (#19728, #19751) geometry::optimization::GraphOfConvexSets
returnskInfeasibleConstraints
when no path exists. (#19719)- Add
solvers::MakeSemidefiniteRelaxation
to construct a newMathematicalProgram
which implements the SDP relaxation of the original program with non-convex quadratic constraints. . (#19632) MosekSolver
takes convexQuadraticConstraint
s. (#19705)solvers::MathematicalProgram::AddConstraint
parses quadratic constraints asQuadraticConstraint
rather thanExpressionConstraint
. (#19633)- Add optional upper bound to minimum distance constraints. (#19718)
- Add
IsEmpty
methods togeometry::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
andMakeQDotToVelocityMap
. (#19675) - Added joint locking support to SAP solver. (#18983)
- Added
geometry::Meshcat::GetRealtimeRate
. (#19700) - Improved handling of glTF in
geometry
andvisualization
:- 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
supportsnum_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
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.