parent
							
								
									add14223c1
								
							
						
					
					
						commit
						9d0f3fd80d
					
				
				 1 changed files with 0 additions and 111 deletions
			
			
		| @ -1,111 +0,0 @@ | ||||
| #!/usr/bin/env python3 | ||||
| ''' | ||||
| printing the gap between interrupts in a histogram to check if the | ||||
| frequency is what we expect, the bmx is not interrupt driven for as we | ||||
| get interrupts in a 2kHz rate. | ||||
| ''' | ||||
| 
 | ||||
| import argparse | ||||
| import sys | ||||
| import numpy as np | ||||
| from collections import defaultdict | ||||
| 
 | ||||
| from openpilot.tools.lib.logreader import LogReader | ||||
| from openpilot.tools.lib.route import Route | ||||
| 
 | ||||
| import matplotlib.pyplot as plt | ||||
| 
 | ||||
| SRC_BMX = "bmx055" | ||||
| SRC_LSM = "lsm6ds3" | ||||
| 
 | ||||
| 
 | ||||
| def parseEvents(log_reader): | ||||
|   bmx_data = defaultdict(list) | ||||
|   lsm_data = defaultdict(list) | ||||
| 
 | ||||
|   for m in log_reader: | ||||
|     if m.which() not in ['accelerometer', 'gyroscope']: | ||||
|       continue | ||||
| 
 | ||||
|     d = getattr(m, m.which()).to_dict() | ||||
| 
 | ||||
|     if d["source"] == SRC_BMX and "acceleration" in d: | ||||
|       bmx_data["accel"].append(d["timestamp"] / 1e9) | ||||
| 
 | ||||
|     if d["source"] == SRC_BMX and "gyroUncalibrated" in d: | ||||
|       bmx_data["gyro"].append(d["timestamp"] / 1e9) | ||||
| 
 | ||||
|     if d["source"] == SRC_LSM and "acceleration" in d: | ||||
|       lsm_data["accel"].append(d["timestamp"] / 1e9) | ||||
| 
 | ||||
|     if d["source"] == SRC_LSM and "gyroUncalibrated" in d: | ||||
|       lsm_data["gyro"].append(d["timestamp"] / 1e9) | ||||
| 
 | ||||
|   return bmx_data, lsm_data | ||||
| 
 | ||||
| 
 | ||||
| def cleanData(data): | ||||
|   if len(data) == 0: | ||||
|     return [], [] | ||||
| 
 | ||||
|   data.sort() | ||||
|   diffs = np.diff(data) | ||||
|   return data, diffs | ||||
| 
 | ||||
| 
 | ||||
| def logAvgValues(data, sensor): | ||||
|   if len(data) == 0: | ||||
|     print(f"{sensor}: no data to average") | ||||
|     return | ||||
| 
 | ||||
|   avg = sum(data) / len(data) | ||||
|   hz  = 1 / avg | ||||
|   print(f"{sensor}: data_points: {len(data)} avg [ns]: {avg} avg [Hz]: {hz}") | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
|   parser = argparse.ArgumentParser() | ||||
|   parser.add_argument("route", type=str, help="route name") | ||||
|   parser.add_argument("segment", type=int, help="segment number") | ||||
|   args = parser.parse_args() | ||||
| 
 | ||||
|   r = Route(args.route) | ||||
|   logs = r.log_paths() | ||||
| 
 | ||||
|   if len(logs) == 0: | ||||
|     print("NO data routes") | ||||
|     sys.exit(0) | ||||
| 
 | ||||
|   if args.segment >= len(logs): | ||||
|     print(f"RouteID: {args.segment} out of range, max: {len(logs) -1}") | ||||
|     sys.exit(0) | ||||
| 
 | ||||
|   lr = LogReader(logs[args.segment]) | ||||
|   bmx_data, lsm_data = parseEvents(lr) | ||||
| 
 | ||||
|   # sort bmx accel data, and then cal all the diffs, and to a histogram of those | ||||
|   bmx_accel, bmx_accel_diffs = cleanData(bmx_data["accel"]) | ||||
|   bmx_gyro, bmx_gyro_diffs = cleanData(bmx_data["gyro"]) | ||||
|   lsm_accel, lsm_accel_diffs = cleanData(lsm_data["accel"]) | ||||
|   lsm_gyro, lsm_gyro_diffs = cleanData(lsm_data["gyro"]) | ||||
| 
 | ||||
|   # get out the averages | ||||
|   logAvgValues(bmx_accel_diffs, "bmx accel") | ||||
|   logAvgValues(bmx_gyro_diffs, "bmx gyro ") | ||||
|   logAvgValues(lsm_accel_diffs, "lsm accel") | ||||
|   logAvgValues(lsm_gyro_diffs, "lsm gyro ") | ||||
| 
 | ||||
|   fig, axs = plt.subplots(1, 2, tight_layout=True) | ||||
|   axs[0].hist(bmx_accel_diffs, bins=50) | ||||
|   axs[0].set_title("bmx_accel") | ||||
|   axs[1].hist(bmx_gyro_diffs, bins=50) | ||||
|   axs[1].set_title("bmx_gyro") | ||||
| 
 | ||||
|   figl, axsl = plt.subplots(1, 2, tight_layout=True) | ||||
|   axsl[0].hist(lsm_accel_diffs, bins=50) | ||||
|   axsl[0].set_title("lsm_accel") | ||||
|   axsl[1].hist(lsm_gyro_diffs, bins=50) | ||||
|   axsl[1].set_title("lsm_gyro") | ||||
| 
 | ||||
|   print("check plot...") | ||||
|   plt.show() | ||||
					Loading…
					
					
				
		Reference in new issue