3. 实现路线与阶段状态机
3.1 推荐路线
阶段 0:环境和接口审计
先不训练。确认官方环境可以启动,打印 observation 的键、类型、形状和 action space,记录机器人平台、相机名称、深度单位、控制频率和动作缩放。
阶段 1:只做合法观测的搜索
让机器人固定在安全姿态,使用头部 RGB-D 和 LiDAR 完成全场扫描。目标是回答“能否从传感器发现目标”,而不是立刻抓取。
阶段 2:目标定位和基座接近
将图像检测结果转为相机坐标,再通过已校准外参转为基座坐标。只让基座接近,保持机械臂收纳。用末端前方的安全距离作为接管条件。
阶段 3:末端相机锁定
切换到末端 RGB-D,使用视觉伺服修正左右偏差、距离和高度。头部相机负责“找到”,末端相机负责“够到”。这正是公开 SLAM 方案中最值得迁移的接口分工。
阶段 4:抓取和提起验证
机械臂伸出、夹爪闭合、等待稳定,然后小幅提起。提起阶段必须检查物体是否跟随,失败后回退到搜索,不直接进入垃圾桶路线。
阶段 5:搬运和放置
携带物体导航到垃圾桶,保持低速和稳定姿态;到达后打开夹爪,观察物体是否进入垃圾桶区域,并完成放置确认。
3.2 状态机
textSEARCH
-> LOCALIZE
-> APPROACH
-> EE_LOCK
-> REACH
-> CLOSE
-> LIFT_VERIFY
fail -> OPEN_RESET -> SEARCH
-> CARRY
-> BIN_ALIGN
-> RELEASE
-> PLACE_VERIFY
fail -> RECOVER or SEARCH
-> NEXT_TARGET / FINISH
每个状态至少输出:episode_id、step、target_class、phase、observation_source、action_norm、distance_estimate、contact_state、grasp_state、placement_state 和 failure_code。
3.3 关键门槛
| 门槛 | 通过标准 | 不通过时不要做什么 |
|---|---|---|
| 观测 | 官方 runner 可稳定读到合法键和形状 | 不要先调抓取策略 |
| 导航 | 多个目标和多个 seed 都能到达接管区域 | 不要把固定坐标写成通用方案 |
| 末端对准 | 视觉误差稳定下降且无持续抖动 | 不要直接加大动作幅度 |
| 抓取 | 提起后物体随夹爪运动 | 不要用碰撞分数替代抓取确认 |
| 放置 | 释放后物体进入垃圾桶判定区域 | 不要只凭视频中“看起来放下了” |
| 评测 | 使用官方评测器并保留原始日志 | 不要只报告自定义指标 |
3.4 任务 B 的工程取舍
比赛时间有限时,应先建立一个可解释的分层基线:规则搜索加视觉伺服,再替换单个模块。一次同时替换检测器、导航器、全身控制和夹爪策略,会让失败无法定位,也难以把经验公开成教程。