最新动态
UMI——斯坦福刷盘机器人:从手持夹持器到动作预测Diffusion Policy(含代码解读)
2024-11-17 18:30  浏览:88

没想到今年年初的斯坦福mobile aloha的热度刚过,而到今年2月的下旬,斯坦福另一个团队又推出了UMI刷盘机器人,且这两个团队还互相认识、还在一块共同切磋(顺带小小感叹一下,斯坦福的氛围是真好而且真高产)

UMI——斯坦福刷盘机器人:从手持夹持器到动作预测Diffusion Policy(含代码解读)

  • 其与mobile aloha(以及AirExo: Low-Cost Exoskeletons for Learning Whole-Arm Manipulation in the Wild)最大的不同在于其收集数据处理的非真实的机器人,而是一个手持夹持器(从而大幅降低成本)
  • 而其与此文《》中第一部分的纽约大学Dobb·E最大的不同,则在于Dobb·E需要针对特定环境进行动作策略上的微调,而UMI面对陌生环境有比较好的泛化能力

后来我司七月在线总算把斯坦福的UMI、DexCap成功复现了(应该是国内最早复现这两模型的团队或之一了)

  1. 至于复现过程中所遇到的问题或困难有的同学因为没实际尝试过复现的话,便会想当然的觉得「github上的代码逻辑很顺,UMI的环境直接用了docker,预训练数据都有的,好像如果只是复现原视频,则难度不大」,实则不然 一方面,如我司机器人技术负责人姚博士所说,“其实主要问题他们在论文中也说了,就是视觉SLAM,这种方法信息量还是不够的,成功率没那么高,最终还是要增加数据源 ” 二方面国产替代过程中,有很多坑我们是逐个踩过去的,另一方面,我们针对国产替代写了另外的脚本「毕竟,国产替代有两种方法:写脚本--硬解耦,换通讯方式--通用化改写」 觉得复现很简单的同学,大可以实际试一下,毕竟纸上谈兵永远简单
  2. 此外,复现之外,主要还是要想训练自己的功能,所有的算法逻辑都要很熟悉才可以 但UMI对硬件的解耦不够,使得原始的那套UMI框架想让其达到它原始论文中的效果,则需要用它论文中的原装硬件「其实,即便都弄成原装硬件,效果也不一定能达到原论文效果的100%,详见此文」 所以我司后来更多去优化dexcap了「不过,dexcap代码是不全的,但是我们尝试了仿真 + 通用化改写」 而我们一合作伙伴则在UMI的基础上改进出了Fast-UMI:用RealSense T265替代SLAM且实现机械臂的迁移与平替
  3. 为不断扩大整个大模型机器人的开发队伍,需要从课程中选拔更多人才 故推出,欢迎加入

最新更新,截止到24年10月份,目前我们把umi、dexcap这两个方向用的很熟了(前者可以通过把umi的算法移植到不同的机械臂上,后者则原装框架便可以)

至于人形上,厂商硬件还没完全跟上,预计过完q4 会好不少

