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 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: 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