diff --git a/aerpaw/results/readControllerLogs.m b/aerpaw/results/readControllerLogs.m
new file mode 100644
index 0000000..cedbde2
--- /dev/null
+++ b/aerpaw/results/readControllerLogs.m
@@ -0,0 +1,19 @@
+function T = readControllerLogs(filepath)
+ arguments (Input)
+ filepath (1, 1) string;
+ end
+ arguments (Output)
+ T table;
+ end
+ assert(isfile(filepath), "File not found at %s", filepath);
+
+ T = readtable(filepath);
+ T.Var1 = datetime(strip(strip(append(T.Var1, " ", T.Var2), 'left', '['), 'right', ']'), "InputFormat", "yyyy-MM-dd HH:mm:ss.SSSSSS");
+ T.Var2 = [];
+ T.Var3 = strip(append(T.Var3, " ", T.Var4, " ", T.Var5, " ", T.Var6, " ", string(T.Var7), " ", T.Var8, " ", T.Var9));
+ T.Var4 = []; T.Var5 = []; T.Var6 = []; T.Var7 = []; T.Var8 = []; T.Var9 = [];
+ T.Properties.VariableNames{1} = 'timestamp';
+ T.Properties.VariableNames{2} = 'message';
+
+ T(ismissing(T.message), :) = [];
+end
\ No newline at end of file
diff --git a/aerpaw/results/readRadioLogs.m b/aerpaw/results/readRadioLogs.m
index 9ab042d..a54079d 100644
--- a/aerpaw/results/readRadioLogs.m
+++ b/aerpaw/results/readRadioLogs.m
@@ -2,7 +2,6 @@ function R = readRadioLogs(logPath)
arguments (Input)
logPath (1, 1) string {isfolder(logPath)};
end
-
arguments (Output)
R (:, 8) table;
end
diff --git a/aerpaw/results/resultsAnalysis.m b/aerpaw/results/resultsAnalysis.m
index 0d425d2..1c7b59e 100644
--- a/aerpaw/results/resultsAnalysis.m
+++ b/aerpaw/results/resultsAnalysis.m
@@ -1,6 +1,23 @@
%% Plot AERPAW logs (trajectory, radio)
resultsPath = fullfile(matlab.project.rootProject().RootFolder, "sandbox", "two_around_wall"); % Define path to results copied from AERPAW platform
+% Measure intervals between issuing commands from the controller
+% (make sure this is ~4-5 seconds at minimum to avoid overwhelming the UAV autopilot)
+r = dir(resultsPath);
+controllerPath = fullfile(r(startsWith({r.name}, 'controller_')).folder, r(startsWith({r.name}, 'controller_')).name);
+controllerPath = dir(controllerPath);
+controllerPath = fullfile(controllerPath(endsWith({controllerPath.name}, '_controller_log.txt')).folder, controllerPath(endsWith({controllerPath.name}, '_controller_log.txt')).name);
+controller = readControllerLogs(controllerPath);
+rpIdx = startsWith(controller.message, "Sent REQUEST_POSITION to client 1");
+rpTimes = controller.timestamp(rpIdx);
+dt = diff(rpTimes);
+dt.Format = "mm:ss.SSS";
+fprintf("Minimum command spacing: %2.3f seconds\n", seconds(min(dt)));
+fprintf("Maximum command spacing: %2.3f seconds\n", seconds(max(dt)));
+fprintf("Mean command spacing: %2.3f seconds\n", seconds(mean(dt)));
+fprintf("Median command spacing: %2.3f seconds\n", seconds(median(dt)));
+assert(seconds(min(dt)) > 4, "Minimum command spacing questionably short");
+
% Plot GPS logged data and scenario information (domain, objective, obstacles)
seaToGroundLevel = 110; % measured approximately from USGS national map viewer
plotWholeFlight = true; % do not attempt to automatically trim initial and final positioning and landing from flight plot (buggy)
diff --git a/resources/project/cCclYJTOop6jkdZsItlf7iNuov4/boyWn-mt0RFdVNBj1mgEcGMQh_Ed.xml b/resources/project/cCclYJTOop6jkdZsItlf7iNuov4/boyWn-mt0RFdVNBj1mgEcGMQh_Ed.xml
new file mode 100644
index 0000000..99772b4
--- /dev/null
+++ b/resources/project/cCclYJTOop6jkdZsItlf7iNuov4/boyWn-mt0RFdVNBj1mgEcGMQh_Ed.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/project/cCclYJTOop6jkdZsItlf7iNuov4/boyWn-mt0RFdVNBj1mgEcGMQh_Ep.xml b/resources/project/cCclYJTOop6jkdZsItlf7iNuov4/boyWn-mt0RFdVNBj1mgEcGMQh_Ep.xml
new file mode 100644
index 0000000..a84ce4e
--- /dev/null
+++ b/resources/project/cCclYJTOop6jkdZsItlf7iNuov4/boyWn-mt0RFdVNBj1mgEcGMQh_Ep.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file