feat(slam): add rtabmap_ros
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
##close all
|
||||
##clear all
|
||||
|
||||
%% Use Export Poses in TORO format, then copy columns
|
||||
load vertexes.txt;
|
||||
load edges.txt;
|
||||
|
||||
set(0,'defaultAxesFontName', 'Times')
|
||||
set(0,'defaultTextFontName', 'Times')
|
||||
|
||||
%matlab indexes % rtabmap indexes
|
||||
endMap1 = 201; % ID=206
|
||||
endMap2 = 401; % ID=411
|
||||
endMap3 = 604; % ID=621
|
||||
endMap4 = 794; % ID=814
|
||||
endMap5 = 968; % ID=990
|
||||
endMap6 = 1201; % ID=1230
|
||||
|
||||
%% 3D
|
||||
|
||||
t = vertexes(:,1);
|
||||
|
||||
##figure
|
||||
##plot3(vertexes(1:endMap1,2), vertexes(1:endMap1,3), vertexes(1:endMap1,1))
|
||||
##hold on
|
||||
##plot3(vertexes(endMap1+1:endMap2,2), vertexes(endMap1+1:endMap2,3), vertexes(endMap1+1:endMap2,1))
|
||||
##plot3(vertexes(endMap2+1:endMap3,2), vertexes(endMap2+1:endMap3,3), vertexes(endMap2+1:endMap3,1))
|
||||
##plot3(vertexes(endMap3+1:endMap4,2), vertexes(endMap3+1:endMap4,3), vertexes(endMap3+1:endMap4,1))
|
||||
##plot3(vertexes(endMap4+1:endMap5,2), vertexes(endMap4+1:endMap5,3), vertexes(endMap4+1:endMap5,1))
|
||||
##plot3(vertexes(endMap5+1:end,2), vertexes(endMap5+1:end,3), vertexes(endMap5+1:end,1))
|
||||
|
||||
mapIds = zeros(vertexes(end,1), 2); % matlab index to vertexes, map id
|
||||
for i=1:size(vertexes,1)
|
||||
mapIds(vertexes(i,1),1) = i;
|
||||
if i <= endMap1
|
||||
mapIds(vertexes(i,1),2) = 1;
|
||||
elseif i<=endMap2
|
||||
mapIds(vertexes(i,1),2) = 2;
|
||||
elseif i<=endMap3
|
||||
mapIds(vertexes(i,1),2) = 3;
|
||||
elseif i<=endMap4
|
||||
mapIds(vertexes(i,1),2) = 4;
|
||||
elseif i<=endMap5
|
||||
mapIds(vertexes(i,1),2) = 5;
|
||||
else
|
||||
mapIds(vertexes(i,1),2) = 6;
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
##interLoopClosures = 0;
|
||||
##intraLoopClosures = 0;
|
||||
##
|
||||
##for i=1:size(edges, 1)
|
||||
## if edges(i,2) > edges(i,1)+1
|
||||
## x = [vertexes(mapIds(edges(i,1),1), 2) vertexes(mapIds(edges(i,2),1), 2)];
|
||||
## y = [vertexes(mapIds(edges(i,1),1), 3) vertexes(mapIds(edges(i,2),1), 3)];
|
||||
## t = [vertexes(mapIds(edges(i,1),1), 1) vertexes(mapIds(edges(i,2),1), 1)];
|
||||
## if mapIds(edges(i,1),2) ~= mapIds(edges(i,2),2)
|
||||
## plot3(x,y,t, 'g')
|
||||
## interLoopClosures = interLoopClosures+1;
|
||||
## else
|
||||
## plot3(x,y,t, 'r')
|
||||
## intraLoopClosures = intraLoopClosures + 1;
|
||||
## end
|
||||
## end
|
||||
##end
|
||||
##xlabel('x')
|
||||
##ylabel('y')
|
||||
##zlabel('Node indexes')
|
||||
##
|
||||
##interLoopClosures
|
||||
##intraLoopClosures
|
||||
|
||||
%% 2D
|
||||
figure
|
||||
hold on
|
||||
plot([-8 6], [vertexes(endMap1,1) vertexes(endMap1,1)], 'k:')
|
||||
plot([-8 6], [vertexes(endMap2,1) vertexes(endMap2,1)], 'k:')
|
||||
plot([-8 6], [vertexes(endMap3,1) vertexes(endMap3,1)], 'k:')
|
||||
plot([-8 6], [vertexes(endMap4,1) vertexes(endMap4,1)], 'k:')
|
||||
plot([-8 6], [vertexes(endMap5,1) vertexes(endMap5,1)], 'k:')
|
||||
|
||||
colors = {'r:', 'g:', 'c:', 'y:', 'm:', 'c'};
|
||||
|
||||
for i=1:size(edges, 1)
|
||||
if edges(i,2) > edges(i,1)+1
|
||||
y = [vertexes(mapIds(edges(i,1),1), 3) vertexes(mapIds(edges(i,2),1), 3)];
|
||||
t = [vertexes(mapIds(edges(i,1),1), 1) vertexes(mapIds(edges(i,2),1), 1)];
|
||||
mapId = mapIds(edges(i,1),2);
|
||||
if mapId ~= mapIds(edges(i,2),2) && (mapId == 1 || mapIds(edges(i,2),2) == 1)
|
||||
plot(y,t, 'r')
|
||||
else
|
||||
%plot(y,t, 'r')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
curveColor = 'b'
|
||||
plot(vertexes(1:endMap1,3), vertexes(1:endMap1,1), curveColor)
|
||||
plot(vertexes(endMap1+1:endMap2,3), vertexes(endMap1+1:endMap2,1), curveColor)
|
||||
plot(vertexes(endMap2+1:endMap3,3), vertexes(endMap2+1:endMap3,1), curveColor)
|
||||
plot(vertexes(endMap3+1:endMap4,3), vertexes(endMap3+1:endMap4,1), curveColor)
|
||||
plot(vertexes(endMap4+1:endMap5,3), vertexes(endMap4+1:endMap5,1), curveColor)
|
||||
plot(vertexes(endMap5+1:end,3), vertexes(endMap5+1:end,1), 'k')
|
||||
|
||||
xlabel('y')
|
||||
ylabel('Node indexes')
|
||||
Reference in New Issue
Block a user