Work Description

Title: Human Subject Experiment Dataset - Trips during Level-Ground Treadmill Walking Open Access Deposited

h
Attribute Value
Methodology
  • Kinematic and kinetic data were collected from 16 subjects participating in a trip experiment (approved by the University of Michigan IRB, HUM00195042). Retractable tethers were attached to the subjects’ feet. As subjects walked on a level-ground treadmill at their chosen speed, the tethers were braked for short periods of time (150, 250, or 350 ms) at different points during the swing phase to simulate contact with an obstacle. MATLAB was used to process the data, which are presented here.
Description
  • This dataset includes three MATLAB data files for each subject: raw motion capture and force plate data, processed motion capture and force plate data, and sagittal-plane data segmented into individual trials labeled “nominal” or “tripped.” We include two example scripts for using the segmented trial data to tabulate trip recovery strategies across subjects and plot the sorted recovery strategies.
Creator
Depositor
  • sdanfort@umich.edu
Contact information
Discipline
Funding agency
  • Other Funding Agency
  • National Science Foundation (NSF)
Other Funding agency
  • Office of Naval Research
Keyword
Citations to related material
  • S. M. Danforth, X. Liu, M. J. Ward, P.D. Holmes, and R. Vasudevan, "Predicting sagittal-plane swing hip kinematics in response to trips," IEEE Robotics and Automation Letters, 2022.
Resource type
Last modified
  • 11/18/2022
Published
  • 06/06/2022
Language
DOI
  • https://doi.org/10.7302/pvhg-q324
License
To Cite this Work:
Danforth, S. M. (2022). Human Subject Experiment Dataset - Trips during Level-Ground Treadmill Walking [Data set], University of Michigan - Deep Blue Data. https://doi.org/10.7302/pvhg-q324

Relationships

This work is not a member of any user collections.

Files (Count: 20; Size: 19.6 GB)

Trip-Recovery Dataset

A 16-subject dataset. Subjects were tripped via tethers attached to their feet while walking on a level-ground treadmill.

Paper: S. M. Danforth, X. Liu, M. J. Ward, P.D. Holmes, and R. Vasudevan, "Predicting sagittal-plane swing hip kinematics in response to trips," Robotics and Automation Letters, 2022.

Keywords: Human locomotion, trip recovery, biomechanics

Overview

We conducted an experiment (approved by the University of Michigan IRB, HUM00195042) where subjects were tripped by retractable tethers attached to their feet while walking on a treadmill. The tethers were braked at various points in the swing phase and for three different durations (150, 250, or 350 ms) to simulate contact with a physical obstacle. We collected these data from 16 able-bodied subjects.

When tripped, subjects typically use one of three strategies to recover: Elevating, where the swing foot clears the obstacle and the heel strikes in front of the body; delayed lowering, where the swing foot initially elevates, then lowers behind the body with the toe contacting the ground first; and lowering, where the swing foot immediately lowers behind the body with the toe contacting the ground first.

Installation and use

The datasets are Matlab files; we recommend using Matlab R2021b or newer.

Note that the dataset is large; if you add it to a folder that uses version control, we recommend adding it to a gitignore file.

Each subject's folder (Subject000-Subject015) contains three .mat files: One named raw_vicon_data, which includes all raw data from Vicon (motion capture, force plate) and the load cells; one named processed_vicon_data, which contains several filtered quantities of interest; and one named swing_phase_data, which includes the individual sagittal-plane swing leg trajectories used in our paper.

Subject Information

This database includes an Excel sheet, subject_information.xlsx, that lists subjects' age, gender, height, mass, chosen walking speed, and any relevant notes.

raw_vicon_data

