# kitti_ros
**Repository Path**: ryontang/kitti_ros
## Basic Information
- **Project Name**: kitti_ros
- **Description**: kitti ros
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-12-06
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# kitti_ros
A ROS-based player to replay [KiTTI dataset](http://www.cvlibs.net/datasets/kitti/).
## TODO list
- [x] Publish `*.bin` Point Cloud in topic **/kitti/points_raw** _(sensor_msgs/PointCloud2)_.
- [x] Publish ground truth in `tracklet_labels.xml`.
- [x] Publish `care_objects`' 3D OBB (Oriented bounding box) in topic **/kitti/bb_raw** _(geometry_msgs/PoseArray)_.
- [x] Publish as well as **/kitti/bb_marker** _(visualization_msgs/MarkerArray)_ for visualization.
- [x] Publish `*.png` Image in topic **/kitti/img_raw** _(sensor_msgs/Image)_.
- [ ] Publish any Camera `0-3` image.
- [x] Publish `*.txt` Pose in tf between `imu_frame` and `world_frame`.
- [ ] Publish `*.txt` Calibration in tf between Coordinates.
- [x] KiTTI LiDAR-Camera Fusion, [kitti_lidar_camera](https://github.com/LidarPerception/kitti_lidar_camera)
## How to use
We name your ros workspace as `CATKIN_WS` and `git clone` [kitti_ros](https://github.com/LidarPerception/kitti_ros) as a ros package.
```bash
# 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](#parameters). We recommend to use **quickstart** for KiTTI's LiDAR-perception algorithms testing and model training.
```bash
# 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](#parameters).
**Keyboard Control**
+ `SPACE`: Play/Pause KiTTI data replay.
+ `LEFT ARROW`: Play last frame of data.
+ `RIGHT ARROW`: Play next frame of data.
## [Parameters](./launch/kitti_player.launch)
+ `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.
+ 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`.
```yaml
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](./launch/kitti_continue_player.launch)**, a list of `kitti_data_path` line after line.
+ default is `$(find kitti_ros)/../../data/training_datasets.txt`, as following:
```yaml
#/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
```
+ `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.
## References
```bibtex
@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}
}
```
## Thanks
+ [MarkMuth](https://github.com/MarkMuth)/[**QtKittiVisualizer**](https://github.com/MarkMuth/QtKittiVisualizer)
+ [yukitsuji](https://github.com/yukitsuji)/[**3D_CNN_tensorflow** ](https://github.com/yukitsuji/3D_CNN_tensorflow/blob/master/input_velodyne.py)
+ [strawlab](https://github.com/strawlab/python-pcl)/[**python-pcl** ](https://github.com/Durant35/python-pcl)
+ [**utiasSTARS/pykitti**](https://github.com/utiasSTARS/pykitti)