From 49011dec3a538fd24ef515159aa5a6f0184cc375 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Mon, 3 Jul 2023 15:55:11 +0300
Subject: [PATCH 01/23] added xz_angle_from_quaternion

---
 .../scripts/xz_angle_from_quaternion.py        | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
 create mode 100644 src/server_main/scripts/xz_angle_from_quaternion.py

diff --git a/src/server_main/scripts/xz_angle_from_quaternion.py b/src/server_main/scripts/xz_angle_from_quaternion.py
new file mode 100644
index 0000000..6f410c8
--- /dev/null
+++ b/src/server_main/scripts/xz_angle_from_quaternion.py
@@ -0,0 +1,18 @@
+#angle between new z and old x
+
+import tf
+# rotate vector vector by quaternion quat 
+def quat_mult(quat, vector):
+    # comment this out if vector doesn't need to be a unit vector
+    vector = tf.transformations.unit_vector(vector)
+    quat_auxiliary = list(vector)
+    quat_auxiliary.append(0.0)
+    return tf.transformations.quaternion_multiply(
+        tf.transformations.quaternion_multiply(quat, quat_auxiliary), 
+        tf.transformations.quaternion_conjugate(quat)
+    )[:3]
+
+def xz_angle_from_quat(quat):
+    z_vector = [0, 0, 1]
+    return quat_mult(quat, z_vector)[0]
+
-- 
GitLab


From f16f5256a78cbf3087639f04d95817cb1b8d3a9d Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Sat, 8 Jul 2023 18:13:34 +0300
Subject: [PATCH 02/23] working xz_angle_from_quat

---
 .../scripts/xz_angle_from_quaternion.py       | 32 +++++++++++--------
 src/server_main/test/test_angle_from_quat.py  | 23 +++++++++++++
 2 files changed, 41 insertions(+), 14 deletions(-)
 create mode 100644 src/server_main/test/test_angle_from_quat.py

diff --git a/src/server_main/scripts/xz_angle_from_quaternion.py b/src/server_main/scripts/xz_angle_from_quaternion.py
index 6f410c8..056ab04 100644
--- a/src/server_main/scripts/xz_angle_from_quaternion.py
+++ b/src/server_main/scripts/xz_angle_from_quaternion.py
@@ -1,18 +1,22 @@
 #angle between new z and old x
 
-import tf
-# rotate vector vector by quaternion quat 
-def quat_mult(quat, vector):
-    # comment this out if vector doesn't need to be a unit vector
-    vector = tf.transformations.unit_vector(vector)
-    quat_auxiliary = list(vector)
-    quat_auxiliary.append(0.0)
-    return tf.transformations.quaternion_multiply(
-        tf.transformations.quaternion_multiply(quat, quat_auxiliary), 
-        tf.transformations.quaternion_conjugate(quat)
-    )[:3]
+def q_mult(q1, q2):
+    w1, x1, y1, z1 = q1
+    w2, x2, y2, z2 = q2
+    w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2
+    x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2
+    y = w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2
+    z = w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2
+    return w, x, y, z
 
-def xz_angle_from_quat(quat):
-    z_vector = [0, 0, 1]
-    return quat_mult(quat, z_vector)[0]
+def q_conjugate(q):
+    w, x, y, z = q
+    return (w, -x, -y, -z)
+
+def qv_mult(q1, v1):
+    q2 = (0.0,) + v1
+    return q_mult(q_mult(q1, q2), q_conjugate(q1))[1:]
 
+def xz_angle_from_quat(quat):
+    z_vector = (0, 0, 1)
+    return qv_mult(quat, z_vector)[0]
diff --git a/src/server_main/test/test_angle_from_quat.py b/src/server_main/test/test_angle_from_quat.py
new file mode 100644
index 0000000..49aac45
--- /dev/null
+++ b/src/server_main/test/test_angle_from_quat.py
@@ -0,0 +1,23 @@
+def q_mult(q1, q2):
+    w1, x1, y1, z1 = q1
+    w2, x2, y2, z2 = q2
+    w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2
+    x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2
+    y = w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2
+    z = w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2
+    return w, x, y, z
+
+def q_conjugate(q):
+    w, x, y, z = q
+    return (w, -x, -y, -z)
+
+def qv_mult(q1, v1):
+    q2 = (0.0,) + v1
+    return q_mult(q_mult(q1, q2), q_conjugate(q1))[1:]
+
+def xz_angle_from_quat(quat):
+    z_vector = (0, 0, 1)
+    return qv_mult(quat, z_vector)[0]
+
+
+print(xz_angle_from_quat((0, -0.924606, 0, 0.3809248)))
-- 
GitLab


From 93e5218f53aafbaf1d147800dffb5313e313d9e5 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Mon, 10 Jul 2023 08:39:56 +0300
Subject: [PATCH 03/23] new get_yaw

---
 src/server_main/server_main/server_node.py | 72 ++++++++++++++--------
 1 file changed, 46 insertions(+), 26 deletions(-)

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index be6a44e..a66594c 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -26,6 +26,8 @@ from skspatial.objects import Line, Plane, Point
 from pyquaternion import Quaternion
 import paho.mqtt.client as mqtt
 
+import numpy as np 
+
 class ServerNode(Node):
 
     def __init__(self):
@@ -280,33 +282,51 @@ class ServerNode(Node):
         self.ball_coordinate_world = plane.intersect_line(line)
         
         #self.ball_coordinate_world = (ray_to_ball_world.point.x, ray_to_ball_world.point.y, ray_to_ball_world.point.z)
-    def get_yaw_world_rotation(self, pose:Pose) -> float:
-        x_ax =  [0,0,1]
-        quat_arr = [pose.orientation.x,pose.orientation.y,pose.orientation.z,pose.orientation.w]
-        quat_conj = tf_transformations.quaternion_conjugate(quat_arr) 
-        #  rotation_matrix = tf_transformations.quaternion_matrix(quat_conj)
-        rotated_x = Quaternion(quat_arr).rotate(x_ax)#  rotation_matrix @ z_ax
-        return math.atan2(rotated_x[1], rotated_x[0]) #?? https://math.stackexchange.com/questions/4191786/getting-the-rotation-angle-along-a-single-local-axis-from-a-quaternion
+
+def q_mult(q1, q2):
+    w1, x1, y1, z1 = q1
+    w2, x2, y2, z2 = q2
+    w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2
+    x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2
+    y = w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2
+    z = w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2
+    return w, x, y, z
+
+def q_conjugate(q):
+    w, x, y, z = q
+    return (w, -x, -y, -z)
+
+def qv_mult(q1, v1):
+    q2 = (0.0,) + v1
+    return q_mult(q_mult(q1, q2), q_conjugate(q1))[1:]
+
+def xz_angle_from_quat(quat):
+    z_vector = (0, 0, 1)
+    return np.arccos(qv_mult(quat, z_vector)[0])
+
+def get_yaw_world_rotation(self, pose:Pose) -> float:
+    quat = (pose.orientation.x,pose.orientation.y,pose.orientation.z,pose.orientation.w)
+    return xz_angle_from_quat(quat)
+    
+def send_command_to_robots(self):
+    #self.update_ball_pose()
+    self.get_camera_to_world_frame()
+    if (self.ball_coordinate_world is not None):
+        ball_msg = PointStamped()
+        ball_msg.header.stamp = self.get_clock().now().to_msg()
+        ball_msg.header.frame_id = "world"
+        ball_msg.point.x =self.ball_coordinate_world [0]
+        ball_msg.point.y =self.ball_coordinate_world [1]
+        ball_msg.point.z =self.ball_coordinate_world [2]
+        self.ball_pub.publish(ball_msg)
+        ball_msg = f"{self.ball_coordinate_world [0]} {self.ball_coordinate_world[1]}"
+        self.mqttc.publish(self.ball_topic, ball_msg, 1)
         
-    def send_command_to_robots(self):
-        #self.update_ball_pose()
-        self.get_camera_to_world_frame()
-        if (self.ball_coordinate_world is not None):
-          ball_msg = PointStamped()
-          ball_msg.header.stamp = self.get_clock().now().to_msg()
-          ball_msg.header.frame_id = "world"
-          ball_msg.point.x =self.ball_coordinate_world [0]
-          ball_msg.point.y =self.ball_coordinate_world [1]
-          ball_msg.point.z =self.ball_coordinate_world [2]
-          self.ball_pub.publish(ball_msg)
-          ball_msg = f"{self.ball_coordinate_world [0]} {self.ball_coordinate_world[1]}"
-          self.mqttc.publish(self.ball_topic, ball_msg, 1)
-            
-        self.count_robots_poses()
-        self.send_command_to_goalkeeper(0)
-        self.send_command_to_forward(1)
-        self.mqttc.loop()
-        pass
+    self.count_robots_poses()
+    self.send_command_to_goalkeeper(0)
+    self.send_command_to_forward(1)
+    self.mqttc.loop()
+    pass
 
 
 
-- 
GitLab


From 814539754d1e42f4247362af19c07e71bd651e4b Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Mon, 10 Jul 2023 13:48:38 +0300
Subject: [PATCH 04/23] fixed get_yaw

---
 src/server_main/server_main/server_node.py   | 29 +++++--------------
 src/server_main/test/test_angle_from_quat.py | 30 +++++++-------------
 2 files changed, 17 insertions(+), 42 deletions(-)

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index a66594c..24ae158 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -283,30 +283,15 @@ class ServerNode(Node):
         
         #self.ball_coordinate_world = (ray_to_ball_world.point.x, ray_to_ball_world.point.y, ray_to_ball_world.point.z)
 
-def q_mult(q1, q2):
-    w1, x1, y1, z1 = q1
-    w2, x2, y2, z2 = q2
-    w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2
-    x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2
-    y = w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2
-    z = w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2
-    return w, x, y, z
-
-def q_conjugate(q):
-    w, x, y, z = q
-    return (w, -x, -y, -z)
-
-def qv_mult(q1, v1):
-    q2 = (0.0,) + v1
-    return q_mult(q_mult(q1, q2), q_conjugate(q1))[1:]
-
-def xz_angle_from_quat(quat):
-    z_vector = (0, 0, 1)
-    return np.arccos(qv_mult(quat, z_vector)[0])
+def angle_from_quat(x, y, z, w):
+    quat = Quaternion(w, x, y, z)
+    z_vector = np.array([0., 0., 1.])
+    new_z = quat.rotate(z_vector)
+    print(new_z)
+    return math.atan2(new_z[1], new_z[0])
 
 def get_yaw_world_rotation(self, pose:Pose) -> float:
-    quat = (pose.orientation.x,pose.orientation.y,pose.orientation.z,pose.orientation.w)
-    return xz_angle_from_quat(quat)
+    return angle_from_quat(pose.orientation.x,pose.orientation.y,pose.orientation.z,pose.orientation.w)
     
 def send_command_to_robots(self):
     #self.update_ball_pose()
diff --git a/src/server_main/test/test_angle_from_quat.py b/src/server_main/test/test_angle_from_quat.py
index 49aac45..d31ae20 100644
--- a/src/server_main/test/test_angle_from_quat.py
+++ b/src/server_main/test/test_angle_from_quat.py
@@ -1,23 +1,13 @@
-def q_mult(q1, q2):
-    w1, x1, y1, z1 = q1
-    w2, x2, y2, z2 = q2
-    w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2
-    x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2
-    y = w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2
-    z = w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2
-    return w, x, y, z
+from pyquaternion import Quaternion
+import numpy as np
+import math
 
-def q_conjugate(q):
-    w, x, y, z = q
-    return (w, -x, -y, -z)
+def angle_from_quat(x, y, z, w):
+    quat = Quaternion(w, x, y, z)
+    z_vector = np.array([0., 0., 1.])
+    new_z = quat.rotate(z_vector)
+    print(new_z)
+    return math.atan2(new_z[1], new_z[0])
 