在此之前,机器人收集训练数据一般有以下这几种方式

  1. 遥操作 行为克隆(BC)利用遥操作机器人演示,以其直接的可转移性脱颖而出。然而,遥操作真实机器人进行数据收集面临重大挑战 以前的方法使用了诸如3D空间鼠标[9, 54]、VR或AR控制器[35, 3, 13, 19, 31, 51, 12]、智能手机[44, 45, 22],和触觉设备[38,47, 43, 26, 4] 用于遥操作 然这些方法要么非常昂贵,要么由于高延迟和缺乏用户直观性而难以使用。虽然最近诸如ALOHA [53-Learning fine-grained bimanual manipulation with low-cost hardware, 15-Mobile aloha: Learning bimanual mobile manipulation with low-cost whole-body teleoperation] 和GELLO [46]的进展提供了具有直观和低成本界面的希望,但它们在数据收集过程中需要依赖真实机器人,此举限制了系统在“野外”数据采集中可以访问的环境类型和数量 至于外骨骼 [14,20] 虽然消除了在数据收集过程中对真实机器人的依赖,但在部署时需要使用遥操作的真实机器人数据进行微调 此外,上面这些设备生成的数据和策略是特定于具体体现的,无法用于不同的机器人
  2. 来自人类视频的视觉演示 有的工作致力于从视频数据——例如YouTube视频中进行策略学习 即最常见的方法是从各种被动的人类演示视频中学习,利用被动的人类演示,先前的工作学习了任务成本函数 [37, 8, 1, 21]、可供性函(affordance function) [2]、密集物体描述符[40, 24, 39]、动作对应 [33, 28] 和预训练的视觉表示 [23-R3m: A universal visual representation for robot manipulation,48-Masked visual pre-training for motor control] 然而,这种方法遇到了三个主要挑战 首先,大多数视频演示缺乏明确的动作信息(这对于学习可推广的策略至关重要) 为了从被动的人类视频中推断动作数据,先前的工作采用了手部姿态检测器 [44-Mimicplay: Long-horizon imitation learning by watching human play, 1-Human-to-robot imitation in the wild, 38-Videodex: Learning dexterity from internet videos, 28- Dexmv: Imitation learning for dexterous manipulation from human videos],或将人类视频与域内遥操作机器人数据结合以预测动作 [33, 20, 34, 28] 其次,人类和机器人之间明显的embodiment(物理本体,有的翻译为体现)差距阻碍了动作转移(the evident embodiment gap between humans and robots hinders action transfer) 弥合这一差距的努力包括通过手势重定向学习人类到机器人的动作映射 [38-Videodex: Learning dexterity from internet videos, 28-Dexmv: Imitation learning for dexterous manipulation from human videos] ,或提取与体现无关的关键点 [即embodiment-agnostic keypoint,49] 尽管有这些尝试,固有的embodiment差异仍然使得从人类视频到物理机器人的策略转移变得复杂 第三,这一领域的工作中,由embodiment差距引起的固有观察差距在训练/推理时间观察数据之间引入了不可避免的不匹配,尽管在对齐演示观察与机器人观察方面做出了努力 [20, 28],但仍加剧了所产生策略的可转移性
  3. 用于准静态操作的手持夹持器(Hand-Held Grippers for Quasi-static Action) 手持夹持器 [41- Grasping in the wild: Learning 6dof closedloop grasping from low-cost demonstrations, 50, 10, 32, 27, 25] 在操作数据收集中最小化了观察体现差距,提供了便携性和直观界面,从而在野外高效收集数据 然而,从这些设备中准确且稳健地提取六自由度 (6DoF) 末端执行器 (EE) 姿态仍然具有挑战性,阻碍了从这些数据中学习到的机器人策略在细粒度操作任务中的部署

24年2.19,斯坦福和哥伦比亚大学、丰田研究所的研究者(Cheng Chi, Zhenjia Xu, Chuer Pan, Eric Cousineau, Benjamin Burchfiel, Siyuan Feng, Russ Tedrake, Shuran Song等8人)发布了一个通用操控界面UMI,借助这个UMI,可以自由的完成刷盘等各种任务

其主要特点有

  1. UMI本质是一个用于数据收集和策略学习的框架,其使用手持夹持器可以简单快速且低成本的收集一系列训练机器人的数据
  2. 且其更考虑了三方面的延迟:机器人观察环境存在延迟(传感器导致)、拿到环境数据后做推理有延迟、推理完成到做出动作亦有延迟
  3. 使用鱼眼镜头感知环境,且通过改造SLAM与GoPro内置的IMU传感器结合使用,并在夹持器上的两端各自添加一面镜子,以提供立体观察 如下图所示,从左到右分别表示人类做示范的手持夹持器观测空间机器人设置,其中①是一个相机④是“相机① ”中自带的IMU感知姿态跟踪器②是带有广角视野的鱼眼镜头,③是两个侧面镜用于提供立体视觉,⑤是对夹持器的跟踪⑥是基于运动学的数据过滤 这六个部分的细节很快将在下文逐一阐述
  4. 使用扩散策略进行动作预测,当然,也可以换成 扩散策略的更多细节在本文第三部分进行阐述

1.2.1 GoPro摄像头、鱼眼镜头(扩大视野)、侧面镜(深度信息)、IMU感知跟踪(捕捉精确动作)

首先在手腕上安装一个GoPro摄像头作为输入观察,此外,无需任何外部摄像头设置。之后在机器人上部署UMI时,将GoPro相机放置在与手持夹持器上相对应的3D打印手指的同一位置

其次,如下图所示,如果将一个大的155°视场图像矫正为针孔模型会严重拉伸外围视野(蓝线外),同时将中心最重要的信息压缩到一个小区域(红线内),故UMI策略使用原始鱼眼图像作为观测

接着,为看弥补单目相机视野中缺乏深度感知的问题,在相机的左右两端分别放置了一块镜子,如下图所示,UMI侧面镜,从而使得超广角相机与位置合理的镜子相结合,实现了隐式立体深度估计

  • (a):每个镜子的视角有效地创建了两个虚拟相机,其姿态相对于主相机沿镜子平面反射
  • (b):盘子上的番茄酱在主相机视野中被遮挡,但在右侧镜子内可见,证明镜子模拟具有不同光学中心的相机
  • (c):对镜子内的内容进行数字反射以进行策略观察。 请注意,在反射后,杯子把手的方向在所有3个视图中保持一致

最后,UMI通过利用GoPro内置的IMU传感器来记录IMU数据(加速度计和陀螺仪)到标准的mp4视频文件中(UMI captures rapid move-ments with absolute scale by leveraging GoPro’s built-incapability to record IMU data (accelerometer and gyroscope) into standard mp4 video files)

