本项目旨在从大量每秒生成的 PCD 文件中筛选出高质量、稳定的帧,后续可用于点云合并和数据分析。流程主要包括以下几个步骤:
- 目标:利用 IMU 数据筛选出震动较低的时刻,剔除受震动影响的帧。
- 方法:
- 读取以
imu_data_为前缀的 CSV 文件。 - 按
"Timestamp of last PCD"分组,计算每组内加速度相对于 1g 的偏差。 - 保留所有加速度偏差均低于预设阈值(如
0.001)的时间戳。
- 读取以
- 输出:得到一组稳定的时间戳(例如
"2025-03-11 02:13:21"等)。
- 目标:从所有 PCD 文件中筛选出与稳定时间戳匹配的文件。
- 方法:
- 利用正则表达式从 PCD 文件名中提取时间戳(格式:
YYYY-MM-DD_HH_MM_SS),转换为"YYYY-MM-DD HH:MM:SS"格式。 - 与第一步得到的稳定时间戳比对,筛选出候选文件。
- 利用正则表达式从 PCD 文件名中提取时间戳(格式:
- 输出:
- 候选 PCD 文件列表。
- 统计信息:总数、排除数、保留数。
- 目标:在候选 PCD 文件中进一步筛选出连续帧中质心变化最小的一段。
- 方法:
- 对每个候选 PCD 文件计算点云质心。
- 使用固定大小(例如 5 帧)的滑动窗口,计算窗口内各帧质心与窗口均值的欧氏距离标准差作为稳定性指标。
- 选择标准差最小的窗口,认为该窗口内帧的质心变化最稳定。
- 输出:
- 稳定窗口内的 PCD 文件列表。
- 详细信息:窗口均值、各帧质心、以及每帧与窗口均值的偏离值和标准差(关键数值部分以红色高亮显示,便于观察)。
- 目标:在稳定窗口内选出最佳代表帧,进一步验证其几何一致性。
- 方法:
- 参考帧选择:计算稳定窗口内每一帧与窗口均值的偏离,选择偏离最小的帧作为 ICP 的参考点云。
- 对窗口内其他帧与参考帧进行 ICP 配准,计算每帧的 fitness 值(反映匹配质量)。
- 根据 fitness 值排序,选出排名靠前的帧作为最终稳定帧。
- 输出:
- ICP 配准后的统计信息(总数、排除数、保留数)。
- 最终选中的 PCD 文件列表。
- 目标:将最终经过所有筛选步骤后选出的稳定 PCD 文件复制到指定的输出目录(例如
refined_pcd文件夹)。 - 方法:自动复制文件,便于后续处理或点云合并。
- 数据预处理:通过 IMU 数据和 PCD 文件时间戳匹配,初步过滤震动帧。
- 稳定性评估:利用滑动窗口对连续帧的质心稳定性进行量化,确保后续 ICP 筛选基于连续、稳定的数据。
- 精细匹配:采用 ICP 配准计算 fitness 值,选择配准效果最佳的帧作为最终结果。
- 灵活调参:各步骤参数(如窗口大小、ICP 距离阈值、最终保留帧数)均可根据实际数据进行调整,以达到最优筛选效果。
这种工作流程能帮助我们从大量点云数据中自动筛选出高质量的帧,为后续点云合并和数据分析提供坚实的数据基础。希望这份总结能帮助你和你的同事更好地理解和使用该项目!