28 lines
1.0 KiB
Matlab
28 lines
1.0 KiB
Matlab
function obj = run(obj, sensingObjective, domain, partitioning)
|
|
arguments (Input)
|
|
obj (1, 1) {mustBeA(obj, 'agent')};
|
|
sensingObjective (1, 1) {mustBeA(sensingObjective, 'sensingObjective')};
|
|
domain (1, 1) {mustBeGeometry};
|
|
partitioning (:, :) double;
|
|
end
|
|
arguments (Output)
|
|
obj (1, 1) {mustBeA(obj, 'agent')};
|
|
end
|
|
|
|
% Do sensing
|
|
[sensedValues, sensedPositions] = obj.sensorModel.sense(obj, sensingObjective, domain, partitioning);
|
|
|
|
% Determine next planned position
|
|
nextPos = obj.guidanceModel(sensedValues, sensedPositions, obj.pos);
|
|
|
|
% Move to next position
|
|
% (dynamics not modeled at this time)
|
|
obj.lastPos = obj.pos;
|
|
obj.pos = nextPos;
|
|
|
|
% Calculate movement
|
|
d = obj.pos - obj.collisionGeometry.center;
|
|
|
|
% Reinitialize collision geometry in the new position
|
|
obj.collisionGeometry = obj.collisionGeometry.initialize([obj.collisionGeometry.minCorner; obj.collisionGeometry.maxCorner] + d, obj.collisionGeometry.tag, obj.collisionGeometry.label);
|
|
end |