想象这样一个场景:你坐在沙发上,对机器人说:“帮我把桌上那杯水拿过来。”

桌子不远,水也已经倒好。人通常扫一眼就能走过去,端起杯子,再递到对方手里。我们很少意识到,途中已经判断了杯子的位置、手指的力度、绕开椅子的路线,以及对方有没有接稳。

把同一件事交给机器人,这些习以为常的判断都得有办法实现。我们先选一个具体任务:拿一杯已经装好的常温水,送到人手中。从认出杯子到等对方接稳,正好看看感知、规划和控制怎样配合。

从这个例子理解“具身智能”,可以抓住一点:智能系统要通过身体在环境中行动,而行动的结果又会影响后续判断。一杯水从桌面到手中,恰好把这种互动呈现了出来。

下文结合启元Q1机器人的公开模型与接口文档,说明机器人怎样描述自身结构、获得动作反馈;拿水则作为通用任务展开,帮助理解这些基础能力为什么重要。

图1:拿水任务可拆成理解目标、找到杯子、稳定抓取、平稳搬运和完成交接,各环节都需要依据反馈调整。

图1:从理解要求到完成交接,每一步都需要根据眼前的情况调整动作。

一、“那杯水”,究竟是哪一杯?

假设桌上放着一只空杯、一只装水的玻璃杯,还有一杯咖啡。“拿杯水”里的目标,不能只靠识别出“杯子”两个字来确定。机器人还得把语言和眼前的物品对应起来。如果信息不足,追问一句“是左边那杯吗”,就比猜着伸手更合适。

目标确定以后,行动也受身体和环境限制。杯子在桌边还是深处?旁边有没有挡住手臂的物品?当前这只机械手能不能稳妥地抓住它?

语言模型可以帮助理解要求、安排步骤,具体动作能否执行还需要另外判断。SayCan 研究给出过一种思路:从机器人已有的一组技能中,同时考虑哪项技能有助于完成指令,以及它在当前状态下预计有多大可能成功,再选择下一步。这里得到的是成功可能性的估计,执行以后仍需检查结果。这解释了为什么给机器人接上聊天模型,仍然需要处理“这一步现在做得到吗”的问题。


二、看见杯子,还得找准杯壁

人看一张照片,可以认出杯子;机器人要伸手抓它,还需要估计杯子离手多远、杯身朝向如何,以及手指从哪里靠近。认出物体类别,与获得足够准确的空间信息,是两种不同的要求。

透明杯会让这件事更麻烦。一些常见的光学深度传感器通过光来测量距离,玻璃的透光、反射和折射可能使杯壁的测量结果缺失或失真。有时画面里杯子的轮廓很清楚,距离数据却并不完整。

图2:二维图像中的杯子轮廓,与抓取所需的三维位置、距离和可接近空间不同。

图2:左侧回答“这是什么”,右侧关注“它在哪里、手该伸向哪里”。杯壁附近的缺口表示深度。

ClearGrasp 研究使用同时包含彩色画面和深度信息的输入,把图像中的形状线索与深度相机已有的有效距离数据结合,修复透明物体区域的深度估计。它说明这类困难有可研究的解决路径,但面对不同杯型、背景和光照,仍需要检查方法是否适用。

位置估计还会过时。假如机器人看完桌面后,有人顺手挪了杯子,机械手再沿原来的路线伸过去就可能抓空。因此,靠近目标时继续观察、修正动作,往往和最初的识别同样重要。


三、手伸得过去,力也要用得合适

抓杯子前,机器人得先找到一条身体能完成的路线。杯子旁边有花瓶,手臂就需要绕开;肩部和肘部能转多少,也决定了机械手能从哪个方向接近。

启元Q1机器人的公开模型文件提供了一个具体例子:文件描述了连杆如何连接、关节绕哪个方向转,以及模型中设定的关节活动范围。可以把它理解成一份供计算机使用的身体结构说明,帮助开发者分析动作能否完成。这些是模型配置,实际运动还需结合真机验证,也不能据此推断这台机器人已经会端水。

