In [1]:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline
In [ ]:
# run cell for interactive plots
import mpld3
mpld3.enable_notebook()
In [2]:
from limtoc import (load_log, plot_log, display_log_plot, plot_fft,
calculate_stiffness, calculate_fit, plot_fit)
In [3]:
data = load_log('torque_oscillation.log.gz')
fig, axes = plot_log(data, show_roi=False)
In [4]:
print('x = (a + bt)*exp(c*t)*sin(2*pi*e*t + d)')
# use subset of data when oscillating
d1 = data[4300:6000]
d2 = data[9800:12400]
params = []
for di in [d1, d2]:
print('data time range [{}:{}]'.format(di.time[0], di.time[-1]))
fit = calculate_fit(di)
a, b, c, d, e = fit[1][2]
k_c, k_m = calculate_stiffness(di)
print('desired stiffness is {} N-m/rad'.format(k_c))
print('measured stiffness is {} N-m/rad'.format(k_m))
# I = k / (2*pi*f_n)^2
I = k_m/(2*np.pi*e)**2
print('')
print('moment of inertia is {} kg-m^2'.format(I))
print('')
print('assuming coulomb friction dominates')
# b = ±2*F_d*2*pi*f_n/(pi*k)
print('friction torque is {} N-m'.format(np.abs(b * k_m/(4*e))))
f = {}
f['inertia'] = I
f['k'] = k_m
params.append(f)
In [5]:
params[0]
f = 15
k = (2*np.pi*f)**2 * params[0]['inertia']
print('for f = {}, desired k = {}'.format(f, k))
In [6]:
data = load_log('k270m_.log.gz')
fig, axes, roi = plot_log(data)
i0, i1 = roi
fit = calculate_fit(data[i0:i1])
fig, ax = plot_fit(data[i0:i1], fit)
k_c, k_m = calculate_stiffness(data[i0:i1])
print('desired stiffness is {} N-m/rad'.format(k_c))
print('measured stiffness is {} N-m/rad'.format(k_m))
In [7]:
data = load_log('k10m_.log.gz')
fig, axes, roi = plot_log(data)
i0, i1 = roi
fit = calculate_fit(data[i0:i1])
fig, ax = plot_fit(data[i0:i1], fit)
k_c, k_m = calculate_stiffness(data[i0:i1])
print('desired stiffness is {} N-m/rad'.format(k_c))
print('measured stiffness is {} N-m/rad'.format(k_m))
In [8]:
data = load_log('k8m_.log.gz')
fig, axes, roi = plot_log(data)
i0, i1 = roi
fit = calculate_fit(data[i0:i1])
fig, ax = plot_fit(data[i0:i1], fit)
k_c, k_m = calculate_stiffness(data[i0:i1])
print('desired stiffness is {} N-m/rad'.format(k_c))
print('measured stiffness is {} N-m/rad'.format(k_m))