# 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

drawing

设计了一个全局的配置文件 ``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的底面也与真实的水平面平行。

drawing

#### 感知模块 :* 感知模块中要有两部分组成: - 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)。