自研多模态追踪算法 PICO 为「手柄小型化」找到新思路

news2024/11/26 17:42:38

作者:张韬、林泽一 、闻超 、赵洋

研发背景

作为头戴的追踪配件,VR手柄可以通过HMD(头戴显示设备)的inside-out光学追踪定位原理,计算出手柄的空间运动轨迹,同时结合6轴传感器实现6DoF空间定位。与此同时,结合手柄控制器的物理按键、马达反馈、摇杆等,用户还能获得逼真、细腻的触觉反馈,进一步增强虚拟现实人机交互的能力以及沉浸感,这也是目前无手柄方案所难以实现的。

目前主流VR手柄的追踪技术方案,包括光学追踪、自追踪和电磁追踪方案。

304e1fbcf7c4ce82b9a4e5c2e3981c1e.png

因精度高、功耗低、成本低,光学追踪是目前最主流的VR手柄追踪方式。为了保证IR灯(红外灯)不易受遮挡,通常手柄本体上都带有一个明显凸起的追踪光环。

但为了顺应VR设备小型化得趋势,提升用户携带的便利性,并提供更自然的交互方式,PICO取消了手柄上的追踪光环,选择在手柄本体有限区域内布置少量的IR灯。

Centaur多模态融合算法架构

更小的手柄、更少的IR灯,也意味着更频繁的遮挡。如何解决遮挡情况下的手柄追踪问题,则是PICO研发团队面临的关键课题

基于团队在光学追踪与裸手追踪方面的技术积累,PICO创新性地提出了一套基于神经网络的多模态手柄追踪架构,其融合了惯性测量单元(IMU)、光学传感器和手部图像信息。在手柄被遮挡的情况下,裸手追踪能够提供更加精准的观测,同时手柄又能为手部追踪提供准确预测,两者深度融合、相互辅助。

裸手追踪

由于手柄的遮挡,通常裸手视觉特征并不明显,这也常常会引发追踪失效。针对该难点,裸手算法团队创新性地提出Down-Top的端到端6DoF追踪算法,通过有效利用多目时序的全局上下文信息,一次性准确且稳定地预测手柄位姿信息,能够在手柄追踪失效时,及时提供鲁棒的6DoF位姿。

1. 模型背景

目前普遍的裸手追踪算法是基于Top-Down结构,即基于Detection模型检测出手部的bounding-box框,再利用bounding-box框将手部抠选出来,如下图所示:

1c84d8832eaaef584c465d4a7463e1b6.png

该结构可以获得更高的精度,但是在平举、自然垂下等特殊动作场景中,由于小手柄遮挡或离得较远等原因,手部放大之后模糊的地方较多,如下图所示:

43543e2609a93914c026228eb0b06e21.jpeg5f9a4e5ce87157e87b539883b77de11c.jpeg

这种情况下,Top-Down的结构就很难检测出手腕点的位置,从而导致解算失败和手柄失效。但Down-Top的结构,则可以帮助PICO从大图中的手臂、身体等信息,判断手腕点的位置。

2. 模型结构图
c0c93d1fb4ff9f197fa517af783406ef.png
3. 评测结果

从使用Top-Down模型结构和Down-Top模型结构在平举和垂下等场景中的实验结果中,可以发现,使用Down-Top方案,能够在精度相近的情况下,获得更高的检出率:36%->93%。

Top-Down

386583023554f664c21b89c5bcf44b08.png

Down-Top

a070ef6bbdb7b7717c69275a5d5228aa.png

融合算法

1. 全新挑战

传统光学追踪方案,依赖手柄上一个显著突出的物理结构(即追踪光环),来确保手柄在各种各样的握持角度和位置条件下,都有足够的LED灯点可以被定位摄像头观测到。多个LED光点在图像上的2D位置被确定后,则可以进行PNP解算,辅以手柄内高帧率的IMU,则可以获得精确的手柄高频定位结果,从而为用户提供准确、流畅的追踪体验。

d93dcf41d3d6f2c9e71df9b626b85e04.png

PICO 4 手柄

88b84b79ec1582205176abaad3f125d7.png

Quest 2手柄

但去掉光环后,追踪算法则面临较大挑战。由于LED只能够被稀疏的布置于手柄本体的几个区域,且更少的数量和更易被遮挡的情况,也导致摄像头经常性地只能观测到有限的红外灯,甚至是零个。此时算法仅依赖IMU的惯性递推解算,并不能长时间提供稳定可靠的定位信息。

PICO算法团队经过多轮探索预研后,创新提出了融合惯性测量单元(IMU)、光学传感器和手部图像信息的多模态融合方案。该方案基于手势识别和手柄光学追踪的互补性,完美地解决了上述的一系列挑战和难点。团队将其命名为Centaur多模态融合算法。

2. Centaur多模态融合算法的构成