-def qv_mult(q1, v1):
-    q2 = (0.0,) + v1
-    return q_mult(q_mult(q1, q2), q_conjugate(q1))[1:]
 
-def xz_angle_from_quat(quat):
-    z_vector = (0, 0, 1)
-    return qv_mult(quat, z_vector)[0]
-
-
-print(xz_angle_from_quat((0, -0.924606, 0, 0.3809248)))
+print(angle_from_quat(-0.707, 0, 0, 0.707))
-- 
GitLab


From 8e593a25137e3b00baf17571bac8daea64227815 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Mon, 10 Jul 2023 19:56:30 +0300
Subject: [PATCH 05/23] removed unnecesarry print

---
 src/server_main/server_main/server_node.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index 24ae158..39e4a45 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -287,7 +287,6 @@ def angle_from_quat(x, y, z, w):
     quat = Quaternion(w, x, y, z)
     z_vector = np.array([0., 0., 1.])
     new_z = quat.rotate(z_vector)
-    print(new_z)
     return math.atan2(new_z[1], new_z[0])
 
 def get_yaw_world_rotation(self, pose:Pose) -> float:
-- 
GitLab


From 3269b92e1892e6aaf040cad81c0d6aad887bfea0 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Mon, 3 Jul 2023 15:55:11 +0300
Subject: [PATCH 06/23] added xz_angle_from_quaternion

---
 .../scripts/xz_angle_from_quaternion.py        | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
 create mode 100644 src/server_main/scripts/xz_angle_from_quaternion.py

diff --git a/src/server_main/scripts/xz_angle_from_quaternion.py b/src/server_main/scripts/xz_angle_from_quaternion.py
new file mode 100644
index 0000000..6f410c8
--- /dev/null
+++ b/src/server_main/scripts/xz_angle_from_quaternion.py
@@ -0,0 +1,18 @@
+#angle between new z and old x
+
+import tf
+# rotate vector vector by quaternion quat 
+def quat_mult(quat, vector):
+    # comment this out if vector doesn't need to be a unit vector
+    vector = tf.transformations.unit_vector(vector)
+    quat_auxiliary = list(vector)
+    quat_auxiliary.append(0.0)
+    return tf.transformations.quaternion_multiply(
+        tf.transformations.quaternion_multiply(quat, quat_auxiliary), 
+        tf.transformations.quaternion_conjugate(quat)
+    )[:3]
+
+def xz_angle_from_quat(quat):
+    z_vector = [0, 0, 1]
+    return quat_mult(quat, z_vector)[0]
+
-- 
GitLab


From 4b497d84e3f4df09beb08f3efe720450662540dd Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Sat, 8 Jul 2023 18:13:34 +0300
Subject: [PATCH 07/23] working xz_angle_from_quat

---
 .../scripts/xz_angle_from_quaternion.py       | 32 +++++++++++--------
 src/server_main/test/test_angle_from_quat.py  | 23 +++++++++++++
 2 files changed, 41 insertions(+), 14 deletions(-)
 create mode 100644 src/server_main/test/test_angle_from_quat.py

diff --git a/src/server_main/scripts/xz_angle_from_quaternion.py b/src/server_main/scripts/xz_angle_from_quaternion.py
index 6f410c8..056ab04 100644
--- a/src/server_main/scripts/xz_angle_from_quaternion.py
+++ b/src/server_main/scripts/xz_angle_from_quaternion.py
@@ -1,18 +1,22 @@
 #angle between new z and old x
 
-import tf
-# rotate vector vector by quaternion quat 
-def quat_mult(quat, vector):
-    # comment this out if vector doesn't need to be a unit vector
-    vector = tf.transformations.unit_vector(vector)
-    quat_auxiliary = list(vector)
-    quat_auxiliary.append(0.0)
-    return tf.transformations.quaternion_multiply(
-        tf.transformations.quaternion_multiply(quat, quat_auxiliary), 
-        tf.transformations.quaternion_conjugate(quat)
-    )[:3]
+def q_mult(q1, q2):
+    w1, x1, y1, z1 = q1
+    w2, x2, y2, z2 = q2
+    w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2
+    x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2
+    y = w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2
+    z = w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2
+    return w, x, y, z
 
-def xz_angle_from_quat(quat):
-    z_vector = [0, 0, 1]
-    return quat_mult(quat, z_vector)[0]
+def q_conjugate(q):
+    w, x, y, z = q
+    return (w, -x, -y, -z)
+
+def qv_mult(q1, v1):
+    q2 = (0.0,) + v1
+    return q_mult(q_mult(q1, q2), q_conjugate(q1))[1:]
 
+def xz_angle_from_quat(quat):
+    z_vector = (0, 0, 1)
+    return qv_mult(quat, z_vector)[0]
diff --git a/src/server_main/test/test_angle_from_quat.py b/src/server_main/test/test_angle_from_quat.py
new file mode 100644
index 0000000..49aac45
--- /dev/null
+++ b/src/server_main/test/test_angle_from_quat.py
@@ -0,0 +1,23 @@
+def q_mult(q1, q2):
+    w1, x1, y1, z1 = q1
+    w2, x2, y2, z2 = q2
+    w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2
+    x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2
+    y = w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2
+    z = w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2
+    return w, x, y, z
+
+def q_conjugate(q):
+    w, x, y, z = q
+    return (w, -x, -y, -z)
+
+def qv_mult(q1, v1):
+    q2 = (0.0,) + v1
+    return q_mult(q_mult(q1, q2), q_conjugate(q1))[1:]
+
+def xz_angle_from_quat(quat):
+    z_vector = (0, 0, 1)
+    return qv_mult(quat, z_vector)[0]
+
+
+print(xz_angle_from_quat((0, -0.924606, 0, 0.3809248)))
-- 
GitLab


From a8a807c16a601f43097ded25e257354d0eb6122b Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Mon, 10 Jul 2023 08:39:56 +0300
Subject: [PATCH 08/23] new get_yaw

---
 src/server_main/server_main/server_node.py | 72 ++++++++++++++--------
 1 file changed, 46 insertions(+), 26 deletions(-)

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index be6a44e..a66594c 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -26,6 +26,8 @@ from skspatial.objects import Line, Plane, Point
 from pyquaternion import Quaternion
 import paho.mqtt.client as mqtt
 
+import numpy as np 
+
 class ServerNode(Node):
 
     def __init__(self):
@@ -280,33 +282,51 @@ class ServerNode(Node):
         self.ball_coordinate_world = plane.intersect_line(line)
         
         #self.ball_coordinate_world = (ray_to_ball_world.point.x, ray_to_ball_world.point.y, ray_to_ball_world.point.z)
-    def get_yaw_world_rotation(self, pose:Pose) -> float:
-        x_ax =  [0,0,1]
-        quat_arr = [pose.orientation.x,pose.orientation.y,pose.orientation.z,pose.orientation.w]
-        quat_conj = tf_transformations.quaternion_conjugate(quat_arr) 
-        #  rotation_matrix = tf_transformations.quaternion_matrix(quat_conj)
-        rotated_x = Quaternion(quat_arr).rotate(x_ax)#  rotation_matrix @ z_ax
-        return math.atan2(rotated_x[1], rotated_x[0]) #?? https://math.stackexchange.com/questions/4191786/getting-the-rotation-angle-along-a-single-local-axis-from-a-quaternion
+
+def q_mult(q1, q2):
+    w1, x1, y1, z1 = q1
+    w2, x2, y2, z2 = q2
+    w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2
+    x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2
+    y = w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2
+    z = w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2
+    return w, x, y, z
+
+def q_conjugate(q):
+    w, x, y, z = q
+    return (w, -x, -y, -z)
+
+def qv_mult(q1, v1):
+    q2 = (0.0,) + v1
+    return q_mult(q_mult(q1, q2), q_conjugate(q1))[1:]
+
+def xz_angle_from_quat(quat):
+    z_vector = (0, 0, 1)
+    return np.arccos(qv_mult(quat, z_vector)[0])
+
+def get_yaw_world_rotation(self, pose:Pose) -> float:
+    quat = (pose.orientation.x,pose.orientation.y,pose.orientation.z,pose.orientation.w)
+    return xz_angle_from_quat(quat)
+    
+def send_command_to_robots(self):
+    #self.update_ball_pose()
+    self.get_camera_to_world_frame()
+    if (self.ball_coordinate_world is not None):
+        ball_msg = PointStamped()
+        ball_msg.header.stamp = self.get_clock().now().to_msg()
+        ball_msg.header.frame_id = "world"
+        ball_msg.point.x =self.ball_coordinate_world [0]
+        ball_msg.point.y =self.ball_coordinate_world [1]
+        ball_msg.point.z =self.ball_coordinate_world [2]
+        self.ball_pub.publish(ball_msg)
+        ball_msg = f"{self.ball_coordinate_world [0]} {self.ball_coordinate_world[1]}"
+        self.mqttc.publish(self.ball_topic, ball_msg, 1)
         
-    def send_command_to_robots(self):
-        #self.update_ball_pose()
-        self.get_camera_to_world_frame()
-        if (self.ball_coordinate_world is not None):
-          ball_msg = PointStamped()
-          ball_msg.header.stamp = self.get_clock().now().to_msg()
-          ball_msg.header.frame_id = "world"
-          ball_msg.point.x =self.ball_coordinate_world [0]
-          ball_msg.point.y =self.ball_coordinate_world [1]
-          ball_msg.point.z =self.ball_coordinate_world [2]
-          self.ball_pub.publish(ball_msg)
-          ball_msg = f"{self.ball_coordinate_world [0]} {self.ball_coordinate_world[1]}"
-          self.mqttc.publish(self.ball_topic, ball_msg, 1)
-            
-        self.count_robots_poses()
-        self.send_command_to_goalkeeper(0)
-        self.send_command_to_forward(1)
-        self.mqttc.loop()
-        pass
+    self.count_robots_poses()
+    self.send_command_to_goalkeeper(0)
+    self.send_command_to_forward(1)
+    self.mqttc.loop()
+    pass
 
 
 
-- 
GitLab


From e6488983d954a4341aba0882fc2314dea3371687 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Mon, 10 Jul 2023 13:48:38 +0300
Subject: [PATCH 09/23] fixed get_yaw

---
 src/server_main/server_main/server_node.py   | 29 +++++--------------
 src/server_main/test/test_angle_from_quat.py | 30 +++++++-------------
 2 files changed, 17 insertions(+), 42 deletions(-)

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index a66594c..24ae158 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -283,30 +283,15 @@ class ServerNode(Node):
         
         #self.ball_coordinate_world = (ray_to_ball_world.point.x, ray_to_ball_world.point.y, ray_to_ball_world.point.z)
 
-def q_mult(q1, q2):
-    w1, x1, y1, z1 = q1
-    w2, x2, y2, z2 = q2
-    w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2
-    x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2
-    y = w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2
-    z = w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2
-    return w, x, y, z
-
-def q_conjugate(q):
-    w, x, y, z = q
-    return (w, -x, -y, -z)
-
-def qv_mult(q1, v1):
-    q2 = (0.0,) + v1
-    return q_mult(q_mult(q1, q2), q_conjugate(q1))[1:]
-
-def xz_angle_from_quat(quat):
-    z_vector = (0, 0, 1)
-    return np.arccos(qv_mult(quat, z_vector)[0])
+def angle_from_quat(x, y, z, w):
+    quat = Quaternion(w, x, y, z)
+    z_vector = np.array([0., 0., 1.])
+    new_z = quat.rotate(z_vector)
+    print(new_z)
+    return math.atan2(new_z[1], new_z[0])
 
 def get_yaw_world_rotation(self, pose:Pose) -> float:
