实时触觉生成的制作方法

文档序号:16806881发布日期:2019-02-10 13:07阅读:322来源:国知局
实时触觉生成的制作方法

本申请要求2016年6月29日提交的美国临时专利申请62/356,265和2017年6月27日提交的美国专利申请15/634,288的优先权,其公开内容以引用方式并入本文中。

一个实施例整体涉及触觉系统,并且特别地,涉及生成触觉效果的系统。



背景技术:

一般而言,电子设备制造者致力于为用户生产丰富的界面。传统设备使用视觉和听觉提示来向用户提供反馈,同时在一些界面设备中,还向用户提供动觉反馈(诸如主动的力反馈和抵抗的力反馈)和/或触知反馈(诸如振动、纹理和热),更一般地统称之为“触觉反馈”或“触觉效果”。触觉反馈可以提供增强并且简化用户界面的提示。具体而言,在向电子设备的用户提供提示以警告用户具体事件或者提供现实反馈以在仿真或虚拟环境内创造更强的感官沉浸方面,振动效果或振动触知触觉效果可以是有用的。

一般而言,触觉效果开发者可以为设备制作触觉效果,并且该设备可以被配置为输出该触觉效果。由于硬件特性不同,不同类型的硬件可以能够生成不同类型的触觉效果。例如,由于不同致动器的机电特性不同,不同类型的致动器(诸如偏心旋转质量电动机致动器、线性谐振致动器和压电致动器)能够生成不同类型的触觉效果。

一般而言,一些设备可以实施“开/关”振动控制(诸如谷歌公司(googlecorp.)的“安卓”振动api)来控制致动器。然而,这样的设备可能不具有对致动器的驱动值和持续时间的细粒度控制。因此,需要提供对设备上依靠“开/关”振动控制的致动器的驱动值和持续时间的细粒度控制。



技术实现要素:

一个实施例是一种提供触觉功能的系统。该系统接收编码致动器驱动值的经编码的值,其中该致动器驱动值与触觉效果的强度对应。该系统将该经编码的值转换成开/关持续时间的模式,并在致动器上重放该开/关持续时间的模式以产生该触觉效果。

附图说明

图1是根据本发明的实施例的计算机服务器/系统的框图。

图2图示了脉冲周期相同但占空比不同的脉冲的示例曲线图。

图3是图示了一个实施例中的编码器的功能的示例框图。

图4是图示了一个实施例中的重放模块的功能的示例框图。

图5至图7是根据本发明的实施例的图1的触觉生成模块在执行触觉功能时的操作的示例流程图。

具体实施方式

一个实施例是一种可以根据源数据(诸如音频或视频源数据或者与多媒体剪辑的内容有关的任何感官数据(例如旋转、速度、物体的加速度等))自动生成触觉效果的系统。实施例通过将源数据转化成振动模式来生成触觉效果,使得可以使用向致动器施加的脉冲宽度调制(即,开/关)信号来有效生成触觉效果。

图1图示了根据本发明的一个实施例的系统10的框图。在一个实施例中,系统10是设备的一部分并且为该设备提供实时触觉生成功能。在另一个实施例中,系统10与设备分离,并且远程地为该设备提供实时触觉生成功能。

虽然所示的是单个系统,但是系统10的功能可以作为分布式系统来实施。系统10包括用于传送信息的总线12或其他通信机构,以及用于处理信息的耦合至总线12的处理器22。处理器22可以是任何类型的通用处理器或专用处理器。系统10还包括用于存储信息和要由处理器22执行的指令的存储器14。存储器14可以包括随机存取存储器(“ram”)、只读存储器(“rom”)、静态储存器(诸如磁盘或光盘)或者任何其他类型的暂时性或非暂时性计算机可读介质的任何组合。

计算机可读介质可以是可以被处理器22访问的任何可用的暂时性或非暂时性介质,并且可以包括易失性和非易失性介质、可移除和不可移除介质、通信介质和存储介质。通信介质可以包括计算机可读指令、数据结构、程序模块或调制数据信号(诸如载波或其他传输机构)中的其他数据,以及可以包括本领域已知的任何其他形式的信息递送介质。存储介质可以包括ram、闪速存储器、rom、可擦除可编程只读存储器(“eprom”)、电可擦除可编程只读存储器(“eeprom”)、寄存器、硬盘、可移除盘、致密盘只读存储器(“cd-rom”)或本领域已知的任何其他形式的存储介质。

