联调 / 06建议耗时 按关卡实施,时间依实测
G5|真正接入 GPT / Codex:感知—规划—执行—复核
目标
让 GPT 从一句中文指令生成受限的笔画 JSON,通过本地审核才发送到机械臂;画完后相机采集证据,反馈是否需要下一次改画。本章软件接口是设计合同,机器人适配层尚未实测实现。
准备
- G0 计划校验器和 JSON 样例;G3 能安全点动;G4 已验证纸面坐标、笔尖接触、离纸路线。
- 任意能生成 JSON 的多模态/文本模型;Codex 用于编写、审查 Python 适配器。模型密钥放本地环境变量,不写入仓库。
- OpenCV 相机与固定照明;异常拍照不应启动额外电机动作。
操作
- 在本机运行离线校验器,拿到固定的 80×80mm 归一化笔画。这是第一版确定性的黄金输入:
python3 source-data/robot-lab-draw-tree/plan_validator.py --plan source-data/robot-lab-draw-tree/demo_plan.json --svg /tmp/robot-lab/tree.svg
- 给 GPT 的系统任务只允许输出
robot-lab.stroke-plan.v1JSON:包含schema、canvas、strokes;每条 stroke 有id和按顺序排列的归一化二维点。不能输出 Python、shell、伺服角度、URL 或任意工具名。 - 将模型输出送入
plan_validator.py进行严格字段校验、坐标范围、笔画数量/长度限制。失败就停止并要求重生成,绝不跳过校验。当前校验器只验证笔画数据结构和二维几何约束,不是机械臂运动安全证明。 - 单独构建受审核的本地适配器(Codex 开发、人工审查):经过已标定纸面映射、逆运动学、关节/速度/加速度限位、碰撞和起终点检查后,先生成不接硬件的路线报告。通过后在 G4 范围内离纸干跑。
- 手动确认开始画图:本地执行器调用 LeRobot 官方 robot API;每条 stroke 在接触前先抬笔,遇到断线、坐标漂移、通信超时、拒绝确认、外部断电都中止,禁止无限次自动重试。
- 相机拍前/后两张图。V1 先用固定纸区裁剪 + 简单像素差/线段连通性规则检查“是否有树干和树冠”,并保存原图供人工复核。模型视觉评价只作为辅助判断,不得作为安全解锁凭证。
- 若画坏了,只在人工确认后重标定/重规划新的一张纸;不能假设继续在旧画上补笔一定安全或正确。
提供给 Codex 的任务合同
实现 robot_lab.draw_tree 的安全适配层。
输入:通过 plan_validator 验证的 80×80mm 归一化笔画 JSON。
输出:dry_run_report.json、approved_plan.json、before.jpg、after.jpg、
run_log.json、result.json。
默认 dry-run,不连接硬件;硬件模式需要显式 --enable-hardware + 人工确认。
不接受 GPT 直接生成脚本或舵机原始命令。
先实现工作区/IK/速度限制/碰撞检查与单条笔画中断;再补接相机和模型。
所有版本和假设明确列出;无法验证时拒绝执行。
每个硬件动作至少需要:preconditions(电源/校准/臂状态/工作区)→ plan(确定轨迹)→ approve(人工)→ execute(受限)→ verify(图像/日志)。切勿用“模型觉得安全”替代安全层。
验收
- 畸形/越界/多余字段笔画被代码拒绝,且验证工具本身从不控制电机。
- 干跑报告包含每段空间范围、关节/速度/碰撞检查和停机条件。
- 人工看护下 GPT 计划能够引发一张真实树图;保存前后照片、计划 JSON 和执行日志。
出问题怎么办
- GPT 输出代码/非 JSON:拒绝并按 schema 重生成,不尝试
eval/ shell。 - 计划合法但机械臂不可达:提示“运动学失败”,调整 ROI 或重新规划,不绕开限位。
- 相机看不清笔迹:改善照明、调整曝光和纸张固定,不因此允许盲画。
- API 发生漂移:记录已安装 LeRobot 版本,按对应官方 API 修适配器,不盲改发送角度的代码。
下一关:G6 真实验收和视频。