新增RTT算法

This commit is contained in:
张梦南 2025-06-02 19:49:22 +08:00
parent 53270692e9
commit 5d2b4d951a

View File

@ -13,7 +13,7 @@ map = [0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0; % 1
1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0; %10
0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0; %11
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0; %12
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0; %13
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0; %13
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0; %14
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0; %15
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0; %16
@ -30,10 +30,12 @@ goal = [19, 19];
path_Astar = Astar(map, start, goal);
% Dijkstra
path_Dijkstra = Dijkstras(map, start, goal);
%RTT
path_RTT = RTT(map, start, goal);
visualize_path(map, start, goal, path_Astar, path_Dijkstra);
visualize_path(map, start, goal, path_Astar, path_Dijkstra, path_RTT);
function visualize_path(map, start, goal, path_Astar, path_Dijkstra)
function visualize_path(map, start, goal, path_Astar, path_Dijkstra, path_RTT)
% 01
imagesc(map);
colormap(flipud(gray)); % 0 1
@ -42,25 +44,29 @@ function visualize_path(map, start, goal, path_Astar, path_Dijkstra)
%
plot(start(2), start(1), 'bo', 'MarkerSize', 10, 'LineWidth', 2);
%
plot(goal(2), goal(1), 'ro', 'MarkerSize', 10, 'LineWidth', 2);
% A*
if ~isempty(path_Astar)
%
if ~isequal(path_Astar(1,:), start)
path_Astar = [start; path_Astar];
end
%
if ~isequal(path_Astar(end,:), goal)
path_Astar = [path_Astar; goal];
end
plot(path_Astar(:,2), path_Astar(:,1), 'r-', 'LineWidth', 2);
plot(path_Astar(:,2), path_Astar(:,1), 'ro', 'MarkerSize', 4, 'MarkerFaceColor', 'r');
end
% 线
plot(path_Astar(:,2), path_Astar(:,1), 'r-', 'LineWidth', 2); % 绿线
plot(path_Astar(:,2), path_Astar(:,1), 'ro', 'MarkerSize', 4, 'MarkerFaceColor', 'r'); %
plot(path_Dijkstra(:,2), path_Dijkstra(:,1), 'g-', 'LineWidth', 2); % 绿线
plot(path_Dijkstra(:,2), path_Dijkstra(:,1), 'go', 'MarkerSize', 4, 'MarkerFaceColor', 'g'); %
% Dijkstra
if ~isempty(path_Dijkstra)
plot(path_Dijkstra(:,2), path_Dijkstra(:,1), 'g-', 'LineWidth', 2);
plot(path_Dijkstra(:,2), path_Dijkstra(:,1), 'go', 'MarkerSize', 4, 'MarkerFaceColor', 'g');
end
% RTT
if ~isempty(path_RTT)
plot(path_RTT(:,2), path_RTT(:,1), 'b-', 'LineWidth', 2);
end
% 线