机器人会打乒乓球了?其实背后原理没那么复杂
统计 阅读时间大约6分钟(2319字)

11小时前 机器人会打乒乓球了?其实背后原理没那么复杂

来源:机器人技术笔记
出品:机器人技术笔记本届WAIC世界人工智能大会上,中央展馆和超维智能的展厅里都展示了智元机器人打乒乓球,让现场观众眼前一亮。人形机器人站在球台前,盯住来球、移...

出品:机器人技术笔记

本届 WAIC 世界人工智能大会上,中央展馆和超维智能的展厅里都展示了智元机器人打乒乓球,让现场观众眼前一亮。人形机器人站在球台前,盯住来球、移动脚步,再把白球打回去,机器人必须一边判断落点,一边调动全身。

446cb4d4817e141a806659e5759b5dfc.jpg

此前,银河通用也展示过机器人打网球。再往前追,这一轮人形机器人球类运动里,更早公开完整系统的是伯克利团队的 HITTER。论文报告,它和人对打时最长维持了 106 拍。视频里的机器人会侧移、转腰,也会根据来球切换正手和反手。

不同团队的具体技术路线未必相同。要弄懂机器人为什么能接住高速来球,HITTER 仍然是目前公开细节较完整、适合拆开讲的样本。

一颗乒乓球从对面弹起后,机器人要在它到身前之前做几件事:看清来路,猜它会在哪里出现,决定球拍怎么迎上去,同时让脚步、腰和手臂赶到合适的位置。听起来环环相扣,HITTER 背后的原理却没有画面看上去那么复杂。

它把任务拆成两层:上层用运动学规划算出击球目标,下层用强化学习全身控制把动作做出来。要做到能连续回球,靠的是这两层共同起作用。

运动规划算目标,强化学习做动作

从系统分层看,可以把 HITTER 理解成运动学规划与强化学习全身控制的组合。严格说,上层是基于模型的规划器,其中包含乒乓球的简化动力学,它要回答三个问题:球拍在哪里碰球,什么时候碰,以及碰球时要有多快。下层是强化学习训练出来的全身控制器。它拿到击球位置、球拍速度和击球时刻,再决定脚往哪边迈、腰怎么转、手臂如何挥动,以及击球后怎样恢复平衡。

两层之间的接口很清楚。规划器负责计算球拍要达到的目标,全身控制器负责让身体及时赶上目标。

89b96f0fb3fdc9aa006ba8967e9f265c.png

图 1:HITTER 总体工作流程。动捕先观察球路,运动规划给出击球目标,全身控制器再完成动作。

这种分工和人打球时的感觉很接近。我们先判断去哪里接球、拍子往哪个方向送,已经练熟的身体再把脚步、转腰和挥拍接起来。HITTER 把这个过程变成了两套可以分别训练、分别检查的工程模块。

第一层:先看清球,再算它会飞到哪里

规划的第一步,是知道球现在在哪里、正往哪边飞。HITTER 依靠实验室里的外部动捕来测量球位,球上贴着便于识别的反光胶带。动捕会连续记录球的位置,同时知道机器人自己站在哪里、朝向哪里。

不过,一串位置点还不是球路。可以把它想成在纸上每隔一小段时间点一个点:点与点之间难免有测量抖动,也没有直接告诉你球速。系统会用最近的一段位置记录拟合出一条平滑曲线。曲线上的点表示球现在的位置,曲线变化的快慢则告诉系统球正以什么速度、朝什么方向飞。

球落到桌面时,运动规律会突然变化。系统检测到反弹,就丢掉反弹前那段记录,从新的轨迹重新拟合。这样不会把落桌前后的两段运动硬接成一条错误曲线。

只知道当前位置和速度还不够。球在空中会减速,落桌后会损失一部分水平速度,也会以新的垂直速度弹起来。研究团队提前记录一批真实球路,用它们辨识出三个参数,分别描述飞行阻力、水平反弹和垂直反弹。

