Get License

kdFlex 1.1.1 release


kdFlex 1.1.1 Code Changes Summary

API Changes

  • Switched from using quantities to define units/quantities to pint. See the units and quantities section for details.
  • Changed all methods using std::vector for indices to instead use km::VecInt
  • Scrubbed public API to remove methods only used for internal testing.

New Features

  • Added Prefabs, which are used hierarchical, self‑contained, reusable components that can be assembled into a larger simulation. See the prefabs section for more details.
  • Added BasicPrefab, which is a Prefab used for importing/exporting models: this includes both the Multibody model and assocaited KModels. See the BasicPrefab section for more details.
  • Added Vars (short for variable), which are containers that hold a value that can change over time. These provide convenient ways to introspect, plot, and log data. See the Var section for more details.
  • Added a vars member to each BaseWithVars class. This is a common interface to get Vars for a given object. See BaseWithVars.vars for more details.
  • The URDF importer has been moved to BasicPrefabDS, i.e., you should use BasicPrefabDS.fromFile(my_urdf_file.urdf) rather than SubGraphDS.fromFile(my_urdf.urdf). The BasicPrefabDS version includes support for associated KModels such as SubhingeSpringDampers on the joints. See the URDF tutorial for details.
  • Added the Math.Ray class consisting of a pair of 3-vectors for direction and origin.

Enhancements

  • PID controllers have been updated to take a single trajectory profile rather than two, as the trajectory profiles now output a value as well as its derivative. This simplifies creating a PID controller as well as enforces consistency between the position-level and velocity-level trajectory. See PID for more details.
  • Added robotics algorithms notebook
  • Added VecInt typedef
  • Added a ProxyScene.setupGraphics method in python as an alternative to the Multibody.setupGraphics convenience function in cases where there is no need for a Multibody.

Bug Fixes

  • Fixed bug in KModel.isReady check that would always show not ready if an unregistered model had pre/postModelStep methods defined. Now, this check only happens when the models are registered, so KModel.isReady works as expected.