当前位置: 首页 > news >正文

Project Caliper:目标是打造最佳VR手柄

一提到Valve Index,人们很快联想到它的五指追踪VR手柄,这款支持手势追踪和体感反馈的高端VR手柄,是市面上最强大的C端VR手柄之一。尽管如此,它依然存在许多缺陷,比如配备的小型摇杆质量不佳、集成式设计不利于维修、人体工学不够理想等等。

为了改善Index手柄,VR爱好者Rob Cole决心改进VR手柄交互,于是开发了一款参考Valve Index VR的VR手柄:Project Caliper,旨在提升VR手柄的人体工学和模块化设计。据悉,这是一款基于Tundra HDK定位技术的SteamVR手柄,它的重点在于人体工学和模块化设计,优化维修方式和耐用性。

Cole公布了Caliper从零开始的详细设计,他表示:原本的计划是开发一个可运行的手柄原型,然后通过众筹等方式量产发售,不过由于疫情对于供应链和制造时长的影响,量产并不实际。而且批量购买LG电视遥控器的成本就达到60英镑/单元,经过成本预算后,发现成立公司卖Caliper手柄并不赚钱,于是决定将手柄的设计公开。

他还表示:开发硬件会消耗大量成本,也许在赚到一百万美元之前,先准备好两百万美元来开发硬件。尤其是VR手柄,像Index这样配备复杂传感器的设计,每对售价259英镑似乎利润并不多。

关于XRCaliper

据了解,Cole在业余时间,针对VR手柄的追踪、人体工学、体感、机械、软件等方面,开发了多款原型设计。此外,还通过Steamworks项目签约为SteamVR开发者,基于SteamVR定位方案开发SteamVR游戏或VR手柄。

为了测试SteamVR手柄定位,Cole采用了Tundra硬件开发套件(HDK),并用有线连接的方式测试单个基站定位目标的效果,或用无线连接的方式来测试两个基站定位手柄。

接下来,Cole从头开始设计VR手柄的外观,他想要尝试一些与现有产品不同的设计,比如采用枪柄外形的手柄。而VR手柄上的按钮、扳机、触控板、摇杆等输入元件,以及微型控制器,则来自于已量产的游戏手柄,比如Thrustmaster X Pro E-Swap等等。Caliper的设计中还包括体感马达、发光二极管等元件。

其中,Thrustmaster X Pro E-Swap是PlayStation的第三方游戏手柄,其特点是采用模块化设计,为用户提供低成本的自定义升级套件(方向键、侧把手、摇杆、触控板等等),以及不同色彩、纹理和样式的配件。同时Thrustmaster还提供软件,支持按钮映射、E-Swap输入设置、摇杆完全调整等功能。如果未来商用的VR手柄也能支持这种模块化设计,可能会带来各种有趣的用法。

为了调试HDK在手柄上的效果,Cole首先在枪柄上固定了一个T型定位传感器,来代替具体的手柄面板。

Caliper原型还配备了一大块可充电锂电池,电池的重量平衡了手柄T型定位杆的重量,同时模拟了手枪的重量感。Cole认为,这种酷似手枪的VR手柄将很适合《Pistol Whip》等VR射击游戏。

在Caliper握柄内部,配备了一大块体感马达,连接锂电池后,可实现足够长的续航。在测试传感器定位和3D VR同步阶段,Caliper手柄仅配备一个扳机,采用简单的输入方式。

立方体VR“枪手柄”

除了T字手柄原型外,Cole还设计了一部分为立方体的手柄原型Guncube,用来追踪立方体对象。尽管如此,Cole意识到还需要加入更多传感器,以覆盖更多追踪角度,提升6DoF定位的准确性。SteamVR提供的课程中也推荐了VR手柄传感器的一些布局,比如用不同角度的小平面来分解同一个平面,同一个平面上的传感器间距尽量分开,好从多个角度捕捉目标,覆盖更多追踪范围。

左边为Tundra HDK中的Triad TS4112光学传感器,其中反光的黑色区域为“传感器窗口”,负责接收SteamVR基站发射的激光定位信号。

Cole表示:在测试定位追踪时,传感器位于VR手柄的外部,而在量产版本中,传感器的光学窗口采用特殊的塑料滤片,特点是允许激光通过,同时尽可能减少可见光和反射光的影响。

除了物理手柄原型外,Cole还利用免费开源工具OpenSCAD为Guncube设计了3D模型,其中包括立方体定位模块,以及传感器布局,而握柄部位则采用掩膜将其与传感器分开。接着,使用SteamVR模拟工具,来分析最佳的传感器布局设计。

据了解,通常Tundra HDK配备25个传感器通道,Cole使用的HDK缺少一个传感器,因此只有24个。而在Guncube原型中,Cole只使用了其中8个传感器,以简化测试流程。

