kdFlex 1.0.1 release

kdFlex 1.0.1 Code Changes Summary

API Changes

  • Renamed onode interBodyFroce() to getInterBodyForceTreeFwdDyn() doc
  • Renamed onode getTAInterBodyFroce() to getInterBodyForceTAFwdDyn() doc
  • The evalTreeForwardDynamics and evalTAForwardDynamics methods have been removed from Algorithms in favor of evalForwardDynamics, which chooses the correct one based on the arguments passed in. See evalForwardDynamics for more details.
  • Renamed Node’s newtonian2NodeF2F method to newtonianToNodeFrameToFrame. See newtonianToNodeFrameToFrame for more details.
  • Renamed PhysicalBody’s newtonian2bodyF2F method to newtonainToBodyFrameToFrame. See newtonianToBodyFrameToFrame for more details.
  • Renamed PrescribedFrameToFrame.setAccel to PrescribedFrameToFrame.setRelSpAccel. See PrescribedFrameToFrame.setRelSpAccel for more details.
  • Renamed F2FJacobianGenerator to FrameToFrameJacboianGenerator. See FrameToFrameJacobianGenerator for more details.
  • Renamed Dump* members to follow naming conventions, e.g., lockStatus has been renamed to current_status. See DumpFrameTreeOptions as an example for details.
  • Fixed spelling of the SentinalValue class. It is now correctly spelled as SentinelValue. See SentinelValue for details.

New Features

  • Added an new cubic Hermite interpolator type. This is implemented in Karana.Math.CubicHermiteInterpolator.
  • Added “selenium” client type in setupGraphics. Selenium is a browser automation tool primarily used for testing. This may be useful for testing graphics in a headless environment.
  • Added KUtils.multirun subpackage for performing Monte Carlo or parametric sweeps over multiple simulation runs.
  • Added Algorithm::evalExternalSpatialForce() method doc
  • The trace_callback_registry member variable was added to CallbackRegistry, which prints trace messages whenever execute or executeReverse are executing the functions. See CallbackRegistry.trace_callback_registry in the usage guide for details.

Enhancements

  • Improved error message if there was an issue starting up a visjs server for graph visualization.
  • Started caching the pair of nodes for the last contact in ContactForceBase so it can looked up later for debugging and visualization by calling getLastNodePair.
  • Added explicity copy/copy-assignments to all interpolator classes.
  • Implemented toDS() method for UniformGravity model doc
  • Fixed physical body’s reattach() method to also check if the new hinge type is different [doc](file:///home/jain/src/sboxes/sbox/src/Docs/build/html/generated/python_api/Karana/Dynamics/index.html#Karana.Dynamics.PhysicalBody.reattach)
  • Added getScenePart() method to PhysicalBody [doc](file:///home/jain/src/sboxes/sbox/src/Docs/build/html/generated/python_api/Karana/Dynamics/index.html#Karana.Dynamics.PhysicalBody.getScenePart)
  • Updated link between StatePropagator and SubTree to better track when state resets are needed. Better error messages are thrown earlier to improve the user experience. See the system state section for more details.
  • The hardReset method has been added to the StatePropagator. This allows one to re-sync the number of states the StatePropagator has with the assocaited SubTree and continuous models. This method wipes out the state vector, so a reset of the state is needed via StatePropagator.setState. See StatePropagator.hardReset for details.
  • The error messages thrown when the StatePropagator needs a state reset that the user has forgotten about have been improved. They now describe what kind of state reset is needed, and why the state reset is needed (what changed since the last state reset that necessitates a state reset). See the system state section for more details.
  • Internally, Frames are no longer being purged from their UsageMap, and are instead being erased. This removes the chance of seg faulting due to a purged Frame that is used later (after being discarded).

Bug Fixes

  • Fixed an issue where the visjs graph visualization server would sometimes incorrectly fail to start up with a “port in use” error.
  • Fixed a bug where WebScene’s frontend would not compute missing vertex normals for a StaticMeshGeometry.
  • Adjusted flags in the setupGraphics selenium client for consistent renders in docker.
  • Fixed duplicated ABI entires for classes on macOS builds (this only affected macOS builds).
  • Fixed bug where StatePropagator.assembleState returned local rather than global state.
  • Fixed bug with Algorithms.framesOSCM and locked subhinges. The Algorithms.framesOSCM now works with locked subhinges as expected.