在一个实施例中,存储器14存储在由处理器22执行时提供功能的软件模块。这些模块包括为系统10以及一个实施例中的设备的其余部分提供操作系统功能的操作系统15。如本文所详细公开的,这些模块还包括使用根据脉冲宽度调制(“pwm”)所调制的信号来生成触觉效果的触觉生成模块16。pwm是用于将消息编码成脉冲信号的调制技术。pwm可以被用于控制向电设备供应的功率,其中馈向负载的电压(和电流)的平均值是通过以快速速率打开和关闭电源和负载之间的虚拟或物理开关来控制的。开关打开的时段相比关闭的时段越长,向负载供应的总功率就越高。

在一个实施例中,触觉生成模块16可以包括多个模块,其中每个单独的模块提供用于生成触觉效果的具体的单独的功能。系统10将通常包括一个或多个附加的应用模块18来包括附加的功能,诸如是智能电话的操作系统的一部分的振动应用编程接口(“api”)。

在一个实施例中,系统10可以发送和/或接收来自远程源的数据,以及还可以包括通信设备20(诸如网络接口卡)来提供移动无线网络通信,诸如红外线、无线电、wi-fi、蜂窝网络通信等。在一个实施例中,通信设备20可以提供有线网络连接,诸如以太网连接、调制解调器等。

处理器22还经由总线12耦合至用于向用户显示图形表示或用户界面的显示器24,诸如液晶显示器(“lcd”)。显示器24可以是被配置为向处理器22发出信号和从处理器22接收信号的触敏输入设备(诸如触摸屏),以及可以是多点触摸的触摸屏。处理器22还可以耦合至允许用户与系统10进行交互的键盘或光标控制28,诸如鼠标或触笔。

在一个实施例中,系统10还包括致动器26。处理器22可以向致动器26发送与生成的触觉效果相关联的触觉信号,致动器26又输出触觉效果(诸如振动触知触觉效果、静电摩擦触觉效果或者变形触觉效果)。致动器26包括致动器驱动电路。致动器26可以是例如电子电动机、电磁致动器、音圈、形状记忆合金、电活性聚合物、螺线管、偏心旋转质量电动机(“erm”)、线性谐振致动器(“lra”)、压电致动器、高带宽致动器、电活性聚合物(“eap”)致动器、静电摩擦显示器或者超声振动生成器。在可替代的实施例中,系统10除了致动器26以外,可以包括一个或多个附加的致动器(图1中未示出)。

致动器26是触觉输出设备的示例,其中触觉输出设备是被配置为响应于驱动信号来输出触觉效果(诸如振动触知触觉效果、静电摩擦触觉效果或者变形触觉效果)的设备。在可替代的实施例中,致动器26可以用一些其他类型的触觉输出设备代替。进一步地,在其他可替代的实施例中,系统10可以不包括致动器26,并且与系统10分离的设备包括输出触觉效果的致动器或者其他触觉输出设备,并且系统10通过通信设备20将生成的触觉效果信号发到那个设备。

系统10还可以操作地耦合至数据库30,其中数据库30可以被配置为存储由模块16和18使用的数据。数据库30可以是操作数据库、分析数据库、数据仓库、分布式数据库、终端用户数据库、外部数据库、导航数据库、存储器内数据库、面向文档的数据库、实时数据库、关系数据库、面向对象数据库或本领域中已知的任何其他数据库。

在一个实施例中,系统10还包括扬声器32。处理器22可以向扬声器32发送音频信号,扬声器32又输出音频效果。扬声器32可以是例如动态扩音器、电动扩音器、压电扩音器、磁致伸缩扩音器、静电扩音器、带状及平面磁扩音器、弯曲波扩音器、平板扩音器、海尔(heil)气动式换能器、等离子弧扬声器、数字扩音器等。在可替代的实施例中,系统10除了扬声器32以外,可以包括一个或多个附加的扬声器(图1中未示出)。进一步地,在其他可替代的实施例中,系统10可以不包括扬声器32,并且与系统10分离的设备包括输出音频效果的扬声器,并且系统10通过通信设备20将音频信号发到那个设备。

