对话程旭欣:Open-TeleVision教你如何沉浸式遥操机器人
小说三体中有一个场景:汪淼带上VR设备和动捕设备进入三体游戏,在三体游戏中沉浸式解密三体世界。未来,如果Elon Musk开启了火星殖民地,你是想肉身坐着Starship去火星还是考虑租一个Optimus机器人分身先替你体验一下火星生活?如果是我,我一定是先租一个Optimus,用类似三体里的VR和动捕设备体验火星生活。那要如何操控远在火星的Optimus呢?科技照进现实:UCSD和MIT的学者在2024年公开的Open-TeleVision可以帮你实现。
Open-TeleVision是一套基于VR头显遥操机器人的系统,这个系统可以支持不同的VR硬件平台,通过适当的映射可以接入任何一种机器人,并且这个系统拥有类人的双目立体视觉加上可以扭动的脖子,和人类日常生活中观察和感知周围环境非常类似。人只需要带上VR头显,不需要任何其他可穿戴设备就可以隔空操作机器人。
我们采访了Open-TeleVision Teleoperation with Immersive Active Visual Feedback的一作程旭欣博士,他目前是UCSD博士生,由王小龙教授指导,之前在CMU Deepak Pathak组里读硕士。程博士在四足和双足locomotion方面有很多优秀工作,包括去年公布的人形机器人全身控制的Expressive Whole-Body Control for Humanoid Robots和四足狗跑酷Extreme Parkour with Legged Robots等。接下来,让我们沉浸式了解下,Open-TeleVision如何让人类沉浸式遥操机器人吧。
1. Open-TeleVision介绍
Open-TeleVision的核心思想
机器人眼睛部分的两个摄像头有什么特殊安排?
你们是第一个用VisionPro来做人形的遥操的吗?
人形机器人和人自由度匹配的问题
Mapping是一个什么过程?
通过这种遥操方式采数据学习的效果如何?
VR系统只能是VisionPro吗?
如何人手解决隔空操作的精准度问题?
Open Television有什么问题?
2. 关于人形机器人本体的控制训练
为什么人形机器人不能像训练狗一样只用RL?
关于动捕数据集
通过人类动捕数据学习和模仿学习有什么区别?
可否介绍下现在对于人形机器人训练的各种路径?
人形机器人上半身和下半身的训练策略不同如何解决?
为什么locomotion用RL效果很好而不是IL?
Extreme Parkour有什么特点?
3. 一些想法
遥操作(Tele-operation)并不是一个新的课题,之前已经有很多工作用遥操作的方式收集数据,然后进行模仿学习(learning from demonstrations)。如果你想在机器人上部署这些学习成果,最直接的方法就是收集机器人自身的数据(on-robota data),即机器人实际执行任务时的数据。之前的工作,比如ALOHA等都是探索了怎么通过Joint-copy(关节复制)的遥操作方法来控制机器人。
这类方法的问题是,首先,操作人员必须在机器人旁边,人的操作视角和机器人的操作视角有空间差异,导致操作不够直观。其次,你需要为远程操作构建一套与实际执行任务的机器人类似的硬件系统。也就是说,你需要两套相同的设备才能完成任务,这种做法成本比较高。再次,它需要人和机器人保持近距离操作,操作人员必须站在机器人旁边,人眼有很大的视野,但机器人的视野一般是通过固定在不同位置的摄像头(例如顶部、前面、后面或抓取器上)来实现的。这带来了一个问题,即操作人员看到的信息比机器人更多,也许人的操作决策是基于那些机器人无法捕捉到的信息做出的,这在训练策略时可能导致信息差异。Mobile Aloha这种方法使用四个摄像头可以覆盖较大的工作空间,并且人可以在整套设备的后方来操作,也相对直观。
我们的工作,针对前述工作的问题和人形机器人时代的特性提出的一种新方法。对于人形机器人而言,操作人员不可能站在机器人后面,因为会被其躯干挡住;站在旁边歪着头看也不直观,还得一直扭着脖子。此外,人形机器人是移动平台,设置过多的固定摄像头并不实际。因此,最直观的方式是让操作人员沉浸式地控制机器人,就像自己变成机器人一样。Open-TeleVision这个工作也是受这个想法启发,它的主要特点是操作人员无需站在机器人旁边或后面,也不需要以第三人称视角操作,而是戴上头盔后沉浸式地操作机器人。
这种远程操作具有以下特点:
第一,沉浸式(imversive)体验,操作人员通过沉浸式远程操作看到的不是2D视频,而是3D视频,就像观看3D电影一样。左右眼看到的图像不同,从而形成自然的立体视觉。这种立体视觉可以实现对空间距离的精确估计,使操作人员能够完成很多精细的任务,例如包装透明盒子或处理小物件。没有3D视觉的话,很难准确判断物体的远近,第一次尝试可能就会失败。
第二,我们的机器人系统还配备了活动颈部(active neck),使头部能够移动。人眼在执行任务时,会使用中心视网膜的一个小区域来聚焦(foveal vision)。使用固定摄像头时,如果需要看其他地方,只能斜视或用边缘视觉,非常不便。因此,加入活动颈部使系统更加沉浸和直观。操作人员只需转动头部即可看到目标区域,而不需要歪着眼睛或使用边缘视觉。
通过活动颈部加上逆运动学和重定向,操作者只需直观地看着感兴趣的点,机器人将跟随相同的头部运动。
头部转来转
第三,活动颈部还降低了计算成本,因为操作人员只需要看到摄像头中心的一小部分图像,而不需要处理高分辨率的广角图像。大分辨率图像中有很多无用的视觉信息,处理这些信息对计算机的需求很高。聚焦于中间小部分图像后,只需转头就能看到所需内容,从而大大提高了计算效率。我们的系统可以达到大约80赫兹的帧率,而处理更大图像时只能达到40赫兹,高帧率对系统的直观性帮助很大。
这些都是关于视觉部分。那接收视觉信息后,如何将动作传递给机器人也很关键。我们使用了一套非常好的逆运动学(IK)算法,将Vision Pro提供的API映射到机器人身上。这部分主要涉及工程实现,使用的技术相对成熟,只需整体优化即可达到理想效果。
我们这套系统的感知和活动颈部的部分,都是构建在一个基于Web的平台上的,我们借用了MIT Yang Ge的一套名为Vuer的框架,本质上类似于一些Web服务器,通过现有的网络技术来实现远程数据传输。可以将其想象成类似于视频会议或视频通话的技术,整个系统类似于玩网络游戏,需要低延迟和高响应速度。该系统可以轻松从任何设备上的Web浏览器访问(包括Vision Pro、Quest,甚至是Mac、iPad、iPhone等设备)。
总体来说,这套系统实现了低延迟和高效能的远程操作,确保操作人员能够实时、快速、准确地控制机器人。
机器人眼睛部分的两个摄像头有什么特殊安排?
为了确保操作人员获得真实的立体视觉体验,系统必须模拟人眼的距离。两个RGB摄像头之间的距离应该接近人眼的间距,不能太远也不能太近,这样才能呈现出真实的视觉效果,避免让人感到晕眩。你也可以使用两个Web摄像头,将它们放在适当的位置以实现相同的效果。这种配置可以确保操作人员在远程操作时获得逼真的视觉感受。这些摄像头在硬件上做了同步处理,并且提供了很好的API接口,我们直接利用这些现成的功能来实现系统。
你们是第一个用VisionPro来做人形的遥操的吗?
MIT团队也在进行类似的工作,但他们的实现略有不同。MIT Pulkit组的VisionProTeleop写了一个VisionOS应用和Python库,通过WiFi网络使用gRPC来同步传输(streaming)Vision Pro API提供的各种数据(如头部、手腕和手部追踪结果),这样,任何连接到相同WiFi网络的机器人都可以订阅并使用这些数据。但它们的系统存在一个问题,即操作人员必须站在旁边斜着眼看。近期的OmniH2O和HumanPlus也探索了如何投射人的全身动作到人形机器人上。
我们的创新在于,我们将机器人的两个摄像头做成了非常仿生的配置。当操作人员戴上Vision Pro时,就相当于从机器人的视角进行操作,这种设计使得操作体验更加自然和直观。而且我们是基于Web的数据传输,可以实现长距离的同步。
人形机器人和人自由度匹配的问题
人形机器人和人体自由度不匹配对我们的工作来说,影响不大,只要这个人形机器人的自由度小于人类。以末端执行器为例,我们的系统不仅限于五指手,你可以看到在我们的网站上还有夹爪,这取决于你mapping的方式。基于不同的映射方式,几乎任何机器人都可以操作,除非它的自由度超出了人的范围(比如这个机器人有三个胳膊,六个手指),对于低于人的自由度的机器人,都可以找到合适的映射方式来应对。如下面视频所示,傅里叶的GR-1和宇树的H1都可以,夹爪或五指手也都可以。
不同的机器人都可以很好的匹配
Mapping是一个什么过程?
Mapping过程通常涉及到Retargeting或逆运动学(IK,Inverse Kinematic),通过末端动作来反推关节的自由度。只要机器人的自由度低于人类的基准,我们就能有效地实现控制。然而,如果机器人的自由度超过人类的水平,那么就会出现自由度冗余的问题,需要更复杂的处理方法。现阶段,机器人的手部自由度远远不及人类的手部,例如人类手部可能有20多个自由度,而我们使用的机器人手部通常只有六个自由度。这导致机器人无法执行某些复杂的动作,如四指张开或大拇指的灵活动作。
通过这种遥操方式采数据学习的效果如何?
我们通过这种遥控方式让机器人学习自主完成任务的策略效果非常好,可以看到我们采集的数据是非常有效的,特别是使用颈部转动+两个RGB摄像头,我们验证了这种方法非常高效地训练机器人。
我们的任务都强调长程任务、并且具备一定的泛化能力。例如,对于放置罐子的任务,无论你将罐子放置在哪个位置,机器人都能够成功抓取。相比之前的一些演示,可能需要多次尝试才能成功一次,但我们的系统连续成功了12次,每个罐子都插在不同的位置。这证明了我们系统在决策和执行方面的可靠性。
通过遥操采集的数据训练机器人自主完成任务
VR系统只能是VisionPro吗?
我们是直接拿苹果的API而不是简单的用一些开源系统来自己搭建识别系统,VisionPro基于视觉的识别精度是很高的,尤其对于人手的识别精度非常高。当然这个VR设备也可以用其他的VR设备比如Meta Quest,硬件便宜很多,但对我们这套系统也是适用的。
如何解决人手隔空操作的精准度问题?
可以考虑到增加触觉或者其他反馈,我们有几种思路可以探索。一种方法是开发一种手套,它能够模拟各种感觉,从机器人那边传输到使用者这边。另一种比较简单的方法是,例如当机器人在另一端拿起物体时,你在这端也拿一个类似的物体。
这种简单方法反馈的信息有限,例如如果机器人手里的物体掉落了,这边还拿在手上,那感觉明显不一样。这个领域需要进一步探索,特别是在触觉反馈方面。目前我们还未加入触觉反馈,但我们也发现,仅仅依靠视觉信息有时也能推断出一些触觉信息。人类在适应和理解这些信息方面有很强的能力,比如观察到一个罐子放置时,通过看手松开的方式,可以大致推测手和罐子之间的力量关系。
Open Television有什么问题?
问题主要在于这种mapping不如joint copy那么直观,例如,对于具有六个自由度的机器人手臂,joint copy直接将每个电机位置复制到另一个设备就好了。我们需要对末端执行器进行逆向运动学(IK)计算,这可能导致一些不自然的动作,初始阶段可能会有调整不到位的情况,导致一些奇怪的运动或者动作。
另一个问题是操作延迟,人通过相机来观察也会有一定的延迟。与Aloha这种直接人眼看到马上通过遥操反馈到机器人动作上相比,肯定还是会有一定的延迟。此外,触觉感知也是一个潜在的改进方向,尽管当前的技术并未完全解决这个问题。
2. 关于人形机器人本体的控制训练
关于四足和人形机器人本体的控制,程博士也有一些不错的工作,比如去年春节前公开的Expressive Whole-Body Control for Humanoid Robots(RSS 2024)和更早一些的机器狗跑酷Extreme Parkour with Legged Robots(ICRA 2024)。我们也在这两个工作的基础上,针对人形和四足的控制学习问题进行了一些交流。
为什么人形机器人不能像训练狗一样只用RL?
在之前做狗主要就是用仿真数据,在仿真环境中,我们设定一些奖励,以使机器狗的步态看起来更自然。然而,对于人形机器人来说,它具有更多的自由度,难以直接通过奖励函数来有效地生成优秀的动作。例如,想让机器人执行某个动作时,无法为每个动作都设计一个合适的奖励函数。
因此,我们不仅利用仿真数据,还利用人类动作捕捉数据(mocap data)来引导仿真里训练的这个RL,就相当于通过给这些多余的自由度设置一些条件,使机器人能够执行多样化的动作。这个动捕的来源可以很多样,比如从YouTube随机找到的视频,经过处理后,可以适应机器人接收的格式,使其能够执行这些动作,即使机器人之前未曾见过这些动作。
关于动捕数据集
在训练过程中,我们有一个动作数据集。但一旦训练完成,新的动作就不再需要额外训练,可以zero-shot直接交付给机器人使用。我们使用的是CMU MoCap,一个很老很经典的动捕数据集。
通过人类动捕数据学习和模仿学习有什么区别?
很难去精准的界定,这种方法不完全是监督学习,但通过引导信号(例如指令)进行模仿,也算是一种模仿学习。当你的动作越接近人类数据,奖励信号也会越高。这可以看作是间接的模仿学习,不仅是简单的模仿,还涉及最大化其他因素,我们是通过RL这种方式来实现。
可否介绍下现在对于人形机器人训练的各种路径?
我理解的是,整体思想都差不多,即通过某种方式获取人类的动作,然后将这些动作retarget到合适的机器人动作,然后用RL policy去追踪。做locomotion没有什么特别花的方法,基本就是做Teacher-Student 训练,然后做Sim2Real。
人形机器人上半身和下半身的训练策略不同如何解决?
有些工作是用全身RL,但这种对上肢的控制精度可能不够高,但协调性可能比较好。可能未来的一些工作会把上半身操作用模仿学习训练和下半身移动用强化学习训练frame成一种方法,都是Teacher-Student学习方法。因为你训练locomotion也是在仿真环境里,用一个先验的强化学习策略(Privileged RL Policy)作为老师,然后用模仿学习训练一个学生网络,这有点像训练操作时用到的模仿学习。操作常用的模仿学习只是不使用RL来获取老师,而是直接使用人类作为老师。但由于人类无法示范如何行走,因此很难将其作为Locomotion的老师,因此,我们的locomotion的老师都是在仿真环境中使用RL进行训练的。
为什么locomotion用RL效果很好而不是IL?
这里的关键点是机器人学习人类动作时的限制。虽然可以通过视频等方式采集和重新目标化(retarget)人类的动作,但这些动作通常是在计算机模拟中运动学可行(kinematics feasible)但不是动力学可行(dynamics/physics feasible),因此无法适应真实物理世界的各种动力学定律。在模拟环境中使用RL训练机器人,最关键的是让机器人适应模拟环境中的物理定律,如物理引擎模拟的动力学和运动学,以此来适应真实世界中存在复杂的动力学和力学要求。
Teacher和Student在强化学习中的角色不同,Teacher通常能够获取更多的Privileged information,就像不论是跑酷还是盲走,Teacher能够获得更多的信息,这是强化学习中的一种普遍现象。如果强化学习中的探索不足,就很难训练出最优的行为。因此,我们希望尽可能为老师提供更多的信息。由于在仿真环境中,我们可以获取到各种奇怪的信息,全喂给它。例如在训练机器狗时,直接告诉它你背负了多重的东西,这样教师可以更好地、更快地学习。
而学生需要在现实世界中适应环境,我们不能仅仅依赖仿真环境中的Privileged information来训练学生,学生的训练需要使用现实世界中可用的数据和信息。总体思路是,在仿真环境中,Teacher的训练是怎么能够更快更好的训练出来一个能work的东西,然后再把它distill成现实世界中可以用的东西。
Extreme Parkour有什么特点?
整体思想是相同的,但我们在这里增加了视觉反馈,机器人不再盲目地行动,而是需要视觉反馈。在师生学习的框架中,主要的区别在于,你需要同时精确执行脚部动作,并实时调整方向。同时进行师生学习可能会带来一些挑战,因此我们采用了一种称为混合师生学习(mix teacher-student)的方法来提高数据的质量,最终才能训练出这样一个系统。
3. 一些想法
去年开始,在从日常看综艺切换到日常看论文的状态之后,我就有一个非常强的体会:为什么有些人在上大学之前就明确的知道自己要做啥?日常看机器人学习领域的Paper很多都是出自真学霸之手,本科基本都是清华、北大、上交、浙大这类,很多还是姚班、图灵班、ACM班或者竺可桢的,博士去到美国四大(MIT、斯坦福、伯克利、CMU),从旁观者的角度看这些人的履历,就觉得他们在专业选择上没有浪费任何时间。有些人甚至更小,比如小学、初中或者高中的时候就知道自己喜欢机器人或计算机,以后要从事机器人或AI相关的工作。这种对自身兴趣和能力的清晰认知,着实佩服。我到现在都不知道自己喜欢什么,所以只能做做投资,样样通样样松。
说回到投资人,我从去年深入看具身智能,也才对一件事情恍然大悟:难怪个别头部美元基金可以投到最头部的创始人,他们对牛人的sourcing能力和力度真的是太优秀了,这绝对不是一般小基金能比的。23年6月开始,我只看机器人方向,确切的说,只看机器人学习,更确切的说,只看通过学习的方式解决机器人通用操作这个方向,看了一年,算是把人都摸透。但仅仅是通过网线摸透,还很少机会能够面对面处一处,但个别投资人已经和这些学者处了好几年了。可谓看到差距,才有进步空间!加油吧!
https://github.com/Improbable-AI/VisionProTeleop/blob/main/assets/short_paper_new.pdf
https://github.com/Improbable-AI/VisionProTeleop
https://extreme-parkour.github.io/
https://expressive-humanoid.github.io/
https://chengxuxin.github.io/
https://robot-tv.github.io/
原创不易,欢迎“点赞”“打赏”“在看”三连!
也欢迎加我微信交流!
微信扫码关注该文公众号作者