且通过联合优化视觉跟踪和惯性姿态约束,基于OBR-SLAM3的惯性单目SLAM系统(By jointly optimizing visual tracking and inertial pose constraints, our Inertial-monocular SLAM system based on OBR-SLAM3 [7——Orb-slam3: An accurate open-source library for visual, visual–inertial, and multimap slam]),即使在由于运动模糊或缺乏视觉特征,导致视觉跟踪失败(例如俯视桌子)的情况下,仍能维持一段时间的跟踪

一开始,他们发现OBR-SLAM3 [7]的原始单目惯性SLAM系统不适用于他们的应用。特别是,ORB-SLAM3有一个初始化过程,其中前几个地图点和关键帧以及IMU校准参数是通 过启发式方法计算的

他们发现这个初始化过程在快速运动下特别脆弱且耗时,在此期间无法估计相机姿态,导致大量数据浪费


为了解决这个问题,他们实现了两个功能:地图初始化和标记增强初始化

  1. 地图初始化 原始的ORB-SLAM3有一个定位模式,可以定位到现有地图而不以任何方式更改地图,包括创建更多地图点或执行任何全局优化,且发现现有的定位模式在UMI操作动态改变场景时不够稳健 为了解决这个问题,他们修改了ORB-SLAM3,使其在重新定位到从磁盘加载的现有地图后继续正常的SLAM操作,有效地将现有地图仅用作优化的初始值
  2. 标记增强初始化(Marker-enhanced initialization) 由于单目SLAM公式的固有模糊性,ORB-SLAM3的现有初始化在特征点距离较远(户外环境)或特征点匹配错误较多(repeated patterns, trees等)时表现不佳 他们修改了ORB-SLAM3,使其可以选择利用已知尺寸的基准标记[16]来消除特征匹配中可能出现的歧义「We modified ORB-SLAM3 to optionally take advantage of fiducial markers [16] with known sizes to disambiguate possible explanations of feature matches,且发现该特性显著提升了实际环境中建图的鲁棒性 当然,请注意,演示视频中不会包含这些基准标记,它们仅用于映射

1.2.2 连续夹持器控制与基于运动学的数据过滤

与之前的机器人一般使用的二进制开合动作(要么抓住、要么放开),但如果连续指定夹持器的夹持宽度则可以执行更多任务,比如投掷一个球时,需要在一个准确的时刻来扔掉物体

由于物体具有不同的宽度,二进制夹持器的动作很难满足精度要求。 在 UMI 夹爪上,指宽通过标记物进行连续跟踪。利用串联弹性末端执行器原理 [42],UMI 可以通过连续控制夹爪宽度来调节软指的变形,从而隐式地记录和控制抓取力(On UMI gripper, finger width is continuously tracked via fiducial markers [16] (Fig. 2 left). Using series-elastic end effectors principle [42], UMI can implicitly record and control grasp forces by regulating the deformation of soft fingers through continuous gripper width control)

此外,虽然数据收集过程与机器人本身无关,故可以应用简单的基于运动学的数据过滤来选择不同机器人embodiments的有效轨迹,具体而言

  1. 当知道机器人基座位置和它的运动学特性时,使用SLAM技术得到终端执行器(如机器人手臂的末端)的精确位置信息,可以允许对演示数据进行运动学和动力学的可行性过滤
  2. 通过在这些经过筛选的数据集上进行训练,可以确保机器人的行为策略不仅是可行的,而且符合其结构的特定运动限制(when the robot’s base location and kinematics are known, the absolute end-effector pose recovered by SLAM allows kinematics and dynamics feasibility filtering on the demonstration data. Training on the filtered dataset ensures policies comply with embodiment-specific kinematic constraint)

最终,UMI夹持器重量为780g,外部尺寸为 L310mm × W 175mm ×H210mm,手指行程为80mm

3D打印的夹持器的BoM成本为 $73,而GoPro相机及配件的总成本为 $298


说白了,不含「计算电脑和那两UR5机械臂」的仅用于数据收集的硬件成本为400刀,当然 好的机械臂才贵

1.3.1 三种延迟:观察延迟、策略推理延迟、执行延迟

正如人在路上开车一样

  • 从开始观察到真正感知到环境时 有观测反应时间,即观测延迟
  • 而感知到环境做决策时,则有决策时的反应时间,即推理延迟
  • 最后,决策好之后 做出行动 也会有一个执行时间,即执行延迟

机器人在实际操控当中,也是类似的,也会一一存在

  • 观察延迟(observation latency)
  • 策略推断延迟(policy inference latency)
  • 执行延迟(execution latency) ,且简单地丢弃过时的动作,只执行每个硬件在之后具有所需时间戳的动作

