61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Matlab
		
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Matlab
		
	
	
function VisualISAMPlot(truth, data, isam, result, options)
 | 
						|
% VisualISAMPlot plots current state of ISAM2 object
 | 
						|
% Authors: Duy Nguyen Ta and Frank Dellaert
 | 
						|
 | 
						|
import gtsam.*
 | 
						|
h=gca;
 | 
						|
cla(h);
 | 
						|
hold on;
 | 
						|
 | 
						|
%% Plot points
 | 
						|
% Can't use data because current frame might not see all points
 | 
						|
marginals = Marginals(isam.getFactorsUnsafe(), isam.calculateEstimate()); % TODO - this is slow
 | 
						|
gtsam.plot3DPoints(result, [], marginals);
 | 
						|
 | 
						|
%% Plot cameras
 | 
						|
M = 1;
 | 
						|
while result.exists(symbol('x',M))
 | 
						|
    ii = symbol('x',M);
 | 
						|
    pose_i = result.atPose3(ii);
 | 
						|
    if options.hardConstraint && (M==1)
 | 
						|
        gtsam.plotPose3(pose_i,[],10);
 | 
						|
    else
 | 
						|
        P = marginals.marginalCovariance(ii);
 | 
						|
        gtsam.plotPose3(pose_i,P,10);
 | 
						|
    end
 | 
						|
    if options.drawTruePoses % show ground truth
 | 
						|
        gtsam.plotPose3(truth.cameras{M}.pose,[],10);
 | 
						|
    end
 | 
						|
    
 | 
						|
    M = M + options.cameraInterval;
 | 
						|
end
 | 
						|
 | 
						|
%% draw
 | 
						|
axis([-40 40 -40 40 -10 20]);axis equal
 | 
						|
view(3)
 | 
						|
colormap('hot')
 | 
						|
drawnow
 | 
						|
 | 
						|
%% do various optional things
 | 
						|
 | 
						|
if options.saveFigures
 | 
						|
    figToSave = figure('visible','off');
 | 
						|
    newax = copyobj(h,figToSave);
 | 
						|
    colormap(figToSave,'hot');
 | 
						|
    set(newax, 'units', 'normalized', 'position', [0.13 0.11 0.775 0.815]);
 | 
						|
    print(figToSave,'-dpng',sprintf('VisualiSAM%03d.png',M));
 | 
						|
    axes(h);
 | 
						|
end
 | 
						|
 | 
						|
if options.saveDotFiles
 | 
						|
    isam.saveGraph(sprintf('VisualiSAM%03d.dot',M));
 | 
						|
end
 | 
						|
 | 
						|
if options.saveDotFile
 | 
						|
    isam.saveGraph(sprintf('VisualiSAM.dot'));
 | 
						|
end
 | 
						|
 | 
						|
if options.printStats
 | 
						|
    isam.printStats();
 | 
						|
end
 |