首页 文章 个人博客 在 Pixel 4 上感应基于力的手势

在 Pixel 4 上感应基于力的手势

发布时间:2021-09-15编辑:RainNight阅读(80)

触摸输入传统上侧重于二维手指指向。除了点击和滑动手势,长按一直是交互的主要替代途径。但是,使用基于时间的阈值来感应长按,其中用户的手指必须保持静止 400-500 毫秒。就其本质而言,基于时间的阈值对可用性和可发现性具有负面影响,因为缺乏即时反馈会使用户的操作与系统响应断开连接。幸运的是,手指是动态输入设备,可以表达的不仅仅是位置:当用户触摸表面时,他们的手指还可以表达某种程度的力,这可以用作基于时间的阈值的替代方法。

虽然已经追求了各种基于力的交互,但感测触摸力需要设计和集成成本高昂的专用硬件传感器。此外,研究表明人们难以控制触摸力,因此大多数实际的基于力的交互都集中在离散的力水平上(例如,软触摸与牢固触摸)——这不需要硬件力的全部功能传感器。

有关Pixel 4的最新更新,我们开发了一种感知力手势的方法,使我们能够提供更具表现力的触摸交互体验 通过研究人类手指如何与触摸传感器交互,我们设计了这种体验来补充和支持应用程序已有的长按交互,但是用更自然的手势。在这篇博文中,我们描述了触摸感应和手指交互的核心原理,我们如何设计机器学习算法来从触摸传感器数据中识别按压手势,以及我们如何将其集成到 Pixel 设备的用户体验中。

触摸传感器技术和手指生物力学

电容式触摸传感器由两个导电电极(一个驱动电极和一个感应电极)构成) 由非导电电介质(例如玻璃)隔开。两个电极形成一个可以容纳一些电荷的微型电容器(一个电池)。当手指(或其他导电物体)接近该电池时,它会“窃取”一些电荷,这可以通过电容下降来衡量。重要的是,手指不必接触电极(受另一层玻璃保护),因为窃取的电荷量与手指和电极之间的距离成反比。

file

这些单元格在设备的显示器上排列成矩阵,但密度比显示器像素低得多。例如,Pixel 4 有一个 2280 × 1080 像素的显示屏,但有一个 32 × 15 单元的触摸传感器。当以高分辨率(至少 120 Hz)扫描时,来自这些细胞的读数形成手指交互的视频。

file

电容式触摸传感器本身不会对力的变化做出响应,但会被调整为对显示器上方几毫米内的距离变化高度敏感。也就是说,显示屏玻璃上的手指接触应使传感器中心附近的传感器饱和,但将在手指接触的周边(手指卷曲的地方)周围保持高动态范围。

当用户的手指按压表面时,其软组织会变形并展开。这种传播的性质取决于用户手指的大小和形状,以及它与屏幕的角度。在较高的层次上,我们可以观察到此传播中的几个关键特征(如图所示):它围绕初始接触点不对称,并且整体质心沿手指轴移动。这也是一段时间内发生的动态变化,区别于持续时间长或面积大的接触。

file

然而,用户(和手指)之间的差异使得很难用启发式规则对这些观察进行编码。因此,我们设计了一种机器学习解决方案,使我们能够直接从用户交互样本中学习这些特征及其差异。

触摸交互的机器学习

我们将这些触摸信号的分析视为手势分类问题。也就是说,我们不是试图预测一个抽象参数,比如力或接触传播,而是想感知按下手势——就像按下按钮或开关一样。这使我们能够将分类与定义明确的用户体验联系起来,并允许用户在训练期间以舒适的力量和姿势执行手势。

我们设计的任何分类模型都必须在用户对触摸体验的高期望范围内运行。特别是,触摸交互对延迟非常敏感,需要实时反馈。用户希望应用程序能够响应他们的手指动作,而应用程序开发人员希望系统能够及时提供有关用户正在执行的手势的信息。这意味着按下手势的分类需要实时发生,并且能够在手指的力到达顶点的那一刻触发交互。

因此,我们设计了一个结合卷积(CNN) 和循环的神经网络(RNN) 组件。CNN 可以关注我们在信号中观察到的空间特征,而 RNN 可以关注它们的时间发展。RNN 还有助于提供一致的运行时体验:每帧在从触摸传感器接收时由网络处理,并且 RNN 状态向量在帧之间保留(而不是分批处理)。当与其他应用程序同时运行时,网络有意保持简单,以最大限度地减少设备上的推理成本(每帧大约需要 50 微秒的处理时间,使用TensorFlow Lite的内存少于 1 MB )。

file

该模型是在按下手势和其他常见触摸交互(轻敲、滚动、拖动和无力长按)的数据集上进行训练的。由于模型将在每一帧之后进行评估,因此我们设计了一个损失函数,该函数在时间上塑造了每个样本的标签概率分布,并对错误应用了时间增加的权重。这确保了输出概率在时间上是平滑的,并朝着正确的手势分类收敛。

用户体验整合

我们的 UX 研究发现,用户很难发现基于力的交互,并且用户经常将强制按压与长按混淆,因为很难协调他们施加的力量与接触持续时间。因此,我们没有创建基于力的新交互模式,而是专注于通过在统一的按下手势中用力加速来改善长按交互的用户体验。按下手势与长按手势具有相同的结果,其时间阈值仍然有效,但在使用力时在结果与用户动作之间提供了更强的联系。

file

这也意味着用户可以利用这种手势而无需开发人员更新他们的应用程序。使用 Android 的GestureDetector或View API 的应用程序将通过其现有的长按处理程序自动获取这些按下信号。实现自定义长按检测逻辑的开发人员可以通过Android Q 中引入的MotionEvent 分类API接收这些按下信号。

通过这种机器学习算法和精心交互设计的集成,我们能够为 Pixel 用户提供更具表现力的触摸体验. 我们计划继续研究和开发这些功能,以完善 Pixel 上的触控体验,并探索新的触控交互形式。

网盘推荐

微信公众号

书籍标签