Drake v0.19.0

Back to Release Notes

Announcements

On macOS, Drake only supports Python 3.8. Users must read #13097 for upgrade instructions.

When paths are set incorrectly, you will see an error such as this:

ImportError: Python version mismatch: module was compiled for Python 3.8,
but the interpreter version is incompatible: 3.7.7
  • This release adds support for Ubuntu 20.04 (“Focal Fossa”).
    • Drake binary packages are available for 20.04, but Docker images are not.
    • Our recommended Ubuntu platform is still Ubuntu 18.04 (“Bionic Beaver”).
  • YamlReadArchive now offers strictness options (#13532).
    • In a future release, the default options will change to be more strict. Users who wish to retain the weaker options should update their call sites to pass the Options explicitly.

Breaking Changes since v0.18.0

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

  • Remove attic symbols from pydrake.all (#13315).
    • Users must import pydrake.attic.all to use them now.
  • Remove the incorrect drakeURDF.[xpr|xsd] files (#13326)
    • The schema defined in drakeURDF.xsd is significantly out of date. For now, we remove it so as to avoid the suggestion that it is reliable.
  • Removes dead code IntegratorBase::InitializeAccuracy() (#12624)

Changes since v0.18.0:

Dynamical Systems

New features

  • Suppress symbolic feedthrough check if non-default output prerequisites were specified (#13370)
  • Use Eigen’s formatting in VectorBase::operator«() (#13365, #13384, #13464)
  • Offer DiscreteDerivative option to disable output transient (#13336)
  • Add step doubling for implicit Euler error estimation (#13224)

Fixes

  • During simulator initialization, trigger concurrent periodic and “right now” events (#13438)
  • VelocityImplicitEulerIntegrator resets cached matrices when user changes Jacobian scheme (#13392)
  • Luenberger observer uses cache entries instead of mutable member variables (#13307)
  • Make DiagramContext use the DiagramDiscreteValues type (#13536)

Mathematical Program

New features

  • Add the ability to return the dual solution from some solvers:
  • Add GetInfeasibleConstraints to MathematicalProgramResult (#13417)
  • Add alternative convex Eval functions to LorentzConeConstraint (#13458)

Fixes

  • Obey SNOPT string options (#13397)
  • In Solve and ChooseBestSolver, skip unconfigured commercial solvers (#13279)
  • Fix symbolic::Expression::Expand() (#13503)

Multibody Dynamics

New features

  • Add MultibodyPlant spatial velocity and acceleration ports (#13364, #13399, #13423)
  • Add MultibodyPlant::GetDefaultFreeBodyPose (#13342)
  • Add PoseBundle::get_transform and set_transform (#13327)
  • Add PoseVector::get_transform and set_transform (#13327)
  • MultibodyPlant::set_penetration_allowance can be called pre-Finalize (#13435)
  • Add ball and universal joints to URDF and SDFormat parsers (#13427, #13516)
  • Support more RenderEngineVtk and ShapeReifier customizations (#13288)
  • Add SceneGraphInspector::CloneGeometryInstance (#13338)
  • Store GeometryProperties diffuse color using Rgba, not Vector4d (#13441, #13456)
  • OpenGL camera renderer in progress (#13293, #13334, #13481)
    • Still only experimental

Fixes

  • Enable kinematics computations on models with zero dofs (#13405)
  • Parser does not throw on missing sub-elements of SDFormat //surface (#13206)
  • Fix loading multiple model instances with collision filter groups (#13472)

Tutorials and examples

  • Add tutorial on updating costs/constraints in mathematical program (#13328)
  • Add meshcat animation (and binder tutorial) (#13513)
  • Add Strandbeest example (to illustrate parsing LinearBushingRollPitchYaw) (#13302)
  • Add guidance for picking bushing stiffness/damping constants (#13106)
  • Document definitions for “accuracy” and “tolerance” (#13267)

Miscellaneous features and fixes

  • common: Disallow Value cv/ref/array/pointer types ([#13444][_#13444])
  • yaml: Add configurable policies for missing items (#13537, #13532)
  • drake_visualizer: Trim clipping range to avoid rendering artifacts (#13447)
  • drake_visualizer: Do not prevent pydrake from appearing on the import path (#13428)
  • lcm: Add EncodeLcmMessage and DecodeLcmMessage sugar (#13311)
  • examples: Rewrite move_jaco_ee to use ConstraintRelaxingIk (#13325)
  • manipulation: Use latching input (not parameter) for no-op IIWA command (#13340, #13540)
  • manipulation: Check for whole default message, not just utime==0 (#13311)
  • manipulation: Fix a bug calculating the joint index in RobotPlanInterpolator (#13325)
  • manipulation: Fix collision geometries of the panda arm URDF (#13550)

pydrake bindings

New features

Fixes

  • Make BasicVector use Pythonic string formatting (#13454)
  • Add friendlier errors for MathematicalProgram dtype mismatch (#13234)

Newly bound

  • pydrake.geometry.Convex.filename (#13352)
  • pydrake.geometry.Convex.scale (#13352)
  • pydrake.geometry.GeometrySet (#13358)
  • pydrake.geometry.HalfSpace.MakePose (#13414)
  • pydrake.geometry.Mesh.filename (#13352)
  • pydrake.geometry.Mesh.scale (#13352)
  • pydrake.geometry.QueryObject.HasCollisions (#13342)
  • pydrake.geometry.SceneGraph.ExcludeCollisionsBetween (#13358)
  • pydrake.geometry.SceneGraph.ExcludeCollisionsWithin (#13358)
  • pydrake.geometry.Shape.Clone (#13361)
  • pydrake.manipulation.schunk_wsg.GetSchunkWsgOpenPosition (#13470)
  • pydrake.manipulation.schunk_wsg.MakeMultibodyStateToWsgStateSystem (#13470)
  • pydrake.manipulation.schunk_wsg.SchunkWsgCommandReceiver (#13470)
  • pydrake.manipulation.schunk_wsg.SchunkWsgCommandSender (#13470)
  • pydrake.manipulation.schunk_wsg.SchunkWsgPositionController (#13470)
  • pydrake.manipulation.schunk_wsg.SchunkWsgStatusReceiver (#13470)
  • pydrake.manipulation.schunk_wsg.SchunkWsgStatusSender (#13470)
  • pydrake.multibody.math.SpatialMomentum (#13478)
  • pydrake.multibody.plant.MultibodyPlant.CollectRegisteredGeometries (#13358)
  • pydrake.multibody.plant.MultibodyPlant.HasModelInstanceNamed (#13342)
  • pydrake.multibody.plant.MultibodyPlant.time_step (#13355)
  • pydrake.multibody.tree.Joint.default_positions (#13342)
  • pydrake.multibody.tree.Joint.set_acceleration_limits (#13342)
  • pydrake.multibody.tree.Joint.set_default_positions (#13342)
  • pydrake.multibody.tree.Joint.set_position_limits (#13342)
  • pydrake.multibody.tree.Joint.set_velocity_limits (#13342)
  • pydrake.multibody.tree.RotationalInertia (#13415)
  • pydrake.multibody.tree.SpatialInertia.CalcComMoment (#13478)
  • pydrake.multibody.tree.SpatialInertia.CalcRotationalInertia (#13415)
  • pydrake.multibody.tree.SpatialInertia.CopyToFullMatrix6 (#13415)
  • pydrake.multibody.tree.SpatialInertia.IsNaN (#13478)
  • pydrake.multibody.tree.SpatialInertia.IsPhysicallyValid (#13415)
  • pydrake.multibody.tree.SpatialInertia.ReExpress (#13478)
  • pydrake.multibody.tree.SpatialInertia.SetNaN (#13478)
  • pydrake.multibody.tree.SpatialInertia.Shift (#13478)
  • pydrake.multibody.tree.SpatialInertia.__add__ (#13478) * pydrake.multibody.tree.SpatialInertia.__mul__ (#13478)
  • pydrake.multibody.tree.SpatialInertia.get_com (#13415)
  • pydrake.multibody.tree.SpatialInertia.get_mass (#13415)
  • pydrake.multibody.tree.SpatialInertia.get_unit_inertia (#13415)
  • pydrake.solvers.csdp.CsdpSolver (#13544)
  • pydrake.solvers.csdp.CsdpSolverDetails (#13544)
  • pydrake.solvers.sdpa_free_format.GenerateSDPA (#13546)
  • pydrake.systems.analysis.PrintSimulatorStatistics (#13343)
  • pydrake.systems.analysis.Simulator.ResetStatistics (#13343)
  • pydrake.systems.analysis.Simulator.clear_monitor (#13413)
  • pydrake.systems.analysis.Simulator.get_monitor (#13413)
  • pydrake.systems.analysis.Simulator.get_system (#13525)
  • pydrake.systems.analysis.Simulator.set_monitor (#13413)
  • pydrake.systems.analysis.SimulatorStatus.ReturnReason (#13413)
  • pydrake.systems.framework.Context.DisableCaching (#13528)
  • pydrake.systems.framework.Context.EnableCaching (#13528)
  • pydrake.systems.framework.Context.FreezeCache (#13528)
  • pydrake.systems.framework.Context.SetAllCacheEntriesOutOfDate (#13528)
  • pydrake.systems.framework.Context.UnfreezeCache (#13528)
  • pydrake.systems.framework.Context.is_cache_frozen (#13528)
  • pydrake.systems.framework.Diagram.GetSystems (#13363)
  • pydrake.systems.framework.EventStatus (#13413)
  • pydrake.systems.framework.EventStatus.Severity (#13413)
  • pydrake.systems.framework.InputPort.get_system (#13363)
  • pydrake.systems.framework.OutputPort.get_system (#13363)
  • pydrake.systems.framework.System.GetSystemName (#13413)
  • pydrake.systems.framework.System.GetSystemPathname (#13413)
  • pydrake.systems.framework.System.all_sources_except_input_ports_ticket (#13413)
  • pydrake.systems.framework.SystemBase (#13413)

Build system and dependencies

Newly-deprecated APIs

  • drake::manipulation::kuka_iiwa::IiwaCommandReceiver::get_input_port (#13340)
  • drake::manipulation::kuka_iiwa::IiwaCommandReceiver::set_initial_position (#13340)
  • drake::manipulation::schunk_wsg::SchunkWsgPositionController::set_initial_position (#13340)
  • drake::multibody::MultibodyPlant::CalcBiasForJacobianSpatialVelocity (#13063)
  • drake::multibody::MultibodyPlant::CalcBiasForJacobianTranslationalVelocity (#13063)
  • drake::multibody::MultibodyPlant::default_coulomb_friction (#13371)
  • drake::solvers::SolverBase one constructor (#13279)
  • drake::systems::estimators::LuenbergerObserver one constructor (#13307)
  • drake::systems::rendering::PoseBundle::get_pose (#13327)
  • drake::systems::rendering::PoseBundle::set_pose (#13327)
  • drake::systems::rendering::PoseVector::get_isometry (#13327)
  • pydrake.multibody.VectorExternallyAppliedSpatialForced (#13407)
  • pydrake.systems.rendering.PoseBundle.get_pose (#13327)
  • pydrake.systems.rendering.PoseBundle.set_pose (#13327)
  • pydrake.systems.rendering.PoseVector.get_isometry (#13327)

The RigidBodyPlant and all of the drake “attic” is scheduled for removal on 2020-09-01 (#12158, #13030). Please see #12158 for details of the timeline, and let us know if this will cause a problem.

  • All Python modules under pydrake.attic.* (#13315)
  • All C++ headers in the attic (#13315):
    • drake/manipulation/planner/rbt_differential_inverse_kinematics.h
    • drake/multibody/collision/bullet_model.h
    • drake/multibody/collision/collision_filter.h
    • drake/multibody/collision/drake_collision.h
    • drake/multibody/collision/element.h
    • drake/multibody/collision/fcl_model.h
    • drake/multibody/collision/model.h
    • drake/multibody/collision/point_pair.h
    • drake/multibody/collision/unusable_model.h
    • drake/multibody/constraint_wrappers.h
    • drake/multibody/force_torque_measurement.h
    • drake/multibody/global_inverse_kinematics.h
    • drake/multibody/ik_options.h
    • drake/multibody/ik_trajectory_helper.h
    • drake/multibody/inverse_kinematics_backend.h
    • drake/multibody/joints/drake_joint.h
    • drake/multibody/joints/drake_joint_impl.h
    • drake/multibody/joints/drake_joints.h
    • drake/multibody/joints/fixed_axis_one_dof_joint.h
    • drake/multibody/joints/fixed_joint.h
    • drake/multibody/joints/floating_base_types.h
    • drake/multibody/joints/helical_joint.h
    • drake/multibody/joints/prismatic_joint.h
    • drake/multibody/joints/quaternion_ball_joint.h
    • drake/multibody/joints/quaternion_floating_joint.h
    • drake/multibody/joints/revolute_joint.h
    • drake/multibody/joints/roll_pitch_yaw_floating_joint.h
    • drake/multibody/joints/test/joint_compare_to_clone.h
    • drake/multibody/kinematic_path.h
    • drake/multibody/kinematics_cache.h
    • drake/multibody/kinematics_cache_helper.h
    • drake/multibody/kinematics_cache-inl.h
    • drake/multibody/material_map.h
    • drake/multibody/parsers/model_instance_id_table.h
    • drake/multibody/parsers/package_map.h
    • drake/multibody/parsers/parser_common.h
    • drake/multibody/parsers/sdf_parser.h
    • drake/multibody/parsers/urdf_parser.h
    • drake/multibody/parsers/xml_util.h
    • drake/multibody/pose_map.h
    • drake/multibody/resolve_center_of_pressure.h
    • drake/multibody/rigid_body_actuator.h
    • drake/multibody/rigid_body_constraint.h
    • drake/multibody/rigid_body_distance_constraint.h
    • drake/multibody/rigid_body_frame.h
    • drake/multibody/rigid_body.h
    • drake/multibody/rigid_body_ik.h
    • drake/multibody/rigid_body_loop.h
    • drake/multibody/rigid_body_plant/compliant_contact_model.h
    • drake/multibody/rigid_body_plant/compliant_material.h
    • drake/multibody/rigid_body_plant/contact_detail.h
    • drake/multibody/rigid_body_plant/contact_force.h
    • drake/multibody/rigid_body_plant/contact_info.h
    • drake/multibody/rigid_body_plant/contact_resultant_force_calculator.h
    • drake/multibody/rigid_body_plant/contact_results.h
    • drake/multibody/rigid_body_plant/contact_results_to_lcm.h
    • drake/multibody/rigid_body_plant/create_load_robot_message.h
    • drake/multibody/rigid_body_plant/drake_visualizer.h
    • drake/multibody/rigid_body_plant/frame_visualizer.h
    • drake/multibody/rigid_body_plant/kinematics_results.h
    • drake/multibody/rigid_body_plant/point_contact_detail.h
    • drake/multibody/rigid_body_plant/rigid_body_plant_bridge.h
    • drake/multibody/rigid_body_plant/rigid_body_plant.h
    • drake/multibody/rigid_body_plant/test/contact_result_test_common.h
    • drake/multibody/rigid_body_plant/viewer_draw_translator.h
    • drake/multibody/rigid_body_tree_alias_groups.h
    • drake/multibody/rigid_body_tree.cc
    • drake/multibody/rigid_body_tree_construction.h
    • drake/multibody/rigid_body_tree.h
    • drake/multibody/shapes/drake_shapes.h
    • drake/multibody/shapes/element.h
    • drake/multibody/shapes/geometry.h
    • drake/multibody/shapes/visual_element.h
    • drake/multibody/test/rigid_body_actuator_compare_to_clone.h
    • drake/multibody/test/rigid_body_compare_to_clone.h
    • drake/multibody/test/rigid_body_frame_compare_to_clone.h
    • drake/multibody/test/rigid_body_loop_compare_to_clone.h
    • drake/multibody/test/rigid_body_tree/rigid_body_tree_compare_to_clone.h
    • drake/systems/controllers/rbt_inverse_dynamics_controller.h
    • drake/systems/controllers/rbt_inverse_dynamics.h
    • drake/systems/controllers/test/rbt_compute_torque.h
    • drake/systems/estimators/dev/rotation.h
    • drake/systems/rendering/drake_visualizer_client.h
    • drake/systems/sensors/accelerometer.h
    • drake/systems/sensors/accelerometer_output.h
    • drake/systems/sensors/depth_sensor.h
    • drake/systems/sensors/depth_sensor_output.h
    • drake/systems/sensors/depth_sensor_specification.h
    • drake/systems/sensors/depth_sensor_to_lcm_point_cloud_message.h
    • drake/systems/sensors/depth_shaders.h
    • drake/systems/sensors/gyroscope.h
    • drake/systems/sensors/gyroscope_output.h
    • drake/systems/sensors/rgbd_camera.h
    • drake/systems/sensors/rgbd_renderer.h
    • drake/systems/sensors/rgbd_renderer_ospray.h
    • drake/systems/sensors/rgbd_renderer_vtk.h
    • drake/systems/sensors/test/accelerometer_test/accelerometer_example_diagram.h
    • drake/systems/sensors/test/accelerometer_test/accelerometer_test_logger.h
    • drake/systems/sensors/test/rgbd_renderer_test_util.h
    • drake/systems/trajectory_optimization/generalized_constraint_force_evaluator.h
    • drake/systems/trajectory_optimization/joint_limit_constraint_force_evaluator.h
    • drake/systems/trajectory_optimization/position_constraint_force_evaluator.h
    • drake/systems/trajectory_optimization/test/generalized_constraint_force_evaluator_test_util.h
    • drake/util/drakeGeometryUtil.h
    • drake/util/drakeUtil.h

Removal of deprecated items

  • DRAKE_DECLARE_COPY_AND_MOVE_AND_ASSIGN (#13452)
  • DRAKE_DEFINE_DEFAULT_COPY_AND_MOVE_AND_ASSIGN_T (#13452)
  • drake::examples::kuka_iiwa_arm::EncodeKeyFrames (#13452)
  • drake::examples::kuka_iiwa_arm::IiwaContactResultsToExternalTorque (#13452)
  • drake::examples::kuka_iiwa_arm::VerifyIiwaTree (#13452)
  • drake::manipulation::planner::ConstraintRelaxingIkRbt (#13452)
  • drake::manipulation::util::ModelInstanceInfo (#13452)
  • drake::manipulation::util::WorldSimTreeBuilder (#13452)

Notes

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