# 3d_lidar_mot
**Repository Path**: yyj6862/3d_lidar_mot
## Basic Information
- **Project Name**: 3d_lidar_mot
- **Description**: 使用3D激光雷达的mot框架,包含定位、感知、目标的状态估计
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 9
- **Forks**: 5
- **Created**: 2023-05-01
- **Last Updated**: 2025-10-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 3D LiDAR MOT
**使用3D激光雷达完成MOT(multi-object-tracking)的package,使用FAST-LIO作为整个系统的定位模块,使用几何方法作为Detector完成目标检测,利用KM算法进行数据关联、使用Kalman Filter完成动态障碍物的状态估计任务。**
## Menu
- [3D LiDAR MOT on USV](#3d-lidar-mot-on-usv)
- [Menu](#menu)
- [System architecture](#system-architecture)
- [定位模块 :)](#定位模块-)
- [感知模块 :\*](#感知模块-)
- [Dependency](#dependency)
- [Install (Important!)](#install-important)
- [Sample datasets](#sample-datasets)
- [Run the package](#run-the-package)
- [Other notes](#other-notes)
## System architecture
设计了一个全局的配置文件 ``global_config/global_config.yaml`` 所有的参数都在此yaml文件中,算法运行参数都在其中进行修改。
对于程序中的某些组件 使用了继承的方法(如画bounding box 有aabb obb等方法),实例化哪个子类也在配置文件中进行设置。
详细的说明可以参考[知乎](https://zhuanlan.zhihu.com/p/620790689).
#### 定位模块 :)
基于开源算法:[Fast-lio](https://github.com/hku-mars/FAST_LIO),同时在Fast-lio的基础上加入了地面滤波以及世界系与当前lidar系的重力对齐功能,来适应MOT任务的要求。vanilla Fast-lio的世界系为初始化时的IMU姿态,我在原版Fast-lio的基础上加入了世界系的重力对齐,将其称wg系,重力对齐的世界系,同时将当前帧的点云也变换到了重力对齐的Lidar系中(lg系,Lidar-g-aligned frame)。如下图所示,当前帧点云的坐标系(lg)与世界系(wg)的XOY平面都是与真实的水平面平行的。进行重力对齐的目的是为了方便点云的向下投影(BEV),以及感知任务中的Bounding Box的底面也与真实的水平面平行。
#### 感知模块 :*
感知模块中要有两部分组成:
- 1.Detector : 使用几何方法的点云的聚类分割模块。
- - ``euclidean_cluster``用于行人检测,主要使用了PCA对聚类进行筛选。
- 2.Tracker : 障碍物的连续追踪以及KF状态估计模块。对Detector中的的BBX使用 底面面积、高度、位置进行联合的数据关联打分,之后使用KM算法进行数据关联(KM算法的可以当成一个黑盒来看)。使用一个简单的KF进行状态估计,如下所示。
```
Model : 匀速运动模型
状态量 :[Px Py Vx Xy] #物体在世界系下的二维的位置 以及 速度
观测量 :[Px Py] #物体在世界系下的位置作为观测量
```
## Dependency
- [ROS](http://wiki.ros.org/ROS/Installation) and we have tested our programe on UBUNTU 20.04.
- [FAST-LIO](https://github.com/hku-mars/FAST_LIO) make sure you have FAST-LIO env installed.
- YAML-CPP
```
sudo apt-get install libyaml-cpp-dev
```
- glog
```
git clone https://github.com/google/glog
sudo apt-get install autoconf automake libtool
cd glog
mkdir build
cd build
cmake ..
make
sudo make install
```
## Install (Important!)
1.编译package前,需要将``global_config/global_definition.h``中的``PROJECT_PATH``设为自己的目录。
提供的ROSBAG对应的Lidar-IMU外参已经在``Fast-lio-ground-filter``中的``yyj_handheld.yaml``中设置好了,不需要再次进行标定。
2.修改 ``perception/CMakeLists.txt``中的``include_directories``中的路径,修改成对应的你的路径。
3.修改``FAST_LIO_ground_filter/CMakeLists.txt``中的``include_directories``中的路径,修改成对应的你的路径。
## Sample datasets
you can download out dataset @baidunetdisk.
```
链接: https://pan.baidu.com/s/1Kn3bsO0Ur_CzWBNSMq92bQ 提取码: vuco
```
## Run the package
1. Run the launch file:
```
roslaunch perception pedestrian_perception.launch
```
2. Play existing bag files:
```
rosbag play your-bag.bag
```
## Other notes
关于定位方式,这里使用的SLAM算法用于给每一帧点云定位,原因主要在于我们这里只有单一传感器,slam算法直接给点云进行的定位,不用插值,精度很高。当然更加工程化的室外定位方式是使用GNSS-IMU组成高频的里程计来定位具体原理可以参考我之前写的文章[INS-ESKF-KITTI](https://zhuanlan.zhihu.com/p/600738312)。