#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安全回退。DRIFT、CONF_DOWN、TIMEOUT:若有能量,执行动作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_retry才TASK_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