diff --git a/lecture_04/301_check_connection.py b/lecture_04/301_check_connection.py
index 16de033..1d72602 100644
--- a/lecture_04/301_check_connection.py
+++ b/lecture_04/301_check_connection.py
@@ -1,4 +1,16 @@
from compas_fab.backends import RosClient
+# With context manager
with RosClient("localhost") as client:
print("Connected:", client.is_connected)
+
+# Without context manager
+# client = RosClient("localhost")
+# try:
+# client.run()
+# print("Connected:", client.is_connected)
+# except:
+# pass
+# finally:
+# if client:
+# client.close()
\ No newline at end of file
diff --git a/lecture_04/assignment_03/yinan_xiao/assignment-03.json b/lecture_04/assignment_03/yinan_xiao/assignment-03.json
new file mode 100644
index 0000000..c2bb291
--- /dev/null
+++ b/lecture_04/assignment_03/yinan_xiao/assignment-03.json
@@ -0,0 +1 @@
+[{"dtype": "compas.robots/Configuration", "value": {"joint_values": [0.22543950503505386, 4.1863559323211, -2.128157823532675, -0.48740178185057037, 1.570796326774756, 1.7962358319763632], "joint_types": [0, 0, 0, 0, 0, 0], "joint_names": ["shoulder_pan_joint", "shoulder_lift_joint", "elbow_joint", "wrist_1_joint", "wrist_2_joint", "wrist_3_joint"]}}, {"dtype": "compas.robots/Configuration", "value": {"joint_values": [0.007901970936273085, 4.290723853038192, -2.3657503122829597, -0.3541772138571336, 1.5707963267597995, 1.5786982978775823], "joint_types": [0, 0, 0, 0, 0, 0], "joint_names": ["shoulder_pan_joint", "shoulder_lift_joint", "elbow_joint", "wrist_1_joint", "wrist_2_joint", "wrist_3_joint"]}}, {"dtype": "compas.robots/Configuration", "value": {"joint_values": [-0.2970941910357429, 4.338561100168961, -2.4807640312912613, -0.2870007420300579, 1.5707963267263736, 1.2737021359055665], "joint_types": [0, 0, 0, 0, 0, 0], "joint_names": ["shoulder_pan_joint", "shoulder_lift_joint", "elbow_joint", "wrist_1_joint", "wrist_2_joint", "wrist_3_joint"]}}, {"dtype": "compas.robots/Configuration", "value": {"joint_values": [-0.6727032873282716, 4.328464259426434, -2.455960259902468, -0.3017076727256331, 1.5707963266673475, 0.8980930396130378], "joint_types": [0, 0, 0, 0, 0, 0], "joint_names": ["shoulder_pan_joint", "shoulder_lift_joint", "elbow_joint", "wrist_1_joint", "wrist_2_joint", "wrist_3_joint"]}}, {"dtype": "compas.robots/Configuration", "value": {"joint_values": [-1.0513929203281926, 4.269047884398387, -2.31526837199375, -0.382983185635511, 1.5707963265909162, 0.5194034066131167], "joint_types": [0, 0, 0, 0, 0, 0], "joint_names": ["shoulder_pan_joint", "shoulder_lift_joint", "elbow_joint", "wrist_1_joint", "wrist_2_joint", "wrist_3_joint"]}}, {"dtype": "compas.robots/Configuration", "value": {"joint_values": [-1.39290658673543, 4.17901907748399, -2.111854544969079, -0.4963682057475407, 1.5707963265120748, 0.1778897402058791], "joint_types": [0, 0, 0, 0, 0, 0], "joint_names": ["shoulder_pan_joint", "shoulder_lift_joint", "elbow_joint", "wrist_1_joint", "wrist_2_joint", "wrist_3_joint"]}}, {"dtype": "compas.robots/Configuration", "value": {"joint_values": [-1.6913940944985015, 4.089756158800758, -1.9159369487359978, -0.603022883275098, 1.5707963264423344, -0.12059776755719262], "joint_types": [0, 0, 0, 0, 0, 0], "joint_names": ["shoulder_pan_joint", "shoulder_lift_joint", "elbow_joint", "wrist_1_joint", "wrist_2_joint", "wrist_3_joint"]}}, {"dtype": "compas.robots/Configuration", "value": {"joint_values": [-1.9609183958983738, 4.027180212130509, -1.7804902256945716, -0.6758936596066428, 1.5707963263855653, -0.39012206895706486], "joint_types": [0, 0, 0, 0, 0, 0], "joint_names": ["shoulder_pan_joint", "shoulder_lift_joint", "elbow_joint", "wrist_1_joint", "wrist_2_joint", "wrist_3_joint"]}}, {"dtype": "compas.robots/Configuration", "value": {"joint_values": [-2.2151951568715504, 3.981330059673213, -1.6818990107892384, -0.7286347220026412, 1.5707963263422882, -0.6443988299302414], "joint_types": [0, 0, 0, 0, 0, 0], "joint_names": ["shoulder_pan_joint", "shoulder_lift_joint", "elbow_joint", "wrist_1_joint", "wrist_2_joint", "wrist_3_joint"]}}, {"dtype": "compas.robots/Configuration", "value": {"joint_values": [-2.4614541696957026, 3.9288345995017373, -1.5695136342468192, -0.7885246383126049, 1.5707963263131273, -0.8906578427543934], "joint_types": [0, 0, 0, 0, 0, 0], "joint_names": ["shoulder_pan_joint", "shoulder_lift_joint", "elbow_joint", "wrist_1_joint", "wrist_2_joint", "wrist_3_joint"]}}, {"dtype": "compas.robots/Configuration", "value": {"joint_values": [-2.693397599060551, 3.8507440761369414, -1.4030353104989945, -0.8769124386315136, 1.5707963262995026, -1.1226012721192418], "joint_types": [0, 0, 0, 0, 0, 0], "joint_names": ["shoulder_pan_joint", "shoulder_lift_joint", "elbow_joint", "wrist_1_joint", "wrist_2_joint", "wrist_3_joint"]}}]
\ No newline at end of file
diff --git a/lecture_04/assignment_03/yinan_xiao/assignment_03.py b/lecture_04/assignment_03/yinan_xiao/assignment_03.py
new file mode 100644
index 0000000..71bef9c
--- /dev/null
+++ b/lecture_04/assignment_03/yinan_xiao/assignment_03.py
@@ -0,0 +1,62 @@
+"""Assignment 03: Using inverse kinematics
+"""
+import os
+import compas
+from compas_fab.backends import RosClient
+from compas_fab.robots import Configuration
+
+from compas.geometry import Frame
+from compas.geometry import Point
+from compas.geometry import Vector
+
+
+# Step 1: Inside this function, complete the main part of the solution for the assignment:
+# - Taking a robot and a list of frames as parameter, calculate a feasible configuration for each of the frames
+# - Try to find an optimal start_configuration for each so that the motion from one config to the next is minimized
+def calculate_ik_for_frames(robot, frames):
+ configs = []
+ for i in range(len(frames)):
+ start_configuration = robot.zero_configuration()
+ if not configs:
+ start_configuration.joint_values = (-0.106, 5.351, -2.231, -2.869, 4.712, 1.465)
+ else:
+ start_configuration = configs[i-1]
+ config = robot.inverse_kinematics(frames[i], start_configuration)
+ configs.append(config)
+ return configs
+
+
+# Step 2: store all found configurations in a JSON file using compas.json_dump or compas.json_dumps
+def store_configurations(configurations, filename):
+ compas.json_dump(configurations, filename)
+ pass
+
+# Use the following to test from the command line
+# Or copy solution_viewer.ghx next to the folder where you created assignment_03.py to visualize the same in Grasshopper
+if __name__ == '__main__':
+
+ frames = [
+ Frame(Point(-0.329, 0.059, 0.082), Vector(1.000, 0.000, 0.000), Vector(0.000, -1.000, 0.000)),
+ Frame(Point(-0.260, 0.129, 0.082), Vector(1.000, 0.000, 0.000), Vector(0.000, -1.000, 0.000)),
+ Frame(Point(-0.186, 0.194, 0.082), Vector(1.000, 0.000, 0.000), Vector(0.000, -1.000, 0.000)),
+ Frame(Point(-0.106, 0.252, 0.082), Vector(1.000, 0.000, 0.000), Vector(0.000, -1.000, 0.000)),
+ Frame(Point(-0.020, 0.299, 0.082), Vector(1.000, 0.000, 0.000), Vector(0.000, -1.000, 0.000)),
+ Frame(Point(0.074, 0.329, 0.082), Vector(1.000, 0.000, 0.000), Vector(0.000, -1.000, 0.000)),
+ Frame(Point(0.172, 0.330, 0.082), Vector(1.000, 0.000, 0.000), Vector(0.000, -1.000, 0.000)),
+ Frame(Point(0.263, 0.295, 0.082), Vector(1.000, 0.000, 0.000), Vector(0.000, -1.000, 0.000)),
+ Frame(Point(0.339, 0.233, 0.082), Vector(1.000, 0.000, 0.000), Vector(0.000, -1.000, 0.000)),
+ Frame(Point(0.400, 0.155, 0.082), Vector(1.000, 0.000, 0.000), Vector(0.000, -1.000, 0.000)),
+ Frame(Point(0.448, 0.070, 0.082), Vector(1.000, 0.000, 0.000), Vector(0.000, -1.000, 0.000))]
+
+ # Loads the robot from ROS
+ with RosClient('localhost') as client:
+ robot = client.load_robot()
+
+ # Step 1: calculate IK solutions for each frame
+ configurations = calculate_ik_for_frames(robot, frames)
+ print("Found {} configurations".format(len(configurations)))
+
+ # Step 2: store all configurations in a JSON file
+ filename = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'assignment-03.json')
+ store_configurations(configurations, filename)
+ print("Stored results in {}".format(filename))
\ No newline at end of file
diff --git a/lecture_04/assignment_03/solution_viewer.ghx b/lecture_04/assignment_03/yinan_xiao/solution_viewer.ghx
similarity index 89%
rename from lecture_04/assignment_03/solution_viewer.ghx
rename to lecture_04/assignment_03/yinan_xiao/solution_viewer.ghx
index 984ddf4..e1facb6 100644
--- a/lecture_04/assignment_03/solution_viewer.ghx
+++ b/lecture_04/assignment_03/yinan_xiao/solution_viewer.ghx
@@ -48,10 +48,10 @@
-
- 76
- 184
+ 98
+ 646
- - 0.7676566
+ - 0.9211877
@@ -73,8 +73,8 @@
- - GhPython, Version=7.15.22039.13001, Culture=neutral, PublicKeyToken=null
- - 7.15.22039.13001
+ - GhPython, Version=7.16.22067.13001, Culture=neutral, PublicKeyToken=null
+ - 7.16.22067.13001
- 00000000-0000-0000-0000-000000000000
@@ -102,7 +102,7 @@
- Connect
- false
- 0
- - false
+ - true
@@ -133,14 +133,14 @@
- Load
- false
- 0
- - false
+ - true
-
- 29
- 252
+ 31
+ 250
94
22
@@ -229,9 +229,9 @@ configuration = calculate_ik_for_frames(robot, frames)
-
787
- 233
+ 241
149
- 60
+ 44
-
844
@@ -267,13 +267,13 @@ configuration = calculate_ik_for_frames(robot, frames)
-
789
- 235
+ 243
40
- 28
+ 20
-
810.5
- 249
+ 253
@@ -301,11 +301,11 @@ configuration = calculate_ik_for_frames(robot, frames)
789
263
40
- 28
+ 20
-
810.5
- 277
+ 273
@@ -325,9 +325,9 @@ configuration = calculate_ik_for_frames(robot, frames)
-
859
- 235
+ 243
75
- 56
+ 40
-
896.5
@@ -361,14 +361,14 @@ configuration = calculate_ik_for_frames(robot, frames)
-
- 990
- 251
+ 989
+ 301
64
64
-
- 1024
- 283
+ 1023
+ 333
@@ -397,14 +397,14 @@ configuration = calculate_ik_for_frames(robot, frames)
-
- 992
- 253
+ 991
+ 303
17
20
-
- 1002
- 263
+ 1001
+ 313
@@ -424,14 +424,14 @@ configuration = calculate_ik_for_frames(robot, frames)
-
- 992
- 273
+ 991
+ 323
17
20
-
- 1002
- 283
+ 1001
+ 333
@@ -470,14 +470,14 @@ configuration = calculate_ik_for_frames(robot, frames)
-
- 992
- 293
+ 991
+ 343
17
20
-
- 1002
- 303
+ 1001
+ 353
@@ -517,14 +517,14 @@ configuration = calculate_ik_for_frames(robot, frames)
-
- 1039
- 253
+ 1038
+ 303
13
60
-
- 1045.5
- 283
+ 1044.5
+ 333
@@ -556,13 +556,13 @@ configuration = calculate_ik_for_frames(robot, frames)
-
697
- 338
+ 345
160
20
-
697.8439
- 338.424
+ 345.424
@@ -601,9 +601,9 @@ configuration = calculate_ik_for_frames(robot, frames)
-
688
- 267
+ 265
50
- 20
+ 24
-
713.3483
@@ -869,7 +869,7 @@ COMPAS FAB v0.22.0
- true
- true
-
- iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALDwAACw8BkvkDpQAAAdZJREFUSEu1lD2O4kAQRrkBcwP2BnADfARuABEhcAMcEEyCQKuVCCEkY27A3ADCyUAimQyHm/V+r9bNNp5iSLwtPWF/9dvdZRohhP+KK9aJK9aJK9aJKzpk4k08W4XYiB/CYquJPJbX6zVMp9PQbrcV0XhIt9sN6/VaIVZoQLyXMGVC8piYXwp5jMfj0Gq1zK/f7yvUVsdLGnkRBV0RlHT2/g2WHH+KonmJI4PD4ZA6HwVFPd9IR1hTzWZTj76Tcjay1Wr1QWIKnE6n0Ov17DnhXeSiWnTJbvHZ7/d3BkNrg3E2m/2OBbiH4XCITkLg+YhNnMVtakRuib0CWgMMYlMUxetutzPH8vwZ00f+HB8auznHe6CxagDdnMt3ztPOkunAWYsiPcF3YYxGo19ZloXtdvtT78d4b9yDVpEmf8Eg8qiJt7gLCi0WC9v2IxjV6Mu9aU3SAh2MYhI1wZaPBMcZfwadl8n5oqX8Sya7OZkhgSJoge1Xu04pE/Ot3E4hTUQBmyDB+d7ZBIU4f4INBmE+n3/meR4ul8tS2pe4+5e/91CURRjH7BuYIIYCX/vf8fgqaKYFHxEvz6CZh8nBFUGLQl7nN7y4Kq5YJ65YJ65YJ65YH6HxB7b14P1B22tpAAAAAElFTkSuQmCC
+ iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALDgAACw4BQL7hQQAAAdZJREFUSEu1lD2O4kAQRrkBcwP2BnADfARuABEhcAMcEEyCQKuVCCEkY27A3ADCyUAimQyHm/V+r9bNNp5iSLwtPWF/9dvdZRohhP+KK9aJK9aJK9aJKzpk4k08W4XYiB/CYquJPJbX6zVMp9PQbrcV0XhIt9sN6/VaIVZoQLyXMGVC8piYXwp5jMfj0Gq1zK/f7yvUVsdLGnkRBV0RlHT2/g2WHH+KonmJI4PD4ZA6HwVFPd9IR1hTzWZTj76Tcjay1Wr1QWIKnE6n0Ov17DnhXeSiWnTJbvHZ7/d3BkNrg3E2m/2OBbiH4XCITkLg+YhNnMVtakRuib0CWgMMYlMUxetutzPH8vwZ00f+HB8auznHe6CxagDdnMt3ztPOkunAWYsiPcF3YYxGo19ZloXtdvtT78d4b9yDVpEmf8Eg8qiJt7gLCi0WC9v2IxjV6Mu9aU3SAh2MYhI1wZaPBMcZfwadl8n5oqX8Sya7OZkhgSJoge1Xu04pE/Ot3E4hTUQBmyDB+d7ZBIU4f4INBmE+n3/meR4ul8tS2pe4+5e/91CURRjH7BuYIIYCX/vf8fgqaKYFHxEvz6CZh8nBFUGLQl7nN7y4Kq5YJ65YJ65YJ65YH6HxB7b14P1B22tpAAAAAElFTkSuQmCC
- false
- eccb9686-8536-4332-975d-684efb918cee
@@ -1093,7 +1093,7 @@ COMPAS FAB v0.22.0
- true
- true
-
- iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALDwAACw8BkvkDpQAAAVtJREFUSEu9lMFRwzAQRVMCJaSElJASUgIlUAGTEhguXHPinBJSAiWkBDow/9n6ZmWtQzwYduaNpdVqtf5redN13Z+SOtckdS5B9iCeeKbrmXMJsrNg8CkOzXo1Gao5iYtg4z6uR2SP4iqY+Ans3Y5xk00sTjfsBcmOgbjOmMK2wvs/mgNKQL8o3sRzmb8Iy5BRySLbifHNpwsM3gWHvJY5ByAb44xKRtkoTz+vJkNiBn7CQXAIr29oqNd7OWTIhHxMrmNOD0oQb2EdSYL2VUUlDjlJ5kKQMDa8lahsdEPdNFfUHFLiiYsNJ766D9WG3lHLYy7TOCOjEArLi2gcQ7ATR2bvxC1yZ/7VjI1bQu4cXjt+KeaYxd8idQLJQmLDoelPbY7UaWTxCzGnLHaO1Glkv2546xhubUz2E8i2m+YxreP7Ji9htvmt4x8O4Ffhn9q93C/R2qTO9eg2XxfZxOCoCLXEAAAAAElFTkSuQmCC
+ iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALDgAACw4BQL7hQQAAAVtJREFUSEu9lMFRwzAQRVMCJaSElJASUgIlUAGTEhguXHPinBJSAiWkBDow/9n6ZmWtQzwYduaNpdVqtf5redN13Z+SOtckdS5B9iCeeKbrmXMJsrNg8CkOzXo1Gao5iYtg4z6uR2SP4iqY+Ans3Y5xk00sTjfsBcmOgbjOmMK2wvs/mgNKQL8o3sRzmb8Iy5BRySLbifHNpwsM3gWHvJY5ByAb44xKRtkoTz+vJkNiBn7CQXAIr29oqNd7OWTIhHxMrmNOD0oQb2EdSYL2VUUlDjlJ5kKQMDa8lahsdEPdNFfUHFLiiYsNJ766D9WG3lHLYy7TOCOjEArLi2gcQ7ATR2bvxC1yZ/7VjI1bQu4cXjt+KeaYxd8idQLJQmLDoelPbY7UaWTxCzGnLHaO1Glkv2546xhubUz2E8i2m+YxreP7Ji9htvmt4x8O4Ffhn9q93C/R2qTO9eg2XxfZxOCoCLXEAAAAAElFTkSuQmCC
- false
- ed6dd17e-9615-4209-9f27-8c842a439b86
@@ -1107,9 +1107,9 @@ COMPAS FAB v0.22.0
-
384
- 224
+ 229
124
- 54
+ 44
-
454
@@ -1145,13 +1145,13 @@ COMPAS FAB v0.22.0
-
386
- 226
+ 231
53
- 25
+ 20
-
414
- 238.5
+ 241
@@ -1178,11 +1178,11 @@ COMPAS FAB v0.22.0
386
251
53
- 25
+ 20
-
414
- 263.5
+ 261
@@ -1202,9 +1202,9 @@ COMPAS FAB v0.22.0
-
469
- 226
+ 231
37
- 50
+ 40
-
487.5
@@ -1297,7 +1297,7 @@ COMPAS FAB v0.22.0
- true
- true
-
- iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALDwAACw8BkvkDpQAAAdhJREFUSEu1lLFKA0EQhlUIQVBMOhGLgGAtxAcIYmmRJpWNrZ2dhSCWqURtxC6VRSofIYWlhS8QyBMEOzvP/zt2jtm9VSLEg+9ud2bnn9nZu1spiuJfyRqXSdb4F3ZvX1vigmfOXzP8FQm/iEJ8iH7qjyZUIUZiIgjseb9HvjMxE4jbE4jt2Lo0CGca0BOI3Ti8nzGFdYTFv9cShAWlUzyK6zC/E9aGHFFbND8Q1c5TBwHPgiQPYU4C2uZFPVEbNa/aA9wqg5wIE2RP6AuSsH2DAzV/2Q49aRPtwzYzTW5VBXKwC+sjIvQ+qiiso52IWSG00B941CKfwA7UDs0qqiUJ61nnD5z10ffALe2hb48x8Ws88lEIhWWLqBnC4jQBRIUsStYosdxbUx6croFgAJcWo6st5sE+ruw28EiMbfs3xbjBnxWKEw8quw1SEEvEgaQtCQydWJv1zjb3OpFoisT8G2KMJNINYlBWq8t2NfQakWCKxH48cAlNg+CT8AmPvUYkCArmq82JRmydnJeCa+sbX42dvfsgPk31ogko2L7kX9m+GpcJYLXR/AzjqD0QTUDBCyWA5v5hlSTQTfWiCSiQX4X91H5l8+jUzgHeUi2oGZZN1rg8ipVvhzuVIxcFIsQAAAAASUVORK5CYII=
+ iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALDgAACw4BQL7hQQAAAdhJREFUSEu1lLFKA0EQhlUIQVBMOhGLgGAtxAcIYmmRJpWNrZ2dhSCWqURtxC6VRSofIYWlhS8QyBMEOzvP/zt2jtm9VSLEg+9ud2bnn9nZu1spiuJfyRqXSdb4F3ZvX1vigmfOXzP8FQm/iEJ8iH7qjyZUIUZiIgjseb9HvjMxE4jbE4jt2Lo0CGca0BOI3Ti8nzGFdYTFv9cShAWlUzyK6zC/E9aGHFFbND8Q1c5TBwHPgiQPYU4C2uZFPVEbNa/aA9wqg5wIE2RP6AuSsH2DAzV/2Q49aRPtwzYzTW5VBXKwC+sjIvQ+qiiso52IWSG00B941CKfwA7UDs0qqiUJ61nnD5z10ffALe2hb48x8Ws88lEIhWWLqBnC4jQBRIUsStYosdxbUx6croFgAJcWo6st5sE+ruw28EiMbfs3xbjBnxWKEw8quw1SEEvEgaQtCQydWJv1zjb3OpFoisT8G2KMJNINYlBWq8t2NfQakWCKxH48cAlNg+CT8AmPvUYkCArmq82JRmydnJeCa+sbX42dvfsgPk31ogko2L7kX9m+GpcJYLXR/AzjqD0QTUDBCyWA5v5hlSTQTfWiCSiQX4X91H5l8+jUzgHeUi2oGZZN1rg8ipVvhzuVIxcFIsQAAAAASUVORK5CYII=
- false
- 10a49928-eb17-4269-a1f5-98ee19233fed
@@ -1310,14 +1310,14 @@ COMPAS FAB v0.22.0
-
- 1235
- 231
+ 1218
+ 224
261
204
-
- 1386
- 333
+ 1369
+ 326
@@ -1362,14 +1362,14 @@ COMPAS FAB v0.22.0
-
- 1237
- 233
+ 1220
+ 226
134
20
-
- 1305.5
- 243
+ 1288.5
+ 236
@@ -1392,14 +1392,14 @@ COMPAS FAB v0.22.0
-
- 1237
- 253
+ 1220
+ 246
134
20
-
- 1305.5
- 263
+ 1288.5
+ 256
@@ -1423,14 +1423,14 @@ COMPAS FAB v0.22.0
-
- 1237
- 273
+ 1220
+ 266
134
20
-
- 1305.5
- 283
+ 1288.5
+ 276
@@ -1454,14 +1454,14 @@ COMPAS FAB v0.22.0
-
- 1237
- 293
+ 1220
+ 286
134
20
-
- 1305.5
- 303
+ 1288.5
+ 296
@@ -1484,14 +1484,14 @@ COMPAS FAB v0.22.0
-
- 1237
- 313
+ 1220
+ 306
134
20
-
- 1305.5
- 323
+ 1288.5
+ 316
@@ -1514,14 +1514,14 @@ COMPAS FAB v0.22.0
-
- 1237
- 333
+ 1220
+ 326
134
20
-
- 1305.5
- 343
+ 1288.5
+ 336
@@ -1544,14 +1544,14 @@ COMPAS FAB v0.22.0
-
- 1237
- 353
+ 1220
+ 346
134
20
-
- 1305.5
- 363
+ 1288.5
+ 356
@@ -1574,14 +1574,14 @@ COMPAS FAB v0.22.0
-
- 1237
- 373
+ 1220
+ 366
134
20
-
- 1305.5
- 383
+ 1288.5
+ 376
@@ -1604,14 +1604,14 @@ COMPAS FAB v0.22.0
-
- 1237
- 393
+ 1220
+ 386
134
20
-
- 1305.5
- 403
+ 1288.5
+ 396
@@ -1634,14 +1634,14 @@ COMPAS FAB v0.22.0
-
- 1237
- 413
+ 1220
+ 406
134
20
-
- 1305.5
- 423
+ 1288.5
+ 416
@@ -1660,14 +1660,14 @@ COMPAS FAB v0.22.0
-
- 1401
- 233
+ 1384
+ 226
93
33
-
- 1447.5
- 249.6667
+ 1430.5
+ 242.6667
@@ -1686,14 +1686,14 @@ COMPAS FAB v0.22.0
-
- 1401
- 266
+ 1384
+ 259
93
33
-
- 1447.5
- 283
+ 1430.5
+ 276
@@ -1712,14 +1712,14 @@ COMPAS FAB v0.22.0
-
- 1401
- 299
+ 1384
+ 292
93
34
-
- 1447.5
- 316.3333
+ 1430.5
+ 309.3333
@@ -1738,14 +1738,14 @@ COMPAS FAB v0.22.0
-
- 1401
- 333
+ 1384
+ 326
93
33
-
- 1447.5
- 349.6667
+ 1430.5
+ 342.6667
@@ -1764,14 +1764,14 @@ COMPAS FAB v0.22.0
-
- 1401
- 366
+ 1384
+ 359
93
33
-
- 1447.5
- 383
+ 1430.5
+ 376
@@ -1790,14 +1790,14 @@ COMPAS FAB v0.22.0
-
- 1401
- 399
+ 1384
+ 392
93
34
-
- 1447.5
- 416.3333
+ 1430.5
+ 409.3333
@@ -1816,7 +1816,7 @@ COMPAS FAB v0.22.0
-
- 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
+ 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