在模拟软件工具中,你可以查看传感器捕捉到的动态距离数据,VR手柄模型,活跃的传感器数量,初始姿态,旋转和平移等信息,如果大多数传感器被遮挡,VR定位模拟会回退到基于IMU的3DoF模式。

然后,Cole在OpenSCAD中,将模拟手柄上的传感器与实际手柄原型上的传感器进行匹配和对齐,并使用HTC Vive手柄的3D模型来校正Guncube模型的方向。

手柄模型设计

除了Guncube外,还开发了各种不同类型的手柄模型,这些手柄的材质采用木头、热成型塑料,或是将二者结合。此外,还探索了各种不同形状、体积,比如直握柄、左右手不同的握柄、弯曲握柄、模块化握柄,还参考了Index手柄和Vive手柄的握柄设计。

接着,Cole在这些VR手柄原型中加入Thrustmaster手柄上拆下的控制模块,比如A/B按钮、开关按钮、扳机。有趣的是,VR手柄的控制模块和摇杆面板上配备了可调节滑块,允许用户独立调整每个控制元件的相对距离。也就是说,在VR手柄上借鉴Thrustmaster灵活的模块化设计。

不过,考虑到每个人手的大小不同,开发者可以通过软件来调整VR手柄的渲染模型,将VR中虚拟手和手柄按钮交互的动作与实际对齐。

尝试Valve Index手柄设计

与大多数VR手柄相比,Valve Index手柄的特点是支持五指追踪,用户即使不用手指握住手柄也能实现VR交互,而手柄则通过绑带固定在手掌/手背上。

Caliper手柄的握柄部位尝试了多种设计,包括贴合特定手型的异形、偏离中心的椭圆形,其中椭圆形的握柄可以通过上下颠倒来适应不同的手型。而且,还尝试了不同的绑带、固定板、握柄、输入元件,还设计了垂直使用的握柄,以及倾斜的握柄。

体感反馈部分,据Cole称,Caliper手柄配备的大马达在全功率下最大扭矩额定值为15纳米,而小马达最大扭矩为3纳米,全功率运行两个大马达会产生较明显的体感,可能会让你产生锻炼、战斗时的动感。

Caliper手柄的绑带上也配备微型马达,模拟手在震动的体感/触觉。接下来,还可以加入线性马达(LRA)或压电体感套件。

为什么叫Caliper

Caliper的中文直译为卡尺,这也是Cole在职业生涯中多次使用的一种测量设备。许多类型的卡尺,可以读取刻度尺、刻度盘、数字显示器的测量值,而另外一些卡尺像罗盘一样简单,没有刻度,只有向内、向外的点。

Cole表示:给VR手柄起名卡尺的原因是,它支持完整的调节功能,可测量用户的手掌大小,并据此调整合适的体验感,就像是卡尺一样可灵活调整。同时,这种设计也在现有的VR手柄基础上带来两大升级:

1,适用于不同手掌的人体工学优化

据了解,Cole希望通过Caliper手柄来解决VR玩家在《Pavlov》等射击游戏中的体验,他表示:如果VR手柄舒适性不好,那么在VR射击游戏中反复扣动扳机会引起不适吗?从长期来看,是否会导致重复性劳损?这些问题,能否通过模块化或可调节设计来解决呢?

此外,Cole也曾考虑可调节的扳机位置、摇杆和握柄之间的距离、独立调节摇杆和扳机、可更换尺寸的手柄主体、不同形状的扳机盖、不同纹理/质地的握柄、左右手柄可独立调节的设计等等。

2,模块化输入元件、减少VR停机时间

Cole表示:由于Index手柄未采用模块化设计,在拥有该手柄的2年保修期间,官方已经给我更换了11对。实际上,如果VR手柄采用可替换的模块化元件,那么维修将会更简单、成本更低,也会避免产生电子垃圾,以免浪费。

另外,考虑到Index产品缺货的情况,每次等待更换的新手柄,都需要好几个星期时间,而在这期间VR头显就闲置了。其实,Index用户可以自己替换摇杆,但这会破坏摇杆的电容感应功能。

为什么Index手柄总需要送修

Cole表示:我的Index手柄总出问题,尤其是在玩《In Death》、《Boneworks》、《Pavlov》等VR射击游戏时,对扳机和摇杆的损害较大,一些时候握柄也会受影响。为了避免扳机等常用的按键磨损,Cole曾经尝试重新设置VR手柄按键映射,不过这种方式还是影响游戏体验的流畅性。

为了提升VR手柄、按键的耐用性,Cole总结出三点需要优化的问题:

1,Index手柄质量不理想

