Files
lipan 29f1d45d66 feat: 算法升级、整车配准集成与性能分析文档
算法更新: delivery v1.2.1、平整度v1.5、测距v2.2、整车配准v1.3
适配器: vehicle-registration 新增、各算法 manifest 和 adapter 更新
后端: taskCadFiles/source 字段迁移、derivedPointClouds 注册、取消任务联动
前端: ElapsedTime 时长显示、两步算法流程、canRun 逻辑修复
文档: 新增5份算法性能分析报告
2026-06-25 08:22:20 +00:00
..

CAD 采样工具(测试数据生成 · 与主算法隔离)

这是独立工具,不是主算法的一部分。 它只用来把 CAD 的 STEP 模型采样成点云, 作为模拟测试数据。主测量算法 (underframe_deflection) 不会 import 本目录任何代码, 也不依赖 cadquery。将来用真实扫描点云时,本工具完全可以不用。

作用

STEP (.stp)  ──►  step_to_pointcloud.py  ──►  整车点云 (.ply / .xyz) + metadata (.json)
                  (tessellate + 按三角面积加权采样)

输出坐标轴约定与主算法一致:x=纵向, y=横向, z=高度(脚本内部做了 [0,2,1] 轴重排, 因为 CAD 原始是 x=纵向, y=高度, z=横向)。

安装依赖

# 仅生成测试数据时才需要;主算法运行不需要它
pip install -e .[sampling]      # 安装 cadquery

用法

python tools/cad_sampling/step_to_pointcloud.py <模型.stp> \
    -n 800000 \                 # 采样点数(越大越密)
    --bottom-boost 4.0 \        # 对车底区域加密的权重(>1 时车底点更多)
    --bottom-band-height-ratio 0.24 \
    --output-prefix test_data/dense_800k

常用参数:

参数 默认 说明
-n / --num-points 100000 采样点总数
--bottom-boost 1.0 车底加密倍数(挠度测量建议 ≥ 3)
--bottom-band-height-ratio 0.24 车底带的高度占比
--linear-deflection 1.0 tessellation 线性精度(越小三角越细,越慢)
--angular-deflection 0.1 tessellation 角度精度
--seed 42 随机种子(可复现)

与主算法的关系

[本工具] STEP → 点云            [主算法] 点云 + CAD + ROI(json) → 挠度报告
   (cadquery,仅测试)              (numpy+scipy,生产)
        └── 解耦 ──────────────────────┘

挠度测量对点云密度敏感:车底纵梁区域过稀会导致样条拟合在端点不稳定。 生成模拟测试数据时建议 --bottom-boost ≥ 3 且 -n ≥ 8e5。