55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Matlab
		
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Matlab
		
	
	
function plot2DTrajectory(values, linespec, marginals)
 | 
						|
%PLOT2DTRAJECTORY Plots the Pose2's in a values, with optional covariances
 | 
						|
%   Finds all the Pose2 objects in the given Values object and plots them
 | 
						|
% in increasing key order, connecting consecutive poses with a line.  If
 | 
						|
% a Marginals object is given, this function will also plot marginal
 | 
						|
% covariance ellipses for each pose.
 | 
						|
 | 
						|
import gtsam.*
 | 
						|
 | 
						|
if ~exist('linespec', 'var') || isempty(linespec)
 | 
						|
    linespec = 'k*-';
 | 
						|
end
 | 
						|
 | 
						|
haveMarginals = exist('marginals', 'var');
 | 
						|
keys = KeyVector(values.keys);
 | 
						|
 | 
						|
holdstate = ishold;
 | 
						|
hold on
 | 
						|
 | 
						|
% Plot poses and covariance matrices
 | 
						|
lastIndex = [];
 | 
						|
for i = 0:keys.size-1
 | 
						|
    key = keys.at(i);
 | 
						|
    x = values.at(key);
 | 
						|
    if isa(x, 'gtsam.Pose2')
 | 
						|
        if ~isempty(lastIndex)
 | 
						|
            % Draw line from last pose then covariance ellipse on top of
 | 
						|
            % last pose.
 | 
						|
            lastKey = keys.at(lastIndex);
 | 
						|
            lastPose = values.at(lastKey);
 | 
						|
            plot([ x.x; lastPose.x ], [ x.y; lastPose.y ], linespec);
 | 
						|
            if haveMarginals
 | 
						|
                P = marginals.marginalCovariance(lastKey);
 | 
						|
                gtsam.plotPose2(lastPose, 'g', P);
 | 
						|
            end
 | 
						|
        end
 | 
						|
        lastIndex = i;
 | 
						|
    end
 | 
						|
end
 | 
						|
 | 
						|
% Draw final covariance ellipse
 | 
						|
if ~isempty(lastIndex) && haveMarginals
 | 
						|
    lastKey = keys.at(lastIndex);
 | 
						|
    lastPose = values.at(lastKey);
 | 
						|
    P = marginals.marginalCovariance(lastKey);
 | 
						|
    gtsam.plotPose2(lastPose, 'g', P);
 | 
						|
end
 | 
						|
 | 
						|
if ~holdstate
 | 
						|
    hold off
 | 
						|
end
 | 
						|
 | 
						|
end
 | 
						|
 |