Skip to content

Releases: keenon/nimblephysics

v0.8.89 Stability Improvements

04 Apr 03:46
Compare
Choose a tag to compare
  • Fixes a segfault we were getting on createShapeNode() in Python
  • Fixes an issue where we were detecting spherical joint centers in MarkerFitter that were worse than axis joint centers.

v0.8.88 Stability Improvements

30 Mar 01:10
Compare
Choose a tag to compare

This is a few misc gradient bug fixes.

v0.8.87 Adding joint force field to MarkerFitter

29 Mar 22:52
29c6348
Compare
Choose a tag to compare

When fitting skeletons to markers in MarkerFitter, we've added support for adding a force field loss to encourage joints to stay at least a minimum distance from one another.

Also, several major stability improvements.

v0.8.86: Bug fixes for static trial pose optimization and `MarkerFixer`

28 Mar 23:42
Compare
Choose a tag to compare

*** IGNORE RELEASE 0.8.85 ***

Creating a new release because release 0.8.85 did not have it's version number updated correctly for pip installs.

Summary of changes

  • Fixed a bug in static trial optimization where decision variable vector length was not correct length, leading to memory corruption.
  • Fixed bugs in MarkerFixer that were creating discontinuous marker traces and prematurely dropping marker frames.
  • Added an option DynamicsFitter::estimateFootGroundContacts() to ignore checks that detect when a foot is over a force plate, which can be useful for GRF data that has missing or incomplete force plate geometry.

v0.8.85: Bug fixes for static trial pose optimization and `MarkerFixer`

28 Mar 16:50
Compare
Choose a tag to compare

Summary of changes

  • Fixed a bug in static trial optimization where decision variable vector length was not correct length, leading to memory corruption.
  • Fixed bugs in MarkerFixer that were creating discontinuous marker traces and prematurely dropping marker frames.
  • Added an option DynamicsFitter::estimateFootGroundContacts() to ignore checks that detect when a foot is over a force plate, which can be useful for GRF data that has missing or incomplete force plate geometry.

v0.8.84 Support for static pose trials + various updates and bug fixes

26 Mar 19:59
bf5c5a1
Compare
Choose a tag to compare

Summary of changes

  • You can now specify a static pose trial in MarkerFitter using setStaticTrial() to add a cost term (with weight from setStaticTrialWeight()) to provide a prior to the marker fitting optimization based on the static pose joint angles.
  • Added an option to disable optimizeMarkerOffsets() which is called during DynamicsFitter::timeSyncAndInitializePipeline().
  • For locked coordinates, OpenSimParser only set upper and lower bounds for the coordinate position. We now set equal upper and lower bounds for coordinate velocities and accelerations, which will prevent small "wiggles" in locked coordinates during dynamics fitting.
  • Added support for ground reaction file headers from the Rajagopal model trial dataset.

v0.8.83: Reporting info for 'missing' GRFs in `DynamicsFitter` // support for computing IMU info with `Skeleton`

16 Mar 21:31
a62ec73
Compare
Choose a tag to compare

Summary of changes

  • The enum MissingGRFReason was added so that both DynamicsFitter and SubjectOnDisk can report a value indicating why a frame in a trajectory was marked as having "missing" ground reaction force information. This was implemented to improve reporting tools in AddBiomechanics, but will also help debugging in general.
  • When processing multiple data trials, DynamicsFitter::zeroLinearResidualsOnCOMTrajectory() now allows small scale factors for ground reaction forces in each trial to get the linear fitter the best chance of converging without dropping frames. In practice, small scaling adjustments for each trial can provide much better performance without significantly changing the original data (tested on running data across four running speeds).
  • MarkerFixer::filterTimestepsBasedOnProlongedStillness() was added to filter out markers that remain motionless for a certain number of timesteps.
  • New methods were added to dynamics::Skeleton to all compute IMU quantities (e.g., Skeleton::getGyroReadings()) and their gradients (e.g., Skeleton::getGyroReadingsJacobianWrt). The quanities that gradients are taken with respect to are handled using neural::WithRespectTo.

v0.8.82 Python support for regularizing joint accelerations

04 Mar 01:58
21f43cb
Compare
Choose a tag to compare

Joint acceleration regularization adding in v0.8.81 is now supported through the Python interface.

v0.8.81 Joint acceleration regularization

03 Mar 23:08
94311a9
Compare
Choose a tag to compare
  • Added an option to regularize the joint acceleration variables in the optimization problem solved by DynamicsFitter.
  • The regularization term can be added to the loss function by providing a positive value to DynamicsFitProblemConfig::setRegularizeJointAcc().
  • Updated DynamicsFitter::writeCSVData() to write out the same name of rows as the the number of timestamps in the original problem. The updates the file located at osim_results/ID/<trial_name>_full.csv.

v0.8.80 Bug fixes to `DynamicsFitter` and `OpenSimParser`

22 Feb 22:56
852ab1a
Compare
Choose a tag to compare

Summary of changes

  1. Fixed bug in DynamicsFitter::zeroLinearResidualsOnCOMTrajectory where incorrect "b" vector was being used when fitting trajectories for trials left out of mass-fitting step.
  2. DynamicsFitter::timeSyncAndInitializePipeline now supports the parameters shiftGRFs (for enabling/disabling the GRF shifting step) and maxTrialsToSolveMassOver (to set the number of trials used to fit the model mass).
  3. Test HamnerMultipleTrials, with associated data files.
  4. The utility function OpenSimParser::roundToNearestMultiple(), which was implemented to improve rounding of the detected framerates from TRC and MOT files.