Drake v1.14.0

Back to Release Notes

Announcements

  • Drake’s precopmiled Ubuntu binaries now have OpenMP enabled (#18849).
  • Drake’s parser can add *.obj files directly into a MultibodyPlant without SDFormat boilerplate (#18776).
  • Drake no longer sets nor requires FMT_DEPRECATED_OSTREAM (#18806, #18850).
    • Drake will remain compatible with this setting, so if you still need it for your own project you can set it yourself.

Breaking changes since v1.13.0

  • InverseKinematics no longer gives mutable access to const members (#18793)

Refer to our Drake Stability Guidelines for our policy on API changes.

Changes since v1.13.0

Dynamical Systems

New features

  • Improve defaults for AffineSystem and LinearSystem (#18822)

Fixes

  • None

Mathematical Program

New features

  • Add GUROBI_NUM_THREADS environment variable (#18819)
  • QuadraticConstraint stores Hessian type and checks convexity (#18965)
  • Add SubstituteAndExpand method to Polynomial (#18752)
  • Enable symbolic matrix inversions (#18823)
  • Adds BezierCurve (isa Trajectory) (#18868)

Fixes

  • Fix a bug in GurobiSolver with duplicated variables in second-order cone constraints (#18890)
  • Retrieve Mosek IPM solution if basis selection is disabled for LP (#18895)
  • Speed up symbolic Add and Mul (#18869)
  • Speed up symbolic Variable (#18901)
  • Remove redundant options copying in IpoptSolver (#18874)
  • Change SolverBase constructor to prefer SolverId directly (#18880)

Multibody Dynamics and Geometry

New features

  • Implement Meshcat::PlotSurface() (#18924)
  • Implement Meshcat::GetSliderNames() (#18949)
  • Add SpatialInertia::PointMass() (#18864)
  • Add SpatialInertia::HollowSphereWithDensity() (#18865)
  • Add SpatialInertia::SolidCubeWithDensity() (#18866)
  • Add SpatialInertia::SolidCylinderAboutEnd() (#18889)
  • Add SpatialInertia::ThinRodWithMass() (#18891)
  • Add SpatialInertia::ThinRodWithMassAboutEnd() (#18950)
  • Allow models to be parsed into plant from *.obj files (#18776)
  • Support auto-renaming of models (#18921)
  • Retrieve joint actuators and actuated joints per model instance (#18959)

Fixes

  • Improve SDFormat parsing error reporting (#18462)
  • Ignore collision filter groups from model directives if there’s no scene graph (#18798)
  • SceneGraphInspector provides ordering guarantees on reported ids (#18903)
  • Relax single model test in SDFormat singular API (#18888)

Planning

New features

  • Ongoing work in progress on the C-IRIS feature:
    • Move c_iris_collision_geometry out of dev folder (#18824)
    • Move c_iris_separating_plane out of dev (#18852)
    • Move cspace_free_polytope.h out of dev folder (#18860)
    • Move CspaceFreePolytope constructor out of dev folder (#18863)
  • Add PointToLineDistanceConstraint (#18817)

Fixes

  • InverseKinematics no longer gives mutable access to const members (#18793)
  • Further improve welded body check (#18723)
  • Clean up ZmpPlanner (#18845)

Tutorials and examples

  • Add Diagram tutorial (#18873)
  • Add an example of using namedview in authoring leaf systems (#18809)
  • Add and use drake_models/package.xml (#18919)
  • Fix skydio model prop colors and normals (#18867)
  • Move the distal geometry for the Jaco arm to link 7 (#18799)

Miscellaneous features and fixes

  • Visualiation improvements
    • Meldis displays point cloud data (#18896)
    • ModelVisualizer preserves joint posture on reload (#18933, #18949)
    • Add contact visualization to meshcat defaults (#18907)
  • Logging changes
    • Add DRAKE_FORMATTER_AS (#18771)
    • Add fmt_eigen (#18811)
    • Add fmt::streamed and fmt::ostream_formatter polyfills (#18801)
  • Add DrakeLcmBase (#18847)
  • Add DrakeLcmInterface::SubscribeMultichannel (#18826)
  • Serializable objects can also be output as JSON (#18943)

pydrake bindings

New features

  • None

Fixes

  • Leave C++ logging sink intact (but no-op) (#18750)
  • Condense pydrake.manipulation into a single module (#18973)
  • Use nice names for default template classes (#18972)

Build system

  • Remove opt-in to FMT_DEPRECATED_OSTREAM (#18806), #18850)
  • Enable OpenMP in Ubuntu binaries (#18849)
  • Automatically fix more GCC 12 installation mistakes on Jammy (#18925)

Build dependencies

  • Upgrade abseil_cpp_internal to latest commit (#18926)
  • Upgrade bazel_skylib to latest release 1.4.1 (#18926)
  • Upgrade curl_internal to latest release 7.88.1 (#18929)
  • Upgrade lcm to latest commit (#18926)
  • Upgrade mypy_internal to latest release v1.0.1 (#18926)
  • Upgrade petsc to latest release v3.18.5 (#18926)
  • Upgrade ros_xacro_internal to latest release 1.14.15 (#18926)
  • Upgrade rules_pkg to latest release 0.8.1 (#18926)
  • Upgrade rules_python to latest release 0.19.0 (#18926)
  • Upgrade sdformat_internal to latest release 13.3.0 (#18931)
  • Upgrade tinyobjloader to latest commit (#18926)
  • Upgrade typing_extensions_internal to latest release 4.5.0 (#18926)

Newly-deprecated APIs

  • drake::SortedPair::operator« (#18892)
  • drake::copyable_unique_ptr::operator« (#18771)
  • drake::kHomogeneousTransformSize (#18857)
  • drake::kQuaternionSize (#18857)
  • drake::kRotmatSize (#18857)
  • drake::kRpySize (#18857)
  • drake::kSpaceDimension (#18857)
  • drake::kTwistSize (#18857)
  • drake::multibody::parsing::GetInstanceScopeName (#17482)
  • drake::multibody::parsing::GetScopedFrameName (#17482)
  • drake::multibody::parsing::ParseScopedName (#17482)
  • drake::multibody::parsing::PrefixName (#17482)
  • drake::planning::CollisionChecker::GetScopedName (#17482)
  • drake::solvers::SolverBase constructor with a SolverId-returning functor (#18880)
  • drake::systems::controllers::ZMPPlanner (#18845)
  • pydrake.multibody.parsing.GetScopedFrameName (#17482)
  • pydrake.multibody.plant.CalcJacobianSpatialVelocity(*, p_BP) use p_BoBp_B (#18876)
  • pydrake.planning.CollisionChecker.GetScopedName (#17482)

Removal of deprecated items

  • drake::trajectories::PiecewisePolynomial::Cubic (#18927)
  • drake::multibody::MultibodyPlant::AddCouplerConstraint with non-double gear_ratio and offet (#18927)
  • drake::multibody::MultibodyPlant continuous_state port (#18927)
  • drake::multibody::MoultibodyPlant port suffixed with _continuous_state (#18927)
  • drake::multibody::FixedOffsetFrame::SetPoseInBodyFrame (#18927)
  • drake::systems::LeafSystem::DeclarePeriodicPublish (#18927)
  • drake::systems::LeafSystem::DeclarePeriodicDiscreteUpdate (#18927)
  • drake::systems::LeafSystem::DeclarePeriodicUnrestrictedUpdate (#18927)
  • drake::systems::System::CalcDiscreteVariableUpdates (#18927)
  • drake::systems::System::CalcUnrestrictedUpdate (#18927)
  • drake::systems::System::Publish(context) (#18927)
  • pydrake.multibody.tree.FixedOffsetFrame.SetPoseInBodyFrame (#18927)
  • pydrake.systems.framework.LeafSystem.DeclarePeriodicPublish (#18927)
  • pydrake.systems.framework.LeafSystem.DeclarePeriodicDiscreteUpdate (#18927)
  • pydrake.systems.framework.System.CalcDiscreteVariableUpdates (#18927)
  • pydrake.systems.framework.System.CalcUnrestrictedUpdate (#18927)
  • pydrake.systems.framework.System.Publish (#18927)

Notes

This release provides pre-compiled binaries named drake-20230315-{focal|jammy|mac|mac-arm64}.tar.gz. See [Stable Releases] (/from_binary.html#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.