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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 7
0
    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!")
Exemplo n.º 8
0
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()