The raw_vicon_data file contains several fields for each subject representing one experimental session/trial (Vicon data was collected in two-minute intervals). In each field, the subfields are as follows:

  • ForcePlate: Contains force, moment, and center of pressure data from the left and right force plates on the treadmill and force data from the left and right handrails. Note this data is sampled at 1000 Hz. All other data is sampled at 100 Hz.
  • Markers: The marker positions. We used Vicon Lower-Body Plug-in Gait AI; see the Nexus Documentation for marker names and locations. Column 1 corresponds to the lateral direction; column 2 corresponds to the anterior-posterior direction; and column 3 corresponds to the vertical direction. All quantities are in mm and measured from an origin located at the rear left of the treadmill.
  • JointAngle: Lower-limb joint angles, in degrees. The first column corresponds to flexion-extension, the second column corresponds to abduction-aduction; the third column corresponds to interior-exterior rotation.
  • JointVelocity: Lower-limb joint velocities, in deg/s.
  • JointMoments: Lower-limb joint moments.
  • JointForce: Lower-limb joint force.
  • JointPower: Lower-limb joint power.
  • Events: Indices of left heel strike (LHS), right heel strike (RHS), left toe-off (LTO), and right toe-off (RTO) events. Note: We used a 30 N cutoff of vertical force plate values to determine stance phase. The force plate values were measured on a split-belt treadmill. Subjects occasionally crossed their feet over to step on the opposite side, which may have led to incorrect identification of gait events. We have closely analyzed, and corrected if necessary, the event indices during tripped steps, but have not done the same for non-tripped steps.
  • SubjectDetails: Contains information such as subject mass, leg length, and ankle/knee width. Note that Subject000's SubjectDetails contains less information than Subjects 001-015, due to an export issue.
  • PlugInBones: Vicon fits a skeleton to the lower body, and Plug-in Gait Bones provides the locations of the skeleton's joints. We found that the Nexus documentation does not match the fields we exported. After trial and error, we found that columns 1:3 are helical rotations, columns 4:6 are joint origin locations (in mm), and columns 7:9 are scale factors. The knee and ankle Plug-in Bones origins are located at the skeleton's knee and ankle, so you can use columns 4:6 alone to obtain the subjects' approximate knee/ankle locations. However, to obtain the hip joint locations, we had to use the rotations and scale factors relative to the knee origin. See the example code below* for how to obtain hip joint locations using these data.
  • PertStuff: Contains information from the load cells about when perturbations occur. The subfield left_pert_on contains 0's for unperturbed walking and 1's for when the brake was applied to the left tether (when the load cell reading exceeded 2.5 kg).** Not all load cell readings above 2.5 kg elicited a visible trip reaction. The subfield left_signal_on contains 1's when we sent a signal from Matlab to the tripping device--useful for measuring latencies in our trip signal. The subfield left_load_cell is the raw left load cell data. (This is all the same for the right side.)

*Code snippet for obtaining hip joint locations using Plug-in Bones:

```
%First, define knee joint locations. Divide by 1000 for m.
p_rkne_unfiltered = data.PlugInBones.RFE(:, 4:6)/1000;
p_lkne_unfiltered = data.PlugInBones.LFE(:, 4:6)/1000;

%Get the scaling and rotation for the left and right femur.
sXR = data.PlugInBones.RFE( :, 7 )/1000; %scaling in the x direction, right leg
sYR = data.PlugInBones.RFE( :, 8 )/1000;
sZR = data.PlugInBones.RFE( :, 9 )/1000;
sXL = data.PlugInBones.LFE( :, 7 )/1000; %scaling in the x direction, left leg
sYL = data.PlugInBones.LFE( :, 8 )/1000;
sZL = data.PlugInBones.LFE( :, 9 )/1000;
rXR = data.PlugInBones.RFE( :, 1 ); %helical x rotation, right leg
rYR = data.PlugInBones.RFE( :, 2 );
rZR = data.PlugInBones.RFE( :, 3 );
rXL = data.PlugInBones.LFE( :, 1 ); %helical x rotation, right leg
rYL = data.PlugInBones.LFE( :, 2 );
rZL = data.PlugInBones.LFE( :, 3 );

%define a vector that points from the knee origin straight up
L = [0; 0; 1];

%initialize our right and left hip location arrays
p_rhip_unfiltered = zeros(size(sXR, 1), 3);
p_lhip_unfiltered = zeros(size(sXR, 1), 3);

for tmp_idx = 1:size(sXR, 1)

%form scaling matrices
SR = [ sXR(tmp_idx), 0, 0; 0, sYR(tmp_idx), 0; 0, 0, sZR(tmp_idx) ];
SL = [ sXL(tmp_idx), 0, 0; 0, sYL(tmp_idx), 0; 0, 0, sZL(tmp_idx) ];

%form rotation matrices
anglesR = deg2rad( [ rXR(tmp_idx), rYR(tmp_idx), rZR(tmp_idx) ] );
RR = axang2rotm( [ anglesR./norm(anglesR), norm(anglesR) ] );
anglesL = deg2rad( [ rXL(tmp_idx), rYL(tmp_idx), rZL(tmp_idx) ] );
RL = axang2rotm( [ anglesL./norm(anglesL), norm(anglesL) ] );

%get hip locations for this time index

p_rhip_unfiltered(tmp_idx, :) = p_rkne_unfiltered(tmp_idx, :) + (RR*SR*L)';
p_lhip_unfiltered(tmp_idx, :) = p_lkne_unfiltered(tmp_idx, :) + (RL*SL*L)';

end
```

