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

  1. imu_pose.txt: imu poses without noise
  2. imu_pose_noise.txt: imu poses added noise
  3. imu_int_pose.txt: imu integration trajectory without noise
  4. imu_int_pose_noise.txt: imu integration trajectory added noise
  5. cam_pose.txt: camera poses without noise
  6. cam_pose_tum.txt camera poses in tum data format, used by evo
  7. keyframe/camera_$(n).txt feature points and camera observations
  8. keyframe/cameranoise$(n).txt feature points and camera observations with noise demo pic

Next Post Previous Post