You are viewing the documentation for OpenSim 3.x. Are you looking for the latest OpenSim 4.0 Documentation?

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

Pre-Processing Delaware Data  

  • These are Eran's notes so far... 
  • Chand John also has a lot of notes on this which hopefully can be incorporated here.  

Coordinate Systems

  • To transform between coordinate systems, use e.g.
    transform_trcFile('SS_walking1_smoothed.trc', 'delaware3_ss_walking1.trc', delaware_lcs);

Processing Marker Data in EVaRT

  • Data is on bioengcomplab.stanford.edu svn server
  • There are 2 projects, one for static trial (e.g. SIMTK2.prj) and one for dynamic trials (e.g. SIMTK2_Dynamic.prj). Dynamic trial uses fewer markers.
  • Basic steps (process may take a few hours):
    • Pick a frame where see all the markers
    • Use Quick ID to identify markers
    • Create linkages
    • Rectify
    • Go through and correct bad/missing data (identify mislabeled markers; join & smooth curves)
      • Note: Make sure there are no gaps in the data otherwise it won't load correctly in OpenSim
    • Write out as trc file
      • Note: Make sure to export trc files with no unnamed markers.
    • Also write out anc (from original trb)

Force Plate Data

  • The main matlab script I used here is process_grf.m which calls read_anc.m to do the low-level reading and conversion of the anc file.
  • Force plate 1 = right foot
  • Force plate 2 = left foot
  • I added some info on how anc files are converted to forces/moments in read_anc.m which is currently in my matlab scripts in my repository: https://simtk.org/home/erang. It also explains the FORCEPLA.CAL format.
  • Also see: ForcePlateManual.pdf

EMG Preprocessing

  • Notes regarding Allison's matlab scripts:
  • process_emgChannel -> band (bandpass filter), rect (rectify), low (lowpass filter), nrect (normalized rect), nlow (normalized low)
  • extract_emgCycleData -> separates out cycles into individual arrays, possibly of different lengths
  • resample_emgEnvCycle -> resamples to be of equal length each
  • get_emgEnsambleAve -> averages across all files and cycles, result is sized to a single cycle (corresp to 0:0.2:100 %)

Misc. Notes from Gillette Preprocessing/Allison's Scripts

  • In the preprocessing plots:
    • top is: (plot_emgEnsambleAve) envAve, envAve+envSD, envAve-envSD plotted against
    • middle is: (plot_emgEnvCycle) of TOI_emgCyc (which is selected output from extract_emgCycleData -- i.e. not resampled), nrect and nlow
  • The remaining issue is that resample_emgEnvTime seems to create a spline of a fixed number of control points (regardless of how many datapoints your function has) so if you try to get more cycles in you get a very coarse looking curve
  • Gillette has marker data at 120 Hz whereas Delaware has it at 60 Hz
  • Allison plots the joint angles using gait lab conventions. use transform_jntanglesToModelCS to transform to SIMM convention
  • Allison wanted to get joint angles herself rather than trust IK to get good angles from motion capture data, because by itself IK would not have given her a good solution.
  • note that the hip angle is not measured relative to horizontal plane but rather is set so that it's zero when you stand up straight
  • No labels