Multi-Robot Collaborative Coverage and Disinfection Optimization in MATLAB

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.

Tags: MATLAB multi-robot systems coverage path planning occupancy grid collaborative robotics

Posted on Wed, 28 Oct 2026 16:37:49 +0000 by kroll