而且,“机械手够得着”还不等于整条手臂能顺利通过。手腕绕开了杯边的花瓶,肘部仍可能碰到椅背。规划动作时,需要检查沿途身体各部分的位置;有时换一个抓取方向,或者先调整站位,才能腾出空间。

手指碰到杯子后,问题又变成了“怎样持续抓稳”。以从两侧夹住杯身为例,杯子受重力向下,接触处的摩擦帮助托住它。抓得太松可能滑落;用力过大,则可能损伤薄壁或脆弱容器。换了杯子的材质、重量和接触位置,合适的抓握方式也会变化。

图3:两侧夹爪向内施力,接触摩擦帮助抵抗重力;抓取过程中根据实际可获得的反馈判断并调整动作。

图3:向内夹紧产生接触,向上的摩擦帮助托住杯子;右侧展示根据反馈调整动作的过程。

有些触觉传感器能从接触面的变形中识别受力和开始滑动的线索。比如 GelSight 相关研究,会观察柔软感应表面的变化,判断接触状态。它让机器人有机会在物体完全滑脱前发现问题,但具体能感知什么,取决于硬件和算法,不能假定每只机械手都具备同样的“手感”。

除了感知接触,机械手本身的形状和柔软程度,也会影响抓取。下面这组照片展示了一只软体机械手抓取不同物品。

图4:软体机械手抓取多种物品,子图d为包覆抓取黑色马克杯。

图4:看右侧中间的(d),柔软的手指沿着马克杯外壁弯曲,把杯身包在中间。这里观察的是抓取方式。

图5:刚性夹爪抓纸杯与软体机械手拾取薄物体的实验照片。

图5:左图(a)的纸杯已经被夹瘪,说明拿住物体时还要照顾它的承受能力;右图(b)是软手拾起薄光盘,展示手指与桌面接触时的适应性。两幅照片使用的是不同物体。


四、杯子拿稳了,水还会自己动

端着一杯快满的水突然停步,水面常会继续晃动。这是拿水任务很容易被忽略的一层:杯子和里面的液体,运动状态并不总能同步。

机器人加速、刹车或转弯,会激起液面晃动。即使杯口保持水平,水仍可能涌向杯沿。风险还与杯子的形状、装水高度和运动过程有关,不能只给机械手一个“保持水平”的要求就算结束。


图6:杯子停下以后,水面仍可能继续晃动。控制时需要同时考虑容器的运动与液体的响应。

研究人员会把这类液体运动称为“晃荡”。一种解决方向是设计更合适的运动轨迹,并协调容器姿态。下面这张实拍就来自盛水杯的搬运实验。

图7:UR3e机械臂末端固定盛水高脚杯的真实实验装置。
图7:高脚杯固定在机械臂末端,研究者用它测试液体搬运控制。

杯里装的是218毫升水,静止水面距杯口10毫米。研究者设计运动轨迹,并用高速相机记录水的晃动。这里的杯子已经固定好,实验重点是怎样安排起步、运动和停下,让水面更平稳;从桌上寻找并抓起杯子,需要另外完成。

另一项研究则展示了怎样从录像里测量液面,为检验预测模型提供依据。

图8:论文中用于提取液面晃动信息的录像图像处理示例。

图8:观察水面在容器内的位置,才能把“晃得厉不厉害”变成可比较的测量结果。

图的左列是录像中的液面,右列是研究者处理后的黑白图。绿色虚线标出静止水位,红色十字标出检测到的液面位置。上两行测量右侧杯壁处的液面升降;下两行分别展示最高液面出现在容器前壁和后壁的情况。对一般的平面或空间运动,最高点可能出现在杯壁的不同位置,因此不能只盯住右侧。图中的水加入了深棕色粉末,便于识别边界。对照这些标记,就能看出研究者如何把晃动记录下来,再与模型的预测比较。

