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