replaced identity rotations with ground truth rotations
parent
d0905e65ce
commit
e5d4fe3aaf
|
|
@ -19,7 +19,8 @@ for i=0:length(measurements)
|
||||||
if i==0
|
if i==0
|
||||||
%% first time step, add priors
|
%% first time step, add priors
|
||||||
% Pose prior (poses used for all factors)
|
% Pose prior (poses used for all factors)
|
||||||
initialPose = Pose3.Expmap(measurementNoise.poseNoiseVector .* randn(6,1));
|
noisyInitialPoseVector = Pose3.Logmap(currentPose) + measurementNoise.poseNoiseVector .* rand(6,1);
|
||||||
|
initialPose = Pose3.Expmap(noisyInitialPoseVector);
|
||||||
graph.add(PriorFactorPose3(currentPoseKey, initialPose, noiseModels.noisePose));
|
graph.add(PriorFactorPose3(currentPoseKey, initialPose, noiseModels.noisePose));
|
||||||
|
|
||||||
% IMU velocity and bias priors
|
% IMU velocity and bias priors
|
||||||
|
|
@ -183,10 +184,12 @@ for i=0:length(measurements)
|
||||||
end % end of for over trajectory
|
end % end of for over trajectory
|
||||||
|
|
||||||
%% Add Camera Factors to the graph
|
%% Add Camera Factors to the graph
|
||||||
|
% Only factors for landmarks that have been viewed at least once are added
|
||||||
|
% to the graph
|
||||||
[find(projectionFactorSeenBy ~= 0) projectionFactorSeenBy(find(projectionFactorSeenBy ~= 0))]
|
[find(projectionFactorSeenBy ~= 0) projectionFactorSeenBy(find(projectionFactorSeenBy ~= 0))]
|
||||||
if options.includeCameraFactors == 1
|
if options.includeCameraFactors == 1
|
||||||
for j = 1:options.numberOfLandmarks
|
for j = 1:options.numberOfLandmarks
|
||||||
if projectionFactorSeenBy(j) > 5
|
if projectionFactorSeenBy(j) > 0
|
||||||
graph.add(SmartProjectionFactors(j));
|
graph.add(SmartProjectionFactors(j));
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ if options.useRealData == 1
|
||||||
currentPoseKey = symbol('x', i);
|
currentPoseKey = symbol('x', i);
|
||||||
currentPose = imuSimulator.getPoseFromGtScenario(gtScenario,scenarioInd);
|
currentPose = imuSimulator.getPoseFromGtScenario(gtScenario,scenarioInd);
|
||||||
%% FOR TESTING
|
%% FOR TESTING
|
||||||
%currentPose = currentPose.compose(metadata.camera.bodyPoseCamera);
|
currentPose = currentPose.compose(metadata.camera.bodyPoseCamera);
|
||||||
|
|
||||||
% add to values
|
% add to values
|
||||||
values.insert(currentPoseKey, currentPose);
|
values.insert(currentPoseKey, currentPose);
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,19 @@ dY = gtECEF(2) - initialPositionECEF(2);
|
||||||
dZ = gtECEF(3) - initialPositionECEF(3);
|
dZ = gtECEF(3) - initialPositionECEF(3);
|
||||||
[xlt, ylt, zlt] = imuSimulator.ct2ENU(dX, dY, dZ,Org_lat, Org_lon);
|
[xlt, ylt, zlt] = imuSimulator.ct2ENU(dX, dY, dZ,Org_lat, Org_lon);
|
||||||
|
|
||||||
gtPosition = [xlt, ylt, zlt]';
|
gtPosition = Point3([xlt, ylt, zlt]');
|
||||||
gtRotation = Rot3; % Rot3.Expmap(rand(3,1)); %Rot3.ypr(gtScenario.Heading(scenarioInd), gtScenario.Pitch(scenarioInd), gtScenario.Roll(scenarioInd));
|
% use the gtsam.Rot3.Ypr constructor (yaw, pitch, roll) from the ground truth data
|
||||||
currentPose = Pose3(gtRotation, Point3(gtPosition));
|
% yaw = measured positively to the right
|
||||||
|
% pitch = measured positively up
|
||||||
|
% roll = measured positively to right
|
||||||
|
% Assumes vehice X forward, Y right, Z down
|
||||||
|
%
|
||||||
|
% In the gtScenario data
|
||||||
|
% heading (yaw) = measured positively to the left from Y-axis
|
||||||
|
% pitch =
|
||||||
|
% roll =
|
||||||
|
% Coordinate frame is Y forward, X is right, Z is up
|
||||||
|
gtBodyRotation = Rot3.Ypr(-gtScenario.Heading(scenarioInd), -gtScenario.Pitch(scenarioInd), -gtScenario.Roll(scenarioInd));
|
||||||
|
currentPose = Pose3(gtBodyRotation, gtPosition);
|
||||||
|
|
||||||
end
|
end
|
||||||
Loading…
Reference in New Issue