feat: 算法升级、整车配准集成与性能分析文档
算法更新: delivery v1.2.1、平整度v1.5、测距v2.2、整车配准v1.3 适配器: vehicle-registration 新增、各算法 manifest 和 adapter 更新 后端: taskCadFiles/source 字段迁移、derivedPointClouds 注册、取消任务联动 前端: ElapsedTime 时长显示、两步算法流程、canRun 逻辑修复 文档: 新增5份算法性能分析报告
This commit is contained in:
64
alg/整车配准v1.3/main.py
Normal file
64
alg/整车配准v1.3/main.py
Normal file
@@ -0,0 +1,64 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
|
||||
from translate_align_pointcloud_to_cad import translate_align_by_front_tail
|
||||
|
||||
|
||||
def build_parser() -> argparse.ArgumentParser:
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Standalone train point-cloud translation alignment tool"
|
||||
)
|
||||
subparsers = parser.add_subparsers(dest="command", required=True)
|
||||
|
||||
translate_align = subparsers.add_parser(
|
||||
"translate-align",
|
||||
help="Align a whole point cloud to a standard STEP CAD by front/tail centroids",
|
||||
)
|
||||
translate_align.add_argument("--cad", "-c", default="datasets/CAD/M02.stp", help="Reference STEP CAD file")
|
||||
translate_align.add_argument(
|
||||
"--pointcloud",
|
||||
"-p",
|
||||
default="datasets/shift_test_output/",
|
||||
help="Input PLY point cloud or a directory containing shifted_whole_pointcloud.ply",
|
||||
)
|
||||
translate_align.add_argument("--output-dir", "-o", default="results", help="Output directory")
|
||||
translate_align.add_argument("--axis", choices=["x", "y", "z"], default="x", help="Train length axis")
|
||||
translate_align.add_argument("--crop-ratio", type=float, default=0.01, help="Front/tail crop ratio")
|
||||
translate_align.add_argument("--mesh-deflection", type=float, default=0.1, help="CAD meshing deflection")
|
||||
translate_align.add_argument("--cad-sample-points", type=int, default=30000, help="Points sampled from CAD mesh")
|
||||
translate_align.add_argument("--local-sample-points", type=int, default=1000, help="Points sampled from each end")
|
||||
translate_align.add_argument("--scale-pointcloud", type=float, default=1.0, help="Scale factor applied to point cloud")
|
||||
translate_align.add_argument("--no-visualize", action="store_true", help="Disable Open3D windows")
|
||||
return parser
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = build_parser()
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.command == "translate-align":
|
||||
result = translate_align_by_front_tail(
|
||||
cad_path=args.cad,
|
||||
pointcloud_path=args.pointcloud,
|
||||
output_dir=args.output_dir,
|
||||
axis=args.axis,
|
||||
crop_ratio=args.crop_ratio,
|
||||
mesh_deflection=args.mesh_deflection,
|
||||
cad_sample_points=args.cad_sample_points,
|
||||
local_sample_points=args.local_sample_points,
|
||||
scale_pointcloud=args.scale_pointcloud,
|
||||
visualize=not args.no_visualize,
|
||||
)
|
||||
|
||||
print("\n========== Result ==========")
|
||||
print("translation:", result["translation"])
|
||||
print("front-tail translation difference:", result["front_tail_translation_difference"])
|
||||
print("aligned path:", result["aligned_path"])
|
||||
print("matrix path:", result["matrix_path"])
|
||||
else:
|
||||
parser.error(f"Unsupported command: {args.command}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user