CommonLibraries/docs/PROGRESS.md

2.7 KiB
Executable File
Raw Blame History

VizumCameraKit 进度

2026-07-05 点云栅格化修正:启用 SDK 激光点填充

Scope:

  • CapturePointCloudWithAutoDetect 在 BeginDetectLaser 后新增 VzNL_EnableFillLaserPoint(handle, VzTrue)(VZNL_DetectLaser.h:307,SDK 默认不填充)。
  • 根因:默认模式下每条激光线只回传检出点、长度不一,软件侧左对齐拼 W×H 网格时 列向错位(同列不代表同横向位置)。启用填充后 SDK 输出定长线(无测量处填占位点), 回调侧 scanLine 本就保留全部点,网格自然列对齐,MatchVerify 的 cloud.txt 栅格随之正确。

Verification:

kit 与 MatchVerify 重编译通过;kit_smoke 终端运行退出码 0 全流程正常。
待实机:采一次点云,确认日志"收到扫描线 N 个点"各线等长、cloud.txt 网格列对齐。

Known quirk(与本次改动无关,业务无影响):

  • kit_smoke 在 stdout 重定向到管道(>/dev/null 或 >file)时,业务流程完整跑完 ("SDK destroyed"已打印、main 已返回)后进程收尾阶段段错误(139); 终端直跑恒为退出码 0。疑为 VzNL DLL 卸载时其日志组件写已关闭管道所致。 GUI 程序不受影响;自动化脚本调用 kit_smoke 时以日志内容而非退出码判断成败。

2026-07-05 模块建立(从 Mark3DCalibration 毕业)

Scope:

  • 从 Mark3DCalibration 抽出最小集:VizumCamera.h/.cpp(src/modules/device/vizum)、 IStructuredLightCamera.h、core/StructuredLightTypes.h(均零修改拷入, 保持与原工程可对照);external/VzNLSDK(98MB 全量)与 header-only spdlog 一并拷入。
  • utils/Logger.h 重写为无 Qt 版本(仅去掉 QString fmt 特化,宏接口与原版一致), 使 VizumCamera.cpp 无需任何改动即可编译。
  • 新增 VizumCamera::SetCalibROIEnabled(bool):封装 VzNL_EnableCalibROI, 启用后 GetLeftImage 返回 SDK 矫正图(MatchVerify 需求)。这是本模块相对 Mark3DCalibration 原版的唯一功能性差异。
  • CMake:静态库 VizumCameraKit(PUBLIC 传递 include/ENABLE_VIZUM_CAMERA/链接)、 VIZUMKIT_DLL_DIR 缓存变量供使用方拷 DLL、kit_smoke 冒烟测试目标。

Verification:

cmake + VS2022 x64 Release 编译 -> VizumCameraKit.lib / kit_smoke.exe 生成
kit_smoke.exe(无相机) -> SDK initialized -> SearchCameras found 0 -> SDK destroyed,退出码0
VzNL 运行时 DLL 由 POST_BUILD 自动拷入输出目录(VzKernel/VzLog/VzNLDetect/VzNLGraphics 等)

Limits / Deferred:

  • Mark3DCalibration 尚未切换到本模块(其内部副本仍在用),两份代码暂时并存; 切换迁移放到 MatchVerify 交付后单独做,避免影响其在途 WIP。
  • 无远程仓库,待用户提供 Gitee/内网 git 地址后推送。
  • SearchCameras/Connect/采集链路未连真机验证(S2 实机联调覆盖)。