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
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.