第九节 机器人学:构建大任务平台
我在第四节谈到人工智能研究的认知构架,应该是小数据、大任务范式。机器人就是这么一个大任务的科研平台。它不仅要调度视觉识别、语言交流、认知推理等任务,还要执行大量的行动去改变环境。我就不介绍机械控制这些问题了,就用市面上提供的通用机器人平台。
前面介绍过,人和机器人要执行任务,把任务分解成一连串的动作,而每个动作都是要改变环境中的流态。
我把流态分作两大类:
(1)物理流态 (Physical Fluents):如下图左边,刷漆、烧开水、拖地板、切菜。
(2)社会流态 (Social Fluents): 如下图右边,吃、喝、 追逐、搀扶,是改变自己内部生物状态、或者是与别人的关系。
当机器人重建了三维场景后(在谈视觉的时候提到了,这其实是一个与任务、功能推理的迭代生成的过程),它就带着功利和任务的眼光来看这个场景。如下图所示,哪个地方可以站,哪个地方可以坐,哪个地方可以倒水等等。下面图中亮的地方表示可以执行某个动作。这些图在机器人规划中又叫做Affordance Map。意思是:这个场景可以给你提供什么?
有了这些单个基本任务的地图,机器人就可以做任务的规划。这个规划本身就是一个层次化的表达。文献中有多种方法,我还是把它统一称作一种STC-PG。这个过程,其实相当复杂,因为它一边做,一边还要不断看和更新场景的模型。因为我前面介绍过,对环境三维形状的计算精度是根据任务需要来决定的,也就是Task-Centered视觉表达。
这个动作计划的过程还要考虑因果、考虑到场景中别人的反应。考虑的东西越多,它就越成熟,做事就得体、不莽莽撞撞。
我一开始讲到的那个机器人竞赛,这些感知和规划的任务其实都交给了一群在后台遥控的人。
下面,我就简单介绍几个我实验室得到的初步演示结果,后台没有遥控的人。我实验室用的是一个通用的Baxter机器人,配上一个万向移动的底座和两个抓手(grippers),还有一些传感器、摄像头等。两个抓手是不同的,左手力道大,右手灵活。很有意思的是,如果你观察过龙虾等动物,它的两个钳子也是不同的,一个用来夹碎、一个是锯齿状的。
下图是一个博士生舒天民教会了机器人几种社交动作,比如握手。握手看似平常,其实非常微妙。但你走过去跟一个人握手的过程中,你其实需要多次判断对方的意图;否则,会出现尴尬局面。舒的论文在美国这边媒体都报道过。
下面这个组图是机器人完成一个综合的任务。首先它听到有人去敲门,推断有人要进来,它就去开门。其次,它看到这个人手上拿个蛋糕盒子,双手被占了,所以需要帮助。通过对话,它知道对方要把蛋糕放到冰箱里面,所以它就去帮人开冰箱的门(上右图)。这个人坐下来后,他有一个动作是抓可乐罐,摇了摇,放下来。它必须推断这个人要喝水,而可乐罐是空的(不可见的流态)。假设它知道有可乐在冰箱,它后面就开冰箱门拿可乐,然后递给人。
当然,这个是受限环境,要能够把样的功能做成任意一个场景的话,那就基本能接近我们前面提到的可敬的乌鸦了。我们还在努力中!