RobotFlow Task Zoo
本文主要收集主流实验中的manipulation task,并在最后试图让这些task从概念层面总结一下(某种意义上也是meta learning),由此分析出当前task定义的范围和下一步可能的发展。
眼下的manipulation related benchmark tasks总结
主要参考的文章有meta-world, RLBench, surreal
各任务具体的任务描述见文末。
首先,我们先把各benchmark里的task统一地总结起来。
关于各primitive
primitive分两种,接触型primitve和运动型primitve。这里假定完成接触型primitive后手指和物体在一定程度上可以认为是相对静止的。
- grasp:接触型,单指“夹”这个动作,grasp有三个参数,一个是approach pose,一个是物体上的抓点,一个是施加的力。仿真问题一般不考虑力,但为了描述完整还是放这儿。决定这三个参数的叫grasp planner。
- push:接触型,有三个参数,一个是approach pose,一个是push type(有用指侧推,有用指尖推,也有两指并拢推),一个是力。决定这三个参数的叫push planner。
- move:运动型,是指手臂上的运动,无论是带物体还是不带物体。move的轨迹主要来自plan,约束是planner综合当前的可运动空间(避障)和物体的knowledge,以及对task的理解(物体和物体之间的关系对task的作用)考虑的,随着任务越多需要考虑的越复杂,不过这个是planner的问题,对于move来说它只用接受关于trajectory的指令。
- reach是所有任务第一步都要做的,所以在动作序列里,除了只做reach操作以外的,都去掉了reach
- 常见的特殊move轨迹有:
- rotate
- slide
- hit
- pour
- 铲
- insert:运动型,这个动作包含peg in hole和hole out peg。理论上如果一切都很准,那么直接move就完事了,但之所以把insert拧出来,是因为解决距离洞口的误差是这个primitive的精髓所在,有点后处理的意思。
单纯任务
动作序列 | 任务名称 | 考虑物-物/环境关系 |
---|---|---|
move | reach; reach with wall | |
grasp -> move | turn on faucet; turn off faucet; turn dial; pull handle;turn on faucet; turn off faucet; turn dial; pull handle;get coffee; pull handle side; basketball; pull with stick; disassemble nut; hammer; slide plate side; retrieve plate side; pull mug; unplug peg; close window; open window; open door; open drawer;beat the buzz; change clock;hockey; open fridge;open microwave; open oven;open wine bottle; pick and lift;pick up cup; play jenga;pour from cup to cup; scoop with spatula;straghten rope; sweep to dustpan;take umbrella out of umbrella stand; take usb out of computer;turn oven on; turn tap; unplug charger;water plants; wipe desk | √ |
grasp -> move -> release | stack; unstack; place onto shelf;pick & place; open box; close box; pick bin; get ice from fridge; meat off grill; meat on grill;move hanger; phone on base;place hanger on rack; put books on bookshelf;put bottle in fridge; put groceries in cupboard;put item in drawer; put knife on chopping board;put money in safe; put plate in colored dish rack;put rubbish in bin; put umbrella in umbrella stand; remove cups; setup checkers;set the table; stack cups; stack wine; take frame off hanger;take lid off saucepan; take item out of drawer;take money out safe; take off weighing scales;take plate off colored dish rack; take toilet roll off stand; weighing scales | √ |
grasp -> move -> insert | insert peg side; hang frame on hanger;hannoi square; insert usb in computer;place cups; place shape in shape sorter;plug charger in power supply; put knife in knife block;put toilet roll on stand; | √ |
push -> move | sweep; push; push back; press handle side; press handle; press button top; press button; lock door; unlock door; press switch | |
push -> move | push with stick; sweep into hole; push mug; slide plate; soccer; retrieve plate; close drawer; close door; close/open box2;close fridge; close/open grill;close laptop lid; close microwave; lamp off; lamp on;toilet seat down; toilet seat up | √ |
复合任务
任务名称 | 组合 |
---|---|
press button wall | reach with wall + press botton |
press button top w/ wall | reach with wall + press botton top |
push with wall | push + reach with wall |
pick & place w/ wall | pick & place + reach with wall |
block pyramid | stack * N |
change channel | pick & place + press botton |
TV off | pick & place + press botton |
TV on | pick & place + press botton |
close door2 | close door + press handle side |
close jar | pick & place + change clock |
empty container | pick & place * N |
empty dishwasher | open door + press handle + push back + pick & place |
hit ball with queue | pull handle + reach |
light bulb in | pick & place + change clock |
light buib out | change clock + pick & place |
open door2 | press handle + open door |
open jar | change clock + pick & place |
open window2 | change clock + push |
put shoes in box | open box2 + pick & place |
put tray in oven | open oven + pick & place |
screw nail | insert peg side + change clock |
slide cabinet open and place cups | open window + pick & place |
solve puzzle | pick & place * N |
take cup out from cabinet | open window + pick & place |
take shoes out of box | open box2 + pick & place |
take tray out of oven | open oven + pick & place |
双手任务
任务名称 | 左手 | 右手 |
---|---|---|
bimanual lifting | lift | lift |
bimanual peg-in-hole | insert peg side | grasp |
简评当前设计的benchmark task
如上所述,我把目前的152种benchmark task根据primitive的序列分成6大类,涉及到的primitive只有4种。我们可以从中得到几点启示:
- 基于两爪的gripper能涉及到的primitive就这么些了,如果要想扩展primitive,只能往dexterous hand/manipulation演进。把一些更复杂的primitive囊括进来。如果不走dexterous hand的路线,那primitive就结束了。
- primitive中,move非常特殊,因为它根据运动的pattern也能总结出一些特化的pattern,从而在使用中也可以认为是primitive
- 在primitive有限的情况下任务的复杂性源于物体的形状多样性,材质的多样性,plan的复杂性
- data-driven的方法是希望用数据来爆掉这些个复杂性,学出common structure
- 如果我们不走这条路(因为做不过别人),那么就还是要往物体的建模,知识,plan上面去靠。
- 具体的说,现在的benchmark
- 重复性设计较多,有一些task名字不一样,但任务空间相似(当然,这个从服务meta-learning的角度不算坏事)
- 受限于仿真环境中,对物体,对contact动力学的建模精度,task的复杂程度比较受限。任务的复杂性体现在,物体数量,物体position等。
- 双手task关注较少
- 关于叠衣服这种柔性物体为对象的task一般都是单独作为topic讨论的。
我们的task zoo
TODO
Task list详细清单
单手任务1-50来自meta-world,51-150来自RLBench,双手任务来自surreal。前50和后100个中有部分任务是重合的。
根据后100个任务的定义,我推理出一个task定义的方式,就是大规模让人记录自己一天的生活,然后从中总结出理想中可以被机器人代替的,再看哪些容易被仿真,过滤掉一部分。流水账式日记是一个路子。
单手:
- turn on faucet
- 任务描述:打开水龙头(旋转式)
- 期望动作:
- 夹住faucet,完成faucet的旋转:grasp -> move(Constraint$_{traj}$)
- 从faucet的一侧,推的过程中完成旋转: push -> move(Constraint$_{traj}$)
- sweep:物体在桌面上,沿着桌面推动
- stack:把一个物体(小块)叠放到另一个小块上
- unstack:从一个物体上,把目标物体移动到目标位置
- turn off faucet:关上水龙头(旋转式)
- 期望动作:
- 反方向转回来
- push back:把一个物体往回推到指定位置
- pull lever:推杆,把杆拉起
- 期望动作:从演示gif里看不出来这个task在干什么(也可以看出仿真有多不准了)
- turn dial:旋钮
- 期望动作:夹住旋钮,旋转
- push with stick:通过推棍子,把物体间接地推到指定位置
- get coffee:把咖啡机下的杯子拿起来
- pull handle side:夹住handle,拉
- basketball:夹起一个小球,放入篮筐里(不是投球)
- pull with stick:通过拉棍子,把物体间接地拉到指定位置
- sweep into hole:sweep但物体要进洞,洞口会遇到insert类似的问题
- disassemble nut:把一个套圈从被套物边取出来。(解套)
- place onto shelf:把物体拿起,放架子上
- push mug:把杯子推到咖啡机下面(能接水的位置)
- press handle side:从handle的一侧,往下按
- hammer:抓起锤子锤钉子
- 仿真里的设定是钉子一推就进去
- slide plate:从盘子一侧,推进目标区域
- slide plate side:夹着盘子两侧,推进目标区域
- press button wall:绕过墙,按墙后面的按钮
- press handle:从handle得一侧,往下按。这个动作和press handle side的区别是,side这个是两爪并拢,这个是单指下按。
- pull handle:把handle拉起来
- soccer:把一个球推进目标区域
- retrieve plate side:用两边夹的方式,把盘子从放盘区域取出来
- retrieve plate:用按着拉的方式,把盘子从放盘区域拉出来
- close drawer:通过handle把抽屉推进去
- press button top:从上往下按按钮
- reach:爪子没有东西,移动到指定位置
- press button top w/ wall:绕过墙,从上往下按按钮
- reach with wall:绕过墙到达指定位置
- insert peg side:用两端夹住棒子,插入洞中
- push:夹住推
- push with wall:夹住,绕墙推
- pick & place w/ wall:抓起物体,过墙,放下
- press button:向前推button,和前面向下推button有区别
- pick & place:抓起物体,到指定位置放下
- pull mug:把杯子从咖啡机下面拉出来
- unplug peg:把peg从孔位抽出
- close window:window上有handle,本质上还是抓着handle移动
- open window:window上有handle,本质上还是抓着handle移动
- open door:handle是hinge的,抓住拉开门
- close door:抓住门把手推
- open drawer:抓住handle,拉开抽屉
- open box:盒子的盖子上有一个handle,提起来就可打开盒子
- close box:把盖子放上box
- lock door:按一下门栓
- unlock door:把门栓抬起来
- pick bin:从一个bin里抓起物体,放到另一个bin里
- beat the buzz:一个带电的架子,举着一个带handle的环,从架子的一头到另一头,环不能碰到架子,否则就buzz
- block pyramid:stack的进阶版,涉及多个物体,叠多层
- change channel:把遥控器抓起来,调整到合适的方向(对准电视机),放下,按下换台按钮
- change clock:拧机械钟背后的发条
- close box2:这是一个掀盖的盒子,所以关上盒子就是把盖子翻转
- close door2:这个门是旋把式的门,抓起门把,关上
- close drawer,同28
- close fridge:推冰箱门,直到关上
- close grill:把烤箱盖子关上,动作上和55一样
- close jar:把盖子从旁边抓起来,放到jar上,旋转拧上
- close laptop lid:合上笔记本电脑的盖子
- close microwave:关上微波炉的门
- empty container:挨个把container/bin中的物体抓出来
- empty dishwasher:把洗碗机的门拉开,按倒合适的位置,把放碗碟的架子拉出来,把碗碟夹走
- get ice from fridge:把准备装冰的杯子放到冰箱门上的对应位置(可能这个冰箱能放冰?)
- hang frame on hanger:把相框挂在墙上的支出来的棍子/钉子上
- hannoi square:方形的套,套进柱子里
- hit ball with queue:用球杆打球,打进指定区域(台球)
- hockey:用hockey球杆把球推进指定区域
- insert usb in computer:抓起usb,插入台式机箱
- lamp off:按按钮
- lamp on:按按钮
- light bulb in:拿起灯泡,插入合适的位置,旋转
- light buib out:卸灯泡,73的反过程
- meat off grill:从烤肉架上把肉取出来,放旁边盘子里
- meat on grill:把肉放到烤架上
- move hanger:把挂着的衣架,从一个地方,移到另一个地方挂着
- open box2:55的反动作,把盖子掀开
- open door2:56的反动作,先按一下,再拉开门
- open drawer:同45
- open fridge:58的反动作
- open grill:59的反动作
- open jar:60的反动作
- open microwave:62的反动作
- open oven:抓住oven门上的handle,拉下来
- open window2:window上有个旋把,转一下推开
- open wine bottle:开瓶盖(讲道理这是一个双手任务,不过这里假设瓶身已经固定了)
- phone on base:座机,把电话放回座机上。
- pick and lift:抓起来,向上,不放
- pick up cup:把杯子抓起来,方向朝上
- place cups:茶杯放到茶杯架上,杯口倒挂
- place hanger on rack:把衣架挂到晾衣竿上
- place shape in shape sorter:有很多小形状,有一个板子,板子上是对应形状的凹槽。需要形状匹配的peg in hole
- play jenga:从一堆木块中抽出一个,木块堆不倒
- plug charger in power supply:把插头插入插座
- pour from cup to cup:从一个杯中把东西倒入另一个杯中
- press switch:开关时拨动式开关,往一侧拨是开
- push button:同29
- push buttons:29重复多次,按很多按钮
- put books on bookshelf:把几本书放进书架
- put bottle in fridge:把瓶子放进冰箱
- put groceries in cupboard:把物体放进橱柜
- put item in drawer:把东西放进抽屉
- put knife in knife block:把刀插进刀架
- put knife on chopping board:把刀放到菜板
- put money in safe:把钱放进保险柜
- put plate in colored dish rack:把盘子插入盘子架
- put rubbish in bin:扔垃圾
- put shoes in box:把鞋盒子打开,把鞋装进去。盒子还是掀盖式的
- put toilet roll on stand:把卫生纸卷插入卫生纸架
- put tray in oven:打开烤箱,把盘子放进去
- put umbrella in umbrella stand:把雨伞插入雨伞架
- reach and drag:夹住,拖
- reach target:同30
- remove cups:91的反操作
- scoop with spatula:铲起目标物
- screw nail:拿起螺丝刀拧螺丝
- set the table:摆盘,布置好刀叉盘
- setup checkers:摆棋盘,类似中国象棋初始位
- slide block to target:同2
- slide cabinet open:同42
- slide cabinet open and place cups:把储藏箱滑动打开,把杯子放箱子里
- solve puzzle:拼图
- stack blocks:同3
- stack cups:杯子套杯子
- stack wine:把红酒放到红酒架上
- straghten rope:把绳子弄直
- sweep to dustpan:把垃圾扫入畚箕
- take cup out from cabinet:拉开储藏室,取出杯子
- take frame off hanger:66的反动作
- take item out of drawer:103的反动作
- take lid off saucepan:揭开锅盖
- take money out safe:106的反动作
- take off weighing scales:从称上把东西拿走
- take plate off colored dish rack:107的反动作
- take shoes out of box:109的反动作
- take toilet roll off stand:110的反动作
- take tray out of oven:111的反动作
- take umbrella out of umbrella stand:112的反动作
- take usb out of computer:70的反动作
- toilet seat down:把马桶盖翻下来
- toilet seat up:141的反动作
- turn oven on:旋钮
- turn tap:旋钮式水龙头,旁边有阀门的,和1中的旋转式水龙头不一样
- tv off:遥控器关机
- tv on:遥控器开机
- unplug charger:95的反动作
- water plants:给盆栽浇水
- weighing scales:把物体放到称上去
- wipe desk:拿海绵/刷子擦桌子上不干净的地方
双手
- bimanual lifting:双手抬
- bimanual peg-in-hole:一手拿棒,一手拿带孔的板,在运动中插入孔中。