作为首批收到Valve Index的用户,Cole在拿到Index手柄后发现尽管它看起来很结实,外观设计精致,但A/B按钮和扳机不够固定,触碰的时候有点摇晃,不太稳。Index采用小摇杆和小型触控板混合的设计,比Vive手柄的大触控板更好用,但并没有Xbox、PS 4官方手柄的摇杆结实、精准。实际上,最初Index手柄设计采用了大触控板,后来才决定加入摇杆。

相比之下,Oculus VR手柄由Xbox 360手柄背后团队Carbon Design设计,质量更好一些。

在高负载的VR射击游戏中,小摇杆更容易磨损(受到电位计的物理限制),耐用性不如正常尺寸的大摇杆。熟悉任天堂Switch的人都知道,Switch游戏常用摇杆来移动,而其Joy-Con手柄上采用的是小摇杆,因此很容易快速磨损,并导致漂移或摇杆故障。

为了避免上述问题,Caliper手柄采用Thrustmaster S6的大摇杆,在VR射击游戏等场景中更耐用。而未来,也许Index手柄可以采用更大的摇杆来提升耐用性,不过这可能会牺牲触控板的位置。

2,按键布局不合理

Index手柄面板的按键紧凑,在使用时通常需要反复偏转拇指,长时间下来体验感不舒适,容易造成拇指疲劳,而且也可能导致过度操作,加速电位计模块的磨损。

经过实际的模拟体验,Cole发现,Index手柄上的摇杆如果从边缘移动到中央,更符合人体工学,而且还可以将触控板放在靠边的位置。

3,不适合手劲大的用户

对于一些握力大的成年人来讲,手柄的耐用性更加重要。一些《Beat Saber》玩家就反馈,玩这种VR节奏游戏常常损伤手柄。在VR射击游戏中,你常常会扣动扳机来开枪,对于Index手柄来讲,长期进行这样的动作,通常会引起扳机盖变形,可能会产生错位,并且与手柄框架产生摩擦甚至卡住,失去原来的灵活性。

Cole表示:考虑到Index手柄上扳机的位置,通常用户会从侧面给扳机盖施压,而不是直接触发扳机的弹簧,磨损更大,因此扳机盖需要采用更加坚固的材质,避免侧面压力造成弯曲。

经过测量,成年男性在使用Index手柄时,可能会施加40-50公斤的握力。VR手柄的按键、摇杆至少能承受长时间用力使用的磨损,或是提供可替换的元件,以方便维修。

于是,Caliper采用了从内部加固的特殊形状扳机盖,而且采用可拆卸设计,允许用户更换不同尺寸、形状、材料的扳机盖。除此之外,Caliper手柄上的整个控制模组和扳机模组都可以实现快速安装和拆卸,握柄的盖也可以更换。

有趣的是,Caliper手柄上配备六角螺栓,可调整包括摇杆在内的控制模组的角度、距离,以适应不同的手型。而接下来,Cole还将继续优化定位环和调整模块的布线、升级绑带设计、加入体感模块。参考:Skarredghost

相关文章:

Project Caliper:目标是打造最佳VR手柄

一提到Valve Index,人们很快联想到它的五指追踪VR手柄,这款支持手势追踪和体感反馈的高端VR手柄,是市面上最强大的C端VR手柄之一。尽管如此,它依然存在许多缺陷,比如配备的小型摇杆质量不佳、集成式设计不利于维修、人…...

自动驾驶:BEV开山之作LSS(lift,splat,shoot)原理代码串讲

自动驾驶:BEV开山之作LSS(lift,splat,shoot)原理代码串讲前言Lift参数创建视锥CamEncodeSplat转换视锥坐标系Voxel Pooling总结前言 目前在自动驾驶领域,比较火的一类研究方向是基于采集到的环视图像信息,去构建BEV视角…...

C# 如何实现对“属性”的扩展

目录一、为什么要扩展属性二、如何做?一、为什么要扩展属性 属性是一个类的特征,随着开发的不断升级,这种特征可能在一直变化,有时候为了向下兼容,一般属性的数量都是直接递增的。 例如:一个Person类&…...

EBS 物料属性 先后台对应关系 MTL_SYSTEM_ITEMS_B

Introductionweb The basic table mtl_system_items_b is the basic table of item in ERP system and there are a lot of columns,but I don’t know used of each column,particularly the column like %_flag. The reason of general exception may be because the ‘%_fl…...

MYSQL数据库-主从复制(原理及搭建)

文章目录1 概述2 原理3 搭建3.1 主库配置3.2 从库配置1 概述 主从复制是指将主数据库的DDL和 DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进…...

3GPP-NR Band25标准定义频点和信道(3GPP V17.7.0 (2022-12))