下图表示的是UMI 策略接口设计

  • (b) UMI 策略接收一系列同步观察结果(RGB 图像、6自由度末端执行器姿态、和夹持器宽度),并输出一系列期望的末端执行器姿态和夹持器宽度作为动作 相当于先感知环境,然后做出动作预测
  • (a)  同步不同的观察流,以弥补物理测量的延迟
  • (c)  提前发送动作命令以补偿机器人的执行延迟

为方便大家理解,把上图中的英文描述翻译如下

1.3.2 延迟测量之相机延迟、本体感觉延迟、夹持器执行延迟、机器人执行延迟

准确校准机器人系统中各种延迟对于部署UMI策略至关重要, 特别是对于需要快速和动态动作的任务

1.3.2.1 相机延迟测量

为了在 UR5 和 Franka FR2 平台上进行策略观察,他们在每个机器人手臂上安装了一个腕部安装的 GoPro Hero 9 相机

  1. 为了从 GoPro 获取实时视频流,使用了 GoPro Media Mod 1.0(将 USB-C 转换为 HDMI)和 Elgato HD60X 外部采集卡(将 HDMI 转换为 USB-3.0 UVC 接口)的组合
  2. 为了测量相机管道的端到端延迟,用 GoPro 相机记录计算机显示器上滚动的二维码,该二维码显示每个视频帧的当前系统时间戳 ,如下图所示
  3. 为了防止通过相机流叠加多次检测二维码,在相机回放中屏蔽了二维码,如上图的显示器左侧所示

最终,通过减去每帧的接收时间戳和解码的二维码时间戳,并减去已知的显示刷新延迟,便可以获得相机系统的端到端延迟「By subtracting the receiving timestamp for each frame trecv and the decoded QR code timestamp tdisplay, and subtracting the known latency of display refresh ldisplay, we can obtain the end-to-end latency of camera system

在双手操作确认中使用 UMI 时,通过扫描智能手机上的滚动二维码来同步两个GoPro 相机的内部时钟


“GoPro Labs”实验固件识别编码在二维码中的全球时间戳,并以秒的精度校准其内部时钟。对于单臂任务,可以跳过此步骤

1.3.2.2 本体感觉延迟测量

当机器人硬件直接报告全局时间戳时,例如Franka FR2机器人,通过从策略接收时间戳  减去机器人发送时间戳,来测量本体感觉延迟

当机器人硬件时间戳不可用时,例如UR5机器人和Schunk WSG-50夹持器,他们用ICMP往返时间(即ping)的来近似本体感觉延迟「we approximat the proprioception latency with 1/2 of ICMP round-trip time(i.e. ping)

1.3.2.3 夹持器执行延迟测量

为了获得夹持器执行延迟,他们通过本体感觉延迟减去端到端延迟

为了测量,他们向夹持器发送一系列正弦位置命令,然后记录一系列夹持器宽度预感。通过交叉卷积计算所需夹持器宽度信号与实际接收的夹持器宽度信号之间的最佳对齐,可以获得

1.3.2.4 机器人执行延迟测量

类似于夹持器,他们还通过计算来测量机器人(UR5或Franka)的执行延迟,作为一系列期望末端执行器姿态与实际测量末端执行器姿态之间的最佳对齐

出于安全考虑,他们直接远程操作机器人以生成期望的末端执行器姿态序列

1.4.1 刷盘任务的拆解

