Get License

kdFlex 1.1.0 release


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.