在一个实施例中,系统10还包括传感器34。传感器34可以被配置为检测能量的形式或者其他物理性质,诸如但不限于声音、移动、加速度、生物信号、距离、流动、力/压力/应变/弯曲、湿度、线性位置、取向/倾斜、无线电频率、旋转位置、旋转速度、开关的操纵、温度、振动、可见光强度等。传感器34还可以被配置为将检测到的能量或其他物理性质转换成电信号或表示虚拟传感器信息的任何信号。传感器34可以是任何设备,诸如但不限于加速度计、电流皮肤响应传感器、电容式传感器、霍尔效应传感器、红外线传感器、超声传感器、压力传感器、光纤传感器、屈曲传感器(或弯曲传感器)、力敏电阻器、荷重计、lusensecps2155、微型压力换能器、压电式传感器、应变计、湿度计、线性位置触摸传感器、线性电位计(滑动器)、线性可变微分变压器、罗盘、倾角仪、磁标记(或无线电频率识别(“rfid”)标记)、旋转编码器、旋转电位计、陀螺仪、通断开关、温度传感器(诸如温度计、热偶、电阻温度检测器、热敏电阻、温度换能集成电路等)、麦克风、光度计、高度计、生物监控器、相机、光敏电阻器等,或者输出心电图、脑电图、肌电图、眼电图、电子颚位图或任何其他电生理输出的任何设备。

在一个实施例中,系统10除了传感器34以外,可以包括一个或多个附加的传感器(图1中未示出)。在一个实施例中,传感器34和该一个或多个附加的传感器可以是传感器阵列或者一些其他类型的传感器集合/布置的一部分。在一个实施例中,系统10可以不包括传感器34,并且与系统10分离的设备包括检测能量的形式或其他物理性质并将检测到的能量或其他物理性质转换成电信号或表示虚拟传感器信息的其他类型的信号的传感器。然后,该设备可以通过通信设备20将转换的信号发到系统10。

本发明的一个实施例将pwm功能与开/关振动控制一起实施来提供对致动器上的驱动值和持续时间的细粒度控制。该实施例提供用于使用开/关振动控制来递送高质量触觉的算法。在一个实施例中,触觉效果设计者的意图触觉强度被转化成在致动器上呈现的振动模式和触觉。

在一个实施例中,如果设备的操作系统执行仅允许致动器的开/关控制并且不允许控制致动器的驱动信号的强度的功能,那么实施例配置开/关控制以递送高质量触觉效果。例如,一个实施例可以使用安卓振动api,该安卓振动api是操作安卓设备上的振动器的“振动器”类的一部分。表1提供由该类揭露的示例公共方法。如表1的示例中所示,安卓振动api没有控制致动器的驱动值,并且可以被控制的唯一参数是持续时间。当以指定的持续时间调用该api时,将使用调用中指定的持续时间的最大驱动值打开致动器。

表1:由“振动”类揭露的示例公共方法

一个实施例使用安卓振动api以通过实施对致动器激活持续施加和同步的细粒度控制来呈现不同强度的触觉信号。实施例使用具有可以通过实验(例如,某个致动器上的离线实验)获得的脉冲周期(或脉冲持续时间)的脉冲来提供实时触觉功能。期望的触觉强度通过调制脉冲的占空比来呈现,脉冲的占空比一般被限定为:

占空比=脉冲宽度×100/脉冲周期

占空比可以通过改变脉冲的脉冲宽度(或“开”持续时间)来调制。图2示出了周期相同但占空比不同的脉冲的示例曲线图200,其中第一脉冲202具有10%占空比,第二脉冲204具有30%占空比,第三脉冲206具有50%占空比,以及第五脉冲208具有90%占空比。在一个实施例中,脉冲的频率(其为脉冲周期的倒数)是基于致动器的类型来配置的并且被保持不变,而占空比被变化以控制所感知的呈现的触觉效果的强度。在一个实施例中,感知的强度正比于脉冲的占空比。即,具有20%占空比的脉冲被感知的强度是具有10%占空比的脉冲被感知的强度的两倍。通过适当地调制占空比,实施例调制感知的强度,从而播放各种触觉效果。