任务机器人需要执行7个步骤顺序地独立动作(打开水龙头、抓住盘子、拿起海绵、洗涤并擦拭盘子直到番茄酱被清除、放置盘子、放置海绵并关闭水龙头,如下图所示

能力这项任务从几个方面推动了机器人操纵能力的边界

  1. 这是一个超长视野任务,每个步骤的成功都依赖于前一个步骤
  2. 机器人需要感知和操纵复杂的流体,包括牛顿流体(即,水)和非牛顿流体(即,番茄酱)
  3. 擦拭动-作需要使用一个可变形工具(即,海绵)同时协调双臂相对于水流
  4. 操纵受限关节物体(即,打开和关闭水龙头)需要由软指提供的机械顺应性
  5. 策略也需要对“清洁度”的概念语义上的鲁棒性。当在洗涤过程中或即使洗涤阶段完成后添加了额外的番茄酱时,机器人需要继续洗涤和擦拭

1.4.2 微调一个CLIP预训练的ViT-B/16视觉编码器来训练扩散策略

对于这项任务,UMI通过微调一个CLIP 预训练的ViT-B/16视觉编码器来训练扩散策略,并在微调过程中实施了较低的学习率,设置为原来的 1/10

看到这句话时,我的第一反应是这个视觉编码器和DALLE 2在CLIP阶段所用的视觉编码器是一个意思,即下图右上角的img encoder(来自此文:从CLIP到DALLE1/2、DALLE 3、Stable Diffusion、SDXL Turbo、LCM )

总的来说,UMI达到了14/20 =70%的成功率。 此外,他们还展示了他们的策略对各种干扰物、酱料类型(芥末、巧克力糖浆、焦糖糖浆)以及对扰动的鲁棒性

没有CLIP预训练的ViT视觉编码器比如从头训练ResNet-34 [17]则任务完成度不行,比如带有ResNet-34的基线策略学会了一种非反应性行为,并忽略了任何盘子或海绵位置的变化。 因此,它不能执行任务,0/10 = 0%

  • 3D打印教程 https://youtu.be/EJmAg1Bnp-k
  • 夹持器组装教程:https://youtu.be/x3ko0v_xwpg

Part

Quantity

link

Price 

(per unit)

夹持器Gripper Body

~$62

eSUN PLA PRO Warm White 1kg

0.5

https://amazon.com

$24.99

MGN9C 150mm Linear Rail

2

https://amazon.com

$17.89

M3 Screws and Nuts

14x M3x8mm

2x M3x12mm

4x M3x25mm

6x M3x35mm

0.5

https://amazon.com

$22.99

Compression Spring 

10mm OD 

0.7mm Wire size

50mm Free length

0.2

https://amazon.com

$5.49

M5 Nut

1

Plastic Stick-on Mirror

https//amazon.com

$9.99

Super Lube-21030

https://amazon.com

$10.00

Double-sided Tape

https://amazon.com

$9.99

Printed ArUcO tags (US letter)

https://drive.google.com

Gripper Finger

~$11

Polymaker TPU 95A Orange 750g

0.25

https://amazon.com

$29.99

3M TB641/GM641 

Grip Tape 1 inch wide 1ft

0.07

https://amazon.com

$54.14

GoPro Camera

~$298

GoPro Hero9 

1

https://amazon.com

$209.99

GoPro Max Lens Mod 1.0

https://amazon.com

$69.29

Micro SD Card 

V30 Rated

1

https://amazon.com

$17.99

For all-day operations, consider purchasing 2x more batteries per gripper and one battery charger per gripper.

https://amazon.com

以上总费用(美元:$399.41,相当于400刀 总费用(人民币:¥2875.72

  • UMI Gripper:Onshape
  • Soft Finger:Onshape
  • wsg50-UR5 mount:Onshape
  • wsg50-Franka mount:Onshape

Checkout our CURA 3mf examples for more detailed parameters:

https://drive.google.com/drive/folders/15vFeCd-fEt-NOYkRXebhpDGm5D2zX3MM?usp=sharing

Common Print Parameters (PLA+):

Nozzle diameter: 0.6mm

Layer height: 0.3mm

Wall thickness: 1.2mm

Top-bottom thickness: 1.2mm

Infill: 20% Gyroid

Temperature: 190C for eSun PLA+

Finger Print Parameters (TPU):

Nozzle diameter: 0.6mm

Layer height: 0.3mm

Infill: 100% lines

Temperature: 255C for polymaker TPU 95A

Part specific print parameters:

Part

Infill %

Support?

Wall mm

Top-bottom mm

Print 1: gripper_covers

bottom_plate

top_plate

Print 2: gripper_internals

grip

100

1.8

handle

Cube

finger_holder_left/right

Yes

gear_left/right

linkage_left/right

2.4

1.8

Print 3: gripper_fingers

finger

100

Reference for the position and orientation of ArUcO tags. Please note that left and right grippers have different tags! The ArUcO tags on the large cube are currently unused by the algorithm therefore completely optional.

Tag PDF for printing:

https://drive.google.com/drive/folders/1pCiuABTyev7k4EWJ3LQ-zKz3ZHjzeIDF?usp=sharing

Bill of Materials (per-arm)

Part

Quantity

link

Price 

(per unit)

Robot

UR5e or UR5-CB3 robot

(with power and ethernet cable)

1

UR5e Lightweight, versatile cobot

By Quote

Weiss WSG-50 gripper

(with power and ethernet cable, no fingers)

1

WSG Series - WSG Series | WEISS ROBOTICS

€ 3875 

Camera System

~$546.58

GoPro Hero9 

1

https://amazon.com

$209.99

GoPro Max Lens Mod 1.0

https://amazon.com

$69.29

GoPro Media Mod 

1

https://amazon.com

$79.99

Elgato HD60 X Capture Card

1

https://amazon.com

$147.34

Micro HDMI to HDMI cable 15 ft

1

https://amazon.com

$12.99

USB-C to USB-A cable 10ft

2

https://amazon.com

$13.49

以上的总费用为$546.58(¥3935) +  两个Weiss WSG-50€ 3875 x 2(差不多¥6万) UR5e机器人(2台大概¥40万-50万之间) = 差不多46-56万

如我组建的mobile aloha复现团队里的邓老师所说,mobile aloha也用了 diffusion,不过是作为对比实验的打击对象来用的

下面,我们便根据Columbia University、Toyota Research Institute、MIT的研究者(Cheng Chi, Siyuan Feng, Yilun Du, Zhenjia Xu, Eric Cousineau, Benjamin Burchfiel, Shuran Song等人,标粗的表示同时也是UMI的作者),于2023年5月联合发布的《Diffusion Policy:Visuomotor Policy Learning via Action Diffusion》这篇论文详细解读下Diffusion Policy

3.1.1 什么是扩散策略

所谓扩散策略,是指将机器人的视觉运动策略表示为条件去噪扩散过程来生成机器人行为的新方法,如下图所示

  • a)具有不同类型动作表示的显式策略(Explicit policy with different types of action representations)
  • b)隐式策略学习以动作和观察为条件的能量函数,并优化能够最小化能量景观的动作Implicit policy learns an energy function conditioned on both action and observation and optimizes for actions that minimize the energy landscape
  • c)通过“条件去噪扩散过程在机器人行动空间上生成行为”,即该扩散策略策略不直接输出一个动作,而是推断出「基于视觉观察的动作-评分梯度,进行K次去噪迭代instead of directly outputting an action, the policy infers the action-score gradient, conditioned on visual observations, for K denoising iterations

