Drake v0.39.0

Back to Release Notes

Announcements

  • Drake’s website API documentation now offers improved search boxes (#16473, #16491).
  • Drake now offers a meshcat display server named “meldis” that speaks the same protocol as drake_visualizer (#16263, #16436, #16445, #16452, #16454).
    • This enables users whose code is hard-coded to publish visualizations to drake_visualizer to run meldis instead of drake_visualizer to see the visualization, which might be useful especially on OS versions where drake_visualizer is deprecated.
    • Refer to the acrobot README for an example use, or the meldis documentation.
  • Drake now uses VTK 9.0 (#16132).
    • Note that drake_visualizer continues to use VTK 8.0.
      • Importing pydrake from inside of drake_visualizer is not supported.

Breaking changes since v0.38.0

  • Drake’s manipulation/models/iiwa_description files now specify acceleration limits (#16377).
  • The symbols pydrake.multibody.plant.ContactResultsToMeshcat and pydrake.multibody.plant.ContactResultsToMeshcatParams are now factory functions instead of classnames (#16437).
    • Most users will be unaffected, but specific use of isinstance() checks would notice.

Changes since v0.38.0

Dynamical Systems

New features

Fixes

  • None

Mathematical Program

New features

  • Add NonsmoothAugmentedLagrangian class to compute the augmented Lagrangian (AL) of a given mathematical program (#16391)
  • Add variable scaling to OsqpSolver (#16423)
  • Add MathematicalProgram::ClearVariableScaling (#16423)
  • Return the cost from AddMaximizeGeometricMeanCost (#16373)
  • The various AddFooConstraint functions now support matrix input (#16424)
  • Add VPolytope::CalcVolume (#16409)

Fixes

  • Improve performance while adding variables (#16472)
  • MOSEK debug printing includes the solution summary (#16528)

Multibody Dynamics and Geometry

New features

Fixes

  • Improve error message for unknown GeometryIds (#16390)
  • Enable T=Expression in MakeFromCentralInertia (#16469)
  • Improve display names for point contact visualization (#16493, #16515)
  • Stop putting memory addresses into geometry names (#16499)
  • Move ContactResultsToMeshcat into meshcat directory and rename it to ContactVisualizer (#16437)

Tutorials and examples

Miscellaneous features and fixes

  • Add acceleration limits to iiwa14 models (#16377)
  • Make JacoCommandReceiver use an input port for initial position (#16483)

pydrake bindings

New features

  • Enable CLP in pip wheels (#16521)
  • Enable IPOPT in pip wheels (#16532)

Fixes

  • None

Newly bound

  • pydrake.lcm.DrakeLcmInterface.get_lcm_url (#16413)
  • pydrake.systems.framework.System.AllocateImplicitTimeDerivativesResidual (#16467)
  • pydrake.systems.framework.System.CalcImplicitTimeDerivativesResidual (#16467)
  • pydrake.systems.framework.SystemBase.implicit_time_derivatives_residual_size (#16467)
  • pydrake.systems.framework.SystemBase.num_abstract_states (#16467)
  • pydrake.systems.framework.SystemBase.num_continuous_states (#16467)
  • pydrake.systems.framework.SystemBase.num_discrete_state_groups (#16467)

Build system

  • Infer homebrew path based on arch in preparation for ARM64 (#16389)

Build dependencies

  • Upgrade recommended Bazel version to 5.0 (#16405, #16418, #16523, #16546)
  • Add libcmaes as a testonly dependency (#16441)
  • Add dm_control as a testonly dependency (#16370, #16484)
  • Upgrade buildifier to latest release 4.2.5 (#16484)
  • Upgrade common_robotics_utilities to latest commit (#16484)
  • Upgrade googlebenchmark to latest release v1.6.1 (#16484)
  • Upgrade ignition_math to latest release ignition-math6_6.10.0 (#16484)
  • Upgrade meshcat_python to latest commit (#16505)
  • Upgrade ros_xacro to latest release 1.13.16 (#16484)
  • Upgrade rules_pkg to latest release 0.6.0 (#16485)
  • Upgrade scs to latest release 3.1.0 (#16484)
  • Upgrade stduuid to latest commit (#16387)
  • Upgrade voxelized_geometry_tools to latest commit (#16484)
  • Upgrade vtk to release 9.0 (#16132, #16419)

Newly-deprecated APIs

  • The use of drake-visualizer on macOS is deprecated and will be removed from Drake on or after April 1st, 2022 (#16386).
    • On Ubuntu 20.04, support of drake-visualizer remains intact.
    • On Ubuntu 18.04, support of drake-visualizer will remain intact as long as our overall support of 18.04 (which ends on April 1st, 2022).
  • drake::manipulation::kinova_jaco::JacoCommandReceiver::get_input_port (#16483)
  • drake::manipulation::kinova_jaco::JacoCommandReceiver::set_initial_position (#16483)
  • drake::math::RigidTransform::IsIdentityToEpsilon (#16541)
  • drake::multibody::ContactResultsToMeshcat (#16437)
  • drake::multibody::ContactResultsToMeshcatParams (#16437)
  • drake::multibody::PackageMap::PopulateUpstreamToDrake (#16434)
  • drake::solvers::MathematicalProgram::NewNonnegativePolynomial (#16375)
  • DRAKE_ASSERT_THROWS_MESSAGE overload with three arguments (#16514)
  • DRAKE_EXPECT_THROWS_MESSAGE overload with three arguments (#16514)
  • DRAKE_ASSERT_THROWS_MESSAGE_IF_ARMED overload with three arguments (#16514)
  • DRAKE_EXPECT_THROWS_MESSAGE_IF_ARMED overload with three arguments (#16514)

Removal of deprecated items

  • drake::manipulation::planner::DoDifferentialInverseKinematics overloads using Eigen::Isometry3 (#15909, #16479)
  • drake::math::autoDiffToGradientMatrix (#15699, #16479)
  • drake::math::autoDiffToValueMatrix (#15699, #16479)
  • drake::math::initializeAutoDiffGivenGradientMatrix (#15699, #16479)
  • drake::math::initializeAutoDiffTuple (#15699, #16479)
  • manipulation::perception::OptitrackPoseExtractor (#16011, #16479)
  • multibody::parsing::ModelWeldErrorFunction (#15949, #16479)
  • pydrake.multibody.plant.MultibodyPlant.RegisterVisualGeometry overload that uses Isometry3 (#16008, #16479)
  • pydrake.multibody.plant.MultibodyPlant.SetFreeBodyPose overload that uses Isometry3 (#16008, #16479)
  • pydrake.multibody.plant.MultibodyPlant.WeldFrames overload that uses Isometry3 (#16008, #16479)
  • pydrake.multibody.tree.FixedOffsetFrame.__init__ overload that uses Isometry3 (#16008, #16479)
  • pydrake.multibody.tree.WeldJoint.__init__ overload that uses Isometry3 (#16008, #16479)
  • systems::controllers::CartesianSetpoint (#16006, #16023, #16479)
  • systems::controllers::VectorSetpoint (#16006, #16023, #16479)
  • testing::CompareTransforms (#16007, #16479)
  • testing::ExpectRotMat (#16007, #16479)

Notes

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