115 lines
4.0 KiB
Python
115 lines
4.0 KiB
Python
import matplotlib.pyplot as plt
|
|
#import csv
|
|
import pandas as pd
|
|
|
|
import numpy as np
|
|
|
|
|
|
import argparse
|
|
|
|
def mapRange(value, inMin, inMax, outMin, outMax,constrain=False):
|
|
if constrain:
|
|
return max(outMin, min(outMax, outMin + (((value - inMin) / (inMax - inMin)) * (outMax - outMin))))
|
|
else:
|
|
return outMin + (((value - inMin) / (inMax - inMin)) * (outMax - outMin))
|
|
|
|
|
|
parser = argparse.ArgumentParser(description='Analyzes fixed csv logs from bobbycar')
|
|
parser.add_argument('-i', '--input', type=argparse.FileType('r'), required=True, help="input csv log file")
|
|
args = parser.parse_args()
|
|
|
|
df = pd.read_csv(args.input.name)
|
|
|
|
x = df['timestamp']
|
|
x = [i-x[0] for i in x] #offset time by starttime
|
|
|
|
|
|
|
|
def template():
|
|
scattersize=1
|
|
scatteralpha=0.1
|
|
|
|
|
|
fig, ax1 = plt.subplots()
|
|
|
|
ax2 = ax1.twinx()
|
|
|
|
|
|
#plt.scatter(x,df['rpm_FrontL'], s=scattersize, alpha=scatteralpha, label="rpm_FrontL")
|
|
ax1.plot(x,np.array(df['temp_Front']), c='#0000ff', alpha=0.5, label="temp_Front")
|
|
ax1.plot(x,np.array(df['temp_Rear']), c='#ff0000', alpha=0.5, label="temp_Rear")
|
|
ax1.plot(x,np.array(df['temp_Air']), c='#00ff00', alpha=0.5, label="temp_Air")
|
|
#ax2.plot(x,np.array(df['throttle']), c='g', alpha=0.5, label="throttle")
|
|
|
|
|
|
#confidence
|
|
#confidence_FrontL=[abs(x-df['cmd_FrontL'][i-5 if i>4 else 0])+abs(x-df['cmd_FrontL'][i-10 if i>9 else 0])+abs(x-df['cmd_FrontL'][i-20 if i>19 else 0]) for i,x in enumerate(df['cmd_FrontL'])]
|
|
#confidence_FrontL=[mapRange(x,0,50,1.0,0.0,True) for x in confidence_FrontL]
|
|
|
|
|
|
#ax1.scatter(df['cmd_FrontL'],df['rpm_FrontL'], s=scattersize, alpha=scatteralpha, label="FrontL")
|
|
#ax1.scatter(df['cmd_FrontR'],df['rpm_FrontR'], s=scattersize, alpha=scatteralpha, label="FrontR")
|
|
#ax1.scatter(df['cmd_RearL'],df['rpm_RearL'], s=scattersize, alpha=scatteralpha, label="RearL")
|
|
#ax1.scatter(df['cmd_RearR'],df['rpm_RearR'], s=scattersize, alpha=scatteralpha, label="RearR")
|
|
|
|
ax1.set_xlabel('timestamp')
|
|
#plt.ylabel('data')
|
|
ax1.set_ylabel('first axis')
|
|
ax2.set_ylabel('second axis')
|
|
#plt.title('')
|
|
ax1.legend(loc='upper left')
|
|
ax2.legend(loc='upper right')
|
|
plt.show()
|
|
|
|
|
|
def rpmDifference():
|
|
scattersize=1
|
|
scatteralpha=0.1
|
|
|
|
|
|
fig, ax1 = plt.subplots()
|
|
|
|
#confidence_FrontL=[abs(x-df['cmd_FrontL'][i-5 if i>4 else 0])+abs(x-df['cmd_FrontL'][i-10 if i>9 else 0])+abs(x-df['cmd_FrontL'][i-20 if i>19 else 0]) for i,x in enumerate(df['cmd_FrontL'])]
|
|
frontRPMdiff=np.convolve(np.array(df['rpm_FrontL'])-np.array(df['rpm_FrontR']), np.ones(10)/10, mode='same')
|
|
rearRPMdiff=np.convolve(np.array(df['rpm_RearL'])-np.array(df['rpm_RearR']), np.ones(10)/10, mode='same')
|
|
|
|
ax1.plot(x,frontRPMdiff, c='#0000ff', alpha=0.5, label="rpm Difference Front")
|
|
ax1.plot(x,rearRPMdiff, c='#00ff00', alpha=0.5, label="rpm Difference Rear")
|
|
|
|
ax1.set_xlabel('timestamp')
|
|
ax1.set_ylabel('rpm Difference')
|
|
ax1.legend(loc='upper left')
|
|
plt.show()
|
|
|
|
|
|
def plot_rpmVsCurrent():
|
|
scattersize=2
|
|
scatteralpha=0.5
|
|
|
|
#confidence
|
|
#confidence_FrontL=[abs(x-df['cmd_FrontL'][i-5 if i>4 else 0])+abs(x-df['cmd_FrontL'][i-10 if i>9 else 0])+abs(x-df['cmd_FrontL'][i-20 if i>19 else 0]) for i,x in enumerate(df['cmd_FrontL'])]
|
|
#confidence_FrontL=[mapRange(x,0,50,1.0,0.0,True) for x in confidence_FrontL]
|
|
|
|
|
|
|
|
fig, ax1 = plt.subplots()
|
|
ax1.scatter(df['rpm_FrontL'],df['current_FrontL'], s=5, alpha=scatteralpha, label="FrontL")
|
|
ax1.scatter(df['rpm_FrontR'],df['current_FrontR'], s=5, alpha=scatteralpha, label="FrontR")
|
|
#ax1.scatter(df['cmd_FrontR'],df['rpm_FrontR'], s=scattersize, alpha=scatteralpha, label="FrontR")
|
|
#ax1.scatter(df['cmd_RearL'],df['rpm_RearL'], s=scattersize, alpha=scatteralpha, label="RearL")
|
|
#ax1.scatter(df['cmd_RearR'],df['rpm_RearR'], s=scattersize, alpha=scatteralpha, label="RearR")
|
|
|
|
ax1.set_xlabel('rpm')
|
|
ax1.set_ylabel('current (A)')
|
|
plt.title('rpm vs current')
|
|
ax1.legend(loc='upper left')
|
|
plt.show()
|
|
|
|
|
|
#plot_rpmVsCurrent()
|
|
rpmDifference()
|
|
|
|
|
|
|
|
exit()
|