In [1]:
import numpy as np
import scipy
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')
plot_log(data)
Out[3]:
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]
for di in [d1, d2]:
#fig, ax = plot_fft(di)
fit = calculate_fit(di)
fig, ax = plot_fit(di, fit)
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))))
In [5]:
data = load_log('k0m0.06.log.gz')
plot_log(data)
Out[5]:
In [6]:
data = load_log('k0m1.log.gz')
plot_log(data)
Out[6]:
In [7]:
data = load_log('k3.14m1.log.gz')
plot_log(data)
Out[7]:
In [8]:
data = load_log('k3m0.07.log.gz')
plot_log(data)
Out[8]:
In [9]:
data = load_log('k3m0.15.log.gz')
plot_log(data)
Out[9]:
In [10]:
data = load_log('k3m0.5.log.gz')
plot_log(data)
Out[10]: