!pip freeze %pylab inline rcParams['figure.figsize'] = 16, 8 import pandas from dtk import walk, process obinna = pandas.read_csv('../data/obinna-walking.txt', delimiter='\t', index_col="TimeStamp", na_values='0.000000') obinna [col for col in obinna.columns if col.endswith('.Ang') or col.endswith('ForY') or col.endswith('.Mom')] obinna['FP2.ForY'].plot() start = 500 stop = 3500 data = walk.WalkingData(obinna.iloc[start:stop].copy()) to_diff = [col for col in obinna.columns if col.endswith('.Ang')] new_names = [name.split('.')[0] + '.Rate' for name in to_diff] data.time_derivative(to_diff, new_names) data.raw_data[new_names] right_strikes, left_strikes, right_offs, left_offs = \ data.grf_landmarks('FP2.ForY', 'FP1.ForY', do_plot=True, threshold=28.0) right_steps = data.split_at('right', num_samples=20) data.plot_steps('FP2.ForY', 'RKneeFlexion.Ang', 'RKneeFlexion.Rate', 'RKneeFlexion.Mom', marker='o') mean_right_steps = right_steps.mean(axis='items') mean_right_steps[['FP2.ForY', 'RKneeFlexion.Ang', 'RKneeFlexion.Rate', 'RKneeFlexion.Mom']].plot(subplots=True) sensors = ['RKneeFlexion.Ang', 'RKneeFlexion.Rate', 'RHipFlexion.Ang', 'RHipFlexion.Rate', 'LKneeFlexion.Ang', 'LKneeFlexion.Rate', 'LHipFlexion.Ang', 'LHipFlexion.Rate'] controls = ['RKneeFlexion.Mom', 'RHipFlexion.Mom', 'LKneeFlexion.Mom', 'LHipFlexion.Mom'] solver = walk.SimpleControlSolver(right_steps, sensors, controls) gains, sensors = solver.solve() gains.shape solver.plot_gains(gains)