def test_benchmark_time_series(): dataset = bdp.DataSet() trial = bdp.Run('700', dataset) timeSeries = cbi.benchmark_time_series(trial) testing.assert_allclose(trial.taskSignals['RollAngle'], timeSeries['p']) testing.assert_allclose(trial.taskSignals['RollRate'], timeSeries['pD']) testing.assert_allclose(trial.taskSignals['RollRate'].time_derivative(), timeSeries['pDD']) testing.assert_allclose(trial.taskSignals['SteerAngle'], timeSeries['d']) testing.assert_allclose(trial.taskSignals['SteerRate'], timeSeries['dD']) testing.assert_allclose(trial.taskSignals['SteerRate'].time_derivative(), timeSeries['dDD']) testing.assert_allclose(trial.taskSignals['ForwardSpeed'], timeSeries['v']) testing.assert_allclose(trial.bicycleRiderParameters['g'], timeSeries['g']) testing.assert_allclose(trial.taskSignals['PullForce'], timeSeries['F'])
def test_benchmark_time_series(): dataset = bdp.DataSet() trial = bdp.Run('700', dataset) timeSeries = cbi.benchmark_time_series(trial) testing.assert_allclose(trial.taskSignals['RollAngle'], timeSeries['p']) testing.assert_allclose(trial.taskSignals['RollRate'], timeSeries['pD']) testing.assert_allclose(trial.taskSignals['RollRate'].time_derivative(), timeSeries['pDD']) testing.assert_allclose(trial.taskSignals['SteerAngle'], timeSeries['d']) testing.assert_allclose(trial.taskSignals['SteerRate'], timeSeries['dD']) testing.assert_allclose(trial.taskSignals['SteerRate'].time_derivative(), timeSeries['dDD']) testing.assert_allclose(trial.taskSignals['ForwardSpeed'], timeSeries['v']) testing.assert_allclose(trial.bicycleRiderParameters['g'], timeSeries['g']) testing.assert_allclose(trial.taskSignals['PullForce'], timeSeries['F'])
goodRuns = cPickle.load(f) with open(read('pathToIdMat')) as f: idMat = cPickle.load(f) dataset = bdp.DataSet() roll = {k: [] for k in idMat.keys() + ['Whipple', 'Arm']} steer = {k: [] for k in idMat.keys() + ['Whipple', 'Arm']} allH = cbi.lateral_force_contribution(['Charlie', 'Jason', 'Luke']) for runNum in goodRuns: trial = bdp.Run(runNum, dataset, filterFreq=15.) rider = trial.metadata['Rider'] timeseries = cbi.benchmark_time_series(trial, subtractMean=True) for k, model in idMat.items(): rollrsq, steerrsq, fig = cbi.input_prediction(timeseries, model) roll[k].append(rollrsq) steer[k].append(steerrsq) fig.savefig('plots/' + str(runNum) + '-' + k + '.png') plt.close(fig) del fig M, C1, K0, K2 = trial.bicycle.canonical(nominal=True) rollrsq, steerrsq, fig = cbi.input_prediction(timeseries, (M, C1, K0, K2, allH[rider])) roll['Whipple'].append(rollrsq) steer['Whipple'].append(steerrsq) fig.savefig('plots/' + str(runNum) + '-whipple.png') plt.close(fig)
goodRuns = cPickle.load(f) with open(read('pathToIdMat')) as f: idMat = cPickle.load(f) dataset = bdp.DataSet() roll = {k : [] for k in idMat.keys() + ['Whipple', 'Arm']} steer = {k : [] for k in idMat.keys() + ['Whipple', 'Arm']} allH = cbi.lateral_force_contribution(['Charlie', 'Jason', 'Luke']) for runNum in goodRuns: trial = bdp.Run(runNum, dataset, filterFreq=15.) rider = trial.metadata['Rider'] timeseries = cbi.benchmark_time_series(trial, subtractMean=True) for k, model in idMat.items(): rollrsq, steerrsq, fig = cbi.input_prediction(timeseries, model) roll[k].append(rollrsq) steer[k].append(steerrsq) fig.savefig('plots/' + str(runNum) + '-' + k + '.png') plt.close(fig) del fig M, C1, K0, K2 = trial.bicycle.canonical(nominal=True) rollrsq, steerrsq, fig = cbi.input_prediction(timeseries, (M, C1, K0, K2, allH[rider])) roll['Whipple'].append(rollrsq) steer['Whipple'].append(steerrsq) fig.savefig('plots/' + str(runNum) + '-whipple.png') plt.close(fig)
def test_benchmark_lstsq_matrices(): dataset = bdp.DataSet() trial = bdp.Run('700', dataset) A, B, F = cbi.whipple_state_space(trial.metadata['Rider'], 1.0) H = np.dot(np.linalg.inv(B[2:]), F[2:]) timeSeries = cbi.benchmark_time_series(trial, subtractMean=False) M, C1, K0, K2 = trial.bicycle.canonical(nominal=True) fixedValues = cbi.benchmark_canon_to_dict(M, C1, K0, K2, H) rollParams = [ 'Mpp', 'Mpd', 'C1pp', 'C1pd', 'K0pp', 'K0pd', 'K2pp', 'K2pd', 'HpF' ] A, B = cbi.benchmark_lstsq_matrices(rollParams, timeSeries, fixedValues) testing.assert_allclose(trial.taskSignals['RollRate'].time_derivative(), A[:, 0]) testing.assert_allclose(trial.taskSignals['SteerRate'].time_derivative(), A[:, 1]) testing.assert_allclose( trial.taskSignals['ForwardSpeed'] * trial.taskSignals['RollRate'], A[:, 2]) testing.assert_allclose( trial.taskSignals['ForwardSpeed'] * trial.taskSignals['SteerRate'], A[:, 3]) testing.assert_allclose(9.81 * trial.taskSignals['RollAngle'], A[:, 4]) testing.assert_allclose(9.81 * trial.taskSignals['SteerAngle'], A[:, 5]) testing.assert_allclose( trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['RollAngle'], A[:, 6]) testing.assert_allclose( trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['SteerAngle'], A[:, 7]) testing.assert_allclose(-trial.taskSignals['PullForce'], A[:, 8]) testing.assert_allclose(np.zeros_like(trial.taskSignals['PullForce']), B) rollParams = ['Mpp', 'Mpd', 'C1pp', 'C1pd', 'K0pp', 'K0pd', 'K2pp', 'K2pd'] A, B = cbi.benchmark_lstsq_matrices(rollParams, timeSeries, fixedValues) testing.assert_allclose(trial.taskSignals['RollRate'].time_derivative(), A[:, 0]) testing.assert_allclose(trial.taskSignals['SteerRate'].time_derivative(), A[:, 1]) testing.assert_allclose( trial.taskSignals['ForwardSpeed'] * trial.taskSignals['RollRate'], A[:, 2]) testing.assert_allclose( trial.taskSignals['ForwardSpeed'] * trial.taskSignals['SteerRate'], A[:, 3]) testing.assert_allclose(9.81 * trial.taskSignals['RollAngle'], A[:, 4]) testing.assert_allclose(9.81 * trial.taskSignals['SteerAngle'], A[:, 5]) testing.assert_allclose( trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['RollAngle'], A[:, 6]) testing.assert_allclose( trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['SteerAngle'], A[:, 7]) testing.assert_allclose(H[0] * trial.taskSignals['PullForce'], B) steerParams = [ 'Mdp', 'Mdd', 'C1dp', 'C1dd', 'K0dp', 'K0dd', 'K2dp', 'K2dd', 'HdF' ] A, B = cbi.benchmark_lstsq_matrices(steerParams, timeSeries, fixedValues) testing.assert_allclose(trial.taskSignals['RollRate'].time_derivative(), A[:, 0]) testing.assert_allclose(trial.taskSignals['SteerRate'].time_derivative(), A[:, 1]) testing.assert_allclose( trial.taskSignals['ForwardSpeed'] * trial.taskSignals['RollRate'], A[:, 2]) testing.assert_allclose( trial.taskSignals['ForwardSpeed'] * trial.taskSignals['SteerRate'], A[:, 3]) testing.assert_allclose(9.81 * trial.taskSignals['RollAngle'], A[:, 4]) testing.assert_allclose(9.81 * trial.taskSignals['SteerAngle'], A[:, 5]) testing.assert_allclose( trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['RollAngle'], A[:, 6]) testing.assert_allclose( trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['SteerAngle'], A[:, 7]) testing.assert_allclose(-trial.taskSignals['PullForce'], A[:, 8]) testing.assert_allclose(trial.taskSignals['SteerTorque'], B) steerParams = [ 'Mdp', 'Mdd', 'C1dp', 'C1dd', 'K0dp', 'K0dd', 'K2dp', 'K2dd' ] A, B = cbi.benchmark_lstsq_matrices(steerParams, timeSeries, fixedValues) testing.assert_allclose(trial.taskSignals['RollRate'].time_derivative(), A[:, 0]) testing.assert_allclose(trial.taskSignals['SteerRate'].time_derivative(), A[:, 1]) testing.assert_allclose( trial.taskSignals['ForwardSpeed'] * trial.taskSignals['RollRate'], A[:, 2]) testing.assert_allclose( trial.taskSignals['ForwardSpeed'] * trial.taskSignals['SteerRate'], A[:, 3]) testing.assert_allclose(9.81 * trial.taskSignals['RollAngle'], A[:, 4]) testing.assert_allclose(9.81 * trial.taskSignals['SteerAngle'], A[:, 5]) testing.assert_allclose( trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['RollAngle'], A[:, 6]) testing.assert_allclose( trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['SteerAngle'], A[:, 7]) testing.assert_allclose( trial.taskSignals['SteerTorque'] + H[1] * trial.taskSignals['PullForce'], B) steerParams = ['Mdp', 'C1dd', 'K0dp', 'K2dp', 'K2dd'] A, B = cbi.benchmark_lstsq_matrices(steerParams, timeSeries, fixedValues) testing.assert_allclose(trial.taskSignals['RollRate'].time_derivative(), A[:, 0]) testing.assert_allclose( trial.taskSignals['ForwardSpeed'] * trial.taskSignals['SteerRate'], A[:, 1]) testing.assert_allclose(9.81 * trial.taskSignals['RollAngle'], A[:, 2]) testing.assert_allclose( trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['RollAngle'], A[:, 3]) testing.assert_allclose( trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['SteerAngle'], A[:, 4]) testing.assert_allclose( H[1] * trial.taskSignals['PullForce'] + trial.taskSignals['SteerTorque'] - fixedValues['Mdd'] * trial.taskSignals['SteerRate'].time_derivative() - fixedValues['C1dp'] * trial.taskSignals['ForwardSpeed'] * trial.taskSignals['RollRate'] - fixedValues['K0dd'] * 9.81 * trial.taskSignals['SteerAngle'], B)
def test_benchmark_lstsq_matrices(): dataset = bdp.DataSet() trial = bdp.Run('700', dataset) A, B, F = cbi.whipple_state_space(trial.metadata['Rider'], 1.0) H = np.dot(np.linalg.inv(B[2:]), F[2:]) timeSeries = cbi.benchmark_time_series(trial, subtractMean=False) M, C1, K0, K2 = trial.bicycle.canonical(nominal=True) fixedValues = cbi.benchmark_canon_to_dict(M, C1, K0, K2, H) rollParams = ['Mpp', 'Mpd', 'C1pp', 'C1pd', 'K0pp', 'K0pd', 'K2pp', 'K2pd', 'HpF'] A, B = cbi.benchmark_lstsq_matrices(rollParams, timeSeries, fixedValues) testing.assert_allclose(trial.taskSignals['RollRate'].time_derivative(), A[:, 0]) testing.assert_allclose(trial.taskSignals['SteerRate'].time_derivative(), A[:, 1]) testing.assert_allclose(trial.taskSignals['ForwardSpeed'] * trial.taskSignals['RollRate'], A[:, 2]) testing.assert_allclose(trial.taskSignals['ForwardSpeed'] * trial.taskSignals['SteerRate'], A[:, 3]) testing.assert_allclose(9.81 * trial.taskSignals['RollAngle'], A[:, 4]) testing.assert_allclose(9.81 * trial.taskSignals['SteerAngle'], A[:, 5]) testing.assert_allclose(trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['RollAngle'], A[:, 6]) testing.assert_allclose(trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['SteerAngle'], A[:, 7]) testing.assert_allclose(-trial.taskSignals['PullForce'], A[:, 8]) testing.assert_allclose(np.zeros_like(trial.taskSignals['PullForce']), B) rollParams = ['Mpp', 'Mpd', 'C1pp', 'C1pd', 'K0pp', 'K0pd', 'K2pp', 'K2pd'] A, B = cbi.benchmark_lstsq_matrices(rollParams, timeSeries, fixedValues) testing.assert_allclose(trial.taskSignals['RollRate'].time_derivative(), A[:, 0]) testing.assert_allclose(trial.taskSignals['SteerRate'].time_derivative(), A[:, 1]) testing.assert_allclose(trial.taskSignals['ForwardSpeed'] * trial.taskSignals['RollRate'], A[:, 2]) testing.assert_allclose(trial.taskSignals['ForwardSpeed'] * trial.taskSignals['SteerRate'], A[:, 3]) testing.assert_allclose(9.81 * trial.taskSignals['RollAngle'], A[:, 4]) testing.assert_allclose(9.81 * trial.taskSignals['SteerAngle'], A[:, 5]) testing.assert_allclose(trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['RollAngle'], A[:, 6]) testing.assert_allclose(trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['SteerAngle'], A[:, 7]) testing.assert_allclose(H[0] * trial.taskSignals['PullForce'], B) steerParams = ['Mdp', 'Mdd', 'C1dp', 'C1dd', 'K0dp', 'K0dd', 'K2dp', 'K2dd', 'HdF'] A, B = cbi.benchmark_lstsq_matrices(steerParams, timeSeries, fixedValues) testing.assert_allclose(trial.taskSignals['RollRate'].time_derivative(), A[:, 0]) testing.assert_allclose(trial.taskSignals['SteerRate'].time_derivative(), A[:, 1]) testing.assert_allclose(trial.taskSignals['ForwardSpeed'] * trial.taskSignals['RollRate'], A[:, 2]) testing.assert_allclose(trial.taskSignals['ForwardSpeed'] * trial.taskSignals['SteerRate'], A[:, 3]) testing.assert_allclose(9.81 * trial.taskSignals['RollAngle'], A[:, 4]) testing.assert_allclose(9.81 * trial.taskSignals['SteerAngle'], A[:, 5]) testing.assert_allclose(trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['RollAngle'], A[:, 6]) testing.assert_allclose(trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['SteerAngle'], A[:, 7]) testing.assert_allclose(-trial.taskSignals['PullForce'], A[:, 8]) testing.assert_allclose(trial.taskSignals['SteerTorque'], B) steerParams = ['Mdp', 'Mdd', 'C1dp', 'C1dd', 'K0dp', 'K0dd', 'K2dp', 'K2dd'] A, B = cbi.benchmark_lstsq_matrices(steerParams, timeSeries, fixedValues) testing.assert_allclose(trial.taskSignals['RollRate'].time_derivative(), A[:, 0]) testing.assert_allclose(trial.taskSignals['SteerRate'].time_derivative(), A[:, 1]) testing.assert_allclose(trial.taskSignals['ForwardSpeed'] * trial.taskSignals['RollRate'], A[:, 2]) testing.assert_allclose(trial.taskSignals['ForwardSpeed'] * trial.taskSignals['SteerRate'], A[:, 3]) testing.assert_allclose(9.81 * trial.taskSignals['RollAngle'], A[:, 4]) testing.assert_allclose(9.81 * trial.taskSignals['SteerAngle'], A[:, 5]) testing.assert_allclose(trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['RollAngle'], A[:, 6]) testing.assert_allclose(trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['SteerAngle'], A[:, 7]) testing.assert_allclose(trial.taskSignals['SteerTorque'] + H[1] * trial.taskSignals['PullForce'], B) steerParams = ['Mdp', 'C1dd', 'K0dp', 'K2dp', 'K2dd'] A, B = cbi.benchmark_lstsq_matrices(steerParams, timeSeries, fixedValues) testing.assert_allclose(trial.taskSignals['RollRate'].time_derivative(), A[:, 0]) testing.assert_allclose(trial.taskSignals['ForwardSpeed'] * trial.taskSignals['SteerRate'], A[:, 1]) testing.assert_allclose(9.81 * trial.taskSignals['RollAngle'], A[:, 2]) testing.assert_allclose(trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['RollAngle'], A[:, 3]) testing.assert_allclose(trial.taskSignals['ForwardSpeed']**2 * trial.taskSignals['SteerAngle'], A[:, 4]) testing.assert_allclose( H[1] * trial.taskSignals['PullForce'] + trial.taskSignals['SteerTorque'] - fixedValues['Mdd'] * trial.taskSignals['SteerRate'].time_derivative() - fixedValues['C1dp'] * trial.taskSignals['ForwardSpeed'] * trial.taskSignals['RollRate'] - fixedValues['K0dd'] * 9.81 * trial.taskSignals['SteerAngle'], B)