Drake v0.14.0

Back to Release Notes

Announcements

Breaking Changes

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

  • SDFormat 1.7 backwards-incompatible changes (#12505)
    • Models must have at least one link
    • The model frame is now attached to a link
    • Model frames can no longer reference “world”
  • Drake no longer accidentally supports regexes in the channel name passed to DrakeLcm::Subscribe (#12534)
  • Remove unused constraint equation API form Systems framework (#12553)
    • Removed the following public API:
      • drake::systems::System::CalcConstraintErrorNorm
      • drake::systems::System::CalcVelocityChangeFromConstraintImpulses
      • drake::systems::System::EvalConstraintEquationsDot
      • drake::systems::System::num_constraint_equations
    • Removed the following protected API:
      • drake::systems::System::DoCalcConstraintErrorNorm
      • drake::systems::System::DoCalcVelocityChangeFromConstraintImpulses
      • drake::systems::System::DoEvalConstraintEquations
      • drake::systems::System::DoEvalConstraintEquationsDot
      • drake::systems::System::do_get_num_constraint_equations

Dynamical Systems

New features

  • Add ability to implicit integrators to do full Newton (#12524)

Fixes

  • Update Simulator’s interface for changing integrators (#12520)
  • Eliminate spurious algebraic loop from SymbolicVectorSystem (#12500)
  • Systems reject Contexts that they did not create (#12551)

Documentation

  • Add high level event documentation (#12501)

Mathematical Program

Fixes

  • Check output size in EvaluatorBase (#10987)

Multibody Dynamics

New features

  • Use Articulated Body Algorithm (ABA) in MultibodyPlant::DoCalcTimeDerivatives() (#12470)
  • Add drake contact material properties to SDFormat/URDF parsing (#12491)
  • Parse the collision filter group for URDFs (#12495)
  • Register a geometry frame for all MultibodyPlant bodies (#12489)
  • Add ability to construct MultibodyForces before constructing a MultibodyPlant (#12556)
  • Support ellipsoid rendering (#12547)
  • Add graphviz visualization of multibodyplant topology (#12485)
  • Support parsing SDFormat 1.7 (#12505, #12533), incorporating the pose frame semantics <https://bit.ly/2ZSl1kH>_ proposal
  • Support textures for primitive objects, not just meshes (#12423); this only applies to rendering (RenderEngine*)
  • Add C++17 structured binding support to AddMultibodyPlantSceneGraphResult (#12559)

Fixes

  • Fix warning on unsupported joint limits for continuous models (#12531, #12499)
  • Fix scalar conversion bug in RevoluteSpring (#12522)

New hydroelastic contact model in progress (#12538, #12541, #12418, #12471, #12493, #12529):

  • Still only experimental
  • Improve performance
  • Improve visualization
  • Improve specification

Miscellaneous features and fixes

Common:

  • Add scope_exit class (#12537)
  • Copy yaml_write_archive from Anzu and adapt to Drake (#12568)

LCM fixes:

  • Escape regex characters in DrakeLcm channel names (#12534)
  • Clean up DrakeLcm comment/documentation (#12521)

Examples:

  • Add planar IIWA URDF and use it in ManipulationStation (#12502)
  • Add planar IIWA joint teleop example (#12503)
  • Add LCM messaging to the planar-gripper simulation (#12469)
  • Add AcrobotGeometry and purge RigidBody from examples/Acrobot (#12567)

pydrake bindings

New features

Fixes

  • Use np.asarray in gradient and jacobian (#12511)
  • Remove “Please see …” addendum from deprecation messages (#12578)

Newly bound

  • pydrake.examples.acrobot.AcrobotGeometry (#12574)
  • pydrake.examples.pendulum.PendulumGeometry (#12569)
  • pydrake.examples.manipulation_station.ManipulationStation.SetupPlanarIiwaStation (#12503)
  • pydrake.examples.manipulation_station.ManipulationStation.num_iiwa_joints (#12503)
  • pydrake.examples.manipulation_station.ManipulationStation.RegisterRgbdSensor (#12513)

Build system and dependencies

  • Add Dockerfile for Binder (#12472)
  • Fix Binder Dockerfile for Docker versions before 19.03 (#12510)
  • Error out on now-unsupported –config=snopt_fortran (#12549, #12545)
  • Update recommended Bazel version to 2.0 (#12526)
  • Ensure drake lcmtypes are exposed in installed bazel external repository (#12573)
  • Fix mkdoc comment handling edge cases (#12519)
  • Upgrade bullet to latest release 2.89 (#12516)
  • Upgrade libsdformat to latest release 9.0 (#12505)
  • Upgrade meshcat to latest commit (#12516)
  • Upgrade pybind fork to use merge with latest upstream (#12572)
  • Upgrade semantic_version to latest release 2.8.4 (#12516)
  • Upgrade uritemplate_py to latest release 3.0.1 (#12516)
  • Remove uninstall of ipopt and mumps on macOS (#12517)

Newly-deprecated APIs

  • drake::multibody::MultibodyPlant default constructor with no arguments (#12525)
    • Use constructor with time_step argument explicit specified instead.
  • drake::multibody::AddMultibodyPlantSceneGraph overload without time_step or plant specified (#12558)
    • Use overload with time_step or plant explicitly specified.
  • pydrake.multibody.rigid_body_tree.RigidBodyTree.number_of_positions (#12514)
    • Use pydrake.multibody.rigid_body_tree.RigidBodyTree.get_num_positions instead.
  • pydrake.multibody.rigid_body_tree.RigidBodyTree.number_of_velocities (#12514)
    • Use pydrake.multibody.rigid_body_tree.RigidBodyTree.get_num_velocities instead.
  • DRAKE_NODISCARD in common/drake_nodiscard.h (#12539)
    • Use [[nodiscard]] directly.
  • drake/examples/kuka_iiwa/iiwa_wsg_simulation will be removed from Drake (#12581)
    • Copy the code into your own project if still needed.
  • drake::examples::kuka_iiwa_arm::OracularStateEstimation (#12581)
    • Copy the code into your own project if still needed.
  • drake::examples::kuka_iiwa_arm::IiwaAndWsgPlantWithStateEstimator (#12581)
    • Copy the code into your own project if still needed.

Removal of deprecated APIs

  • drake::systems::Simulator::StepTo (#12515)
    • Use drake::systems::Simulator::AdvanceTo instead.
  • drake::systems::Simulator::reset_integrator(std::unique_ptr<U>) (#12520)
    • Use void or max-step-size version of reset_integrator() instead.
  • drake::systems::Simulator::reset_integrator(Args&&...) (#12520)
    • Use void or max-step-size version of reset_integrator() instead.
  • Bazel label @drake//solvers:mathematical_program_lite (#12515)
    • Use @drake//solvers:mathematical_program instead.
  • Attic removals (#12514)
    • DrakeJoint::getNumPositions
      • Use DrakeJoint::get_num_positions instead.
    • DrakeJoint::getNumVelocities
      • Use DrakeJoint::get_num_velocities instead.
    • DrakeJoint::getTransformToParentBody
      • Use DrakeJoint::get_transform_to_parent_body instead.
    • DrakeJoint::getName
      • Use DrakeJoint::get_name instead.
    • DrakeJoint::getPositionName
      • Use DrakeJoint::get_position_name instead.
    • DrakeJoint::getVelocityName
      • Use DrakeJoint::get_velocity_name instead.
    • DrakeJoint::isFloating
      • Use DrakeJoint::is_floating instead.
    • Several overloads of AddModelInstanceFromUrdfString
      • Use more specific overload names.
    • RigidBody::hasParent
      • Use RigidBody::has_parent_body instead.
    • RigidBodyTree::get_number_of_model_instances
      • Use RigidBodyTree::get_num_model_instances instead.
    • RigidBodyTree::getPositionName
      • Use RigidBodyTree::get_position_name instead.
    • RigidBodyTree::getVelocityName
      • Use RigidBodyTree::get_velocity_name instead.
    • RigidBodyTree::findAncestorBodies
      • Use RigidBodyTree::FindAncestorBodies instead.
    • RigidBodyTree::findLinkId
      • Use RigidBodyTree::FindBodyIndex instead.
    • RigidBodyTree::findJointId
      • Use RigidBodyTree::FindIndexOfChildBodyOfJoint instead.
    • RigidBodyTree::get_number_of_bodies
      • Use RigidBodyTree::get_num_bodies instead.
    • RigidBodyTree::number_of_positions
      • Use RigidBodyTree::get_num_positions instead.
    • RigidBodyTree::number_of_velocities
      • Use RigidBodyTree::get_num_velocities instead.
    • RigidBodyTree::bodies
      • Use RigidBodyTree::get_bodies and RigidBodyTree::add_rigid_body instead.
    • RigidBodyTree::frames
      • Use RigidBodyTree::get_frames and RigidBodyTree::addFrame instead.
    • InverseDynamics(const RigidBodyTree<T>*, bool)
      • Use constructor with InverseDynamicsType instead.
    • InverseDynamics::get_output_port_torque
      • Use InverseDynamics::get_output_port_force instead.
    • InverseDynamicsController::get_robot_for_control
      • Use InverseDynamicsController::get_rigid_body_tree_for_control instead.

This release provides pre-compiled binaries named drake-20200116-{bionic|mac}.tar.gz. See Nightly 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.