读这类研究时,要留意它实际验证了什么:机械臂按指定路线移动容器,可以用来检验液面预测;带着水绕过家中的椅子、遇到人又停下来,则包含更多任务。这些研究帮助我们理解和处理其中一部分难题,还需要与其他能力组合,并在对应环境里验证。


五、递到手边,为什么还不能马上松手?

最后几厘米也很重要。接水的人可能先扶住杯沿,再握住杯身;也可能刚碰到杯子,就发现姿势不合适。机械手如果把“手碰到了”当成“已经接稳”,交接就可能失败。

抓取位置也影响交接。如果机械手挡住了人最方便握住的部位,对方就得换姿势。对有把手的杯子,抓住杯身还是把手,还得考虑最后怎样让人接走。规划动作时,需要给接收者留出方便握持的空间,不能只看机器人自己拿得是否稳当。

下面这组六幅照片,把抓杯与递杯的过程连了起来。

图9:Franka Panda机械臂抓取陶瓷杯并交给人的六帧实验照片。
图9:A是初始位置,B是机器人抓杯,C是人发出开始交接的信号,D是人抓住杯子,E是机械臂松手,F是人把杯子放回。

这项实验研究递送动作怎样配合人的手部位置,并用电容式接近传感器检测接取、触发释放。照片让我们看到交接需要双方配合;论文没有交代杯中是否装水,因此这里关注的是递杯动作。

在图10对应的人机交接研究中,机器人先确认接收者分担了足够重量,再检测符合条件的拉取信号,随后张开夹爪。如果只有拉动、没有分担重量,系统仍保持抓握。这是一种利用接触与受力信息协调交接的方法,具体条件需要结合所用装置确定。

图10:论文中的人机物体交接与机器人之间的物体交接实验装置。
图10:左侧是人与机器人交接物体,右侧是两台机器人交接物体。

这张原图里,左侧的品红色箭头标出拉取方向;右侧画面中,左边机器人负责接收,右边负责递出。两台机器人的夹爪均配有力/触觉传感器,用来测量交接中的接触与受力。它提示我们:物体送到目标位置以后,还需要确认重量如何转移。图中并不是装水玻璃杯的家庭交接测试,不能把研究结果直接当成所有端水场景的安全保证。


六、一次拿成,与日常可用之间

把这些环节放在一起,就能理解机器人为什么需要“闭环”:先观察,发出动作,再检查结果,并据此修正。杯子移动了要重新定位,抓握状态变化了要调整,接收者没准备好就要等待。

在启元Q1机器人的开发文档中,下发关节控制命令与读取关节状态使用不同的接口,回传字段包括关节角度、角速度和力矩,可供程序核对目标与当前状态。这些接口为状态监测和反馈控制提供了入口;怎样根据偏差调整动作,以及如何完成拿水任务,还需要相应的感知、规划和控制策略。这里的力矩描述力使关节转动的作用,与前文的指尖触觉属于不同层面的信息,不能相互替代着理解。

开发者也会借助仿真,让虚拟机器人先尝试动作,检查关节限制和明显碰撞。但虚拟环境里的杯壁摩擦、接触变形和测量误差,可能与真实环境不同。动作在电脑里顺利完成之后,还要经过真实条件下的验证。对拿水这样的连续任务,单独做好识别或抓取,都不足以证明整段过程可靠。

看一段机器人拿水的视频时,也可以多观察几个条件:杯子和摆放位置是否固定,水装了多少,过程是否由人遥控;换个杯子或有人经过时,系统会怎样处理;成功之前有没有失败和人工介入。这些信息能帮助我们判断演示验证了哪一段能力,以及距离日常使用还缺哪些环节。

下次再听到“帮我拿杯水”,可以留意人自己是怎么做的:伸手前看一眼杯壁,端起来后放缓动作,递出时等对方握稳。机器人要学会的许多事,就藏在这些通常不会被说出口的细节里。

参考资料

本文依据公开研究与启元官方开发资料整理。

进一步了解启元Q1机器人,可以从启元机器人开发者社区的模型与开发文档读起,对照本文看看身体结构和状态反馈怎样落实到具体的开发资料中。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