Kimi的能力也很可以,
就这个使用场景和解决方法,
感觉可以拿公司内部做ppt了。
背景:
机械臂前往托盘夹取物体的过程,会存在碰撞,
所以同事,新增了一个安全区域的识别,
原理是录制x y的最大最小值,对抓取位置进行判断。
诱因:
昨天下午配置后,进行测试,总感觉不对劲,
判断是他没考虑托盘和机械臂之间的坐标问题。
导致我理解的范围和实际识别范围存在差距,具体效果可以参考图1,我理解录制的是正方形,实际是对新到机械臂判断是一个斜的正方形,
于是花了一晚上,就有这个工具。
思路:
先验证转换是否正确,误差是否可用,
验证能否提供ini文件,
能否图形化显示,
能否显示效果进行检验,
结果是否可逆。
结果:
首先可以通过拖拉拽设置安全区域,
生成对应的ini配置文件。
其次可以预览ini配置文件,
查看识别区域的示例。
过程:
# 坐标系旋转导致的安全区错位问题与算法迭代记录
## 问题根因
托盘坐标系 (l, w) 与机械臂坐标系 (x, y) 之间存在旋转(约 45°)。同事直接在 xy 中录制 x_min/x_max/y_min/y_max
作为安全区,这实际上是一个轴对齐包围盒(AABB)。由于旋转,这个 AABB 在托盘上的真实投影是一个倾斜的平行四边形,
四个角会多出或缺失一块区域,导致:
• 安全区边界外扩,把危险区域误判为安全;
• 或边界内缩,把正常抓取点误判为碰撞。
## 算法迭代过程
为生成不越界且覆盖完整的 INI 配置(仅支持 AABB 格式),经历了以下迭代:
阶段 1:外接 AABB 直接将倾斜四边形的 min/max(x) 和 min/max(y) 作为 [RANGE] 输出。
• 问题:四角越界,AABB 明显大于真实安全区。
阶段 2:最大内接 AABB 在倾斜四边形内部寻找面积最大的轴对齐矩形。
• 问题:覆盖率过低,中间出现大量未覆盖空白,机械臂会误拦截正常点。
阶段 3:均匀网格 + 内接 AABB 将安全区切成 8×8 网格,每个小格子取内接 AABB,再合并相邻矩形。
• 问题:块数过多(128 块),INI 冗长,视觉混乱,且小块之间存在缝隙。
阶段 4:四叉树保守栅格化 + 合并(最终版)
• 从 fragment 的外接矩形开始递归四分;
• 仅当一个 AABB 的四个角全部落在精确边界内部时才保留;
• 递归深度限制为 4,最后合并相邻矩形。
• 结果:块数约 20–40,不越界,覆盖紧凑。