diff --git a/@miSim/miSim.m b/@miSim/miSim.m
index 5ca5056..627ae4e 100644
--- a/@miSim/miSim.m
+++ b/@miSim/miSim.m
@@ -69,7 +69,7 @@ classdef miSim
obj.obstacles = {rectangularPrism};
obj.agents = {agent};
end
- [obj] = initialize(obj, domain, agents, barrierGain, barrierExponent, minAlt, timestep, maxIter, obstacles, makePlots, makeVideo);
+ [obj] = initialize(obj, domain, agents, barrierGain, barrierExponent, minAlt, timestep, maxIter, obstacles, makePlots, makeVideo, useDoubleIntegrator, dampingCoeff, useFixedTopology);
[obj] = initializeFromCsv(obj, csvPath);
[obj] = initializeFromInits(obj, initsPath);
[obj] = plotFromSimHist(obj, initsPath, histPath);
diff --git a/aerpaw/controller.coderprj b/aerpaw/controller.coderprj
index c822aab..b057661 100644
--- a/aerpaw/controller.coderprj
+++ b/aerpaw/controller.coderprj
@@ -158,6 +158,11 @@
+
+ int32
+
+
+
@@ -411,749 +416,761 @@
- /home/kdee/Desktop/miSim/aerpaw/codegen/controller.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/constrainMotion.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/controller.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/constrainMotion.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/controller_data.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/controller.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/controller_data.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/controller.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/controller_initialize.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/controller_data.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/controller_initialize.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/controller_data.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/controller_internal_types.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/controller_initialize.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/controller_terminate.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/controller_initialize.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/controller_terminate.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/controller_internal_types.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/controller_types.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/controller_terminate.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/countsort.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/controller_terminate.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/countsort.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/controller_types.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/deleteColMoveEnd.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/countsort.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/deleteColMoveEnd.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/countsort.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/dot.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/deleteColMoveEnd.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/dot.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/deleteColMoveEnd.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/driver.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/dot.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/driver.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/dot.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/exp.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/driver.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/exp.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/driver.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/eye.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/exp.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/eye.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/exp.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/factorQR.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/eye.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/factorQR.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/eye.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/feasibleX0ForWorkingSet.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/factorQR.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/feasibleX0ForWorkingSet.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/factorQR.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/feasibleratiotest.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/feasibleX0ForWorkingSet.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/feasibleratiotest.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/feasibleX0ForWorkingSet.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/find.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/feasibleratiotest.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/find.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/feasibleratiotest.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/fullColLDL2_.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/find.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/fullColLDL2_.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/find.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/guidance_step.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/fullColLDL2_.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/guidance_step.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/fullColLDL2_.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/iterate.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/guidance_step.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/iterate.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/guidance_step.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/ixamax.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/iterate.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/ixamax.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/iterate.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/ixfun.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/ixamax.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/ixfun.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/ixamax.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/lesserNeighbor.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/ixfun.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/lesserNeighbor.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/ixfun.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/linearForm_.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/lesserNeighbor.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/linearForm_.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/lesserNeighbor.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/maxConstraintViolation.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/linearForm_.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/maxConstraintViolation.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/linearForm_.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/meshgrid.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/maxConstraintViolation.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/meshgrid.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/maxConstraintViolation.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/miSim.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/meshgrid.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/miSim.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/meshgrid.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/minOrMax.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/miSim.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/minOrMax.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/miSim.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/mpower.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/minOrMax.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/mpower.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/minOrMax.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/nchoosek.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/mpower.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/nchoosek.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/mpower.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/norm.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/nchoosek.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/norm.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/nchoosek.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/partition.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/norm.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/partition.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/norm.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/phaseone.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/partition.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/phaseone.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/partition.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/quadprog.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/phaseone.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/quadprog.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/phaseone.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/ratiotest.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/quadprog.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/ratiotest.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/quadprog.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/rectangularPrism.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/ratiotest.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/rectangularPrism.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/ratiotest.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/removeConstr.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/rectangularPrism.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/removeConstr.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/rectangularPrism.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/repmat.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/removeConstr.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/repmat.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/removeConstr.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/rtGetInf.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/repmat.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/rtGetInf.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/repmat.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/rtGetNaN.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/rtGetInf.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/rtGetNaN.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/rtGetInf.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/rt_defines.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/rtGetNaN.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/rt_nonfinite.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/rtGetNaN.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/rt_nonfinite.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/rt_defines.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/rtwtypes.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/rt_nonfinite.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/run.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/rt_nonfinite.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/run.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/rtwtypes.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/sensingObjective.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/run.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/sensingObjective.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/run.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/sensorPerformance.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/sensingObjective.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/sensorPerformance.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/sensingObjective.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/setProblemType.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/sensorPerformance.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/setProblemType.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/sensorPerformance.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/sigmoidSensor.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/setProblemType.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/sigmoidSensor.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/setProblemType.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/sort.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/sigmoidSensor.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/sort.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/sigmoidSensor.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/spherical.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/sort.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/spherical.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/sort.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/sprintf.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/spherical.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/sprintf.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/spherical.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/squareQ_appendCol.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/sprintf.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/squareQ_appendCol.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/sprintf.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/string1.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/squareQ_appendCol.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/string1.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/squareQ_appendCol.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/sum.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/string1.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/sum.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/string1.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/triu.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/sum.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/triu.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/sum.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/unique.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/triu.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/unique.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/triu.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/vecnorm.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/unique.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/vecnorm.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/unique.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xgemv.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/vecnorm.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xgemv.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/vecnorm.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xgeqp3.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xgemv.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xgeqp3.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xgemv.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xnrm2.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xgeqp3.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xnrm2.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xgeqp3.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xrotg.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xnrm2.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xrotg.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xnrm2.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xzgeqp3.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xrotg.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xzgeqp3.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xrotg.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xzlarf.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xzgeqp3.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xzlarf.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xzgeqp3.h
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xzlarfg.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xzlarf.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/xzlarfg.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xzlarf.h
GENERATED_SOURCE
- /home/kdee/matlab/R2025a/extern/include/tmwtypes.h
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xzlarfg.cpp
GENERATED_SOURCE
- /home/kdee/Desktop/miSim/aerpaw/codegen/examples/main.cpp
+ /home/kdee/Desktop/miSim/aerpaw/codegen/xzlarfg.h
GENERATED_SOURCE
+
+ /home/kdee/matlab/R2025a/extern/include/tmwtypes.h
+
+ GENERATED_SOURCE
+
+
+
+ /home/kdee/Desktop/miSim/aerpaw/codegen/examples/main.cpp
+
+ GENERATED_SOURCE
+
+
/home/kdee/Desktop/miSim/aerpaw/codegen/examples/main.h
@@ -1161,7 +1178,7 @@
true
- 2026-04-05T13:43:54
+ 2026-04-05T14:48:49
diff --git a/aerpaw/controller.m b/aerpaw/controller.m
index fba8fab..d759205 100644
--- a/aerpaw/controller.m
+++ b/aerpaw/controller.m
@@ -57,7 +57,7 @@ if ~coder.target('MATLAB')
end
% Load guidance scenario from CSV (parameters for guidance_step)
-NUM_SCENARIO_PARAMS = 45;
+NUM_SCENARIO_PARAMS = 48;
MAX_OBSTACLES_CTRL = int32(8);
scenarioParams = zeros(1, NUM_SCENARIO_PARAMS);
obstacleMin = zeros(MAX_OBSTACLES_CTRL, 3);
diff --git a/aerpaw/guidance_step.m b/aerpaw/guidance_step.m
index bd8df89..25f34df 100644
--- a/aerpaw/guidance_step.m
+++ b/aerpaw/guidance_step.m
@@ -29,6 +29,9 @@ function nextPositions = guidance_step(currentPositions, isInit, ...
% 39-40 objectivePos
% 41-44 objectiveVar (2x2, col-major)
% 45 sensorPerformanceMinimum
+% 46 useDoubleIntegrator
+% 47 dampingCoeff
+% 48 useFixedTopology
% obstacleMin (MAX_OBSTACLES × 3) double column-major obstacle corners (compiled path)
% obstacleMax (MAX_OBSTACLES × 3) double
% numObstacles (1,1) int32 actual obstacle count
@@ -94,6 +97,9 @@ if isInit
OBJECTIVE_GROUND_POS = scenarioParams(39:40);
OBJECTIVE_VAR = reshape(scenarioParams(41:44), 2, 2);
SENSOR_PERFORMANCE_MINIMUM = scenarioParams(45);
+ USE_DOUBLE_INTEGRATOR = logical(scenarioParams(46));
+ DAMPING_COEFF = scenarioParams(47);
+ USE_FIXED_TOPOLOGY = logical(scenarioParams(48));
% --- Build domain geometry ---
dom = rectangularPrism;
@@ -146,7 +152,8 @@ if isInit
% --- Initialise simulation (plots and video disabled) ---
sim = miSim;
sim = sim.initialize(dom, agentList, BARRIER_GAIN, BARRIER_EXPONENT, ...
- MIN_ALT, TIMESTEP, MAX_ITER, obstacleList, false, false);
+ MIN_ALT, TIMESTEP, MAX_ITER, obstacleList, false, false, ...
+ USE_DOUBLE_INTEGRATOR, DAMPING_COEFF, USE_FIXED_TOPOLOGY);
end
% On the init call return current positions unchanged
@@ -176,7 +183,9 @@ else
sim.timestepIndex = sim.timestepIndex + 1;
% 3. Update communications topology (Lesser Neighbour Assignment)
- sim = sim.lesserNeighbor();
+ if ~sim.useFixedTopology
+ sim = sim.lesserNeighbor();
+ end
% 4. Compute Voronoi partitioning
sim.partitioning = sim.agents{1}.partition(sim.agents, sim.domain.objective);
@@ -184,7 +193,8 @@ else
% 5. Unconstrained gradient-ascent step for each agent
for ii = 1:size(sim.agents, 1)
sim.agents{ii} = sim.agents{ii}.run(sim.domain, sim.partitioning, ...
- sim.timestepIndex, ii, sim.agents);
+ sim.timestepIndex, ii, sim.agents, ...
+ sim.useDoubleIntegrator, sim.dampingCoeff, sim.timestep);
end
% 6. Apply CBF safety filter (collision / comms / domain constraints via QP)
diff --git a/aerpaw/impl/controller_impl.cpp b/aerpaw/impl/controller_impl.cpp
index 91c627f..e8992fa 100644
--- a/aerpaw/impl/controller_impl.cpp
+++ b/aerpaw/impl/controller_impl.cpp
@@ -186,7 +186,10 @@ static int readScenarioDataRow(const char* filename, char* line, int lineSize) {
// 35-37: domainMax (east, north, up)
// 38-39: objectivePos (east, north)
// 40-43: objectiveVar (2x2 col-major: v11, v12, v21, v22)
-// 44 : sensorPerformanceMinimum
+// 44 : sensorPerformanceMinimum (CSV column 18)
+// 45 : useDoubleIntegrator (CSV column 23; 0=single-integrator, 1=double-integrator)
+// 46 : dampingCoeff (CSV column 24)
+// 47 : useFixedTopology (CSV column 25; 0=dynamic lesser-neighbor, 1=fixed)
// Returns 1 on success, 0 on failure.
int loadScenario(const char* filename, double* params) {
char line[4096];
@@ -198,8 +201,8 @@ int loadScenario(const char* filename, double* params) {
char* fields[32];
int nf = splitCSVRow(copy, fields, 32);
- if (nf < 19) {
- fprintf(stderr, "loadScenario: expected >=19 columns, got %d\n", nf);
+ if (nf < 26) {
+ fprintf(stderr, "loadScenario: expected >=26 columns, got %d\n", nf);
return 0;
}
@@ -290,6 +293,24 @@ int loadScenario(const char* filename, double* params) {
params[44] = atof(trimField(tmp));
}
+ // useDoubleIntegrator: column 23
+ {
+ char tmp[64]; strncpy(tmp, fields[23], sizeof(tmp) - 1); tmp[sizeof(tmp)-1] = '\0';
+ params[45] = atof(trimField(tmp));
+ }
+
+ // dampingCoeff: column 24
+ {
+ char tmp[64]; strncpy(tmp, fields[24], sizeof(tmp) - 1); tmp[sizeof(tmp)-1] = '\0';
+ params[46] = atof(trimField(tmp));
+ }
+
+ // useFixedTopology: column 25
+ {
+ char tmp[64]; strncpy(tmp, fields[25], sizeof(tmp) - 1); tmp[sizeof(tmp)-1] = '\0';
+ params[47] = atof(trimField(tmp));
+ }
+
printf("Loaded scenario: domain [%g,%g,%g] to [%g,%g,%g]\n",
params[32], params[33], params[34], params[35], params[36], params[37]);
return 1;
diff --git a/aerpaw/impl/controller_impl.h b/aerpaw/impl/controller_impl.h
index 948ea20..a43f0fd 100644
--- a/aerpaw/impl/controller_impl.h
+++ b/aerpaw/impl/controller_impl.h
@@ -30,7 +30,10 @@ int loadTargets(const char* filename, double* targets, int maxClients);
// 38-39 objectivePos
// 40-43 objectiveVar (2x2 col-major)
// 44 sensorPerformanceMinimum
-#define NUM_SCENARIO_PARAMS 45
+// 45 useDoubleIntegrator (0=single-integrator, 1=double-integrator)
+// 46 dampingCoeff
+// 47 useFixedTopology (0=dynamic lesser-neighbor, 1=fixed)
+#define NUM_SCENARIO_PARAMS 48
#define MAX_CLIENTS_PER_PARAM 4
// Maximum number of obstacles (upper bound for pre-allocated arrays).
#define MAX_OBSTACLES 8
diff --git a/aerpaw/results/resultsAnalysis.m b/aerpaw/results/resultsAnalysis.m
index ec58317..0d425d2 100644
--- a/aerpaw/results/resultsAnalysis.m
+++ b/aerpaw/results/resultsAnalysis.m
@@ -4,7 +4,7 @@ resultsPath = fullfile(matlab.project.rootProject().RootFolder, "sandbox", "two_
% 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)
-% [fGlobe, G] = plotGpsLogs(resultsPath, seaToGroundLevel, true);
+[fGlobe, G] = plotGpsLogs(resultsPath, seaToGroundLevel, true);
% Plot radio statistics
[fRadio, R] = plotRadioLogs(resultsPath);