graph TB subgraph "真实算法检测流程" Start[开始检测任务] --> GetCache[获取缓存的点云数据
m_detectionDataCache] GetCache --> CheckEmpty{是否有缓存数据?} CheckEmpty -->|否| ReturnError[返回错误:
无缓存的检测数据] CheckEmpty -->|是| Convert[数据格式转换
SVzLaserLineData → SVzNL3DLaserLine] Convert --> SetParam[设置算法参数
SG_bagPositionParam] SetParam --> SetBagParam[编织袋参数
L=650, W=450, H=160] SetBagParam --> SetFilterParam[滤波参数
continuityTh=20.0, outlierTh=5] SetFilterParam --> SetFeatureParam[特征参数
角点/斜率参数] SetFeatureParam --> SetGrowParam[增长参数
maxLineSkipNum=5等] SetGrowParam --> SetCalibParam[设置校准参数
SSG_planeCalibPara] SetCalibParam --> PreProcess[数据预处理
sg_lineDataR调平和去地面] PreProcess --> CallAlgo[调用算法检测
sg_getBagPosition] CallAlgo --> ConvertResult[转换检测结果
SSG_peakRgnInfo → DetectionResult] ConvertResult --> FreeMemory[释放内存
laser3DPoints] FreeMemory --> CheckResult{检测到目标?} CheckResult -->|是| UpdateUI[更新UI显示结果
OnDetectionResult] CheckResult -->|否| NoTarget[显示未发现目标] UpdateUI --> UpdateRobot[更新机械臂坐标
第一个目标位置] NoTarget --> Complete[完成检测任务] UpdateRobot --> Complete Complete --> Ready[恢复就绪状态] end subgraph "数据转换详情" SourceData[SVzLaserLineData
相机回调数据] --> TargetData[SVzNL3DLaserLine
算法输入格式] SourceData --> CopyTime[复制时间戳
nTimeStamp] SourceData --> CopyCount[复制点数
nPointCount] SourceData --> CopyPoints[复制3D点坐标
x, y, z] end subgraph "算法参数配置" BagSize[袋子尺寸
650×450×160mm] FilterParams[滤波参数
噪声阈值] FeatureParams[特征参数
角点/斜率检测] GrowParams[增长参数
连接阈值] end classDef processClass fill:#e3f2fd,stroke:#1976d2,stroke-width:2px classDef dataClass fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px classDef algoClass fill:#e8f5e8,stroke:#388e3c,stroke-width:2px classDef resultClass fill:#fff3e0,stroke:#f57c00,stroke-width:2px class Start,GetCache,Convert,SetParam,PreProcess,CallAlgo,ConvertResult,FreeMemory,Complete,Ready processClass class SourceData,TargetData,CopyTime,CopyCount,CopyPoints dataClass class BagSize,FilterParams,FeatureParams,GrowParams algoClass class UpdateUI,UpdateRobot,NoTarget resultClass