-    quat = (pose.orientation.x,pose.orientation.y,pose.orientation.z,pose.orientation.w)
-    return xz_angle_from_quat(quat)
+    return angle_from_quat(pose.orientation.x,pose.orientation.y,pose.orientation.z,pose.orientation.w)
     
 def send_command_to_robots(self):
     #self.update_ball_pose()
diff --git a/src/server_main/test/test_angle_from_quat.py b/src/server_main/test/test_angle_from_quat.py
index 49aac45..d31ae20 100644
--- a/src/server_main/test/test_angle_from_quat.py
+++ b/src/server_main/test/test_angle_from_quat.py
@@ -1,23 +1,13 @@
-def q_mult(q1, q2):
-    w1, x1, y1, z1 = q1
-    w2, x2, y2, z2 = q2
-    w = w1 * w2 - x1 * x2 - y1 * y2 - z1 * z2
-    x = w1 * x2 + x1 * w2 + y1 * z2 - z1 * y2
-    y = w1 * y2 + y1 * w2 + z1 * x2 - x1 * z2
-    z = w1 * z2 + z1 * w2 + x1 * y2 - y1 * x2
-    return w, x, y, z
+from pyquaternion import Quaternion
+import numpy as np
+import math
 
-def q_conjugate(q):
-    w, x, y, z = q
-    return (w, -x, -y, -z)
+def angle_from_quat(x, y, z, w):
+    quat = Quaternion(w, x, y, z)
+    z_vector = np.array([0., 0., 1.])
+    new_z = quat.rotate(z_vector)
+    print(new_z)
+    return math.atan2(new_z[1], new_z[0])
 
-def qv_mult(q1, v1):
-    q2 = (0.0,) + v1
-    return q_mult(q_mult(q1, q2), q_conjugate(q1))[1:]
 
-def xz_angle_from_quat(quat):
-    z_vector = (0, 0, 1)
-    return qv_mult(quat, z_vector)[0]
-
-
-print(xz_angle_from_quat((0, -0.924606, 0, 0.3809248)))
+print(angle_from_quat(-0.707, 0, 0, 0.707))
-- 
GitLab


From de15a89e1729f53bfe8089df2a8bdaeb1aaf4205 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Mon, 10 Jul 2023 19:56:30 +0300
Subject: [PATCH 10/23] removed unnecesarry print

---
 src/server_main/server_main/server_node.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index 24ae158..39e4a45 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -287,7 +287,6 @@ def angle_from_quat(x, y, z, w):
     quat = Quaternion(w, x, y, z)
     z_vector = np.array([0., 0., 1.])
     new_z = quat.rotate(z_vector)
-    print(new_z)
     return math.atan2(new_z[1], new_z[0])
 
 def get_yaw_world_rotation(self, pose:Pose) -> float:
-- 
GitLab


From 155fa2b81a1b56342a3f95088c50dd418afa65ed Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Tue, 11 Jul 2023 12:33:27 +0300
Subject: [PATCH 11/23] added logging

---
 install_deps.sh                            |  2 +-
 src/server_main/server_main/server_node.py | 59 +++++++++++-----------
 src/server_main/test/logger.py             | 42 +++++++++++++++
 src/server_main/test/mqtt_kondo_dummy.py   | 21 +++++---
 4 files changed, 88 insertions(+), 36 deletions(-)
 create mode 100644 src/server_main/test/logger.py

diff --git a/install_deps.sh b/install_deps.sh
index d2d565b..f14290b 100755
--- a/install_deps.sh
+++ b/install_deps.sh
@@ -2,7 +2,7 @@
  pip3 install transforms3d
  pip3 install openvino
  pip install scikit-spatial
- sudo apt install ros-humble-usb-cam ros-humble-tf-transformations ros-humble-soccer-vision-2d-msgs
+ sudo apt install ros-humble-usb-cam ros-humble-tf-transformations ros-humble-soccer-vision-2d-msgs ros-humble-aruco
  pip3 install paho-mqtt pyquaternion
  apt install mosquitto
 
diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index 39e4a45..5ebf2fa 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -76,7 +76,7 @@ class ServerNode(Node):
         self.camera_model = None #PinholeCameraModel()
 
         # self.create_subscription(Pose, "ball", etc get while volodya yola get done  
-        self.timer = self.create_timer(0.01, self.send_command_to_robots)
+        self.timer = self.create_timer(1, self.send_command_to_robots)
         self.current_aruco_poses = {}# {if: x, y}
         self.current_robot_poses = {}
         self.world_robots_poses = {}
@@ -100,7 +100,7 @@ class ServerNode(Node):
         print("Subscribed: " + str(mid) + " " + str(granted_qos))
 
     def init_mqqt(self):
-        self.declare_parameter('mqtt_broker', '192.168.243.71')
+        self.declare_parameter('mqtt_broker', '127.0.0.1')
         self.broker = self.get_parameter('mqtt_broker').value
         self.declare_parameter('mqtt_port', 1900)
         self.port = self.get_parameter('mqtt_port').value
@@ -283,34 +283,35 @@ class ServerNode(Node):
         
         #self.ball_coordinate_world = (ray_to_ball_world.point.x, ray_to_ball_world.point.y, ray_to_ball_world.point.z)
 
-def angle_from_quat(x, y, z, w):
-    quat = Quaternion(w, x, y, z)
-    z_vector = np.array([0., 0., 1.])
-    new_z = quat.rotate(z_vector)
-    return math.atan2(new_z[1], new_z[0])
-
-def get_yaw_world_rotation(self, pose:Pose) -> float:
-    return angle_from_quat(pose.orientation.x,pose.orientation.y,pose.orientation.z,pose.orientation.w)
+    @staticmethod
+    def angle_from_quat(x, y, z, w):
+        quat = Quaternion(w, x, y, z)
+        z_vector = np.array([0., 0., 1.])
+        new_z = quat.rotate(z_vector)
+        return math.atan2(new_z[1], new_z[0])
     
-def send_command_to_robots(self):
-    #self.update_ball_pose()
-    self.get_camera_to_world_frame()
-    if (self.ball_coordinate_world is not None):
-        ball_msg = PointStamped()
-        ball_msg.header.stamp = self.get_clock().now().to_msg()
-        ball_msg.header.frame_id = "world"
-        ball_msg.point.x =self.ball_coordinate_world [0]
-        ball_msg.point.y =self.ball_coordinate_world [1]
-        ball_msg.point.z =self.ball_coordinate_world [2]
-        self.ball_pub.publish(ball_msg)
-        ball_msg = f"{self.ball_coordinate_world [0]} {self.ball_coordinate_world[1]}"
-        self.mqttc.publish(self.ball_topic, ball_msg, 1)
+    def get_yaw_world_rotation(self, pose:Pose) -> float:
+        return self.angle_from_quat(pose.orientation.x,pose.orientation.y,pose.orientation.z,pose.orientation.w)
         
-    self.count_robots_poses()
-    self.send_command_to_goalkeeper(0)
-    self.send_command_to_forward(1)
-    self.mqttc.loop()
-    pass
+    def send_command_to_robots(self):
+        #self.update_ball_pose()
+        self.get_camera_to_world_frame()
+        if (self.ball_coordinate_world is not None):
+            ball_msg = PointStamped()
+            ball_msg.header.stamp = self.get_clock().now().to_msg()
+            ball_msg.header.frame_id = "world"
+            ball_msg.point.x =self.ball_coordinate_world [0]
+            ball_msg.point.y =self.ball_coordinate_world [1]
+            ball_msg.point.z =self.ball_coordinate_world [2]
+            self.ball_pub.publish(ball_msg)
+            ball_msg = f"{self.ball_coordinate_world [0]} {self.ball_coordinate_world[1]}"
+            self.mqttc.publish(self.ball_topic, ball_msg, 1)
+            
+        self.count_robots_poses()
+        self.send_command_to_goalkeeper(0)
+        self.send_command_to_forward(1)
+        self.mqttc.loop()
+        pass
 
 
 
@@ -329,4 +330,4 @@ def main(args=None):
 
 
 if __name__ == '__main__':
-    main()
\ No newline at end of file
+    main()
diff --git a/src/server_main/test/logger.py b/src/server_main/test/logger.py
new file mode 100644
index 0000000..1bce16d
--- /dev/null
+++ b/src/server_main/test/logger.py
@@ -0,0 +1,42 @@
+
+import matplotlib.pyplot as plt
+import numpy as np
+# from collections import defaultdict
+# from multiprocessing import Process, Value
+# import json
+
+plt.style.use('seaborn') # fivethirtyeight is name of style
+plt.rcParams['font.size'] = 100
+plt.rcParams['legend.fontsize'] = 50
+plt.rc('xtick', labelsize=50) 
+plt.rc('ytick', labelsize=50)
+plt.rcParams['axes.labelsize'] = 30
+plt.rcParams['axes.titlesize'] = 50
+
+plt.rcParams['xtick.major.size'] = 5.0
+plt.rcParams['xtick.minor.size'] = 3.0
+plt.rcParams['ytick.major.size'] = 5.0
+plt.rcParams['ytick.minor.size'] = 3.0
+
+# plt.rcParams["font.family"] = "Times New Roman"
+
+class Logger:
+    def __init__(self):
+        self.yaw_log = []
+        self.plot_name = 'yaw_plot'       
+
+    def log_yaw(self, value):
+        self.yaw_log.append(value)
+
+    def init_plot_yaw(self):
+        self.fig, self.ax = plt.subplots(figsize=(30, 20))
+        # ax.tick_params(axis='both', which='major', labelsize=30)
+        self.ax.set(xlabel='time [s]', ylabel='yaw [rad]',
+              title='Robot\'s Yaw')
+        # fig.suptitle('Yaw')
+        # ax.set_title('RobotYaw', loc='left', fontsize='large')
+        self.ax.plot(self.yaw_log)
+        # plt.savefig(self.plot_name)
+    
+    def update_plot_yaw(self):
+        
\ No newline at end of file
diff --git a/src/server_main/test/mqtt_kondo_dummy.py b/src/server_main/test/mqtt_kondo_dummy.py
index ef9935c..1ffc37d 100644
--- a/src/server_main/test/mqtt_kondo_dummy.py
+++ b/src/server_main/test/mqtt_kondo_dummy.py
@@ -18,6 +18,8 @@ import paho.mqtt.client as mqtt
 # https://github.com/eclipse/paho.mqtt.python
 import tf_transformations
 import math 
+
+from logger import Logger
 class MqttKondoDummy(Node):
     def __init__(self):
         super().__init__('MqttKondoDummy')
@@ -27,25 +29,29 @@ class MqttKondoDummy(Node):
         self.init_publisher()
         self.init_mqqt()
         self.timer = self.create_timer(0.001, self.forward_main_cycle)
+        self.logger = Logger()
 
     def on_connect(mqttc, obj, flags, rc):
-        print("rc: " + str(rc))
+        pass
+        # print("rc: " + str(rc))
 
     def on_message(self, mqttc, obj, msg):
         print("get msg")
         if (msg.topic == self.ball_topic): 
         # print(msg.topic + " " + str(msg.qos) + " " + str(msg.payload))
             self.ball_coord = [float(i) for i in msg.payload.split(b" ")]
-            print(self.ball_coord)
+            # print(self.ball_coord)
         elif (msg.topic == self.robot_topic):
              self.pf_coord = [float(i) for i in msg.payload.split(b" ")]
              print(self.pf_coord) 
 
     def on_publish(mqttc, obj, mid):
-        print("mid: " + str(mid))
+        pass
+        # print("mid: " + str(mid))
       
     def on_subscribe(mqttc, obj, mid, granted_qos):
-        print("Subscribed: " + str(mid) + " " + str(granted_qos))
+        pass
+        # print("Subscribed: " + str(mid) + " " + str(granted_qos))
 
     def init_mqqt(self):
         self.declare_parameter('mqtt_broker', 'localhost')
