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

Pre-Processing Delaware Data

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

OpenSim is supported by the Mobilize Center , an NIH Biomedical Technology Resource Center (grant P41 EB027060); the Restore Center , an NIH-funded Medical Rehabilitation Research Resource Network Center (grant P2C HD101913); and the Wu Tsai Human Performance Alliance through the Joe and Clara Tsai Foundation. See the People page for a list of the many people who have contributed to the OpenSim project over the years. ©2010-2024 OpenSim. All rights reserved.