Skip to content

Multi-Sensor Fusion

Combine visual SLAM with IMU, depth, and DVL sensors.

Sensor Combinations

Visual-Inertial (VI)

Camera + IMU

Benefits: - Better tracking in fast motion - Resolves scale ambiguity - Reduced drift

Visual-Inertial-Depth (VID)

Camera + IMU + Depth sensor

Benefits: - Absolute depth measurements - No scale drift - Better in featureless areas

Visual-Inertial-DVL (VI-DVL)

Camera + IMU + Doppler Velocity Log

Benefits: - Highest accuracy (<0.5% drift) - Long mission capability - Works in poor visibility

IMU Preintegration

def preintegrate_imu(imu_data, dt):
    delta_p = np.zeros(3)
    delta_v = np.zeros(3)
    delta_q = Quaternion.identity()

    for imu in imu_data:
        # Integrate rotation
        omega = imu.gyro - bias_gyro
        delta_q = delta_q * Quaternion.from_angular_velocity(omega, dt)

        # Integrate velocity and position
        accel_world = delta_q.rotate(imu.accel - bias_accel)
        delta_v += accel_world * dt
        delta_p += delta_v * dt + 0.5 * accel_world * dt**2

    return delta_p, delta_v, delta_q

Configuration

sensor_fusion:
  imu:
    enabled: true
    rate: 200  # Hz
    noise_gyro: 0.01
    noise_accel: 0.1

  depth:
    enabled: true
    rate: 10  # Hz
    noise: 0.01  # meters

  dvl:
    enabled: false  # optional
    rate: 5  # Hz
    noise: 0.01  # m/s

Next: Navigation