例如,一个实施例调制向币式erm致动器施加的驱动信号的脉冲宽度。在一个实施例中,对于币式erm致动器而言,脉冲的频率是基于表明脉冲的最大时间周期需要小于32毫秒并且时间周期越小触觉保真度就越好的实验来确定的。相应地,实施例可以以32毫秒配置脉冲周期。为了实现最大触觉强度,实施例将占空比设置为100%,其中致动器将一直是打开的,直到致动器被请求关闭为止。为了实现50%触觉强度,实施例将占空比设置为50%,其中致动器将在16毫秒内是打开的以及在16毫秒内是关闭的。脉冲将被重复地施加,直到致动器被请求关闭为止。为了实现25%触觉强度,实施例将占空比设置为25%,其中致动器将在8毫秒内是打开的以及在24毫秒内是关闭的。脉冲将被重复地施加,直到致动器被请求关闭为止。

一个实施例通过实施如下文所详细描述的编码器、模式转换器、模式重放模块来提供实时触觉修改功能。在一个实施例中,编码器可以驻留在工作站(例如,mac或pc机)上的媒体应用/驱动器(例如,设计工具)中,同时模式转换器和模式重放模块驻留在诸如安卓设备的设备上。在这个实施例中,工作站可以经由本领域中任何已知手段(诸如通用串行总线(“usb”)连接)将经编码的值发到重放设备。在一个实施例中,例如,用户可能正在使用本领域中已知的任何音频编辑工具(诸如avid科技公司的“protools”)设计触觉效果。在一个实施例中,音频编辑工具的插件可以生成驱动值,或者附加的驱动器可以从音频编辑工具接收音频数据并将其转换成驱动值(例如,通过执行下采样、峰值检测等)。在这个实施例中,插件/驱动器的输出是pwm输出信号的占空比值(脉冲的开持续时间),该占空比值是向编码器输入的驱动值。

图3是图示了一个实施例中的编码器302的功能的示例框图300。编码器302将触觉驱动值304转换成经编码的值306。驱动值304被配置为控制触觉重放的强度。驱动值304可以通过相关领域普通技术人员已知的将输入信号转换成触觉信号的任何触觉转换算法来获得。在一个实施例中,驱动值304可以从触觉文件源(诸如执行音频至触觉转换以获得驱动值304的编辑软件中的音频文件)获得。例如,驱动值304可以在一个实施例中使用美国专利公开2015/0070269所公开的峰值检测来从音频信号至触觉信号的转换中导出,该美国专利公开以引用方式并入本文中。

例如,一个实施例实施峰值检测触觉转换算法,该峰值检测触觉转换算法针对输入信号的每个部分识别最大振幅值,并基于所识别的最大振幅值来针对该输入信号的每个部分生成触觉信号,其中所识别的最大振幅值限定触觉信号的幅度。作为另一个示例,一个实施例实施低通滤波器触觉转换算法,该低通滤波器触觉转换算法过滤掉输入信号的一部分(例如,该输入信号的具有最高频率值的一部分),并基于该输入信号的剩余部分来生成触觉信号。作为又一个示例,一个实施例实施高通滤波器触觉转换算法,该高通滤波器触觉转换算法过滤掉输入信号的一部分(例如,该输入信号的具有最低频率值的一部分),并基于该输入信号的剩余部分来生成触觉信号。作为又一个示例,一个实施例实施音高移位触觉转换算法,该音高移位触觉转换算法将输入信号的至少一部分的音高移位,并基于经音高移位的输入信号来生成触觉信号。作为又一个示例,一个实施例实施频率移位触觉转换算法,该频率移位触觉转换算法将输入信号的至少一部分移位,并基于经频率移位的输入信号来生成触觉信号。

在一个实施例中,驱动值304可以以参数化振动定义的形式被接收,该参数化振动定义限定触觉效果的包络/形状。该定义可以包括限定触觉效果的参数,包括持续时间、频率、幅度等。在一个实施例中,该定义与意美森公司(immersioncorp.)的“3000hapticdesignkit”一致。在这个实施例中,触觉效果由定义形状限定,该定义形状由包括三个基础部分/区域或效果幅度(由magsweep或periodic基础效果形成的冲量、持续和衰减)的包络形成。

在一个实施例中,编码器302被配置为接收范围(诸如[128,255])中离散的驱动值304。在这个实施例中,128的驱动值被配置为递送零触觉强度。触觉强度随驱动值而增加,以及255的驱动值被配置为产生最大触觉强度。

