A ROS-based player to replay KiTTI dataset.
*.bin
Point Cloud in topic /kitti/points_raw _(sensormsgs/PointCloud2).tracklet_labels.xml
.
care_objects
' 3D OBB (Oriented bounding box) in topic /kitti/bb_raw _(geometrymsgs/PoseArray).*.png
Image in topic /kitti/img_raw _(sensormsgs/Image).
0-3
image.*.txt
Pose in tf between imu_frame
and world_frame
.*.txt
Calibration in tf between Coordinates. We name your ros workspace as CATKIN_WS
and git clone
kitti_ros as a ros package.
# clone source code
$ cd $(CATKIN_WS)/src
$ git clone https://github.com/LidarPerception/kitti_ros
$ cd kitti_ros
# install python's dependencies
$ pip install -r requirements.txt
# build your ros workspace
$ cd $(CATKIN_WS)
$ catkin build -DCMAKE_BUILD_TYPE=Release
# change Mode for Keyboard Listening Device
$ sudo chmod 777 /dev/input/event3
# [demo] launch kitti_ros's kitti_player with rviz
$ source devel/setup.bash
$ roslaunch kitti_ros demo.launch kitti_data_path:=path-to-your-KiTTI-dataset
Learn more about parameter: kitti_data_path
from Here. We recommend to use quickstart for KiTTI's LiDAR-perception algorithms testing and model training.
# copy quickstart bash scripts
$ cd $(CATKIN_WS)/src/kitti_ros
$ cp quickstart.sh killall.sh ../..
# quick start kitti_ros basic environment and visualization
$ cd $(CATKIN_WS)
$ ./quickstart.sh
# [option 1] launch kitti_ros's kitti_player for frame-by-frame algorithm testing
$ roslaunch kitti_ros kitti_player.launch kitti_data_path:=path-to-your-KiTTI-dataset
# [option 2] launch kitti_ros's kitti_continue_player for data replay, like model training
$ roslaunch kitti_ros kitti_continue_player.launch dataset_file:=path-to-your-KiTTI-dataset-list-file
# quick exit
$ ./killall.sh
Learn more about parameter: dataset_file
from Here.
Keyboard Control
SPACE
: Play/Pause KiTTI data replay.LEFT ARROW
: Play last frame of data.RIGHT ARROW
: Play next frame of data.keyboard_file
: Keyboard listener is based on Linux input subsystem.fps
: default 10
Hz, the same as LiDAR frequency.kitti_data_path
: KiTTI raw data directory.
$(find kitti_ros)/../../data/2011_09_26/2011_09_26_drive_0005_sync
, that is $(CATKIN_WS)/data/2011_09_26/2011_09_26_drive_0005_sync
.
2011_09_26
├── 2011_09_26_drive_0005_sync
│ ├── image_00
│ │ ├── data
│ │ │ ├── 0000000xxx.png
│ │ │ ├── ...
│ │ └── timestamps.txt
│ ├── image_01
│ │ ├── data
│ │ │ ├── 0000000xxx.png
│ │ │ └── ...
│ │ └── timestamps.txt
│ ├── image_02
│ │ ├── data
│ │ │ ├── 0000000xxx.png
│ │ │ └── ...
│ │ └── timestamps.txt
│ ├── image_03
│ │ ├── data
│ │ │ ├── 0000000xxx.png
│ │ │ └── ...
│ │ └── timestamps.txt
│ ├── oxts
│ │ ├── data
│ │ │ ├── 0000000xxx.txt
│ │ │ └── ...
│ │ ├── dataformat.txt
│ │ └── timestamps.txt
│ ├── tracklet_labels.xml
│ └── velodyne_points
│ ├── data
│ │ ├── 0000000xxx.bin
│ │ └── xxx
│ ├── timestamps_end.txt
│ ├── timestamps_start.txt
│ └── timestamps.txt
├── 201?_??_??_drive_0???_sync
│ ├── ...
│ └── ...
├── calib_cam_to_cam.txt
├── calib_imu_to_velo.txt
└── calib_velo_to_cam.txt
dataset_file
: Only for kitti_continue_player, a list of kitti_data_path
line after line.
$(find kitti_ros)/../../data/training_datasets.txt
, as following:
#/home/gary/Workspace/intern_ws/catkin_ws/data/2011_09_26/2011_09_26_drive_0001_sync
/home/gary/Workspace/intern_ws/catkin_ws/data/2011_09_26/2011_09_26_drive_0005_sync
/home/gary/Workspace/intern_ws/catkin_ws/data/2011_09_26/2011_09_26_drive_0014_sync
/home/gary/Workspace/intern_ws/catkin_ws/data/2011_09_26/2011_09_26_drive_0017_sync
#/home/gary/Workspace/intern_ws/catkin_ws/data/2011_09_26/2011_09_26_drive_0018_sync
#/home/gary/Workspace/intern_ws/catkin_ws/data/2011_09_26/2011_09_26_drive_0020_sync
/home/gary/Workspace/intern_ws/catkin_ws/data/2011_09_26/2011_09_26_drive_0027_sync
/home/gary/Workspace/intern_ws/catkin_ws/data/2011_09_26/2011_09_26_drive_0060_sync
filter_by_camera_angle
: Only care about Camera's angle of view, default true
.care_objects
: default ['Car','Van','Truck','Pedestrian','Sitter','Cyclist','Tram','Misc']
, []
means no forground objects.@article{geiger2013vision,
title={Vision meets robotics: The KITTI dataset},
author={Geiger, Andreas and Lenz, Philip and Stiller, Christoph and Urtasun, Raquel},
journal={The International Journal of Robotics Research},
volume={32},
number={11},
pages={1231--1237},
year={2013},
publisher={Sage Publications Sage UK: London, England}
}