Announcements
- Drake no longer supports macOS Mojave 10.14 #14352; it only supports Catalina 10.15. Work is underway to support Big Sur 11. Note that macOS releases only support Python 3.8, not Python 3.9.
Breaking changes since v0.24.0
- Implement Mesh for proximity via its convex hull. Anyone with a mesh registered with a proximity role will start observing proximity query results where there were none before (#14351).
- Remove RenderEngineOspray (#14339).
- Remove pydrake.common.cpp_const and pydrake.third_party (#14270).
- Remove spring_mass_system from the libdrake shared library (#14284).
- Replace robotlocomotion.robot_plan_t with drake.lcmt_robot_plan (#14377).
- EncodeKeyFrames, MoveIkDemoBase, and RobotPlanInterpolator and their associated demos (move_iiwa_ee, move_jaco_rr, kuka_plan_runner, etc.), now operate on lcmt_robot_plan messages, not robot_plan_t messages.
- EncodeKeyFrames no longer takes an “info” argument – the message no longer contains the unused snopt integer.
Changes since v0.24.0
Dynamical Systems
New features
- Return multiple shooting constraints for AddConstraintToAllKnotPoints and AddEqualTimeIntervalsConstraints (#14340)
- Introduce AddNamedSystem sugar to DiagramBuilder (#14404)
- Permit constructing camera info from intrinsic matrix (#14402)
- Implement fan-out of diagram inputs in DiagramBuilder (#14361)
Fixes
- Un-deprecate FixInputPort taking an const ref (#14454)
Mathematical Program
New features
- Aggregate BoundingBoxConstraint (#14248)
- MosekSolver supports quadratic cost with nonlinear conic constraints (#14237)
- Expose new methods at symbolic_decompose (#14353)
Fixes
- Throw an error when getting dual solution for a QCP in Gurobi (`#14285)
- Only retrieve MOSEK™ dual solution when there are no integer variables (#14338`)
- Retrieve linear constraint dual from MOSEK™ result (#14348)
- Ensure IPOPT uses MUMPS as its linear solver (#14446, #14288)
Multibody Dynamics
New features
- Allow force publish calls on DrakeVisualizer (#14304)
- Add PackageMap Remove method (#14301)
- Enhance documentation for bodies & frames and monogram notation for spatial velocity/acceleration (#14397)
- Add new geometry::DrakeVisualizer system (#14247)
- Add color and texture image rendering to RenderEngineGl (#14226, #14256, #14260, #14289, #14357, #14396)
- New hydroelastic contact model in progress (#14251, #14378)
- Add parameters and parsing for reflected inertia (#14167, #14323)
Fixes
- Clean up and deprecation of SceneGraphInspector/QueryObject bindings (#14280)
- Propagate joint default positions through scalar conversion (#14347)
- Throw an exception in relevant center of mass methods if composite_mass <= 0 (#14316)
- Remove MultibodyPlant’s awareness of
SceneGraph<AutoDiff>
support (#14324) - Add ValidateContext() to methods that take a context (#14389)
- Fix missing multibody graph accounting (#14411)
- Document that body spatial velocity/acceleration methods are for point Bo (not point Bcm) (#14382)
Tutorials and examples
- Minor fixes for flake8’s F821 (undefined name) error (#14293)
- Change to use SetInitialGuess in the nlp tutorial (#14331)
- Allegro with reflected inertia (#14204)
- dualshock: Update example to use Logitech controller (#14388)
- Add a tutorial on quadratic program (#14403)
- acrobot: Add an autodiff benchmark (#14432)
Miscellaneous features and fixes
- Use package instead of relative path for allegro model files (#14252)
- meshcat: upgrade interface to use QueryObject (#14292)
- systems/lcm: Add LcmScopeSystem (#14308)
- yaml: Correctly emit variants with templated inner types (#14327)
- yaml: Fix parsing bugs with zero-sized matrices (#14360)
pydrake bindings
New features
- None
Fixes
- Correct bindings for DrakeVisualizer.AddToBuilder (#14314)
- meshcat visualizer: remove period which causes an error outside of drake (#14320)
- Fix type bug in BasicVector::set_value for non-float types (#14343)
- Ensure manipulation_station_py.cc imports dep modules (#14370)
- Add keep_alive cycle to DiagramBuilder.AddSystem (#14356)
- Fix bindings for RenderCamera classes (#14394)
- Fix some argument names in SceneGraphInspector bindings (#14259)
- RenderEngine: disallow some APIs with deprecated CameraProperties instances (#14300)
Newly bound
- pydrake.geometry.ContactSurface (#14244)
- pydrake.geometry.SceneGraphInspector.BelongsToSource (#14259)
- pydrake.geometry.SceneGraphInspector.CollisionFiltered (#14259)
- pydrake.geometry.SceneGraphInspector.FramesForSource (#14259)
- pydrake.geometry.SceneGraphInspector.GetCollisionCandidates (#14259)
- pydrake.geometry.SceneGraphInspector.GetFrameGroup (#14259)
- pydrake.geometry.SceneGraphInspector.GetGeometries (#14259)
- pydrake.geometry.SceneGraphInspector.GetOwningSourceName (#14259)
- pydrake.geometry.SceneGraphInspector.NumFramesForSource (#14259)
- pydrake.geometry.SceneGraphInspector.NumGeometriesForFrame (#14259)
- pydrake.geometry.SceneGraphInspector.NumGeometriesForFrameWithRole (#14259)
- pydrake.geometry.SurfaceMesh.centroid (#14244)
- pydrake.multibody.plant.CalcCenterOfMassPosition (#14249)
- pydrake.multibody.plant.ContactResults.hydroelastic_contact_info (#14244)
- pydrake.multibody.plant.ContactResults.num_hydroelastic_contacts (#14244)
- pydrake.multibody.plant..GetBodiesWeldedTo (#14345)
- pydrake.multibody.plant.HydroelasticContactInfo (#14244)
- pydrake.multibody.plant.MultibodyPlant.get_mutable_joint (#14257)
- pydrake.multibody.plant.MultibodyPlant.GetJointIndices (#14257)
- pydrake.multibody.tree.Body.CalcCenterOfMassInBodyFrame (#14207)
- pydrake.multibody.tree.Body.CalcSpatialInertiaInBodyFrame (#14207)
- pydrake.multibody.tree.Body.EvalPoseInWorld (#14207)
- pydrake.multibody.tree.Body.EvalSpatialAccelerationInWorld (#14207)
- pydrake.multibody.tree.Body.EvalSpatialVelocityInWorld (#14207)
- pydrake.multibody.tree.Body.get_default_mass (#14207)
- pydrake.multibody.tree.Body.get_mass (#14207)
- pydrake.multibody.tree.Body.get_num_flexible_positions (#14207)
- pydrake.multibody.tree.Body.get_num_flexible_velocities (#14207)
- pydrake.multibody.tree.Body.has_quaternion_dofs (#14207)
- pydrake.multibody.tree.Frame.CalcOffsetPoseInBody (#14207)
- pydrake.multibody.tree.Frame.CalcOffsetRotationMatrixInBody (#14207)
- pydrake.multibody.tree.Frame.CalcPose (#14207)
- pydrake.multibody.tree.Frame.CalcPoseInWorld (#14207)
- pydrake.multibody.tree.Frame.CalcRotationMatrix (#14207)
- pydrake.multibody.tree.Frame.CalcRotationMatrixInBodyFrame (#14207)
- pydrake.multibody.tree.Frame.CalcRotationMatrixInWorld (#14207)
- pydrake.multibody.tree.Frame.CalcSpatialAccelerationInWorld (#14207)
- pydrake.multibody.tree.Frame.CalcSpatialVelocity (#14207)
- pydrake.multibody.tree.Frame.CalcSpatialVelocityInWorld (#14207)
- pydrake.multibody.tree.Frame.GetFixedOffsetPoseInBody (#14207)
- pydrake.multibody.tree.Frame.GetFixedPoseInBodyFrame (#14207)
- pydrake.multibody.tree.Frame.GetFixedRotationMatrixInBody (#14207)
- pydrake.multibody.tree.Frame.GetFixedRotationMatrixInBodyFrame (#14207)
- pydrake.multibody.tree.Frame.is_world_frame (#14207)
- pydrake.solvers.mathematicalprogram.PyFunctionConstraint (#14410)
- pydrake.symbolic.DecomposeAffineExpression (#14353)
- pydrake.symbolic.DecomposeAffineExpressions (#14353)
- pydrake.symbolic.DecomposeLinearExpressions (#14353)
- pydrake.symbolic.DecomposeQuadraticPolynomial (#14353)
- pydrake.symbolic.ExtractVariablesFromExpression (#14353)
- pydrake.symbolic.GetVariableVector (#14353)
- pydrake.symbolic.MakeMatrixBinaryVariable (#14342)
- pydrake.symbolic.MakeMatrixBooleanVariable (#14342)
- pydrake.symbolic.MakeMatrixContinuousVariable (#14342)
- pydrake.symbolic.MakeMatrixVariable (#14342)
- pydrake.symbolic.MakeVectorBinaryVariable (#14342)
- pydrake.symbolic.MakeVectorBooleanVariable (#14342)
- pydrake.symbolic.MakeVectorContinuousVariable (#14342)
- pydrake.symbolic.MakeVectorVariable (#14342)
- pydrake.symbolic.Variable.get_name (#14342)
- pydrake.systems.framework.OutputPort.get_name (#14438)
Build system and dependencies
- Add dependency on double-conversion (#14392)
- Add dependency on lzma (#14392)
- Add dependency on six (#14390)
- Add dependency on sqlite3 (#14392)
- Upgrade dreal to latest release 4.20.12.1 (#14443)
- Upgrade fcl to latest commit (#14271)
- Upgrade fmt to latest release 7.1.3 (#14272, #14413)
- Upgrade ghc_filesystem to latest release 1.3.8 (#14273, #14414)
- Upgrade ignition_math to latest release 6.7.0 (#14415)
- Upgrade intel_realsense_ros to latest release 2.2.20 (#14274, #14416)
- Upgrade lcm to latest commit (#14275, #14418)
- Upgrade meshcat_python to latest commit (#14417)
- Upgrade ros_xacro to latest release 1.13.9 (#14276)
- Upgrade rules_pkg to latest release 0.3.0 (#14277)
- Upgrade rules_python to latest release 0.1.0 (#14278)
- Upgrade to rebuilt VTK binaries (#14393, #14395)
- Neither compile docs nor install documentation prereqs by default (#14168)
- Add kcov_merge tool to consolidate results; for performance, coverage runs no longer consolidate by default (#14294)
- Fix to be compatible with Bazel 4.0 release candidate (#14439, #14441, #14442)
- Don’t install stray
__init__.py
into site-packages (#14444) - Changes specific to Ubuntu:
- Changes specific to macOS:
Newly-deprecated APIs
LCM messages
- lcmtypes/lcmt_body_acceleration.lcm (#14372)
- lcmtypes/lcmt_body_motion_data.lcm (#14372)
- lcmtypes/lcmt_body_wrench_data.lcm (#14372)
- lcmtypes/lcmt_constrained_values.lcm (#14372)
- lcmtypes/lcmt_contact_information.lcm (#14372)
- lcmtypes/lcmt_desired_body_motion.lcm (#14372)
- lcmtypes/lcmt_desired_centroidal_momentum_dot.lcm (#14372)
- lcmtypes/lcmt_desired_dof_motions.lcm (#14372)
- lcmtypes/lcmt_foot_flag.lcm (#14372)
- lcmtypes/lcmt_inverse_dynamics_debug_info.lcm (#14372)
- lcmtypes/lcmt_joint_pd_override.lcm (#14372)
- lcmtypes/lcmt_manipulator_plan_move_end_effector.lcm (#14372)
- lcmtypes/lcmt_piecewise_polynomial.lcm (#14372)
- lcmtypes/lcmt_plan_eval_debug_info.lcm (#14372)
- lcmtypes/lcmt_polynomial.lcm (#14372)
- lcmtypes/lcmt_polynomial_matrix.lcm (#14372)
- lcmtypes/lcmt_qp_controller_input.lcm (#14372)
- lcmtypes/lcmt_qp_input.lcm (#14372)
- lcmtypes/lcmt_quadrotor_input_t.lcm (#14372)
- lcmtypes/lcmt_quadrotor_output_t.lcm (#14372)
- lcmtypes/lcmt_resolved_contact.lcm (#14372)
- lcmtypes/lcmt_robot_state.lcm (#14372)
- lcmtypes/lcmt_scope_data.lcm (#14372)
- lcmtypes/lcmt_simulation_command.lcm (#14372)
- lcmtypes/lcmt_support_data.lcm (#14372)
- lcmtypes/lcmt_viewer2_comms.lcm (#14372)
- lcmtypes/lcmt_whole_body_data.lcm (#14372)
- lcmtypes/lcmt_zmp_com_observer_state.lcm (#14372)
- lcmtypes/lcmt_zmp_data.lcm (#14372)
C++
- drake::examples::manipulation_station::RegisterRgbdSensor with DepthCameraProperties (#14375)
- drake::geometry::ConnectDrakeVisualizer (#14282)
- drake::geometry::DispatchLoadMessage (#14282)
- drake::geometry::GeometryState::GetSourceName (#14280)
- drake::geometry::GeometryState::RenderColorImage with CameraProperties (#14359)
- drake::geometry::GeometryState::RenderDepthImage with DepthCameraProperties (#14359)
- drake::geometry::GeometryState::RenderLabelImage with CameraProperties (#14359)
- drake::geometry::GeometryState::X_PF (#14280)
- drake::geometry::GeometryState::X_WF (#14280)
- drake::geometry::GeometryState::X_WG (#14280)
- drake::geometry::QueryObject::RenderColorImage with CameraProperties (#14359)
- drake::geometry::QueryObject::RenderDepthImage with DepthCameraProperties (#14359)
- drake::geometry::QueryObject::RenderLabelImage with CameraProperties (#14359)
- drake::geometry::QueryObject::X_PF (#14280)
- drake::geometry::QueryObject::X_WF (#14280)
- drake::geometry::QueryObject::X_WG (#14280)
- drake::geometry::render::CameraProperties (#14376)
- drake::geometry::render::DepthCameraProperties (#14376)
- drake::geometry::render::RenderEngine::RenderColorImage with CameraProperties (#14359)
- drake::geometry::render::RenderEngine::RenderDepthImage with DepthCameraProperties (#14359)
- drake::geometry::render::RenderEngine::RenderLabelImage with CameraProperties (#14359)
- drake::geometry::SceneGraph(data_as_state=true) (#14245)
- drake::geometry::SceneGraphInspector::GetSourceName (#14280)
- drake::geometry::SurfaceMesh::kDim (#14420)
- drake::geometry::VolumeMesh::kDim (#14420)
- drake::systems::sensors::RgbdSensor::CameraPoses (#14358)
- drake::systems::sensors::RgbdSensor::RgbdSensor constructor with CameraPoses or CameraProperties (#14358)
Removal of deprecated items
Build system
- bullet, freetype2 externals (#14398)
C++ items
- drake::math::Slerp (#14398)
- drake::pydrake::py_reference (#14267)
- drake::pydrake::py_reference_internal (#14267)
- drake::systems::kAutoSize (#14398)
- drake::systems::Simulator: time jumps warning (#14398)
- drake::systems::Subvector empty constructor (#14398)
Models
- examples/irb140/urdf (#14267)
- examples/kuka_iiwa_arm/models/objects/big_robot_toy.urdf (#14267)
- manipulation/models/wsg_50_description URDF and meshes (#14267)
Notes
This release provides
pre-compiled binaries
named drake-20201215-{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.