Awesome
kitti_ros
A ROS-based player to replay KiTTI dataset.
<p align="center"> <img src=".readme/demo.png" width="720px" alt=""/> </p>TODO list
- Publish
*.bin
Point Cloud in topic /kitti/points_raw (sensor_msgs/PointCloud2). - Publish ground truth in
tracklet_labels.xml
.- Publish
care_objects
' 3D OBB (Oriented bounding box) in topic /kitti/bb_raw (geometry_msgs/PoseArray). - Publish as well as /kitti/bb_marker (visualization_msgs/MarkerArray) for visualization.
- Publish
- Publish
*.png
Image in topic /kitti/img_raw (sensor_msgs/Image).- Publish any Camera
0-3
image.
- Publish any Camera
- Publish
*.txt
Pose in tf betweenimu_frame
andworld_frame
. - Publish
*.txt
Calibration in tf between Coordinates. - KiTTI LiDAR-Camera Fusion, kitti_lidar_camera
How to use
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.
Parameters
keyboard_file
: Keyboard listener is based on Linux input subsystem.fps
: default10
Hz, the same as LiDAR frequency.kitti_data_path
: KiTTI raw data directory.- default
$(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
- default
dataset_file
: Only for kitti_continue_player, a list ofkitti_data_path
line after line.- default is
$(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 #GPF works bad in this dataset /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 #/home/gary/Workspace/intern_ws/catkin_ws/data/2011_09_26/2011_09_26_drive_0091_sync #without ground truth #/home/gary/Workspace/intern_ws/catkin_ws/data/2011_09_26/2011_09_26_drive_0117_sync
- default is
filter_by_camera_angle
: Only care about Camera's angle of view, defaulttrue
.care_objects
: default['Car','Van','Truck','Pedestrian','Sitter','Cyclist','Tram','Misc']
,[]
means no forground objects.
References
@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}
}