In response to the growing need for efficient public-space disinfection, this work presents a multi-robot system designed to maximize area coverage while minimizing redundancy. The approach leverages cooperative path planning among autonomous agents to ensure thorough sanitization of complex indoor environments.
The environment is modeled as a 2D occupancy grid where obstacles are marked as 1s and traversable free space as 0s. An example map used in simulation is defined as:
occupancyMap = [
1 1 1 1 1 1 1 1 1 1 1 1 1 1;
1 0 0 0 1 0 0 0 0 0 0 0 0 1;
1 0 0 0 1 0 0 0 0 1 0 0 0 1;
1 1 1 0 0 0 0 0 0 1 0 0 0 1;
1 0 0 0 0 1 0 0 0 1 0 0 0 1;
1 0 0 0 0 0 0 0 0 0 0 0 0 1;
1 0 0 0 0 0 0 0 0 0 0 0 0 1;
1 1 1 1 1 0 0 0 0 0 0 1 0 1;
1 0 0 0 0 0 0 0 0 0 0 0 0 1;
1 0 1 0 0 0 0 0 0 0 0 0 0 1;
1 0 0 0 0 0 0 0 0 0 0 0 0 1;
1 1 1 1 1 1 1 1 1 1 1 1 1 1
];
Key simulation parameters include:
numRobots = 5; % Number of collaborating robots
maxIterations = 50; % Termination condition
visitedNodes = zeros(size(occupancyMap)); % Global coverage tracker
trajectories = cell(numRobots, 1); % Path history per robot
% Randomly initialize robot positions in free space
[freeRows, freeCols] = find(occupancyMap == 0);
initIndices = randperm(length(freeRows), numRobots);
robotPositions = [freeRows(initIndices), freeCols(initIndices)];
At each iteration, every robot selects its next move using a coverage-aware strategy that considers both unvisited regions and the current positions of other robots:
for iter = 1:maxIterations
for r = 1:numRobots
othersPos = robotPositions;
othersPos(r, :) = []; % Exclude self from neighbor list
% Determine next position based on local coverage and coordination
newPos = moveRobotCoverageAware(occupancyMap, robotPositions(r,:), ...
visitedNodes, othersPos);
robotPositions(r, :) = newPos;
% Update global and individual coverage maps
visitedNodes(newPos(1), newPos(2)) = 1;
trajectories{r} = [trajectories{r}; newPos];
end
% (Optional: compute and log coverage metrics here)
end
The core logic resides in moveRobotCoverageAware, which implements a local exploration policy—such as selecting the nearest unvisited neighboring cell while avoiding collisions or overlap with nearby agents. This greedy yet coordinated movement gradually incresaes the overall coverage ratio over time.
Simulation results demonstrate improved area coverage efficiency compared to single-robot or non-cooperative strategies, particularly in environments with narrow passages and isolated zones.