论文导读
首尔大学、卡内基梅隆大学、马里兰大学等机构提出Fly-by-Code,让飞行机械臂在仿真里先执行任务,再专门收集查错证据。六项任务的60次试验中,最终成功率从31.7%提升到75%,误报完成从25次降到5次。经仿真修改的任务程序还通过共享接口在实机上完成了开柜门、搬运工具等多步操作。
夹爪空了,不代表瓶子放对了
飞行机械臂把瓶子放向篮子后,夹爪里已经没有东西。只看这个瞬间,程序可能判断搬运完成;但瓶子也可能落在篮外,或者停在相机看不到的位置。继续翻看原有日志,无法补回没有拍到的结果。
图:蓝色路线与编号串起开柜门、抓取瓶子和送入吊篮,局部窗口展示相应实机步骤。
Fly-by-Code在执行和判断之间增加了一段独立诊断程序。任务程序负责开门、抓取、搬运,诊断程序负责弄清楚刚才发生了什么。它可以移动到新的视角观察,也可以在仿真里做一次有针对性的物理试探,再把证据交回负责改代码的模型。
换个角度看,再试一下原因
第一类动作叫View:飞到更有信息的观察位置,检查柜门有没有完全打开、物品有没有进入篮子。第二类动作叫Probe:当相同表面现象有多个解释时,在仿真里做一个小测试,把原因区分开。
例如,开柜门失败可能是没夹牢,也可能是拉动方向不适合铰链。诊断程序可以测试另一种拉动路径。搬不动装满物品的篮子,也可能与飞行平台的载重限制有关;试探不同负载,可以让下一版任务程序调整搬运安排。
诊断动作不会被算作完成任务的奖励。论文先评估任务程序的结果,再诊断,下一次尝试重置环境后重新运行任务。这种分开处理,使模型能为获得证据选动作,而不是为了让当前试验看起来多做一步。
图:三组画面分别展示换视角观察、推箱试探和负载测试,标注对应反馈与下一版任务安排。
60次仿真,成功45次
主实验包括两个仿真环境中的六项空中操作任务,每项任务每种设置测试10次。比较方法使用同样的代码智能体配置和执行限制,每次最多进行初次执行加10次程序修改。只用最终反馈的方案成功19次,加入执行过程记录后成功29次,加入主动诊断后成功45次,对应31.7%、48.3%和75.0%。
另一组统计检查模型是否准确判断完成。只用最终反馈时,60次试验中有25次错误地宣告完成;主动诊断后降到5次。75%和误报次数说的是这套仿真协议,不是实机在任意房间里的成功率。
实验还比较了不同模型和程序接口。在两项任务、五种模型组合形成的十个条件中,主动诊断相对基础方案八项改善、两项持平。模型能够获得哪些观察,以及如何调用机器人的接口,都是结果的重要组成部分。
程序不改源码,也能上实机
团队使用一台定制飞行平台,配有四自由度机械臂、夹爪和腕部深度相机。仿真与实机共享任务级接口,因此,在仿真里改好的程序可以保持任务源码不变,换成真实的感知和控制实现来执行。这里复用的是调用接口的程序,不是把仿真轨迹原样播放。
图:左侧标出飞行平台、机械臂、夹爪和腕部相机,右侧并列仿真实验室与实体实验室。
实机分别测试了双物体搬运和柜子任务,各5次。搬运任务完整成功4次,柜子任务完整成功3次;柜子任务包含打开两扇门、抓到瓶子并把它放入篮子。成功视频展示了一连串操作,表格则把未成功的尝试也计入分母。
项目页把换视角和物理试探拆成独立案例,能看到原有证据缺少什么、诊断如何补足,以及程序怎样据此修改。对飞行机械臂而言,下一次动作之前先获得一条新证据,已经能明显改变任务完成判断。