Frame Introduction
-
Body frame: IMU Coordinate
-
Cam frame: Camera Coordinate
-
World frame: The firt frame of IMU frames
-
Navigation frame: ENU \((0,0,-9.81)\)
Core Idea
1. Essential Members in IMU and Camera:
- imu_acc/imu_acc_bias/acc_noise_sigma/acc_bias_sigma;
- imu_gyro/imu_gyro_bias/gyro_noise_sigma/gyro_bias_sigma
- imu extrinsiscs: R_wb(world to body); t_wb
- camera intrinsics:f/c/image_w/image_h
- camera extrinsiscs: R_bc(body to camera); t_bc;
- camera noise: pixel_noise
- imu_frequency/imu_frequency
2. Define Motion Model = f(t), and Generate IMU Data
- establish kinematic motion equations in world frame about t, such as x=a·cos(t) y=b·sin(t) z=t.
- derivative of position = velocity (world frame), second derivative = acceleration (world frame)
- set the ruls of Rwb and twb, translated from euler angles.
- use transform (Rwb and twb) and derivatives to generate IMU groudtruth data.
3. Generate Landmarks 3D groudtruth
- read house.txt (set by prior) to generate landmarks' 3D points
4. Generate Camera groudtruth
- get Rwc = Rwb * Rbc and twc = twb + tbc
- camera.timestamp = imu.timestamp
5. Generate Camera Observation
- use Twc to transfer landmark points into pixel points and camera frame
Introduction to generation files
- imu_pose.txt: imu poses without noise
- imu_pose_noise.txt: imu poses added noise
- imu_int_pose.txt: imu integration trajectory without noise
- imu_int_pose_noise.txt: imu integration trajectory added noise
- cam_pose.txt: camera poses without noise
- cam_pose_tum.txt camera poses in tum data format, used by evo
- keyframe/camera_$(n).txt feature points and camera observations
- keyframe/cameranoise$(n).txt feature points and camera observations with noise