4.3 真实棋盘感知与纠错闭环
失败检测(一等公民 · 重点)
🚨 失败检测是整个项目的一等公民:落子是否到位、是否抓空、是否碰倒邻子。它的漏检率是整步可靠性的隐藏天花板(漏检 = 该重试却没重试)。从本节起就把它当独立模块迭代,并单独量化准确率。
本节目标
让 Anima看到真实棋盘并识别其状态(→FEN);能看到人走的子,也能给出自己该走哪一步的指令。此阶段自己走子需要人帮忙,但 Anima 能判断帮忙走子是否成功;若走错,能给人一个正确的指示(纠错闭环)。
产出物
- 真棋盘 → FEN 识别。
- 对手走子检测。
- 己方走子指令输出。
- 失败检测 + 纠错:走错 → 给出正确指示。
run_pick_place()实现 = 「打印指令给人 + 等人完成 + 验证」(接口签名与 4.4/4.5/4.7 一致)。
用到的技术栈与学习算法
框架定位(承 4.1):理解棋盘是「脑」Anima 的活;下面这些 CV / VLM 不是独立的「眼」,而是脑直接看不懂时调用的检测 tools。相机只是采集像素的眼。
- 眼 = 全局相机(RGB):只采像素,喂给脑。
- 脑理解棋盘 → FEN:优先由 Anima(可含 VLM 能力)直接读图给出局面;把不住的细节再调 tool(CV 格子检测 + 棋子分类,或专用 VLM 出 FEN)补足。
- 失败检测器(tool · 一等公民):学习式分类器 / VLM 判定,由脑调用来判断「到位 / 抓空 / 碰倒」。
- python-chess(tool):持有棋局真值,比对合法走法集认出对手着法。
- 编排状态机:纯 Python,无 ROS——即脑「思考 → 调工具 → 指挥手」的循环载体。
验收标准
- 真棋盘 FEN 识别稳定。
- 能正确检测对手走子。
- 失败检测能判对/错并给出纠正指示。
- 闭环用“人当手”跑通整局。
⚠️ 真机与安全
仍不涉及机械臂;相机为外设。
知识点(开发中记录)
📝 开发时在此记录本节涉及的原理、算法、概念。
操作过程(开发中记录)
🛠️ 开发时在此记录命令、步骤、配置与复现流程。
难点与坑(开发中记录)
⚠️ 开发时在此记录踩坑、失败现象、调参与解决方案。