binary occupancy map flipped after using A* algorithm
Afficher commentaires plus anciens
I am trying to explore A* algorithm which is built-in MATLAB algorithm, but when creating enviornment for simulation and then show the outcome of the planner the result is flipped compared to original map.
the code used as follow:
clearvars;
close all;
% Parameters
x_max = 500;
y_max = 500;
mapRes = 1; % 1 cell per meter (or per unit)
% number of obstacles
numObstacles = input('Enter the number of rectangular obstacles: ');
% Obstacle size
obsWidth = 40;
obsHeight = 40;
% Create empty map
mapMatrix = zeros(y_max, x_max); % Rows = Y, Columns = X
% Add rectangular obstacles
for i = 1:numObstacles
x = randi([1, x_max - obsWidth]);
y = randi([1, y_max - obsHeight]);
mapMatrix(y:(y+obsHeight), x:(x+obsWidth)) = 1; % Occupied = 1
end
% Flip the map vertically so that origin is at bottom-left (for A*)
mapMatrix = flipud(mapMatrix);
% Create binary occupancy map
map = binaryOccupancyMap(mapMatrix, mapRes);
% Flip axis for plotting purposes
figure;
show(map);
set(gca, 'YDir', 'normal'); % Flip Y axis so origin is bottom-left
title('Click to select START (green) and GOAL (red)');
hold on;
% Select start point
disp('Click on the map to select the START point');
[startX, startY] = ginput(1);
start = round([startY, startX]);
plot(start(2), start(1), 'go', 'MarkerSize', 10, 'LineWidth', 2);
% Select goal point
disp('Click on the map to select the GOAL point');
[goalX, goalY] = ginput(1);
goal = round([goalY, goalX]);
plot(goal(2), goal(1), 'ro', 'MarkerSize', 10, 'LineWidth', 2);
% % Flip the map
% mapFliped = flipud(map);
% figure;
% show(mapFliped)
% Plan using A* algorithm
planner = plannerAStarGrid(map);
[path, debugInfo] = plan(planner, start, goal);
% Display results
figure;
show(planner);
% plot(path(:,2), path(:,1))
set(gca, 'YDir', 'normal'); % Flip Y axis again
axis xy;
title('A* Path Planning Result');
% legend('Path','Start','Goal','Explored');

4 commentaires
Walter Roberson
le 11 Mar 2025
Not sure what else you should expect considering the
mapMatrix = flipud(mapMatrix);
YAAQOB AL-JAMALI
le 11 Mar 2025
Walter Roberson
le 11 Mar 2025
I am suggesting commenting out that line.
YAAQOB AL-JAMALI
le 12 Mar 2025
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Geographic Coordinate Reference Systems dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

