From 01a0f2d2f6c537ff35b0ea53c5b3e12c00e4ef77 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Thu, 17 Oct 2024 23:49:04 +0100 Subject: [PATCH 01/33] Add path settings files --- uuv_mission/__init__.py | 3 +++ uuv_mission/dynamic.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/uuv_mission/__init__.py b/uuv_mission/__init__.py index e69de29b..de217609 100644 --- a/uuv_mission/__init__.py +++ b/uuv_mission/__init__.py @@ -0,0 +1,3 @@ +from dynamic import Submarine, Trajectory, Mission, ClosedLoop + +__all__ = ['Submarine', 'Trajectory', 'Mission', 'ClosedLoop'] \ No newline at end of file diff --git a/uuv_mission/dynamic.py b/uuv_mission/dynamic.py index c7c7ad53..aca3dfbf 100644 --- a/uuv_mission/dynamic.py +++ b/uuv_mission/dynamic.py @@ -2,7 +2,7 @@ from dataclasses import dataclass import numpy as np import matplotlib.pyplot as plt -from .terrain import generate_reference_and_limits +from terrain import generate_reference_and_limits class Submarine: def __init__(self): From 66a0254b7a7a2cdf0af67682b4c655dec63eb28a Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Thu, 17 Oct 2024 23:52:31 +0100 Subject: [PATCH 02/33] Add .env --- .env | 1 + 1 file changed, 1 insertion(+) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 00000000..27e60e04 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +PYTHONPATH="C:\Users\cvest\Claudio\Oxford\3rd Year\B1\b1-coding-practical-mt24:${PYTHONPATH}" \ No newline at end of file From a39167ffc1cfe7ce8dd0d0d955c1ab5a5edf8c7c Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Fri, 18 Oct 2024 00:03:20 +0100 Subject: [PATCH 03/33] Modify .env --- .env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env b/.env index 27e60e04..869b797f 100644 --- a/.env +++ b/.env @@ -1 +1 @@ -PYTHONPATH="C:\Users\cvest\Claudio\Oxford\3rd Year\B1\b1-coding-practical-mt24:${PYTHONPATH}" \ No newline at end of file +PYTHONPATH="C:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24:${PYTHONPATH}" \ No newline at end of file From c1d054c54f7932d9faf331a4880cd31e46ef2593 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Fri, 18 Oct 2024 00:03:58 +0100 Subject: [PATCH 04/33] Modify demo.ipynb --- notebooks/demo.ipynb | 70 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 11 deletions(-) diff --git a/notebooks/demo.ipynb b/notebooks/demo.ipynb index aa0c5cee..7f5a6748 100644 --- a/notebooks/demo.ipynb +++ b/notebooks/demo.ipynb @@ -2,22 +2,50 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], "source": [ - "# Add relevant Jupyter notebook extensions " + "# Add relevant Jupyter notebook extensions\n", + "%load_ext autoreload\n", + "%autoreload 2" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "c:\\Users\\cvest\\Claudio\\Oxford\\3rd Year\\B1\\b1-coding-practical-mt24\\notebooks\n", + "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\python311.zip\n", + "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\DLLs\n", + "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\n", + "c:\\Users\\cvest\\anaconda3\\envs\\a2e\n", + "\n", + "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\n", + "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\\win32\n", + "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\\win32\\lib\n", + "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\\Pythonwin\n" + ] + } + ], "source": [ "# You can double-check your Python path like this...\n", - "import sys \n", - "print(sys.path)" + "import sys\n", + "print(\"\\n\".join(sys.path))" ] }, { @@ -30,11 +58,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'uuv_mission'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[6], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Import relevant modules\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01muuv_mission\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Submarine, Trajectory, Mission, ClosedLoop\n\u001b[0;32m 4\u001b[0m sub \u001b[38;5;241m=\u001b[39m Submarine()\n\u001b[0;32m 5\u001b[0m \u001b[38;5;66;03m# Instantiate your controller (depending on your implementation)\u001b[39;00m\n", + "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'uuv_mission'" + ] + } + ], "source": [ "# Import relevant modules\n", + "from uuv_mission import Submarine, Trajectory, Mission, ClosedLoop\n", "\n", "sub = Submarine()\n", "# Instantiate your controller (depending on your implementation)\n", @@ -44,11 +85,18 @@ "trajectory = closed_loop.simulate_with_random_disturbances(mission)\n", "trajectory.plot_completed_mission(mission)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "first-venv", + "display_name": "a2e", "language": "python", "name": "python3" }, @@ -62,7 +110,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.11.4" } }, "nbformat": 4, From 03526bbae12c13a0bda526fc8ec3b38afb20772e Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Fri, 18 Oct 2024 00:08:39 +0100 Subject: [PATCH 05/33] Modify .env --- .env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env b/.env index 869b797f..c9be1272 100644 --- a/.env +++ b/.env @@ -1 +1 @@ -PYTHONPATH="C:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24:${PYTHONPATH}" \ No newline at end of file +PYTHONPATH="C:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24${PYTHONPATH}" \ No newline at end of file From bf8166dd7098e60ea3b7f7b2ebb592303585dc76 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Fri, 18 Oct 2024 00:11:33 +0100 Subject: [PATCH 06/33] Modify __init__.py, dynamic.py imports --- notebooks/demo.ipynb | 25 +++++++++---------------- uuv_mission/__init__.py | 2 +- uuv_mission/dynamic.py | 2 +- 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/notebooks/demo.ipynb b/notebooks/demo.ipynb index 7f5a6748..c0edeaed 100644 --- a/notebooks/demo.ipynb +++ b/notebooks/demo.ipynb @@ -2,18 +2,9 @@ "cells": [ { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The autoreload extension is already loaded. To reload it, use:\n", - " %reload_ext autoreload\n" - ] - } - ], + "outputs": [], "source": [ "# Add relevant Jupyter notebook extensions\n", "%load_ext autoreload\n", @@ -22,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -30,6 +21,7 @@ "output_type": "stream", "text": [ "c:\\Users\\cvest\\Claudio\\Oxford\\3rd Year\\B1\\b1-coding-practical-mt24\\notebooks\n", + "C:\\Users\\cvest\\Claudio\\Oxford\\3rd Year\\B1\\b1-coding-practical-mt24\n", "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\python311.zip\n", "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\DLLs\n", "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\n", @@ -58,18 +50,19 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": {}, "outputs": [ { "ename": "ModuleNotFoundError", - "evalue": "No module named 'uuv_mission'", + "evalue": "No module named 'dynamic'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[6], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Import relevant modules\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01muuv_mission\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Submarine, Trajectory, Mission, ClosedLoop\n\u001b[0;32m 4\u001b[0m sub \u001b[38;5;241m=\u001b[39m Submarine()\n\u001b[0;32m 5\u001b[0m \u001b[38;5;66;03m# Instantiate your controller (depending on your implementation)\u001b[39;00m\n", - "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'uuv_mission'" + "Cell \u001b[1;32mIn[3], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Import relevant modules\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01muuv_mission\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Submarine, Trajectory, Mission, ClosedLoop\n\u001b[0;32m 4\u001b[0m sub \u001b[38;5;241m=\u001b[39m Submarine()\n\u001b[0;32m 5\u001b[0m \u001b[38;5;66;03m# Instantiate your controller (depending on your implementation)\u001b[39;00m\n", + "File \u001b[1;32m~\\Claudio\\Oxford\\3rd Year\\B1\\b1-coding-practical-mt24\\uuv_mission\\__init__.py:1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdynamic\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Submarine, Trajectory, Mission, ClosedLoop\n\u001b[0;32m 3\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSubmarine\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mTrajectory\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mMission\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mClosedLoop\u001b[39m\u001b[38;5;124m'\u001b[39m]\n", + "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'dynamic'" ] } ], diff --git a/uuv_mission/__init__.py b/uuv_mission/__init__.py index de217609..b551b473 100644 --- a/uuv_mission/__init__.py +++ b/uuv_mission/__init__.py @@ -1,3 +1,3 @@ -from dynamic import Submarine, Trajectory, Mission, ClosedLoop +from .dynamic import Submarine, Trajectory, Mission, ClosedLoop __all__ = ['Submarine', 'Trajectory', 'Mission', 'ClosedLoop'] \ No newline at end of file diff --git a/uuv_mission/dynamic.py b/uuv_mission/dynamic.py index aca3dfbf..c7c7ad53 100644 --- a/uuv_mission/dynamic.py +++ b/uuv_mission/dynamic.py @@ -2,7 +2,7 @@ from dataclasses import dataclass import numpy as np import matplotlib.pyplot as plt -from terrain import generate_reference_and_limits +from .terrain import generate_reference_and_limits class Submarine: def __init__(self): From 8184c17fe87b41cf999353877f32001ed273a178 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Fri, 18 Oct 2024 17:47:16 +0100 Subject: [PATCH 07/33] Change demo.ipynb --- notebooks/demo.ipynb | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/notebooks/demo.ipynb b/notebooks/demo.ipynb index c0edeaed..719a4c98 100644 --- a/notebooks/demo.ipynb +++ b/notebooks/demo.ipynb @@ -54,15 +54,14 @@ "metadata": {}, "outputs": [ { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'dynamic'", + "ename": "NameError", + "evalue": "name 'controller' is not defined", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[3], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Import relevant modules\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01muuv_mission\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Submarine, Trajectory, Mission, ClosedLoop\n\u001b[0;32m 4\u001b[0m sub \u001b[38;5;241m=\u001b[39m Submarine()\n\u001b[0;32m 5\u001b[0m \u001b[38;5;66;03m# Instantiate your controller (depending on your implementation)\u001b[39;00m\n", - "File \u001b[1;32m~\\Claudio\\Oxford\\3rd Year\\B1\\b1-coding-practical-mt24\\uuv_mission\\__init__.py:1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdynamic\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Submarine, Trajectory, Mission, ClosedLoop\n\u001b[0;32m 3\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSubmarine\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mTrajectory\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mMission\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mClosedLoop\u001b[39m\u001b[38;5;124m'\u001b[39m]\n", - "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'dynamic'" + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[3], line 6\u001b[0m\n\u001b[0;32m 4\u001b[0m sub \u001b[38;5;241m=\u001b[39m Submarine()\n\u001b[0;32m 5\u001b[0m \u001b[38;5;66;03m# Instantiate your controller (depending on your implementation)\u001b[39;00m\n\u001b[1;32m----> 6\u001b[0m closed_loop \u001b[38;5;241m=\u001b[39m ClosedLoop(sub, controller)\n\u001b[0;32m 7\u001b[0m mission \u001b[38;5;241m=\u001b[39m Mission\u001b[38;5;241m.\u001b[39mfrom_csv(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpath/to/file\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;66;03m# You must implement this method in the Mission class\u001b[39;00m\n\u001b[0;32m 9\u001b[0m trajectory \u001b[38;5;241m=\u001b[39m closed_loop\u001b[38;5;241m.\u001b[39msimulate_with_random_disturbances(mission)\n", + "\u001b[1;31mNameError\u001b[0m: name 'controller' is not defined" ] } ], From 43ff5f3e97f3876679a4f6a4ce8945261444b683 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Fri, 18 Oct 2024 23:45:44 +0100 Subject: [PATCH 08/33] Start of developement - main runs with no errors --- .env | 1 - notebooks/demo.ipynb | 21 +++++++++++---------- uuv_mission/dynamic.py | 2 +- uuv_mission/terrain.py | 5 +---- 4 files changed, 13 insertions(+), 16 deletions(-) delete mode 100644 .env diff --git a/.env b/.env deleted file mode 100644 index c9be1272..00000000 --- a/.env +++ /dev/null @@ -1 +0,0 @@ -PYTHONPATH="C:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24${PYTHONPATH}" \ No newline at end of file diff --git a/notebooks/demo.ipynb b/notebooks/demo.ipynb index 719a4c98..cfb64c2b 100644 --- a/notebooks/demo.ipynb +++ b/notebooks/demo.ipynb @@ -54,18 +54,18 @@ "metadata": {}, "outputs": [ { - "ename": "NameError", - "evalue": "name 'controller' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[3], line 6\u001b[0m\n\u001b[0;32m 4\u001b[0m sub \u001b[38;5;241m=\u001b[39m Submarine()\n\u001b[0;32m 5\u001b[0m \u001b[38;5;66;03m# Instantiate your controller (depending on your implementation)\u001b[39;00m\n\u001b[1;32m----> 6\u001b[0m closed_loop \u001b[38;5;241m=\u001b[39m ClosedLoop(sub, controller)\n\u001b[0;32m 7\u001b[0m mission \u001b[38;5;241m=\u001b[39m Mission\u001b[38;5;241m.\u001b[39mfrom_csv(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpath/to/file\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;66;03m# You must implement this method in the Mission class\u001b[39;00m\n\u001b[0;32m 9\u001b[0m trajectory \u001b[38;5;241m=\u001b[39m closed_loop\u001b[38;5;241m.\u001b[39msimulate_with_random_disturbances(mission)\n", - "\u001b[1;31mNameError\u001b[0m: name 'controller' is not defined" - ] + "data": { + "text/plain": [ + "'\\n# Import relevant modules\\nfrom uuv_mission import Submarine, Trajectory, Mission, ClosedLoop\\n\\nsub = Submarine()\\n# Instantiate your controller (depending on your implementation)\\nclosed_loop = ClosedLoop(sub, controller)\\nmission = Mission.from_csv(\"path/to/file\") # You must implement this method in the Mission class\\n\\ntrajectory = closed_loop.simulate_with_random_disturbances(mission)\\ntrajectory.plot_completed_mission(mission)\\n'" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ + "\"\"\"\n", "# Import relevant modules\n", "from uuv_mission import Submarine, Trajectory, Mission, ClosedLoop\n", "\n", @@ -75,7 +75,8 @@ "mission = Mission.from_csv(\"path/to/file\") # You must implement this method in the Mission class\n", "\n", "trajectory = closed_loop.simulate_with_random_disturbances(mission)\n", - "trajectory.plot_completed_mission(mission)" + "trajectory.plot_completed_mission(mission)\n", + "\"\"\"" ] }, { diff --git a/uuv_mission/dynamic.py b/uuv_mission/dynamic.py index c7c7ad53..a2a01b38 100644 --- a/uuv_mission/dynamic.py +++ b/uuv_mission/dynamic.py @@ -104,4 +104,4 @@ def simulate(self, mission: Mission, disturbances: np.ndarray) -> Trajectory: def simulate_with_random_disturbances(self, mission: Mission, variance: float = 0.5) -> Trajectory: disturbances = np.random.normal(0, variance, len(mission.reference)) - return self.simulate(mission, disturbances) + return self.simulate(mission, disturbances) \ No newline at end of file diff --git a/uuv_mission/terrain.py b/uuv_mission/terrain.py index a69f4932..0ad148fd 100644 --- a/uuv_mission/terrain.py +++ b/uuv_mission/terrain.py @@ -49,7 +49,4 @@ def write_mission_to_csv(mission, file_name): df = pd.DataFrame(data) # Write the DataFrame to a CSV file - df.to_csv(file_name, index=False) - - - \ No newline at end of file + df.to_csv(file_name, index=False) \ No newline at end of file From 08dfdf2c0b804fb38dc5462c2c65474ecd7c32ed Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Fri, 18 Oct 2024 23:55:55 +0100 Subject: [PATCH 09/33] Modify demo.ipynb --- notebooks/demo.ipynb | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/notebooks/demo.ipynb b/notebooks/demo.ipynb index cfb64c2b..17bf0b35 100644 --- a/notebooks/demo.ipynb +++ b/notebooks/demo.ipynb @@ -2,9 +2,18 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], "source": [ "# Add relevant Jupyter notebook extensions\n", "%load_ext autoreload\n", @@ -13,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -50,7 +59,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -59,7 +68,7 @@ "'\\n# Import relevant modules\\nfrom uuv_mission import Submarine, Trajectory, Mission, ClosedLoop\\n\\nsub = Submarine()\\n# Instantiate your controller (depending on your implementation)\\nclosed_loop = ClosedLoop(sub, controller)\\nmission = Mission.from_csv(\"path/to/file\") # You must implement this method in the Mission class\\n\\ntrajectory = closed_loop.simulate_with_random_disturbances(mission)\\ntrajectory.plot_completed_mission(mission)\\n'" ] }, - "execution_count": 3, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } From f824e833062f54e57d148bf9817666c2d31d405d Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sat, 19 Oct 2024 21:58:57 +0100 Subject: [PATCH 10/33] Add mission data extraction method --- uuv_mission/dynamic.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/uuv_mission/dynamic.py b/uuv_mission/dynamic.py index a2a01b38..d72dd591 100644 --- a/uuv_mission/dynamic.py +++ b/uuv_mission/dynamic.py @@ -75,8 +75,11 @@ def random_mission(cls, duration: int, scale: float): @classmethod def from_csv(cls, file_name: str): - # You are required to implement this method - pass + data = np.genfromtxt(file_name, delimiter=',', skip_header=1) + reference = data[:, 0] + cave_height = data[:, 1] + cave_depth = data[:, 2] + return cls(reference, cave_height, cave_depth) class ClosedLoop: From efd609bf9f5db8d973b73fecae48d50caa92ff66 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sat, 19 Oct 2024 22:04:35 +0100 Subject: [PATCH 11/33] Create report.tex --- report/report.tex | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 report/report.tex diff --git a/report/report.tex b/report/report.tex new file mode 100644 index 00000000..e69de29b From 2ae3a36a0c59c224618f2ecb39090789324cc39d Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sat, 19 Oct 2024 22:25:21 +0100 Subject: [PATCH 12/33] Add controller.py --- uuv_mission/control.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 uuv_mission/control.py diff --git a/uuv_mission/control.py b/uuv_mission/control.py new file mode 100644 index 00000000..e69de29b From 332ffd4277d5817aa11d316f2c8c395a476c1393 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sat, 19 Oct 2024 22:27:30 +0100 Subject: [PATCH 13/33] Add control.py --- notebooks/demo.ipynb | 43 ++++++++++++++++++++++++++++++++++++++++++ uuv_mission/control.py | 2 ++ 2 files changed, 45 insertions(+) diff --git a/notebooks/demo.ipynb b/notebooks/demo.ipynb index 17bf0b35..8c7617f6 100644 --- a/notebooks/demo.ipynb +++ b/notebooks/demo.ipynb @@ -49,6 +49,49 @@ "print(\"\\n\".join(sys.path))" ] }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'Submarine' object has no attribute 'position'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[22], line 7\u001b[0m\n\u001b[0;32m 5\u001b[0m random_mission \u001b[38;5;241m=\u001b[39m Mission\u001b[38;5;241m.\u001b[39mrandom_mission(duration\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m100\u001b[39m, scale\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m 6\u001b[0m mission \u001b[38;5;241m=\u001b[39m Mission\u001b[38;5;241m.\u001b[39mfrom_csv(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mC:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24/data/mission.csv\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m----> 7\u001b[0m Trajectory\u001b[38;5;241m.\u001b[39mplot_completed_mission(submarine, mission)\n", + "File \u001b[1;32m~\\Claudio\\Oxford\\3rd Year\\B1\\b1-coding-practical-mt24\\uuv_mission\\dynamic.py:60\u001b[0m, in \u001b[0;36mTrajectory.plot_completed_mission\u001b[1;34m(self, mission)\u001b[0m\n\u001b[0;32m 56\u001b[0m plt\u001b[38;5;241m.\u001b[39mfill_between(x_values, mission\u001b[38;5;241m.\u001b[39mcave_depth, min_depth\u001b[38;5;241m*\u001b[39mnp\u001b[38;5;241m.\u001b[39mones(\u001b[38;5;28mlen\u001b[39m(x_values)), \n\u001b[0;32m 57\u001b[0m color\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msaddlebrown\u001b[39m\u001b[38;5;124m'\u001b[39m, alpha\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.3\u001b[39m)\n\u001b[0;32m 58\u001b[0m plt\u001b[38;5;241m.\u001b[39mfill_between(x_values, max_height\u001b[38;5;241m*\u001b[39mnp\u001b[38;5;241m.\u001b[39mones(\u001b[38;5;28mlen\u001b[39m(x_values)), mission\u001b[38;5;241m.\u001b[39mcave_height, \n\u001b[0;32m 59\u001b[0m color\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msaddlebrown\u001b[39m\u001b[38;5;124m'\u001b[39m, alpha\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.3\u001b[39m)\n\u001b[1;32m---> 60\u001b[0m plt\u001b[38;5;241m.\u001b[39mplot(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mposition[:, \u001b[38;5;241m0\u001b[39m], \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mposition[:, \u001b[38;5;241m1\u001b[39m], label\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mTrajectory\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 61\u001b[0m plt\u001b[38;5;241m.\u001b[39mplot(mission\u001b[38;5;241m.\u001b[39mreference, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124m'\u001b[39m, linestyle\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m--\u001b[39m\u001b[38;5;124m'\u001b[39m, label\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mReference\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 62\u001b[0m plt\u001b[38;5;241m.\u001b[39mlegend(loc\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mupper right\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", + "\u001b[1;31mAttributeError\u001b[0m: 'Submarine' object has no attribute 'position'" + ] + }, + { + "data": { + "image/png": "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0o4fOHAAd9xxxyTNqjQIIbB27Vrs3bsXL7/8MhobG9PONzY2IhAIpMVe13UcPHiQsc/S3XffjRMnTuD48eOpr9mzZ+Ob3/wmjh8/jqamJsY6T+bOnTtkC/7bb7+NhoYGAPy9zqdIJAKrNf2yZbPZUluXGevCyCSuLS0tsNvtaWMuXbqEkydP5if2416iW4KubV3+3e9+J9rb28WGDRuEy+US586dm+ypFbVvf/vbwufziX/+85/i0qVLqa9IJJIas337duHz+cTevXvFiRMnxH333cdth3ny0d1AQjDW+XLkyBEhSZJobW0Vp0+fFs8//7xwOp3iueeeS41hrPNj5cqVYtq0aamty3v37hV+v198//vfT41hrHMTCoXEsWPHxLFjxwQA8bOf/UwcO3YsVbIjk7iuWbNG1NbWipdeekkcPXpUfOELX+DW5UL71a9+JRoaGoQsy+Izn/lManst5Q7AsF+7du1KjUkmk2LLli0iEAgIRVHE5z//eXHixInJm3QJ+Xiywljnz1//+lfR3NwsFEURM2fOFM8880zaecY6P4LBoFi/fr2or68XqqqKpqYm8fjjjwtN01JjGOvcvPLKK8P+/3nlypVCiMziGo1Gxdq1a0VFRYVwOBziy1/+srhw4UJe5mcRQojx358hIiIiKgyuWSEiIiJTY7JCREREpsZkhYiIiEyNyQoRERGZGpMVIiIiMjUmK0RERGRqTFaIiIjI1JisEBERkakxWSEiIiJTY7JCREREpsZkhYiIiEzt/wEr0W27pmAhfQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Script to test Mission class\n", + "from uuv_mission import Submarine, Mission, Trajectory\n", + "\n", + "submarine = Submarine()\n", + "random_mission = Mission.random_mission(duration=100, scale=40)\n", + "mission = Mission.from_csv('C:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24/data/mission.csv')\n", + "Trajectory.plot_completed_mission(submarine, mission)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, { "cell_type": "markdown", "metadata": {}, diff --git a/uuv_mission/control.py b/uuv_mission/control.py index e69de29b..07ff6049 100644 --- a/uuv_mission/control.py +++ b/uuv_mission/control.py @@ -0,0 +1,2 @@ +import numpy as np + From 77259ef512451b53ca8011d23028c8c43069a0e1 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sat, 19 Oct 2024 22:40:38 +0100 Subject: [PATCH 14/33] Add report.tex --- report/report.tex | 3 +++ 1 file changed, 3 insertions(+) diff --git a/report/report.tex b/report/report.tex index e69de29b..7a67b489 100644 --- a/report/report.tex +++ b/report/report.tex @@ -0,0 +1,3 @@ +%%% + +%%% \ No newline at end of file From 2189a35adcb9b7d8100caabe82f39a8f253b1183 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sat, 19 Oct 2024 22:43:06 +0100 Subject: [PATCH 15/33] Add report.tex --- report/report.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/report/report.tex b/report/report.tex index 7a67b489..3ee83c3a 100644 --- a/report/report.tex +++ b/report/report.tex @@ -1,3 +1,3 @@ %%% - +/begin{document} %%% \ No newline at end of file From af37df3d20c7fe3de3255b60a6a1ddf3fe1acfbc Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sat, 19 Oct 2024 22:45:48 +0100 Subject: [PATCH 16/33] Modify demo.ipynb --- notebooks/demo.ipynb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/notebooks/demo.ipynb b/notebooks/demo.ipynb index 8c7617f6..4c7fe6ec 100644 --- a/notebooks/demo.ipynb +++ b/notebooks/demo.ipynb @@ -78,13 +78,15 @@ } ], "source": [ + "\"\"\"\n", "# Script to test Mission class\n", "from uuv_mission import Submarine, Mission, Trajectory\n", "\n", "submarine = Submarine()\n", "random_mission = Mission.random_mission(duration=100, scale=40)\n", "mission = Mission.from_csv('C:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24/data/mission.csv')\n", - "Trajectory.plot_completed_mission(submarine, mission)" + "Trajectory.plot_completed_mission(submarine, mission)\n", + "\"\"\"" ] }, { From a6c3a61280c7a36f33eabf71e48e013cf23d26cd Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sat, 19 Oct 2024 22:47:28 +0100 Subject: [PATCH 17/33] Modify demo.ipynb --- notebooks/demo.ipynb | 39 +++++++++------------------------------ 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/notebooks/demo.ipynb b/notebooks/demo.ipynb index 4c7fe6ec..6fd69aa8 100644 --- a/notebooks/demo.ipynb +++ b/notebooks/demo.ipynb @@ -2,18 +2,9 @@ "cells": [ { "cell_type": "code", - "execution_count": 7, + "execution_count": 1, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The autoreload extension is already loaded. To reload it, use:\n", - " %reload_ext autoreload\n" - ] - } - ], + "outputs": [], "source": [ "# Add relevant Jupyter notebook extensions\n", "%load_ext autoreload\n", @@ -22,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -51,30 +42,18 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 3, "metadata": {}, "outputs": [ - { - "ename": "AttributeError", - "evalue": "'Submarine' object has no attribute 'position'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[22], line 7\u001b[0m\n\u001b[0;32m 5\u001b[0m random_mission \u001b[38;5;241m=\u001b[39m Mission\u001b[38;5;241m.\u001b[39mrandom_mission(duration\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m100\u001b[39m, scale\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m 6\u001b[0m mission \u001b[38;5;241m=\u001b[39m Mission\u001b[38;5;241m.\u001b[39mfrom_csv(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mC:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24/data/mission.csv\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m----> 7\u001b[0m Trajectory\u001b[38;5;241m.\u001b[39mplot_completed_mission(submarine, mission)\n", - "File \u001b[1;32m~\\Claudio\\Oxford\\3rd Year\\B1\\b1-coding-practical-mt24\\uuv_mission\\dynamic.py:60\u001b[0m, in \u001b[0;36mTrajectory.plot_completed_mission\u001b[1;34m(self, mission)\u001b[0m\n\u001b[0;32m 56\u001b[0m plt\u001b[38;5;241m.\u001b[39mfill_between(x_values, mission\u001b[38;5;241m.\u001b[39mcave_depth, min_depth\u001b[38;5;241m*\u001b[39mnp\u001b[38;5;241m.\u001b[39mones(\u001b[38;5;28mlen\u001b[39m(x_values)), \n\u001b[0;32m 57\u001b[0m color\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msaddlebrown\u001b[39m\u001b[38;5;124m'\u001b[39m, alpha\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.3\u001b[39m)\n\u001b[0;32m 58\u001b[0m plt\u001b[38;5;241m.\u001b[39mfill_between(x_values, max_height\u001b[38;5;241m*\u001b[39mnp\u001b[38;5;241m.\u001b[39mones(\u001b[38;5;28mlen\u001b[39m(x_values)), mission\u001b[38;5;241m.\u001b[39mcave_height, \n\u001b[0;32m 59\u001b[0m color\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msaddlebrown\u001b[39m\u001b[38;5;124m'\u001b[39m, alpha\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.3\u001b[39m)\n\u001b[1;32m---> 60\u001b[0m plt\u001b[38;5;241m.\u001b[39mplot(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mposition[:, \u001b[38;5;241m0\u001b[39m], \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mposition[:, \u001b[38;5;241m1\u001b[39m], label\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mTrajectory\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 61\u001b[0m plt\u001b[38;5;241m.\u001b[39mplot(mission\u001b[38;5;241m.\u001b[39mreference, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124m'\u001b[39m, linestyle\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m--\u001b[39m\u001b[38;5;124m'\u001b[39m, label\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mReference\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 62\u001b[0m plt\u001b[38;5;241m.\u001b[39mlegend(loc\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mupper right\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", - "\u001b[1;31mAttributeError\u001b[0m: 'Submarine' object has no attribute 'position'" - ] - }, { "data": { - "image/png": "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0o4fOHAAd9xxxyTNqjQIIbB27Vrs3bsXL7/8MhobG9PONzY2IhAIpMVe13UcPHiQsc/S3XffjRMnTuD48eOpr9mzZ+Ob3/wmjh8/jqamJsY6T+bOnTtkC/7bb7+NhoYGAPy9zqdIJAKrNf2yZbPZUluXGevCyCSuLS0tsNvtaWMuXbqEkydP5if2416iW4KubV3+3e9+J9rb28WGDRuEy+US586dm+ypFbVvf/vbwufziX/+85/i0qVLqa9IJJIas337duHz+cTevXvFiRMnxH333cdth3ny0d1AQjDW+XLkyBEhSZJobW0Vp0+fFs8//7xwOp3iueeeS41hrPNj5cqVYtq0aamty3v37hV+v198//vfT41hrHMTCoXEsWPHxLFjxwQA8bOf/UwcO3YsVbIjk7iuWbNG1NbWipdeekkcPXpUfOELX+DW5UL71a9+JRoaGoQsy+Izn/lManst5Q7AsF+7du1KjUkmk2LLli0iEAgIRVHE5z//eXHixInJm3QJ+Xiywljnz1//+lfR3NwsFEURM2fOFM8880zaecY6P4LBoFi/fr2or68XqqqKpqYm8fjjjwtN01JjGOvcvPLKK8P+/3nlypVCiMziGo1Gxdq1a0VFRYVwOBziy1/+srhw4UJe5mcRQojx358hIiIiKgyuWSEiIiJTY7JCREREpsZkhYiIiEyNyQoRERGZGpMVIiIiMjUmK0RERGRqTFaIiIjI1JisEBERkakxWSEiIiJTY7JCREREpsZkhYiIiEzt/wEr0W27pmAhfQAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "\"\\n# Script to test Mission class\\nfrom uuv_mission import Submarine, Mission, Trajectory\\n\\nsubmarine = Submarine()\\nrandom_mission = Mission.random_mission(duration=100, scale=40)\\nmission = Mission.from_csv('C:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24/data/mission.csv')\\nTrajectory.plot_completed_mission(submarine, mission)\\n\"" ] }, + "execution_count": 3, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ @@ -104,7 +83,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -113,7 +92,7 @@ "'\\n# Import relevant modules\\nfrom uuv_mission import Submarine, Trajectory, Mission, ClosedLoop\\n\\nsub = Submarine()\\n# Instantiate your controller (depending on your implementation)\\nclosed_loop = ClosedLoop(sub, controller)\\nmission = Mission.from_csv(\"path/to/file\") # You must implement this method in the Mission class\\n\\ntrajectory = closed_loop.simulate_with_random_disturbances(mission)\\ntrajectory.plot_completed_mission(mission)\\n'" ] }, - "execution_count": 9, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } From 45434943b671fd5374213d4f5ce96a5712ce4799 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sun, 20 Oct 2024 00:16:33 +0100 Subject: [PATCH 18/33] Add first two sections in report.tex --- report/report.tex | 52 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/report/report.tex b/report/report.tex index 3ee83c3a..fbc7df9e 100644 --- a/report/report.tex +++ b/report/report.tex @@ -1,3 +1,49 @@ -%%% -/begin{document} -%%% \ No newline at end of file +\documentclass[hidelinks]{article} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% START CUSTOM INCLUDES & DEFINITIONS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +\usepackage{parskip} %noident everywhere +\usepackage{hyperref} % Show hyperlinks - claudio +\hypersetup{ + colorlinks = true + linkcolor = blue + urlcolor = red + } +\usepackage{fancyhdr, lastpage} % Headers and footers +\pagestyle{fancy} +\lhead{2024} +\rhead{Claudio Vestini \& Idris Kempf} % hidden if full page +\cfoot{Page \thepage\ of \pageref{LastPage}} +\usepackage{subcaption} +\usepackage{tabto} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% END CUSTOM INCLUDES & DEFINITIONS +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +\pdfobjcompresslevel=0 +% +\title{Submarine Mission Report} +\author{Claudio Vestini} +\date{October 2024} +\begin{document} +\maketitle +% +\section{Introduction} +This brief report will concern the B1 submarine coding practical. +Initial steps taken before starting development: +\begin{enumerate} + \item Create and activate a virtual environment with the given requirements (numpy, matplotlib and pandas packages) + \item Fork project repository to my GitHub account + \item Set up a .env file to add local packages onto python PATH + \item Make sure running files do not give any errors before branching off `main' +\end{enumerate} +% +\section{Extracting Mission Data} +The first step was to obtain mission data from the given .csv file. I started this by creating a new branch, and modifying the Mission class inside the new branch. I implemented a new classmethod to extract each column of the mission.csv file into a separate variable, and then return the data as an instance of the Mission class. I then tested the new functionality by making use of the Trajectory class's plotting methods. Once I made sure the new method was working correctly, I merged the branch back into `main', and deleted the unused branch. +% +\section{Controller Implementation} +% +\end{document} \ No newline at end of file From 592d7c8f03f94e93f1fa06a677022ef3718a25eb Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sun, 20 Oct 2024 00:24:37 +0100 Subject: [PATCH 19/33] Add control.py --- uuv_mission/control.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/uuv_mission/control.py b/uuv_mission/control.py index 07ff6049..c91afe98 100644 --- a/uuv_mission/control.py +++ b/uuv_mission/control.py @@ -1,2 +1,5 @@ import numpy as np +def controller(): + + pass From 305ac583599348c96084cd77365285c9ddd50f7e Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sun, 20 Oct 2024 00:28:09 +0100 Subject: [PATCH 20/33] Modify Mission Data section for readability --- report/report.tex | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/report/report.tex b/report/report.tex index fbc7df9e..63b10f65 100644 --- a/report/report.tex +++ b/report/report.tex @@ -42,7 +42,11 @@ \section{Introduction} \end{enumerate} % \section{Extracting Mission Data} -The first step was to obtain mission data from the given .csv file. I started this by creating a new branch, and modifying the Mission class inside the new branch. I implemented a new classmethod to extract each column of the mission.csv file into a separate variable, and then return the data as an instance of the Mission class. I then tested the new functionality by making use of the Trajectory class's plotting methods. Once I made sure the new method was working correctly, I merged the branch back into `main', and deleted the unused branch. +The first step was to obtain mission data from the given .csv file. +\newline +I started this by creating a new branch, and modifying the Mission class inside the new branch. I implemented a new classmethod to extract each column of the mission.csv file into a separate variable, and then return the data as an instance of the Mission class. +\newline +The next step was to test the new functionality by making use of the Trajectory class's plotting methods. Once I made sure the new method was working correctly, I merged the branch back into `main', and deleted the unused branch. % \section{Controller Implementation} % From 0987f8a1447acf8cf37eea62c9ba087b6c3da771 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sun, 20 Oct 2024 00:40:50 +0100 Subject: [PATCH 21/33] Change controller to a class --- uuv_mission/control.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uuv_mission/control.py b/uuv_mission/control.py index c91afe98..ffc84375 100644 --- a/uuv_mission/control.py +++ b/uuv_mission/control.py @@ -1,5 +1,5 @@ import numpy as np -def controller(): +class Controller(): pass From 190d00fbe07800226546518f7f50961d231c2510 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sun, 20 Oct 2024 16:52:50 +0100 Subject: [PATCH 22/33] Implement PDController subclass --- uuv_mission/control.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/uuv_mission/control.py b/uuv_mission/control.py index ffc84375..f3c7ac62 100644 --- a/uuv_mission/control.py +++ b/uuv_mission/control.py @@ -1,5 +1,27 @@ import numpy as np class Controller(): + def __init__(self, A: np.ndarray, B: np.ndarray, C: np.ndarray, D: np.ndarray): + + self.A = np.array([[1, 1], [0, 1]]) + self.B = np.array([[0], [1]]) + self.C = np.array([[1, 0]]) + self.D = np.array([[0]]) - pass +class PDController(Controller): + def __init__(self, A: np.ndarray, B: np.ndarray, C: np.ndarray, D: np.ndarray, + Kp: float = 0.15, Kd: float = 0.6): + super().__init__(A, B, C, D) + self.Kp = Kp + self.Kd = Kd + self.previous_error = 0 + + def compute_control_action(self, x0: np.ndarray, reference: np.ndarray) -> np.ndarray: + + error = reference - self.C @ x0 + derivative = (error - self.previous_error) / self.A[1, 1] # Assuming dt = 1 for simplicity + + u = self.Kp * error + self.Kd * derivative + self.previous_error = error + + return u From e01a4941f9899250a496183654cc93c9643f66c9 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sun, 20 Oct 2024 16:54:27 +0100 Subject: [PATCH 23/33] Import cvxpy --- uuv_mission/control.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/uuv_mission/control.py b/uuv_mission/control.py index f3c7ac62..bb0797cf 100644 --- a/uuv_mission/control.py +++ b/uuv_mission/control.py @@ -1,4 +1,5 @@ -import numpy as np +import numpy as np] +import cvxpy as cp class Controller(): def __init__(self, A: np.ndarray, B: np.ndarray, C: np.ndarray, D: np.ndarray): @@ -24,4 +25,4 @@ def compute_control_action(self, x0: np.ndarray, reference: np.ndarray) -> np.nd u = self.Kp * error + self.Kd * derivative self.previous_error = error - return u + return u \ No newline at end of file From 0b3a0f9fac14af259ea50e5341c6771f285f4fe2 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sun, 20 Oct 2024 16:55:12 +0100 Subject: [PATCH 24/33] Add cvxpy to requirements --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 608462be..ae056dd2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ matplotlib==3.9.2 numpy==2.1.1 pandas==2.2.3 +cvxpy==1.1.15 \ No newline at end of file From 6a7bba97620a425d5c182cc49669b357df3e92b9 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Sun, 20 Oct 2024 16:55:57 +0100 Subject: [PATCH 25/33] Add MPCController subclass --- uuv_mission/control.py | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/uuv_mission/control.py b/uuv_mission/control.py index bb0797cf..b7be59d5 100644 --- a/uuv_mission/control.py +++ b/uuv_mission/control.py @@ -1,4 +1,4 @@ -import numpy as np] +import numpy as np import cvxpy as cp class Controller(): @@ -25,4 +25,33 @@ def compute_control_action(self, x0: np.ndarray, reference: np.ndarray) -> np.nd u = self.Kp * error + self.Kd * derivative self.previous_error = error - return u \ No newline at end of file + return u + +class MPCController(Controller): + def __init__(self, A: np.ndarray, B: np.ndarray, C: np.ndarray, D: np.ndarray, + horizon: int, Q: np.ndarray, R: np.ndarray): + super().__init__(A, B, C, D) + self.horizon = horizon + self.Q = Q + self.R = R + + def compute_control_action(self, x0: np.ndarray, reference: np.ndarray) -> np.ndarray: + + x = cp.Variable((self.A.shape[0], self.horizon + 1)) + u = cp.Variable((self.B.shape[1], self.horizon)) + y = cp.Variable((self.C.shape[0], self.horizon + 1)) + + cost = 0 + constraints = [x[:, 0] == x0] + for t in range(self.horizon): + cost += cp.quad_form(y[:, t] - reference[:, t], self.Q) + cp.quad_form(u[:, t], self.R) + constraints += [ + x[:, t + 1] == self.A @ x[:, t] + self.B @ u[:, t], + y[:, t] == self.C @ x[:, t] + self.D @ u[:, t] + ] + + problem = cp.Problem(cp.Minimize(cost), constraints) + + problem.solve() + + return u[:, 0].value # return first control action \ No newline at end of file From 72d7431d5a0b22394712a424d450d575d7b5f098 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Mon, 21 Oct 2024 00:18:23 +0100 Subject: [PATCH 26/33] Clarify first two paragraphs --- report/report.tex | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/report/report.tex b/report/report.tex index 63b10f65..a23a06ec 100644 --- a/report/report.tex +++ b/report/report.tex @@ -31,20 +31,24 @@ \begin{document} \maketitle % -\section{Introduction} +\section{Motivation and Preliminary Steps} This brief report will concern the B1 submarine coding practical. +\newline +We were tasked with designing the controller to guide a Submarine through its cave mission by tracking a given reference to avoid collisions with the cave boundaries. +\newline Initial steps taken before starting development: +% \begin{enumerate} \item Create and activate a virtual environment with the given requirements (numpy, matplotlib and pandas packages) \item Fork project repository to my GitHub account - \item Set up a .env file to add local packages onto python PATH + \item Set up a .env file to add local packages onto Python PATH \item Make sure running files do not give any errors before branching off `main' \end{enumerate} % -\section{Extracting Mission Data} -The first step was to obtain mission data from the given .csv file. +\section{Mission Data Extraction} +The first task was to obtain mission data from the given .csv file. \newline -I started this by creating a new branch, and modifying the Mission class inside the new branch. I implemented a new classmethod to extract each column of the mission.csv file into a separate variable, and then return the data as an instance of the Mission class. +I started by creating a new branch to modify the Mission class within. I then implemented a new classmethod to extract each column of the mission.csv file into a separate variable, and then return the data as an instance of the Mission class. \newline The next step was to test the new functionality by making use of the Trajectory class's plotting methods. Once I made sure the new method was working correctly, I merged the branch back into `main', and deleted the unused branch. % From 194d1aa069b097642959835d41d1a2f92a7df609 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Mon, 21 Oct 2024 00:19:15 +0100 Subject: [PATCH 27/33] Call controller within ClosedLoop --- uuv_mission/control.py | 2 +- uuv_mission/dynamic.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/uuv_mission/control.py b/uuv_mission/control.py index b7be59d5..9ce95322 100644 --- a/uuv_mission/control.py +++ b/uuv_mission/control.py @@ -20,7 +20,7 @@ def __init__(self, A: np.ndarray, B: np.ndarray, C: np.ndarray, D: np.ndarray, def compute_control_action(self, x0: np.ndarray, reference: np.ndarray) -> np.ndarray: error = reference - self.C @ x0 - derivative = (error - self.previous_error) / self.A[1, 1] # Assuming dt = 1 for simplicity + derivative = (error - self.previous_error) / self.A[1, 1] # assuming dt = 1 for simplicity u = self.Kp * error + self.Kd * derivative self.previous_error = error diff --git a/uuv_mission/dynamic.py b/uuv_mission/dynamic.py index d72dd591..32660f4f 100644 --- a/uuv_mission/dynamic.py +++ b/uuv_mission/dynamic.py @@ -101,7 +101,10 @@ def simulate(self, mission: Mission, disturbances: np.ndarray) -> Trajectory: positions[t] = self.plant.get_position() observation_t = self.plant.get_depth() # Call your controller here - self.plant.transition(actions[t], disturbances[t]) + reference_t = mission.reference[t] + action_t = self.controller.compute_control_action(np.array([self.plant.pos_x, self.plant.pos_y]), np.array([reference_t])) + actions[t] = action_t + self.plant.transition(action_t, disturbances[t]) return Trajectory(positions) From 19579922878de5316e35c23f567b84da4d142e03 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Tue, 22 Oct 2024 00:12:52 +0100 Subject: [PATCH 28/33] Modify pd controller - now working --- .gitignore | 3 +- notebooks/demo.ipynb | 100 ++++++++++++++++++++++++---------------- uuv_mission/__init__.py | 6 ++- uuv_mission/control.py | 20 ++++---- uuv_mission/dynamic.py | 40 ++++++++++------ uuv_mission/terrain.py | 3 +- uuv_mission/test.py | 17 +++++++ 7 files changed, 120 insertions(+), 69 deletions(-) create mode 100644 uuv_mission/test.py diff --git a/.gitignore b/.gitignore index 508562dc..d56c9507 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .DS_Store .vscode/ -__pycache__/ \ No newline at end of file +__pycache__/ +.idea/ \ No newline at end of file diff --git a/notebooks/demo.ipynb b/notebooks/demo.ipynb index 6fd69aa8..829e9ea2 100644 --- a/notebooks/demo.ipynb +++ b/notebooks/demo.ipynb @@ -3,7 +3,12 @@ { "cell_type": "code", "execution_count": 1, - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-21T19:19:46.296213500Z", + "start_time": "2024-10-21T19:19:46.236892100Z" + } + }, "outputs": [], "source": [ "# Add relevant Jupyter notebook extensions\n", @@ -14,23 +19,28 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-21T19:19:46.348966800Z", + "start_time": "2024-10-21T19:19:46.299228Z" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "c:\\Users\\cvest\\Claudio\\Oxford\\3rd Year\\B1\\b1-coding-practical-mt24\\notebooks\n", + "C:\\Users\\cvest\\Claudio\\Oxford\\3rd Year\\B1\\b1-coding-practical-mt24\\notebooks\n", "C:\\Users\\cvest\\Claudio\\Oxford\\3rd Year\\B1\\b1-coding-practical-mt24\n", - "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\python311.zip\n", - "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\DLLs\n", - "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\n", - "c:\\Users\\cvest\\anaconda3\\envs\\a2e\n", + "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\python311.zip\n", + "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\DLLs\n", + "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\n", + "C:\\Users\\cvest\\anaconda3\\envs\\a2e\n", "\n", - "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\n", - "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\\win32\n", - "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\\win32\\lib\n", - "c:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\\Pythonwin\n" + "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\n", + "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\\win32\n", + "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\\win32\\lib\n", + "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\\Pythonwin\n" ] } ], @@ -43,29 +53,21 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\"\\n# Script to test Mission class\\nfrom uuv_mission import Submarine, Mission, Trajectory\\n\\nsubmarine = Submarine()\\nrandom_mission = Mission.random_mission(duration=100, scale=40)\\nmission = Mission.from_csv('C:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24/data/mission.csv')\\nTrajectory.plot_completed_mission(submarine, mission)\\n\"" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-21T19:19:48.092466400Z", + "start_time": "2024-10-21T19:19:46.347967700Z" } - ], + }, + "outputs": [], "source": [ - "\"\"\"\n", "# Script to test Mission class\n", "from uuv_mission import Submarine, Mission, Trajectory\n", "\n", "submarine = Submarine()\n", "random_mission = Mission.random_mission(duration=100, scale=40)\n", "mission = Mission.from_csv('C:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24/data/mission.csv')\n", - "Trajectory.plot_completed_mission(submarine, mission)\n", - "\"\"\"" + "# Trajectory.plot_completed_mission(submarine, mission) # to check data extraction" ] }, { @@ -83,39 +85,55 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": {}, + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-21T19:23:37.477898Z", + "start_time": "2024-10-21T19:23:37.264713100Z" + } + }, "outputs": [ { "data": { - "text/plain": [ - "'\\n# Import relevant modules\\nfrom uuv_mission import Submarine, Trajectory, Mission, ClosedLoop\\n\\nsub = Submarine()\\n# Instantiate your controller (depending on your implementation)\\nclosed_loop = ClosedLoop(sub, controller)\\nmission = Mission.from_csv(\"path/to/file\") # You must implement this method in the Mission class\\n\\ntrajectory = closed_loop.simulate_with_random_disturbances(mission)\\ntrajectory.plot_completed_mission(mission)\\n'" - ] + "text/plain": "
", + "image/png": "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IzE2HNrcTky3A09yLepSi7sG3sXwvz2My2VzeucuFO4tZPac2cTFxtH32r7cfvttjH/tRQbe3Z/77h1MQmICc+bMITsri5YtWtCseWOmz/iGbds3k5xSh8TERP508438c/S/uOf+wfzl4WFs37GDYY/+hev7XkuzluG5OC63E6fLSXxSfGQ/ne7wft166620adMGgO+///6E9HG1CDxut5usrCymTJnCZZddFrl9ypQpXHLJJVGsLKxD5yZ06Nwk2mVUGc1+476QZZO/t4TcPfvZvHs/eQUl5BWWkFdQwtaC8L/b9pbgt2DzXovNew/913tagpcWqbVoXi+8tUqNp21GArHuavEjIVLjlJSUsH79etyxccd8cclocrrDNcfEhw8pxSaE/41LiCehzs/r6jz2xGPk5uVyxTVXEBsby5///GcuvexSCgoKSEwJt3N53DhdLuJKJ6T/45//ILNhJk+NeZp1995N7dq16dSpE8OGDSMxJZHElESmTZvG/fffz0V9euNwOOjYsSPn9biAuNqJ3HnXXfzw44+ccXY39u3bx7Rp0zjnnHP4cvJk7r77bs7o2o3Y2FiuuOIKRo8ejTsmPEJmOlyYDmfk619q0aIFZ5xxBjt37qRz584V17G/YNj2oU4krXreeecdbrjhBsaNG0eXLl144YUXePHFF1m2bBmNGjX63ccXFhaSmJhIQUEBCaVvNKma/EGLvIISNu8pZsvu/eTs3s+mnUVs2FnMpl3F7Co69ARn04AW9eJp3yCR9vUT6dQwiTbp8b86JCYildGBwHNgLbaa7LrrrsPhcPDGG29Eu5TDsm2b1q1bc9ttt5WZXnI4v/X9PdLP72rz5+w111zDzp07GTFiBFu3bqVdu3Z8/vnnRxR2pHpxO00aJsfSMPnQx4QLigOs2b6PNfl7+WnbPn7K38eKrYXk7/WxatteVm3by/vzNgMQ63bQMbM22Y3rcFrjOmQ3TsJ7gtbwERE5GsFgkNWrVzNz5kxuu+22aJdzWPn5+bz++uts2bKFP/3pTyfsdavNCM/x0giPbCssYcnmAhZvKWDx5j3M37ibwpKya894nCadmyZzdosUzm5Zlxb1alW+BeVEaiCN8MDChQs544wz6N69O2+88QZJSUnRLumQDMMgJSWFp59+mr59+x7RYzTCI1KOUhO8pLb1cn7b8ER3y7L5KX8f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C3/84x9JTk4mNjaWjh07Mm/evMj96u/yEQwG+b//+z+aNGlCTEwMTZs2ZcSIEViWFWmjvj423377LX369CEjIwPDMPjf//5X5v4j6Vefz8ddd91FSkoKcXFx/OEPf2Dz5s3HX5wtFWbChAm2y+WyX3zxRXv58uX23XffbcfFxdkbN26MdmlVWs+ePe1XXnnFXrp0qb1w4UK7d+/edsOGDe19+/ZF2jz55JN2fHy8PXHiRHvJkiX2NddcY6enp9uFhYVRrLzqmj17tt24cWO7Q4cO9t133x25Xf1cfnbt2mU3atTI7tevnz1r1ix7/fr19ldffWWvWbMm0kb9XT4ee+wxOzk52f7000/t9evX2++9955dq1Yt+6mnnoq0UV8fm88//9x++OGH7YkTJ9qA/eGHH5a5/0j6dcCAAXb9+vXtKVOm2PPnz7e7d+9un3zyyXYwGDyu2hR4KtBpp51mDxgwoMxtrVu3th966KEoVVQ95efn24A9ffp027Zt27IsOy0tzX7yyScjbUpKSuzExER73Lhx0Sqzytq7d6/dokULe8qUKXa3bt0igUf9XL4efPBB+6yzzjrs/erv8tO7d2/75ptvLnPb5Zdfbv/xj3+0bVt9XV5+HXiOpF/37Nlju1wue8KECZE2W7ZssU3TtL/44ovjqkeHtCqI3+9n3rx59OjRo8ztPXr04IcffohSVdVTQUEBAHXq1AFg/fr15OXllel7j8dDt27d1PfH4M4776R3796cf/75ZW5XP5evjz/+mOzsbK666irq1avHKaecwosvvhi5X/1dfs466yymTp3K6tWrAVi0aBEzZsygV69egPq6ohxJv86bN49AIFCmTUZGBu3atTvuvtfFQyvIjh07CIVCpKamlrk9NTWVvLy8KFVV/di2zeDBgznrrLNo164dQKR/D9X3GzduPOE1VmUTJkxg/vz5zJkz56D71M/la926dYwdO5bBgwczbNgwZs+ezaBBg/B4PNx4443q73L04IMPUlBQQOvWrXE4HIRCIR5//HGuu+46QO/tinIk/ZqXl4fb7SYpKemgNsf72anAU8EMwyjztW3bB90mx27gwIEsXryYGTNmHHSf+v745OTkcPfddzN58mS8Xu9h26mfy4dlWWRnZ/PEE08AcMopp7Bs2TLGjh3LjTfeGGmn/j5+77zzDm+88QZvvfUWJ510EgsXLuSee+4hIyODm266KdJOfV0xjqVfy6PvdUirgqSkpOBwOA5KpPn5+QelWzk2d911Fx9//DHTpk2jQYMGkdvT0tIA1PfHad68eeTn55OVlYXT6cTpdDJ9+nSeeeYZnE5npC/Vz+UjPT2dtm3blrmtTZs2bNq0CdD7ujzdf//9PPTQQ1x77bW0b9+eG264gXvvvZeRI0cC6uuKciT9mpaWht/vZ/fu3Ydtc6wUeCqI2+0mKyuLKVOmlLl9ypQpnHHGGVGqqnqwbZuBAwfywQcf8PXXX9OkSZMy9zdp0oS0tLQyfe/3+5k+fbr6/iicd955LFmyhIULF0a27Oxsrr/+ehYuXEjTpk3Vz+XozDPPPGh5hdWrV9OoUSNA7+vyVFxcjGmW/fhzOByR09LV1xXjSPo1KysLl8tVps3WrVtZunTp8ff9cU15lt904LT08ePH28uXL7fvueceOy4uzt6wYUO0S6vSbr/9djsxMdH+5ptv7K1bt0a24uLiSJsnn3zSTkxMtD/44AN7yZIl9nXXXadTSsvBL8/Ssm31c3maPXu27XQ67ccff9z+6aef7DfffNOOjY2133jjjUgb9Xf5uOmmm+z69etHTkv/4IMP7JSUFPuBBx6ItFFfH5u9e/faCxYssBcsWGAD9ujRo+0FCxZElmM5kn4dMGCA3aBBA/urr76y58+fb5977rk6Lb0q+M9//mM3atTIdrvddqdOnSKnTsuxAw65vfLKK5E2lmXZjz76qJ2WlmZ7PB777LPPtpcsWRK9oquJXwce9XP5+uSTT+x27drZHo/Hbt26tf3CCy+UuV/9XT4KCwvtu+++227YsKHt9Xrtpk2b2g8//LDt8/kibdTXx2batGmH/P1800032bZ9ZP26f/9+e+DAgXadOnXsmJgY++KLL7Y3bdp03LUZtm3bxzdGJCIiIlK5aQ6PiIiIVHsKPCIiIlLtKfCIiIhItafAIyIiItWeAo+IiIhUewo8IiIiUu0p8IiIiEi1p8AjIiIi1Z4Cj4iIiFR7CjwiIiJS7SnwiIiISLWnwCMiIiLV3v8D5/CIB2CP9RgAAAAASUVORK5CYII=" }, - "execution_count": 4, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "\"\"\"\n", "# Import relevant modules\n", - "from uuv_mission import Submarine, Trajectory, Mission, ClosedLoop\n", + "from uuv_mission import Submarine, Trajectory, Mission, ClosedLoop, PDController, MPCController\n", + "import numpy as np\n", + "\n", "\n", "sub = Submarine()\n", "# Instantiate your controller (depending on your implementation)\n", - "closed_loop = ClosedLoop(sub, controller)\n", - "mission = Mission.from_csv(\"path/to/file\") # You must implement this method in the Mission class\n", + "# # Define the Q matrix (state weighting)\n", + "# Q = np.array([[1, 0],\n", + "# [0, 1]])\n", + "# # Define the R matrix (control input weighting)\n", + "# R = np.array([[1]])\n", + "# horizon = 10\n", + "# mpc_controller = MPCController(horizon, Q, R)\n", + "pd_controller = PDController()\n", + "closed_loop = ClosedLoop(sub, pd_controller)\n", + "mission = Mission.from_csv('C:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24/data/mission.csv')\n", "\n", "trajectory = closed_loop.simulate_with_random_disturbances(mission)\n", - "trajectory.plot_completed_mission(mission)\n", - "\"\"\"" + "trajectory.plot_completed_mission(mission)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-21T19:19:48.343125100Z", + "start_time": "2024-10-21T19:19:48.331456700Z" + } + }, "outputs": [], "source": [] } diff --git a/uuv_mission/__init__.py b/uuv_mission/__init__.py index b551b473..eda77ece 100644 --- a/uuv_mission/__init__.py +++ b/uuv_mission/__init__.py @@ -1,3 +1,5 @@ -from .dynamic import Submarine, Trajectory, Mission, ClosedLoop +from .dynamic import Submarine, Mission, ClosedLoop +from .control import PDController, MPCController -__all__ = ['Submarine', 'Trajectory', 'Mission', 'ClosedLoop'] \ No newline at end of file +__all__ = ['Submarine', 'Mission', 'ClosedLoop', + 'PDController', 'MPCController'] \ No newline at end of file diff --git a/uuv_mission/control.py b/uuv_mission/control.py index 9ce95322..a546f7b3 100644 --- a/uuv_mission/control.py +++ b/uuv_mission/control.py @@ -1,35 +1,37 @@ import numpy as np import cvxpy as cp -class Controller(): +class Controller: def __init__(self, A: np.ndarray, B: np.ndarray, C: np.ndarray, D: np.ndarray): - self.A = np.array([[1, 1], [0, 1]]) - self.B = np.array([[0], [1]]) - self.C = np.array([[1, 0]]) - self.D = np.array([[0]]) + self.A = A + self.B = B + self.C = C + self.D = D class PDController(Controller): def __init__(self, A: np.ndarray, B: np.ndarray, C: np.ndarray, D: np.ndarray, Kp: float = 0.15, Kd: float = 0.6): + super().__init__(A, B, C, D) self.Kp = Kp self.Kd = Kd - self.previous_error = 0 + self.previous_error = 0. - def compute_control_action(self, x0: np.ndarray, reference: np.ndarray) -> np.ndarray: + def compute_control_action(self, x0: np.ndarray, reference: float) ->float: error = reference - self.C @ x0 - derivative = (error - self.previous_error) / self.A[1, 1] # assuming dt = 1 for simplicity + derivative = (error - self.previous_error) u = self.Kp * error + self.Kd * derivative self.previous_error = error - return u + return u.item() class MPCController(Controller): def __init__(self, A: np.ndarray, B: np.ndarray, C: np.ndarray, D: np.ndarray, horizon: int, Q: np.ndarray, R: np.ndarray): + super().__init__(A, B, C, D) self.horizon = horizon self.Q = Q diff --git a/uuv_mission/dynamic.py b/uuv_mission/dynamic.py index 32660f4f..22df98e1 100644 --- a/uuv_mission/dynamic.py +++ b/uuv_mission/dynamic.py @@ -7,16 +7,16 @@ class Submarine: def __init__(self): - self.mass = 1 + self.mass = 1. self.drag = 0.1 - self.actuator_gain = 1 + self.actuator_gain = 1. - self.dt = 1 # Time step for discrete time simulation + self.dt = 1. # Time step for discrete time simulation - self.pos_x = 0 - self.pos_y = 0 - self.vel_x = 1 # Constant velocity in x direction - self.vel_y = 0 + self.pos_x = 0. + self.pos_y = 0. + self.vel_x = 1. # Constant velocity in x direction + self.vel_y = 0. def transition(self, action: float, disturbance: float): @@ -34,11 +34,21 @@ def get_position(self) -> tuple: return self.pos_x, self.pos_y def reset_state(self): - self.pos_x = 0 - self.pos_y = 0 - self.vel_x = 1 - self.vel_y = 0 - + self.pos_x = 0. + self.pos_y = 0. + self.vel_x = 1. + self.vel_y = 0. + + def get_dynamics(self): + + A = np.array([[0, 1], [0, -self.drag / self.mass]]) + B = np.array([[0], [self.actuator_gain / self.mass]]) + C = np.array([[1, 0]]) + D = np.array([[0]]) + + return A, B, C, D + + class Trajectory: def __init__(self, position: np.ndarray): self.position = position @@ -99,10 +109,12 @@ def simulate(self, mission: Mission, disturbances: np.ndarray) -> Trajectory: for t in range(T): positions[t] = self.plant.get_position() + observation_t = self.plant.get_depth() - # Call your controller here reference_t = mission.reference[t] - action_t = self.controller.compute_control_action(np.array([self.plant.pos_x, self.plant.pos_y]), np.array([reference_t])) + x0 = np.array([observation_t, self.plant.pos_y]) + + action_t = self.controller.compute_control_action(x0, reference_t) actions[t] = action_t self.plant.transition(action_t, disturbances[t]) diff --git a/uuv_mission/terrain.py b/uuv_mission/terrain.py index 0ad148fd..24ac42bf 100644 --- a/uuv_mission/terrain.py +++ b/uuv_mission/terrain.py @@ -40,7 +40,7 @@ def plot_reference_and_terrain(reference, upper, lower): plt.show() def write_mission_to_csv(mission, file_name): - # Create a DataFrame from the Mission object's attributes + data = { 'reference': mission.reference, 'cave_height': mission.cave_height, @@ -48,5 +48,4 @@ def write_mission_to_csv(mission, file_name): } df = pd.DataFrame(data) - # Write the DataFrame to a CSV file df.to_csv(file_name, index=False) \ No newline at end of file diff --git a/uuv_mission/test.py b/uuv_mission/test.py new file mode 100644 index 00000000..7038b1e2 --- /dev/null +++ b/uuv_mission/test.py @@ -0,0 +1,17 @@ +# Import relevant modules +from uuv_mission import Submarine, Mission, ClosedLoop, PDController + + +sub = Submarine() + +# Instantiate your controller (depending on your implementation) +A, B, C, D = sub.get_dynamics() +pd_controller = PDController(A, B, C, D) + +closed_loop = ClosedLoop(sub, pd_controller) +mission = Mission.from_csv( + 'C:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24/data/mission.csv' +) + +trajectory = closed_loop.simulate_with_random_disturbances(mission) +trajectory.plot_completed_mission(mission) \ No newline at end of file From 8ade16fe0a4b366af7545d6a5be7312c78b79f44 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Tue, 22 Oct 2024 01:01:46 +0100 Subject: [PATCH 29/33] Add description of system dynamics --- report/report.tex | 55 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 8 deletions(-) diff --git a/report/report.tex b/report/report.tex index a23a06ec..a12ce180 100644 --- a/report/report.tex +++ b/report/report.tex @@ -4,6 +4,7 @@ % START CUSTOM INCLUDES & DEFINITIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % +\usepackage{amsmath} \usepackage{parskip} %noident everywhere \usepackage{hyperref} % Show hyperlinks - claudio \hypersetup{ @@ -11,13 +12,6 @@ linkcolor = blue urlcolor = red } -\usepackage{fancyhdr, lastpage} % Headers and footers -\pagestyle{fancy} -\lhead{2024} -\rhead{Claudio Vestini \& Idris Kempf} % hidden if full page -\cfoot{Page \thepage\ of \pageref{LastPage}} -\usepackage{subcaption} -\usepackage{tabto} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % END CUSTOM INCLUDES & DEFINITIONS @@ -50,8 +44,53 @@ \section{Mission Data Extraction} \newline I started by creating a new branch to modify the Mission class within. I then implemented a new classmethod to extract each column of the mission.csv file into a separate variable, and then return the data as an instance of the Mission class. \newline -The next step was to test the new functionality by making use of the Trajectory class's plotting methods. Once I made sure the new method was working correctly, I merged the branch back into `main', and deleted the unused branch. +The next step was to test the new functionality by using the Trajectory class's plotting methods. Once I made sure the new method was working correctly, I merged the branch back into `main', and deleted the unused branch. % \section{Controller Implementation} +To implement the PD controller, I first analysed the given code to infer the system's dynamics. The submarine progresses at constant speed in the $x$ direction, so needs only be controlled in the y direction (another hint to this is that we only have one set of reference values). +\newline +By inspection of the transition method, given drag $D$, velocity $V_y$, actuator input $u$ and disturbance $d$, the force in the vertical direction is given by: +% +\begin{equation} + F_y = - D \cdot V_y + K_{actuator} \cdot (u + d) \label{eq:force} +\end{equation} +% +Combining \eqref{eq:force} with Newton's second law we obtain acceleration: +% +\begin{equation} + \frac{d^2y}{dt^2} = \frac{- D \cdot V_y}{m} + \frac{K_{actuator} \cdot (u + d)}{m} \label{eq:force} +\end{equation} +% +It is then very simple to obtain all matrices for the state space dynamics in canonic form: +\begin{equation} + \begin{aligned} + \dot{x}(t) &= A x(t) + B u(t) \\ + y(t) &= C x(t) + D u(t) + \end{aligned} + \label{eq:statespace} +\end{equation} +% +as: +% +\begin{equation} + \displaystyle + A = \begin{bmatrix} + 0 & 1 \\ + 0 & -\frac{D}{m} + \end{bmatrix}; \quad + B = \begin{bmatrix} + 0 \\ + \frac{K_{actuator}}{m} + \end{bmatrix}; \quad + C = \begin{bmatrix} + 1 \\ + 0 + \end{bmatrix}; \quad + D = \begin{bmatrix} + 0 + \end{bmatrix} +\end{equation} +% +The PD controller is then simply implemented % \end{document} \ No newline at end of file From e412c55de18bbc5b4669e26c262a5a550d17d045 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Tue, 22 Oct 2024 12:49:44 +0100 Subject: [PATCH 30/33] Add appendix A --- report/completed_mission.png | Bin 0 -> 67861 bytes report/report.tex | 114 ++++++++++++++++++++++++++--------- 2 files changed, 85 insertions(+), 29 deletions(-) create mode 100644 report/completed_mission.png diff --git a/report/completed_mission.png b/report/completed_mission.png new file mode 100644 index 0000000000000000000000000000000000000000..49d6d1dc64f98ea1a18eef200cc310251040d210 GIT binary patch literal 67861 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 Date: Tue, 22 Oct 2024 12:51:19 +0100 Subject: [PATCH 31/33] Test controller in demo.ipynb --- notebooks/demo.ipynb | 142 ++++++++++++++++------------------------ uuv_mission/__init__.py | 4 +- uuv_mission/control.py | 2 +- uuv_mission/dynamic.py | 9 ++- 4 files changed, 64 insertions(+), 93 deletions(-) diff --git a/notebooks/demo.ipynb b/notebooks/demo.ipynb index 829e9ea2..345dbbbc 100644 --- a/notebooks/demo.ipynb +++ b/notebooks/demo.ipynb @@ -1,64 +1,52 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Demo Script\n", + "\n", + "This file can be used to test out functionality of the code" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load extensions and check PATH" + ] + }, { "cell_type": "code", "execution_count": 1, - "metadata": { - "ExecuteTime": { - "end_time": "2024-10-21T19:19:46.296213500Z", - "start_time": "2024-10-21T19:19:46.236892100Z" - } - }, + "metadata": {}, "outputs": [], "source": [ - "# Add relevant Jupyter notebook extensions\n", "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", - "execution_count": 2, - "metadata": { - "ExecuteTime": { - "end_time": "2024-10-21T19:19:46.348966800Z", - "start_time": "2024-10-21T19:19:46.299228Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "C:\\Users\\cvest\\Claudio\\Oxford\\3rd Year\\B1\\b1-coding-practical-mt24\\notebooks\n", - "C:\\Users\\cvest\\Claudio\\Oxford\\3rd Year\\B1\\b1-coding-practical-mt24\n", - "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\python311.zip\n", - "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\DLLs\n", - "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\n", - "C:\\Users\\cvest\\anaconda3\\envs\\a2e\n", - "\n", - "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\n", - "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\\win32\n", - "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\\win32\\lib\n", - "C:\\Users\\cvest\\anaconda3\\envs\\a2e\\Lib\\site-packages\\Pythonwin\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "# You can double-check your Python path like this...\n", "import sys\n", "print(\"\\n\".join(sys.path))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test data extraction method" + ] + }, { "cell_type": "code", "execution_count": 3, - "metadata": { - "ExecuteTime": { - "end_time": "2024-10-21T19:19:48.092466400Z", - "start_time": "2024-10-21T19:19:46.347967700Z" - } - }, + "metadata": {}, "outputs": [], "source": [ "# Script to test Mission class\n", @@ -70,72 +58,52 @@ "# Trajectory.plot_completed_mission(submarine, mission) # to check data extraction" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Simulate closed-loop\n", - "After implementing your control functionality, you can simulate the closed-loop with code that looks something like this..." + "## Simulate closed-loop\n", + "### Test the PD controller" ] }, { "cell_type": "code", - "execution_count": 7, - "metadata": { - "ExecuteTime": { - "end_time": "2024-10-21T19:23:37.477898Z", - "start_time": "2024-10-21T19:23:37.264713100Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": "
    ", - "image/png": "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IzE2HNrcTky3A09yLepSi7sG3sXwvz2My2VzeucuFO4tZPac2cTFxtH32r7cfvttjH/tRQbe3Z/77h1MQmICc+bMITsri5YtWtCseWOmz/iGbds3k5xSh8TERP508438c/S/uOf+wfzl4WFs37GDYY/+hev7XkuzluG5OC63E6fLSXxSfGQ/ne7wft166620adMGgO+///6E9HG1CDxut5usrCymTJnCZZddFrl9ypQpXHLJJVGsLKxD5yZ06Nwk2mVUGc1+476QZZO/t4TcPfvZvHs/eQUl5BWWkFdQwtaC8L/b9pbgt2DzXovNew/913tagpcWqbVoXi+8tUqNp21GArHuavEjIVLjlJSUsH79etyxccd8cclocrrDNcfEhw8pxSaE/41LiCehzs/r6jz2xGPk5uVyxTVXEBsby5///GcuvexSCgoKSEwJt3N53DhdLuJKJ6T/45//ILNhJk+NeZp1995N7dq16dSpE8OGDSMxJZHElESmTZvG/fffz0V9euNwOOjYsSPn9biAuNqJ3HnXXfzw44+ccXY39u3bx7Rp0zjnnHP4cvJk7r77bs7o2o3Y2FiuuOIKRo8ejTsmPEJmOlyYDmfk619q0aIFZ5xxBjt37qRz584V17G/YNj2oU4krXreeecdbrjhBsaNG0eXLl144YUXePHFF1m2bBmNGjX63ccXFhaSmJhIQUEBCaVvNKma/EGLvIISNu8pZsvu/eTs3s+mnUVs2FnMpl3F7Co69ARn04AW9eJp3yCR9vUT6dQwiTbp8b86JCYildGBwHNgLbaa7LrrrsPhcPDGG29Eu5TDsm2b1q1bc9ttt5WZXnI4v/X9PdLP72rz5+w111zDzp07GTFiBFu3bqVdu3Z8/vnnRxR2pHpxO00aJsfSMPnQx4QLigOs2b6PNfl7+WnbPn7K38eKrYXk7/WxatteVm3by/vzNgMQ63bQMbM22Y3rcFrjOmQ3TsJ7gtbwERE5GsFgkNWrVzNz5kxuu+22aJdzWPn5+bz++uts2bKFP/3pTyfsdavNCM/x0giPbCssYcnmAhZvKWDx5j3M37ibwpKya894nCadmyZzdosUzm5Zlxb1alW+BeVEaiCN8MDChQs544wz6N69O2+88QZJSUnRLumQDMMgJSWFp59+mr59+x7RYzTCI1KOUhO8pLb1cn7b8ER3y7L5KX8f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C3/84x9JTk4mNjaWjh07Mm/evMj96u/yEQwG+b//+z+aNGlCTEwMTZs2ZcSIEViWFWmjvj423377LX369CEjIwPDMPjf//5X5v4j6Vefz8ddd91FSkoKcXFx/OEPf2Dz5s3HX5wtFWbChAm2y+WyX3zxRXv58uX23XffbcfFxdkbN26MdmlVWs+ePe1XXnnFXrp0qb1w4UK7d+/edsOGDe19+/ZF2jz55JN2fHy8PXHiRHvJkiX2NddcY6enp9uFhYVRrLzqmj17tt24cWO7Q4cO9t133x25Xf1cfnbt2mU3atTI7tevnz1r1ix7/fr19ldffWWvWbMm0kb9XT4ee+wxOzk52f7000/t9evX2++9955dq1Yt+6mnnoq0UV8fm88//9x++OGH7YkTJ9qA/eGHH5a5/0j6dcCAAXb9+vXtKVOm2PPnz7e7d+9un3zyyXYwGDyu2hR4KtBpp51mDxgwoMxtrVu3th966KEoVVQ95efn24A9ffp027Zt27IsOy0tzX7yyScjbUpKSuzExER73Lhx0Sqzytq7d6/dokULe8qUKXa3bt0igUf9XL4efPBB+6yzzjrs/erv8tO7d2/75ptvLnPb5Zdfbv/xj3+0bVt9XV5+HXiOpF/37Nlju1wue8KECZE2W7ZssU3TtL/44ovjqkeHtCqI3+9n3rx59OjRo8ztPXr04IcffohSVdVTQUEBAHXq1AFg/fr15OXllel7j8dDt27d1PfH4M4776R3796cf/75ZW5XP5evjz/+mOzsbK666irq1avHKaecwosvvhi5X/1dfs466yymTp3K6tWrAVi0aBEzZsygV69egPq6ohxJv86bN49AIFCmTUZGBu3atTvuvtfFQyvIjh07CIVCpKamlrk9NTWVvLy8KFVV/di2zeDBgznrrLNo164dQKR/D9X3GzduPOE1VmUTJkxg/vz5zJkz56D71M/la926dYwdO5bBgwczbNgwZs+ezaBBg/B4PNx4443q73L04IMPUlBQQOvWrXE4HIRCIR5//HGuu+46QO/tinIk/ZqXl4fb7SYpKemgNsf72anAU8EMwyjztW3bB90mx27gwIEsXryYGTNmHHSf+v745OTkcPfddzN58mS8Xu9h26mfy4dlWWRnZ/PEE08AcMopp7Bs2TLGjh3LjTfeGGmn/j5+77zzDm+88QZvvfUWJ510EgsXLuSee+4hIyODm266KdJOfV0xjqVfy6PvdUirgqSkpOBwOA5KpPn5+QelWzk2d911Fx9//DHTpk2jQYMGkdvT0tIA1PfHad68eeTn55OVlYXT6cTpdDJ9+nSeeeYZnE5npC/Vz+UjPT2dtm3blrmtTZs2bNq0CdD7ujzdf//9PPTQQ1x77bW0b9+eG264gXvvvZeRI0cC6uuKciT9mpaWht/vZ/fu3Ydtc6wUeCqI2+0mKyuLKVOmlLl9ypQpnHHGGVGqqnqwbZuBAwfywQcf8PXXX9OkSZMy9zdp0oS0tLQyfe/3+5k+fbr6/iicd955LFmyhIULF0a27Oxsrr/+ehYuXEjTpk3Vz+XozDPPPGh5hdWrV9OoUSNA7+vyVFxcjGmW/fhzOByR09LV1xXjSPo1KysLl8tVps3WrVtZunTp8ff9cU15lt904LT08ePH28uXL7fvueceOy4uzt6wYUO0S6vSbr/9djsxMdH+5ptv7K1bt0a24uLiSJsnn3zSTkxMtD/44AN7yZIl9nXXXadTSsvBL8/Ssm31c3maPXu27XQ67ccff9z+6aef7DfffNOOjY2133jjjUgb9Xf5uOmmm+z69etHTkv/4IMP7JSUFPuBBx6ItFFfH5u9e/faCxYssBcsWGAD9ujRo+0FCxZElmM5kn4dMGCA3aBBA/urr76y58+fb5977rk6Lb0q+M9//mM3atTIdrvddqdOnSKnTsuxAw65vfLKK5E2lmXZjz76qJ2WlmZ7PB777LPPtpcsWRK9oquJXwce9XP5+uSTT+x27drZHo/Hbt26tf3CCy+UuV/9XT4KCwvtu+++227YsKHt9Xrtpk2b2g8//LDt8/kibdTXx2batGmH/P1800032bZ9ZP26f/9+e+DAgXadOnXsmJgY++KLL7Y3bdp03LUZtm3bxzdGJCIiIlK5aQ6PiIiIVHsKPCIiIlLtKfCIiIhItafAIyIiItWeAo+IiIhUewo8IiIiUu0p8IiIiEi1p8AjIiIi1Z4Cj4iIiFR7CjwiIiJS7SnwiIiISLWnwCMiIiLV3v8D5/CIB2CP9RgAAAAASUVORK5CYII=" - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "# Import relevant modules\n", - "from uuv_mission import Submarine, Trajectory, Mission, ClosedLoop, PDController, MPCController\n", - "import numpy as np\n", - "\n", + "from uuv_mission import Submarine, Mission, ClosedLoop, PDController\n", "\n", "sub = Submarine()\n", - "# Instantiate your controller (depending on your implementation)\n", - "# # Define the Q matrix (state weighting)\n", - "# Q = np.array([[1, 0],\n", - "# [0, 1]])\n", - "# # Define the R matrix (control input weighting)\n", - "# R = np.array([[1]])\n", - "# horizon = 10\n", - "# mpc_controller = MPCController(horizon, Q, R)\n", - "pd_controller = PDController()\n", - "closed_loop = ClosedLoop(sub, pd_controller)\n", - "mission = Mission.from_csv('C:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24/data/mission.csv')\n", + "\n", + "A, B, C, D = sub.get_dynamics()\n", + "pd_controller = PDController(A, B, C, D)\n", + "\n", + "closed_loop = ClosedLoop(sub, pd_controller)\n", + "mission = Mission.from_csv(\n", + " 'C:/Users/cvest/Claudio/Oxford/3rd Year/B1/b1-coding-practical-mt24/data/mission.csv'\n", + ")\n", + "random_mission = Mission.random_mission(duration=100, scale=40) # to test on random mission\n", "\n", "trajectory = closed_loop.simulate_with_random_disturbances(mission)\n", "trajectory.plot_completed_mission(mission)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test the MPC controller" + ] + }, { "cell_type": "code", - "execution_count": 4, - "metadata": { - "ExecuteTime": { - "end_time": "2024-10-21T19:19:48.343125100Z", - "start_time": "2024-10-21T19:19:48.331456700Z" - } - }, + "execution_count": null, + "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# Decided to leave this as report was already getting long" + ] } ], "metadata": { diff --git a/uuv_mission/__init__.py b/uuv_mission/__init__.py index eda77ece..483c4ff6 100644 --- a/uuv_mission/__init__.py +++ b/uuv_mission/__init__.py @@ -1,5 +1,5 @@ -from .dynamic import Submarine, Mission, ClosedLoop +from .dynamic import Submarine, Mission, ClosedLoop, Trajectory from .control import PDController, MPCController -__all__ = ['Submarine', 'Mission', 'ClosedLoop', +__all__ = ['Submarine', 'Mission', 'ClosedLoop', 'Trajectory', 'PDController', 'MPCController'] \ No newline at end of file diff --git a/uuv_mission/control.py b/uuv_mission/control.py index a546f7b3..eb592b9e 100644 --- a/uuv_mission/control.py +++ b/uuv_mission/control.py @@ -18,7 +18,7 @@ def __init__(self, A: np.ndarray, B: np.ndarray, C: np.ndarray, D: np.ndarray, self.Kd = Kd self.previous_error = 0. - def compute_control_action(self, x0: np.ndarray, reference: float) ->float: + def compute_control_action(self, x0: np.ndarray, reference: float) -> float: error = reference - self.C @ x0 derivative = (error - self.previous_error) diff --git a/uuv_mission/dynamic.py b/uuv_mission/dynamic.py index 22df98e1..b2314dfa 100644 --- a/uuv_mission/dynamic.py +++ b/uuv_mission/dynamic.py @@ -108,14 +108,17 @@ def simulate(self, mission: Mission, disturbances: np.ndarray) -> Trajectory: self.plant.reset_state() for t in range(T): - positions[t] = self.plant.get_position() + positions[t] = self.plant.get_position() # for plotting only + # Assume the two observable states are position and velocity observation_t = self.plant.get_depth() - reference_t = mission.reference[t] - x0 = np.array([observation_t, self.plant.pos_y]) + velocity_t = observation_t - positions[t-1, 1] if t > 0 else 0 + x0 = np.array([observation_t, velocity_t]) + reference_t = mission.reference[t] action_t = self.controller.compute_control_action(x0, reference_t) actions[t] = action_t + self.plant.transition(action_t, disturbances[t]) return Trajectory(positions) From e9ab006818c561729bd0fa57d7c8e699a33244c0 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Tue, 22 Oct 2024 13:38:42 +0100 Subject: [PATCH 32/33] Add Controller paragraph --- report/report.tex | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/report/report.tex b/report/report.tex index d04b56dd..10a495cb 100644 --- a/report/report.tex +++ b/report/report.tex @@ -28,8 +28,8 @@ % \pdfobjcompresslevel=0 % -\title{\vspace{-3cm} Submarine Mission Report} -\author{\vspace{-1cm} Claudio Vestini} +\title{\vspace{-4cm} Submarine Mission Report} +\author{\vspace{-2cm} Claudio Vestini} \date{} \begin{document} \maketitle @@ -40,25 +40,35 @@ Preliminary steps taken before starting development: % \begin{enumerate} - \item Create and activate a virtual environment with the given requirements (numpy, matplotlib and pandas packages) - \item Fork project repository to my GitHub account - \item Set up a .env file to add local packages onto Python PATH - \item Make sure running files do not give any errors before branching off `main' + \item Create and activate a virtual environment with the given requirements (numpy, matplotlib and pandas packages). + \item Fork project repository to my GitHub account. + \item Set up a .env file to add local packages onto Python PATH. + \item Make sure running files do not give any errors before branching off `main'. \end{enumerate} % \paragraph{Mission Data} -The first task was to obtain mission data from the given .csv file. This was achieved through the following steps: +The first task was to obtain mission data from the given .csv file. I achieved this through the following steps: % \begin{enumerate} \setcounter{enumi}{4} - \item Create a new branch to modify the Mission class within - \item Implement a new classmethod to extract each column of the mission.csv file into a separate variable, then return the data as an instance of the Mission class - \item Test the new functionality by using the Trajectory class's plotting methods - \item Merge the branch back into `main', and delete the unused branch. + \item Create a new branch to modify the Mission class within. + \item Implement a new classmethod to extract each column of the mission.csv file into a separate variable, then return the data as an instance of the Mission class. + \item Test the new functionality by using the Trajectory class's plotting methods; then merge the branch back into `main', and delete the unused branch. \end{enumerate} % \paragraph{Controller} -For full derivations, check Apppendix~\ref{appendix} +The design of the controller necessitated a thorough understanding of the Submarine and ClosedLoop classes, both of which were to be modified. +For full analysis, check Apppendix~\ref{appendix}. I completed my implementation as follows: +% +\begin{enumerate} + \setcounter{enumi}{7} + \item Create a new branch to avoid pushing error prone code to `main'. + \item Add a new method to the Submarine class to obtain the state space dynamics via matrices $A$, $B$, $C$ and $D$. + \item Inside of a new module named control.py, create a new Controller class, initialised with the four matrices above. Create a subclass PDController, which inherits the dynamics, and possesses additional class variables $K_P$ and $K_D$. For this subclass, develop a class method to compute the next control action $u[t]$ given observation $y[t]$ and reference $r[t]$. + \item Modify the ClosedLoop class to correctly call the controller within the simulate method. + \item Test the controller by using the given demo.ipynb file. Merge and delete the branch. +\end{enumerate} +My decision to use a hierarchical class system proved effective as it kept the codebase modular. It also allows for future development of any other type of controller: I subsequently developed another subclass MPCController, which was better at tracking the reference but required more computational effort. % \newpage \appendix From 6861613f34c80e94a926ce58a6a95e3bb3a54361 Mon Sep 17 00:00:00 2001 From: claudio vestini Date: Tue, 22 Oct 2024 13:46:10 +0100 Subject: [PATCH 33/33] Add SubMission Report.pdf --- report/SubMission Report.pdf | Bin 0 -> 129170 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 report/SubMission Report.pdf diff --git a/report/SubMission Report.pdf b/report/SubMission Report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3659e16db305a0be77c84d637f6d6ea875ffe2ad GIT binary patch literal 129170 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

    va>Ts@(5?sY zXWtxaf>(>)>UjYG77<{8qt;%&dpAEsS@;6p$Fhj=sVtRjTi2Yduz*G>k6^yd_;;uEHzi-8C66?PT! zm;Ho%^AG_60m8}ACF#c70SQ8UM}A+0v3u+2y!hGy@Lx#nN%#l^Pq)vnQ(uQiINOx; zPrf@H8nj>2jE%A^JI@L?n>levzu|p%kdXkdAjQKWfqaSbhyd*D2>GYGfR6)me2|{u zO{7wYaR{EdHctays7$i?h_>FC2sM3uhGv6wB+!Aj-o76%`sev?ouXfTRy^v^e)6S$ zM&5K$zIQRn-#Rt?dCu@*uTCKFGB2O$i_)p#u9NK*aFPIHgysL2?vc70UGP?LzGN4F2c|{0#PHdD5}&{`7kX z`%GkA#`bH@+SHkCtvas0uO0&ex(@ISGbY>CJr+xD9ZuTC8qnzUJkneFd1hKiP0KqE zleh4ifWntq{$ln7v?I&V(G~CMtd@Aozm0qgYF<~0$9FJ69B@$A?XVUSoPT7TcZ|5Y z0Y8u)PUnFEX>*H7RRN~$3YHe!qR*z+xM?u;c$Y-5Kv%%|aIXC5v7+$s>~%-7s@tG0 zc{=E}f}s;9p69fDYxe;3ngQvq%uRw%49K=$g}?IDv;BRv9bRSp5$^^8)QS``IfoiO zC{Bh9=zuaZsC|R+x8AP;lYZVDPd<0_!ulk;pVm-H>Wn(flW}K9c7?PyPNq1)j`!Z9 zgg?r^SHJ^!8^1Az^~j*OEglk;?2v1o zn=;WjoRlX5dY3M>5mV)b?9Sn>AY$1Hfdd6~Zem#$j1E`X|Yr^xz=_qz0HmJQEA9N2QX{cK~tznj3h%jCj6ej1fL z)m^{iJBnC-TsjJu%%%m4DcGZ}M(0$^yHuL-IGd;V;F;i*XHv$mghk@{9Y_MCOQuR2 zfzA22USdnz186v@w3+kzIpK~At22w&!$yre)>L|hjq5q$vNgm?TIF44ET>&MseDIytuxXe!FPg10kPmoKaR*V zhAgHFk%o#rY4l)~Ujk1CG;wo>YS|lwH{;NNVZN^^bAY92q3nxQE?kj4g0lceGv{f~ zKW&bD-8OfVR&}xT(aD}3GLjHxNJaZxxtWO567gRgm{X2d47AhyksMFaU4F9!kSN$cXH7(cU4%NF!nb)y{6DSStx%=iPB&A z4w*PTHPuv!N3k*WWNRmev}Tg{jXzkK1t-qC$)q`pBvW*Bm1=P1cBgQW#?2^+ki(4J zq^c28-${0kO;9|g2l}9;iE$gsvAk`DBSUeVF`M2XzSaixM%V#V>gW+}P!@XKOYXEg zVfz@4S4UT4k;JLWLi1Fx99NKe>PbIJdx!pD65%^zpK@m>yl|p#ssZl1SDY|N`6MTs zmFJ!Q-s1rh^*6qL*rQsr3q?C!b&1KBhioU2V--CQ?kBsj*Fo!iRP~miz7`_pl87;1 z%q>;^^UG&i$m+F@FbJ_{(OlN)tC8LaT$%stM zFuvgG44coVWi4+;6xkrFU^%?IC!P0jv3fxizF6E2vsO?XReWJE8elpgo|50HNBrC} zB%BIB>v6FoWR&=9I+#>#k1GhS50Kzr-<9juc(P@{` zkj2T-lb32{`AssT@Gh4QIY?9YEs~o{;OG?B#=xL7Rv1xJabyWWC4{rJQ1}Cfdc_O+ z!hSGr;K-77?PVx>&#=YY+`toO3w)O1iDJQ%>Zuamxff*gOlYv}ZT!ijETti5TtxP{ZXJz*>uL1p-FRQk= zh$)Bc?XdROJUzywT488ek)Lv1veu^kaD|v|ytZ7-Z&GYtRA!&S$BJUzJ*_pE{VcAQ zF^)7=$~m=;eIuM8cp`i_A1+0?pA5aHtj$blCw^|_mPECCZ(T@8ED4e);8U>)+ z83|JXv93MdVe1yJTk=_qT(DPtsQBiK#oWZp)aBA+Bg>K2dv~*ERTh0xB$nG@GM5phr;NWqL(zF=#!6Ay38w?R2i!cVEfy%&SJaPcHHWb4%8~Dquyss?}bDkvp0FG z`@vQ6nNq@#_q1J~7Ds-mwo90~6qKyj>$u7=l*byU3TTI{`yjJ05* zXivcTM6>guOU3Gzjfc=a_`~ngTZ~-yk-v|YldWiX5%wRdF?XvfMBsx`OOv;qpneCF zDYTEo>(@{*HZ2Qtia?wpy(_xAv@vYUm&FfHNm68rF|d}Vj31Sevv%qnI>6T^qK?_m zacEjX8BR^s3+vlGV!9}zwi!lPgcO1~-3w_Sy+CUWjk^zYOp>`Ts@?@*ao#BPU zfqurILvF_bq_bHPtE4F8UrKxHzJPwur|+ymfI|bl8&lQC>5hMneen7bZDW0b#Y_u! z2v(t)802`+Gm|UZQ%ejd?E+S)-3WDmki?tsPtODM>Q}&`4 zQTPzmuvIb$!n&@3wD)@bmy;pW8cd;;n*rIduLmKnxcSj}=mnsBBXvTZ7;4{|}4zdy|pI2a(EZMB_fw4$MvCTvB?OY){ zcxIJ6QE_c*=@}BTJgX}VzL_P*EB*3!_PDYciWKQg$2tPJv1xj!m0Z6K@5d|SHw~~- zMBrTK+Ug`@Z7F za_};*db>y)Zi5`juS8s`kWzYA=-sN>?=^ZS9FT0#zd(E-(O~t}JS-(&i;fGefeHQ0 z&DC!DVHJK3eM|4V;CpyhhDZjxoim8DuAD9%oc~F#{G&*6dJzkPmYhir>>3KCwrC-3 zBD#5{2?703juVSfY!60^K80*_4&zi+B7NC8r-4bxz0taPx!WW!0|UAZ(Ul8-usH(w z=bDBlL^gXNVu<*mfE)WeE_$hR28|MZD1$R@ZyMtU#6_)jH7l|Q`ab&=@7?UD;>qxS zeLezmbYWF7s%?xkN^9*)W7u@b)ra+Jk18cy-FBeCsPb;1d9jo8f)XG~UGTzTkoZAP zJ<3aZVo%og_xim%D;1cK#v|m-rek1Mo!m~vco?028{m5lI`b8rT1Q-77MRY&Y6N(? zGC8Pm?#Jc2_3l$`i4 z-y-A7wnB%}lB4_kW<__DJXG`)3h9<7lvJlHY$S)K56&gRj=gzb~YEl@*MxKbkLL$Y$5MW3@hYSk*Cur^IDZ@I#}hxSJ3PYm{8wc`8f-g2%Bq7eHA?k zz}*wli%jzLe%ouaqF7U}iI`-C^!D44w;`7>R#;FZQwsSAxCr?T^`ZHrM#9Fc?WPW( zE8{QGQJCdDN72;zb#8pWd4}d>o7*x-_6kFW!JkaE=AoMjmyU$q=2$4+DTKoHC!z%^ zm&Q}2#)J$7(sr$~Z8Y+In?gVgM5Ns%b>9+8D68rz_t?Tok6jWZ0=szT zX-{Yn#!ymTSF;uugbIu0K;<+kqkE3m@QsO+?NA;^X@H;Gnj9SAIFmv z+hMYnE;(<7S-I{VWiB$R&f=a~%gUY(&+iv@7BgA$^)~3464uYtsO;12A&^Jha_Xn# zt^`th!50J6c5rxobU+FbsrzXJYjo-vCGKwtKz%0pWJPs4FlJuti9J)qoOGC&E;T6y zf+o&MYeh-hcj#@R`+>-hM#1HIY21DsZzmo!N(Hio?D&VU1%{hkedQ?a%rIf@K5J`n zk4WijTFz&cxKWII;90eohZs>{RvJeYa9!=$I9Av#+U@-~w`pXM%cOloep3Fywey_eZ=J1#I!sn$K-7e3ZO=uW#<55A~&2X?wC~vDsXh5 zpZfW>P!RPF`rI2enK$ufzz9JwZ7o@CA1P&4d4u{Cn*8N~yF^v?HjJAweEF~#4FFad zGDTATxyEyl#zU1LQ4dve^I7(rP|4?H&WybWcNL` z?n$N=OzPs;aa|&F=#1(xIrp%=%50gQfdue6fh~cG;b8YHXzWlbO97-^L65hNS`DlC-C=HL z{20r<#Xq|-mZqQy&25_;185lyy0 zO_|zQXt=pncS(r~Ep`_}7F5h{S$ccg&OGIlvq?<^84!Puj#+9N61GMx!k&7(9`m%`Lj)Iz+CA7AI1OCqnff{l=inl!R zw*b%$QHE>_F4X_+hx^8!bC`1xC#7h#dqKp=#6oI4v7|ZA7PDLczpm5SorJ9e@ zI=$A0>@1JcCNw2DEd#bH`h0(WG7b_V$`R--3|%EXsSop-@!Wd7#*g$H?`L3$B~#Wo z!^1B{HA7=CLz!AQZQ&A{W-K@!>kJIhTV>uF2Q7V>;n}-J@XWpnI#|8|*Eufw@!dEW zaYB=QodruZZl)i+JX8quOfLBg8b18$Mst3YPU3{_8mB3#cox`)h$+DvF%9!$7rSqR z3eI{>r2=Aiq6s8VBXe>^7I zVH>KsNk=mD5)6Lsbf_pViRD@uYh`HXnrrL$am0l{@Xjx4@tXSVl^3f!OXq^GYMKFY zw{A>n(h}KqcCY;UOR4d9*mFPyZGX61Nyuri@ho^DxTk8k%Xz%q4{e+0B|DSD3H?@1 zIV_Ib55b;28f301Dn7^Y8<{NEf_fHhJv?s&*ZK8S(te1BePGJVZ!VTjrKMy~cc8Fr zcm9HSWEbs7r)-5d8|)+nTIJ~Qj6zBIblK!#ZI}3yAZaE2Q+#k9tY|Q>50smmX2a3( z04vmMpj~nH9d+r*b7$GJy#bLmaK)g<{<^zofwL{6esRdYg@1|4p*p~(VpNbJ&AFS;yPz` z5}|>(w+rBip@3i>7i~-Apj6It#1mdTMK^DvU>Y86QR57X7=`6#EaqF}jM6jMk7S*S zX|u%9_>s{o?D$^l>io2>$I$pa=UF;2VW<<(eBFCO$qjKhU503unRub8=;&rMo%7F0 zEyDnNNxN_gayAIC3j}QVZEL6ZFN7VJTo)a?@yN{4h3n4V*SXuf z?ye0(FMC4-eaw>+5T|2)gvy9F=Jk8Fsrm_Z=Pz-ru6c;v<9f)w-{RKYc7n3MivXjmvh%ot7EtB@la3x07t<)U)!A?&a2??I@p3m z&-gL)feA3YND>H1{w#^LNwsB(@ z_o+I!s@~RU>tU^jF~@9k_W$c2e+f`zWZz`_fuh|lZQPnTKaN5TXVdXA|Hz&phYVA- z`_CSZm%Xa2{V~XT{acP@=@`tf4zVYEf{-0xvH3^^3w2*GrK3lEr(k=FbOo`z)ushDU3AM*lE#{@zg65SbJWRa3kr3JX6TLAz@=S2Qo6ehOsFLrfcvbkA^KYc2*0mw+7 zdk3dXN)WrZ9w58wNSFwvmX=#AD$1*Z)8F#uS!V!fIbn>}K?VgQv_aEbM@S0#jLc91 zwT1D+)tb6Cq1U`eeW42GSRA!8O-}X{Awtuk!{{>UOnWgc!h4;V0(*NQ)`KPe-+ll+XvC?mW>VH~G z82{3({yQT6pIIpr%YWD?{t}UV|K)$eN?E^+Aphv5Q2A!1+Ra78A#jDp#09@F6y)35 z6)n)g(Dh98&>a9E3xx$GK_$#ZK+Me%5GWua%^^vY`G0erK7DO{e0u(AbM3U8^qh)0 zI`@9O>#%&T!uSxrwveOdmBxz+x^VLVB1r6qV9pU1g^dn_3?69wg%UP20=Sst17Vue zg)R>s9qo_}q%0s0ava;!1}L-5YZryLj`3Wsodbvr z`L&UT?gwvn7;^n$$STsV_mPXvj$nH&+_O!N=M_LVh7kj}I}P^R;tUYBbGwAE*TWY` z*w0rR7J(4#g>7ATrP~joWNTC&9VYrdAP?vVxoQq{9}*n%!VFSBn4XBAe9~Pte@QVs zW;XmoAR%|I?6coiu#i9I*bqN?S9f>YoxeVUjv5{VUeHlBoItnUb!tV7gNg`IydClq z_;ooi3kVoo|CR^-@sk>lyqPcZ<@743zk|!mVnBU0+6Z>=^<%JQ`3H(W8{lVCYhNut z1wA@75j0p|r~frT8rCsdi+T>)do$AQcvLkX$WibkP}{bqUnsuT_A?s55%5DGa4ov7 z8^mQd*Jmp*KR&-H2n@7SKs%wlU-#^dNy~UPkIyZ-Fu*k{x*RtI!u#3F(-_<|jVbdO z)AiN$RzK*kUupT(+J z(1Vuz7zd{>S5m^yX81tcQ=$;m6BqExpUacJkP}G$0a&@-2;IEo{68Vk-|=`m%Jgub zV?*GxV!O5NI?O)Z3pk-dTs{kF?J3Ohkpum~fUb##t_u9vA#_5fuKl)Pzyb#3&8T@n z!))n5jsu1Od?t}%q5EF*eK7#P07702=-t#maJfGhd@p=0(c$3z`T-P?%$6tHFO^-l zuvIAQ-y*AE#$s+fQ zzM1KkV#;Z2w>tD*7>Kwzl`_{Jo3DeY+jo8=e~XpQ)>mt5VFy zIYrWFnDWx)1f9Upq;DB*1}hg4HWHh%yjZ55sy`1FVp?{6bf0mdV%7d2&-^~1;2r7B=TFm&BM@oViH44wDq-HIx4dhKyx>PR(#EBY# ziFPCg6JwKkG$2H}!bg3ePUBH9N*`-s%1VA+n_U$ewFxMFJ6(~+(}h3{+c{A_$>z4x zc|9YZUaX;%O<-)cLD*v$S45QKsc3#Vxh##EKiLt}pt(F1S!nLgc5pKG()(24;8e*i zVO9*;J;Xsu-!b?YWf{wA8(BkCosN_-*X(1CXL7GV0`X@u$yeg;c)}i2-8mSTrm)*_!|=5vinq3{(Y*! z>g~me$bFBxr)2L*Mu+ueFoL2$IguVHwb&t4-&UkQDA<|SX$SpVG zFbTq?H`ZDYv)L@ZNPS@buc zgcum!Z(Dbqc~&{eurmSB+Mj02)_HYG!p5|2ARs_xchz)0oK`yx0>vGCCx*5&+5NT; zx@=0~eBJVQId(RaP0!Z2PpTdB#f`?7Z7uIu**x@NHT-r8buZt@Za;0)P%>CgH(%Nu zaQ@BfAYIp3Y~1eVK&WMwIthKzw9BU8ESI@NtQZ0fY*gv4o+&$K!3PId%(I%CJNeSm zo7;H$I(v}Rq^Q;v#cOv&h}}N-#XC+bvOCUkV0ag&e=m`xz&#kd#{9e91rW4Tp-x%O zLI^=;aE7NYalK#u(zUY3T=d8W$^*Rp{D&JR?H2VUfyt0@T;Qa>9b2pTt4De=`5K%F z$K#^jYHr_=g9h#B+5Yd1h%~`9y^{&V-@~0A0d`+8gem)SnXyVi42F~vHI2W{wZc6w zeEcS&f-S4F$NlZQDm?tkGhh10R7XwLh3qyFQywWn3g6{SL8s8wE1)4gHsrS<$7vHE zgy%&>fOJEM0#0blnDQoJ(rv27RvXfUg&9vDZlAecN)KO8*0aO{uqawEvr})+#Mi>E z!x~g{J>)!P*aCH`Boqo0qd@^U0(@!uCh%Hy2kAhsj>sXA4bI+%4yV5!Ng-` zNe8^H;;BWO(iM#}TjV>C$Gh4gvn+>UiT2r3_~tgbYdPp9`I6Bd1-byZ`sdLwTN8P> zo~3QDLt}y#)5iYA^X&l;W=&U6=z-sGs(2S8%Q)H30sg@K< zTl0gX=N@x0C0afFk-#E^QEtSE+~H226qxZNrJB0_*kFOMae@U?C+->7OEBpy*bC;+ zhSG|`HATJrW4UkDbFGiklT4-pV(ndFPg@GYq=U7lmy@}9n6)R8sX=HbpGl)CTD{s-b-Mgw5nWe}UKzKt9a99as-mXMlKCOKc1$xNIclpENqxt3dZ!{$9G zXIO}#1Dig?7zUUqa2YCNC+?U8;7^6r%0L(4$AY^wC_|!yfiUwOsuB^AS8l4Jr~~zm zrodO3h7E6mZ@l(5s8r7t36s_rXmL6~sv1CSsPLN3aF{JiW~~-v~KfL)`&v7kY=vV$4HQsJTE6SMYu4+xm)nYX%bt)OW`NrbkH3&b?fsEs1q4)GPE~!ucghFL( zr7bKwAV*`^{K5PLm`KciI2QCk8gWY8-EZSL9dcp$Y=}n4$>d?pwmAN+W zV5fqPb1aqS9x~zG1Z7-%aIZo5Os*nyJmiP4c@RbiKE9e0+0nEYR<6aO6G}H#_8f7fVruBuX95k)tao1SOIAgYw?nJ{DD%DcPcCcDvgh9VTL<4F*h-%~ zTM%4O&*Z$Z%`Met*sI@V>_4*hlO%kP_*abH6S>Lf3aC;%!a#FFRNT`@@G{aPcS%rP z+pK1Ptr(0pHY@fU)t$A!4fxdeUN%Ot%PmAM9d8`@0bmp*b1FVi$tWa)nun|;_H!Lx z?IX|9b(EH!P+OZ%Z)txv^(F7&h$#(BSTW08!+BbM)nV;8$cRn%twuW0#*!_$DD)bG~`T7 zi8o7B#OBk(GFgff#Ln-N(L;(tLUJc&vuF-5tfWMd85WL`D(-BB)<$C8%eGugabQ3k zq4a8N?MPgyA9f2TzBlp8D%5Sm1v%Zs2!e;QD)*B}$+@Z@^Eb-}X2+6h>LBBh;WPe> zTSe@ds+XS@LevN=8#>yaQW%}kg8skZD{(c>*yuN0)7X>+Zd5(QaYn9^eKFL#hQt@W z*r0Y-Pfj5!-nQ>A6e?{wMJ`4Yf|*t;dULfh*~-|V*!yx!^V@!0-Y1**+t4$Fi`1kI zKVj?C@V4_e(K=CO!%3{-^vQbIvk*UiR&udcpW!o4Kf%qP8(A=={5*S_np4p<-#;lZ zglE;uRdvVKjmvq!Icr4Y7nAZ*;ZB zAu|kxemlsJfOK^G*;L!`Cd8=QcCl>9vM?&L%tf{2LCAfoJN-fUMmBY7OCB;y3A^ZglL0Y1Odk!4=plW3s-9jlFRvvsG(6CTUc51t5d0bRQI8G1Nm_w*Nj4 zNfBLkV$+p6FZ^X@c@=DZg+O~)k}jeJ!l(q|Bu}tQL3XX04ixUt8tvcb=J{f?4&cvM?@f);;OYZoL9n zU3<*ntR@?vajv1vpbtpQQPCN0wativQuz>DMt{CiBH(i+Y_JF zvF>Lx4jCz?596u1Lqz4@bW#0jv|mQ+#Qvq^=9A|b#O;R|b}IVd^|746=o+X+ zFkLJOtd_Ax=m+V4OzVg$D#|~vP8>JKJ(sF*>}Ll~ z!tL3L?#{8Ts0+5@+2RlR$o3wxf~hrdYoXzJr^kaoe9u+nXWD^u{P8{y#zu@;Di?U# zFtIYNKEGxps$Ofs2uj=_F0VRpudJY`%u^d*+yFLc@mte1Y||0;Y9qrwlW*fl5@0G^ zmtL+?Ug)xR34P>>tCGrJz3~(_)CfkiTaAoAJOy6itbk}hW>v%%XMLgfes}+DX#Zl| zzAr=n7+vsNpgizAH{f;9^O&#qo&3`Q5@H;2h79WbR4)D^?;svl0N*tiBvTbro4@5` zP+cRMDM1m7U`GsA3!w@{C%8zb_)x^}5sn7uf~=hEnrT6+2%>f)w0%{W3e_)a9R09# zOY1He&5XT>cy2HvSVu><@-AJ4=#}NxPnCDLY?Mu$Ppq5Led_(=c!gaCw0L~kPe?N1L6mD*vOGzyPC?CA zG!p%+dk_da#7rGBS34)^Y|DORdKh!WCES1@h9N6U2I2rjcM=4#6=(AXz1D=lBOo zflYD5WVk#gymMoFl2^$maVwd54&Tf}A9S?zx~WxTUWo`zrv6-#tbC*>xZMxU(iE0U zW0|SfkjzT0Y{*>|Y16oCg-5u{sYCZMf)_7h{a;p+*yo{A*^1YlW`pi!$qgEQEX53^ z3Yx_6+J~Q(Dn$0pf-_>{(GUXVwmwXi6ia?xin~{eeby9gKikyr>K;6HE~0Kw1f>sR zqVwSKmGt|n!`8Y@jV^1HT3q3~vu9sF`w=a%z8v2!u3aZtGsV&5mL`)^U=N13v>&yQ za}+GfoH`2UV5PFEBxp>{8wC@%a<~bG#IVOZUZKwqM2<#COm*r`lMr>l?6@Jlock2P zpgx>5ehAU@bY0N>Fnl|xtyF%jbFj5M#2J+yesZB}o(oib&r2aH9wev?2v1rueR9Z1 zFO(QCV#efAQWby(iIc#gIGRvKbxSchDql8i62A(IxDTPP5&`OlV0wIMda(-3%6-ry zSu^3?Z8rL8ryMF1EGw#0{((iGeD&~7%U;%ptrT;!NQo8Lj1HA}Dy$^?Gfct}(I`fm zB+TPs+|VR+r{XzQZi#bA*j#LM5&Ds5T{V=Im*6MvI{XTsBuYD;-@u+wHXYZ7+`4LY z3)ve{NU=5%jyaEF8!Dz%&fx=Le^kHpYRJ{vXbmc8)MW$Kna(4RI3bzk>La5(d2$sd zh|NBE63b3U<_oKCo+EYxz#Ab4%g?4{=^QTC*SW4&xP!c)dAMw-bVS=PJfq@>iM={BcH7v`@0^FUjLn?Y&;3x_&q zuc=q`1?#kWtZgVSi!fnsIk>4v4flTX**KhQ3C2dsklIhOoSDlx52eE*A&MDpU{$wR z!MipW&-ZEd*u1q?`{_4R(%R4;Y~;g5Wq3iyMV~Z#8#4Pgl%g)`edU4Yv4Ok${&~cu z1Jo|GhzyyZf|v6)?8^Z+(2D+$a&KQ{qJyNgU1)#)nH(t#ON($LV~U0u5?hw0&P}Yp zM44G@f@*U&2gv|B@uW=9so|tXlK1U>yUG-}^DZ%Q#6@Dv0%Oww~H3%7s;?85%ei|R+&wgEMIWB7czCm33wqzpN(8=+{hBne@kHRgs zP-}xA-{@hWc~X)=G#knVv*~HRp$mkYV1wPxvrb^BiBBO5B%64g+qhTNK*tQYk64%` z`iEq*qfwD~Pk$}r`Li+(V^WL4r5y+2y7#CfZfaZ`J3avo=H#(DZ_x;L7Z-~8lV6xc zM$Owp?3q1793Cw2szK3ftTk-nPPI!~eA4lPMbotA8TS_7MB0AQCI{^UV*7{t+B-_D zCpmm2;fMx*%(9Jvmrlgfvm&+JmkU>t>MO#~oXR%QtC`W={f?iE&STqS=ulbhe)ah| z*($O-f$qvyLd}Ag?oMjFZz&1hmfS$1B|Vo?!0$M7K4F#`wD*o$iR5_#76e|q7zX5y zj5I#~A4KVDr;iLoZ{u>sKd{<&`3e)=$1T5ar4o9+ReKyF*1~r%7ZjN# zYRNy*iVOMg{yS{^E*1DssP_NMT{8WhH#)i6{+${A|MQjK4T<0R%5P-I!1!Gt`u*X% zq47VE;lIGVzseB58REa@EB~Rk;hzFSw*Ng``H#Tx-)j#3D$D$zfg$sM#wq^-hOFPe z^xwmktQ_AJng1ZOcLQfm_kQcnEBURw0M}?Lc+pwfS&A7CLV%dOypYxSq+&6jCu&`( zzEHKHkl!fwQ>j#UwRrliYx?ag`|d3>!|~`-=g-k<_L=O|WN(=*aSnvYO7DWacocv* z0y(Js5d%rL&5?|3+ew7!iQI~2tO9)vL)I(lGosUL${4jdF@ z%T)}3pD+ME14Ud5G6Dnw7!b)9Sl)U80Hq#0J8}*YL`$q--^>8^*!ROBTT37j7}n91 zCIDLyI6%U8w(`sRJ6q}B+Do8E%nu%AAJnQxB-jJt_X7$jRKMeECqQ%PN1%N&BI51+ zJu*mp4(LxCI0x=`06F%dA9@f%{p;L%@;%iFfNgqc%h_`v;T!-%F?RR5P((>QLrCXf zz>we+hBE8%@@ZHASU7qGrLZ%O!31AGmS3RT;P2*e0K^clsqK7A-PpbH-O;@W z5MzTVQTHK4H~^1!ATT+_MKobIeb>M};>UFO=>DSm7rnT8>_AqbpzpFcF!GAb0DiS7 zpQZ4y_JQpNGXZAoyQY~{5)0#Ftk-& zwmq=QRF{m}H7JDT(`lUcg zk=p^#1=N=S04TwL4*&ub4mdC<0{HoLpAR4MHM+-V#S;HW?zgXdV(@nFI)>}Z-t%E9 z;0Ew@Ul`fPhz7R($u^4zB;t>74toFXu(wV8!W;K>f6)#9+`=erB|_+aSoa0|#N$~8 zjk*2|>|y+a6Sx6{gY1G9_XW!m_|e$LNl(7ManRlP8=c+-3ppN6O%&Si5)$a@gCsP6 zaa)JJgclpw{ymb#cT~pb0t+Z6=p=vUT2~Ie0tMk&m-9S9Afs092Xo5rZe{v&xDTc( zO2mMGPYqW6p9}!Yld$J9QJE}{#8B6u`pt+?cds%gesTDS!M(o$YFJ)@&wttsbb~>I zK(zLJ=f`yCwtx`$M^LzMkdfP0mUZ+z-=*$i(-2(Q*eY(>IBFn2z6WbB=+n?(1i9Iw z1H?l)J7KK3%6}SNBR_LX*EFpENY>)|-$=?(8pd^Z0&<@yP>3YON&cB2led zxfe-uOC5QQq!UTSIeq|7SOY-gAB6<9!~`Z)VW>95dI|@ndSf)1*(DHJr(qk1aW#}l zoRwN9yKYe|Y(j6l+AL48{}qVG*EM-^CWFR7y>MEE>WM2W;<|RkYq=?}z=!j#{P|Ed z!n zFvjvlBkY_{LOvMLO`NJ4_z646fibaMjViG3x;IY`3~|bdTIEFgv(UI0b+zR#njt7w zNVuXqYJ;ObdQuVuQnPT3koc94M-g#ejJ_RiC4EwNqyVVon4{#L<;F=pGi4+6@)p|1 za|ybd*;GOl*Os}{8tXiQoxk>q;inu3Nm{e1^^+Az*BmmByPWx0Ib}%c;%@=x)$4(y zK{+t=!=s(EW|tBvKKZx|9K%R96aqT>q6~&5o#D}$PJIHDB6M~M0nvjF)v0@fF3Ix^ z#g%Q+6{T?g?Y-dIKubz6t{ddWayHnuF5PC?8b>Y!MAEvYu`9Q2GtIJbXFNwbz|EFS zyV_hMh96G&yq#&)_w&R(A!X+`{a$a&c=lUMu~?6HlPG6|c=&k=oMb>M)>)l~7QQoR z!)Z4jR>kd^RL&bx`8)3*Uw&gY^4ewDG!5uKSJ3HJ^WJM?ImZU-;43y<)`j<%9;Ui( zp1B}LZk1j)HR8%2L<29o&SE3PBq{wg_qFQv69~(voq;$=yl*53Wq_5$yCv2ML1S4! zpyh}_?XfSg!v7%LYTPjguce&J{m!E}n_AR{muIWxw?65OI{%YOV-OY2@sF;lqwY4kx2?hy-~b^ntV`(Z=efSwGK+R z<+Y_1GcR~W3^eN`J+^_jvUhH3oquV}6QBOR>o}>W!PF}$!b!O>rSFm1$NJh8RhZzb zEmWD|f|)7qVsZxP(3c;qc+TV2&H zykryZV-R#i##?z#R|3P7cd0421Xcg+2u%&KP(Fs09;mh0jB@9AxgCDZv<*q(v!+ip znfsM_)n#(uPGz@M*>l}RRrtHZ{FZt6kL|-68?bN9h-o7uh>pc@d=Q!s3b6hx2&qKB zbZy1iON0~7S;xulvYf&}O79v$QAyi9XlzPHCh<#E8#3xiQijG#F1*8gu6KE1G7kI- zWj9-q$!rYPrOp$*l58f;&@_X*J#i6Hx>C)~^jR^+7=f*8mk5%jX{?&+0{49LP-V&Z zea3hmrN0H7*)zMNkgSMchYvBm7(B=YI_&Rb%cYe!i|8cy{F8q1#}JybH7J*07w*l0 zSPfL>uQX$uxx*PM`Q@nv2uQgulKPTq6xXkn89_g>U1VQ8PoDIAiPD&N`;De|hdQb& zr;--%6`0EN0A7fT?lRe|3i*O`VheBl1We=iR@uHT5^Vk}Yk9;Ua}~o#8gd$-$l33V zy#lB%L`s$eh1ZC920tg#TIDyTo)}&2GqxhokXR5?^8Ok4|nnhmg<~ z1W84O+MQ7?rtc*rNFweIt?I>O^dikXNF!D)iukZ?fliC&9=ga6st8<@2#Qe!T4WD= zG{$Jv@GR4zKQT?U!O__%it3O*V4y*s-$Y}cV9EF8if(xHCjt_++o?nS#I)jpq01i< zvx~f_#GS_j?H_SCX11tUzgunCCz;0EM3{Rmv&*HA{)oN`arPdls|;h^D!vo9w1>K+ z0SP;V5CyC4ChHW4rOHtF?;N&sj)D;Rv1EP67yZvpqS+u}iYILhimh!6BF}IOteqY! z-6t5OI1}9zhh~}0h~3*I=gVOxDu5C)k6i>f3>Cmba#fV^>My(&k`Gqc13vWdB6-x= zEapQ74MM;DrfkdI9Tq8V7QWL=Gq}Ybt}glLW6Fykt%(9Tt?~Pn^f3rRbbfo58NLHr zWI_|?;2MajxizQYX!kt9t44_V)v-qg1VUo4`6X+PEy}YitC)jVnhm_zcr1rEMqWf- zNyBXQ0JYb$7dSRFQ`23d(#H9Bw1;yl{JAj*ZsSSY3I1p7rVTFV1=xm4tn$Ke$zN)g zve9ybI0ioummE(kESL0dJXEb!OoT?eX|3m5ZF1A?M(t8PeJmC<+)@I8!phz3TlWxG zBaoN`yTY#>Aq8Z*HYmEqOs`vmU)|08U1^hb9o{>@$1ACU_{yVB=bz=#H)v zoL-wugR-*eXRQoP`mbr3_0)G9U&kKOaoar4tWFI+znee`JcC}`RbX>~L{@|TFi?2; zoUyE1P8KQZrsged+td@2bmTt@ zzqc9;5pWubFjGNO*oOpkj(=nd7SVr@Z@w1OtGRoHdrN@F6yJFb;2bi+BE+))ROim1 zajEd+OT!sqeq$=>s#{aS-E==wNt&K*6V|QPHLb?_DVTl6qy_$e(kC z8~ZM_5(|H;uhy)ql6cj!{jkC=?Lfz02y|ahSWf@p(}_Gd(4J0312M zv$3UUot#wTTMHqC2sp2=Pgjd zZgvG(k+ee67`N6z?+9Q5o2hQ?;ysBr#3d#cCfkYdfc_miu*V<^)4l!j8eBWmqK8(z z4+1qeM(0#j;e~c_&yZ6W7X}D)HO0qQ0cO)3tra2xl(1XlKM@hJ#DA z_KH-d6qj-dQ+7YW#W~_xKxQ>fSU%=BS{QUFrbEl{gs^fgF zZl52DCh;v-q9yX-?0Y6T%(2@lqoEySOGHMf`C?cmuNn6Q{3TmQ`gv4m&`AGl+9~|> z<-`@qDyN>fJB4xhrP^Eeki=xy(M}m=zk0`)= zdj;EyLKY+}sR~`*)`gNG9hc99FHVWZDp$fTfyBpv1ioZ_4<(s z-IY$2!qJe%Q>?b)cFEx_KQ$j*XrEfD8g2NB1woWa44EYA!e8fjZOh#^|1`{ZwS-Og z+^z9~b5F53Phor@)|T6fFTR0g;WMm|=Mv_cQ`xk8%oKuV6BFg0&J4Hph4w%h<05nx zu5o7qSzN|i#h~Uq^T_sG-MqT?8m>_l0uiFp6Y*XcL$bk+YGRUS^p+r)xsl50%)z3q z;KpkX65|qSiiz>Spto3*}8))RTHl6&D42uw8jeMW<>_ zfh`_dzNYRvQaFN-#O!`Wi8)HIP`RTh?u?nz^T8OQHQWk69<~&J90uQ@`j92g@Iv;8 zGvLo20^L@}-WQ7=ITQ1OX7Z1QK=%xv=EJ4MB`r{0sGxIqy?p6jLtENZoCfKlQIog= zs&W}{n^J+b_hyzV#0{&5*N=lU3>W!8;Z#^XxvAL;u z&SnVjgR)E>F7>6)E(Wt$bA|-Ph^%#6$EA4eD94SxiK~lAb6c~vOtddRtt};cb&;9! z5Sx@DJ2vMlL4s$(;s zUSz@qIy9Huy-_U8Mn0RWO&M(+3hukE@lFlvafU0+UjCnBt0p}eL?HXZbnYy8Yt>ZB zx5_fDJS(c&tIY#Z(_F{q3`3aQhJ2>J6rSmyir3OH@2E-wAbmpmBnkrAqD?G=?7{uL z<$Kk=%QD%m>KSB}Fy2iW_TD{{jhR(oPHQKOy3q+)c}$3iAtrqVmt~HbRpflqmi7m| zzEh5Z*G$79B$0J-#V!%;FWl`dJ4G?F(Dp*w>^}h^Vtes<}Tx$!ZBU!pXlC2cb{tEG5T}>M_wofIw`!1n1AU zGt<;6J0THI5S*XMr1Ln_i9n7#gkn5*t1gKu5A19|&A3z4Uz54u*Gw|+U%>Mh z8far5a|0u7$70X+xvoMRph!wmBHwSj*v7xyN zb;v(erkGNyZMo}&op>YP`zD};t>8i-6mpX@YhzGW@0I6K`zSxWKY%8>Ib}j}vY!n) zxo1DU9`$A!3GTh48_z;JvxTA{1>i!>x}M+sIAO@}VYz|LoE45$3)$2$=uMZcrIeCdT18i!l0 zg-NQ4n%|%k=4%c3yc9fdz+qFE9>+4f3#WmVAT#9fC z>!G{aAU~zlB`a148)c}H1eCV-ms@6kZFskWZFuKH>C)zLQiYtBh#|b=+lA>kkB|F) zmrZM}-JJg_A8yJDL7)Fcb$j%*MR9RJh+xPf-sEB1-B(6vxX* zrf-ZkzAKmPvFji(WpXq%7<_QiB6PT@ML_qICTZp{Qrd1LEvY+oOe=1dpCb!>jKTOL z0)iu9q8;X5cYcUL>#$VbLV{QMW)*mY1t?G2EGo#hdQm@0%CSlwWMi_c8ri*)$$nu_ z-UGgk47Ftk1l633Po4W`mC|tfuZmw~Jg=?07Plo_`8=|(`w3K`(<^mb?8HJeg6Rck9JSw$54TIY9UmV$)W~wI3|`s{U`V5#?GvqgkEK*1zvLlRr>j~fage*UQ<1%hpVK! z8J8K$YsltP^;%OiSh%EiBBNJ&${6#YS@L`XZSqYJx21!&4U&ovI2Y-w6)xoig)yJNH(8r?F@;tVsIpdWD!XT)n}3Ta zd3x_6-f?T8F!`2B&z9y5R)~o|k@oSXuL<EB^ttr|=k@~iogU3?79xwv0=S^+xy2f-? zibmn;R>TPErF$~S_UBk88(I-P#d$H&vvXsa)ZqKRM8f%~h3`?egQ`KNe_AG_+APgTychW zIwY=K|7&G;{S2y!s}J^a0Hdsic$TRvs}(pTc`ok%CW0>oXgqo{d^W4`tB?2xo*p;4^6f%>nP4v zukmpoKgYxyGxW!sIZR1o`$8qbRl4-7_9yz?HA~aVSFF#Z)jeIJ?jP^Riq@b{tdTCx z!)bmYyYa>3^p)RCef+YQbue){a+gwR8Dk-YmVKdH-rxCaZJr%{O z#-m6-S=2(7-sa>CU-20l9r2uhy?x$EzwkobNr)xAgo1?Qo{jr>Ue9{bxDG_k9*#XJ zvj{B4!5n1VQwnI7Y`fZ8IJLF6T`R{|K#KDZ_whibB*Z2_O#i*97QN;{0#jVnR))i^ zNq5~8S?*~L1;3+6FU6(~HJhP>A7>@Ew3l?JYXT+;1wDZM0DgWxQ31`fayyH2;*~Ae zg(C1fIZ`7coL1I^Ar*qRyZ!l*B)f>}q!$Z=7xAIgL04!rCeMPk0Z-C+(4S5c-}la; z@PPIQ9&ogQCWY-VcY@2iy4uoiXPy;FTkCoQ|dn<>k-0vXS4rHRt8N=00R1&N3p(D3p0@J!NT+onYHCaeALH^Oo1M2FkuBa7LbeR=RA;U3|mA!1ahHN=s`{tBfd0OUK zv#+d;Oh&&jU}bb}3?2j7&igTCL*pb#pe@JvWB6Gwtp!h6C~_R%o&GQ4t4C&J-jB}ARCk#jwmvQ%K?m%73(Tbor11FAFKXqo8zk>L@Ppp79INK6Gr*91p zrArIbyg@lVLFMpAuRI2KrfXd08qQD3o;$7ZsNcwrTUP5S@t{`jD4g0tZuS>}Ki?aJ z`U+iUzuvAUuO5-}CT%Q6;2!>ht;-fTjQI33AJ^!vx&Gy71FTue>Kts?phK^w-)nZM zWnm1)cOG=vL2po&v|;BUr@r#!KlrA(CeS#4v?`^D>a}dN_ACAFc^}kP)Su!ZSjJbQ zzSMh*S(P6v%2Ry^Im23v>+7r*2$ehIrix=7Q!kz?bYE%-YW0x37yALUBk3-xP$b?x zXVJGcch?EGz(Bvyz#NZz%CyR0V$iknofDHTTKms|OQt#;4w~bB*skV&+Ah_8P#V#6 znD#}+J?L$~F2`*GyRgm=+c?Kvba$Ea%T)xikpMM(+i;})fJ?#b(QQ1I(QV&w?&sn5 zgx;^dTPVwXa$#GJB?sIc>OT7pK|Vq!%$N@mVf%9m1A`1z;(=rJiDQ{|UPpsJrXuGS z_M7BUhy8!-Z1K8@FE_j;jBKMe@R~DhXzU0iVV^#%Pr=I9r)fT)<@)C}cRqkYq_IQ) z$+r1R(EWc%gX6P(+r9r`+x)jvHsoJV+4CmKMT_dVG#g@Zd5F-@507_^s?|!I!Ptz>RYlKBNv<&;o0!=R?ah>KYE7(E3`M1HbfxT1XYQN%TMdNquyQJ?a2HG z&tesA;mb|_h~9Bvb+?TwZh5e`I zvx1KgZMC#BZt}*YNbsQ+lv+`Fa@t6)S^sv$n&i;^&TUc?t|@&@QfSm}z$zV-ctupJ zkwu!(8ipE20J$!s&|_dxN^29)V#}6n+cC=p_e;J7^v`PPD;S#%fO?qS&(xpM%KpjW zmjM?!*phLbo!Y}lv1d+6DDFu(mG3d^19KB}gUpzL!)7Nrf75b#w9Hk6I`K>hXC4IK zqmD8~Khn?8@95Zp&)9W@<=){5LpLSZ?#(O!N*M^|-Qlrg0(`_ZI^@_4oXAz4VKKw5 zlUMrFqo{Glv57U!6MCr!N!RCz1o;kqtL(<>KE`b-fek6m``)E6V=dI3Z_Olc+`L$0QM!=$A-6O2AlgoCqCfsx_eiC%r6u#0s=9zy(IY9QVL7 z*Vk1s1N)F+#zIZ-FHf=cmg&~`kHQB2|c#XI*Y3A|cpkjTCP0jwWL#d|e)-B1rAlE3^Omf8Ma zW7h%{)pdp;@sZ%P_7NPl)wxE=u+hETd+t5=VSH4L@c~AHD7a#D9~W6QEbb!#JBipN zI71wr8egH7Kr$gQ6(vnl)Cf4G)o76rWu~zZMdL6|+750_YzdX^e|A~+?zwjxc3^hS zfB*md|9{T+|L4KwoPjCllnHmorSdKNemUvfOQ-Mr__K|9>DKRRpIF~~yRj>6ZbN_Y zere?=yMo$=S%(~hGp$osUU_2Me+$}nWW9K#BDlIcw9IOqTRnbP<3p1dPWat{+h1kA zf4Dc){N-XkRB~=z`;~!dDJ!m5mIVgpO&#CGKHU|>6EZD%j#F2URVw#()Vt5GtKM+@ zRN&%)72kcn{h9j8cP?AjRFwbif%N3uQD6L|d~{DzX-jfX@~CTXCD&AME_-ck!Bl~-Oa6B98~8ac?`=<2U2Ajo=KACBcHeLOEnCrHtKE}3 zBR?tQsHND_J3a4_L$7$!dtdjQ&9Pk@H)%%ZTP5PYJ+?ns9XAW=`MU0g<+mR0&3<%A z@YngB&m8-e`$rkd*wb4sJX`)p+qT`aZNA-2RqB3MO;!EE{&9OO*L_+2*1pklQ*Y_c z!=EkR`J3A2%NtMFt1mQJ3g5XfqvGRz$^089Q(T`{I^SPpo3yBZ&fBBpR$=+YO?S7q z75`^&>BLVP{+W8CZSBq-7pf-S$~|(z{%U34iF313H+(Yri1p1w53c;XGDiN(i&MVt z%AC^qQTL&&t*1Ph!K#1Fytt`;dD~64`GK)ZY-JDLJ^k96JA0k=qH=Oy->5UUzR2_U zufH@q`=yP0Z|weg@PmV1+n#M~@g;u!`5&C`SrzJ?lyUTj*Rv1Y?+e^(k*|iD+Xnx= z`d&-p)zCF9G%$N${-^&4)%-s6a{J);#|Gx_zZ#n63hjDqpoK3xSa;^qQW)m&;Hj@H zr<;EEWm(nb*BADsHa${0y@J11{ZZ>+`TB2`cy4?f{PSP;t_aRQp8xe!lVH|g8L`L{ zfJ-hAlac9m`IvQ#MAjZT40)+Dhb(>~>y~W$Ce23zd+62)q(5QiNf3+hXXLN7F}xtK zGF&wwNixf;3R4`|x)o}Q2@CpTScveD&LL?OmXs9UQ|M>k%%B9 zK^Q@3!u#h2&2WEELSbHw zfc-X7jx$dmF0p0|TcCn@+O~k*@Aee43s^8f-;z-lKu1`Ky`%(&S9dA9z`}$FSWv8! zCe1fwu8vCDaL8yK71|{X%J>>Ue;93)1Nw-KIiRZz8Y=BuLSiDP$rv1%`Hj2l+6?!!!l<(ADvLsz~mgqi7gTH>7DYGT5go3hf6hpJDPBFAFph zwQ)Lt27mFOX(BSvR2hz3jN{`;iL#mJWL~B80!^gbnde23_6=x~O8LtpUZ(p4Xex|< z@wOl&!=5Zf69kF!mxsuK0hr>$pxHn}FoC7{kZjO_1u`^{PZU=?!UD`8X_`p)Iq+ff zKW~&Qruzfkp?ponoprI3H2$)b`Bp+Ny$naxqC2Puf)OBoTia$3uzkS z48BQ7GPJ2A&^YCRi^en1$Z~|%fsJh-VOTNJd=ecqP@kk2ZB|H5CZAYe$|h|fBe-0V z<`YzdeX^(;{FN~ok)t~NUOSvx>Sf5^=T^D5Ymmd3jAgLEm?Jw1v4&iB(Erpxm*q>&q?#i0jPK*S*;8dL|=i~(0IWIi9@R1o