Skip to content

DART 6.19.0

Choose a tag to compare

@jslee02 jslee02 released this 15 Jun 08:08
· 628 commits to main since this release
6cf6a4d

DART 6.19.0 is a minor release on the DART 6 LTS line. It adds automatic body
deactivation ("sleeping"), contact-aware inverse dynamics, and a cylindrical
dynamic joint constraint, together with a constraint-solver hot-path
optimization and build/example fixes for modern toolchains.

Build

  • Include <cassert> before the FCL headers in the FCL compatibility shim so DART builds against Eigen 5 and current GCC/Clang toolchains, which no longer pull <cassert> in transitively (FCL's shape headers call assert without including it). (#3021)

Constraint

  • Add CylindricalJointConstraint for runtime slide-and-rotate attachments that leave translation along an axis and rotation about that axis free, with headless and GUI examples covering DART 6.x dynamic joint constraints. (#2923)
  • Optimize the DART 6 constraint-solver hot path (box-stacking benchmarks ~1.28× faster) with bit-exact results, adding a lightweight profiling-scope helper used to measure it. (#3023)

Dynamics

  • Add ContactInverseDynamics and math::solveNonNegativeLeastSquares to compute joint torques together with friction-cone-consistent contact forces for tracked motions with contacts, so floating-base inverse dynamics no longer requires an external QP solver — with unit tests, benchmarks, dartpy bindings for ContactInverseDynamics (the solveNonNegativeLeastSquares solver is C++-only), and an ImGui-based GUI example. (#2985)

Examples and Tutorials

  • Enlarge the floor and add an FPS / physics real-time-factor HUD to the glut_add_delete_skels example, so spawned cubes keep room on the ground and the effect of adding skeletons on real-time performance is visible. (#3019)

GUI

  • Fix every GLUT example failing to open a window on modern Mesa/Xwayland: the shared GLUT window no longer requests a legacy, now-unavailable accumulation buffer, selecting the framebuffer with a relaxable glutInitDisplayString instead, while MotionBlurSimWindow opts back into an accumulation buffer on its own. (#3017)

Simulation

  • Add automatic body deactivation ("sleeping") for resting solver islands, including wake-on-contact/force handling and island-index diagnostics. It is enabled by default, so resting bodies now freeze automatically; the detection is a deterministic no-op while bodies are active, and it can be turned off via World::setDeactivationOptions to retain the previous always-active behavior. (#2920)

Full changelog: https://github.com/dartsim/dart/blob/v6.19.0/CHANGELOG.md · Milestone: https://github.com/dartsim/dart/milestone/97?closed=1