Skip to content

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

Notifications You must be signed in to change notification settings

Owen-Liuyuxuan/kitti_visualize

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published