def make_toe(files, hills, sides): pathsZ = [] pathsY = [] pathsX = [] for hill, file, side in zip(hills, files, sides): trial = ViconGaitingTrial.ViconGaitingTrial(vicon_file=file) marker = trial.vicon.get_markers() if side == "L": toe = marker.get_marker("LTOE") else: toe = marker.get_marker("RTOE") jointZ = [] jointY = [] jointX = [] for t in toe: jointZ.append(t.z) jointY.append(t.y) jointX.append(t.x) pathsZ.append(np.array([jointZ[h[0]] for h in hill])) pathsY.append(np.array([jointY[h[0]] for h in hill])) pathsX.append(np.array([jointX[h[0]] for h in hill])) return pathsZ, pathsY, pathsX
def make_traj(files, hills): paths = [] hips = [] knees = [] ankles = [] for hill, file in zip(hills, files): trial = ViconGaitingTrial.ViconGaitingTrial(vicon_file=file) markers = trial.vicon.get_markers() markers.smart_sort() markers.auto_make_transform(frames) joints = trial.vicon.get_model_output().get_left_leg() hip = [] knee = [] ankle = [] for h in hill: hip.append(-(np.pi / 180) * np.array(joints.hip.angle.x[h[0]])) knee.append(-(np.pi / 180) * np.array(joints.knee.angle.x[h[0]])) ankle.append(-(np.pi / 180) * np.array(joints.ankle.angle.x[h[0]])) hips.append(np.array(hip)) knees.append(np.array(knee)) ankles.append(np.array(ankle)) return hips, knees, ankles
def get_joint_angles(files, indecies, sides): """ :param files: :param indecies: :param sides: :param lables: :return: """ angles = {} angles["hip"] = [] angles["knee"] = [] angles["ankle"] = [] angles2 = {} angles2["Rhip"] = [] angles2["Rknee"] = [] angles2["Rankle"] = [] angles2["Lhip"] = [] angles2["Lknee"] = [] angles2["Lankle"] = [] samples = [] for file, i, side in zip(files, indecies, sides): trial = ViconGaitingTrial.ViconGaitingTrial(vicon_file=file) trial.create_index_seperators() body = trial.get_joint_trajectories() if side == "L": hip_angle = body.left.hip[i].angle.x.data knee_angle = body.left.knee[i].angle.x.data ankle_angle = body.left.ankle[i].angle.x.data else: hip_angle = body.right.hip[i].angle.x.data knee_angle = body.right.knee[i].angle.x.data ankle_angle = body.right.ankle[i].angle.x.data angles["hip"].append(hip_angle) angles["knee"].append(knee_angle) angles["ankle"].append(ankle_angle) samples.append(len(hip_angle)) sample_size = min(samples) # for i in range(len(files)): # angles2["hip"].append(signal.resample(angles["hip"][i], sample_size)) # angles2["knee"].append(signal.resample(angles["knee"][i], sample_size)) # angles2["ankle"].append(signal.resample(angles["ankle"][i], sample_size)) for i in range(len(files)): angles2["Lhip"].append(np.deg2rad(angles["hip"][i])) angles2["Lknee"].append( np.deg2rad(angles["knee"][i])) angles2["Lankle"].append( -(np.deg2rad(angles["ankle"][i])) ) angles2["Rhip"].append( np.deg2rad(np.flip(angles["hip"][i]))) angles2["Rknee"].append( np.deg2rad(np.flip(angles["knee"][i]))) angles2["Rankle"].append(np.deg2rad(np.flip(angles["ankle"][i]))) return angles2
def get_index(files): paths = [] for file in files: trial = ViconGaitingTrial.ViconGaitingTrial(vicon_file=file) markers = trial.vicon.get_markers() markers.smart_sort() markers.auto_make_transform(frames) hills = trial.get_stairs("RTOE", "stairA") paths.append(hills[0]) return paths
def make_toeZ(files, hills): paths = [] for hill, file in zip(hills, files): trial = ViconGaitingTrial.ViconGaitingTrial(vicon_file=file) marker = trial.vicon.get_markers() toe = marker.get_marker("RTOE") joint = [] for t in toe: joint.append(t.z) arr = [joint[h[0]] for h in hill] paths.append(np.array(arr)) return paths
def make_toeY(files, hills): paths = [] for hill, file in zip(hills, files): trial = ViconGaitingTrial.ViconGaitingTrial(vicon_file=file) marker = trial.vicon.get_markers() markers = trial.vicon.get_markers() markers.smart_sort() markers.auto_make_transform(frames) toe = marker.get_marker("RTOE") stair = marker.get_frame("stairA") joint = [] for t in toe: joint.append(abs(t.y )) arr = [joint[h[0]] for h in hill] paths.append(np.array(arr)) return paths
def __init__(self, cal, dat, verbose=False): if verbose: print("Starting...") self.cal_file = cal self.cal_gait = vg.ViconGaitingTrial(cal) self.cal = self.cal_gait._vicon if verbose: print("Read calibration data!") self.dat_files = dat self.dat = [] self.dat_gait = [] for file in self.dat_files: g = vg.ViconGaitingTrial(file) self.dat_gait.append(g) self.dat.append(g._vicon) if verbose: print("Read data from " + file) self.frames = { "Root": [ Core.Point.Point(0, 14, 0), Core.Point.Point(56, 0, 0), Core.Point.Point(14, 63, 0), Core.Point.Point(56, 63, 0) ], "L_Foot": [ Core.Point.Point(0, 0, 0), Core.Point.Point(70, 0, 0), Core.Point.Point(28, 70, 0), Core.Point.Point(70, 63, 0) ], "L_Tibia": [ Core.Point.Point(0, 0, 0), Core.Point.Point(0, 63, 0), Core.Point.Point(70, 14, 0), Core.Point.Point(35, 49, 0) ], "L_Femur": [ Core.Point.Point(0, 0, 0), Core.Point.Point(70, 0, 0), Core.Point.Point(0, 42, 0), Core.Point.Point(70, 56, 0) ], "R_Foot": [ Core.Point.Point(0, 0, 0), Core.Point.Point(56, 0, 0), Core.Point.Point(0, 49, 0), Core.Point.Point(42, 70, 0) ], "R_Tibia": [ Core.Point.Point(0, 0, 0), Core.Point.Point(42, 0, 0), Core.Point.Point(7, 49, 0), Core.Point.Point(63, 70, 0) ], "R_Femur": [ Core.Point.Point(7, 0, 0), Core.Point.Point(56, 0, 0), Core.Point.Point(0, 70, 0), Core.Point.Point(42, 49, 0) ] } self.joint_to_parent_frame = { "L_Hip": "Root", "R_Hip": "Root", "L_Knee": "L_Femur", "R_Knee": "R_Femur", "L_Ankle": "L_Tibia", "R_Ankle": "R_Tibia" } self.cal_markers = self.cal.get_markers() self.cal_markers.smart_sort() self.cal_markers.auto_make_transform(self.frames) if verbose: print("Calculating joints...") self.cal_markers.calc_joints() if verbose: print("Joints calculated!") self.dat_markers = [] for vi in self.dat: m = vi.get_markers() m.smart_sort() m.auto_make_transform(self.frames) self.dat_markers.append(m) if verbose: print("Mapping joints from calibration to data...") self.set_data_joints() # for m in self.dat_markers: # m.calc_joints() if verbose: print("Joint locations mapped!")
import numpy as np from GaitAnaylsisToolkit.LearningTools.Trainer import GMMTrainer from GaitAnaylsisToolkit.Session import ViconGaitingTrial from GaitAnaylsisToolkit.LearningTools.Runner import GMMRunner from GaitCore.Core import Point import matplotlib.pyplot as plt from dtw import dtw import numpy.polynomial.polynomial as poly file = "/home/nathaniel/AIM_GaitData/Gaiting_stairs/subject_00/subject_00 stairconfig1_00.csv" trial = ViconGaitingTrial.ViconGaitingTrial(vicon_file=file) markers = trial.vicon.get_markers() markers.smart_sort() markers.play()