编码器302包括加速度跟踪器308和驱动值映射器310。加速度跟踪器308使用电动机性能表(例如,上升曲线和下降曲线)来实时预测和跟踪致动器的估计加速度。它实施被配置为使致动器能够迅速达到期望强度的前馈算法。它是通过在短持续时间内过驱动致动器(例如,以最大电压操作致动器)来做到的。过驱动持续时间是致动器上升时间和请求的触觉强度(如由驱动值304所指示的)的函数。加速度跟踪器308和对应的前馈算法的示例实施例在美国专利9,213,408中被公开,该美国专利以引用方式并入本文中。

例如,为了对一般具有非线性上升和下降特性的慢速致动器进行建模,实施例测量致动器从静止上升到额定加速度的90%所要的总上升时间。然后,一个实施例中的这一上升时间区域被在上升时间的10%、20%、…、90%处分成10个区段,并且注记每个点处的对应的加速度。类似于上升曲线,对于一个实施例中的下降曲线,获得10个值,尽管可以使用任何数量的值。下降时间被认为是致动器从额定加速度变为低于可感知的加速度(在一个实施例中~0.04g)所要求的时间。如果致动器支持制动,那么可以施加负过驱动电压或一些其他制动机构(诸如分流)。否则,没有施加电压。通过应用这一调整(tuning)模型,实施例具有对电动机可以播放什么效果以及还有电动机在给定时间处的状态更准确的图像。

在一个实施例中,加速度跟踪器308的功能在每个计时器滴答/循环(通常为5毫秒)上执行。在每个滴答上,实施例确定期望的力并计算新的力/电压以发至致动器(即,部分地过驱动或制动来使电动机以期望速度转动)。和考虑对电动机当前在做什么与致动器处于其上升或下降曲线何处的估计的情况下电动机可以转动多快相比,实施例基于触觉效果来确定电动机应当转动多快。实施例计算将使电动机尽可能接近期望速度地转动的电压,并且然后更新/重新计算估计速度,如果电动机不能够在计时器滴答中达到期望速度,那么该估计速度可能与期望速度不相同。

在一个实施例中,例如,致动器的上升曲线和下降曲线被基于调整过程的变化而分成10个线性区段。基于这些线区段的斜率,确定计时器滴答中力值的最大增加/减少。该斜率被用于确定致动器在下一个计时器滴答是否可以到达期望力值。如果不可以,则施加踢动/制动脉冲。如果致动器在下一个计时器滴答可以到达期望力,则确定力应当增加/减少的量,使得致动器在计时器滴答结束时处于期望力值。估计力在每个滴答上被更新。

在一个实施例中,一旦测试致动器以获得指示致动器上升/下降至各个加速度点要多久的响应时间曲线/表,假设当前的致动器跟随被测试的致动器的曲线,所记录的曲线/表就被实时用于提取数据和估计在任何时间点处致动器加速度应当是多少。例如,实施例可以估计致动器达到最大致动要多少时间和致动器从最大致动变为静止情况要多少时间。基于这些值,加速度跟踪器308定期地(例如,每毫秒或每五毫秒)跟踪当前加速度状态、估计致动器具有多少加速度以及相应地对修改的驱动值进行排队,以使致动器快速响应,这例如通过施加过驱动电压(例如,以最大电压驱动致动器,这是为在特定的过驱动持续时间内保持致动器打开)。由此,加速度跟踪器308基于驱动值304生成修改的驱动值。

然后驱动值映射器310从加速度跟踪器308接收修改的驱动值并将它们映射到经编码的值306,该经编码的值306是指示脉冲中的“开”持续时间的占空因数,例如,如本文参考图2所公开的。

图4是图示了一个实施例中的重放模块402的功能的示例框图400。重放模块400接收经编码的值404(例如,值的数组)并将它们转换成如下文所详细描述的触觉输出406。在一个实施例中,重放模块402包括如下文所详细描述的被配置为在安卓设备中执行的安卓振动模式转换器408和安卓振动模式重放模块410。然而,其他可替代的实施例可以实施被配置为在其他设备中执行以分别通过提供与安卓振动模式转换器408和安卓振动模式重放模块410类似的功能来将经编码的值404转换成合适的开/关模式并将它们在致动器上重放的模式转换器和模式重放模块。