**For Subjects 011, 012, and 013 (collected within one day of each other), we noticed that the left_pert_on and right_pert_on signals consistently occurred much later than the subjects' visible trip reaction (This may appear 1-2 times in other subjects' data, but occurred for almost every trip trial for 011-013). Because we did not observe this consistent phenomenon in any other subjects, we concluded that we must have encountered some delay in the load cell data collection during these experiments. We therefore re-defined the pert_on indices for these three subjects by (1) computing each subject's mean and standard deviation of nominal heel height, (2) finding the time instance at which the tripped heel height exited a two-standard-deviation buffer from the mean, (3) subtracting 40 ms (average reflex response time during trips, as measured by Schillings et al., 1999) from this time instance, and (4) shifting the pert_on indices to start at this new time instance. The raw data file uses these new, re-saved pert_on indices.

processed_vicon_data

The processed_vicon_data file contains the same fields as raw_vicon_data, which correspond to approximately two-minute-long trials, but the subfields are different. They include all of the processed data (e.g., the joint locations of the lower-body skeleton fit via Plug-in Gait Bones). The fields are as follows:

  • filter_freq: The cutoff frequency for the 6th-order Butterworth filter used to process these data.
  • t: The time vector for this trial.
  • a_rhip, a_lhip: Right, left hip angle (flexion-extension, abduction-adduction, interior-exterior)
  • p_rhip, p_lhip: Right, left hip positions (lateral, anterior-posterior, vertical)
  • (Same naming convention for the ankle, knee, heel, and toe: a_rknee, p_rknee, etc.)
  • T_rank, T_lank, T_rknee, T_lknee: Moments for the right and left ankle and knee.
  • rthigh_eul, lthigh_eul: Angle of the thigh segment measured from (negative) vertical, found using joint locations (we use the first column to analyze the flexion extension angle in the sagittal plane).
  • rshank_eul, lshank_eul: Rotation of shank relative to thigh, found using joint locations (we use the first column to analyze the flexion extension angle in the sagittal plane).
  • rtoe_eul, ltoe_eul: Rotation of the foot (ankle to toe segment) relative to the shank, found using joint locations.
  • rheel_eul, lheel_eul: Rotation of the foot (ankle to heel) relative to the shank, found using joint locations (we use the difference between heel_eul and toe_eul to compute an average angle between the toe segment and heel segment, used to draw stick figures).
  • LHS, RHS, LTO, RTO: Event indices.
  • sampling_rate: The Vicon sampling rate.
  • pert_on: Contains two subfields, left_on and right_on, which are similar to left_pert_on and right_pert_on in raw_vicon_data.
  • pert_start_times, pert_end_times: The start and end times of each perturbation.
  • pert_start_idxs, pert_end_idxs: The start and end indices of each perturbation.
  • FP: Contains several subfields. grf1 and grf2 are the right and left ground reaction force data, respectively, downsampled to the Vicon sampling rate. GRF_scale is the mean vertical force from these data, used to compute grf1_scaled and grf2_scaled. leftOn and rightOn indicate when stance phase is detected in the left and right foot, respectively. GRF_threshold is the threshold used to determine stance phase.

