| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- from copy import deepcopy
- import threading
- import time
- import numpy as np
- import pandas as pd
- import wx
- from gui.config import *
- # Tvoje wxFormBuilder a grafové komponenty
- from gui.design_autogenerated import MainWindow
- from gui.event_handlers.measuring_window import MeasuringDialogFinal
- from gui.fig_components.imu_series import ImuSeries
- from gui.fig_components.position_3d import Position3D
- # Tvoje NBus importy
- import traceback
- from modules.parsers.nbus_frame_parser import NbusFrameParser
- class MainFormFinal(MainWindow):
- def __init__(self, parent):
- super().__init__(parent)
- self._df = pd.DataFrame()
- # Inicializácia grafov
- self._figComponent_pos = Position3D(self.m_panel_pos)
- self._figComponent_imu = ImuSeries(self.m_panel_imu)
- # Predvolené/ukážkové dáta pri štarte (môžeš vymazať, ak nechceš)
- dev_x, dev_y, dev_z = (
- np.array([10.0, 12.0, 11.0]),
- np.array([20.0, 21.0, 18.2]),
- np.array([30.0, 29.8, 32.2]),
- )
- self._figComponent_pos.plot(dev_x, dev_y, dev_z)
- t = np.linspace(0, 10, 1000)
- a = np.sin(t)
- w = np.cos(t)
- self._figComponent_imu.plot_acc(t, a)
- self._figComponent_imu.plot_gyr(t, w)
- # Predpokladám, že v wxFormBuilderi máš tlačidlo napr. s ID self.m_button_start
- # Ak sa volá inak, uprav si názov tohto bindu:
- if hasattr(self, "m_button_start"):
- self.m_button_start.Bind(wx.EVT_BUTTON, self.on_start_streaming)
- def m_panel_posOnUpdateUI(self, event):
- self._figComponent_pos.on_resize_cb(event)
- self._figComponent_imu.on_resize_cb(event)
- def m_bpButton_newMeasurementOnButtonClick(self, event):
- self.m_bpButton_newMeasurement.Disable()
- dialog = MeasuringDialogFinal(self)
- dialog.ShowModal()
- self._df = dialog.GetDataFrame()
- parser = NbusFrameParser(self._df)
- ref_x, ref_y, ref_z = parser.get_pos_ref(1)
- pos1_x, pos1_y, pos1_z = parser.get_pos_end(1)
- acc_time, acc_x, acc_y, acc_z = parser.get_acc(1)
- gyr_time, gyr_x, gyr_y, gyr_z = parser.get_gyr(1)
- acc_time -= acc_time[0]
- gyr_time -= gyr_time[0]
- acc_mag_enmo = np.sqrt(acc_x**2 + acc_y**2 + acc_z**2)
- gyr_mag = np.sqrt(gyr_x**2 + gyr_y**2 + gyr_z**2)
- dev_x = np.mean(pos1_x - ref_x)
- dev_y = np.mean(pos1_y - ref_y)
- dev_z = np.mean(pos1_z - ref_z)
- self._figComponent_pos.clear()
- self._figComponent_pos.plot(dev_x, dev_y, dev_z)
- print(pos1_x - ref_x, pos1_y - ref_y, pos1_z - ref_z)
- self._figComponent_pos.update()
- self._figComponent_imu.clear()
- self._figComponent_imu.plot_acc(acc_time, acc_mag_enmo)
- self._figComponent_imu.plot_gyr(gyr_time, gyr_mag)
- self._figComponent_imu.update()
- wx.CallAfter(self.m_bpButton_newMeasurement.Enable)
|