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).