一般而言,安卓振动api是要求以开/关模式输入的公共api。为了从重放模块402内调用该api,重放模块402实施安卓振动模式转换器408和安卓振动模式重放模块410。安卓振动模式转换器408接收已编码的值404的数组作为输入并实施状态机以跟踪致动器状态。安卓振动模式转换器408跟踪和更新状态机并输出合适作为安卓公共api的输入的振动模式。安卓振动模式重放模块410从安卓振动模式转换器408接收输入并利用这些参数调用安卓的公共api。在一个实施例中,重放模块402一接收到经编码的值404,安卓振动模式转换器408和安卓振动模式重放模块410就变成活动的。

在一个实施例中,由安卓振动模式转换器408实施的状态机跟踪以下参数:

·致动器开时间(“act_on_time”):致动器需要保持打开的时间

·致动器关时间(“act_off_time”):致动器需要保持关闭的时间。它是脉冲的持续时间与致动器开时间之间的差值

·致动器活动时间(“act_active_time”):致动器在其当前状态中是活动的的时间

·致动器当前状态(“act_state”):开或关

在一个实施例中,经编码的值404可以从编码器通过安卓振动模式转换器408中的“write_value”函数来接收。经编码的值指示致动器在脉冲中需要保持打开的时间。经编码的值被复制到“act_on_time”参数以及“act_off_time”参数的值为:

act_off_time=脉冲宽度-act_on_time

“act_state”值维持不变,以下情况例外:

·如果先前的经编码的值小于当前的经编码的值并且致动器的当前状态是关,那么将致动器状态改变至开并重新设置“act_active_time”参数。

·如果先前的经编码的值大于当前的经编码的值并且致动器的当前状态是开,那么将致动器状态改变至关并重新设置“act_active_time”参数。

每个毫秒,函数“更新”(“update”)被调用。一旦被调用,“更新”就更新/递增“act_active_time”参数、比较“act_active_time”参数与所要求的状态时间以及如果需要的话就修改状态。例如,如果致动器当前处于开状态,那么每个毫秒递增“act_active_time”并将其与“act_on_time”比较。如果“act_active_time”大于“act_on_time”,那么就重新设置“act_active_time”并将状态修改至关。下一次当更新函数执行时,跟踪“act_active_time”并将其与“act_off_time”比较。

在一个实施例中,每个经编码的值404是针对致动器驱动值的更新“滴答”来配置的。例如,对于一些致动器而言,更新滴答是5毫秒,意味着每5毫秒更新致动器驱动值。相应地,可以针对每个经编码的值404调用几次“更新”函数。例如,如果经编码的值是针对5毫秒来配置的,那么针对每个经编码的值调用5次“更新”函数。在对“更新”函数的每次调用期间,状态被连续地监控。如果状态改变,那么状态时间被记录。状态时间是用由安卓振动函数预期的格式填入的。模式被填入为“off_duration_millisec,on_duration_millisec,off_duration_millisec,on_duration_millisec…”模式,其中“off_duration_millisec”是致动器关闭的持续时间,以及“on_duration_millisec”是致动器打开的持续时间。然后安卓振动模式重放模块410从安卓振动模式转换器408获取输出并调用安卓振动api函数,相应地安卓振动api函数又激活致动器。

在一个实施例中,pwm技术在较慢的致动器(例如,erm)上工作最好,但是通过取决于致动器的能力来不同地配置各种触觉功能,它也可以在较快的致动器上工作。例如,触觉功能可以通过调整实施例中的脉冲宽度参数来针对较快的致动器进行配置,使得用于较快的致动器的脉冲的脉冲宽度相比于用于较慢的致动器的脉冲的脉冲宽度更小。

图5至图7是根据本发明的实施例的触觉功能的流程图500、600和700。在一个实施例中,流程图500、600、700的功能通过存储在存储器或者其他计算机可读或有形介质中并且由处理器执行的软件来实施。在其他实施例中,功能可以通过硬件(例如,通过使用专用集成电路(“asic”)、可编程门阵列(“pga”)、现场可编程门阵列(“fpga”)等)或者软件和硬件的任何组合来执行。

更具体而言,图5图示了一个实施例中的重放模块402的功能并且在下面参考框图400的元素进行描述。重放模块402可以与一个实施例中的图1的系统10中的触觉生成模块16相同、被包括在该触觉生成模块16内或者在除了该触觉生成模块16以外被提供。

