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 runmeldis
instead ofdrake_visualizer
to see the visualization, which might be useful especially on OS versions wheredrake_visualizer
is deprecated. - Refer to the acrobot README for an example use, or the meldis documentation.
- This enables users whose code is hard-coded to publish visualizations to
- Drake now uses VTK 9.0 (#16132).
- Note that
drake_visualizer
continues to use VTK 8.0.- Importing
pydrake
from inside ofdrake_visualizer
is not supported.
- Importing
- Note that
Breaking changes since v0.38.0
- Drake’s manipulation/models/iiwa_description files now specify acceleration limits (#16377).
- The symbols
pydrake.multibody.plant.ContactResultsToMeshcat
andpydrake.multibody.plant.ContactResultsToMeshcatParams
are now factory functions instead of classnames (#16437).- Most users will be unaffected, but specific use of
isinstance()
checks would notice.
- Most users will be unaffected, but specific use of
Changes since v0.38.0
Dynamical Systems
New features
- Add MultilayerPerceptron system (#16396, #16410, #16529, #16542)
- Add Add DiagramBuilder::connection_map function (#16477)
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
- Add preliminary support for SceneGraph<Expression> (#16526)
- Add meshcat::JointSliders system (#16400, #16426)
- Add SceneGraphInspector::GetParent(FrameId) (#16368)
- Add MultibodyPlant back-pointer into the ContactResults struct (#16478)
- Add unit inertia calculation for a capsule (#16357)
- New hydroelastic contact model in progress (#16040, #16365, #16366, #16367, #16374, #16458, #16471)
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
- Add meshcat display server for drake_visualizer’s protocol (#16263, #16436, #16445, #16452, #16454)
- Add missing collision filters to Atlas model (#16488)
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
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).
- On Ubuntu 20.04, support of
- 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.