Drake v0.23.0

Back to Release Notes

Announcements

  • All code for RigidBodyPlant and the drake “attic” has been removed (#13889). Refer to v0.22.0 for the final release that contained this code.

Breaking Changes since v0.22.0

These are breaking changes that did not undergo a deprecation period:

  • The drake::systems::Subvector and drake::systems::Supervector are now marked final (#13907).
  • Add [[nodiscard]] attributes to symbolic functions (#14020, #14021).
  • The drake/common/symbolic.h headers now #error when included incorrectly (#14003).
  • For drake::yaml::YamlReadArchive, it’s now an error for yaml data to remain unparsed, unless the user opts in to allowing it; users who want a different behavior should change the Options at construction-time (#13900).
  • The drake::examples::rod2d::Rod2D::pose_output() port has been removed, as the system no longer connects to the systems::rendering API (#13890).
  • Remove pydrake.systems.framework.kAutoSize (#13981).
  • If you are using CMake to consume pydrake and you compile your own bindings using pybind11_add_module, you must now reset your target’s default visibility to “default” (not “hidden”) (#14048).

Changes since v0.22.0

Dynamical Systems

New features

  • Provide System::get_input_port and get_output_port sugar (#13883, #13894, #13895, #13896, #13897, #13898)
  • Allow PassThrough to emit default values (#13976, #13996)
  • Optionally suppress simulator initialization events (#13872)
  • Add SequentialExpressionManager::GetSequentialExpressionNames (#13925)
  • Implement derivatives for PiecewiseQuaternion (#13972)
  • Add InverseDynamicsController constructor overload to own the input plant (#14037)

Fixes

  • Add port names to InverseDynamicsController (#13879)
  • Mark Subvector and Supervector final (#13907)
  • Fix crash in discrete time TimeVaryingAffineSystem (#14008)

Mathematical Program

New features

  • Change IPOPT eval_g to use double version of constraint evaluation (#13891)
  • Add generic polynomial and MonomialBasisElement (#13867, #13940, #13980, #13994, #14023, #14036)
  • Add a function to compute polynomial basis up to a given order (#13870)
  • Add PiecewisePolynomial::AppendFirstOrderSegment (#14030)
  • Add PiecewiseQuaternionSlerp::Append (#14031)

Fixes

  • Add [[nodiscard]] attributes to symbolic functions (#14020, #14021)

Multibody Dynamics

New features

  • Add API to compute SpatialAccelerationInWorld (#13773)
  • Add API to set mass, center of pass, and spatial inertia in a Context (#13860)
  • Add API to set LinearBushingRollPitchYaw parameters in a Context (#14000)
  • Add API to get a frame’s geometries (#13999)
  • Support parsing massless bodies (#13908, #13927)
  • Add Capsule and Ellipse to RenderEngineGl (#14001)
  • New hydroelastic contact model in progress (#13864)

Fixes

  • Fix reported world poses when queried before any updates (#13990)
  • Eliminate heap use from CalcMassMatrix() (#13873, #13928, #13933, #13953)
  • Use a faster inertia matrix rotation method (#13962)
  • Propagate the MultibodyPlant name to the SceneGraph (#14024)

Tutorials and examples

  • In manipulation station, offer better Schunk WSG models (#13922)
  • In manipulation station, make iiwa feedforward torques input optional (#13995)
  • In rod2d, use modern SceneGraph conventions for visualization (#13890)

Miscellaneous features and fixes

  • autodiff: Improve performance by reducing heap use (#13988, #14045)
  • manipulation: Add DifferentialInverseKinematicsIntegrator (#13877, #13919, #13920, #14004)
  • manipulation: Make Schunk WSG limit input port optional (#13878)
  • meshcat: Support caching mesh geometry on the zmq server (#13971)
  • meshcat: Ignore geometry with invalid sizes (#14013)
  • models: Remove invalid geometry from the jaco model (#14042)
  • schema: Add stochastic, rotation, and transform types (#13943, #13949, #13991, #14014)
  • yaml: Allow omitting the root name while writing (#13915)
  • yaml: It’s an error by default for yaml data to remain unparsed (#13900)

pydrake bindings

New features

  • Add pydrake.systems.jupyter_widgets.WidgetSystem (#13882)
  • Add jupyter widget version of JointSliders (#14017)
  • Copy and adapt yaml utilities from Anzu (#13982)

Fixes

  • Ensure that multiply (matmul) preserves input shape (#13886)
  • Add missing import for jupyter widgets (#13941)
  • Ensure keep_alive for Image[].data is honored (#14015)
  • Make Jupyter fail fast when running as non-interactive kernel (#14025)

Newly bound

  • pydrake.geometry.IllustrationPropertiescopying (#14010)
  • pydrake.geometry.PerceptionPropertiescopying (#14010)
  • pydrake.geometry.ProximityProperties copying (#14010)
  • pydrake.geometry.render.MakeRenderEngineOspray (#13893)
  • pydrake.math.UniformlyRandomAngleAxis (#13993)
  • pydrake.math.UniformlyRandomQuaternion (#13993)
  • pydrake.math.UniformlyRandomRPY (#13993)
  • pydrake.math.UniformlyRandomRotationMatrix (#13993)
  • pydrake.multibody.plant.MultibodyPlant.CalcBiasCenterOfMassTranslationalAcceleration (#13997)
  • pydrake.multibody.plant.MultibodyPlant.CalcJacobianCenterOfMassTranslationalVelocity (#13997)
  • pydrake.systems.primitives.TrajectoryAffineSystem (#14009)
  • pydrake.trajectories.PiecewisePolynomial.__add__ (#14009)
  • pydrake.trajectories.PiecewiseQuaternionSlerp (#13974)
  • pydrake.trajectories.Trajectory.end_time (#14049)
  • pydrake.trajectories.Trajectory.start_time (#14049)

Build system and dependencies

  • Upgrade recommended Bazel version to 3.5 (#14005)
  • Upgrade bazel_skylib to latest release 1.0.3 (#13969)
  • Upgrade fcl to latest commit (#13965)
  • Upgrade fmt to latest release 7.0.3 (#13968)
  • Upgrade ghc_filesystem to latest release 1.3.4 (#13966)
  • Upgrade meshcat_python to latest commit (#13971)
  • Upgrade pybind11 fork to latest commit (#14028, #14046, #14048)
  • Upgrade ros_xacro to latest release 1.13.8 (#13967)
  • Separate out dependencies related to documentation generation (#13984)

Newly-deprecated APIs

  • drake::systems::Subvector 1-argument constructor (#13907)
  • drake::systems::kAutoSize (#13981)
  • The bullet external (#13986)
  • The freetype2 external (#13986)

Removal of deprecated items

  • All code for RigidBodyPlant and the drake “attic” (#13889).
  • drake::manipulation::kuka_iiwa::IiwaCommandReceiver::get_input_port (#13939)
  • drake::manipulation::kuka_iiwa::IiwaCommandReceiver::set_initial_position (#13939)
  • drake::manipulation::schunk_wsg::SchunkWsgPositionController::set_initial_position (#13939)
  • drake::multibody::MultibodyPlant::CalcBiasForJacobianSpatialVelocity (#13939)
  • drake::multibody::MultibodyPlant::CalcBiasForJacobianTranslationalVelocity (#13939)
  • drake::multibody::MultibodyPlant::default_coulomb_friction (#13939)
  • drake::solvers::GetInfeasibleConstraints (#13939)
  • drake::solvers::SolverBase one constructor (#13939)
  • drake::systems::estimators::LuenbergerObserver one constructor (#13939)
  • drake::systems::rendering::PoseBundle::get_pose (#13939)
  • drake::systems::rendering::PoseBundle::set_pose (#13939)
  • drake::systems::rendering::PoseVector::get_isometry (#13939)
  • pydrake.multibody.VectorExternallyAppliedSpatialForced (#13939)
  • pydrake.systems.rendering.PoseBundle.get_pose (#13939)
  • pydrake.systems.rendering.PoseBundle.set_pose (#13939)
  • pydrake.systems.rendering.PoseVector.get_isometry (#13939)
  • The octomap external (#13939)
  • The ruby external (#13939)

Notes

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