Drake v1.6.0

Back to Release Notes

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

  • Extend rational function support (#17522)
  • Speed up Expression via nanboxing (#17544)

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)
    • Add LcmBuses and related config functions (#17614)
    • Add ApplyVisualizerConfig for easy visualizer setup (#17641, #17645)
    • Add ZeroForceDriver for hardware_sim (#17694)
    • Add SchunkWsgDriver to hardware_sim (#17719)
  • 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.