The OpenSim 4.0 API includes methods for reading C3D data into OpenSim formatted files. Marker (.trc) and Forceplate (.mot) data can be converted using OpenSim C3DFileadapter class, which uses a forked version of Arnaud Barre's BTK package. Use of the file adapter C3DFileAdapter and included Matlab utilities are described below.
Reading C3D files through Matlab
Documentation for the C3DFIleAdapter is located here.
Code Block |
---|
%% Read C3D into memory
% Import OpenSim Library
import org.opensim.modeling.*
% Instantiate a C3DFileAdapter()
c3dAdapter = C3DFileAdapter();
% Read c3d data
data = c3dAdapter.read('walking2.c3d');
% Get a TimesSeriesTable with all the marker Data
markers = data.get('markers');
% Get a TimeSeriesTable with all the Force Data
forces = data.get('forces'); |
Code Block |
---|
%% Read C3D into memory % Import OpenSim Library import org.opensim.modeling.* % Use the osimC3D utlity class c3d = osimC3D('Walking_trial.c3d',1); % Rotate the Marker and force data by 90 degrees c3d.rotateData('x',-90); % Get the Marker and Force data as Matlab Structures [markers forces] = c3d.getAsStructs(); % Get the Marker and Force data as OpenSim TimeSeriesTables() markerTable = c3d.getTable_markers(); forcesTable = c3d.getTable_forces(); % Get Number of Markers and Forces nMarkers = c3d.getNumTrajectories(); nForces = c3d.getNumForces(); % Get Data rate for Markers and Forces markerRate = c3d.getRate_marker(); forceRate = c3d.getRate_force(); % Get the Start and End time of the data startTime = c3d.getStartTime(); endTime = c3d.getEndTime(); % Write the Marker and Force data. Writing function can take (i) no input % (writes file to path of the input c3d), (ii) output file name (writes to % the same folder as the c3d, but with the specified filename), or (iii) a % full path to file (writes file to the full path specified). c3d.writeTRC('Output.trc') c3d.writeMOT('/Users/person/experiment/data/Output.mot') |
Reading Data through Python and C++
Code Block |
---|
|
Code Block |
---|
|
Marker Data
Force Data