# 列车测量任务配置文件 - 使用原始点云(未配准) # 测试所有任务在原始点云上的表现 # 点云文件路径 pointcloud_file: "/home/suzhe/pcc/train_models/train_2_1T.ply" # ROI提取配置 - 使用优化Grid索引 roi_extraction: method: "grid" # 使用Grid网格索引 use_optimized: true # 使用优化版(numpy向量化,快75倍) grid_size: 100.0 # 网格大小100mm # 性能预期: # - 索引构建: 223秒 (一次性) # - ROI提取: 0.19秒/任务 (vs Linear的14秒/任务) # - 20任务总时间: ~12分钟 (vs Linear的13分钟) # - 提升: 约7% (1分钟) # 测量任务列表 tasks: - name: "任务21_侧门高度" type: "line_to_plane" # TODO: 改为 line_to_line enabled: true description: "测量侧门顶部边缘线到底部边缘线的距离" #2176.7 - 2176.4 theoretical_dimension: 2176.4 tolerance: upper: 4 lower: 1 # 源边缘线ROI(侧门顶部边缘) source_roi: line_start: [-2460, 3356.43, -1511.26] line_end: [-1821.05, 3356.43, -1511.26] # 目标边缘线ROI(侧门底部边缘) target_roi: bbox_min: [-2500, 1177, -1621] bbox_max: [-1500, 1183, -1500] params: sample_points: 100 ransac_threshold: 2.0 ransac_max_iterations: 1000 min_inlier_ratio: 0.6 roi_distance_threshold: 0.02 # 精筛选距离阈值(mm) - name: "任务2_车体长度" type: "plane_to_plane" enabled: true description: "测量车体前后端面的距离" theoretical_dimension: 26507 # 理论尺寸 tolerance: 10 # visualization_dir: "visualizations_0617" source_roi: bbox_min: [-14009, 1500, -900] bbox_max: [-14005, 1700, 900] target_roi: bbox_min: [12497, 1070, -1300] bbox_max: [12503, 1160, 1300] params: sample_points: 100 ransac_threshold: 0.1 ransac_max_iterations: 1000 min_inlier_ratio: 0.6 - name: "任务43_窗口下沿高度" type: "line_to_plane" # TODO: 改为 line_to_plane enabled: true description: "测量窗口下沿边缘线到地面的距离" theoretical_dimension: 803 tolerance: upper: 6.5 lower: -4 # 源边缘线ROI(窗口下沿边缘) source_roi: line_start: [933.37,1983,-1676.62] line_end: [2114.6,1983,-1676.62] # 目标平面ROI(地面) target_roi: bbox_min: [-10222, 1179, -302] bbox_max: [12428, 1181, 302] params: sample_points: 100 ransac_threshold: 0.5 ransac_max_iterations: 1000 min_inlier_ratio: 0.6 roi_distance_threshold: 0.02 # 精筛选距离阈值(mm) - name: "任务44_车顶高度" type: "plane_to_plane" enabled: true description: "测量车顶到地面的距离" theoretical_dimension: 2800 # 理论尺寸 tolerance: upper: 7 lower: -1 # 公差 ±3mm source_roi: bbox_min: [2000, 3979, -14] bbox_max: [5000, 3981, 14] target_roi: bbox_min: [100, 1177, -1510] bbox_max: [11000, 1183, -1420] params: sample_points: 100 ransac_threshold: 0.1 ransac_max_iterations: 1000 min_inlier_ratio: 0.6 # - name: "任务3_边梁立面6点到z=0平面距离" # type: "point_to_plane" # enabled: false # description: "测量边梁立面6个精确点到z=0平面的距离" # mode: "exact_points" # theoretical_dimension: 1445 # 理论尺寸 # tolerance: # upper: 0 # lower: -2 # 公差 ±3mm # # 目标点坐标(左右各3个点) # target_points: # - [-753.5, 1052.5, -1445] # - [-753.5, 1052.5, 1445] # - [3446.5, 1053, -1445] # - [3446.5, 1053, 1445] # - [8146.5, 1053, -1445] # - [8146.5, 1053, 1445] # # 平面参数 (ax + by + cz + d = 0),z=0即c=1, d=0 # plane: # a: 0 # b: 0 # c: 1 # d: 0 # # 最近点搜索半径(mm) # search_radius: 10.0 - name: "任务15_侧墙z最大值点到z=0平面距离" type: "point_to_plane" enabled: true description: "从两个包围盒提取侧墙点云,选取z绝对值最大的10个点,计算到z=0平面的距离" mode: "bbox_filtered" theoretical_dimension: 1680 # 理论尺寸 tolerance: upper: -2 lower: -6 # 公差 ±3mm # 包围盒列表 bboxes: - name: "左侧墙" min: [-1468, 1899, -1680] max: [12300, 1901, -1677] - name: "右侧墙" min: [-1468, 1899, 1677] max: [12300, 1901, 1680] # 过滤条件 filter: type: "max_abs_coordinate" axis: "z" top_n: 10 # 平面参数 (z=0) plane: a: 0 b: 0 c: 1 d: 0 # - name: "任务4_纵向梁距离" # type: "point_to_point" # enabled: true # description: "测量关于z=0对称的点对之间的距离(纵向梁)" # theoretical_dimension: 2890 # 理论尺寸 # tolerance: # upper: 0 # lower: -4 # 公差 ±3mm # # 点对配置(使用任务3的6个点,配对测量) # point_pairs: # - name: "前端点对" # point1: [-753.5, 1052.5, -1445] # point2: [-753.5, 1052.5, 1445] # - name: "中间点对" # point1: [3446.5, 1053, -1445] # point2: [3446.5, 1053, 1445] # - name: "后端点对" # point1: [8146.5, 1053, -1445] # point2: [8146.5, 1053, 1445] # # 最近点搜索半径(mm) # search_radius: 10.0 - name: "任务1_转向架距离" type: "point_to_point + hole_center" enabled: true description: "测量两对定位孔的x距离,作为转向架间距离" theoretical_dimension: 17800 tolerance: 2 boxes: - name: "左前" min: [-8944,1020,-1507] max: [-8846,1040,-1401] - name: "右前" min: [-8947,1020,1400] max: [-8847,1040,1507] - name: "左后" min: [8850,1020,-1551] max: [8955,1040,-1450] - name: "右后" min: [8850,1020,1450] max: [8950,1040,1552] # - name: "任务6_转向架未加工支撑面到参考线距离" # type: "plane_to_plane + 4_hole_center" # enabled: false # description: "四个孔定位参考线平面,转向架支撑面用ROI框定" # theoretical_dimension: 65 # tolerance: # upper: 8.5 # lower: -3 # visualization_dir: "visualizations_0617" # boxes: # - name: "左上孔" # min: [11631,1010,155] # max: [11674,1055,210] # - name: "右上孔" # min: [11631,1010,-210] # max: [11674,1055,-155] # - name: "左下孔" # min: [11631,812,155] # max: [11674,857,205] # - name: "右下孔" # min: [11631,812,-205] # max: [11674,857,-155] # - name: "左加工面" # min: [-9189,998,1405] # max: [-8993,1002,1501] # - name: "右加工面" # min: [-9191,998,-1500] # max: [-8990,1002,-1410] # params: # sample_points: 100 # ransac_threshold: 0.1 # ransac_max_iterations: 1000 # min_inlier_ratio: 0.6 - name: "任务7_边梁下平面到参考线的距离" type: "plane_to_plane + 4_hole_center" enabled: true description: "四个孔定位参考平面,边梁下平面用ROI指定" theoretical_dimension: 85 tolerance: upper: 8.5 lower: -3 # visualization_dir: "visualizations_0617" boxes: - name: "左上孔" min: [11631,1015,159] max: [11674,1050,206] - name: "右上孔" min: [11631,1015,-201] max: [11674,1050,-157] - name: "左下孔" min: [11631,817,160] max: [11674,852,200] - name: "右下孔" min: [11631,817,-200] max: [11674,852,-160] - name: "左平面" min: [8847,1017,-1629] max: [8876,1023,-1548] - name: "右平面" min: [8862,1017,1593] max: [8944,1023,1624] params: sample_points: 100 ransac_threshold: 0.1 ransac_max_iterations: 1000 min_inlier_ratio: 0.6 - name: "任务18_门口宽度" type: "plane_to_plane" enabled: true description: "乘客门口宽度" theoretical_dimension: 1070 # 理论尺寸 tolerance: upper: 3 lower: 0 # 源平面(采样点的来源) source_roi: bbox_min: [-2552, 1390, 1402] bbox_max: [-2551, 3080, 1577] # 目标平面(测量距离的目标) target_roi: bbox_min: [-1482, 1400, 1513] bbox_max: [-1481, 3120, 1591] params: sample_points: 100 ransac_threshold: 0.1 ransac_max_iterations: 1000 min_inlier_ratio: 0.6 check_width_variation: true # 启用宽度差值检查(任务19) width_variation_tolerance: 2.0 # 差值公差 ±2mm - name: "任务28_端门口宽度" type: "plane_to_plane" description: "后部门口宽度" theoretical_dimension: 900 # 理论尺寸 tolerance: upper: 2 lower: 0 # 源平面(采样点的来源) source_roi: bbox_min: [12428, 1244, -451] bbox_max: [12480, 3070, -449] # 目标平面(测量距离的目标) target_roi: bbox_min: [12428, 1278, 449] bbox_max: [12480, 3090, 451] params: sample_points: 100 ransac_threshold: 0.1 ransac_max_iterations: 1000 min_inlier_ratio: 0.6 - name: "任务29_端门口高度" type: "plane_to_plane" description: "后部门口高度" theoretical_dimension: 2050 # 理论尺寸 tolerance: upper: 5 lower: 0 # 源平面(采样点的来源) source_roi: bbox_min: [12424, 3229, -330] bbox_max: [12486, 3231, 330] # 目标平面(测量距离的目标) target_roi: bbox_min: [12440, 1179, -440] bbox_max: [12490, 1181, 440] params: sample_points: 100 ransac_threshold: 0.05 ransac_max_iterations: 1000 min_inlier_ratio: 0.6 - name: "任务32_司机室登车门门口宽度" type: "line_to_line" # TODO: 改为 line_to_line enabled: true description: "司机室门口宽度(左右两条边缘线之间的距离)" # 566 - 566.6 theoretical_dimension: 566.6 tolerance: upper: 3 lower: 0 # 源边缘线ROI(门口左侧边缘) source_roi: line_start: [-8177.85,1650.33,-1541.48] line_end: [-8177.85,2448.88,-1499.63] # 目标边缘线ROI(门口右侧边缘) target_roi: line_start: [-8744.48,1727.71,-1537.42] line_end: [-8744.48,2421.28,-1501.08] params: sample_points: 100 ransac_threshold: 2.0 ransac_max_iterations: 1000 min_inlier_ratio: 0.6 roi_distance_threshold: 0.02 # 精筛选距离阈值(mm) - name: "任务33_司机室登车门门口高度" type: "line_to_line" # TODO: 改为 line_to_line enabled: true description: "司机室门口高度(上下两条边缘线之间的距离)" # 1687 - 1687.1 theoretical_dimension: 1687.1 tolerance: upper: 3 lower: 0 # 源边缘线ROI(门口上边缘) source_roi: line_start: [-8630.24,2994.7,-1467.83] line_end: [-8280.89,2994.7,-1467.83] # 目标边缘线ROI(门口下边缘) target_roi: line_start: [-8625.48,1309.87,-1555.36] line_end: [-8301.7,1309.87,-1555.36] params: sample_points: 100 ransac_threshold: 2.0 ransac_max_iterations: 1000 min_inlier_ratio: 0.6 roi_distance_threshold: 0.02 # 精筛选距离阈值(mm) # - name: "任务14_侧墙相对纵梁的角度位置" # type: "point_to_plane" # description: "包围盒提取窗口上沿,选取z绝对值最大的10个点,计算到z=1445平面的距离" # mode: "bbox_filtered" # theoretical_dimension: 179.3 # 理论尺寸 # tolerance: # upper: 2 # lower: -4 # 公差 ±3mm # # 包围盒列表 # bboxes: # - name: "左窗口上沿" # min: [1136, 2700, 1620] # max: [1713, 2745, 1630] # # 过滤条件 # filter: # type: "max_abs_coordinate" # axis: "z" # top_n: 10 # # 平面参数 (z=0) # plane: # a: 0 # b: 0 # c: 1 # d: -1445 - name: "任务30_参考线到司机室辅助孔距离" type: "point_to_plane + 4_hole_center + 1_hole_center" enabled: true description: "4孔定参考线平面,1孔定辅助孔位置,点到面" theoretical_dimension: 308.5 tolerance: 2 boxes: - name: "左上孔" min: [11631,1015,159] max: [11674,1050,206] - name: "右上孔" min: [11631,1015,-201] max: [11674,1050,-157] - name: "左下孔" min: [11631,817,160] max: [11674,852,200] - name: "右下孔" min: [11631,817,-200] max: [11674,852,-160] - name: "辅助孔" min: [-13308, 620, -5] max: [-13296, 630, 5] - name: "任务16_车体最大宽度" type: "point_to_point" enabled: true description: "从两个包围盒提取侧墙点云,选取z绝对值最大的10个点,他们z距离之差" mode: "bbox_filtered" theoretical_dimension: 3360 tolerance: upper: -4 lower: -10 # 包围盒列表 bboxes: - name: "左侧墙" min: [-1468, 1890, -1680] max: [12300, 1910, -1677] - name: "右侧墙" min: [-1468, 1890, 1677] max: [12300, 1900, 1680] # 过滤条件 filter: type: "max_abs_coordinate" axis: "z" top_n: 10 - name: "任务47_内端墙门口高" type: "plane_to_plane" enabled: true description: "车体内部神秘横梁高度" theoretical_dimension: 2200 tolerance: upper: 2 lower: 0 # 源平面(采样点的来源) source_roi: bbox_min: [-98, 3379, -1000] bbox_max: [-77, 3381, 1000] # 目标平面(测量距离的目标) target_roi: bbox_min: [-1000, 1179, -300] bbox_max: [1000, 1181, 300] params: sample_points: 100 ransac_threshold: 0.1 ransac_max_iterations: 1000 min_inlier_ratio: 0.6 - name: "任务46_车体横断面对角线差值" type: "point_to_point" enabled: true description: "对角线距离作差" theoretical_dimension: 0 # 理论差值为0 tolerance: 0.1 # visualization_dir: "visualizations" mode: "exact_points" # 定义两条对角线的点对 point_pairs: - name: "对角线1" point1: [3500, 1180, 1541.42] # 左下角 point2: [3500, 2961.83, -1543.02] # 右上角 - name: "对角线2" point1: [3500, 1180, -1541.42] # 右下角 point2: [3500, 2961.85, 1543.02] # 左上角 # 查找最近点的搜索半径(mm) search_radius: 10.0 # 差值比较配置 compare_mode: "difference" # 启用差值比较模式 compare_pairs: [0, 1] # 比较对角线1和对角线2的距离 difference_tolerance: 0.1 # 差值阈值:2mm