@@ -84,6 +90,9 @@ class MqttKondoDummy(Node):
                 marker.pose.position.x = self.pf_coord[0]
                 marker.pose.position.y = self.pf_coord[1]
                 quaternion = tf_transformations.quaternion_about_axis(self.pf_coord[2], (0,0,1))
+                self.logger.log_yaw(self.pf_coord[2])
+                if True:
+                     self.logger.plot_yaw()
                 marker.pose.orientation.x = quaternion[0]
                 marker.pose.orientation.y = quaternion[1]
                 marker.pose.orientation.z = quaternion[2]
@@ -97,7 +106,7 @@ class MqttKondoDummy(Node):
                 marker.color.g = 0.9
                 marker.color.b = 0.2
                 self.robot_pub.publish(marker)
-                print("robot:", marker) 
+                # print("robot:", marker) 
         if (self.ball_coord is not None):
                 marker = Marker()
                 marker.header.frame_id = 'world'
@@ -114,7 +123,7 @@ class MqttKondoDummy(Node):
                 marker.color.g = 0.4
                 marker.color.b = 1.0
                 self.ball_pub.publish(marker)
-                print("ball " ,marker)
+                # print("ball " ,marker)
     def forward_main_cycle(self):
             self.mqttc.loop()
             self.publish_marker()            
-- 
GitLab


From a3114adec5ae931487aebbf1e15077a299dd6e05 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Tue, 11 Jul 2023 13:48:58 +0300
Subject: [PATCH 12/23] deleted some trash

---
 src/server_main/server_main/server_node.py |   2 +-
 src/server_main/test/logger.py             |   1 +
 src/server_main/test/yaw.png               | Bin 10531 -> 0 bytes
 src/server_main/test/yaw_plot.png          | Bin 127467 -> 0 bytes
 4 files changed, 2 insertions(+), 1 deletion(-)
 delete mode 100644 src/server_main/test/yaw.png
 delete mode 100644 src/server_main/test/yaw_plot.png

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index 5ebf2fa..e85931c 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -296,7 +296,7 @@ class ServerNode(Node):
     def send_command_to_robots(self):
         #self.update_ball_pose()
         self.get_camera_to_world_frame()
-        if (self.ball_coordinate_world is not None):
+        if (self.ball_coordinate_world is not None):            
             ball_msg = PointStamped()
             ball_msg.header.stamp = self.get_clock().now().to_msg()
             ball_msg.header.frame_id = "world"
diff --git a/src/server_main/test/logger.py b/src/server_main/test/logger.py
index 1bce16d..59108a6 100644
--- a/src/server_main/test/logger.py
+++ b/src/server_main/test/logger.py
@@ -39,4 +39,5 @@ class Logger:
         # plt.savefig(self.plot_name)
     
     def update_plot_yaw(self):
+        pass
         