3.1.2 扩散策略的优势:表达多模态动作分布、高维输出空间、稳定训练

扩散策略有以下几个关键特性

  • 可以表达多模态动作分布 通过学习动作评分函数的梯度(Song和Ermon,2019,并在此梯度场上执行随机朗之万动力学采样扩散策略可以表达任意可归一化的分布(Neal等,2011,其中包括多模态动作分布By learning the gradient of the action score function Song and Ermon (2019) and performing Stochastic Langevin Dynamics sampling on this gradient field,Diffusion policy can express arbitrary normalizabledistributions Neal et al. (2011), which includes mul-timodal action distribution
  • 高维输出空间 正如其令人印象深刻的图像生成结果所示,扩散模型在高维输出空间中表现出了极好的可扩展性。这一特性使得策略能够联合推断一系列未来动作,而不是单步动作,这对于鼓励时间上的动作一致性和避免比较短浅的规划至关重要
  • 稳定训练 训练基于能量的策略通常需要负采样来估计难以处理的归一化常数,这已知会导致训练不稳定(Du et al., 2020;Florence et al., 2021) 扩散策略通过学习能量函数的梯度绕过了这一要求,从而在保持分布表达能力的同时实现了稳定训练
  1. 之前输出的是图像,现在需要输出:为机器人的动作(changing the output x to represent robot actions)
  2. 去噪时所依据的去噪条件为输入观测 (making the denoising processes conditioned on input observation Ot)

3.3.1 噪声估计网络架构的选型:基于CNN还是基于transformer

3.3.1.1 CNN-based Diffusion Policy

在实践中发现,基于CNN的骨干网络在大多数任务上表现良好且无需过多超参数调优。然而,当期望的动作序列随着时间快速而急剧变化时(如velocity命令动作空间),它的表现很差,可能是由于时间卷积的归纳偏差[temporal convolutions to prefer lowfrequency signals],以更倾向低频信号所致

3.1.1.2 Time-series diffusion transformer
  1. 建议从基于CNN的扩散策略实施开始,作为新任务的第一次尝试In general, we recommend starting with the CNN-based diffusion policy implementation as the first attempt at a new task
  2. 如果由于任务复杂性或高速率动作变化导致性能低下,那么可以使用时间序列扩散Transformer来潜在地提高性能,但代价是额外的调优If performance is low due to task complexity or high-rate action changes, then the Time-series Diffusion Transformer formulation can be used to potentially improve performance at the cost of additional tuning

3.3.2 视觉编码器:把图像潜在嵌入化并通过扩散策略做端到端的训练

  1. 使用空间softmax池化替代掉全局平均池化,以维护空间信息1) Replace the global average pooling with a spatial softmax pooling to maintain spatial information[29]
  2. 采用GroupNorm代替BatchNorm来实现稳定训练,这个修改对于把归一化层与指数移动平均一起使用时(通常应用于DDPM)很有必要2) Replace BatchNorm with GroupNorm [57] for stabletraining. This is important when the normalization layer isused in conjunction with Exponential Moving Average [17](commonly used in DDPMs)

3.4.1 动作序列预测的好处

由于高维输出空间采样困难,在大多数策略学习方法中一般不做序列预测。例如,IBC将难以有效地采样具有非光滑能量景观的高维动作空间。类似地,BC-RNN和BET难以确定动作分布中存在的模式数量(需要GMM或k-means步骤)

