HuangCongQing / 3D-LIDAR-Multi-Object-Tracking

🔥3D-MOT(点云多目标检测和追踪C++) (2020 · 秋) 代码有详细注解
MIT License
388 stars 91 forks source link
kitti lidar mot pcl pointcloud pointcloud-segmentation ros-melodic

3D-LIDAR-Multi-Object-Tracking

3D-MOT(多目标检测和追踪) 代码有详细注解 (2020 · 秋) 更多内容,请参见公众号:双愚

参考:https://github.com/k0suke-murakami/object_tracking

@双愚 , 若fork或star请注明来源

微信交流群二维码每周都更新一次,请关注公众号【双愚】后台回复目标检测加群

image

版本(建议先看kitti分支)

两文件夹介绍

此仓库的两文件夹

目录


├── src
│   ├── groundremove
│   │   └──extract_ground.cpp // 提取地面 没有使用?!!!
│   │   └── gaus_blur.cpp           //高斯模糊  #include "ground_removal.h"
│   │   └── ground_removal.cpp   //地面去除 #include "gaus_blur.h"  各种函数的集合,没有主函数
│   │   └── main.cpp  //  #include "ground_removal.h"
│   └──  cluster
│          ├── box_fitting.cpp        //  Bounding Box Fitting 边界框拟合
│          ├── component_clustering.cpp// 利用连通组件聚类来区分提升点中的每个可能的对象。
│          ├── main.cpp          //  #include "component_clustering.h"  "box_fitting.h"
└── tracking
    ├── Eigen
    │   ├── ...
    ├── ukf.cpp        //  Unscented Kalman Filter (UKF)无损滤波器
    ├── imm_ukf_jpda.cpp//   #include "ukf.h" IMM-UK-JPDAF的“耦合”滤波器
    └── main.cpp         //  #include "imm_ukf_jpda.h"

Intro

This package includes Ground Removal, Object Clustering, Bounding Box, IMM-UKF-JPDAF, Track Management and Object Classification for 3D-LIDAR multi object tracking. The idea is mainly come from this paper.

代码对应论文:3D-LIDAR Multi Object Tracking for Autonomous Driving(Master论文)

更多内容,请参见公众号:双愚

下面介绍用kitti数据集相关操作

Setup

Frameworks and Packages

Make sure you have the following is installed:

Dataset

数据集已处理好,放在百度网盘上,需要自己下载

编译

将本仓库下的2个文件夹(object_tracking/object_tracking0)移动到catkin_wp/src下,然后执行下面操作

// 创建环境变量 src中运行
mkdir -p catkin_wp/src
cd catkin_wp/src
catkin_init_workspace

// 编译(需要回到工作空间catkin_wp)
cd ..
catkin_make  // 产生build和devel文件夹

//设置环境变量,找到src里的功能包(每个新的shell窗口都要执行以下source devel/setup.bash)
source devel/setup.bash  // 不同shell,不同哦.sh  .zsh           通过设置gedit ~/.zshrc,不用每次都source

详情可参考:https://www.yuque.com/docs/share/e59d5c91-b46d-426a-9957-cd262f5fc241?# 《09.创建工作空间与功能包※※※》

修改配置文件

举例:修改输入topic对应的frame_id(有好几处,可以全局搜索进行修改)

cd object_tracking/src/groundremove/main.cpp

#第8行      "/kitti/velo/pointcloud" --话题名(可以根据不同数据集修改topic话题名) 
ros::Subscriber sub = nh.subscribe("/kitti/velo/pointcloud", 160, cloud_cb); 

# 修改frame_id = "velo_link"

Start

各模块代码路径:

PLEASE make sure you load the files, src/ego_velo.txt and src/ego_yaw.txt in src/imm_ukf_jpda.cpp l68, l69

Terminal 1
roscore
Terminal 2

--loop循环paly不推荐加,tracking和上一帧有关,误差越来越大

# kitti官方 注意修改路径path
rosbag play path/kitti_2011_09_26_drive_0005_synced.bag --loop
Terminal 3
rviz

arch

Terminal 4

#  推荐运行launch
roslaunch  object_tracking test.launch
#  复杂不推荐
rosrun object_tracking ground
rosrun object_tracking cluster
rosrun object_tracking tracking

Result

arch

Youtube Clip

IMAGE ALT TEXT HERE

License

Copyright (c) 双愚. All rights reserved.

Licensed under the MIT License.

应同学建议,创建了星球 【自动驾驶感知(PCL/ROS+DL)】 专注于自动驾驶感知领域,包括传统方法(PCL点云库,ROS)和深度学习(目标检测+语义分割)方法。同时涉及Apollo,Autoware(基于ros2),BEV感知,三维重建,SLAM(视觉+激光雷达) ,模型压缩(蒸馏+剪枝+量化等),自动驾驶模拟仿真,自动驾驶数据集标注&数据闭环等自动驾驶全栈技术,欢迎扫码二维码加入,一起登顶自动驾驶的高峰!

image

最后,如果您想要支持我的工作,请扫描下面的二维码

image