48 lines
2.0 KiB
Matlab
48 lines
2.0 KiB
Matlab
import gtsam.*;
|
|
|
|
deltaT = 0.01;
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% Constant global velocity w/ lever arm
|
|
disp('--------------------------------------------------------');
|
|
disp('Constant global velocity w/ lever arm');
|
|
omega = [0;0;0.1];
|
|
velocity = [1;0;0];
|
|
R = Rot3.Expmap(omega * deltaT);
|
|
|
|
velocity2body = R.unrotate(Point3(velocity)).vector;
|
|
acc_omegaExpected = [-0.01; 0; 0; 0; 0; 0.1];
|
|
acc_omegaActual = imuSimulator.calculateIMUMeasurement(omega, omega, velocity, velocity2body, deltaT, Pose3(Rot3, Point3([1;0;0])));
|
|
disp('IMU measurement discrepancy:');
|
|
disp(acc_omegaActual - acc_omegaExpected);
|
|
|
|
initialPose = Pose3;
|
|
finalPoseExpected = Pose3(Rot3.Expmap(omega * deltaT), Point3(velocity * deltaT));
|
|
finalVelocityExpected = velocity;
|
|
[ finalPoseActual, finalVelocityActual ] = imuSimulator.integrateTrajectory(initialPose, omega, velocity, velocity2body, deltaT);
|
|
disp('Final pose discrepancy:');
|
|
disp(finalPoseExpected.between(finalPoseActual).matrix);
|
|
disp('Final velocity discrepancy:');
|
|
disp(finalVelocityActual - finalVelocityExpected);
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% Constant body velocity w/ lever arm
|
|
disp('--------------------------------------------------------');
|
|
disp('Constant body velocity w/ lever arm');
|
|
omega = [0;0;0.1];
|
|
velocity = [1;0;0];
|
|
|
|
acc_omegaExpected = [-0.01; 0.1; 0; 0; 0; 0.1];
|
|
acc_omegaActual = imuSimulator.calculateIMUMeasurement(omega, omega, velocity, velocity, deltaT, Pose3(Rot3, Point3([1;0;0])));
|
|
disp('IMU measurement discrepancy:');
|
|
disp(acc_omegaActual - acc_omegaExpected);
|
|
|
|
initialPose = Pose3;
|
|
initialVelocity = velocity;
|
|
finalPoseExpected = Pose3.Expmap([ omega; velocity ] * deltaT);
|
|
finalVelocityExpected = finalPoseExpected.rotation.rotate(Point3(velocity)).vector;
|
|
[ finalPoseActual, finalVelocityActual ] = imuSimulator.integrateTrajectory(initialPose, omega, velocity, velocity, deltaT);
|
|
disp('Final pose discrepancy:');
|
|
disp(finalPoseExpected.between(finalPoseActual).matrix);
|
|
disp('Final velocity discrepancy:');
|
|
disp(finalVelocityActual - finalVelocityExpected); |