\ No newline at end of file
diff --git a/src/server_main/test/yaw.png b/src/server_main/test/yaw.png
deleted file mode 100644
index 583813158edd73619945fc163ea9e086649de572..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10531
zcmZvCWmr^E+wMpXJ#@p+J#<JnD4o(VbazNIgd;ghh;&IvODY`$B1%d(s7QC$8Q<^w
z&N<h)&X2YCkG=O=&wAE=^1ff|YO4|8(%=FB0D@=g%KE7L*M9?ug}T<5)aIjZPyJO)
z{0+Pu{ex_M9ROOk{@(6h{_ZYNaG-;)pNp5LFhm?8#0z%z_xJXb<mdPJ-!DMCe4Y5Y
zEPqF$Cc*JmH}wMmh;09jClzw#E&u>0;+e97VQ}t#UQigB!^4oA@ZzLcC&^oRAh-xe
zL0(r|@_F5k4km4GT;u)E#(Wddv3t311(-9xf{dI@hAe#}l_W$tI~{>g4EdB}fBWz-
zmp4Bzo0B)6huFFgISy%PY?Mlyzy97TJEp|<)V&@i4-Sqcyu<+k_2YrD@<&gIfzfN|
z%%CTg{QQGc=ou1CFSXiq;=rI2?*jSI&GA2?bM=3%QV-8*#ia(Elt8r12r;2Q50r?x
z%EYObCeQ1v^Nk_IF!}mZF4!6<y6H`RKS!ZoghHE6403z{-@)F$O=mM9W&n(~!H0Ey
zzeNxn>L@2IXP6x1Xq_w<aZRyn-G;5f5$JUJG}4<RpP^#lI!5X~V(W(Tpck*7RM$L&
zu<B6^li%VUye>Zv4^VHyd$oTWbbL|$5FAlKlQ`r*C|)NWHB%Ns{CL7c2~}8tYfr)d
z+|YF2<}KW#cLnc=mHs~Oy^5<VG%`p{=D#OzsLX>&b|KySK4NnejYQeDZNK@TtE`L$
z=(4;65Qev6VWw@_&hg>tSw}nx?KVp}nNssv{g{W~g5OdCmBAjrHg7rFJVH-yg*_Kr
zx-RLU2Esn8J9)Y)NC4mq0Ye=5=@3|!rToW`IQ7|IsX#3DI}gG3nyasm>pkLC-lrQn
zKIh4;pBDYFm!qcfIMy#cXmeXg@02hmRm-H$A^N^wZkNg{ztCkkrEbQzKaM7#1AOsR
z!7_D3{y(w{M{WOBcT09YgfFTp4-7DQ{iWjA&75}wr|Styp!7$q9`)}Gs%2-}Ft^Wt
zBO!Gf0KhZTm!1VW-*)0Z8K^CWg_%Lr+|8WIJw(}@il)S%$A2|b3npfany-WD$(ccw
z@_G#7=HDGt7k}fDJ1;yPf;O9g(y|hAC?j`{g(q-^d-LqDV}Z)bB$5v309TE%FP$&U
zLq@j)N+lTp;~!nT7gluj`fh`t<@x#4dQ17<5ZT29DtaSC>fi%q{)%Q+UUc&(PtW+w
z0&lOC+I3%Ev`uy4P(Lkn5VDZC%bB_e-<4Yn@95fe?1hSLz9UauUJ=gG^xR;%dSwE7
zL;bima<$j+{%WnZyU^yFbd%V$-Qkzt>La@ZN*coL*0GX=;e+1?R_ZdNi#b^XN0F7w
za)nQ$+L&5xFtEmQQ|YU$)vn(&`!h;n34KOGDZnReQB^Z!L+gxQ*dR&nG$9VCY#(y(
zK;rrGT-g2g$iY4Q(3I6-%l4u;L*nk<sV(dvcB;!DKMb29jrdkP4CAwYT$i2GdYM}0
zTHZW*Fr(K^;|KzE9Ju1OJvt-#*nDX$Of1+hR{eQUiXgoiYu_mP3hz5QI^c@|<so39
znU7Ql2258`17K!5F&bO3_qi>3a&4sKP6-He0cK4nl{Gw{2IaEKFZeu%?ZoJwU&tG{
z@^p>DXyRz)V3JSiW1RSam)pd5@)*oQZ+0;3FKD9BS8G-M!bQ{HO#FShoSb#kiiD@=
z;Qr?&C<v_=n-z-*6ef?M2)>H?zwICOL>Y_$BZA8VF&IJ7AfPN54fP_}B|5!866S=h
zwq9~=*B8zmOPElKd9u8lx_%?Ypn`l~>|KCc6vJ#9O?Q8cr#v{gx$yK-socfJ3BSRF
z_n)nYU5*XSh4YM(*-pUi>FzE_1I>>oWUl_MOawnHnDA1sVlK)C4{zV5dOcztu14@#
zQRPQbs+F$wx2v6G15?Hu5T)|?H9zKV9^?epi(U}Fo1rEa^x>2X#|Owyi44lt1LLgg
zl<kbDY51-CIEb{6=dE%ug{cD!n;gcS#v#XIn;mKCFAtoKcbiIkmaTMZEn$R!Ht#F(
zu=|tnwucn8qpvqCCiT9wCu-UX_U?*p5B4zSH}>tfb&TEd4E=*lqOFtwFzUjs&8T$v
z#^4DcTy?A`W%_Yo=CVKySy}S;X&9O+e=s4Sa7t`_@df2Zq?LK1XN(#efJADm`0*;o
z=b(oWKP#Aa^k6mq=aSW5aZf_dTYo8PnVVPZ{A}v<!#Je}lP}34I!RKirTRQIc4uhG
zol>6ei@QDuU+qo2|IayIe81hhAe9m;`cOpS#*nw()IIOq(=*(HlYfepI(RU)(%UXh
zS@;;6GvT%5j{5b<kL#G5Ua)c?4p+nI_z0SV_XlhD#Hx_6wlnvO=3(ca{N_U?_7`A9
zdTcXxyHy@J%UFhf4x1BFug~E@h8E0#Lbu-YtJ};*iH1`tG7rmF1#-c}t&nS?o22~p
z3u?t7ReiLljh9Xq(k+ycx5c2Q?>?^Y9wcIu`A5~N%ATN(Xs*p!)_+0uduR};F@J6>
z?LipY_VO(nz~1-i*$*xC(ZGU(G!1`6q1yL>l>dfohZEWJ1l-s1Ku>j5uwx0a`O1}b
zQr0b%<ax)!b|?I=2|ymXZ70#_!~<biOuUtw#|-e5{6a*ZSde*-?zei473E=@v+TCg
zcR`*w5qU?Km5gPWFGHvmz*gISZ<{;UKrKr7sNC9H0-~l(^^5B+zWYg>WPRmZ@o29o
zB`<_Fe>>ehF=_J3%`2j3zq9R(my@~J`*_ZZEaG19z`PlK=a)aA<-_<x_>e$4*}hs}
zH`7=8Gs^D~F64m`H&}tS5%k~S&ZR+ziNry&ggs)j`-h8S8}Bme`dpitYs|ftzWDQf
z!KY%F?0z>c3$~lY!C+MXM5qW>$7KFzm;Ybudo2k^LZi#Rpna>LYI%u}2hmhb<0>Um
z?4;wjp3`?S;Y2%s<jD=G17Zli+!?}yYn*nF)bqRr!6&=ogI!#>pmuisVPdg78D(Yc
z_6`mWm$ZzmOrXJ<gydv4G$yz<*i#zkKZ5kZny^2LhU`gM<HaQn!Wo9)`U#QS&v(u0
z4{W$jgrPomtN0VCYTmDau^dFTGD&@S0e~o}R{_1nT%9U1Gm)t;`rI4N-*DTLT?A+;
z>nA;LvLlgJvf#}(6x*45EU0iM*_UukBsWjsHt|vBauCR_ne+bp)_I6E_}`4*3Ge_8
z=QYLj<;XP?;-E+2lH<N#VSt{6J`xjNdwazSCbad}$ep&QJT&IEBIe3ZwG(^s0f-4Q
z{b_E^gH;^Y3_40TbML}7?Q}bm4ke5}Qqrw$j|Rzh3&qLmR#OD$2YfOWrsrI0tD`=E
zsBi2(DbJ1wiGey6%Q=%b6nZKBCJ1NkOif7Ry(YV`PlF->>e=@|$|?g348Yo3bswOc
zf?-N!5?NDCy#u?T`qzKr%s-rsK1;v?=gUi*g5Fz#RTCwAh<c@z!P2(8>e~8b|2~8m
zH}(?82ypH}C>p>;|Jmt}_djrzS@DWn%|RL1c#2R2;-9#x;HR&}C^f3h;2e0&?*s*b
z|1E@tC2xZ(lP3NKE2te)keHI^7byCu2igFuBrW^saj#3kQ#k!TEbOC)#17bkGO_e!
zKPEAd=zA`=B&h)UhJD5yFNOFI9u^8#3)FW}IWljDIfn>%`bayGYr`;sAr?XPf2w`b
zN~EExS4~c=1peVpA6xqJLlk&ZA+XvkVY53dac5&nw}Sc2R3s<6^clDQmou`B-Tss`
z%pxu^X9^?|%CpV-g9j6%0lY=DKiKSdFoa%kFeoz;88vT@O0n4c#us=8W?#|2h>jhE
zNnmU^i!wosD~JbROPzb6<+F`e7O#;d!g_%l0$(UB_y?H!64K;36KXWzX@3F^k<dny
z0VM9z;sLOv77G9@bnwl@`28?ck4%1w>=*M&y*t}-WzLI^Qb4abEcIC{Dmi>e9(v<<
zE>OC4e%zKiT=;6Z(8+o?M^v#OzEFTd*|7kk%2bSbZ1RjFuCJb{O<t_~0t6|zMZc`M
znckI^GUh{Gq*@W*j2HI;V_Q}$zF*<%S@1G;ny{0^#L_8Xe%fw+<>PuugbEl^8<Ucu
z%ZI2OEoIj;GB&)%Yeqd}NAFLUeg3aKQcIh6L$1xAC<Y9&-<crBS>W>3#yn#D;TRkd
z%dyuy5vtI#!yL<6Lxoy*IfFR?9nV3e{x_HMeZ?Yi(;nv@)K_G<N~vJ9`LhKjiHps5
zZJYbax+;}Lm6aF(ROY8ZOw5JS6|MnisU<IbJOHPR2oJzaejo_sB8z8G!1xq-{|XR=
zN<}3+3YwkSaLc}vZ-8u(dppqAhS;_@^~_`<Zlbv<Y8WKG7{p)S_G2-1sS45YyA2c=
z(VTsQBaOBjs(FwmAhpxNdPpkEgZG2!K*CGl1Cv4Om!tD_jbQg>L4dq|6A5+!Z9mqw
zCVt;f1$_2sOz4=6Phu>foKW$T2_PzsTx%}kM99#Wx{T<%@+Y{#Cz9y4Bd3ha`$&(*
zCpD_V=A7xDO%ZGPf8!{3j>c-r3x&;etENkqWM@$Z)AjPKszk!br7AB&yk#S9c;iQ!
zCdLMA)HyJuX5#%E11I&qy8`S7cg=DnF?Pc4a*G<bC9k@ai)f|mr0u~+MGMc#=rYcV
zUm~0dib>B?2AtXKMdCVsQsEzD!%-eV$uA95gt&f$Qo82QL&7su5ADX*n9zI_ocz1C
zJ<uBN3&`P`S-cceSrTG$1b$c!wh!4cfG8F=0`1#j`+b(g=F2d?Tl>pFFDJL7;e05d
zr*k#{>6dnbE=$-dzvwD(J0~0rm$w*iHwBfHOb<XnA2hQhfp#^XJ2@#0*DhJIVA54O
zuKrwwQ59n~Gt&h@;OXTrR+aUBDcnMFGn)ppqUjvnS@)=3``+jc$!aO*oXQ8N<zkt(
zkS|ou)71k1Ka*pun04Zixr=ksmg3nfWR)`-oCezkMkXER#lv!y%kQZuHFhXs8@j@U
zHoc9$Y<)O$B>L8O)L}1u_gk<0{T_OB=(2h804$blmP)xwxWUL{)~ebj#xZX=kT=5;
zER@|BD|^86Y<O`v%m0sK@)_w1fkR=_cKLd<8i6b&Cxx#FbIPooOobBR2GSS8wJD0=
zcSF;#V5Jr9Y;yCbaoW}b$ypw+87&w|phI9~Fhsx;?UcpsjQv8*XZH_*BvwQCO1J#N
zP?MZwK1Hm{Z!gc7#NQzVX3BvLsNLB_*q2@XA}d{Nmy4z88Ti8bTn_DXp9QbuU}mP6
z^gRK@xcvixrx_R&-L}RJsu>*+;}O#Fjgt=m{V^f-jeunSjPajAp0EVZz?zsMyaU__
z91|<%Wtc&fS-hG3FmFrVMOk+W9ysj`%2aihfFBME6lSz1JHq&Yq%nWBGNV)uw`rP?
zB*$^U0Zev?dV`MO$7v~;zgpF^BMN1&PxVvpZ`z9%MmkKQ2f+X|?Q<F};|r?qhfI!z
z+87&X2ArC&_0Z}uw^J00mXRc2to5?A`)2d63(xo|a{P}rp_RWxvOFK;3m!D_ixGO&
z;|pdw>*&OAJk4xz(|s28^7p*P0%#3$-HE>0hqI*nA9CIWP~QXdi#c1Egmt3@Aes8w
zei(|p>godK)$SRYw56fDe?+k+4n}9KvFTt<Cd-th86;u5l2Iie<i_QfznX!*{9wkz
zU<MIdw7#M(ZNGpHWBx^M<Q%Uv%m!+1<0=mcdk{3qOplPO+k?)@x<Jw1YZta`i*}%z
zl^A&psx$^TrY$c8cwfFV!)bxWIkW-s`OgwnEXFny>?InvgUALmIlvvwHs4I-_gf@x
zAMCGb<np6VPcvBGYI{cS>g-Wm@IbFnTznRWVc`7>j~Ixp3g*U4&H}12I;DlPaedav
z7PqH}4ZPEI#BusW*J-jb1Rhn8L`6eb36Ta?hQ;7$<n$brwpX<sKMS{vuupumpKjK(
zgVjxemx5=v_yl)yF)Laqi;8lDI0l4A!aR53*Dmn$BEie9ia6?asiPO;yZhiPHF-RV
zYPg{t$dl6F8RoD3(PSVq2&EOtcjaFe4je`2F#AjhnH)ve7hfU4=TN4g3Za5-t}n?4
zZ~X8TdEslhoL+rJi3g-?fD~Q|QVC%nb)`ftaMK99&xRMc`cXLMr&F+#g=$8wqotm;
z@<PEwG-37$RcYef$;vv0(C_<I0l#a8JH3^^7x^o{D;YL-pg41h<m&in63SfDMrCLL
z)QheP_zaUB`-8}Z+i73kygB+YA|t!`rFBl32>GvdL^NsheX`Ln_9PE4WX0970Rgdm
z(~CAlll?~64fIl1-`{5)c^KN;#0z5YFua#0!(EI^G-?W<Z|OM4_*bjo%^s+!UPhRl
zuPHn4evFk=9{0wJUL`k@FA<jPtn;hX66lpYMgNLX9V3z7b{BybH&Fh7V|dg%2!2le
zqn3^T&j0}o$NqBbu}^gBu(z=C6p@*e>M{n25n{&077u6s$pnk%0W~5M%w-o|{TTW-
z|G?ft2n}k;65&668bmpA?-(9-FQ^&pL@7r1C3cXaWbrn|&&3=8nHFS<{wWW5#X}K{
z-}mg4J4-@Uno<K{s->xl{!NErkRV8A*t5iiW;s4d@!5pz<$Zq>MoxZOg5fu3ls;o$
zbxFWdg9?UD7V!!j@e~|d!O!18%r9SWE_uxmymI%GmFZd$>-O?Z!W|ZTK28<~#7wRd
zf*zmzl#MQb$tKHQDjGEk=+S#dB+}z3^a}SW(hMYM$*X`dIjM`DIG>a?AX2`+Ghk>)
zSrE7=XQ5HQy)PJV#x|6~;n}lwt8p|@dnyrFN!(hul)C<M7(l0^Fe~Oi0}FnQU2QzH
zi;6jXSi-JNAwQkziDLTM2v89~cnxgHe#~nOPELp_dCTA&MZY8BW%37!J4@o8^0LC2
z6<KjK{`Vlube!5xb}sQ$^oNACo%yUxA1d+k);X0l2Oa!qzpR|7?@Q1)uc>eo>%m?7
zQJ`J&SDyv)Q=}wgD~TOnzo18Q94s?;j7kwTPS9Q_=wR`sDVPV%yR?_p;_j4+wBGkO
zW6;_u7}9mi3CogbIG!PwjN<mh2DQAK!M@^@Be<xl;~Rv|b6uCK)xmV5Bz>>Ng9GxP
zMP|g>$=U9iG87Dc6VwD>jj*6(D2&_+?htI3bI!(<z#=Zrc}Fn$VI`661?NQNtb8ty
zf3>??gNb+T(F^-aTJ8ZRjA)z|BS<EbINQRu=qU@2!zd>I0uqUqYlrqCy6tTm876?U
z)?>Ym74;*&SN=1&5b+Tg74Lm&zffB<a`nIGHov2)P;qz5o?Y{ihEwCsG7SD^x0GK+
zV)uSBnO(gQAPhSd{MXns+R}keRpHq>d#LuNzf`1WcFqDXpa1y*PqeQ=Ujrd_BWe{S
z*Y=DB<?@rta?O5H`@VHo>@ZoRJ0g9-^ad3k{UXc?IK9w%B2)OW*nhYQn4+qq%Ek1$
zm9-fKl<RZvUb<8vH)(9mnhnB$*$Aq4ANv*7)b+Of=2tK<f1Q+n?=yS58tUKBhq(*=
zyp%4Ktyq4go<8S9dr48+-qMaPR**Gc&;YKT=Z}X3;`ug|VfyH`Fta`?7KvE!&Zh4$
z{?^J8tS5+5{6OcM4I73c(`XY4#j|~enl0}lQhXZHg=n}x<I^56#*bZ)Z_3?1*9|U$
z)XT+V!?3pdJzoM)1LZu($h;sF0DCrH%#C?i8(|h&t|fyP#W$ZMPTh2mGP1!-!j5Uy
z?-T<N1X(lgG)-qe48xf?!<VK`b2p~E>wzBNUD=f}yVcg14Uix67d_~NP(IGTfZ2UW
z9;g1{VU|8bOaGBl<8X3x^n+g**==N`i`Dyg$J9xHP8?Q6CM8vO3_$&E(diiU84H#z
z@7J~37B-p(PA~s#jMTbBOh7CC=%AflD8T!y{ks3_i~`-P1P2#xr7JnUW8&h5QtxCh
z#>SExl8tAgAz#Y;*(Ecm$B%EIAQ4ky0~FuW{<41$I?uNnRUOP}PnPY^o-W#iwdC5@
zgYV%vc}xc6z_Kmm#8vW51IT-eSJ~kV{9T6Gvq|#8za=LA?g;#RTcH?3M43{g;hR3S
z+cVX%9@yYMD<J#)b%&uSU~NhUIj3*<Br1|Ek4bFu&u{VO6OC!#sSb<yIlhHY^iFz5
zCu4J=wPJ;*N2)_4@ZnCvzVWBgo6zCTHWM;6FoR?Wf#WJl`M;bbjIH$5zUGy!pT+&O
zsHV!m50{*O$Ruy)uRk2BAbS#SUEOJyU6<%^WTODE`DIk8JM2QGN%2#R7Gu|RSC>a~
z+cKo4&7Mudg7=Th{!O~CZ-cb|*+~P~uXb3`y%bGLGHqFF{W9ro0;VknNzGfkUbuzx
zIr~iKbEB%GcllgT!V5qU3LBoQgU}F>kNX}n?~mVj7I@&%KL<-PLMVhyMc05B*Pl%o
zpddyxy<vx}kO0TR@=<DE+7&A05n}aA5z)+5E6~qNq$-x9f@ZEr9S_dLb5>=Z<rZwE
zS0r$L%EV$$X~{C|2!1zvVUb!nv>;9{DLH;|to3zhGkGQcX9qsGewO*GW^j#ac?-Q)
za3dHxfjZe`7@()$?u%4sVCTf=>A*iS2Lx4HZ;-A$zOS3wg*U~sWGifJp`gU+8KFLW
zzl(S`dS!P>V}$1!LrierIhRT(?xfa%AiRQtH3^d0Yj5kN8!0YijVgC;<<~bI8z_`x
z-S%Fmuz?sMnH(MDxK9og^Yfvgb?(o5$Id~C<gRV~b|si3Koz}QLw=&@td1ctbQ~qt
zBGMQ6F7d;WA+})RHZ)ES%NEW5LoS5~7LZlfi5H&RX41D=ML9y+72{77fIzgFtdjys
zBZ0rI1O<G6jCdP0gv=E58equO&6N^UP-Tqn0mQg40MW8xvMm-S2xmd^RO3<4V&N%T
z@Dc;(kSEiLzbgruq1i9kdp>#fGW#dIW6I>CxbYGf^l=o$!KBv&=MTjM_lp{ARK6Xp
zi4o|uf)0Y$EgpI%9GROEk^JhdCe`lvs*@eeAb0$}aIVXrKWJf!wi55;){H0OV(Su-
z_lwW6UtokaX9xGm{Lt`Q@$-_q6lY+iD%IsA`vE)J8`_XfQY4SD@X7G6nobC6Er>Jr
z8h{Zm=Y~|Hp%%0op&yYCt%$*pU?{CoXHIkgwIq!8c!(ckwsLBiX)S!!;ec%JdpH3A
z))bi=1&z11iUs(9++*;QBvajQ&P`_S1)Ef$Ay!<5!5BDc>8r>dvQ4N84t;5(i`A-v
zB<Z0ZnY4BS6V{7#`6NfY%!goH00Q(uK0J~5GBSc{_BR`glwiVrH2SlCRL?03J14gU
z<aqt3pY7Z|jh-|H{^kz>^4GKz#0^2sxGg#e8bLyN)op#~yZE_>2D+#jawwE6(Vr|d
z{Hw|#Gc9Xl+<d&oJlW^$)pEf&TW;BJ$Z7`oA4Abs?yf~<_B!FqkuwtEnJD)pVUB)q
zDCB43R4t{OP!nk}*jd1!T$g0h^fz2*0fZ0bkM#ajj3fTwCjN<prD6B=8<e+^8Z%U?
z61KHC6ydaQa#jdoE>{U(Utn?0ava!K@>{wPzHttq#2dyNaBbdDRv~=|?I7vS{iyiN
z15cBJ=eu#$5ZgG)v-4~1$Fy-`TIEjClHQbVPBUt61e=n!>l8vL&|6I#z#LD;wD#gu
zR`Yr;42<R?zBPQ0$)d2|dhfa?VTl<Ki-z)`P($CZ4rHincg;qZgq5SYZbefq`J#?7
zlOj{U^sRf^upl?93XjjtCy%#nRMB<_D{5D1kuOq&6tlKtpUpasr(BXobd;b?Z<Egf
z2e~FiK6QZCcmvP|=tgMwy1h!;&}D`Yjm)H7VH5w*G}}|$NcxFndTVVxviJav!D-Xu
zQ8b(Z<i_4eKm)*Lr5^HCJE3p6fX-i*pBST$d?&AJnUXz0Z}<%{Wi+Z<=lSJY!+>fF
zs>AhrY+8z+ImJF#?Z-8@WHYMin|yyS0G8?<4lqC2d^TgoX`jA`v7~4YN+>>>n`01o
z&zE(!;w52J*}L|lb@9RTDFL;Lt!4zx!L3H^eJ&jHiOp{K&Rep$(`mD$z4r+|om1m-
zJPgmN2@*cZ%wIJnmoAnsJaK<w1!i9uhP8zy6>}zi;U+M+3F`Y}_d9nCxcWnim!Enw
zw7lrkGoq4V*q|}X$L5fk1lM!+JJS#6SMxKfL)CE>Rg2@$fwGd{REWGDTr|L_(IWft
zsMhPj!Q1%t?+yfAGG_7oxEfD@jHSX~9YiQ}4r3OL51d}yLPsy#?S8kd$ll5l17B@%
z{N7BSzmExV{V?QHepZC;tI{SH-})Vg)LsZ~`!DghI!aN{UPS%MyvF8uS}$V=Gm<5L
zw$3@eb&^fX0KJYkW-;_#G|Wq4d{im&*v3|+(qw^d#i}oj3uF3b4=%a+AwV?)h$Ysu
zv4o+A(||VJ#iRolLD*wBKIYTcoFTT-_>Oq^?06{iknY}=2+XY=jPGx0elgJ2wE{E)
zqj1J62V|8*kPWs-a|T>%JGRQJgPi3soW@t>Xfs9%N8n19Wz<#y4QKp`6Xi&beAY2O
ze$mYnt^`=pCz**;eLKXvZ;yixOS+D=mX2LjIGt0+OQm70_bg;WcSlF(6*GVH%G62F
zKjgMpDrN9R6$sV~qhxU0>TrD_s6HJxRd2?db+ISJ>J*^#`?K89kCDs%3b$UZR0#P7
zT@3s3GjQ~B2X`&zG4$mUuR72&s-^Et&gHCyPOJdmC{~gEi-fdb*$ZxFa-qNrvRM;d
zO&Epx*!t##-&OEM0CdaZCs{#n7XjllHE=E!>-hECHoikEKK0luNanaeGyV(=Znz18
zaekni!ghr2Kac==jJ9_W^ycYRD0r2bTda5Yw#cdkacfw8*-&4`u|V?AJCW0<0%<xM
z<zq*6agZYhw>AgOPwUO18C>>Fz$jd@VXG=~vrMhSJk`5KZ;m2e8iRxu2DWsDq6%A2
zg#j9THZoLa2Gyi{2qL4ZL%Tj~AG6uw@VdG?Dxpn8ESz&+1fUQx6zr1JW#<SzN($|W
zfLOSZwP1Q8w5|07;rqGtkW7hwmqjV7y1{@T>4fOCt(!Y<)MhUpwWfcYG}!Q>088ZA
zR_3j&Gt~^Iy>T7^nI{6$jb?{1E}>>`R5^hdw;hFuLP_*NX+2)~(}N#{s!aqa-gja_
zXNoflm9iYxG!)ZG_^=`po4nsVr&o4vQ*@rmF{Mm20Xe}Q*l4T1)k7al2FjgK`+QgY
zxr-({`?<3#cbtS=Z=0V9C7^}jqrA;06Ee&?Ox3{xrz1y~(pY`%#^G4@yf-EwevEL@
z(Sya5g~`SWKAFT>c8MWk4MJMjeMoQH?U&lG8i~C<)jb$}P03eZwk`QI1his`l<AA2
ztg2dZluLVc_wx!d^#vRtxMf!<Mx{|nWdfg^Tzd-ac;T&pPMMMvM2TvZTE^fTUk*s7
z@MKVCKYrSq6LDA#eXx<I0JLq%+1xs}49!|`|M@H608tp`B!d^PDmX(+ELxc-hStEB
zO%Y=QyNqx{2doH@q2tc_rTAePh5#(nGlS&nDF(*Unq_d6>DS#AEE;`K{h02fR`C9z
z{zsz$*j35>{YNHM7sk*vRI>EhtR@}q(+p-s?qU(c8M8jNb&Gh#0u%qh2^#JFVmkXx
z|30g%!+^`*^)zK)nb$jv7V-i{cMCP>n>D^GxPlK5JR8`UW8iRO1t)tB6{c>3TXNuQ
zg(apJ14Pw{zw30>4XCnn$Px@l@Lwb<U~CZjG~D&z&uSUHYLSs6Yr{pgb`B6~@r)r3
z0~?9gN)vo+l1t^x60Yxjcn4r@O0__u+Wna>3yv;Uq=e4MKpx9Gn;2jzdKv|7G@J0v
z#^onfRy7_$h@8w)IqOrnyre`c;pkw^x-1Tk63qX9P%qYXsA)|LPDW0)G{2ub82H35
zQt-c!Dy2k^g@@|uYJmcrA{HCx31)rzAvbH+VOyoEOs!_S29v_d+9)CJK@VkG;mRcg
zIjbmcNq+<F7VNLh$0_A*cFktC&J&7xZ+k;sxu2PUvdf6yWp4X18a2@n3+|VXait^N
zHtA>G`e%Iw5a7K3VZ#jLDc2g>p24;hW#4&)Mp@7v0s}l)iAza=`YI<BvGPEU{|Br?
zC>M=W{^N>Rx~;%kT1d8KZfw7$9fGUIMAv0&5Doh=@0Mo#G`A<wQ^UjQ05(5&kNVAZ
zHs*A8ZN&ag+%Gg_-JFH$a(sx}^jG=aSF}9W{6{N2PZ~{23)3^wPbMTa_gj}&vl(h0
zN}shHBj;%maQUNvX6PRoR;M7ROBa{w{y(#fy_J^c@_HgDfHvisP6wt@`j+S)HV=h_
zmfHTz*8HBom}9o<3-@3Dt`Jo*<N`e`joNhhN=pMqhJ@uZ>K`9&jtMV1`MhLP(%M_s
zT0U6Y^d{^(f2{4<N*%*l9ZrBN%qAr<+zXsnM!pP-oGtgV8KWE#*nfX{+*97IKusNI
zM5GPVtFybj-kE<{AsK`g^mwcG{dTtXKUn+ew|lEpE|=)Nhdb*w#~T?ckpPBC-&4W;
zc?Vrp<@L2PoxX5arnt=EB5iG_M->iMbbx=hD&1Y6D7);1B#Kt^`ukmUR<kqaKj`;u
z@x86A+xj*NcpsFxA_+;&{&SH(?TUP?2`Bm&cCN)W6;x9rvQ8&moj;EFK!?}?^3&I8
z|B&N<ECBmU`XmT?yxmEfSBdkkq=?bGQ0X#zOsEizZp4YeNqiEtbwVWBQ%SX`)Y+P9
zjQ8wkdM>hR)A#7+SN_$>{AcG1&L;rW@!&TO!#kKt=EDuzt>UiE_6UQLcSa!c1_s;y
z-O3f4h-oK*+j>r}g;ZdGwB#0L{p~LTRDw~acN1DPbeK^sZ${&4BbY;+_IFRCiqxQ}
zvXic?5m&}E9NX?9k>_8hz;<Eku&Aq=ig864_r{R`6<iTq>2Sj#sc?37F7j+Mml|R&
zvF|eLA>9M4A3p6mxVrM7X6q2B(S)ekyBE)fK0i?iQ7hj%!r6Ni4mndYUhOrJ6eLoS
z^NLa=Cms~urBa`PDI+;zGKULm{ES=5YIhR8j~}t=)2II0J3#qWya0X4@2co#qA1A2
z*{!Njd&fjLUEnfy_rAEM2E{*F?$VKL3YgYD%+X>;adBRDmb3DJJ}bV~?!?-#Sg+d?
zOGLs@Ks$5$>bO9@Y4Aj=vtH1)^v_}HuX~~(6a!}qH_~>s4kDWz|LrYGdn7{big~#Q
z{@s6@v^Zs~;Cm5D0KoixynMNf{QT?wJ=rb7J6sfnp}H$ZCZev?vU=Aml<FUU?EN+R
zo9SDcyVZqDoBwL=tjjhdj{6rQhm2U*nVDE<wWi7EE_yWzU8rw#+Ng<lB=EBXDO)<O
zS()ufiHYeGf7HprP|MBdY&=(7EmrZ^HoXW4Hx>M*!>D5D&b%S~N$@W6A>P^;qM#qh
zKq3{;J2pb8kT;2QEk5VUR{6Pe+-@#7?EYJL*2Q<BEG<=cs~drv<bs&FbZv%Iu4~T~
z8S4ky_Sp_hEe|%Kkc**T94o3Vl+D(!!;XJ?{4<aykr`%5CQQp(hIk*MuGrFQPk=;R
zUyXII{dfsB3P<QVv8X=94uT?K4W5hG+Fj_4)^}NaWE3cBf`2yFFAEtugMtW3uBS3{
z;pQ~E^)I*kB|f|1ab~L)=uHV;54Uzw;Ii?9(3o=7#Zdg8Qow(+{{F`U{~y-RRpbJt
WrK%3Bb`wQd1UysGR<2dFf&DL}ERW*=

diff --git a/src/server_main/test/yaw_plot.png b/src/server_main/test/yaw_plot.png
deleted file mode 100644
index a76bdef49199af515194d6cebb1c677ed970c9e4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 127467
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
G`}}VduTnh#

-- 
GitLab


From 329e21c290a08d0a94145343145ffb75bdcc0e03 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Tue, 11 Jul 2023 13:50:54 +0300
Subject: [PATCH 13/23] deleted spaces

---
 src/server_main/server_main/server_node.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index e85931c..a69f1fa 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -296,7 +296,7 @@ class ServerNode(Node):
     def send_command_to_robots(self):
         #self.update_ball_pose()
         self.get_camera_to_world_frame()
-        if (self.ball_coordinate_world is not None):            
+        if (self.ball_coordinate_world is not None):       
             ball_msg = PointStamped()
             ball_msg.header.stamp = self.get_clock().now().to_msg()
             ball_msg.header.frame_id = "world"
-- 
GitLab


From 1dc98f2797a9302020ff8c5976c3368f180acca0 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Tue, 11 Jul 2023 13:58:06 +0300
Subject: [PATCH 14/23] deleted spaces 2

---
 src/server_main/server_main/server_node.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index a69f1fa..f13cfba 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -296,7 +296,7 @@ class ServerNode(Node):
     def send_command_to_robots(self):
         #self.update_ball_pose()
         self.get_camera_to_world_frame()
-        if (self.ball_coordinate_world is not None):       
+        if (self.ball_coordinate_world is not None):   
             ball_msg = PointStamped()
             ball_msg.header.stamp = self.get_clock().now().to_msg()
             ball_msg.header.frame_id = "world"
-- 
GitLab


From d9f1a550375e57f9c3ffd875f77232b58243e923 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Tue, 11 Jul 2023 13:58:55 +0300
Subject: [PATCH 15/23] deleted spaces 3

---
 src/server_main/server_main/server_node.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index f13cfba..6afaac5 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -296,7 +296,7 @@ class ServerNode(Node):
     def send_command_to_robots(self):
         #self.update_ball_pose()
         self.get_camera_to_world_frame()
-        if (self.ball_coordinate_world is not None):   
+        if (self.ball_coordinate_world is not None): 
             ball_msg = PointStamped()
             ball_msg.header.stamp = self.get_clock().now().to_msg()
             ball_msg.header.frame_id = "world"
-- 
GitLab


From 1b08bac263dd30e3993253f5a04bc33bef81b7bd Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Tue, 11 Jul 2023 13:59:32 +0300
Subject: [PATCH 16/23] deleted spaces 4

---
 src/server_main/server_main/server_node.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index 6afaac5..5ebf2fa 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -296,7 +296,7 @@ class ServerNode(Node):
     def send_command_to_robots(self):
         #self.update_ball_pose()
         self.get_camera_to_world_frame()
-        if (self.ball_coordinate_world is not None): 
+        if (self.ball_coordinate_world is not None):
             ball_msg = PointStamped()
             ball_msg.header.stamp = self.get_clock().now().to_msg()
             ball_msg.header.frame_id = "world"
-- 
GitLab


From c3fecf127f8bde3aba58fa562e66cd2696b6d0fb Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Tue, 11 Jul 2023 19:54:08 +0300
Subject: [PATCH 17/23] new logger

---
 src/server_main/test/logger.py           | 8 ++++++--
 src/server_main/test/mqtt_kondo_dummy.py | 8 +++++---
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/server_main/test/logger.py b/src/server_main/test/logger.py
index 59108a6..f72b9a3 100644
--- a/src/server_main/test/logger.py
+++ b/src/server_main/test/logger.py
@@ -35,9 +35,13 @@ class Logger:
               title='Robot\'s Yaw')
         # fig.suptitle('Yaw')
         # ax.set_title('RobotYaw', loc='left', fontsize='large')
-        self.ax.plot(self.yaw_log)
+        # self.ax.plot(self.yaw_log)
         # plt.savefig(self.plot_name)
     
     def update_plot_yaw(self):
-        pass
+        plt.ion()
+        plt.show()
+        self.ax.plot(self.yaw_log)
+        plt.pause(0.5)
+
         
\ No newline at end of file
diff --git a/src/server_main/test/mqtt_kondo_dummy.py b/src/server_main/test/mqtt_kondo_dummy.py
index 1ffc37d..9e7fce6 100644
--- a/src/server_main/test/mqtt_kondo_dummy.py
+++ b/src/server_main/test/mqtt_kondo_dummy.py
@@ -30,6 +30,7 @@ class MqttKondoDummy(Node):
         self.init_mqqt()
         self.timer = self.create_timer(0.001, self.forward_main_cycle)
         self.logger = Logger()
+        self.logger.init_plot_yaw()
 
     def on_connect(mqttc, obj, flags, rc):
         pass
@@ -90,9 +91,10 @@ class MqttKondoDummy(Node):
                 marker.pose.position.x = self.pf_coord[0]
                 marker.pose.position.y = self.pf_coord[1]
                 quaternion = tf_transformations.quaternion_about_axis(self.pf_coord[2], (0,0,1))
-                self.logger.log_yaw(self.pf_coord[2])
-                if True:
-                     self.logger.plot_yaw()
+
+                self.logger.log_yaw(self.pf_coord[2])                
+                self.logger.update_plot_yaw()
+
                 marker.pose.orientation.x = quaternion[0]
                 marker.pose.orientation.y = quaternion[1]
                 marker.pose.orientation.z = quaternion[2]
-- 
GitLab


From ac4d88a4bb55db94b6e0b0e38263a212a6be36a2 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Wed, 12 Jul 2023 10:51:50 +0300
Subject: [PATCH 18/23] fixed merge request

---
 src/server_main/server_main/server_node.py |  5 ++---
 src/server_main/test/mqtt_kondo_dummy.py   | 25 ++++++----------------
 2 files changed, 9 insertions(+), 21 deletions(-)

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index 71cec17..bdd91be 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -64,9 +64,8 @@ class ServerNode(Node):
             )
             self.camera_models[frame] = None
         self.ball_coordinate_world = None
-
-        # self.create_subscription(Pose, "ball", etc get while volodya yola get done  
-        self.timer = self.create_timer(1, self.send_command_to_robots)
+ 
+        self.timer = self.create_timer(0.01, self.send_command_to_robots)
         self.current_aruco_poses = {}# {if: x, y}
         self.current_robot_poses = {}
         self.world_robots_poses = {}
diff --git a/src/server_main/test/mqtt_kondo_dummy.py b/src/server_main/test/mqtt_kondo_dummy.py
index de65058..6a68490 100644
--- a/src/server_main/test/mqtt_kondo_dummy.py
+++ b/src/server_main/test/mqtt_kondo_dummy.py
@@ -18,8 +18,6 @@ import paho.mqtt.client as mqtt
 # https://github.com/eclipse/paho.mqtt.python
 import tf_transformations
 import math 
-
-from logger import Logger
 class MqttKondoDummy(Node):
     def __init__(self):
         super().__init__('MqttKondoDummy')
@@ -29,30 +27,25 @@ class MqttKondoDummy(Node):
         self.init_publisher()
         self.init_mqqt()
         self.timer = self.create_timer(0.001, self.forward_main_cycle)
-        self.logger = Logger()
-        self.logger.init_plot_yaw()
-
+    
     def on_connect(mqttc, obj, flags, rc):
-        pass
-        # print("rc: " + str(rc))
+        print("rc: " + str(rc))
 
     def on_message(self, mqttc, obj, msg):
         print("get msg")
         if (msg.topic == self.ball_topic): 
         # print(msg.topic + " " + str(msg.qos) + " " + str(msg.payload))
             self.ball_coord = [float(i) for i in msg.payload.split(b" ")]
-            # print(self.ball_coord)
+            print(self.ball_coord)
         elif (msg.topic == self.robot_topic):
              self.pf_coord = [float(i) for i in msg.payload.split(b" ")]
              print(self.pf_coord) 
 
     def on_publish(mqttc, obj, mid):
-        pass
-        # print("mid: " + str(mid))
+        print("mid: " + str(mid))
       
     def on_subscribe(mqttc, obj, mid, granted_qos):
-        pass
-        # print("Subscribed: " + str(mid) + " " + str(granted_qos))
+        print("Subscribed: " + str(mid) + " " + str(granted_qos))
 
     def init_mqqt(self):
         self.declare_parameter('mqtt_broker', 'localhost')
@@ -92,10 +85,6 @@ class MqttKondoDummy(Node):
                 marker.pose.position.x = self.pf_coord[0]
                 marker.pose.position.y = self.pf_coord[1]
                 quaternion = tf_transformations.quaternion_about_axis(self.pf_coord[2], (0,0,1))
-
-                self.logger.log_yaw(self.pf_coord[2])                
-                self.logger.update_plot_yaw()
-
                 marker.pose.orientation.x = quaternion[0]
                 marker.pose.orientation.y = quaternion[1]
                 marker.pose.orientation.z = quaternion[2]
@@ -109,7 +98,7 @@ class MqttKondoDummy(Node):
                 marker.color.g = 0.9
                 marker.color.b = 0.2
                 self.robot_pub.publish(marker)
-                # print("robot:", marker) 
+                print("robot:", marker) 
         if (self.ball_coord is not None):
                 marker = Marker()
                 marker.header.frame_id = 'world'
@@ -126,7 +115,7 @@ class MqttKondoDummy(Node):
                 marker.color.g = 0.4
                 marker.color.b = 1.0
                 self.ball_pub.publish(marker)
-                # print("ball " ,marker)
+                print("ball " ,marker)
     def forward_main_cycle(self):
             self.mqttc.loop()
             self.publish_marker()            
-- 
GitLab


From 8fcd43bfdf503c5204829ffc5be7baafd4524d47 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Wed, 12 Jul 2023 10:57:15 +0300
Subject: [PATCH 19/23] fixed merge request 2

---
 src/ros2_aruco                             | 2 +-
 src/server_main/server_main/server_node.py | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/ros2_aruco b/src/ros2_aruco
index 91813cb..8ec6303 160000
--- a/src/ros2_aruco
+++ b/src/ros2_aruco
@@ -1 +1 @@
-Subproject commit 91813cb3d9f899789d03811943c72d30fa7a8774
+Subproject commit 8ec6303acdd0cd5b0def965ac81a9a6ce971fa9a
diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index bdd91be..0d30a0b 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -64,9 +64,9 @@ class ServerNode(Node):
             )
             self.camera_models[frame] = None
         self.ball_coordinate_world = None
- 
+        
         self.timer = self.create_timer(0.01, self.send_command_to_robots)
-        self.current_aruco_poses = {}# {if: x, y}
+        self.current_aruco_poses = {} # {if: x, y}
         self.current_robot_poses = {}
         self.world_robots_poses = {}
         self.init_mqqt()
-- 
GitLab


From ad5ca3b0c3ede145097a6b4aa21c38731e650e0d Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Wed, 12 Jul 2023 10:59:29 +0300
Subject: [PATCH 20/23] fixed merge request 3

---
 src/server_main/server_main/server_node.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index 0d30a0b..2264f4f 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -64,9 +64,9 @@ class ServerNode(Node):
             )
             self.camera_models[frame] = None
         self.ball_coordinate_world = None
-        
+
         self.timer = self.create_timer(0.01, self.send_command_to_robots)
-        self.current_aruco_poses = {} # {if: x, y}
+        self.current_aruco_poses = {}  # {if: x, y}
         self.current_robot_poses = {}
         self.world_robots_poses = {}
         self.init_mqqt()
-- 
GitLab


From 7cf73983bea611ba01787c248decc588ea9f3468 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Wed, 12 Jul 2023 11:01:51 +0300
Subject: [PATCH 21/23] fixed merge request 4

---
 .../test/__pycache__/logger.cpython-310.pyc      | Bin 1352 -> 0 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 src/server_main/test/__pycache__/logger.cpython-310.pyc

diff --git a/src/server_main/test/__pycache__/logger.cpython-310.pyc b/src/server_main/test/__pycache__/logger.cpython-310.pyc
deleted file mode 100644
index d45abc66769eb10faf1f80d144fd66276e4f7ec8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1352
zcmZ8g&2Aev5GJ{Qlq}0i;-F0sBt8@fbdiAeDg*|4$R#j}=2RuYf)Z(UmHkmj%C;8D
zDY^O;3g?(ZUZjt}YfgHFUeXz^q`0NP;mkL~;is9|>hQ2lVEz5@i~JlC@)eES3ovpD
z+x!JW5=nDX&@rQp9*jf9=Fv?o*(VBE09GQy5s{JC;t_$9%S1+!U&AeLwRV<l`>2C`
zd<V2ck99#i@>*|?-PvPzN8~w?_vG<MB9A|?aZA#dq<?<{9LbqWj1rSdmm3LY-8!#I
zJ1|+THb0|%l&hI4<p5zsU36u$>DxYatz1l0-e4=lHjnW_S6nGG*!#A&&1|kPb_Ox9
zj!)~JPc$gRywd)`t&4wmW#!gY_xuaDg7?TiX4+)_E*Yq&u+2{(6d6-V#!OPlK9X@D
z0~x{@LUCg_Bbh)+xQky@vzgLU3RiXub<FiEY|{fVBWsdEb3sB*xW~>MUx~|fkyp0Q
zT!MOD&0GtCv=oJcdWA;i=bwr0LWX~S8U9%nYN)Hq4lgVH)-1$S4UL`-jnWrNr-jJM
zp;g8XArUYdELM)EX;x-7O@BltIBPL&)B334JlJ`sNOreS4`A=fugRR;&^7fFh~(*6
zpXmb#aj{q|px0m?q8VL?e5pL&MjRoU0G|~8;3F^$X7ACuyJfI-{ik~Pcm&%M7=dER
zoMIQQ>1+0$zGrJTXV?ww#C1T)n%x9IGDL!w+(e+qd$I|V<&b4_3<9c}oM$tftD4)a
zP$#d<o4N(;PF`st-_!@cSCh&<H79?F%YNYED?gVmUNvXr$FiTeV3AwL&2oYbGcGX7
zx)AlIFo_Wt3LerOd^Bjv69C|txcYyAxNkaecmlx&Z}cc<jK<$OA=GNutzFbvKgP!5
zkff<=r)g2iWsZ6$P2Vj=-gq<)p1z0T1O-mfErG4kEf7DzHdr7|IOSm{@Myp7?i9k}
zn|U^YSwhXl&8Z(ixQohV0W-$Rg^P?`<;n$1qa4@M--H&0aZFEru3N8q5`HT9sG<D~
ZKNf?t(V?7nqBaa@7k+rQnV0l#_%9GWOBMhC

-- 
GitLab


From 57fe95b0f84bab89a3eb3941391eab2e6b724c6f Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Wed, 12 Jul 2023 13:22:40 +0300
Subject: [PATCH 22/23] added average quaternion

---
 src/server_main/server_main/server_node.py | 50 +++++++++++++++++++---
 1 file changed, 44 insertions(+), 6 deletions(-)

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index 2264f4f..ce68293 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -205,22 +205,60 @@ class ServerNode(Node):
         shifted_pose = self.shift_pose_to_robot_centre(pose, id)
         rotated_pose = self.rotate_pose_to_forward(shifted_pose, id)
         return rotated_pose
+    
+    @staticmethod
+    def quatWAvg(Q, weights):
+        '''
+        Averaging Quaternions.
+
+        Arguments:
+            Q(ndarray): an Mx4 ndarray of quaternions.
+            weights(list): an M elements list, a weight for each quaternion.
+        '''
+
+        # Form the symmetric accumulator matrix
+        A = np.zeros((4, 4))
+        M = Q.shape[0]
+        wSum = 0
+
+        for i in range(M):
+            q = Q[i, :]
+            w_i = weights[i]
+            A += w_i * (np.outer(q, q)) # rank 1 update
+            wSum += w_i
+
+        # scale
+        A /= wSum
+
+        # Get the eigenvector corresponding to largest eigen value
+        return np.linalg.eigh(A)[1][:, -1]
 
     def find_mid_pose(self, poses) -> Pose:
         mid_pose = Pose()
-        # find mid of orientation euler angles
-        for pose in poses:
+        Q_array = np.zeros((4, len(poses)))
+        # find mid of orientation and coordinates
+        for count, pose in enumerate(poses):
             mid_pose.position.x += pose.pose.position.x
             mid_pose.position.y += pose.pose.position.y
             mid_pose.position.z += pose.pose.position.z
-            mid_pose.orientation.x = pose.pose.orientation.x  # [TODO] Find medium
-            mid_pose.orientation.y = pose.pose.orientation.y
-            mid_pose.orientation.z = pose.pose.orientation.z
-            mid_pose.orientation.w = pose.pose.orientation.w
+
+            Q_array[0, count] = pose.pose.orientation.x
+            Q_array[1, count] = pose.pose.orientation.y
+            Q_array[2, count] = pose.pose.orientation.z
+            Q_array[3, count] = pose.pose.orientation.w
 
         mid_pose.position.x /= len(poses)
         mid_pose.position.y /= len(poses)
         mid_pose.position.z /= len(poses)
+
+        mid_quat = self.quatWAvg(Q_array, np.ones(len(poses))) 
+        print('MID_quat')
+        print(mid_quat)
+        mid_pose.orientation.x = mid_quat[0]
+        mid_pose.orientation.y = mid_quat[1]
+        mid_pose.orientation.z = mid_quat[2]
+        mid_pose.orientation.w = mid_quat[3]
+
         return mid_pose
 
     def count_robots_poses(self):
-- 
GitLab


From b8ad19a9465b6648192d68eecd498eb72f7b7266 Mon Sep 17 00:00:00 2001
From: ivan-sh <shargin.ia@phystech.edu>
Date: Wed, 12 Jul 2023 13:55:50 +0300
Subject: [PATCH 23/23] fixed and tested averaging of quaternions

---
 src/server_main/server_main/server_node.py | 16 ++++-------
 src/server_main/test/logger.py             | 18 +++++++-----
 src/server_main/test/test_avg_quat.py      | 32 ++++++++++++++++++++++
 3 files changed, 48 insertions(+), 18 deletions(-)
 create mode 100644 src/server_main/test/test_avg_quat.py

diff --git a/src/server_main/server_main/server_node.py b/src/server_main/server_main/server_node.py
index ce68293..1aeb528 100644
--- a/src/server_main/server_main/server_node.py
+++ b/src/server_main/server_main/server_node.py
@@ -207,7 +207,7 @@ class ServerNode(Node):
         return rotated_pose
     
     @staticmethod
-    def quatWAvg(Q, weights):
+    def quatWAvg(Q):
         '''
         Averaging Quaternions.
 
@@ -218,17 +218,11 @@ class ServerNode(Node):
 
         # Form the symmetric accumulator matrix
         A = np.zeros((4, 4))
-        M = Q.shape[0]
-        wSum = 0
+        M = Q.shape[1]
 
         for i in range(M):
-            q = Q[i, :]
-            w_i = weights[i]
-            A += w_i * (np.outer(q, q)) # rank 1 update
-            wSum += w_i
-
-        # scale
-        A /= wSum
+            q = Q[:, i]
+            A += np.outer(q, q)# rank 1 update
 
         # Get the eigenvector corresponding to largest eigen value
         return np.linalg.eigh(A)[1][:, -1]
@@ -251,7 +245,7 @@ class ServerNode(Node):
         mid_pose.position.y /= len(poses)
         mid_pose.position.z /= len(poses)
 
-        mid_quat = self.quatWAvg(Q_array, np.ones(len(poses))) 
+        mid_quat = self.quatWAvg(Q_array) 
         print('MID_quat')
         print(mid_quat)
         mid_pose.orientation.x = mid_quat[0]
diff --git a/src/server_main/test/logger.py b/src/server_main/test/logger.py
index f72b9a3..58c60f8 100644
--- a/src/server_main/test/logger.py
+++ b/src/server_main/test/logger.py
@@ -6,12 +6,12 @@ import numpy as np
 # import json
 
 plt.style.use('seaborn') # fivethirtyeight is name of style
-plt.rcParams['font.size'] = 100
-plt.rcParams['legend.fontsize'] = 50
-plt.rc('xtick', labelsize=50) 
-plt.rc('ytick', labelsize=50)
-plt.rcParams['axes.labelsize'] = 30
-plt.rcParams['axes.titlesize'] = 50
+plt.rcParams['font.size'] = 10
+plt.rcParams['legend.fontsize'] = 10
+plt.rc('xtick', labelsize=10) 
+plt.rc('ytick', labelsize=10)
+plt.rcParams['axes.labelsize'] = 10
+plt.rcParams['axes.titlesize'] = 10
 
 plt.rcParams['xtick.major.size'] = 5.0
 plt.rcParams['xtick.minor.size'] = 3.0
@@ -31,7 +31,7 @@ class Logger:
     def init_plot_yaw(self):
         self.fig, self.ax = plt.subplots(figsize=(30, 20))
         # ax.tick_params(axis='both', which='major', labelsize=30)
-        self.ax.set(xlabel='time [s]', ylabel='yaw [rad]',
+        self.ax.set(xlabel='step', ylabel='yaw [rad]',
               title='Robot\'s Yaw')
         # fig.suptitle('Yaw')
         # ax.set_title('RobotYaw', loc='left', fontsize='large')
@@ -44,4 +44,8 @@ class Logger:
         self.ax.plot(self.yaw_log)
         plt.pause(0.5)
 
+    def plot_all_and_save_fig(self):
+        self.ax.plot(self.yaw_log)
+        plt.savefig(self.plot_name)
+
         
\ No newline at end of file
diff --git a/src/server_main/test/test_avg_quat.py b/src/server_main/test/test_avg_quat.py
new file mode 100644
index 0000000..564c1e8
--- /dev/null
+++ b/src/server_main/test/test_avg_quat.py
@@ -0,0 +1,32 @@
+import numpy as np
+def quatWAvg(Q):
+    '''
+    Averaging Quaternions.
+
+    Arguments:
+        Q(ndarray): an Mx4 ndarray of quaternions.
+        weights(list): an M elements list, a weight for each quaternion.
+    '''
+
+    # Form the symmetric accumulator matrix
+    A = np.zeros((4, 4))
+    M = Q.shape[1]
+    # wSum = 0
+
+    for i in range(M):
+        q = Q[:, i]
+        # w_i = weights[i]
+        A += np.outer(q, q)# rank 1 update
+        # wSum += w_i
+
+    # scale
+    # A /= wSum
+
+    # Get the eigenvector corresponding to largest eigen value
+    return np.linalg.eigh(A)[1][:, -1]
+
+quat_array = np.array(([[0.707, -0.383],
+                        [0,     0.0],
+                        [0,     0.0],
+                        [0.707, 0.924]]))
+print(quatWAvg(quat_array))
\ No newline at end of file
-- 
GitLab