kdFlex 1.0.1 Code Changes Summary
API Changes
- Renamed onode interBodyFroce() to getInterBodyForceTreeFwdDyn() doc
- Renamed onode getTAInterBodyFroce() to getInterBodyForceTAFwdDyn() doc
- The
evalTreeForwardDynamicsandevalTAForwardDynamicsmethods have been removed fromAlgorithmsin favor ofevalForwardDynamics, which chooses the correct one based on the arguments passed in. See evalForwardDynamics for more details. - Renamed
Node’snewtonian2NodeF2Fmethod tonewtonianToNodeFrameToFrame. See newtonianToNodeFrameToFrame for more details. - Renamed
PhysicalBody’snewtonian2bodyF2Fmethod tonewtonainToBodyFrameToFrame. See newtonianToBodyFrameToFrame for more details. - Renamed
PrescribedFrameToFrame.setAcceltoPrescribedFrameToFrame.setRelSpAccel. See PrescribedFrameToFrame.setRelSpAccel for more details. - Renamed
F2FJacobianGeneratortoFrameToFrameJacboianGenerator. See FrameToFrameJacobianGenerator for more details. - Renamed
Dump*members to follow naming conventions, e.g.,lockStatushas been renamed tocurrent_status. See DumpFrameTreeOptions as an example for details. - Fixed spelling of the
SentinalValueclass. It is now correctly spelled asSentinelValue. 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_registrymember variable was added toCallbackRegistry, which prints trace messages wheneverexecuteorexecuteReverseare 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 forUniformGravitymodel 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
StatePropagatorandSubTreeto 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
hardResetmethod has been added to theStatePropagator. This allows one to re-sync the number of states theStatePropagatorhas with the assocaitedSubTreeand continuous models. This method wipes out the state vector, so a reset of the state is needed viaStatePropagator.setState. See StatePropagator.hardReset for details. - The error messages thrown when the
StatePropagatorneeds 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 theirUsageMap, and are instead beingerased. This removes the chance of seg faulting due to a purgedFramethat is used later (after beingdiscarded).
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.assembleStatereturned local rather than global state. - Fixed bug with
Algorithms.framesOSCMand locked subhinges. TheAlgorithms.framesOSCMnow works with locked subhinges as expected.