# pcd2pgm **Repository Path**: ccpdead/pcd2pgm ## Basic Information - **Project Name**: pcd2pgm - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-10 - **Last Updated**: 2026-01-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PCD2PGM - 点云转栅格地图工具 ROS 2 节点,用于将 PCD 点云文件转换为 2D 栅格地图(PGM/YAML 格式),适用于导航、定位等应用。 ## 功能特点 - **5 步智能滤波流程** 1. Z 轴高度滤波 - 保留指定高度范围的点 2. 体素降采样 - 降低计算量 3. 统计离群点滤波 - 剔除噪点 4. 分块地面检测 - 智能识别并移除地面点(支持多层建筑) 5. 半径离群点滤波 - 最终精细过滤 - **统一路径管理** - 仅需配置一个 `save_path` 参数 - **自动保存** - 生成 PGM 地图和 YAML 配置文件 - **可选点云保存** - 可保存滤波后的点云用于调试 ## 快速使用 ### 基本启动 ```bash # 使用默认配置 ros2 launch pcd2pgm pcd2pgm_launch.py # 指定自定义路径 ros2 launch pcd2pgm pcd2pgm_launch.py save_path:="/home/nuc/my_map" ``` ### 路径说明 假设 `save_path:="/home/nuc/test"`,则: - **加载点云**: `/home/nuc/test.pcd` - **生成地图**: `/home/nuc/test.pgm` + `/home/nuc/test.yaml` - **保存滤波点云**: `/home/nuc/test_filtered.pcd`(当 `enable_pcd_save: true`) ## 关键参数配置 编辑 `config/pcd2pgm.yaml` 调整参数: ### 基础参数 ```yaml map_resolution: 0.05 # 地图分辨率(米/像素) enable_ground_removal: true # 是否移除地面点 enable_pcd_save: false # 是否保存滤波后点云 save_path: "/path/to/map" # 基础路径(不含扩展名) ``` ### 滤波参数调优 **处理速度慢?** - 增大体素大小: `voxel_leaf_size: 0.08-0.1` - 减少统计点数: `statistical_mean_k: 15-20` - 增大网格大小: `grid_size: 4.0-5.0` **精度不够?** - 减小体素大小: `voxel_leaf_size: 0.02-0.03` - 增加统计点数: `statistical_mean_k: 40-50` - 减小网格大小: `grid_size: 1.5-2.0` **地面去除不干净?** - 减小角度阈值: `ground_angle_threshold: 15-20` - 减小高度容差: `ground_height_tolerance: 0.1-0.15` **误删非地面点?** - 增大角度阈值: `ground_angle_threshold: 30-40` - 增大高度容差: `ground_height_tolerance: 0.3-0.5` - 增加最小点数: `min_points_per_grid: 150-200` ## 典型使用场景 ### 场景 1:室内建图 ```bash ros2 launch pcd2pgm pcd2pgm_launch.py \ save_path:="/home/nuc/maps/office_floor1" ``` ### 场景 2:多层建筑 ```yaml # config/pcd2pgm.yaml enable_ground_removal: true # 开启分块地面检测 grid_size_x: 3.0 # 适应不同楼层高度 grid_size_y: 3.0 ground_height_tolerance: 0.5 # 允许地面高度变化 ``` ### 场景 3:快速预览(低精度) ```yaml voxel_leaf_size_x: 0.15 # 大体素快速处理 statistical_mean_k: 15 # 减少计算量 enable_ground_removal: false # 关闭地面检测 ``` ## 输出说明 程序会自动生成: - `.pgm` - 栅格地图图像 - `.yaml` - 地图元数据(分辨率、原点等) - `_filtered.pcd` - 滤波后点云(可选) ## 技术亮点 - **分块地面检测**: 适应不同高度的地面(楼梯、坡道、多层建筑) - **局部自适应**: 每个网格独立计算地面高度,避免全局误判 - **多层结构支持**: 可处理复杂的室内环境和多层建筑 ## License Apache License 2.0