Modified nonlinear solver cost and jacobian functions to use Eigen::Ref instead of c++ references
Added the DampedContactForce as an alternative to HuntCrossley
Combined ModelManagerTREE_DYNAMICS and TREE_AUGMENTED_DYNAMICS solver options into single FORWARD_DYNAMICS option docs
Switched getPath() method for ChainedFrameToFrame and OrientedChainedFrameToFrame class to return list of frames on the path instead of list of edges. docs
PhysicalHingeParams and PhysicalSubhingeParams have been added to PhysicalBodyParams. This allows these params to capture all the information for subhinges, whereas previously only axes was included. See the data logging notebook for an example of how these are used.
macOS now uses Python 3.12 (same as Linux version).
New Features
Added the Karana Viewer graphical interface app to browse and interact with a kdFlex simulation. The app can be launched from a Python script by calling Multibody.gui. This video provides an overview of the GUI and some of its basic features.
Added new Python script option to toFile() for the DataStructs of SubTree, SubGraph, StatePropagator and Sim. This will generate a standalone Python script to re-create the object associated with the DataStruct. See SubTreeDS.toFile for details.
Added SceneFileObject as a way of deferring loading of 3d mesh assets defined in mesh files.
Added ResourceFinder, to manage a configurable list of directories to search in for resources such as 3d meshes.
Added joint stop support to ConstraintKinematicsSolver::solveQ().
Added robust linear solvers and improved numerical stability of closed-chain tree-augmented dynamics near singular configurations
Added SubTree::cloneSubTree() and SubGraph::cloneSubGraph() methods to clone SubTree and SubGraph instances respectively. docs
Added SubTree::removeStickParts() method to discard existing stick parts. docs
Added PhysicalBody::relocateBodyFrame() to relocate body frame for a body while leaving everything else unchanged. docs
Added Algorithms::evalGravitationalPotentialEnergy() method for computing the gravitational potential energy of the multibody system. docs
Added addPlots convenience utility to the Sim class to simplify addtion of plots. See addPlots for more details.
Enhancements
Changed Karana::Math::floatingPointExceptions(true) to ignore underflows.
Added warning if creating a CoalScenePart from static mesh geometry without convex flag set, since collision detection for non-convex objects is not robust.
The C++ code usage tracking has been updated to help find stray Python references and inform users about them. See findPythonReferences for details.
Updated loop constraints to allow for duplicate names. This modifies how their DataStruct versions are saved/loaded. See LoopContraintDS for more details.
Bug Fixes
Fixed bug where cmFrame caches did not depend on assocaited SpatialInertia caches. Now, changing a SpatialInertia for a PhysicalBody correctly triggers a re-evaluation of the cmFrame.