From fc7f78c53a5f12a20b3bbf3311b5129ac643416f Mon Sep 17 00:00:00 2001 From: ym13n22 <ym13n22@soton.ac.uk> Date: Thu, 22 Aug 2024 18:34:31 +0100 Subject: [PATCH] half and git for test --- integration/Window.py | 49 +++++++++++++++++++++++++++++++++++++++++- integration/Window2.py | 43 ++++++++++++++++++------------------ 2 files changed, 70 insertions(+), 22 deletions(-) diff --git a/integration/Window.py b/integration/Window.py index d789dcf..fc8645f 100644 --- a/integration/Window.py +++ b/integration/Window.py @@ -203,6 +203,17 @@ class Window: self.yaw_label.place(relx=0.2, rely=0.5, anchor='w') + self.left_label = tk.Label(self.frame2, text="left is : ") + self.left_label.config(font=("Arial", 12)) + self.left_label.place(relx=0.2, rely=0.6, anchor='w') + self.up_label = tk.Label(self.frame2, text="up is : ") + self.up_label.config(font=("Arial", 12)) + self.up_label.place(relx=0.2, rely=0.7, anchor='w') + self.forward_label = tk.Label(self.frame2, text="forward is : ") + self.forward_label.config(font=("Arial", 12)) + self.forward_label.place(relx=0.2, rely=0.8, anchor='w') + + @@ -360,6 +371,20 @@ class Window: self.pitch_label.config(text="pitch is : "+str(pitch)) self.yaw_label.config(text="yaw is : "+str(yaw)) + up=roll*90/2.6 + if(up>35): + left = -yaw * 90 / 1.5 + if(35>up>0): + left = -yaw * 90 / 2.26 + if(up<0): + left = -yaw * 90 / 2 + + + self.left_label.config(text="left : "+str(left)) + self.up_label.config(text="up is : "+str(up)) + + + # Rotation matrices Rz = np.array([ [np.cos(yaw), -np.sin(yaw), 0], @@ -1031,6 +1056,13 @@ class gameScreen: pitch = -math.asin(2 * (q0 * q2 - q3 * q1)) yaw = -math.atan2(2 * (q0 * q3 + q1 * q2), 1 - 2 * (q2 * q2 + q3 * q3)) + k = np.array([np.cos(yaw) * np.cos(pitch), np.sin(pitch), np.sin(yaw) * np.cos(pitch)]) # X vector + y = np.array([0, 1, 0]) # Y vector: pointing down + s = np.cross(k, y) # Side vector + v = np.cross(s, k) # Up vector + vrot = v * np.cos(roll) + np.cross(k, v) * np.sin(roll) # Rotated Up vector + + self.roll_label.config(text="roll is : " + str(roll)) self.pitch_label.config(text="pitch is : " + str(pitch)) self.yaw_label.config(text="yaw is : " + str(yaw)) @@ -1057,13 +1089,28 @@ class gameScreen: print(f"last yaw is: {self.last_averageyaw}") differ_yaw = self.last_averageyaw - yaw print(f"differ yaw is: {differ_yaw}") - yawAngle = differ_yaw * 110 / 2.5 + up = roll * 90 / 2.6 + yawAngle = differ_yaw * 90 / 2 + ''' + if (up > 35): + yawAngle = differ_yaw * 90 / 1.5 + if (35 > up > 0): + yawAngle = differ_yaw * 90 / 2.26 + if (up <= 0): + yawAngle = differ_yaw * 90 / 2 + + + ''' + + # yawAngle = differ_yaw * 110 / 2.5 print(f"yawAngle is: {yawAngle}") if (differ_yaw) < 0: self.send_command_to_unity(f"Command : back {-yawAngle}") if (differ_yaw) > 0: self.send_command_to_unity(f"Command : roll {yawAngle}") + + self.last_print_time = current_time self.last_averageRoll = roll self.last_averageyaw = yaw diff --git a/integration/Window2.py b/integration/Window2.py index c32f166..75e9eae 100644 --- a/integration/Window2.py +++ b/integration/Window2.py @@ -52,18 +52,18 @@ class Window: label4 = tk.Label(self.frame4, text="Section 4") label4.place(relx=0.5, rely=0.5, anchor='center') - self.imu_thread = threading.Thread(target=self.initial_IMU) - self.emg_thread = threading.Thread(target=self._initialise_EMG_graph) - self.emg_thread.start() - self.imu_thread.start() + #self.imu_thread = threading.Thread(target=self.initial_IMU) + #self.emg_thread = threading.Thread(target=self._initialise_EMG_graph) + #self.emg_thread.start() + #self.imu_thread.start() self.emg_data_1 = [-1.0] * 41 self.emg_data_2 = [-1.0] * 41 - #self.initial_IMU() - #self._initialise_EMG_graph() + self.initial_IMU() + self._initialise_EMG_graph() self.display_IMU_thread=threading.Thread(target=self.update_display) self.display_EMG_thread=threading.Thread(target=self.EMG_Display) @@ -74,9 +74,9 @@ class Window: def initial_IMU(self): # Serial Port Setup - if'COM8' in self.ports:#port maybe different on different laptop + if'COM9' in self.ports:#port maybe different on different laptop - self.label2 = tk.Label(self.frame2, text="Port: COM8 ") + self.label2 = tk.Label(self.frame2, text="Port: COM9 ") self.label2.place(relx=0.35, rely=0.8, anchor='center') self.label1 = tk.Label(self.frame2, text="click the Connect button to see the animation", @@ -188,9 +188,9 @@ class Window: def _initialise_EMG_graph(self): - if 'COM8' in self.ports:#port maybe different on different laptop + if 'COM9' in self.ports:#port maybe different on different laptop - self.label2 = tk.Label(self.frame3, text="Port: COM8 ") + self.label2 = tk.Label(self.frame3, text="Port: COM9 ") self.label2.place(relx=0.23, rely=0.8, anchor='center') self.label1 = tk.Label(self.frame3, text="click the Connect button to see the animation", @@ -277,17 +277,17 @@ class Window: def start_data_transmission(self): # Set the transmitting flag to True and start the update loop - if 'COM8' in self.ports: + if 'COM9' in self.ports: if self.arduino==None: - self.arduino = serial.Serial('COM8', 115200) + self.arduino = serial.Serial('COM9', 115200) self.transmitting = True self.update_display() def start_EMG_data_transmission(self): # Set the transmitting flag to True and start the update loop - if 'COM8' in self.ports: + if 'COM9' in self.ports: if self.arduino==None: - self.arduino = serial.Serial('COM8', 115200) + self.arduino = serial.Serial('COM9', 115200) self.EMG_transmitting = True self.EMG_Display() @@ -374,11 +374,12 @@ class Window: pitch = -math.asin(2 * (q0 * q2 - q3 * q1)) yaw = -math.atan2(2 * (q0 * q3 + q1 * q2), 1 - 2 * (q2 * q2 + q3 * q3)) + self.roll_label.config( text="roll is : "+str(roll)) self.pitch_label.config(text="pitch is : "+str(pitch)) self.yaw_label.config(text="yaw is : "+str(yaw)) - print(f"EMG1 is: {emg1}") - print(f"EMG2 is: {emg2}") + print(roll, pitch, yaw) + # Rotation matrices Rz = np.array([ @@ -471,7 +472,7 @@ class Window: print(f"An error occurred: {e}") # Call update_display() again after 50 milliseconds - self.update_display_id =self.root.after(1, self.update_display) + self.update_display_id =self.root.after(500, self.update_display) def EMG_Display(self): data_collection_duration = 3 @@ -621,7 +622,7 @@ class trainingInterface: self.frame2.grid(row=1, column=0, padx=10, pady=10, sticky="nsew") self.initialEMGTraining() - if 'COM8' in self.ports: + if 'COM9' in self.ports: self.emg_data_1 = [-1.0] * 41 self.emg_data_2 = [-1.0] * 41 @@ -633,7 +634,7 @@ class trainingInterface: self.gameStartButton = tk.Button(self.frame2, text="Start", command=self.startButton, width=15, height=2,font=("Helvetica", 12)) self.gameStartButton.place(relx=0.5, rely=0.5, anchor='center') - if 'COM8' not in self.ports: + if 'COM9' not in self.ports: self.label=tk.Label(self.frame2, text="No EMG device found, Please check the hardware connection",font=("Helvetica", 15)) self.label.place(relx=0.5, rely=0.3, anchor='center') self.gameStartButton = tk.Button(self.frame2, text="Start", command=self.startButton, width=15, @@ -647,14 +648,14 @@ class trainingInterface: new_root.mainloop() def EMG_connect_HandOpen(self): - self.arduino_EMG = serial.Serial('COM8', 9600, timeout=1) + self.arduino_EMG = serial.Serial('COM9', 9600, timeout=1) gesture = "handOpen" self.start_countdown(11) self.displayAndsaveDate() def handCloseButton(self): - self.arduino_EMG = serial.Serial('COM8', 9600, timeout=1) + self.arduino_EMG = serial.Serial('COM9', 9600, timeout=1) gesture = "handOpen" self.start_countdown_close(11) self.displayAndsaveDate() -- GitLab