Awesome
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
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
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).
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.