32 lines
882 B
Matlab
32 lines
882 B
Matlab
function plotPose3(pose, P, axisLength)
|
|
% plotPose3 shows a Pose, possibly with covariance matrix
|
|
if nargin<3,axisLength=0.1;end
|
|
|
|
% get rotation and translation (center)
|
|
gRp = pose.rotation().matrix(); % rotation from pose to global
|
|
C = pose.translation();
|
|
|
|
if ~isempty(axisLength)
|
|
% draw the camera axes
|
|
xAxis = C+gRp(:,1)*axisLength;
|
|
L = [C xAxis]';
|
|
line(L(:,1),L(:,2),L(:,3),'Color','r');
|
|
|
|
yAxis = C+gRp(:,2)*axisLength;
|
|
L = [C yAxis]';
|
|
line(L(:,1),L(:,2),L(:,3),'Color','g');
|
|
|
|
zAxis = C+gRp(:,3)*axisLength;
|
|
L = [C zAxis]';
|
|
line(L(:,1),L(:,2),L(:,3),'Color','b');
|
|
end
|
|
|
|
% plot the covariance
|
|
if (nargin>2) && (~isempty(P))
|
|
pPp = P(4:6,4:6); % covariance matrix in pose coordinate frame
|
|
gPp = gRp*pPp*gRp'; % convert the covariance matrix to global coordinate frame
|
|
gtsam.covarianceEllipse3D(C,gPp);
|
|
end
|
|
|
|
end
|