Skip to content

Commit

Permalink
Release notes v0.23.0 (RobotLocomotion#13956)
Browse files Browse the repository at this point in the history
  • Loading branch information
jwnimmer-tri authored Sep 14, 2020
1 parent 6bd5f8c commit a161f8e
Show file tree
Hide file tree
Showing 3 changed files with 323 additions and 8 deletions.
1 change: 1 addition & 0 deletions doc/release_notes/release_notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,4 @@ Release Notes
v0.20.0
v0.21.0
v0.22.0
v0.23.0
310 changes: 310 additions & 0 deletions doc/release_notes/v0.23.0.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,310 @@
*************
Drake v0.23.0
*************

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
* 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`_).
(`#14003`_).
* 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
~~~~~~~~~~~~~~~~~

.. <relnotes for systems go here>
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 construtor 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
~~~~~~~~~~~~~~~~~~~~

.. <relnotes for solvers go here>
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
~~~~~~~~~~~~~~~~~~

.. <relnotes for geometry,multibody go here>
New features

* Add API to compute SpatialAccelerationInWorld (`#13773`_)
* Add API to set mass, center of pass, and spatial intertia 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
~~~~~~~~~~~~~~~~~~~~~~

.. <relnotes for examples,tutorials go here>
* 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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. <relnotes for common,math,lcm,lcmtypes,manipulation,perception go here>
* 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
~~~~~~~~~~~~~~~~

.. <relnotes for bindings go here>
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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. <relnotes for attic,cmake,doc,setup,third_party,tools go here>
* 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
<https://github.com/RobotLocomotion/drake/releases/tag/v0.23.0>`__ named
``drake-20200913-{bionic|focal|mac}.tar.gz``. See :ref:`Nightly Releases
<nightly-releases>` for instructions on how to use them.

Drake binary releases incorporate a pre-compiled version of `SNOPT
<https://ccom.ucsd.edu/~optimizers/solvers/snopt/>`__ as part of the
`Mathematical Program toolbox
<https://drake.mit.edu/doxygen_cxx/group__solvers.html>`__. Thanks to
Philip E. Gill and Elizabeth Wong for their kind support.

.. _v0.22.0: https://github.com/RobotLocomotion/drake/releases/tag/v0.22.0

.. <begin issue links>
.. _#13773: https://github.com/RobotLocomotion/drake/pull/13773
.. _#13860: https://github.com/RobotLocomotion/drake/pull/13860
.. _#13864: https://github.com/RobotLocomotion/drake/pull/13864
.. _#13867: https://github.com/RobotLocomotion/drake/pull/13867
.. _#13870: https://github.com/RobotLocomotion/drake/pull/13870
.. _#13872: https://github.com/RobotLocomotion/drake/pull/13872
.. _#13873: https://github.com/RobotLocomotion/drake/pull/13873
.. _#13877: https://github.com/RobotLocomotion/drake/pull/13877
.. _#13878: https://github.com/RobotLocomotion/drake/pull/13878
.. _#13879: https://github.com/RobotLocomotion/drake/pull/13879
.. _#13882: https://github.com/RobotLocomotion/drake/pull/13882
.. _#13883: https://github.com/RobotLocomotion/drake/pull/13883
.. _#13886: https://github.com/RobotLocomotion/drake/pull/13886
.. _#13889: https://github.com/RobotLocomotion/drake/pull/13889
.. _#13890: https://github.com/RobotLocomotion/drake/pull/13890
.. _#13891: https://github.com/RobotLocomotion/drake/pull/13891
.. _#13893: https://github.com/RobotLocomotion/drake/pull/13893
.. _#13894: https://github.com/RobotLocomotion/drake/pull/13894
.. _#13895: https://github.com/RobotLocomotion/drake/pull/13895
.. _#13896: https://github.com/RobotLocomotion/drake/pull/13896
.. _#13897: https://github.com/RobotLocomotion/drake/pull/13897
.. _#13898: https://github.com/RobotLocomotion/drake/pull/13898
.. _#13900: https://github.com/RobotLocomotion/drake/pull/13900
.. _#13907: https://github.com/RobotLocomotion/drake/pull/13907
.. _#13908: https://github.com/RobotLocomotion/drake/pull/13908
.. _#13915: https://github.com/RobotLocomotion/drake/pull/13915
.. _#13919: https://github.com/RobotLocomotion/drake/pull/13919
.. _#13920: https://github.com/RobotLocomotion/drake/pull/13920
.. _#13922: https://github.com/RobotLocomotion/drake/pull/13922
.. _#13925: https://github.com/RobotLocomotion/drake/pull/13925
.. _#13927: https://github.com/RobotLocomotion/drake/pull/13927
.. _#13928: https://github.com/RobotLocomotion/drake/pull/13928
.. _#13933: https://github.com/RobotLocomotion/drake/pull/13933
.. _#13939: https://github.com/RobotLocomotion/drake/pull/13939
.. _#13940: https://github.com/RobotLocomotion/drake/pull/13940
.. _#13941: https://github.com/RobotLocomotion/drake/pull/13941
.. _#13943: https://github.com/RobotLocomotion/drake/pull/13943
.. _#13949: https://github.com/RobotLocomotion/drake/pull/13949
.. _#13953: https://github.com/RobotLocomotion/drake/pull/13953
.. _#13962: https://github.com/RobotLocomotion/drake/pull/13962
.. _#13965: https://github.com/RobotLocomotion/drake/pull/13965
.. _#13966: https://github.com/RobotLocomotion/drake/pull/13966
.. _#13967: https://github.com/RobotLocomotion/drake/pull/13967
.. _#13968: https://github.com/RobotLocomotion/drake/pull/13968
.. _#13969: https://github.com/RobotLocomotion/drake/pull/13969
.. _#13971: https://github.com/RobotLocomotion/drake/pull/13971
.. _#13972: https://github.com/RobotLocomotion/drake/pull/13972
.. _#13974: https://github.com/RobotLocomotion/drake/pull/13974
.. _#13976: https://github.com/RobotLocomotion/drake/pull/13976
.. _#13980: https://github.com/RobotLocomotion/drake/pull/13980
.. _#13981: https://github.com/RobotLocomotion/drake/pull/13981
.. _#13982: https://github.com/RobotLocomotion/drake/pull/13982
.. _#13984: https://github.com/RobotLocomotion/drake/pull/13984
.. _#13986: https://github.com/RobotLocomotion/drake/pull/13986
.. _#13988: https://github.com/RobotLocomotion/drake/pull/13988
.. _#13990: https://github.com/RobotLocomotion/drake/pull/13990
.. _#13991: https://github.com/RobotLocomotion/drake/pull/13991
.. _#13993: https://github.com/RobotLocomotion/drake/pull/13993
.. _#13994: https://github.com/RobotLocomotion/drake/pull/13994
.. _#13995: https://github.com/RobotLocomotion/drake/pull/13995
.. _#13996: https://github.com/RobotLocomotion/drake/pull/13996
.. _#13997: https://github.com/RobotLocomotion/drake/pull/13997
.. _#13999: https://github.com/RobotLocomotion/drake/pull/13999
.. _#14000: https://github.com/RobotLocomotion/drake/pull/14000
.. _#14001: https://github.com/RobotLocomotion/drake/pull/14001
.. _#14003: https://github.com/RobotLocomotion/drake/pull/14003
.. _#14004: https://github.com/RobotLocomotion/drake/pull/14004
.. _#14005: https://github.com/RobotLocomotion/drake/pull/14005
.. _#14008: https://github.com/RobotLocomotion/drake/pull/14008
.. _#14009: https://github.com/RobotLocomotion/drake/pull/14009
.. _#14010: https://github.com/RobotLocomotion/drake/pull/14010
.. _#14013: https://github.com/RobotLocomotion/drake/pull/14013
.. _#14014: https://github.com/RobotLocomotion/drake/pull/14014
.. _#14015: https://github.com/RobotLocomotion/drake/pull/14015
.. _#14017: https://github.com/RobotLocomotion/drake/pull/14017
.. _#14020: https://github.com/RobotLocomotion/drake/pull/14020
.. _#14021: https://github.com/RobotLocomotion/drake/pull/14021
.. _#14023: https://github.com/RobotLocomotion/drake/pull/14023
.. _#14024: https://github.com/RobotLocomotion/drake/pull/14024
.. _#14025: https://github.com/RobotLocomotion/drake/pull/14025
.. _#14028: https://github.com/RobotLocomotion/drake/pull/14028
.. _#14030: https://github.com/RobotLocomotion/drake/pull/14030
.. _#14031: https://github.com/RobotLocomotion/drake/pull/14031
.. _#14036: https://github.com/RobotLocomotion/drake/pull/14036
.. _#14037: https://github.com/RobotLocomotion/drake/pull/14037
.. _#14042: https://github.com/RobotLocomotion/drake/pull/14042
.. _#14045: https://github.com/RobotLocomotion/drake/pull/14045
.. _#14046: https://github.com/RobotLocomotion/drake/pull/14046
.. _#14048: https://github.com/RobotLocomotion/drake/pull/14048
.. _#14049: https://github.com/RobotLocomotion/drake/pull/14049
.. <end issue links>
..
Current oldest_commit 0de592fdd53d55132b45a7a7c86b979a99f561e4 (exclusive).
Current newest_commit 6bd5f8c25cdcbb4049e57ec0f49f6e2c136d864a (inclusive).
20 changes: 12 additions & 8 deletions tools/dev/relnotes.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,18 +131,19 @@ def _update(args, rst_filename, gh, drake):
# Find new commits from newest to oldest.
commits = []
for commit in drake.commits(sha='master'):
commits.append(commit)
if commit.sha == prior_newest_commit:
break
commits.append(commit)
if len(commits) == args.max_num_commits:
raise RuntimeError("Reached max_num_commits")
new_newest_commit = commits[0].sha

# Edit the newest_commit annotation.
old_line = lines[prior_newest_commit_line]
new_line = re.sub(r"[0-9a-f]{40}", new_newest_commit, old_line)
assert new_line != old_line
lines[prior_newest_commit_line] = new_line
if commits:
new_newest_commit = commits[0].sha
old_line = lines[prior_newest_commit_line]
new_line = re.sub(r"[0-9a-f]{40}", new_newest_commit, old_line)
assert new_line != old_line
lines[prior_newest_commit_line] = new_line

# Add each commit to a section, based on its package.
for commit in commits:
Expand Down Expand Up @@ -181,10 +182,13 @@ def _update(args, rst_filename, gh, drake):
for i, one_line in enumerate(lines):
if begin < i < end:
continue
match = re.search("`#([0-9]*)`_", one_line)
if match:
while True:
match = re.search("`#([0-9]*)`_", one_line)
if not match:
break
(number,) = match.groups()
pr_numbers.add(number)
one_line = one_line[match.end(0):]
pr_links = [
f".. _#{n}: https://github.com/RobotLocomotion/drake/pull/{n}\n"
for n in sorted(list(pr_numbers))
Expand Down

0 comments on commit a161f8e

Please sign in to comment.