Get License

kdFlex 1.1.2 release


kdFlex 1.1.2 Code Changes Summary

API Changes

  • Added ability to remove ScenePartSpecs from PhysicalBody objects. Now every spec attached to a body must have a unique name (relative to that body).
  • The HingeBase::subhinges() method returns a std::vector now. See docs
  • Renamed Frame parent() method to parentFrame() and children() to childrenFrames(). See docs
  • Swapped the meaning of TRANSLATIONAL and TRANSLATIONAL3 hinge types
  • The var member has been removed, and is now accessed using the getVars method. See getVars for more details.
  • Renamed DebugManager.all_destroyed_verbosity to DebugManager.all_destroyed_message_limit. See DebugManager.all_destroyed_message_limit for more details.

New Features

  • Added Vars and more tuning options for CVodeIntegrator as well as GUI support for inspecting and tuning integrator performance.
  • Added support for Convex Decomposition of collision meshes using the coacd library and added convex optimizations to collision detection.
  • Added the Axes3d helper class to visualize a Frame’s axes using 3d objects rather than line segments.
  • Added TRANSLATIONAL3 hinge type consisting of a single LINEAR3 subhinge. See docs
  • A Sim class has been added to Karana.KUtils.Sim. This provides a simple way to start up a simulation in one line, and also provides convenience methods for common tasks like creating graphics or starting the GUI. For details, see the Sim section of the user guide.
  • An FSM class has been added in Karana.KUtils. This provides a simple way to create FSMs for running more complex scenarios. For details, see the FSM section.
  • The setSubTree method was added to ModelManager. This makes it easier to do things like constraint embedding, as this can be set up after the ModelManager is set up, and no longer has to strictly be done beforehand. See ModelManager.setSubTree for details.
  • Added the PythonReentryMonitor. This class allows one to easily detect locations where Python is included in the simulation loop; these are spots where switching callbacks to C++ can greatly improve performance. See the PythonReentryManager recipe for more details.
  • Added the executeAndPopReverse method to CallbackRegistry. This executes callbacks in reverse and deletes them as it goes. This is the preferred method to call for cleanup-related registries, rather than calling executeReverse followed by clear. See CallbackRegistry::executeAndPopReverse for more details.

Enhancements

  • Refactored integrator wrappers to make them easier to use and extend.
  • Changed default CVodeIntegrator settings to be more robust and performant.
  • Decluttered the graphical interface when visualizing a graph with GraphServer
  • Added WebScene::setOnHover. WebScene will invoke the provided callback whenever the user hovers over an object in the 3d graphics.
  • Added the equality operator to Color so that Color instances with the same RGBA values are equal.
  • Many methods/functions in kdFlex have had their pybind11 bindings updated to use units. See HomTran.setTranslation for an example.
  • Added getSupportsAccelsFlag() method to FrameToFrame to check whether acceleration computations are supported for an instance. See docs
  • Both oriented and regular f2fs now disable acceleration computations if any edge in their path does not support accelerations

Bug Fixes

  • Improved stability of mesh-mesh and mesh-convex collision detection.
  • Fixed an issue with environment variables that could prevent the karana-webui electron frontend from launching in some cases.
  • Locally patched Eigen’s NumericalDiff.h file to fix bug for very small set point values.