相比之下,DDPM在不降低模型表现力的前提下,在输出维度增加时仍然保持良好扩展性,在许多图像生成应用中已得到证明。利用这种能力,扩散策略以高维动作序列的形式表示动作,它自然地解决了以下问题

  • 时间动作一致性,如下图所示,为了将T块从底部推入目标,策略可以从左或右绕T块走 然而,如果序列中的每个动作被预测为独立的多模态分布(如在BC-RNN和BET中所做的那样)。连续动作可能会从不同模式中提取出来,并导致两个有效轨迹之间交替出现抖动动作However, suppose each action in the sequence is predicted as independent multimodal distributions (as done in BCRNN and BET). In that case, consecutive actions could be drawn from different modes, resulting in jittery actions that alternate between the two valid trajectories.
  • 对于空闲动作的鲁棒性:当演示暂停并导致相同位置或接近零速度的连续动作序列时,则会发生空闲行为。这在远程操作等任务中很常见 然而,单步策略容易过度适应这种暂停行为。例如,在实际世界实验中使用BC-RNN和IBC时经常会卡住,未删除训练数据集中包含的空闲行为(BC-RNN andIBC often get stuck in real-world experiments when the idleactions are not explicitly removed from training)

// 待更

3.4.2 扩散模型在训练中的稳定

隐式策略使用基于能量的模型(EBM)表示动作分布(An implicit policy represents the action distribution using an Energy-based Model (EBM)),如下公式6所示

为了训练用于隐式策略的EBM,使用了infonce风格的损失函数,它相当于公式6的负对数似然

在实践中,负采样的不准确性会导致EBMs的训练不稳定[11,48]

// 待更

注意,以下解读基本来自我司大模型项目组的远根同学,之所以分享其中的部分出来,是想招纳可以针对UMI共同做二次开发的朋友,如有意敬请私我

数据集包含以下三个部分

4.3.1 一个夹爪校准视频

GX010214.mp4

4.3.2 几个收集的任务演示数据视频

GX010215.mp4 

GX010232.mp4 

GX010234.mp4 

GX010236.mp4 

GX010238.mp4 

4.3.3 一个SLAM地图视频

mapping.mp4

整个pipeline用于提取收集到的gopro数据,进行数据处理。

最终目的:使用GoPro数据恢复机器人动作。

具体分为以下步骤

4.2.0 00_process_videos.py

上一个下载的所有示例数据,把目录结构进行整理。

每个视频都要单独处理,用ExifTool 工具包,提取每个视频的相机序列号+拍摄时间,作为文件夹的名称,每个视频放入各自的文件夹内

4.2.1 01_extract_gopro_imu.py:提取gopro惯性测量单元数据(imu)

这步用于提取gopro惯性测量单元数据(imu),提取方式是拉的docker镜像,直接使用的外部仓库:GitHub - urbste/OpenImuCameraCalibrator: Camera calibration tool

且是C++写的,直接看提取结果,保存在imu_data.json文件中,总共提取了6种数据:GoPro Tags,这六种数据分别如下所示

4.2.1.1 ACCL (Accelerometer)加速度计

加速度计测量物体在三个方向上的加速度,通常分别是 X 轴、Y 轴和 Z 轴。这些数据用于检测物体的运动和方向变化,共有四个值

  • value:代表了三个轴的加速度值:x 轴、y 轴和 z 轴。单位:m/s2
  • cts: 采样的时间戳,可能表示这个数据点是在第x个采样时钟周期中采集的
  • data: 采样的日期和时间
  • temperature: 采样的温度
 
4.2.1.2 GYRO (Gyroscope)陀螺仪

 陀螺仪测量物体在三个方向上的角速度,即物体围绕每个轴旋转的速度。陀螺仪用于确定物体的姿态和运动状态,对于检测旋转和倾斜非常有效。

  • value:代表了三个轴的角速度:x 轴、y 轴和 z 轴,单位:rad/s
  • cts: 采样的时间戳
  • data: 采样的日期和时间
  • temperature: 采样的温度
 
4.2.1.3 GPS5 (Global Positioning System)全球定位系统

GPS 传感器提供位置数据,包括经度、纬度、高度以及速度。GPS 数据用于定位和导航

// 待更

4.2.1.4 CORI( Camera Orientation)相机姿态

通常用于图像处理和计算机视觉领域,用于描述图像在三维空间中的方向和位置。

  • value:代表了三个轴的加速度值:x 轴、y 轴和 z 轴。
  • cts: 采样的时间戳
  • data: 采样的日期和时间
  • temperature: 采样的温度
 
4.2.1.5 IORI(Image Orientation)图像姿态

// 待更

4.2.1.6 GRAV (Gravity Vector)重力向量

// 待更

4.2.2 02_create_map.py

处理mapping地图视频数据,并生成地图。主要是用Docker来运行外部库ORB_SLAM3(Simultaneous Localization and Mapping,即同时定位与地图构建)系统

输入:上文《4.2.1 01_extract_gopro_imu.py:提取gopro惯性测量单元数据(imu)》中的的imu_data.json 和 原MP4视频

