# pred_fusion
**Repository Path**: hilbert-wang/pred_fusion
## Basic Information
- **Project Name**: pred_fusion
- **Description**: https://github.com/s-duuu/pred_fusion
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-10-22
- **Last Updated**: 2024-10-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ROS Sensor Fusion based Multi-Object Trajectory Prediction
This repository deals with a perception system of Autonomous Driving techniques. In particular, we focused on the object detection, tracking, sensor fusion, and trajectory prediction. We used YOLOv5, PointPillars for the object detection of Camera and LiDAR sensor, respectively. Overall pipeline is as following.
## System Prediction Result
Through ROS Rviz, the prediction output is as the videos above.
## Prerequisite
1. Tested in Ubuntu 20.04 (ROS Noetic) & NVIDIA GeForce RTX 3070
2. Other necessary library is in the `requirements.txt`
## Preparation
### 0. Clone this repository and move directory
Clone this repository and move your current directory to here.
cd path_to_your_ws
git clone https://github.com/s-duuu/pred_fusion.git
cd pred_fusion
### 1. Install requirements
Install modules in `requirements.txt`.
pip install -r requirements.txt
### 2. Clone PointPillars
Clone the [official repository of PointPillars](https://github.com/zhulf0804/PointPillars).
git clone https://github.com/zhulf0804/PointPillars.git
### 3. Clone OpenPCDet
Clone the [official repository of OpenPCDet](https://github.com/open-mmlab/OpenPCDet).
git clone https://github.com/open-mmlab/OpenPCDet.git
### 4. Clone CRAT-Pred
Clone the [official repository of CRAT-Pred](https://github.com/schmidt-ju/crat-pred).
git clone https://github.com/schmidt-ju/crat-pred.git
### 5. Build package
Build the package in the your workspace.
cd path_to_your_ws
catkin_make (or catkin build)
source ./devel/setup.bash
## Execute Launch file & Test
Execute launch file which includes all ROS nodes necessary for the system.
roslaunch fusion_prediction integrated.launch
You can test our system by [ROS bagfile](https://drive.google.com/file/d/1xxUuHh4EdGnaSU-Z3uUCBFW6_bFpsDiu/view?usp=sharing). Download the file and play it in another terminal. Rviz will display the result of the system.
cd path_to_bagfile
rosbag play test.bag
## Detection Models
### 1. YOLOv5
We trained YOLOv5s model, which is located in `pred_fusion/fusion_prediction/yolo.pt`. Since the model was trained with image data extracted from CarMaker simulator, if you need the YOLOv5 model for the real vehicles, it would be better to change the YOLO model. You can train a new model from [yolov5 official github](https://github.com/ultralytics/yolov5).
### 2. PointPillars
We also trained PointPillars model, which is located in `pred_fusion/fusion_prediction/pillars.pth`. This model was trained with Kitti dataset, thus you don't need to change the model.
## Sensor Fusion
Sensor fusion algorithm is based on Late Fusion algorithm. Algorithm in this repository is based on the bounding box projection. Each 3D bounding box predicted from the PointPillars model is projected onto the image plane. Then, the algorithm determines whether the 2 bounding boxes are for the same object based on IOU.
## Object Tracking
Object tracking algorithm is based on the [SORT (Simple Online and Realtime Tracking)](https://github.com/abewley/sort). The algorithm tracks each BEV (Bird's Eye View) Bounding Box. Tracking is based on Kalman Filter, Matching is based on IOU, and Assignment is based on Hungarian algorithm.
## Trajectory Prediction
Trajectory is predicted from the [CRAT-Pred model](https://github.com/schmidt-ju/crat-pred). This model was trained with Argoverse dataset, thus you don't need to change the model. The model is located in `pred_fusion/fusion_prediction/crat.ckpt`.
## Contributor
Kim SeongJu, School of Mechanical Engineering, Sungkyunkwan University, South Korea
e-mail: sungju29@g.skku.edu