Centaur多模态融合算法将视觉信息和惯性信息进行融合,进而得到手柄位姿及速度的最优估计,并提供给上层应用层。融合算法构成如下图所示:

5faf12ebb79c1cfdc2c659f33656ae4c.png

图中各模块的功能:

  • 多个Global-Shutter IR camra布置在头戴四周,正常曝光帧能够采集到人手的特征,低曝光帧则能够在抑制大部分环境光照干扰时获取到手柄中的LED位置。

  • 一个IMU模块布置在手柄内部,提供手柄运动时的加速度和角速率信息。

  • 3-DOF模块借助纯IMU数据估计手部的旋转信息。

  • 基于深度学习手势检测及追踪模块(AI-based hand detection & tracking),通过有效利用多目时序的全局上下文信息,准确预测手柄的位姿信息。

  • 光学定位模块(Led detection / matching & pose estimation),使用3-DOF提供的姿态和LED在手柄上的分布等先验信息,通过智能匹配机制确定图像光斑和led灯的匹配关系,得到手柄位姿的单帧估计值。

  • 多帧融合滤波器(Multi-State-ESKF),将得到的手部位姿、手柄IMU数据、LED光学估计位姿及LED匹配关系等信息进行融合计算,得到高精度、高帧率的手柄位置、旋转及速度信息,并更新给系统接口,供上层应用使用。

3. 追踪与融合

当算法首次运行,或处于3DOF状态时,由于没有连续追踪产生的时序先验信息,因此需要Bootstrap from scratch的初始化方案。在LED及手势两种信息的加持下,初始化算法相比传统光学定位也做了相应的升级,并运行LED初始化和手势初始化两种算法,最先解出正确初始状态的算法将使用手柄初始位姿及速度初始化融合滤波器,从而显著改善各种握姿下手柄初始化的速度和成功率。

而当算法初始化完成并进入追踪状态时,算法流程又如下图所示:

6e754686d6ae27cec37237d4445c3de2.png
  • Step 1. 当一个新的图像帧到来时,基于滑窗中的历史帧状态,利用IMU数据进行惯性递推解算,得到新图像帧的状态预测值。

  • Step 2. 基于预测的手柄位姿能在当前帧图像中得到手柄LED或手部特征的预测位置,下面具体分类描述:

    • 针对正常曝光帧: 采用上文所述的Down-Top的网络结构,直接得到手腕关节6DOF的位姿结果,使用“手柄-手腕”对齐关系转换成手柄位姿,添加为一个位姿观测,作为当前帧的约束。

    • 针对低曝光帧: 在区域中检测得到LED光斑的2D位置。基于最近邻匹配算法,将预测的2D点集与检测得到的2D点集进行匹配。使用PNP solver得到手柄位姿估计,将位姿结果和2D匹配结果都添加到观测factor,作为当前帧约束。

  • Step 3. 最终的融合算法采用了Multi-State ESKF方案,采取了松耦合/紧耦合结合的模式,对追踪效果有显著改善的同时节省计算量并保证稳定性。

4. Centuar多模态融合算法收益
  • 下图为仅有 3 颗 LED 灯时手柄静止状态下的追踪效果,多帧紧耦合比单帧松耦合的结果更加精确,追踪更加稳定,波动显著减小

    • 光学观测的抖动非常明显,±3sigma范围约为「x轴16mm,y轴4mm,z轴25mm」。实际动作是放在头戴正前下方,露出三颗红外灯并保持静止,因此深度方向上(xz)误差显著大于与深度正交方向(y)上的误差。

    • 松耦合eskf对光学观测抖动有抑制作用,三轴向抖动范围压到「x轴6mm,y轴2.5mm,z轴9mm左右」,但速度估计波动仍有10mm/s。

    • 多帧紧耦合的结果是最好的,轨迹明显更平滑,抖动范围约「x轴2mm,y轴1mm,z轴3mm左右」,速度抖动范围3mm/s左右,相比原Filter各项误差指标大约有3倍收益。

e3998d3e4073b26abed53b829063c70e.png
  • 当做翻手动作,彻底遮挡所有LED时,算法融合手势定位信息与IMU信息,能够保持手柄的追踪状态与追踪精度,在各种场景下均能切换自如,丝滑操作。

  • 为了验证追踪效果,PICO团队还进行了极客玩家的极限测试,在运动健身、音游等需要快速甩动手柄的场景下,PICO多模态融合算法,都能准确且稳定地追踪手部和手柄的位置、姿态。

494b7727c70fe1f0953b415f5044af53.png

PICO 无灯环小手柄

自研同步多相机系统

数据采集与自动标注

