diff --git a/kuka/reader.py b/kuka/reader.py index 33e2648ecd120d18d3a0f4642648632bb682f428..8374db385043b7cea7b261c1628fd43137ffc257 100644 --- a/kuka/reader.py +++ b/kuka/reader.py @@ -4,6 +4,7 @@ import pandas as pd from typing import Callable, List, Tuple from threading import Semaphore from datetime import datetime +import numpy as np from .handler import KUKA_Handler from .trace import KUKA_Trace @@ -352,6 +353,11 @@ class KUKA_DataReader: data_trace['Load'] = [load] * dataset_length + sampling = sampling / 1000 + print(sampling, sampling_offset * sampling) + + # data_trace["Sample_time"] += (sampling_offset * sampling) + return (pd.DataFrame(data_trace), dataset_length) def acquire ( @@ -419,7 +425,7 @@ class KUKA_DataReader: # KUKA Trace if self.tracing: # self.trace.Trace_Stop() - # sleep(5) + sleep(1) data_trace, _ = self.get_trace_data(speed, load, trace_sampling, temp_dir) # Indicating the end of this run @@ -468,7 +474,7 @@ class KUKA_DataReader: # KUKA Trace if self.tracing: self.trace.Trace_Stop() - sleep(0.1) + sleep(1) data_trace, size = self.get_trace_data(start, load, trace_sampling, temp_dir, trace_offset) # Updating the offset @@ -486,6 +492,10 @@ class KUKA_DataReader: start += step # Merging the results for each speed into one monolithic DataFrame for each method - return pd.concat(dataframes), pd.concat(trace_dataframes) + sys_data = pd.concat(dataframes) + trace_data = pd.concat(trace_dataframes) + trace_data["Sample_time"] = np.arange(len(trace_data["Sample_time"])) * (trace_sampling / 1000) + + return sys_data, trace_data ## --------------------------------- ## diff --git a/kuka/trace.py b/kuka/trace.py index 20f9226ef795bee777ab62cbad4de253ce8b9cbd..ea3f1847b04a5865a617c77f25fcc315331e7b55 100644 --- a/kuka/trace.py +++ b/kuka/trace.py @@ -138,6 +138,8 @@ class KUKA_Trace: self.rob_instance.KUKA_WriteVar('$TRACE.MODE', '#T_STOP') if self.rob_instance.KUKA_ReadVar('$TRACE.STATE') in [b'#T_END', b'#T_WRITING']: print('Trace stopped') + else: + print("Failed to stop the trace") def Trace_State(self): """ @@ -172,7 +174,6 @@ class KUKA_Trace: return result - def translate (self, value: str) -> str: if value in self.translations: @@ -204,7 +205,6 @@ class KUKA_Trace: shutil.copyfile(src, dest) src.unlink() - def find_pairs (self, name: str): extensions = ['.dat', '.r64', ".trc"] @@ -344,17 +344,15 @@ class KUKA_Trace: data.append((dat, r64)) min_sampling = data[0][0].sampling - max_sampling = data[0][0].sampling - min_length = data[0][0].length for d in data: min_sampling = min(d[0].sampling, min_sampling) - max_sampling = max(d[0].sampling, max_sampling) - min_length = min(d[0].length, min_length) - ratio = int(max_sampling // min_sampling) - length = min_length * ratio + min_length = 12e9 + for d in data: + ratio = int(d[0].sampling // min_sampling) + min_length = min(d[0].length * ratio, min_length) - print(length, ratio, min_sampling, max_sampling, min_length) + length = min_length dataframe = pd.DataFrame() diff --git a/test_trace.py b/test_trace.py new file mode 100644 index 0000000000000000000000000000000000000000..e7ceb3a136adb27259b9ff671c60dee6079647ee --- /dev/null +++ b/test_trace.py @@ -0,0 +1,28 @@ +from kuka import KUKA_Trace, KUKA_Handler + +h = KUKA_Handler("192.168.1.153", 7000) +trace = KUKA_Trace(h) + +trace.name = "2024-05-27_16-06-53[70]_R2" + +pairs = trace.find_pairs(trace.name) + +dats = [] + +for pair in pairs: + + dat_path = trace.temp_folder.joinpath(trace.name).joinpath(pair[0]) + dat = trace.read_dat(dat_path) + + dats.append(dat) + +min_sampling = 1 +for dat in dats: + min_sampling = min(min_sampling, dat.sampling) + +min_len = 1e9 +for dat in dats: + ratio = int(dat.sampling // min_sampling) + min_len = min(min_len, dat.length * ratio) + +print(min_len) \ No newline at end of file