在502处,重放模块402内的安卓振动模式转换器408接收经编码的值404的数组。在504处,安卓振动模式转换器408读取来自该数组的元素。在506处,安卓振动模式转换器408基于该数组的该元素来计算致动器“开”时间值和“关”时间值。

在508处,安卓振动模式转换器408调用“更新”函数。“更新”函数的功能如本文所详细描述。在510处,安卓振动模式转换器408跟踪致动器状态并填入所得到的模式。在512处,安卓振动模式转换器408确定对“更新”函数的调用数量是否已经达到以毫秒为单位的致动器更新速率。如果没有,那么安卓振动模式转换器408循环回到508。如果对“更新”函数的调用数量已经达到以毫秒为单位的致动器更新速率,那么安卓振动模式转换器408确定是否达到经编码的值的数组的末尾。如果没有,那么安卓振动模式转换器408循环回到504。如果达到了经编码的值的数组的末尾,那么安卓振动模式转换器408返回确定的模式数组。

图6图示了一个实施例中的“更新”函数的功能。在602处,致动器活动时间递增“1”。在604处,确定致动器活动时间是否已经达到所要求的状态时间。如果没有,那么过程在610处结束。如果致动器活动时间已经达到所要求的状态时间,那么在606处致动器活动时间被重新设置为0,在606处致动器状态被切换,以及在610处过程结束。

在图7的功能中,在702处,接收编码致动器驱动值的经编码的值,其中该致动器驱动值与触觉效果的强度对应。在704处,该经编码的值被转换成开/关持续时间的模式,以及在706处,该开/关持续时间的模式在致动器上被重放以产生该触觉效果。

在一个实施例中,致动器驱动值由工作站上的设计工具提供,经编码的值在工作站处获得,以及转换和重放在与工作站进行通信并操作致动器的设备中执行。

在一个实施例中,经编码的值通过使用致动器驱动值以调制脉冲的脉冲宽度来获得,以及经编码的值指示致动器开持续时间。在一个实施例中,脉冲的脉冲周期根据致动器的特性来选择。在一个实施例中,脉冲的脉冲周期通过实验来确定。

在一个实施例中,重放通过向安卓振动api提供开/关持续时间的模式来执行。

在一个实施例中,将经编码的值转换成开/关持续时间的模式是通过实施跟踪致动器状态的状态机来执行的。在一个实施例中,致动器状态包括致动器开时间参数、致动器关时间参数、致动器活动时间参数和致动器当前状态参数。在一个实施例中,如由经编码的值所指示的致动器开持续时间被复制到致动器开时间参数。在一个实施例中,致动器关参数被设置为脉冲的脉冲持续时间与致动器开时间参数之间的差值。

在一个实施例中,当致动器当前状态参数是关以及先前的经编码的值小于该经编码的值时,致动器当前状态参数被改变为开以及致动器活动时间参数被重新设置。在一个实施例中,当致动器当前状态参数是开以及先前的经编码的值大于该经编码的值时,致动器当前状态参数被改变为关以及致动器活动时间参数被重新设置。

在一个实施例中,将经编码的值转换成开/关持续时间的模式包括每毫秒调用更新函数。在一个实施例中,更新函数递增致动器活动时间参数。在一个实施例中,更新函数将致动器活动时间参数与所要求的状态时间进行比较。

在一个实施例中,当致动器当前状态参数是开时,更新函数将致动器活动时间参数与致动器开时间参数进行比较,并且如果致动器活动时间参数大于致动器开时间参数,则重新设置致动器活动时间参数并将致动器当前状态参数改变为关。

在一个实施例中,当致动器当前状态参数是关时,更新函数将致动器活动时间参数与致动器关时间参数进行比较,并且如果致动器活动时间参数大于致动器关时间参数,则重新设置致动器活动时间参数并将致动器当前状态参数改变为开。

如所公开的,实施例允许实时触觉生成。一个实施例使用开/ff控制api(诸如安卓振动api)以及实施pwm功能来提供对致动器的细粒度控制以呈现高保真度的触觉功能。

本文具体地图示和/或描述了几个实施例。然而,将被认识到的是,在不背离本发明的精神和意图范围的情况下,对所公开的实施例的修改和变形被上述教导所覆盖并且在所附权利要求的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1