# Lidar-object-tracking **Repository Path**: hgy_rick/lidar-object-tracking ## Basic Information - **Project Name**: Lidar-object-tracking - **Description**: 一个Delft大学的硕士论文代码,正在重构,应用到custom场景 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-24 - **Last Updated**: 2022-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## Tracking and Planning 快速进行中... ### TODO - [x] 重构跟踪部分代码 (see ```src/object_tracking/mytracking```) - [x] 简单加入了轨迹预测 - [x] 根据轨迹发布cost map - [x] 代码可编译 - [x] 代码调试正常运行(2022.3.5) - [x] 多目标场景(kitti)下测试(2022.3.9) - [x] 真实环境测试(天安楼下 2022.3.10) - [x] lrc的检测box调试,最后还是用回IMM方案,机制尚不明确(2022.3.21) ### Flow chart #### Overview ![](./img/immukf.png) #### Target state ![](./img/state.png) 被跟踪的目标会经历以上4个状态: 1. **INITDONE**:在此状态之前,跟踪的目标认为当前时刻最靠近自己的bbox是当前位置。此时不执行UKF,而是简单的计算位置和速度,如果位置速度变化稳定,那么才会用来初始化UKF。 2. **STABLE**:稳定跟踪状态的目标。如果每次观测进来,该目标都能关联上相应的观测,该目标将一直维持在此状态。而且此状态下允许更新bbox的状态。 3. **DRIFT**:如果稳定跟踪状态的目标在某时刻没能关联上相应的观测,那么该目标将进入此状态。由于此状态没有对应的观测,因此UKF执行更新用的还是以前预测的状态。如果在某时刻突然关联到观测,那么将回到稳定态。 4. **LOST**:当目标初始化失败,或者连续过长时间处于**DRFIT**态,那么将落到丢失态,丢失态将会在内存中被删除。 ### Functions #### filterPDA() 该函数执行了PDA(Probability Data Association Filter)的功能。分为两步,第一步是分别对单一模型的更新,第二步是对所有模型的更新。 1. 更新单一模型 ![](./img/pda1.jpg) ![](./img/pda2.jpg) 2. 更新所有模型 ![](./img/pda3.jpg) ### Some ideas pop up - [ ] 可能还需要进一步重构代码,使其更简洁 - [ ] ~~Yaw初始化可能需要改改~~ - [ ] 状态时长可以根据速度进行动态变化 - [x] updateBB不要用体积更新策略 - [ ] ~~做成可以进行MOT比较的~~,可能和一般的MOT任务不同。 ### Usage * KITTI ``` roslaunch object_tracking mytracking.launch ``` ### Bug - [x] 发布的trajectory为空