Drake v1.4.0

Back to Release Notes

Announcements

  • Drake now supports loading MuJoCo’s MJCF format (#17358)
    • Note that not all elements of the file format are supported yet, but many of the most commonly-used element are available.
  • Drake’s collision filter groups in SDFormat and model directives may now span multiple robots (#17175, #17270).

Breaking changes since v1.3.0

  • Direct access to MultibodyPlant’s scalar-converting copy constructor has been removed (#17354).
    • This constructor was intended to be for internal use only, but was not marked as such; now it is.
    • Anyone who was accidentally using this constructor might now receive a linker error, for certain compilers.
    • To perform scalar conversion of a System, C++ users should call, e.g., System::ToAutoDiffXd instead of the direct constructor.
    • Python users are unaffected.

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

Changes since v1.3.0

Dynamical Systems

New features

  • Add SharedPointerSystem (#17260)
  • Add equality constraints in LQR (#17327)

Fixes

  • Improve error messages for GetInputPort and GetOutputPort (#17255)

Mathematical Program

New features

  • Add GetAvailableSolvers() (#17225)
  • CsdpSolver accepts RemoveFreeVariableMethod via SolverOptions (#17275)
  • Support half-angle formulas in sin/cos substitution (#17282)
  • Evaluate polynomial (with affine coefficients) on a batch of indeterminates (#17357)

Fixes

  • Fix SparseMatrixToTriplets to only permit sparse matrices (#17331)
  • Fix exception handling in SnoptSolver on macOS (#17272)
  • SdpaFreeFormat ignores empty constraints (#17368)
  • Add C++ [[nodiscard]] checks (#17330, #17380)
  • DecomposeAffineExpression passes coeffs as a pointer (#17348)
  • Check if influence_value_offset is strictly positive and finite in MinimumValueConstraint (#17404)

Multibody Dynamics and Geometry

New features

  • Add support for parsing MuJoCo’s MJCF format (#17358)
  • Enable multi-robot collision filter groups in SDFormat and model directives (#17175, #17270)
  • Add meshcat JointSliders::SetPositions (#17247)
  • Add GeometryConfigurationVector container (#17329)

Fixes

  • Improve error messages for GetBodyByName and similar functions (#17259)
  • Reject duplicate-named frames for same source (#17243)
  • MultibodyPlant throws exceptions on NaN input port values (#17174)
  • Remove model instance restrictions in ComInPolyhedronConstraint (#15830)
  • Move render_gl into new directory structure (#17410)

Tutorials and examples

  • Add tutorial for using MOSEK on Deepnote (#17213)
  • Update manipulation_station example to use Meshcat instead of Tcl/Tk (#16816, #17292 #17298)
  • Update joint velocity limits for Jaco arms (#17407)
  • Expose parameters in QuadrotorPlant (#17402)

Miscellaneous features and fixes

  • Add DrakeLcm option for a channel name suffix (#17337)
  • Add a keep_going option to ConstraintRelaxingIk (#17224)
  • Update geometry_inspector to use newer meshcat (#17214)
  • DRAKE_EXPECT_THROWS_MESSAGE now requires an expression (#17341)

pydrake bindings

New features

  • None

Fixes

  • Fix IpoptSolver in pip wheels (#17346)
    • Remove more meshes to still fit under 100 MiB (#17401)

Newly bound

  • pydrake.geometry.SceneGraph.RegisterGeometry (additional overloads) (#17342)
  • pydrake.geometry.SceneGraph.RemoveGeometry (#17336)

Build system

  • Use stable URLs for GitHub downloads where possible (#17344)
  • Fail fast if setup script is invoked with sudo when already root (#17284)

Build dependencies

  • Add MUMPS dependency to wheel builds (#17346)
    • Remove more meshes to still fit under 100 MiB (#17401)
  • Add libpython as Ubuntu binary tarball prerequisite (#17294)
  • Remove macOS python-tk dependency (#17389)
  • Remove msgpack boost dependency (#17286)
  • Build NLopt from source; upgrade to 2.7.1 (#17288)
  • Improve qhull hidden visibility (#17229)
  • Upgrade abseil_cpp_internal to latest commit (#17322, #17352)
  • Upgrade clang-cindex-python3 to latest commit (#17315)
  • Upgrade common_robotics_utilities and voxelized_geometry_tools to latest commit (#17322, #17359)
  • Upgrade dm_control to latest commit (#17322)
  • Upgrade gz_utils to latest release 1.4.0 (#17417)
  • Upgrade ignition_math to latest release 6.11.0 (#17322)
  • Upgrade libcmaes to latest commit (#17322)
  • Upgrade libsdformat to latest release 12.5.0 (#17250)
  • Upgrade mosek to release 9.3.20 (#17238)
  • Upgrade petsc to latest release v3.17.1 (#17273)
  • Upgrade stduuid to latest commit (#17322)

Newly-deprecated APIs

  • drake::lcm::DrakeLcm two-argument constructor (#17337)
  • drake::solvers::CsdpSolver constructor with RemoveFreeVariableMethod argument (#17275)
  • drake::symbolic::DecomposeAffineExpression overload that mis-used a const reference for the coeffs output (#17348)
  • drake/geometry/frame_kinematics_vector.h include path (#17329)
  • drake/geometry/render/gl_renderer/render_engine_gl_factory.h include path (#17410)
  • drake/geometry/render/gl_renderer/render_engine_gl_params.h include path (#17410)
  • The entire solvers/fbstab library (#17416)
  • The @boost external (#17308)
  • The @clang_cindex_python3 external (#17324)
  • The @dm_control external (#17324)
  • The @github3_py external (#17324)
  • The @ignition_math external (#17303)
  • The @ignition_utils external (#17303)
  • The @intel_realsense_ros external (#17324)
  • The @json external (#17283)
  • The @meshcat_python external (#17374)
  • The @models external (#17324)
  • The @nlopt external (#17288)
  • The @qhull external (#17229)
  • The @ros_xacro external (#17324)
  • The @sdformat external (#17303)
  • The @uritemplate_py external (#17324)

Removal of deprecated items

  • drake::manipulation::kinova_jaco::JacoCommandReceiver::get_input_port (#17296, #16483)
  • drake::manipulation::kinova_jaco::JacoCommandReceiver::set_initial_position (#17296, #16483)
  • drake::math::RigidTransform::IsIdentityToEpsilon (#17296, #16541)
  • drake::math::RotationMatrix::IsIdentityToInternalTolerance (#17296, #16552)
  • pydrake.manipulation.simple_ui.JointSliders (#17295, #16656)
  • pydrake.manipulation.simple_ui.SchunkWsgButton (#17295, #16656)
  • pydrake.multibody.math.SpatialVelocity.Shift kwarg name p_BqBq_E (#17296, #16350)
  • pydrake.multibody.math.SpatialVelocity.dot kwarg name F_Bp (#17296, #16350)
  • pydrake.multibody.math.SpatialVelocity.dot kwarg name L_WBp_E (#17296, #16350)
  • pydrake.systems.system_sliders.SystemSliders (#17295, #16656)
  • DRAKE_ASSERT_THROWS_MESSAGE overload with three arguments (#17296, #16514)
  • DRAKE_ASSERT_THROWS_MESSAGE_IF_ARMED overload with three arguments (#17296, #16514)
  • DRAKE_EXPECT_THROWS_MESSAGE overload with three arguments (#17296, #16514)
  • DRAKE_EXPECT_THROWS_MESSAGE_IF_ARMED overload with three arguments (#17296, #16514)

Notes

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