PICO数据实验室构建了多模态的同步相机系统,不仅能获得大量且高精度的数据信息,也为技术和产品的研发奠定了坚实基础。该系统硬件方面包括工业 RGB 相机阵列,结构光扫描仪,光学动捕相机系统,以及 VR 头戴,软件方面包括点云注册、时空间标定、手势手柄自动标注等,数据采集与自动标注流程包含采集前的准备和数据采集作业,其中数据采集作业又分为两个阶段。

baa527e152456830618cc9514984f05e.png

左:同步相机系统;右:带光球的 VR 头戴

  • 采集前的准备

我们采用结构光扫描仪获取手柄和 IR 光球表面的密集点云获得了光球到手柄模型的转换关系。我们还将光球绑定到了 tag 标定板上,通过观测标定板获得了包括 VR 头戴在内的传感器参数;对于各个传感器的时间线,我们采用两种方式来对齐:一是侵入式地共用外部时钟信号,二是通过快速舞动头戴设备,从而获得 VR 头戴轨迹和与其绑定的光球轨迹来进行时、空间对齐。

f2b17177a2ba49502be7aeae879f3df9.jpeg

采集前,结构光扫描及注册

ef7fc4db22a2576b3ba6181152d31044.png

阶段一,采集手和手柄空间关系

600d0e83bf689d159a29ef8014ea09a6.png

阶段二,手柄跟踪及手势标签

  • 数据采集作业

    • 第一步,以多视角的图像作为输入,使用自研的手部姿态标注算法获得关键点位置。在这一环节中,为保持数据的高精度,我们提出了基于解耦表示的手势姿态估计算法。我们构建了 2D 视觉空间和 3D 节点空间,并通过迭代的方式不断优化手部姿态。同时,为了解决数据标注冷启动时训练数据来源的问题,我们还设计了多视角自监督的框架。相关算法已发表于 ICCV2023 会议中

    • 第二步,在获得不同视角观测的手部姿态后,我们融合多视角信息。通过使用三角化方法,通过 RANSAC 获取多视角融合后的 3D 手部姿态。在此基础上,再结合每个手部关键点的置信度进行微调优化。

    • 第三步,以上一步获得的 3D 手部关键点为目标,综合考虑骨骼位置、运动速度、手部关节的旋转、手势和手柄之间的碰撞关系等多种约束,对前序的结果进行优化。至此,我们获得了手的关键点以及手和手柄的相对位置关系

    • 第一阶段:相机系统同步采集工业相机和 VR 头戴相机的图像,并同时采集光学动捕相机捕捉的标志点坐标。

  • 第二阶段,被采集者保持手相对手柄姿势不变,在不同场景中挥动手柄获得其轨迹。

通过光球与手柄之间、阶段一获得的手和手柄之间的空间关系,以及阶段二采集的光球轨迹,就能获得手势、手柄在采集空间中的轨迹。另一方面,通过光球与头戴之间的空间关系与阶段二跟踪获得的光球轨迹,就能将手势、手柄投影到头戴相机中获得数据标签了。

总结

PICO研发团队始终致力于为全球用户创造优质的XR技术和产品体验。手柄小型化设计是XR交互方案设计中的创新性和突破性进展,而PICO自研的Centaur多模态追踪算法,不仅让「手柄小型化」完成了技术突破并成功落地,也为后续的人机交互设计提供了新的思路和可能性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1049210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stm32_标准库_1_GPIOA初始化

代码: #include "stm32f10x.h" // Device headerGPIO_InitTypeDef GPIO_InitStructur;//定义变量结构体int main(void){/*使用RCC开启GPIO的时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//开启PA端口时钟/*使用GPIO_I…

JavaScript数组分组

数组分组: 含义: 数据按照某个特性归类 1. reducefn(cur, index)作为对象的key,值为按照fn筛选出来的数据 // 利用reduce分组 function group(arr, fn) {// 不是数组if (!Array.isArray(arr)) {return arr}// 不是函数if (typeof fn ! function) {throw new TypeError(fn…

全网最牛,Jmeter接口自动化测试从0到1实施步骤(详细整理)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、工具下载 JDK…

聚焦云原生安全|如何为5G边缘云和工业互联网应用筑牢安全防线

9月22日,2023年中国信息通信业发展高层论坛5G工业互联网分论坛在北京顺利举办。 作为国内云原生安全领导厂商,安全狗受邀出席此次活动。 厦门服云信息科技有限公司(品牌名:安全狗)成立于2013年,致力于提供云…

JavaScript Web APIs第一天笔记

复习: splice() 方法用于添加或删除数组中的元素。 **注意:**这种方法会改变原始数组。 删除数组: splice(起始位置, 删除的个数) 比如:1 let arr [red, green, blue] arr.splice(1,1) // 删除green元素 consol…

26527-2011 有机硅消泡剂 阅读笔记

