diff --git a/@miSim/miSim.m b/@miSim/miSim.m index e80b198..7fd9f97 100644 --- a/@miSim/miSim.m +++ b/@miSim/miSim.m @@ -68,6 +68,7 @@ classdef miSim [obj] = plotH(obj); [obj] = updatePlots(obj); [obj] = teardown(obj); + writeParams(obj); validate(obj); end methods (Access = private) diff --git a/@miSim/writeInits.m b/@miSim/writeInits.m new file mode 100644 index 0000000..3719342 --- /dev/null +++ b/@miSim/writeInits.m @@ -0,0 +1,33 @@ +function writeParams(obj) + arguments (Input) + obj (1, 1) {mustBeA(obj, "miSim")}; + end + arguments (Output) + end + + % Collect agent parameters + collisionRadii = cellfun(@(x) x.collisionGeometry.radius, obj.agents); + alphaDist = cellfun(@(x) x.sensorModel.alphaDist, obj.agents); + betaDist = cellfun(@(x) x.sensorModel.betaDist, obj.agents); + alphaTilt = cellfun(@(x) x.sensorModel.alphaTilt, obj.agents); + betaTilt = cellfun(@(x) x.sensorModel.alphaDist, obj.agents); + comRanges = cellfun(@(x) x.commsGeometry.radius, obj.agents); + initialStepSize = cellfun(@(x) x.initialStepSize, obj.agents); + pos = cell2mat(cellfun(@(x) x.pos, obj.agents, 'UniformOutput', false)); + + + % Combine with simulation parameters + inits = struct("timestep", obj.timestep, "maxIter", obj.maxIter, "minAlt", obj.obstacles{end}.maxCorner(3), ... + "discretizationStep", obj.domain.objective.discretizationStep, "protectedRange", obj.domain.objective.protectedRange, ... + "sensorPerformanceMinimum", obj.domain.objective.sensorPerformanceMinimum, "initialStepSize", initialStepSize, ... + "barrierGain", obj.barrierGain, "barrierExponent", obj.barrierExponent, "numObstacles", size(obj.obstacles, 1), ... + "numAgents", size(obj.agents, 1), "collisionRadius", collisionRadii, "comRange", comRanges, "alphaDist", alphaDist, ... + "betaDist", betaDist, "alphaTilt", alphaTilt, "betaTilt", betaTilt, ... + ... % ^^^ PARAMETERS ^^^ | vvv STATES vvv + "pos", pos); + + % Save all parameters to output file + initsFile = strcat(obj.artifactName, "_miSimInits"); + initsFile = fullfile(matlab.project.rootProject().RootFolder, "sandbox", initsFile); + save(initsFile, "-struct", "inits"); +end \ No newline at end of file diff --git a/@miSim/writeParams.m b/@miSim/writeParams.m deleted file mode 100644 index d65da96..0000000 --- a/@miSim/writeParams.m +++ /dev/null @@ -1,29 +0,0 @@ -function writeParams(obj) - arguments (Input) - obj (1, 1) {mustBeA(obj, "miSim")}; - end - arguments (Output) - end - - % Collect agent parameters - collisionRadii = cellfun(@(x) x.collisionGeometry.radius, obj.agents); - alphaDist = cellfun(@(x) x.sensorModel.alphaDist, obj.agents); - betaDist = cellfun(@(x) x.sensorModel.betaDist, obj.agents); - alphaTilt = cellfun(@(x) x.sensorModel.alphaTilt, obj.agents); - betaTilt = cellfun(@(x) x.sensorModel.alphaDist, obj.agents); - comRange = cellfun(@(x) x.commsGeometry.radius, obj.agents); - initialStepSize = cellfun(@(x) x.initialStepSize, obj.agents); - - % Combine with simulation parameters - params = struct("timestep", obj.timestep, "maxIter", obj.maxIter, "minAlt", obj.obstacles{end}.maxCorner(3), "discretizationStep", obj.domain.objective.discretizationStep, ... - "sensorPerformanceMinimum", obj.domain.objective.sensorPerformanceMinimum, "collisionRadius", collisionRadii, "alphaDist", alphaDist, "betaDist", betaDist, ... - "alphaTilt", alphaTilt, "betaTilt", betaTilt, "comRange", comRange, "initialStepSize", initialStepSize, "barrierGain", obj.barrierGain, "barrierExponent", obj.barrierExponent ... - ); - - % TODO add sensorPerformanceMinimum - - % Save all parameters to output file - paramsFile = strcat(obj.artifactName, "_miSimParams"); - paramsFile = fullfile(matlab.project.rootProject().RootFolder, "sandbox", paramsFile); - save(paramsFile, "-struct", "params"); -end \ No newline at end of file diff --git a/aerpaw/@scenario/initialize.m b/aerpaw/@scenario/initialize.m new file mode 100644 index 0000000..39056bf --- /dev/null +++ b/aerpaw/@scenario/initialize.m @@ -0,0 +1,30 @@ +function obj = initialize(obj, initsPath) + arguments (Input) + obj (1, 1) {mustBeA(obj, 'scenario')}; + initsPath (1, 1) string; + end + arguments (Output) + obj (1, 1) {mustBeA(obj, 'scenario')}; + end + + obj.inits = load(initsPath); + + % Instantiate the correct number of UAVs + obj.uavs = cell(obj.inits.numAgents, 1); + [obj.uavs{:}] = deal(uav); + + % Configure ports to broadcast to drones + obj.ports = repmat(obj.basePort, [obj.inits.numAgents, 1]) + (1:obj.inits.numAgents)'; + obj.udp = cell(obj.inits.numAgents, 1); + for ii = 1:obj.inits.numAgents + obj.udp{ii} = udpport("IPV4", "LocalPort", obj.ports(ii), "Tag", sprintf("UAV %d", ii), "Timeout", obj.timeout); + end + + % Initialize UAVs in scenario's knowledge + for ii = 1:obj.inits.numAgents + obj.uavs{ii} = obj.uavs{ii}.initialize(obj.ports(ii) + obj.portOffset, obj.timeout, sprintf("UAV %d", ii)); + end + + % Update opMode + obj.opMode = OPMODE.INITIALIZED; +end \ No newline at end of file diff --git a/aerpaw/@scenario/run.m b/aerpaw/@scenario/run.m new file mode 100644 index 0000000..98659e3 --- /dev/null +++ b/aerpaw/@scenario/run.m @@ -0,0 +1,73 @@ +function obj = run(obj) + arguments (Input) + obj (1, 1) {mustBeA(obj, 'scenario')}; + end + arguments (Output) + obj (1, 1) {mustBeA(obj, 'scenario')}; + end + + count = 0; + + while true + %% UAV operations (simulated only) + if coder.target("MATLAB") + % Iterate over UAVs + for ii = 1:size(obj.uavs, 1) + % Determine behavior from UAV opMode + if obj.uavs{ii}.opMode == OPMODE.INVALID + error("Invalid UAV opMode"); + elseif obj.uavs{ii}.opMode == OPMODE.INITIALIZED + % Waiting for starting position to be sent by the controller + if all(~(isnan(obj.uavs{ii}.commandPos))) + % Teleport to starting position + obj.uavs{ii}.pos = obj.uavs{ii}.commandPos; + + % reset to no command + obj.uavs{ii}.commandPos = NaN(1, 3); + + % Acknowledge command receipt to controller by reporting a new opMode + obj.uavs{ii}.commandOpMode = OPMODE.SET; + end + else + error("Unexpected UAV opMode"); + end + end + elseif coder.target("C++") + coder.cinclude('udp_comm.h'); + % Iterate over UAVs + for ii = 1:size(obj.uavs, 1) + mode = uint8(0); + coder.ceval('recvOpMode', coder.wref(mode)); + end + end + + + %% Server operations + % Compute guidance for UAVs and issue commands + if obj.opMode == OPMODE.INVALID + error("Invalid controller opMode"); + elseif obj.opMode == OPMODE.INITIALIZED + % On the first iteration, command UAVs to go to their starting positions + commandPos = obj.inits.pos; + elseif obj.opMode == OPMODE.SET + % begin experiment once the controller and UAVs are ready + if unique(cellfun(@(x) x.opMode.id, obj.uavs)) == OPMODE.SET.id + keyboard + end + else + error("Unexpected controller opMode"); + end + + % Transmit commands + % Command drones to their starting positions + for ii = 1:size(obj.uavs, 1) + obj.uavs{ii} = obj.sendTarget(obj.uavs{ii}, commandPos(ii, 1:3)); + end + keyboard + + + + % tally iterations + count = count + 1; + end +end \ No newline at end of file diff --git a/aerpaw/@scenario/scenario.m b/aerpaw/@scenario/scenario.m new file mode 100644 index 0000000..1870d09 --- /dev/null +++ b/aerpaw/@scenario/scenario.m @@ -0,0 +1,28 @@ +classdef scenario + properties (Access = public) + % Experiment + domain = rectangularPrism; + inits; + + % State + opMode = OPMODE.INVALID; + + % UAVs + uavs; + + % Communications + timeout = 2; % seconds + basePort = 3330; + portOffset = 1110; + ports; + udp; + + end + + methods(Access = public) + [obj] = initialize(obj, initsPath); + [obj] = run(obj); + [obj] = setup(obj); + u = sendTarget(u, pos); + end +end \ No newline at end of file diff --git a/aerpaw/@scenario/sendTarget.m b/aerpaw/@scenario/sendTarget.m new file mode 100644 index 0000000..e686fc7 --- /dev/null +++ b/aerpaw/@scenario/sendTarget.m @@ -0,0 +1,24 @@ +function u = sendTarget(~, u, pos) + arguments (Input) + ~ + u (1, 1) {mustBeA(u, 'uav')}; + pos (1, 3) double; + end + arguments (Output) + u (1, 1) {mustBeA(u, 'uav')}; + end + + % Branch here depending on environment + if coder.target("MATLAB") + % Simulation - update target position + u.commandPos = pos; + + elseif coder.target("C++") + % Codegen - TX starting position to UAV + coder.cinclude("udp_comm.h"); + coder.ceval("sendTarget", coder.rref(pos)); + end + + + +end \ No newline at end of file diff --git a/aerpaw/@scenario/setup.m b/aerpaw/@scenario/setup.m new file mode 100644 index 0000000..8f13ad6 --- /dev/null +++ b/aerpaw/@scenario/setup.m @@ -0,0 +1,17 @@ +function obj = setup(obj) + arguments (Input) + obj (1, 1) {mustBeA(obj, 'scenario')}; + end + arguments (Output) + obj (1, 1) {mustBeA(obj, 'scenario')}; + end + + % Command drones to their starting positions + for ii = 1:size(obj.uavs, 1) + obj.uavs{ii} = obj.sendTarget(obj.uavs{ii}, obj.inits.pos(ii, 1:3)); + end + + % Update opMode + obj.opMode = OPMODE.SET; + +end \ No newline at end of file diff --git a/aerpaw/@uav/initialize.m b/aerpaw/@uav/initialize.m new file mode 100644 index 0000000..b5e61bb --- /dev/null +++ b/aerpaw/@uav/initialize.m @@ -0,0 +1,27 @@ +function obj = initialize(obj, port, timeout, label) + arguments (Input) + obj (1, 1) {mustBeA(obj, "uav")}; + port (1, 1) double; + timeout (1, 1) double; + label (1, 1) string; + end + arguments (Output) + obj (1, 1) {mustBeA(obj, "uav")}; + end + obj.label = label; + obj.port = port; + obj.timeout = timeout; + + % Branch here depending on environment + if coder.target("MATLAB") + obj.pos = [0, 0, 20] + rand(1, 3) * 10; % just put it somewhere so we can plot it + + elseif coder.target("C++") + % initialize ip/port + coder.cinclude('udp_comm.h'); + coder.ceval('initComs', "ip", obj.port); + end + + obj.opMode = OPMODE.INITIALIZED; + +end \ No newline at end of file diff --git a/aerpaw/@uav/onYourMarks.m b/aerpaw/@uav/onYourMarks.m new file mode 100644 index 0000000..75ccd53 --- /dev/null +++ b/aerpaw/@uav/onYourMarks.m @@ -0,0 +1,20 @@ +function obj = onYourMarks(obj) + arguments (Input) + obj (1, 1) {mustBeA(obj, "uav")}; + end + + arguments (Output) + obj (1, 1) {mustBeA(obj, "uav")}; + end + + % Receive initial position data + initialPosition = read(obj.udp, 3, "double"); + + % Acknowledge message receipt + + % teleport to desired position + obj.pos = initialPosition; + + keyboard + +end \ No newline at end of file diff --git a/aerpaw/@uav/uav.m b/aerpaw/@uav/uav.m new file mode 100644 index 0000000..aafa6d3 --- /dev/null +++ b/aerpaw/@uav/uav.m @@ -0,0 +1,22 @@ +classdef uav + properties + label = ""; + + % Communications + port; + timeout; + + % State + opMode = OPMODE.INVALID; + pos = NaN(1, 3); + + % Commanding (not for codegen) + commandOpMode = OPMODE.INVALID; + commandPos = NaN(1, 3); + end + + methods (Access = public) + obj = initialize(obj, port, timeout, label) + obj = onYourMarks(obj); + end +end \ No newline at end of file diff --git a/aerpaw/OPMODE.m b/aerpaw/OPMODE.m new file mode 100644 index 0000000..fd86fb0 --- /dev/null +++ b/aerpaw/OPMODE.m @@ -0,0 +1,10 @@ +classdef OPMODE + properties (Constant) + INVALID = uint8(0); + INITIALIZED = uint8(1); + SET = uint8(2); + RUNNING = uint8(3); + CONCLUDING = uint8(4); + FINISHED = uint8(5); + end +end diff --git a/aerpaw/basic_demo/comms.cpp b/aerpaw/basic_demo/comms.cpp new file mode 100644 index 0000000..9579959 --- /dev/null +++ b/aerpaw/basic_demo/comms.cpp @@ -0,0 +1,83 @@ +#include +#include +#include +#include +#include +#include +#include + +#define SERVER_PORT 5000 +#define SERVER_IP "127.0.0.1" + +// Socket init +void initSockets() {} +void cleanupSockets() {} + +int serverSocket = -1; +std::vector clientSockets; + +extern "C" { + +// Initialize server (call once) +void initServer() { + initSockets(); + serverSocket = socket(AF_INET, SOCK_STREAM, 0); + if(serverSocket < 0) { std::cerr << "Socket creation failed\n"; return; } + + sockaddr_in serverAddr; + serverAddr.sin_family = AF_INET; + serverAddr.sin_addr.s_addr = INADDR_ANY; + serverAddr.sin_port = htons(SERVER_PORT); + + int opt = 1; + setsockopt(serverSocket, SOL_SOCKET, SO_REUSEADDR, (char*)&opt, sizeof(opt)); + + if(bind(serverSocket, (sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) { + std::cerr << "Bind failed\n"; return; + } + if(listen(serverSocket, 5) < 0) { + std::cerr << "Listen failed\n"; return; + } + + std::cout << "Server initialized, waiting for clients...\n"; +} + +// Accept client connections (call once per client) +void acceptClient(int clientId) { + sockaddr_in clientAddr; + socklen_t addrLen = sizeof(clientAddr); + int clientSock = accept(serverSocket, (sockaddr*)&clientAddr, &addrLen); + if(clientSock < 0) { std::cerr << "Accept failed for client " << clientId << "\n"; return; } + clientSockets.push_back(clientSock); + std::cout << "Client " << clientId << " connected\n"; +} + +// Send a message to a specific client +void sendMessage(int clientId) { + if(clientId <= 0 || clientId > clientSockets.size()) return; + const char* msg = "Hello from server"; + send(clientSockets[clientId-1], msg, strlen(msg), 0); + std::cout << "Sent message to client " << clientId << "\n"; +} + +// Receive ACK from a specific client +int receiveAck(int clientId) { + if(clientId <= 0 || clientId > clientSockets.size()) return 0; + char buffer[1024]; + int len = recv(clientSockets[clientId-1], buffer, sizeof(buffer)-1, 0); + if(len <= 0) return 0; + buffer[len] = '\0'; + std::cout << "Received ACK from client " << clientId << ": " << buffer << "\n"; + return 1; +} + +// Cleanup server +void closeServer() { + for(auto sock : clientSockets) { + close(sock); + } + close(serverSocket); + cleanupSockets(); +} + +} \ No newline at end of file diff --git a/aerpaw/basic_demo/controller.cpp b/aerpaw/basic_demo/controller.cpp new file mode 100644 index 0000000..32f5aef --- /dev/null +++ b/aerpaw/basic_demo/controller.cpp @@ -0,0 +1,37 @@ +// +// Academic License - for use in teaching, academic research, and meeting +// course requirements at degree granting institutions only. Not for +// government, commercial, or other organizational use. +// +// controller.cpp +// +// Code generation for function 'controller' +// + +// Include files +#include "controller.h" +#include "controller_impl.h" + +// Function Definitions +void controller(int numClients) +{ + // Initialize server + initServer(); + // Accept clients + for (int i{0}; i < numClients; i++) { + acceptClient(i + 1); + } + // Send messages to clients + for (int i{0}; i < numClients; i++) { + sendMessage(i + 1); + } + // Receive acknowledgements + for (int i{0}; i < numClients; i++) { + receiveAck(i + 1); + } + // Digest ACKs + // Close server + closeServer(); +} + +// End of code generation (controller.cpp) diff --git a/aerpaw/basic_demo/controller.h b/aerpaw/basic_demo/controller.h new file mode 100644 index 0000000..601942e --- /dev/null +++ b/aerpaw/basic_demo/controller.h @@ -0,0 +1,23 @@ +// +// Academic License - for use in teaching, academic research, and meeting +// course requirements at degree granting institutions only. Not for +// government, commercial, or other organizational use. +// +// controller.h +// +// Code generation for function 'controller' +// + +#ifndef CONTROLLER_H +#define CONTROLLER_H + +// Include files +#include "rtwtypes.h" +#include +#include + +// Function Declarations +extern void controller(int numClients); + +#endif +// End of code generation (controller.h) diff --git a/aerpaw/basic_demo/controller_app b/aerpaw/basic_demo/controller_app new file mode 100755 index 0000000..e917ebb Binary files /dev/null and b/aerpaw/basic_demo/controller_app differ diff --git a/aerpaw/basic_demo/controller_impl.cpp b/aerpaw/basic_demo/controller_impl.cpp new file mode 100644 index 0000000..dcfa649 --- /dev/null +++ b/aerpaw/basic_demo/controller_impl.cpp @@ -0,0 +1,73 @@ +#include "controller_impl.h" +#include +#include +#include +#include +#include +#include + +#define SERVER_PORT 5000 +#define SERVER_IP "127.0.0.1" + +static int serverSocket = -1; +static std::vector clientSockets; + +void initSockets() {} +void cleanupSockets() {} + +void initServer() { + initSockets(); + serverSocket = socket(AF_INET, SOCK_STREAM, 0); + if(serverSocket < 0) { std::cerr << "Socket creation failed\n"; return; } + + sockaddr_in serverAddr; + serverAddr.sin_family = AF_INET; + serverAddr.sin_addr.s_addr = INADDR_ANY; + serverAddr.sin_port = htons(SERVER_PORT); + + int opt = 1; + setsockopt(serverSocket, SOL_SOCKET, SO_REUSEADDR, (char*)&opt, sizeof(opt)); + + if(bind(serverSocket, (sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) { + std::cerr << "Bind failed\n"; return; + } + if(listen(serverSocket, 5) < 0) { + std::cerr << "Listen failed\n"; return; + } + + std::cout << "Server initialized\n"; +} + +void acceptClient(int clientId) { + sockaddr_in clientAddr; + socklen_t addrLen = sizeof(clientAddr); + int clientSock = accept(serverSocket, (sockaddr*)&clientAddr, &addrLen); + if(clientSock < 0) { std::cerr << "Accept failed for client " << clientId << "\n"; return; } + clientSockets.push_back(clientSock); + std::cout << "Client " << clientId << " connected\n"; +} + +void sendMessage(int clientId) { + if(clientId <= 0 || clientId > clientSockets.size()) return; + const char* msg = "Hello from server"; + send(clientSockets[clientId-1], msg, strlen(msg), 0); + std::cout << "Sent message to client " << clientId << "\n"; +} + +int receiveAck(int clientId) { + if(clientId <= 0 || clientId > clientSockets.size()) return 0; + char buffer[1024]; + int len = recv(clientSockets[clientId-1], buffer, sizeof(buffer)-1, 0); + if(len <= 0) return 0; + buffer[len] = '\0'; + std::cout << "Received ACK from client " << clientId << ": " << buffer << "\n"; + return 1; +} + +void closeServer() { + for(auto sock : clientSockets) { + close(sock); + } + close(serverSocket); + cleanupSockets(); +} diff --git a/aerpaw/basic_demo/controller_impl.h b/aerpaw/basic_demo/controller_impl.h new file mode 100644 index 0000000..0e1328a --- /dev/null +++ b/aerpaw/basic_demo/controller_impl.h @@ -0,0 +1,18 @@ +#ifndef CONTROLLER_IMPL_H +#define CONTROLLER_IMPL_H + +#ifdef __cplusplus +extern "C" { +#endif + +void initServer(); +void acceptClient(int clientId); +void sendMessage(int clientId); +int receiveAck(int clientId); +void closeServer(); + +#ifdef __cplusplus +} +#endif + +#endif // CONTROLLER_IMPL_H diff --git a/aerpaw/basic_demo/controller_main.cpp b/aerpaw/basic_demo/controller_main.cpp new file mode 100644 index 0000000..7c495f0 --- /dev/null +++ b/aerpaw/basic_demo/controller_main.cpp @@ -0,0 +1,16 @@ +#include +#include "controller.h" // Generated by MATLAB Coder +#include "controller_impl.h" // Your TCP implementation header + +int main() { + // Number of clients to handle + int numClients = 2; // Example: change as needed + + std::cout << "Initializing TCP server...\n"; + + // Call MATLAB-generated server function + controller(numClients); + + std::cout << "Server finished.\n"; + return 0; +} diff --git a/aerpaw/basic_demo/rtwtypes.h b/aerpaw/basic_demo/rtwtypes.h new file mode 100644 index 0000000..85c8e3f --- /dev/null +++ b/aerpaw/basic_demo/rtwtypes.h @@ -0,0 +1,44 @@ +// +// Academic License - for use in teaching, academic research, and meeting +// course requirements at degree granting institutions only. Not for +// government, commercial, or other organizational use. +// +// rtwtypes.h +// +// Code generation for function 'controller' +// + +#ifndef RTWTYPES_H +#define RTWTYPES_H + +/*=======================================================================* + * Fixed width word size data types: * + * int64_T - signed 64 bit integers * + * uint64_T - unsigned 64 bit integers * + *=======================================================================*/ + +#if defined(__APPLE__) +#ifndef INT64_T +#define INT64_T long +#define FMT64 "l" +#if defined(__LP64__) && !defined(INT_TYPE_64_IS_LONG) +#define INT_TYPE_64_IS_LONG +#endif +#endif +#endif + +#if defined(__APPLE__) +#ifndef UINT64_T +#define UINT64_T unsigned long +#define FMT64 "l" +#if defined(__LP64__) && !defined(INT_TYPE_64_IS_LONG) +#define INT_TYPE_64_IS_LONG +#endif +#endif +#endif + +// Include files +#include "tmwtypes.h" + +#endif +// End of code generation (rtwtypes.h) diff --git a/aerpaw/basic_demo/uav.py b/aerpaw/basic_demo/uav.py new file mode 100755 index 0000000..d88f923 --- /dev/null +++ b/aerpaw/basic_demo/uav.py @@ -0,0 +1,13 @@ +#!/bin/python3 +import socket + +SERVER_IP = "127.0.0.1" +SERVER_PORT = 5000 + +for client_id in range(2): # match numClients + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.connect((SERVER_IP, SERVER_PORT)) + data = s.recv(1024) # receive message from server + print(f"Client {client_id+1} received: {data.decode()}") + s.sendall(b"ACK") # send acknowledgment + s.close() diff --git a/aerpaw/controller.coderprj b/aerpaw/controller.coderprj new file mode 100644 index 0000000..abdcf5b --- /dev/null +++ b/aerpaw/controller.coderprj @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + false + numClients + + + + true + + controller.m + + controller + + + + + + + int32 + + + + + + + + + + + + + + + + NOT_PLANNED + SUCCESS + MATLAB Host Computer + C++ + LIB + + + + LIB + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller + + + CODEGEN_REPORT + + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller/html/report.mldatx + + CODEGEN_REPORT + + + + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller/controller.cpp + + GENERATED_SOURCE + + + + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller/controller.h + + GENERATED_SOURCE + + + + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller/controller_data.h + + GENERATED_SOURCE + + + + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller/controller_impl.h + + GENERATED_SOURCE + + + + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller/controller_initialize.cpp + + GENERATED_SOURCE + + + + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller/controller_initialize.h + + GENERATED_SOURCE + + + + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller/controller_terminate.cpp + + GENERATED_SOURCE + + + + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller/controller_terminate.h + + GENERATED_SOURCE + + + + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller/controller_types.h + + GENERATED_SOURCE + + + + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller/rtwtypes.h + + GENERATED_SOURCE + + + + /home/kdee/Desktop/miSim/aerpaw/comms.cpp + + GENERATED_SOURCE + + + + /home/kdee/matlab/R2025a/extern/include/tmwtypes.h + + GENERATED_SOURCE + + + + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller/examples/main.cpp + + GENERATED_SOURCE + + + + /home/kdee/Desktop/miSim/aerpaw/codegen/lib/controller/examples/main.h + + GENERATED_SOURCE + + + true + 2026-01-28T21:28:33 + + + + + + + + + customSource + + /home/kdee/Desktop/miSim/aerpaw/comms.cpp + + + + + targetLang + + C++ + + + + + + + + + + + + + + + diff --git a/aerpaw/controller.m b/aerpaw/controller.m new file mode 100644 index 0000000..cfb67d5 --- /dev/null +++ b/aerpaw/controller.m @@ -0,0 +1,59 @@ +function controller(numClients) +arguments (Input) + numClients (1, 1) int32; +end + +coder.extrinsic('disp'); + +% Initialize server +if coder.target('MATLAB') + disp('Initializing server (simulation)...'); +else + coder.cinclude('controller_impl.h'); + coder.ceval('initServer'); +end + + +% Accept clients +for i = 1:numClients + if coder.target('MATLAB') + disp(['Accepting client ', num2str(i)]); + else + coder.ceval('acceptClient', int32(i)); + end +end + + +% Send messages to clients +for i = 1:numClients + if coder.target('MATLAB') + disp(['Sending message to client ', num2str(i)]); + else + coder.ceval('sendMessage', int32(i)); + end +end + +% Receive acknowledgements +acksReceived = zeros(1, numClients, 'int32'); +for i = 1:numClients + if coder.target('MATLAB') + disp(['Receiving ACK from client ', num2str(i)]); + acksReceived(i) = 1; % Simulate successful ACK + else + acksReceived(i) = coder.ceval('receiveAck', int32(i)); + end +end + + +% Digest ACKs +if coder.target('MATLAB') + disp(['All ACKs received: ', num2str(acksReceived)]); +end + + +% Close server +if ~coder.target('MATLAB') + coder.ceval('closeServer'); +end + +end \ No newline at end of file diff --git a/aerpaw/cpp/udp_comm.cpp b/aerpaw/cpp/udp_comm.cpp new file mode 100644 index 0000000..c3fd63c --- /dev/null +++ b/aerpaw/cpp/udp_comm.cpp @@ -0,0 +1,32 @@ +#include "udp_comm.h" +#include +#include +#include +#include + +static int sock = -1; +static sockaddr_in remote_addr; + +void initComms(const char* ip, uint16_t port) +{ + if (sock != -1) return; + + sock = socket(AF_INET, SOCK_DGRAM, 0); + + memset(&remote_addr, 0, sizeof(remote_addr)); + remote_addr.sin_family = AF_INET; + remote_addr.sin_port = htons(port); + inet_pton(AF_INET, ip, &remote_addr.sin_addr); +} + +void sendTarget(const double* pos) +{ + sendto(sock, pos, 3*sizeof(double), 0, + (sockaddr*)&remote_addr, sizeof(remote_addr)); +} + +void recvOpMode(uint8_t* mode) +{ + recvfrom(sock, mode, sizeof(uint8_t), MSG_DONTWAIT, + nullptr, nullptr); +} \ No newline at end of file diff --git a/aerpaw/cpp/udp_comm.h b/aerpaw/cpp/udp_comm.h new file mode 100644 index 0000000..480d755 --- /dev/null +++ b/aerpaw/cpp/udp_comm.h @@ -0,0 +1,15 @@ +#ifndef UDP_COMM_H +#define UDP_COMM_H + +#ifdef __cplusplus +extern "C" { +#endif + +void initComms(const char* ip, uint16_t port); +void sendTarget(const double* pos); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/aerpaw/experiment.m b/aerpaw/experiment.m deleted file mode 100644 index e324df2..0000000 --- a/aerpaw/experiment.m +++ /dev/null @@ -1,3 +0,0 @@ -classdef experiment - -end \ No newline at end of file diff --git a/aerpaw/experiments.m b/aerpaw/experiments.m new file mode 100644 index 0000000..47cd4da --- /dev/null +++ b/aerpaw/experiments.m @@ -0,0 +1,16 @@ +classdef experiments < matlab.unittest.TestCase + methods (Test) + function Test1(tc) + s = scenario; + + % TODO - define test case in simulation in here and generate the inits on the fly as needed + s = s.initialize("2026_01_28_16_11_39_miSimInits.mat"); + + s = s.run(); + + + + end + end + +end \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/2At36Gb0jC6HQmgXbAN4ShlbqAgd.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/2At36Gb0jC6HQmgXbAN4ShlbqAgd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/2At36Gb0jC6HQmgXbAN4ShlbqAgd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/2At36Gb0jC6HQmgXbAN4ShlbqAgp.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/2At36Gb0jC6HQmgXbAN4ShlbqAgp.xml new file mode 100644 index 0000000..01cb34e --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/2At36Gb0jC6HQmgXbAN4ShlbqAgp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/SIL3u_W39LwE7HHYsarfFmr9gVQ/BtZvZtLyHugR7nfGjg6ukY77EG0d.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/DT1kUQeJY6fcqPoFwxbXgNUS8lId.xml similarity index 100% rename from resources/project/SIL3u_W39LwE7HHYsarfFmr9gVQ/BtZvZtLyHugR7nfGjg6ukY77EG0d.xml rename to resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/DT1kUQeJY6fcqPoFwxbXgNUS8lId.xml diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/DT1kUQeJY6fcqPoFwxbXgNUS8lIp.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/DT1kUQeJY6fcqPoFwxbXgNUS8lIp.xml new file mode 100644 index 0000000..7625d02 --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/DT1kUQeJY6fcqPoFwxbXgNUS8lIp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/KtdYjPriN9I6DGnwvLHvl_xju8cd.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/KtdYjPriN9I6DGnwvLHvl_xju8cd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/KtdYjPriN9I6DGnwvLHvl_xju8cd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/KtdYjPriN9I6DGnwvLHvl_xju8cp.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/KtdYjPriN9I6DGnwvLHvl_xju8cp.xml new file mode 100644 index 0000000..8ae81d3 --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/KtdYjPriN9I6DGnwvLHvl_xju8cp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/PQMatyuPaDoQ3G5VI3BFyjZnrs8d.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/PQMatyuPaDoQ3G5VI3BFyjZnrs8d.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/PQMatyuPaDoQ3G5VI3BFyjZnrs8d.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/PQMatyuPaDoQ3G5VI3BFyjZnrs8p.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/PQMatyuPaDoQ3G5VI3BFyjZnrs8p.xml new file mode 100644 index 0000000..ca3fd64 --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/PQMatyuPaDoQ3G5VI3BFyjZnrs8p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/SKpQU057yTGLn9b7Hh4v5-10P0gd.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/SKpQU057yTGLn9b7Hh4v5-10P0gd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/SKpQU057yTGLn9b7Hh4v5-10P0gd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/SKpQU057yTGLn9b7Hh4v5-10P0gp.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/SKpQU057yTGLn9b7Hh4v5-10P0gp.xml new file mode 100644 index 0000000..324d3fc --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/SKpQU057yTGLn9b7Hh4v5-10P0gp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/W_Z6-ElH4gIbv9BScRTmQUQJ9Dkd.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/W_Z6-ElH4gIbv9BScRTmQUQJ9Dkd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/W_Z6-ElH4gIbv9BScRTmQUQJ9Dkd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/W_Z6-ElH4gIbv9BScRTmQUQJ9Dkp.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/W_Z6-ElH4gIbv9BScRTmQUQJ9Dkp.xml new file mode 100644 index 0000000..c37029c --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/W_Z6-ElH4gIbv9BScRTmQUQJ9Dkp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/jgOJohqRy86fwKjFIbPiQBzesd0d.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/jgOJohqRy86fwKjFIbPiQBzesd0d.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/jgOJohqRy86fwKjFIbPiQBzesd0d.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/jgOJohqRy86fwKjFIbPiQBzesd0p.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/jgOJohqRy86fwKjFIbPiQBzesd0p.xml new file mode 100644 index 0000000..f8aa85c --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/jgOJohqRy86fwKjFIbPiQBzesd0p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/uqjVJgVIW1gykl7rcImcpGWqgpkd.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/uqjVJgVIW1gykl7rcImcpGWqgpkd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/uqjVJgVIW1gykl7rcImcpGWqgpkd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/uqjVJgVIW1gykl7rcImcpGWqgpkp.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/uqjVJgVIW1gykl7rcImcpGWqgpkp.xml new file mode 100644 index 0000000..4ba9f39 --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/uqjVJgVIW1gykl7rcImcpGWqgpkp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/wBj8Oz_Uyr5PhZoBdLum-5Y72pwd.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/wBj8Oz_Uyr5PhZoBdLum-5Y72pwd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/wBj8Oz_Uyr5PhZoBdLum-5Y72pwd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/wBj8Oz_Uyr5PhZoBdLum-5Y72pwp.xml b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/wBj8Oz_Uyr5PhZoBdLum-5Y72pwp.xml new file mode 100644 index 0000000..1b76f50 --- /dev/null +++ b/resources/project/4XBBbvgKHLBtx6tMwElTfwSe284/wBj8Oz_Uyr5PhZoBdLum-5Y72pwp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/g51F4J1JIzbS5d3g380Sl55RzeUd.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/g51F4J1JIzbS5d3g380Sl55RzeUd.xml new file mode 100644 index 0000000..c2a83cd --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/g51F4J1JIzbS5d3g380Sl55RzeUd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/g51F4J1JIzbS5d3g380Sl55RzeUp.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/g51F4J1JIzbS5d3g380Sl55RzeUp.xml new file mode 100644 index 0000000..22bb13c --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/g51F4J1JIzbS5d3g380Sl55RzeUp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/vvkdLmboxiWCk6Hhn0GbursF9fUd.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/vvkdLmboxiWCk6Hhn0GbursF9fUd.xml new file mode 100644 index 0000000..1034b5b --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/vvkdLmboxiWCk6Hhn0GbursF9fUd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/vvkdLmboxiWCk6Hhn0GbursF9fUp.xml b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/vvkdLmboxiWCk6Hhn0GbursF9fUp.xml new file mode 100644 index 0000000..803e56c --- /dev/null +++ b/resources/project/EEtUlUb-dLAdf0KpMVivaUlztwA/vvkdLmboxiWCk6Hhn0GbursF9fUp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/FI0gxbH-PhwjE_riDQGHPyYMHks/_Ys1ic_sNZf0m_ccxSjoiz6J7JUd.xml b/resources/project/FI0gxbH-PhwjE_riDQGHPyYMHks/_Ys1ic_sNZf0m_ccxSjoiz6J7JUd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/FI0gxbH-PhwjE_riDQGHPyYMHks/_Ys1ic_sNZf0m_ccxSjoiz6J7JUd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/FI0gxbH-PhwjE_riDQGHPyYMHks/_Ys1ic_sNZf0m_ccxSjoiz6J7JUp.xml b/resources/project/FI0gxbH-PhwjE_riDQGHPyYMHks/_Ys1ic_sNZf0m_ccxSjoiz6J7JUp.xml new file mode 100644 index 0000000..74c5707 --- /dev/null +++ b/resources/project/FI0gxbH-PhwjE_riDQGHPyYMHks/_Ys1ic_sNZf0m_ccxSjoiz6J7JUp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/4XBBbvgKHLBtx6tMwElTfwSe284d.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/4XBBbvgKHLBtx6tMwElTfwSe284d.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/4XBBbvgKHLBtx6tMwElTfwSe284d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/4XBBbvgKHLBtx6tMwElTfwSe284p.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/4XBBbvgKHLBtx6tMwElTfwSe284p.xml new file mode 100644 index 0000000..a0fcfbf --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/4XBBbvgKHLBtx6tMwElTfwSe284p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/8r7PXt-CEJX2YvR04X9eMkzrlZQd.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/8r7PXt-CEJX2YvR04X9eMkzrlZQd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/8r7PXt-CEJX2YvR04X9eMkzrlZQd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/8r7PXt-CEJX2YvR04X9eMkzrlZQp.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/8r7PXt-CEJX2YvR04X9eMkzrlZQp.xml new file mode 100644 index 0000000..70ece17 --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/8r7PXt-CEJX2YvR04X9eMkzrlZQp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/DCnJpF90C2dRw1sMuzFvVjgI3Xkd.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/DCnJpF90C2dRw1sMuzFvVjgI3Xkd.xml new file mode 100644 index 0000000..378b613 --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/DCnJpF90C2dRw1sMuzFvVjgI3Xkd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/DCnJpF90C2dRw1sMuzFvVjgI3Xkp.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/DCnJpF90C2dRw1sMuzFvVjgI3Xkp.xml new file mode 100644 index 0000000..56c3467 --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/DCnJpF90C2dRw1sMuzFvVjgI3Xkp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/IJIwz-tE73_VBQ8ICY5avibK2S0d.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/IJIwz-tE73_VBQ8ICY5avibK2S0d.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/IJIwz-tE73_VBQ8ICY5avibK2S0d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/IJIwz-tE73_VBQ8ICY5avibK2S0p.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/IJIwz-tE73_VBQ8ICY5avibK2S0p.xml new file mode 100644 index 0000000..6b992e9 --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/IJIwz-tE73_VBQ8ICY5avibK2S0p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/ZjNKXjZG-sRsDFhILe8NAy5Dpp0d.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/ZjNKXjZG-sRsDFhILe8NAy5Dpp0d.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/ZjNKXjZG-sRsDFhILe8NAy5Dpp0d.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/ZjNKXjZG-sRsDFhILe8NAy5Dpp0p.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/ZjNKXjZG-sRsDFhILe8NAy5Dpp0p.xml new file mode 100644 index 0000000..c07fb6a --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/ZjNKXjZG-sRsDFhILe8NAy5Dpp0p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/jZWe5SL5GmZq60hXzvoW4_evBGgd.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/jZWe5SL5GmZq60hXzvoW4_evBGgd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/jZWe5SL5GmZq60hXzvoW4_evBGgd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/jZWe5SL5GmZq60hXzvoW4_evBGgp.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/jZWe5SL5GmZq60hXzvoW4_evBGgp.xml new file mode 100644 index 0000000..0956e95 --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/jZWe5SL5GmZq60hXzvoW4_evBGgp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/m4CvAO0shQN-qrRBv-GjfKG2Ds0d.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/m4CvAO0shQN-qrRBv-GjfKG2Ds0d.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/m4CvAO0shQN-qrRBv-GjfKG2Ds0d.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/m4CvAO0shQN-qrRBv-GjfKG2Ds0p.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/m4CvAO0shQN-qrRBv-GjfKG2Ds0p.xml new file mode 100644 index 0000000..870f1aa --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/m4CvAO0shQN-qrRBv-GjfKG2Ds0p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/qyPEe0esGV4zUGuHoZBBbbGIM5od.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/qyPEe0esGV4zUGuHoZBBbbGIM5od.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/qyPEe0esGV4zUGuHoZBBbbGIM5od.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/qyPEe0esGV4zUGuHoZBBbbGIM5op.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/qyPEe0esGV4zUGuHoZBBbbGIM5op.xml new file mode 100644 index 0000000..f0bab46 --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/qyPEe0esGV4zUGuHoZBBbbGIM5op.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/yPgOee5TXt0c6zIOLdFgRaTVGogd.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/yPgOee5TXt0c6zIOLdFgRaTVGogd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/yPgOee5TXt0c6zIOLdFgRaTVGogd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/yPgOee5TXt0c6zIOLdFgRaTVGogp.xml b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/yPgOee5TXt0c6zIOLdFgRaTVGogp.xml new file mode 100644 index 0000000..c2b9a2c --- /dev/null +++ b/resources/project/Gnz6T47dAsmf4YcBHB3EkpeZeYA/yPgOee5TXt0c6zIOLdFgRaTVGogp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/7GUhSG5a7UXVHDp6DqX4w2hrX7gd.xml b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/7GUhSG5a7UXVHDp6DqX4w2hrX7gd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/7GUhSG5a7UXVHDp6DqX4w2hrX7gd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/7GUhSG5a7UXVHDp6DqX4w2hrX7gp.xml b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/7GUhSG5a7UXVHDp6DqX4w2hrX7gp.xml new file mode 100644 index 0000000..844d632 --- /dev/null +++ b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/7GUhSG5a7UXVHDp6DqX4w2hrX7gp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/DXLhLhkCzaWF6gYpAk_ChXFr2KAd.xml b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/DXLhLhkCzaWF6gYpAk_ChXFr2KAd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/DXLhLhkCzaWF6gYpAk_ChXFr2KAd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/DXLhLhkCzaWF6gYpAk_ChXFr2KAp.xml b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/DXLhLhkCzaWF6gYpAk_ChXFr2KAp.xml new file mode 100644 index 0000000..6fcfc29 --- /dev/null +++ b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/DXLhLhkCzaWF6gYpAk_ChXFr2KAp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/Fl4xDREAxKbflqvswdZKpwkwTDEd.xml b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/Fl4xDREAxKbflqvswdZKpwkwTDEd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/Fl4xDREAxKbflqvswdZKpwkwTDEd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/Fl4xDREAxKbflqvswdZKpwkwTDEp.xml b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/Fl4xDREAxKbflqvswdZKpwkwTDEp.xml new file mode 100644 index 0000000..01cb34e --- /dev/null +++ b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/Fl4xDREAxKbflqvswdZKpwkwTDEp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/Lhjp7TB6gCFEdw4kpybws1qHm9Ud.xml b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/Lhjp7TB6gCFEdw4kpybws1qHm9Ud.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/Lhjp7TB6gCFEdw4kpybws1qHm9Ud.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/Lhjp7TB6gCFEdw4kpybws1qHm9Up.xml b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/Lhjp7TB6gCFEdw4kpybws1qHm9Up.xml new file mode 100644 index 0000000..fa915a2 --- /dev/null +++ b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/Lhjp7TB6gCFEdw4kpybws1qHm9Up.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/ce2AFn-uyNz1adDQ8rfBjxb1z3Ed.xml b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/ce2AFn-uyNz1adDQ8rfBjxb1z3Ed.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/ce2AFn-uyNz1adDQ8rfBjxb1z3Ed.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/ce2AFn-uyNz1adDQ8rfBjxb1z3Ep.xml b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/ce2AFn-uyNz1adDQ8rfBjxb1z3Ep.xml new file mode 100644 index 0000000..a6be923 --- /dev/null +++ b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/ce2AFn-uyNz1adDQ8rfBjxb1z3Ep.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/tCrFgCGq4uYlNvytkkLqXVSMdFAd.xml b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/tCrFgCGq4uYlNvytkkLqXVSMdFAd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/tCrFgCGq4uYlNvytkkLqXVSMdFAd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/tCrFgCGq4uYlNvytkkLqXVSMdFAp.xml b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/tCrFgCGq4uYlNvytkkLqXVSMdFAp.xml new file mode 100644 index 0000000..9bc5a07 --- /dev/null +++ b/resources/project/IJIwz-tE73_VBQ8ICY5avibK2S0/tCrFgCGq4uYlNvytkkLqXVSMdFAp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/SIL3u_W39LwE7HHYsarfFmr9gVQ/BtZvZtLyHugR7nfGjg6ukY77EG0p.xml b/resources/project/SIL3u_W39LwE7HHYsarfFmr9gVQ/BtZvZtLyHugR7nfGjg6ukY77EG0p.xml deleted file mode 100644 index 54e0a8a..0000000 --- a/resources/project/SIL3u_W39LwE7HHYsarfFmr9gVQ/BtZvZtLyHugR7nfGjg6ukY77EG0p.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/resources/project/SIL3u_W39LwE7HHYsarfFmr9gVQ/h1bzoK7TyH-zBPdL32X_nIgU2N8d.xml b/resources/project/SIL3u_W39LwE7HHYsarfFmr9gVQ/h1bzoK7TyH-zBPdL32X_nIgU2N8d.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/SIL3u_W39LwE7HHYsarfFmr9gVQ/h1bzoK7TyH-zBPdL32X_nIgU2N8d.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/SIL3u_W39LwE7HHYsarfFmr9gVQ/h1bzoK7TyH-zBPdL32X_nIgU2N8p.xml b/resources/project/SIL3u_W39LwE7HHYsarfFmr9gVQ/h1bzoK7TyH-zBPdL32X_nIgU2N8p.xml new file mode 100644 index 0000000..3c8f41d --- /dev/null +++ b/resources/project/SIL3u_W39LwE7HHYsarfFmr9gVQ/h1bzoK7TyH-zBPdL32X_nIgU2N8p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/6mQ2v_zwchG2NbhdXskhyw1Og4gd.xml b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/6mQ2v_zwchG2NbhdXskhyw1Og4gd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/6mQ2v_zwchG2NbhdXskhyw1Og4gd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/6mQ2v_zwchG2NbhdXskhyw1Og4gp.xml b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/6mQ2v_zwchG2NbhdXskhyw1Og4gp.xml new file mode 100644 index 0000000..01cb34e --- /dev/null +++ b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/6mQ2v_zwchG2NbhdXskhyw1Og4gp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/_KxFNwPR7rYYPY2ibP4KLhWB84Qd.xml b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/_KxFNwPR7rYYPY2ibP4KLhWB84Qd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/_KxFNwPR7rYYPY2ibP4KLhWB84Qd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/_KxFNwPR7rYYPY2ibP4KLhWB84Qp.xml b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/_KxFNwPR7rYYPY2ibP4KLhWB84Qp.xml new file mode 100644 index 0000000..844d632 --- /dev/null +++ b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/_KxFNwPR7rYYPY2ibP4KLhWB84Qp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/pZeBssw-K0rx8h6GbiB7dV60-ugd.xml b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/pZeBssw-K0rx8h6GbiB7dV60-ugd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/pZeBssw-K0rx8h6GbiB7dV60-ugd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/pZeBssw-K0rx8h6GbiB7dV60-ugp.xml b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/pZeBssw-K0rx8h6GbiB7dV60-ugp.xml new file mode 100644 index 0000000..21e3f5f --- /dev/null +++ b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/pZeBssw-K0rx8h6GbiB7dV60-ugp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/z8tfH801F26HKib3tGcYRNFx_9Md.xml b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/z8tfH801F26HKib3tGcYRNFx_9Md.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/z8tfH801F26HKib3tGcYRNFx_9Md.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/z8tfH801F26HKib3tGcYRNFx_9Mp.xml b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/z8tfH801F26HKib3tGcYRNFx_9Mp.xml new file mode 100644 index 0000000..d2a9001 --- /dev/null +++ b/resources/project/ZjNKXjZG-sRsDFhILe8NAy5Dpp0/z8tfH801F26HKib3tGcYRNFx_9Mp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/3SS_Oi25FWjc4irpVUXk8BppgWUd.xml b/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/3SS_Oi25FWjc4irpVUXk8BppgWUd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/3SS_Oi25FWjc4irpVUXk8BppgWUd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/3SS_Oi25FWjc4irpVUXk8BppgWUp.xml b/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/3SS_Oi25FWjc4irpVUXk8BppgWUp.xml new file mode 100644 index 0000000..dd43736 --- /dev/null +++ b/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/3SS_Oi25FWjc4irpVUXk8BppgWUp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/5IKlFVZg8NRK_lpPXq5EzGgzrBwd.xml b/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/5IKlFVZg8NRK_lpPXq5EzGgzrBwd.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/5IKlFVZg8NRK_lpPXq5EzGgzrBwd.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/5IKlFVZg8NRK_lpPXq5EzGgzrBwp.xml b/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/5IKlFVZg8NRK_lpPXq5EzGgzrBwp.xml new file mode 100644 index 0000000..01cb34e --- /dev/null +++ b/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/5IKlFVZg8NRK_lpPXq5EzGgzrBwp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/HDdMOLkzfWNsdpqRunt9wIQGerwd.xml b/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/HDdMOLkzfWNsdpqRunt9wIQGerwd.xml new file mode 100644 index 0000000..99772b4 --- /dev/null +++ b/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/HDdMOLkzfWNsdpqRunt9wIQGerwd.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/HDdMOLkzfWNsdpqRunt9wIQGerwp.xml b/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/HDdMOLkzfWNsdpqRunt9wIQGerwp.xml new file mode 100644 index 0000000..98dade5 --- /dev/null +++ b/resources/project/qyPEe0esGV4zUGuHoZBBbbGIM5o/HDdMOLkzfWNsdpqRunt9wIQGerwp.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/yPgOee5TXt0c6zIOLdFgRaTVGog/vppv7WJDApfsoixY2oInidT6wGod.xml b/resources/project/yPgOee5TXt0c6zIOLdFgRaTVGog/vppv7WJDApfsoixY2oInidT6wGod.xml new file mode 100644 index 0000000..4356a6a --- /dev/null +++ b/resources/project/yPgOee5TXt0c6zIOLdFgRaTVGog/vppv7WJDApfsoixY2oInidT6wGod.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/project/yPgOee5TXt0c6zIOLdFgRaTVGog/vppv7WJDApfsoixY2oInidT6wGop.xml b/resources/project/yPgOee5TXt0c6zIOLdFgRaTVGog/vppv7WJDApfsoixY2oInidT6wGop.xml new file mode 100644 index 0000000..01cb34e --- /dev/null +++ b/resources/project/yPgOee5TXt0c6zIOLdFgRaTVGog/vppv7WJDApfsoixY2oInidT6wGop.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/test/parametricTestSuite.m b/test/parametricTestSuite.m index 14985a1..f014593 100644 --- a/test/parametricTestSuite.m +++ b/test/parametricTestSuite.m @@ -50,7 +50,8 @@ classdef parametricTestSuite < matlab.unittest.TestCase params = struct("timestep", csv.timestep, "maxIter", csv.maxIter, "minAlt", csv.minAlt, "discretizationStep", csv.discretizationStep, ... "protectedRange", csv.protectedRange, "sensorPerformanceMinimum", csv.sensorPerformanceMinimum, "initialStepSize", csv.initialStepSize, ... "barrierGain", csv.barrierGain, "barrierExponent", csv.barrierExponent, "numObstacles", csv.numObstacles,... - "numAgents", csv.numAgents, "collisionRadius", csv.collisionRadius, "comRange", csv.comRange, "alphaDist", csv.alphaDist, "betaDist", csv.betaDist, "alphaTilt", csv.alphaTilt, "betaTilt", csv.betaTilt); + "numAgents", csv.numAgents, "collisionRadius", csv.collisionRadius, "comRange", csv.comRange, "alphaDist", csv.alphaDist, ... + "betaDist", csv.betaDist, "alphaTilt", csv.alphaTilt, "betaTilt", csv.betaTilt); end end @@ -203,7 +204,7 @@ classdef parametricTestSuite < matlab.unittest.TestCase tc.testClass = tc.testClass.initialize(tc.domain, agents, params.barrierGain(ii), params.barrierExponent(ii), params.minAlt(ii), params.timestep(ii), params.maxIter(ii), obstacles, tc.makePlots, tc.makeVideo); % Save simulation parameters to output file - tc.testClass.writeParams(); + tc.testClass.writeInits(); % Run tc.testClass = tc.testClass.run();