输出

  1. mapping_camera_trajectory.csv 这是SLAM系统生成的相机轨迹文件,通常包含了相机在空间中的位置和方向信息 1) frame_idx:帧索引,表示该帧在视频中的顺序编号 2) timestamp: 时间戳,表示该帧的拍摄时间,通常是以秒或毫秒为单位 3) state:状态字段,通常用于表示SLAM系统的当前状态,例如是否初始化、是否丢失、是否关键帧等 4) is_lost:是否丢失标志,表示该帧是否丢失或无法追踪 5) is_keyframe:是否关键帧标志,表示该帧是否被选为关键帧,关键帧是SLAM中用于地图构建的重要帧 6) x、y、z:相机在三维空间中的平移坐标 7) q_x、q_y、q_z、q_w:相机姿态的四元数表示,用于描述相机的旋转。其中, q_x、q_y、q_z 分别表示轴向量的xyz分量,q_w 是四元数的第一个元素,表示旋转的轴向量
  2. map_atlas.osa 这个文检是个二进制文件,无法打开,一般是map_atlas.osa 文件是一个专用的 ORB_SLAM3 地图文件格式,它不是公开的标准格式,所以没有具体的公开文档说明其内部结构。 ORB_SLAM3 是用c++写的,所以,要看懂,需要掌握slam和c++编程。 不过,通常这类 SLAM系统的地图文件会包含以下类型的数据: a) 关键帧数据:关键帧是 SLAM 系统中用于定位和地图构建的参考框架。它们通常包含了位置、姿态信息以及与之相关的地图点的标识符。 b) 地图点数据:地图点是 SLAM 系统中在环境中固定的特征点,如角点或边缘。它们在多个关键帧中被观测和记录,以帮助建立一个连续的位置估计。 c) 连接关系:关键帧之间的连接关系表示了时间上的连续性,这对于递归定位和构建地图至关重要。 d) 其他参数和信息:这可能包括与特定地图创建过程相关的参数,如滤波器的配置、重定位参数等

4.2.3 03_batch_slam.py

这个和上一步一样,上一步是mapping地图视频生成的轨迹信息,这步是批量生成任务演示数据的轨迹信息

  • 输入:原始mp4视频、上一步生成的map_atlas.osa、imu_data.json
  • 输出:相机轨迹信息camera_trajectory.csv

和mapping_camera_trajectory.csv一样的内容

注意:生成轨迹不包括夹爪校准视频,也不生成map_atlas.osa

4.2.4 04_detect_aruco.py

4.2.5 05_run_calibrations.py

4.2.5.1 SLAM标签校准
4.2.5.2 夹爪范围的校准

4.2.6 06_generate_dataset_plan.py

4.2.6.1 相机坐标系到夹爪尖坐标系的转换
4.2.6.2 加载机器人夹爪的校准数据
4.2.6.3 提取每个视频的元数据
4.2.6.4 视频文件进行分组
4.2.6.5 识别每个视频中的夹爪硬件ID
4.2.6.6 确定每个摄像头在演示中的左右位置
4.2.6.7 准备模型训练的数据集

4.3.1 数据存储在ReplayBuffer对象中

4.3.2 视频帧处理

4.3.2.1 转为RGB
4.3.2.2 标记检测
4.3.2.3 遮罩
4.3.2.4 鱼眼镜头
4.3.2.5 镜像处理
4.3.2.6 压缩图像

4.3.3 最终数据结构

4.4.1 入口 train.py

 

--config-name是 Hydra 模块专用的,用于指定要使用的配置文件的基本名称。

task.dataset_path 是配置文件中的一个键,配置文件位于diffusion_policy/config/task/umi.yml中

这个配置文件通过--config-name=train_diffusion_unet_timm_umi_workspace.yaml 中继承

 

4.4.2 Model模型架构

作者做了很多实验,配置文件可以配置不同的模型,当前使用CLIP预训练的ViT-B/16视觉编码器来训练扩散策略

使用:vit_base_patch16_clip_224.openai(视觉编码器+ ConditionalUnet1D(扩散策略

先用vit_base_patch16_clip_224.openai(视觉编码器)编码特征,在用这些特征给到ConditionalUnet1D(扩散策略)模型生成预测的动作

4.4.3 Dataset 训练集格式

4.4.3.1 先采样动作数据
4.4.3.2 再转换为适合神经网络输入的格式

4.4.4 Batch数据格式

4.4.5 输出

4.5.1 UR5机械臂和电脑的通讯方式

4.5.2 WSG50 夹具和电脑的通讯方式

4.5.3 ABB机械臂和电脑的通讯方式

4.5.4 其他国产替代夹具的通讯方式

4.5.5 改造代码

    以上就是本篇文章【UMI——斯坦福刷盘机器人:从手持夹持器到动作预测Diffusion Policy(含代码解读)】的全部内容了,欢迎阅览 ! 文章地址:http://sicmodule.glev.cn/quote/732.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 歌乐夫资讯移动站 http://sicmodule.glev.cn/mobile/ , 查看更多