Owen-Liuyuxuan / kitti_visualize

Visualize KITTI sequences and object detection benchmark on ROS with full tf support.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Kitti Visualization

Ros package to visualize KITTI object data, raw data, and depth prediction data with RVIZ

Getting Started:

Data Preparation

You can use this repo with either or both KITTI object dataset and raw dataset. The code will not raise error until the data is actually being read, so if you are using only object dataset or only raw dataset, the code will still work fine (we have a GUI to control which dataset we are using).

If you need oxts poses/odometry support for raw dataset. Please refer to this naive method to produce poses for every sequence. Otherwise, we will simply publish a identity transform between baselink and odom.

Software Prerequisite

This repo runs with ROS python3 (noetic), and we expect PyQt5 correctly setup with ROS installation.

If you would like to run with ROS python2 (melodic). Please checkout to older code (we only modify import standard for different python):

git checkout a42df15e574119221b833547cb3868ba590012f8

Clone the repo under the {workspace}/src/ folder. Overwrite the folder names in the launch file to point to your data.

cd catkin_ws/src
git clone https://github.com/Owen-Liuyuxuan/kitti_visualize
cd ..
catkin_make
source devel/setup.bash # devel/setup.zsh or devel/setup.sh for your own need.

# modify and check the data path!! Also control the publishing frequency of the data stream.
nano src/kitti_visualize/launch/visualize_launch.launch 

# this will launch the data publisher / rviz / GUI controller
roslaunch kitti_visualize visualize_launch.launch 

Core Features:

  • KITTI object detection dataset support.
  • KITTI raw data sequence support.
  • KITTI depth prediction support.
  • Stereo RGB cameras.
  • Filtered LiDAR, RGB point clouds.
  • Ground truth bounding boxes.
  • TF-tree (camera and LiDAR).
  • GUI control & ROS topic control.
  • IMU tf trees.

GUI

image

User manual:

index: integer selection notice do not overflow the index number (especially for kitti object dataset)

isSequential: boolean flag to determine if we are using streaming data (for raw dataset)

Stop: stop any data loading or processing of the visualization node.

Pause: prevent pointer of the sequantial data stream from increasing, keep the current scene.

Cancel: quit. (click this before killing the entire launch process)

Object Detection

Following the file structure of kitti object detection dataset. Point clouds, stereo images, object labels are loaded and published

image

Raw Data & Depth Prediction Dataset

We support video-like streaming raw data. Depth Prediction dataset follows similar structure of raw data, thus can be visualized in RGB point clouds together(optionally).

image

ROS Topics

Published Topics

/kitti/left_camera/image (sensor_msgs/Image)

/kitti/right_camera/image (sensor_msgs/Image)

/kitti/left_camera/camera_info (sensor_msgs/CameraInfo)

/kitti/right_camera/camera_info (sensor_msgs/CameraInfo)

/kitti/lidar (sensor_msgs/PointCloud2)

/kitti/left_camera_pc (sensor_msgs/PointCloud2)

/kitti/bboxes (visualization_msgs/MarkerArray)

The tf trees are also well constructed. We have a predefined rviz file for visualizing all topics and tf trees.

Beta Features:

Features that are supported with some tricks.

  • Additional labels allowed to visualize detection results along with GT bboxes.
  • Odometry supported in sequence reading and will publish to the TF tree.

Additional labels

To visualize results predicted by some existing object detection algorithms/repo like visualDet3D, we first have their predictions on training split/test split stored in text files, as required by the KITTI submissions. Then we copy the predictions to kitti_obj/{split}/additional_label_2. Then the prediction results will be published with gt labels on the same topic.

Odometry support:

We can use the oxts measurement in the raw dataset to obtain a pose for each frame to enable a truly sequential visualization. In this repo, we first refer to this naive method to produce poses for every sequence. Then in this repo, we will publish a tf transform from odom to baselink based on the poses matrix.

About

Visualize KITTI sequences and object detection benchmark on ROS with full tf support.


Languages

Language:Python 84.1%Language:CMake 15.9%