#AEAI06011. 事件驱动的抓取失败恢复

事件驱动的抓取失败恢复

题目描述

抓取执行中可能突然丢失目标、打滑、感知不匹配、路径被挡、置信度下降或风险上升。具身智能部为这些事件写了一棵恢复规则树:每来一个事件,就更新状态、选择一个恢复动作,或进入安全停止。

状态字段依次为阶段 stage、目标可见 visible、是否持有 held、夹爪是否空闲 gripper、路径是否可通行 path_ok、剩余能量 energy、风险 risk、安全标记 safe、单类事件最大重试次数 max_retry、风险上限 risk_limit

每种事件单独计数;某事件出现次数超过 max_retry 时,输出 TASK_FAILED event 并终止。否则按下列规则处理:

  • LOST:目标变为不可见。若有能量且风险不超过上限,执行动作 1 重新观察,能量减 1,阶段设为 1;否则若有能量,执行动作 5 安全回退,风险减 2 但不低于 0,能量减 1,阶段设为 1
  • SLIP:失去持有,夹爪空闲,执行动作 3,阶段设为 2
  • MISMATCH:若夹爪空闲且有能量,执行动作 2,能量减 1,阶段设为 2
  • BLOCKED:路径变为不可通行。若能量大于 1 且风险不超过上限,执行动作 4 清障,路径恢复,能量减 2;否则若有能量,执行动作 5 安全回退。
  • DRIFTCONF_DOWNTIMEOUT:若有能量,执行动作 1 重新观察,能量减 1,阶段变为 max(1, stage-1)
  • RISK_UP:先令风险增加输入给定的 delta;若超过风险上限且有能量,执行动作 5 安全回退。

若无法选出动作,或处理后 risk > risk_limit + 3,或能量为负,则输出 SAFE_STOP event 并终止;终止后的事件不再输出。

输入格式

第一行输入 10 个整数:

stage visible held gripper path_ok energy risk safe max_retry risk_limit

第二行输入事件数 k。接下来 k 行,每行输入:

event delta

RISK_UP 外,delta 仍会被读取但不参与对应规则。

输出格式

每处理一个未被终止状态忽略的事件,输出一行。若恢复成功,输出:

action stage visible held gripper path_ok energy risk safe

若超过重试次数,输出:

TASK_FAILED event

若必须安全停止,输出:

SAFE_STOP event

数据范围与测试提示

  • 正式测试会覆盖样例没有出现的边界输入,请不要依赖样例规模或样例顺序写特判。
  • 输出只包含题目要求的字段,不要输出调试信息;浮点结果按题面要求保留 6 位小数。
  • 失败恢复事件可能连续出现,恢复资源耗尽或达到最大尝试次数时要立即停止。
  • 成功、失败、等待和恢复事件的先后会改变最终状态,隐藏数据会检查终止后的多余事件。
  • 重试次数按事件名分别计数,超过 max_retryTASK_FAILED;进入终止态后忽略后续事件。

样例

输入样例 1

2 1 0 1 1 5 1 0 2 5
2
LOST 0
DRIFT 0

输出样例 1

1 1 1 0 1 1 4 1 0
1 1 1 0 1 1 3 1 0

输入样例 2

3 1 1 0 1 4 4 0 2 5
1
RISK_UP 3

输出样例 2

5 1 1 1 0 1 3 5 1