API Changes
- Added optional argument to SubGraph::enabledConstraints() for filtering type of constraint list and removed the constraint specific methods to simplify the API. docs.
MultibodyDS has been removed and SubGraphDS and SubTreeDS have been added. SubGraphDS has methods to go to and from a Multibody. This allows one to easily clone SubGraphs, e.g., to create two instances of a robotic arm. See SubGraphDS for more details.
KCore.Base names with ”/” in them are no longer allowed. These conflict with internal classes like FilesystemLikeDatabase as well as thrid-party libraries like HDF5.
- Updated
PID models to use ProfileGenerators rather than functions. This makes it simpler to set up a PID controller in Python, but still have the run-time performance of C++. See PID for more details.
- Removed
uvicorn and fastapi as runtime dependencies.
New Features
- Improved Chatbot tuning and ability to search kdFlex documentation
- Upgraded Chatbot frontend with several quality-of-life features such as copy buttons, dark/light mode, prompt tuning, and direct links to documentation
- Added the ability to swap integrators on the
StatePropagator mid-stream. See StatePropagator.setIntegrator for more details.
DataStruct now supports saving/loading meta data to/from files. This is useful for annotating and including source info in data files. See the meta data section for more details.
DataStruct support was added for many classes and models in kdFlex. See PenalytContactDS as an example.
- Added
insertBefore and insertAfter methods to CallbackRegistry. This makes it simpler to insert callback functions in the middle of a CallbackRegistry. See CallbackRegistry.insertBefore and CallbackRegistry.insertAfter for more details.
- The
dump and dumpString options for classes in Math have been updated to use an enum for the format type rather than a bool. This adds the ability to dump numbers as fixed-point, when previously, only default float and scientific were available. See HomTran.dump as an example.
- Added a remotely-accessible all-in-one graphical interface for visualizing and introspecting the multibody. This can be launched by calling the
gui method on a Multibody instance.
- Added picking support to WebScene, triggering an arbitrary ‘on pick’ callback upon clicking a part.
Enhancements
- Added consolidated
SOADyn/Defs.h header for user facing structs and enums.
- Added optional support (
true by default) for including size info in matrix/vector dump() output
- The jacobian generator
jacobianDot() method now takes an analytical argument similar to the jacobian() and poseGradient() methods to allow use of numeric differencing
- Added initial versions of
Glossary and Conventions sections to the documentation.
- Updated the
ScenePartSpec python constructor to allow initializing using keyword arguments.
- Added
setTransform methods to all SceneNode-derived classes.
Bug Fixes
- Fixed bug where
hardReset could lead to a seg fault on certain sundials integrators.
- Fixed a bug where a WebScene render could occur between updating the translation and quaternion of a part, sometimes resulting in visual jitter.