这三个参数有点像提前校准好的球性。当前这颗球从哪里来,由动捕拟合告诉系统;接下来会飞到哪里,则由当前状态和这三个参数一起推算。规划器不必每次重新学习乒乓球怎么飞,只要沿着这套规律向前算即可。

最后,系统在机器人面前设置一张击球平面。规划器预测球会在什么时间、什么位置穿过这张平面,再根据希望它落到对方哪一边,反推出球拍应该以多快的速度迎上去。

所以第一层做的事很好理解:动捕负责看清当前球路,三个参数帮助预测下一段运动,规划器再把预测结果变成击球位置、时刻和球拍速度。

d1ff0c037c4f3aa6121bd35d9898d247.png

图 2:第一层运动规划。蓝色部分表示位置采样与轨迹拟合,橙色部分表示落桌后的轨迹预测和击球目标。

第二层:强化学习把目标变成拟人全身动作

拿到击球目标,机器人仍然不会自动挥拍。球拍只差几厘米就可能漏球;脚步慢一点,手臂够得着,身体却未必稳得住。上层规划器并没有给出肩、肘、腰、髋和腿的逐关节轨迹,这部分交给强化学习全身控制器。

团队先录制了人类正手和反手挥拍的视频,从视频中重建人体动作,再迁移到人形机器人上,作为训练时的参考。训练的一部分目标,是让机器人学会人类转腰、挥臂的样子;另一部分目标,是让球拍和身体准确赶到规划器指定的位置。

这里说的拟人,并非播放一段固定动作。参考视频告诉机器人正手、反手大致应该怎样转腰和挥臂,规划器给出的目标则会随来球改变。强化学习要在两者之间找到可执行的全身动作:既打得到球,也尽量保留人的挥拍形态。

真正运行时,控制策略会同时看到击球目标、剩余时间和机器人自己的身体状态,然后给各个关节下发目标位置。研究团队还把身体应该移动到哪里、球拍应该怎样碰球分开告诉策略,让它分别处理脚步和挥拍。

论文中的真机观察显示,使用基座位置目标时,机器人可以用一次快速侧步接近来球;采用速度指令时,动作更容易变成较慢的多步横移。训练中加入人类参考动作后,机器人击球时也出现了更接近人的腰部转动。

这就是强化学习在 HITTER 里的具体职责:它不负责预测球路,主要负责把击球目标变成及时、稳定、带有拟人特征的全身动作。

9ea55340cfdc16d7b31a6d66fa5509c7.png

图 3:第二层强化学习全身控制。人类动作提供挥拍参考,击球目标和身体状态随任务变化,控制器据此生成侧移、转腰和挥拍动作。

两层接起来,机器人就能做到连续回球

真正击球时,动捕不断送来新的球位置,拟合结果随之更新,规划器也会反复修正击球位置和时刻。全身控制器一边向目标移动,一边保持平衡;完成这一拍后,还要为下一拍重新站稳。状态估计、运动规划和强化学习全身控制要连续配合,回合才能一直延续下去。

这种方法也有继续升级的空间。球的位置来自外部动捕,普通场地里并没有这套定位条件;固定击球平面会让系统难以处理过短或过深的球。

球的旋转也是一道尚未处理的题。当前模型假设旋转可以忽略,机器人主要用平推回球,还不会处理上旋、下旋和侧旋带来的轨迹变化。它也不会自己发球,人机和双机回合都要由人启动。

所以,HITTER 打乒乓球证明的是:在受控实验室里,一台通用人形机器人可以让基于模型的运动规划和强化学习全身控制共同工作,连续完成高速回球。目前它还没有证明机器人已经能靠自己的视觉走进普通球馆,更没有证明它能和熟练选手打竞技比赛。

总的来说,使用 HITTER 的方法实现机器人打乒乓球的技术路径很清楚:动捕拟合估计球的位置和速度,参数辨识帮助模型预测球路,运动规划给出击球目标,强化学习再让全身做出拟人的击球动作。

推荐阅读
{{item.author_display_name}}
{{item.author_display_name}}
{{item.author_user_occu}}
{{item.author_user_sign}}
×
右键可直接复制图片
×