PCL 生产落地案例
五、生产落地案例
案例一:料箱内散堆工件的识别与位姿估计
背景:机械臂要从料箱里抓取散堆的金属工件,需要输出每个工件的类别与位姿。相机是固定的结构光三维相机。
怎么做:先用直通滤波裁掉料箱外的背景,再用体素降采样把点数压下来;用 RANSAC 拟合箱底平面并剔除;对剩余点做欧式聚类得到每个工件;对每个簇做位姿估计,用模板点云与目标点云做配准,先粗后精,最后把结果转换到机器人基座坐标系发给规划模块。
关键配置:体素边长与相机分辨率匹配;聚类容差必须大于相邻点的间距(降采样后的间距),否则一个工件会被拆成好几块;ICP 的最大对应点距离先用较大值抓大范围,稳定后再收紧。
效果:散堆抓取成功率满足节拍要求,且对工件摆放姿态的波动有一定容忍度。
坑与解决:一是聚类容差照搬了别人的参数,结果每个工件都被切碎,按实际降采样后的点间距重新计算后就正常了。二是每帧都重建 KD 树,处理耗时居高不下,把建树移到降采样之后、并且只对感兴趣区域建树,耗时明显下降。三是金属表面反光导致部分区域点云缺失,配准失败率高,加了多帧累积和失败重试之后才稳。四是输出点云的坐标系没转换,抓取位置整体偏了一个固定方向——这类错误从数据上完全看不出来,只能靠试抓验证。
案例二:激光 SLAM 前端的点云预处理
背景:一台巡检机器人用三维激光雷达做定位建图,原始点云太密导致里程计跟不上实时性。
怎么做:在里程计之前加一级预处理节点:降采样、剔除过近与过远的点、剔除机器人自身结构造成的遮挡点;把处理后的点云同时送给里程计与建图模块,并保证时间戳与坐标系一致。
关键配置:预处理节点输出的点云必须沿用原始时间戳;降采样参数在标定阶段确定后固定,避免运行期变化导致里程计尺度漂移;近距离剔除半径要大于机器人自身尺寸。
效果:里程计的处理耗时下降到可实时运行的水平,建图精度没有明显损失。
坑与解决:预处理时随手把时间戳改成了处理时刻,导致运动补偿用错时间,高速转弯时地图出现明显扭曲;改回沿用原始时间戳后消失。另外曾经把点云降采样做得太狠,导致远处的墙体点太少,回环检测匹配不上,最后按距离做了分段降采样(近处保留密度、远处更狠)来平衡。

