机器人不再靠模型做决定:代码自己量状态,42项双臂任务成功率70.24%
核心概要
机器人策略不再把模型留在控制回路里。此前视觉-语言-动作模型把状态隐式压进权重,智能体框架把记忆放进模型上下文,动作如何得出无法完全查看。这里把机器人和环境状态写成代码变量,由代码从相机图像和本体感觉中测量并据此决定每一步,同一段程序跑遍一个任务的所有回合,在RoboDojo的42项双臂任务上成功率达到70.24%,比榜单最好方法高38.9个百分点。
深度剖析
机器人执行时不再需要模型参与决策,策略完全由代码承担。代码变量保存机器人和环境状态,代码逻辑从这些变量算出每个动作,程序在运行时冻结。 此前视觉-语言-动作模型把状态和推理隐式压进权重,智能体框架把任务记忆放进模型上下文,两者在每次决策时仍要调用模型,同一记忆在不同调用下可能给出不同动作。 在RoboDojo的42项双臂任务上,这套代码策略成功率为70.24%,比榜单当前最好方法31.38%高38.9个百分点,也高于最强的世界动作模型29.64%和最强的视觉-语言-动作模型27.96%。
状态由代码自己测量,而不是交给外部感知模型或模拟器真值。相机参数、机器人网格和物体尺寸作为常量写进代码,每帧把机器人网格投影进图像并遮掉,与桌面颜色不同的连通区域成为物体候选,再用已知三维形状在候选附近搜索位置和偏航角,取重叠最大的拟合。 此前的代码策略要么让模型在每回合在线写新代码,要么从分割模型或模拟器真值取状态,这些感知模型是黑箱,其不确定性不受代码控制。 测量结果以物体类别、位置、偏航角、尺寸和置信度存入回合级状态,被机械臂遮挡的物体保留上一次测量位姿;同一程序在测量状态上成功63%,在真值状态上成功83%,每修好一处测量就缩小这段差距。
代码库按层组织,新任务复用、继承或扩展已有模块,而不是重写。任务程序只写子目标顺序和任务特有判断,抓取、搬运、放置等操作层和感知、运动层由所有任务共享。 视觉-语言-动作模型遇到新任务需要新示范和重新训练,智能体框架的记忆按任务单独积累,能跨任务带走的很少。 新任务运行的代码中83%来自共享库;在库冻结时还没有程序的四个任务上,代码策略在15小时内平均成功率达到47%,而最强的视觉-语言-动作模型在这些任务上训练示范后只有4.7%。
启示与展望
目前所有结果都在仿真中取得,感知依赖RoboDojo公开的相机参数、机器人网格和物体尺寸,这些量在真机上需要重新测量,抓取宽度和搬运速度等接触参数也要重新调。代码策略面向需要跨回合稳定执行同一任务的场景,开发在验证布局上进行,从未在测试布局上开发。原文把这条路线定位为对代码策略上限的探索,并指出它可作为视觉-语言-动作模型和智能体框架的数据引擎。
原文把代码策略的上限归于状态表示和代码逻辑:感知与接触错误占失败的62%,逻辑不完整与代码设计不佳占37%。泛化能力是主要弱点,因为仍需要少量任务特有逻辑;在随机化布局上成功率为54.1%,标准布局为77.3%。离线开发需要时间,每个新任务都有开发成本。作者把随机化布局上的下降部分归因于程序只在验证布局上开发,并指出代码本身不依赖场景。
