Announcements
- New tutorial on nonlinear programming (#12744)
- The C++ Doxygen pages are somewhat less cluttered now (#12795, #12796)
Breaking Changes since v0.15.0
These are breaking changes that did not undergo a deprecation period:
- Drake no longer supports user-defined scalar types (#12657, #12797, #12823, #12816, #12825)
- See issue #12814 for more details.
- Removed the ability to override LeafSystem allocation methods (#12792)
- Subclasses should use the model vector (or model value) APIs to declare state, parameters, etc. instead of overriding these virtual methods.
- Removed pydrake.examples.AcrobotPlant.CalcPotentialEnergy (#12794)
- Removed pydrake.examples.AcrobotPlant.CalcKineticEnergy (#12794)
- Renamed RigidBodyTree-based implementation of drake::manipulation::planner::ConstraintRelaxingIk to drake::manipulation::planner::ConstraintRelaxingIkRbt (#12732)
- Removed godotengine build rules (#12826)
Changes since v0.15.0:
Dynamical Systems
New features
- Allow specific cache entries to be initially disabled (#12803)
- Systems reject ContinuousState that they did not create (#12630)
- Added math::IsPositiveDefinite (#12813)
- Added first implementation of general region of attraction code (#12827)
Fixes
- Diagrams now report correct state counts (#12701)
Mathematical Program
No changes in this release.
Multibody Dynamics
New features
- Added more MultibodyPlant intermediate calculations to cache
- Improved error message for invalid spatial inertia (#12766)
- SpatialInertia support for massless bodies (#12809)
- Velocity-implicit Euler integrator in progress (#12543, #12740)
- Added doc about the availability of force/torque sensor (#12791)
- Added support for derivative of signed distance between a pair of geometries (#12720)
- Added build system skeleton for forthcoming OpenGL render engine (#12623)
- Implemented Composite Body Algorithm to compute the mass matrix (#12764)
- Discrete-mode MultibodyPlant is faster, particularly in cases with branched kinematics, due to incorporation of Composite Body Algorithm in the discrete solver (#12838)
- New hydroelastic contact model in progress (#12597, #12699, #12751,
#12763, #12745, #12730, #12840)
- Still only experimental
- Improve performance
- Improve architecture
Fixes
- Got rid of accidental heap allocation within CalcArticulatedBodyForceBiasCache() (#12728)
- Alphabetized targets in geometry/proximity/BUILD (#12748)
- Quarantined FCL’s haphazard use of const in broadphase (#12746)
- Fixed catastrophic cancellation in point mass unit inertias (#12758)
Miscellaneous features and fixes
- Add the capability to visualize collisions in geometry_inspector (#12736)
- Add operator« to sorted_pair (#12801)
- Fixed allegro_hand discrete update period (#12734)
- Improve the simple_gripper example to make it possible to test more integrators (#12742)
- Added more methods to symbolic::Polynomial (#12835)
- Fixed accidental quadratic parsing of Yaml (#12830)
pydrake bindings
- pydrake.systems.framework.System.EvalKineticEnergy (#12794)
- pydrake.systems.framework.System.EvalPotentialEnergy (#12794)
- pydrake.systems.primitives.DiscreteDerivative (#12770)
- pydrake.systems.primitives.StateInterpolatorWithDiscreteDerivative (#12770)
- Fixed pydrake.solvers.ScsSolverDetails numpy-typed fields (#12737)
- Fixed pydrake.solvers.SnoptSolverDetails numpy-typed fields (#12737)
Build system and dependencies
- GCC 7.5 is now Ubuntu’s default compiler (#12845)
- Added new dependency on OpenGL on Ubuntu only (#12623)
- Use system Eigen >= 3.3.4, not downloaded bitbucket tag (#12784, #12780)
- Upgraded bazel minimum and recommended versions to 2.0 and 2.1 respectively (#12729)
- Upgraded buildifier to latest release 2.0.0 (#12836)
- Upgraded fcl to latest release (#12762)
- Upgraded ghc_filesystem to latest release 1.3.0 (#12799)
- Upgraded styleguide to latest commit (includes cpplint changes) (#12765, #12800, #12776)
- Fixed missing load() in drake_bazel_installed support (#12605)
Newly-deprecated APIs
- APIs:
- drake::examples::kuka_iiwa_arm::EncodeKeyFrames (#12732)
- drake::examples::kuka_iiwa_arm::IiwaContactResultsToExternalTorque (#12732)
- drake::examples::kuka_iiwa_arm::VerifyIiwaTree (#12732)
- drake::manipulation::planner::ConstraintRelaxingIkRbt (#12732)
- DRAKE_DECLARE_COPY_AND_MOVE_AND_ASSIGN (#12735)
- DRAKE_DEFINE_DEFAULT_COPY_AND_MOVE_AND_ASSIGN_T (#12735)
Removal of deprecated items
- APIs
- drake::geometry::Capsule::get_length (#12781)
- drake::geometry::Capsule::get_radius (#12781)
- drake::geometry::Cylinder::get_length (#12781)
- drake::geometry::Cylinder::get_radius (#12781)
- drake::geometry::Ellipsoid::get_a (#12781)
- drake::geometry::Ellipsoid::get_b (#12781)
- drake::geometry::Ellipsoid::get_c (#12781)
- drake::geometry::Sphere::get_radius (#12781)
- pydrake.attic.multibody.rigid_body_tree.RigidBodyTree.number_of_positions (#12781)
- pydrake.attic.multibody.rigid_body_tree.RigidBodyTree.number_of_velocities (#12781)
- pydrake.geometry.Capsule.get_length (#12781)
- pydrake.geometry.Capsule.get_radius (#12781)
- pydrake.geometry.Cylinder.get_length (#12781)
- pydrake.geometry.Cylinder.get_radius (#12781)
- pydrake.geometry.Ellipsoid.get_a (#12781)
- pydrake.geometry.Ellipsoid.get_b (#12781)
- pydrake.geometry.Ellipsoid.get_c (#12781)
- pydrake.geometry.Sphere.get_radius (#12781)
- DRAKE_SPDLOG_TRACE (#12781)
- DRAKE_SPDLOG_DEBUG (#12781)
- drake/multibody/tree/multibody_tree_element.h header (#12781)
- Examples:
Notes
This release provides
pre-compiled binaries
named drake-20200311-{bionic|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.