Rotated display so Z is up, made axis square
parent
2414bfc3c9
commit
903580abb4
|
|
@ -23,19 +23,20 @@ initial = visualSLAMValues;
|
|||
|
||||
%% load the initial poses from VO
|
||||
% row format: camera_id 4x4 pose (row, major)
|
||||
c = dlmread('../Data/VO_camera_poses.txt');
|
||||
|
||||
for i=1:size(c,1)
|
||||
pose = gtsamPose3(reshape(c(i,2:17),4,4)');
|
||||
initial.insertPose(symbol('x',c(i,1)),pose);
|
||||
fprintf(1,'Reading data\n');
|
||||
cameras = dlmread('../Data/VO_camera_poses.txt');
|
||||
for i=1:size(cameras,1)
|
||||
pose = gtsamPose3(reshape(cameras(i,2:17),4,4)');
|
||||
initial.insertPose(symbol('x',cameras(i,1)),pose);
|
||||
end
|
||||
|
||||
%% load stereo measurements and initialize landmarks
|
||||
% camera_id landmark_id uL uR v X Y Z
|
||||
m = dlmread('../Data/VO_stereo_factors.txt');
|
||||
measurements = dlmread('../Data/VO_stereo_factors.txt');
|
||||
|
||||
for i=1:size(m,1)
|
||||
sf = m(i,:);
|
||||
fprintf(1,'Creating Graph\n'); tic
|
||||
for i=1:size(measurements,1)
|
||||
sf = measurements(i,:);
|
||||
graph.addStereoMeasurement(gtsamStereoPoint2(sf(3),sf(4),sf(5)), stereo_model, ...
|
||||
symbol('x', sf(1)), symbol('l', sf(2)), K);
|
||||
|
||||
|
|
@ -47,31 +48,35 @@ for i=1:size(m,1)
|
|||
initial.insertPoint(symbol('l',sf(2)), world_point);
|
||||
end
|
||||
end
|
||||
toc
|
||||
|
||||
%% add a constraint on the starting pose
|
||||
key = symbol('x',1);
|
||||
first_pose = initial.pose(key);
|
||||
graph.addPoseConstraint(symbol('x',1), first_pose);
|
||||
graph.addPoseConstraint(key, first_pose);
|
||||
|
||||
%% optimize
|
||||
fprintf(1,'Optimizing\n'); tic
|
||||
result = graph.optimize(initial);
|
||||
toc
|
||||
|
||||
%% visualize initial trajectory, final trajectory, and final points
|
||||
figure(1); clf;
|
||||
figure(1); clf; hold on;
|
||||
|
||||
% initial trajectory in red
|
||||
plot3(initial.xs(),initial.ys(),initial.zs(), '-*r','LineWidth',2);
|
||||
hold on;
|
||||
% initial trajectory in red (rotated so Z is up)
|
||||
plot3(initial.zs(),-initial.xs(),-initial.ys(), '-*r','LineWidth',2);
|
||||
|
||||
% final trajectory in green
|
||||
plot3(result.xs(),result.ys(),result.zs(), '-*g','LineWidth',2);
|
||||
% final trajectory in green (rotated so Z is up)
|
||||
plot3(result.zs(),-result.xs(),-result.ys(), '-*g','LineWidth',2);
|
||||
xlabel('X (m)'); ylabel('Y (m)'); zlabel('Z (m)');
|
||||
|
||||
% switch to XZ view
|
||||
view([0 0]);
|
||||
|
||||
% optimized 3D points
|
||||
% optimized 3D points (rotated so Z is up)
|
||||
points = result.points();
|
||||
plot3(points(:,1),points(:,2),points(:,3),'.');
|
||||
plot3(points(:,3),-points(:,1),-points(:,2),'.');
|
||||
|
||||
axis([-30 30 -30 30 0 60]);
|
||||
axis([0 100 -20 20 -5 20]);
|
||||
axis equal
|
||||
view(3)
|
||||
|
|
|
|||
Loading…
Reference in New Issue