diff --git a/resources/project/FI0gxbH-PhwjE_riDQGHPyYMHks/AmJAKvt15XQGz6JdpTsYHCBwsj0d.xml b/resources/project/FI0gxbH-PhwjE_riDQGHPyYMHks/AmJAKvt15XQGz6JdpTsYHCBwsj0d.xml new file mode 100644 index 0000000..378b613 --- /dev/null +++ b/resources/project/FI0gxbH-PhwjE_riDQGHPyYMHks/AmJAKvt15XQGz6JdpTsYHCBwsj0d.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/resources/project/FI0gxbH-PhwjE_riDQGHPyYMHks/AmJAKvt15XQGz6JdpTsYHCBwsj0p.xml b/resources/project/FI0gxbH-PhwjE_riDQGHPyYMHks/AmJAKvt15XQGz6JdpTsYHCBwsj0p.xml new file mode 100644 index 0000000..fc6006c --- /dev/null +++ b/resources/project/FI0gxbH-PhwjE_riDQGHPyYMHks/AmJAKvt15XQGz6JdpTsYHCBwsj0p.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/sensingModels/@sigmoidSensor/initialize.m b/sensingModels/@sigmoidSensor/initialize.m index 7938fa8..04cd77b 100644 --- a/sensingModels/@sigmoidSensor/initialize.m +++ b/sensingModels/@sigmoidSensor/initialize.m @@ -11,7 +11,7 @@ function obj = initialize(obj, alphaDist, betaDist, alphaPan, betaPan, alphaTilt arguments (Output) obj (1, 1) {mustBeA(obj, 'sigmoidSensor')} end - + obj.alphaDist = alphaDist; obj.betaDist = betaDist; obj.alphaPan = alphaPan; diff --git a/test/test_miSim.m b/test/test_miSim.m index f79614a..9986c88 100644 --- a/test/test_miSim.m +++ b/test/test_miSim.m @@ -1,5 +1,6 @@ classdef test_miSim < matlab.unittest.TestCase properties (Access = private) + % System under test testClass = miSim; % Sim diff --git a/test/test_sigmoidSensor.m b/test/test_sigmoidSensor.m new file mode 100644 index 0000000..676aac7 --- /dev/null +++ b/test/test_sigmoidSensor.m @@ -0,0 +1,50 @@ +classdef test_sigmoidSensor < matlab.unittest.TestCase + properties (Access = private) + % System under test + testClass = sigmoidSensor; + + % Domain + domain = rectangularPrism; + + % Sensor parameter ranges + betaDistMin = 3; + betaDistMax = 15; + betaTiltMin = 3; + betaTiltMax = 15; + alphaDistMin = 2.5; + alphaDistMax = 3; + alphaTiltMin = deg2rad(15); + alphaTiltMax = deg2rad(30); + end + + methods (TestMethodSetup) + function tc = setup(tc) + % Reinitialize sensor with random parameters + tc.testClass = sigmoidSensor; + tc.testClass = tc.testClass.initialize(tc.alphaDistMin + rand * (tc.alphaDistMax - tc.alphaDistMin), tc.betaDistMin + rand * (tc.betaDistMax - tc.betaDistMin), NaN, NaN, tc.alphaTiltMin + rand * (tc.alphaTiltMax - tc.alphaTiltMin), tc.betaTiltMin + rand * (tc.betaTiltMax - tc.betaTiltMin)); + end + end + + methods (Test) + % Test methods + function test_sensorPerformance(tc) + tc.testClass = sigmoidSensor; + alphaDist = 2.5; + betaDist = 3; + alphaTilt = deg2rad(15); + betaTilt = 3; + tc.testClass = tc.testClass.initialize(alphaDist, betaDist, NaN, NaN, alphaTilt, betaTilt); + + % Performance at current position should be maximized (1) + % some wiggle room is needed for certain parameter conditions, + % e.g. small alphaDist and betaDist produce mu_d slightly < 1 + tc.verifyEqual(tc.testClass.sensorPerformance(zeros(1, 3), NaN, 0, zeros(1, 3)), 1, 'AbsTol', 1e-3); + % It looks like mu_t can max out at really low values like 0.37 + % when alphaTilt and betaTilt are small, which seems wrong + + % Performance at distance alphaDist should be 1/2 + tc.verifyEqual(tc.testClass.sensorPerformance([0, 0, alphaDist], NaN, 0, [0, 0, 0]), 1/2, 'AbsTol', 1e-3); + end + end + +end \ No newline at end of file