Reference test frequencies for NR operating band n25 Table 4.3.1.1.1.25-1: Test frequencies for NRoperating band n25 and SCS 15 kHz CBW [MHz]carrierBandwidth...

微信小程序 之 原生开发

目录 一、前期预备 1. 预备知识 ​2. 注册账号 - 申请AppID 3. 下载小程序开发工具 4. 小程序项目结构 ​5. 小程序的MVVM架构 二、创建小程序项目 1. 查看注册的appId ​2. 创建项目 ​3. 新建页面 01 - 创建text页面文件夹 ​02 - 新建text的page ​03 - 在app.json中配置 ​…...

常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件

常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件1. vim 的基本介绍和使用1.1 vim的三种模式1.2 常用vim命令【小白】1.3 Vim键盘图:2. Linux用户管理2.1 添加用户2.2 删除用户2.3 修改账号3. Linux系统用户组的管理4. 用户和组相关文件4.1 …...

阿里云服务器部署前后端分离项目

阿里云服务器部署 【若依】 前后端分离项目 文章目录一、域名解析二、服务器操作系统置空三、部署方式四、需安装环境配置五、Linux服务器安装相应内容(具体安装步骤)(一)安装JDK(3种方式)使用Yum安装&…...

内核经典数据结构list 剖析

前言:linux内核中有很多经典的数据结构,list(也称list_head)为其中之一,这些数据结构都是使用C语言实,并且定义和实现都在单独的头文件list.h中。可以随时拿出来使用。list.h的定义不同linux发行版本路径不同,我们可以在/usr/incl…...

华为OD机试 - 考优选核酸检测点(Python)| 真题+思路+考点+代码+岗位

优选核酸检测点 题目 张三要去外地出差,需要做核酸,需要在指定时间点前做完核酸, 请帮他找到满足条件的核酸检测点。 给出一组核酸检测点的距离和每个核酸检测点当前的人数给出张三要去做核酸的出发时间 出发时间是 10 分钟的倍数 同时给出张三做核酸的最晚结束时间题目中…...

在魔改PLUS-F5280开发板上使用合封qsp iflash

文章目录引言硬件调整软件调整总结引言 由于目前灵动官网暂未发布正式版的PLUS-F5280开发板,可以使用现有的PLUS-F5270 v1.2开发板(下文简称PLUS-F5270开发版)替换为MM32F5280微控制器芯片,改装为PLUS-F5280开发板。本文记录了使…...

uni-app 瀑布流

效果图 一、组件 components/u-myWaterfall.vue <template><view class"u-waterfall"><view id"u-left-column" class"u-column"><slot name"left" :leftList"leftList"></slot></view&…...

华为OD机试 - 去除多余空格(Python)| 真题+思路+考点+代码+岗位

去除多余空格 题目 去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和结束下标。 条件约束: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oQABYuJD-1676475739950)(https://…...

MyBatis 二级缓存简单使用步骤

1、二级缓存使用 在 MyBatis 中默认二级缓存是不开启的&#xff0c;如果要使用需手动开启。在 mybatis-config.xml 配置文件中设置 cacheEnabled true &#xff0c;配置如下&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE c…...

kubeadmin kube-apiserver Exited 始终起不来查因记录

kubeadmin kube-apiserver Exited 始终起不来查因记录 [rootk8s-master01 log]# crictl ps -a CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID POD b7af23a98302e …...

论文投稿指南——中文核心期刊推荐(工程材料学)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…...

【动态规划】背包问题题型及方法归纳

背包问题的种类 背包问题是在规定背包容量为j的前提下&#xff0c;每个物品对应的体积为v[i]&#xff0c;价值为w[i]&#xff0c;从物品0到物品i中选择物品放入背包中&#xff0c;找出符合某种要求的价值。 &#xff08;1&#xff09;背包问题种类 01背包&#xff1a;每种物…...

全球十大资质正规外汇期货平台排行榜(最新版汇总)

外汇期货简称为FxFut&#xff0c;是“Forex Futures”的缩写&#xff0c;是在集中形式的期货交易所内&#xff0c;交易双方通过公开叫价&#xff0c;以某种非本国货币买进或卖出另一种非本国货币&#xff0c;并签订一个在未来的某一日期根据协议价格交割标准数量外汇的合约。 …...

使用Paramiko时遇到的一些问题

目录 1.背景 2.问题合集 1&#xff09;“bash: command not found” 2&#xff09;Paramiko中正常的输入&#xff0c;却到了stderr&#xff0c;而stdout是空 3&#xff09;命令实际是alias 1.背景 在自动化脚本中&#xff0c;使用了库Paramiko&#xff0c;远程SSH到后台服…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...