62 lines
2.5 KiB
Matlab
62 lines
2.5 KiB
Matlab
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 = 15; % degrees
|
|
alphaTiltMax = 30; % degrees
|
|
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 = 15; % degrees
|
|
betaTilt = 3;
|
|
h = 1e-6;
|
|
tc.testClass = tc.testClass.initialize(alphaDist, betaDist, NaN, NaN, alphaTilt, betaTilt);
|
|
|
|
% Plot (optional)
|
|
% tc.testClass.plotParameters();
|
|
|
|
% Anticipate perfect performance for a point directly below and
|
|
% extremely close
|
|
tc.verifyEqual(tc.testClass.sensorPerformance([0, 0, h], NaN, 0, [0, 0, 0]), 1, 'RelTol', 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 nadir point, distance alphaDist should be 1/2 exactly
|
|
tc.verifyEqual(tc.testClass.sensorPerformance([0, 0, alphaDist], NaN, 0, [0, 0, 0]), 1/2);
|
|
|
|
% Performance at (almost) 0 distance, alphaTilt should be 1/2
|
|
tc.verifyEqual(tc.testClass.sensorPerformance([0, 0, h], NaN, 0, [tand(alphaTilt)*h, 0, 0]), 1/2, 'RelTol', 1e-3);
|
|
|
|
% Performance at great distance should be 0
|
|
tc.verifyEqual(tc.testClass.sensorPerformance([0, 0, 10], NaN, 0, [0, 0, 0]), 0, 'AbsTol', 1e-9);
|
|
|
|
% Performance at great tilt should be 0
|
|
tc.verifyEqual(tc.testClass.sensorPerformance([0, 0, h], NaN, 0, [5, 5, 0]), 0, 'AbsTol', 1e-9);
|
|
end
|
|
end
|
|
|
|
end |