Announcements
- Drake now supports Ubuntu 22.04 (“Jammy Jellyfish”) for stable releases via
the tar.gz binaries and Docker Hub.
- We anticipate adding pip and apt support in a future release.
- This release marks the first appearance of the new planning folder.
- The first set of planning software will come from TRI’s private Anzu code base. Look for this to arrive in chunks over the next several releases.
- On macOS, Drake now supports Python 3.10 (and no longer supports 3.9).
Breaking changes since v1.5.0
drake::math::ExtractGradient
now accounts for the storage order of its input, instead of always tracing in ColMajor order. For most users this will be no change because Eigen’s default storage is ColMajor anyway (#17516).
Refer to our Drake Stability Guidelines for our policy on API changes.
Changes since v1.5.0
Dynamical Systems
New features
- None
Fixes
- Reverse ApplySimulatorConfig parameter order (#17654)
Mathematical Program
New features
Fixes
- Remove sparseness_threshold in gurobi_solver; users should change their MathematicalProgram to remove small coefficients, rather than relying on the threshold previously hidden inside gurobi_solver.cc (#17648)
- Add positive_semidefinite_constraints when calling GetAllConstraints (#17712)
- ExtractGradient now accounts for the storage order of its input (#17516)
- Polynomial prunes terms with trivially-zero coefficients (#17611)
- Move ReplaceBilinearTerms from solvers to symbolic namespace (#17707)
Multibody Dynamics and Geometry
New features
- Add PositionCost for inverse kinematics (#17587)
- Add OrientationCost for inverse kinematics (#17592)
- Add GlobalIK::SetInitialGuess and benchmark (#17608)
- Add PolyhedronConstraint as a kinematic constraint (#17596)
- Implement capability to define coupler constraints (#17639)
- Add HPolyhedron::UniformSample (#17629)
- Support generic constraints in IrisInConfigurationSpace (#17703)
Fixes
- Fix incorrect use of InitializeAutoDiff when gradients are not needed (#17577)
- Remove SpatialInertia::MakeTestCube() in favor of SpatialInertia::MakeUnitary() (#17547)
- Provide more feedback when MultibodyPlant query object port is unconnected (#17485)
- Speed up OrientationConstraint implementation (#17591)
- Handle unknown packages gracefully while processing model directives (#17604)
- SDFormat parser uses axis information from universal joints (#17607)
- All bodies and frames must have a non-empty name (#17632)
- Enable kinematic AutoDiffXd simulation with SAP (#17651)
- Fix copy semantics of MeshFieldLinear (#17670)
- Correct WeldJoint frame notation (#17696)
Planning
New features
- Add RobotDiagram and RobotDiagramBuilder (#17594)
Fixes
- None
Tutorials and examples
- Update examples to make use of AddMultibodyPlantSceneGraph (#17580)
- Delete the particles example (#17653)
Miscellaneous features and fixes
- Add reusable code and demo program for hardware simulation (#17615)
- Ensure runfiles meet their promise of being absolute paths (#17643)
- Enable multiple visualization channels (#17595)
- Add hydroelastic contact surface to meshcat visualization (#17599)
- Improve meldis error message (#17642)
- Auto reconnect to meshcat server (#17685)
pydrake bindings
New features
- None
Fixes
- None
Newly bound
geometry.ContactSurface.poly_e_MN
(#17637)geometry.ContactSurface.tri_e_MN
(#17637)geometry.PolygonSurfaceMeshFieldLinear
(#17637)geometry.TriangleSurfaceMesh.area
(#17713)geometry.TriangleSurfaceMesh.CalcBarycentric
(#17713)geometry.TriangleSurfaceMesh.CalcBoundingBox
(#17713)geometry.TriangleSurfaceMesh.CalcCartesianFromBarycentric
(#17713)geometry.TriangleSurfaceMesh.element
(#17713)geometry.TriangleSurfaceMesh.Equal
(#17713)geometry.TriangleSurfaceMesh.num_elements
(#17713)geometry.TriangleSurfaceMesh.num_triangles
(#17713)geometry.TriangleSurfaceMesh.num_vertices
(#17713)geometry.TriangleSurfaceMesh.total_area
(#17713)geometry.TriangleSurfaceMesh.vertex
(#17713)geometry.TriangleSurfaceMeshFieldLinear
(#17637)math.ComputeNumericalGradient
(#17684)math.NumericalGradientMethod
(#17684)math.NumericalGradientOption
(#17684)multibody.plant.MultibodyPlant.WeldFrames
with F, M frame names (#17696)solvers.gurobi.GurobiSolver.AddMipNodeCallback
(#17704)solvers.gurobi.GurobiSolver.AddMipSolCallback
(#17704)solvers.gurobi.GurobiSolver.SolveStatusInfo
(#17704)symbolic.RationalFunction
(#17522)symbolic.SubstituteStereographicProjection
(#17617)systems.lcm.LcmPublisherSystem
constructors that take an LcmInterfaceSystem (#17668)systems.lcm.LcmSubscriberSystem
constructors that take an LcmInterfaceSystem (#17668)
Build system
- Switch to Python 3.10 on macOS (#17723)
- Document all nightly uploads and expiration policies (#17413)
- Add macOS stable releases for pip wheels (#17619)
- Ignore Eigen::Sparse overloads when scipy is missing (#17570)
- Use Ubuntu mirror for MUMPS (wheel builds) (#17646)
Build dependencies
- Remove scipy dependency (#17559)
- Upgrade abseil_cpp_internal to latest commit (#17669)
- Upgrade common_robotics_utilities to latest commit (#17669, #17702)
- Upgrade dm_control_internal to latest commit (#17669)
- Upgrade googlebenchmark to latest release v1.7.0 (#17669)
- Upgrade gz_math_internal to latest version (#17673)
- Upgrade MUMPS to version 5.5.0 (#17626)
- Upgrade mypy to latest commit (#17552)
- Upgrade pycodestyle to latest release 2.9.0 (#17669)
- Upgrade rules_python to latest release 0.10.2 (#17669)
- Upgrade styleguide to latest commit (#17669)
- Upgrade voxelized_geometry_tools to latest commit (#17669, #17702)
Newly-deprecated APIs
//multibody/inverse_kinematics:kinematic_constraint
(#17575)(#17585)drake::multibody::Body
when name is empty (#17632)drake::multibody::FixedOffsetFrame
when name is empty, or overload with no name parameter (#17632)drake::multibody::Frame
when name is empty, or overload with no name parameter (#17632)drake::multibody::RigidBody
overload with no name parameter (#17632)drake::multibody::WeldJoint::X_PC
(#17696)drake::solvers::ReplaceBilinearTerms
(#17707)drake::systems::ApplySimulatorConfig
with simulator argument first (#17654)pydrake.multibody.plant.MultibodyPlant.WeldFrames
with P, C frame names (#17696)
Removal of deprecated items
- Unconditionally installing
scipy
as a dependency of pydrake (#17559) drake::manipulation::kinova_jaco::JacoCommandSender::get_input_port
(#17660)drake::manipulation::kinova_jaco::JacoStatusReceiver::get_state_output_port
(#17660)drake::manipulation::kinova_jaco::JacoStatusReceiver::get_torque_output_port
(#17660)drake::manipulation::kinova_jaco::JacoStatusSender::get_state_input_port
(#17660)drake::solvers::LinearConstraint::A
(#17660)drake::solvers::LinearConstraint::GetSparseMatrix
(#17660)pydrake.math.SpatialForce.Shift
with parameter name p_BpBq_E (#17660)pydrake.math.SpatialMomentum.Shift
with parameter name p_BpBq_E (#17660)setup/ubuntu/install_prereqs.sh --with-kcov
(#17660)
Notes
This release provides pre-compiled binaries named
drake-20220816-{focal|mac}.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.