KITTI Dataset Overview

The KITTI Odometry Benchmark is a standard dataset used for evaluating visual and LiDAR odometry and SLAM algorithms. The dataset consists of several components providing calibration, pose, and LiDAR scan data. This section describes the contents of each compressed archive used in this project.

1. data_odometry_calib.zip

Description

Contains sensor calibration files for each KITTI odometry sequence. These files define the rigid-body transformations and projection parameters between the different sensors onboard the vehicle.

Folder Structure

data_odometry_calib/
├── calib_00.txt
├── calib_01.txt
├── ...
└── calib_21.txt

File Format

Each file corresponds to one sequence and contains entries such as:

  • P0-P3: Projection matrices for the four stereo cameras.

  • Tr_velo_to_cam: Transformation matrix from the LiDAR (Velodyne) to the camera coordinate system.

  • Tr_imu_to_velo: Transformation matrix from the IMU to the LiDAR coordinate system.

Usage

Calibration files are essential for transforming point clouds, images, and poses into a consistent coordinate frame. They are loaded by preprocessing or registration nodes to ensure geometric alignment between sensors.

2. data_odometry_poses.zip

Description

Contains the ground-truth poses for the odometry benchmark sequences.

Folder Structure

data_odometry_poses/
├── dataset/
│   └── poses/
│       ├── 00.txt
│       ├── 01.txt
│       ├── ...
│       └── 10.txt

File Format

Each .txt file corresponds to a sequence and contains one line per frame, describing the 3×4 transformation matrix representing the vehicle’s pose in the world coordinate frame:

r11 r12 r13 tx  r21 r22 r23 ty  r31 r32 r33 tz

where r_ij form the rotation matrix and tx, ty, tz define translation.

Usage

These poses are typically used for benchmarking odometry or SLAM systems against ground truth. They can also be used to reconstruct trajectories for visualization in Foxglove Studio or RViz.

3. data_odometry_velodyne.zip

Description

Contains raw LiDAR scans from a Velodyne HDL-64E sensor collected during the KITTI odometry sequences.

Folder Structure

data_odometry_velodyne/
├── dataset/
│   └── sequences/
│       ├── 00/
│       │   └── velodyne/
│       │       ├── 000000.bin
│       │       ├── 000001.bin
│       │       └── ...
│       ├── 01/
│       └── ...
│       └── 21/

File Format

Each .bin file stores a single LiDAR frame as a sequence of floats: (x, y, z, reflectance), each taking 4×4 bytes = 16 bytes per point.

The files can be read using:

import numpy as np
scan = np.fromfile('000000.bin', dtype=np.float32).reshape(-1, 4)

Usage

The LiDAR data form the basis for odometry and mapping experiments. They are typically loaded by nodes such as kitti_data_loader or preprocessing modules for voxelization, feature extraction, and registration.

4. Integration Notes

  • Ensure that all three archives are extracted into the same directory (e.g. ~/datasets/kitti).

  • The folder hierarchy should look like:

~/datasets/kitti/
├── data_odometry_calib/
├── data_odometry_poses/
└── data_odometry_velodyne/
  • These datasets are referenced by ROS 2 launch files via parameters such as kitti_data_dir.

  • For efficient access, store the dataset on an SSD and avoid decompressing directly into network drives.

5. References

  • KITTI Vision Benchmark Suite: https://www.cvlibs.net/datasets/kitti/

  • Geiger, A., Lenz, P., Stiller, C., & Urtasun, R. (2013). Vision meets Robotics: The KITTI Dataset. International Journal of Robotics Research (IJRR).