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.mwhich callsread_anc.mto 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.mwhich is currently in my matlab scripts in my repository: https://simtk.org/home/erang. It also explains the FORCEPLA.CAL format.Also see:
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