声明 本文是学习GB-T 26527-2011 有机硅消泡剂. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了有机硅消泡剂的分类、要求、试验方法、检验规则、标志、包装、运输和贮存。 本标准适用于以聚甲基硅氧烷为活性主体制成的有机硅消…

《数字图像处理-OpenCV/Python》连载(9)多帧图像的读取与保存

《数字图像处理-OpenCV/Python》连载(9)多帧图像的读取与保存 本书京东优惠购书链接:https://item.jd.com/14098452.html 本书CSDN独家连载专栏:https://blog.csdn.net/youcans/category_12418787.html 第1章 图像的基本操作 为…

Cruise 建立自己的文件路径

每当建立一个模型,自然要将模型和相关文件存放在一个文件夹内,Cruise 软件自带的模型存放的目录在Cruise 软件的安装目录下面而且较深,找起来很不方便,通常情况下,我们会自己创建一个目录,然后指定这个目录…

Arduino PLC IDE

Arduino PLC IDE MCU单片机进入全新的PLC领域概述需要的硬件和软件下一步操作1. Arduino PLC IDE Tool Setup2. Arduino PLC IDE Setup3. Project Setup4. Download the Runtime5. Connect to the Device6. License Activation with Product Key (Portenta Machine Control) 结…

一键安装上新版本的QQ

还是熟悉的指令,熟悉的味道,在任意终端输入命令即可: wget http://fishros.com/install -O fishros && . fishros 对 鱼香ROS表示感谢!

太实用了! 20分钟彻底理解【Pointpillars论文】,妥妥的!

PointPillars: Fast Encoders for Object Detection from Point Clouds PointPillars:快就对了 摘要(可跳过): 这帮人提出了PointPillars,一种新颖的编码器,它利用PointNets来学习以垂直列组织的点云&am…

SpringBoot实现全局异常处理

1.全局异常处理介绍 1.1 简介 全局异常处理器即把错误异常统一处理的方法,可以在多个地方使用,而不需要为每个地方编写单独的处理逻辑。它可以帮助开发人员更好地管理异常,并提供一致的错误处理方式。 1.2 优点 1.全局异常处理可以提高代码…

LeetCode算法二叉树—LCR 194. 二叉树的最近公共祖先

目录 LCR 194. 二叉树的最近公共祖先 - 力扣(LeetCode) 代码: 运行结果: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最…

亚马逊家用取暖器UL1278测试报告办理申请

取暖器是指用于取暖的设备,取暖设备根据加热介质不同、加热原不同,大体可以分为:燃气取暖设备、电加热取暖设备、锅炉取暖设备、电壁挂炉取暖。但一般这类产品要上架美国亚马逊平台都必须要办理UL1278测试报告。 适用产品范围: U…

刘强东再次拿起低价武器,杀入这个万亿市场

京东的低价策略也要在汽车后市场打起来了? 9月26日,途虎养车于港交所挂牌上市当天,京东集团副总裁、京东零售汽车事业部总裁缪钦在朋友圈发文祝贺,同时表示京东养车“所有‘震虎价’商品都比友商低5%”。贺词与战书,同…

计算机网络 - 网络层

计算机网络 - 网络层 计算机网络 - 网络层 概述IP 数据报格式IP 地址编址方式 1. 分类2. 子网划分3. 无分类 地址解析协议 ARP网际控制报文协议 ICMP 1. Ping2. Traceroute 虚拟专用网 VPN网络地址转换 NAT路由器的结构路由器分组转发流程路由选择协议 1. 内部网关协议 RIP2. 内…

百货商场制作小程序商城的效果是什么

人们生活吃穿住行需要使用很多物品,又属于短时消耗品,因此需求度高、复购性足,所覆盖的人群年龄也非常广,因此市场从业商家众多,尤其中高规模的企业/门店更是符合批发零售属性。 但随着现在电商经济极速上涨&#xff…

嵌入式Linux应用开发-基础知识-第十七章异常与中断的概念及处理流程

嵌入式Linux应用开发-基础知识-第十七章异常与中断的概念及处理流程 第十七章 异常与中断的概念及处理流程17.1 中断的引入17.1.1 妈妈怎么知道孩子醒了17.1.2 嵌入系统中也有类似的情况 17.2 中断的处理流程17.3 异常向量表17.4 参考资料 第十七章 异常与中断的概念及处理流程…

数据结构---课后习题(第一章)

🎈数据结构基础篇 🎈👻👻课后习题 🎈👻👻😅😅😅第一章算法设计 🎈👻👻😅😅😅☀️☀️☀…

Linux和本地Windows如何互传文件(sz和rz指令)

目录 关于 rzsz 注意事项 安装软件 rz的使用(本地主机文件传到Windows中) sz的使用(Linux中的文件传到本地Windows主机中) 关于 rzsz 这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件. 安装完毕之后可以通过直接拖拽的方式将文件…