swing_phase_data

The swing_phase_data contains data for the swing leg alone that is limited to the sagittal plane. We used these data to fit our predictive models in our paper. This file has two subfields: nominal and tripped. Each subfield contains a number of cells (swing phases) with the following fields:

  • swing_leg_side: 'right' or 'left'
  • phase: In our paper "Predicting sagittal-plane swing hip kinematics in response to trips," we define a phase variable that aligns pre-trip heel height peaks. The phase field returns this shifted time value, but note it is not yet normalized to [0, 1]. To normalize, you'll need to find the minimum and maximum phase values for the group of trials you are analyzing.
  • t: Time
  • swing_hip_AP: The swing hip anterior-posterior position relative to the stance foot, in m.
  • swing_hip_height: The swing hip height, in m.
  • swing_hip_flex_ext: The swing hip flexion-extension angle, in rad.
  • swing_heel_AP: The swing heel anterior-posterior position relative to the stance foot, in m.
  • swing_heel_height: The swing heel height, in m.
  • swing_toe_AP: The swing toe anterior-posterior position relative to the stance foot, in m.
  • swing_toe_height: The swing toe height, in m.
  • swing_knee_AP: The swing knee anterior-posterior position relative to the stance foot, in m.
  • swing_knee_height: The swing knee height, in m.
  • swing_ankle_AP: The swing ankle anterior-posterior position relative to the stance foot, in m.
  • swing_ankle_height: The swing ankle height, in m.

The tripped subfield includes two additional fields:

  • recovery_type: 'elevating', 'delayed lowering', or 'lowering'
  • pert_idxs: The indices where the tether was braked for each trip trial.

In a folder titled example_matlab_scripts, We have included two scripts to get started using the swing_phase_data. Note that each contains an inpath variable at the top, which you may need to change depending on where you store that data. The first, count_trip_trials.mat, produces a table that lists the number of each type of recovery used for each subject. The second, plot_sorted_heel_positions.mat, produces a figure of sorted heel AP positions and heights (elevating, delayed lowering, and lowering) for a chosen subject. The latter script provides examples for how to compute an average nominal trial and how to normalize the phase variable from [0,1]. Note that for our paper we used separate phase bounds for each strategy (because elevating trials tend to last longer than delayed lowering and lowering trials), but here we used the same bounds for all in the interest of simplicity.

Team

  • Shannon Danforth (PhD Candidate, Mechanical Engineering, University of Michigan)
  • Xinyi Liu (MS Student, Electrical Engineering and Computer Science, University of Michigan)
  • Martin Ward (Research Engineer, Naval Architecture and Marine Engineering, University of Michigan)
  • Patrick Holmes (Research Engineer, Mechanical Engineering, University of Michigan)
  • Ram Vasudevan (Associate Professor, Mechanical Engineering and Robotics Institute, University of Michigan)

Consent Form

The consent form for this experiment is included in this dataset as experiment_consent_form.pdf. Note that three types of perturbations are listed, but this dataset only includes the "retractable tether"-type perturbations.

License

Download All Files (To download individual files, select them in the “Files” panel above)

Total work file size of 19.6 GB is too large to download directly. Consider using Globus (see below).

Files are ready   Download Data from Globus
Best for data sets > 3 GB. Globus is the platform Deep Blue Data uses to make large data sets available.   More about Globus

Remediation of Harmful Language

The University of Michigan Library aims to describe library materials in a way that respects the people and communities who create, use, and are represented in our collections. Report harmful or offensive language in catalog records, finding aids, or elsewhere in our collections anonymously through our metadata feedback form. More information at Remediation of Harmful Language.