Aspects of the present disclosure generally relate to haptic feedback and to signal generation for accurate haptic feedback.
Haptic feedback may include various types of physical or mechanical outputs that produce tactile sensations for various purposes. Haptic feedback may be used to simulate the sensation of touching an object in a virtual environment, may be used to provide feedback or tactile indications in a control system, may be used to provide a physical or tactile element to music, among many other use cases.
In some aspects, a method performed by a device may include receiving an input identifying a one-cycle induced acceleration waveform associated with a haptic device, a resonant frequency associated with the haptic device, and a target acceleration waveform for the haptic device; determining a plurality of weights based at least in part on the input; generating a playback waveform based at least in part on the plurality of weights; and providing the playback waveform as input to the haptic device.
In some aspects, a device may include memory and one or more processors operatively coupled to the memory. The memory and the one or more processors may be configured to receive an input identifying a one-cycle induced acceleration waveform associated with a haptic device, a resonant frequency associated with the haptic device, and a target acceleration waveform for the haptic device; determine a plurality of weights based at least in part on the input; generate a playback waveform based at least in part on the plurality of weights; and provide the playback waveform as input to the haptic device.
In some aspects, a non-transitory computer-readable medium may store one or more instructions for wireless communication. The one or more instructions, when executed by one or more processors of a device, may cause the one or more processors to receive an input identifying a one-cycle induced acceleration waveform associated with a haptic device, a resonant frequency associated with the haptic device, and a target acceleration waveform for the haptic device; determine a plurality of weights based at least in part on the input; generate a playback waveform based at least in part on the plurality of weights; and provide the playback waveform as input to the haptic device.
In some aspects, an apparatus may include means for receiving an input identifying a one-cycle induced acceleration waveform associated with a haptic device, a resonant frequency associated with the haptic device, and a target acceleration waveform for the haptic device; means for determining a plurality of weights based at least in part on the input; means for generating a playback waveform based at least in part on the plurality of weights; and means for providing the playback waveform as input to the haptic device.
Aspects generally include a method, apparatus, system, computer program product, non-transitory computer-readable medium, user device, wireless communication device, and/or processing system as substantially described with reference to and as illustrated by the drawings and specification.
The foregoing has outlined rather broadly the features and technical advantages of examples according to the disclosure in order that the detailed description that follows may be better understood. Additional features and advantages will be described hereinafter. The conception and specific examples disclosed may be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present disclosure. Such equivalent constructions do not depart from the scope of the appended claims. Characteristics of the concepts disclosed herein, both their organization and method of operation, together with associated advantages will be better understood from the following description when considered in connection with the accompanying figures. Each of the figures is provided for the purposes of illustration and description, and not as a definition of the limits of the claims.
So that the above-recited features of the present disclosure can be understood in detail, a more particular description, briefly summarized above, may be had by reference to aspects, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only certain typical aspects of this disclosure and are therefore not to be considered limiting of its scope, for the description may admit to other equally effective aspects. The same reference numbers in different drawings may identify the same or similar elements.
Various aspects of the disclosure are described more fully hereinafter with reference to the accompanying drawings. This disclosure may, however, be embodied in many different forms and should not be construed as limited to any specific structure or function presented throughout this disclosure. Rather, these aspects are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the disclosure to those skilled in the art. Based on the teachings herein one skilled in the art should appreciate that the scope of the disclosure is intended to cover any aspect of the disclosure disclosed herein, whether implemented independently of or combined with any other aspect of the disclosure. For example, an apparatus may be implemented or a method may be practiced using any number of the aspects set forth herein. In addition, the scope of the disclosure is intended to cover such an apparatus or method which is practiced using other structure, functionality, or structure and functionality in addition to or other than the various aspects of the disclosure set forth herein. It should be understood that any aspect of the disclosure disclosed herein may be embodied by one or more elements of a claim.
A haptic device may generate haptic feedback based at least in part on an input. The input may include a voltage waveform, an electrical current waveform, and/or the like. The haptic device may convert the input to a mechanical output as the haptic feedback, which may include a vibration, force feedback, or other types of haptic feedback. In some cases, the input voltage waveform or current waveform may be generated to match a desired playback waveform. For example, if the desired playback waveform is a uniform sinusoidal playback waveform having a constant peak acceleration throughout the playback waveform, the input to the haptic device may be a uniform voltage waveform (e.g., a sinusoidal voltage waveform wherein the voltage signal repeats at a particular period or frequency) to match the desired playback waveform. However, an input voltage waveform or current waveform that matches a desired playback waveform may not necessarily result in the haptic device producing the desired playback waveform. The properties and parameters of the haptic device may result in an actual output acceleration waveform from the haptic device which lags behind the desired playback waveform in reaching peak acceleration and/or which includes an undesirable ringing (e.g., vibration ringing) where the desired playback waveform stops. These effects may result in inaccurate haptic feedback, such as where haptic feedback does not match or synchronize with an associated audio signal, where haptic feedback does not match or synchronize with events occurring in a video game, and/or the like.
Some aspects described herein provide techniques and apparatuses for signal generation for accurate haptic feedback. In some aspects, a device may generate a playback waveform based at least in part on various types of inputs, such as a target acceleration waveform (e.g., which may correspond to a desired haptic feedback output from a haptic device), a one-cycle induced acceleration waveform of the haptic device, and a resonant frequency of the haptic device. The device may determine a plurality of weights based on the above-described inputs. The weights may be used to generate drive cycles of a playback waveform, which may increase or sustain acceleration in an output acceleration waveform of the haptic device (e.g., a waveform of the haptic feedback produced by the haptic device), and/or brake cycles of the playback waveform, which may decrease or stop acceleration in the output acceleration waveform of the haptic device. The device may generate a non-uniform playback waveform based at least in part on the weights. In this way, the techniques for generating haptic feedback described herein result in an accurate and crispier playback waveform (e.g., a playback waveform that quickly reaches peak acceleration and quickly stops) relative to generating haptic feedback using a uniform playback waveform.
Device 110 includes one or more devices capable of generating a playback waveform for generating haptic feedback and providing the playback waveform to haptic device 120, as described herein. For example, device 110 may include a communication and/or computing device, such as a user equipment (e.g., a smartphone, a radiotelephone, and/or the like), a laptop computer, a tablet computer, a handheld computer, a wearable communication device (e.g., a smart wristwatch, a pair of smart eyeglasses, and/or the like), a gaming device (e.g., a video game console, a handheld game device, a wearable gaming device, a video game controller, and/or the like), a virtual reality device, an augmented reality device, or a similar type of device. As described herein, device 110 may be capable of receiving an input identifying a one-cycle induced acceleration waveform associated with haptic device 120, a resonant frequency associated with haptic device 120, and target acceleration waveform for haptic device 120; may be capable of determining a plurality of weights based at least in part on the input; may be capable of generating a playback waveform based at least in part on the plurality of weights; may be capable of providing the playback waveform as input to haptic device 120; and/or the like, as described herein.
Haptic device 120 includes one or more devices capable of receiving a playback waveform (e.g., from device 110) and converting the playback waveform into haptic feedback, a haptic response, or another type of haptic output. For example, haptic device 120 may include a linear resonance actuator, an eccentric rotating mass motor, a piezoelectric actuator, and/or another type of haptic device capable of receiving a playback waveform as input and generating a vibration output or pattern, force feedback, ultrasonic-induced pressure, or another type of haptic feedback or output based at least in part on the playback waveform.
The number and arrangement of devices and networks shown in
Bus 210 includes a component that permits communication among multiple components of device 200. Processor 220 is implemented in hardware, firmware, and/or a combination of hardware and software. Processor 220 is a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), a microprocessor, a microcontroller, a digital signal processor (DSP), a field-programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or another type of processing component. In some implementations, processor 220 includes one or more processors capable of being programmed to perform a function. Memory 230 includes a random access memory (RAM), a read only memory (ROM), and/or another type of dynamic or static storage device (e.g., a flash memory, a magnetic memory, and/or an optical memory) that stores information and/or instructions for use by processor 220.
Storage component 240 stores information and/or software related to the operation and use of device 200. For example, storage component 240 may include a hard disk (e.g., a magnetic disk, an optical disk, and/or a magneto-optic disk), a solid state drive (SSD), a compact disc (CD), a digital versatile disc (DVD), a floppy disk, a cartridge, a magnetic tape, and/or another type of non-transitory computer-readable medium, along with a corresponding drive.
Input component 250 includes a component that permits device 200 to receive information, such as via user input (e.g., a touch screen display, a keyboard, a keypad, a mouse, a button, a switch, and/or a microphone). Additionally, or alternatively, input component 250 may include a component for determining location (e.g., a global positioning system (GPS) component) and/or a sensor (e.g., an accelerometer, a gyroscope, an actuator, another type of positional or environmental sensor, and/or the like). Output component 260 includes a component that provides output information from device 200 (via, e.g., a display, a speaker, a haptic feedback component, an audio or visual indicator, and/or the like).
Communication interface 270 includes a transceiver-like component (e.g., a transceiver, a separate receiver, a separate transmitter, and/or the like) that enables device 200 to communicate with other devices, such as via a wired connection, a wireless connection, or a combination of wired and wireless connections. Communication interface 270 may permit device 200 to receive information from another device and/or provide information to another device. For example, communication interface 270 may include an Ethernet interface, an optical interface, a coaxial interface, an infrared interface, a radio frequency (RF) interface, a universal serial bus (USB) interface, a Wi-Fi interface, a cellular network interface, and/or the like.
Haptic component 280 includes one or more types of haptic devices or components that are capable of generating haptic feedback, or a haptic response, or another type of haptic output. For example, haptic component 280 may be capable of receiving a playback waveform as input and may be capable of generating haptic feedback based at least in part on the playback waveform, which may include a vibration output or pattern, force feedback, ultrasonic-induced pressure, or another type of haptic feedback or output. Examples of haptic devices or components include a linear resonance actuator, an eccentric rotating mass motor, a piezoelectric actuator, and/or the like.
In some aspects, device 200 includes means for performing one or more processes described herein and/or means for performing one or more operations of the processes described herein. For example, the means for performing the processes and/or operations described herein may include bus 210, processor 220, memory 230, storage component 240, input component 250, output component 260, communication interface 270, haptic component 280, and/or any combination thereof.
Device 200 may perform one or more processes described herein. Device 200 may perform these processes based on processor 220 executing software instructions stored by a non-transitory computer-readable medium, such as memory 230 and/or storage component 240. As used herein, the term “computer-readable medium” refers to a non-transitory memory device. A memory device includes memory space within a single physical storage device or memory space spread across multiple physical storage devices.
Software instructions may be read into memory 230 and/or storage component 240 from another computer-readable medium or from another device via communication interface 270. When executed, software instructions stored in memory 230 and/or storage component 240 may cause processor 220 to perform one or more processes described herein. Additionally, or alternatively, hardware circuitry may be used in place of or in combination with software instructions to perform one or more processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software.
The number and arrangement of components shown in
As shown in
In some aspects, the input may include various types of information, such as information identifying a one-cycle induced acceleration waveform associated with the haptic device, information identifying a resonant frequency of the haptic device, information identifying a target waveform, and/or the like. The various types of information may be received from various sources and/or locations. For example, the weighting component may receive the information identifying the one-cycle induced acceleration waveform and the information identifying the resonant frequency from the haptic device or from a data store (e.g., a data store of the device, such as a memory, a database, a storage device, and/or the like, or from another location or device). As another example, the weighting component may receive the information identifying the target acceleration waveform from an application on the device or another device, from a video game being played on the device or another device, and/or the like.
In some aspects, the one-cycle induced acceleration waveform may include an acceleration waveform that is generated from a one-cycle input (e.g., one frequency cycle or one period of a test waveform) to the haptic device. In some aspects, the one-cycle induced acceleration waveform may be a measured one-cycle induced acceleration waveform. In this case, the one-cycle induced acceleration waveform may be generated by measuring the acceleration output of the haptic device resulting from a one-cycle waveform. This one-cycle waveform may be various shapes, amplitudes, or forms of one-cycle waveforms. As an example, the one-cycle waveform may be a one-cycle sinusoid. In other examples, the one-cycle waveform may be a clipped one-cycle sinusoid, a square wave shaped one-cycle waveform, a sawtooth wave shaped once-cycle waveform, and/or other waveforms. The acceleration output may be measured by attaching or mounting an accelerometer or another type of vibration sensing device and measuring the vibration produced by the haptic device using the accelerometer.
In some aspects, the one-cycle induced acceleration waveform may be simulated, estimated, or calculated based at least in part on a back electromotive force (BEMF) generated by the haptic device. The BEMF may be a voltage that is generated by the haptic device that is in series with and opposes the voltage of a playback waveform applied to the haptic device. The BEMF may be measured to infer or estimate the acceleration output of the haptic device. In some aspects, a BEMF-estimated one-cycle induced acceleration waveform may be nearly as accurate (and in some cases, more accurate) as a measured one-cycle induced acceleration waveform, while providing a more convenient and cost-effective means of obtaining a one-cycle induced acceleration waveform relative to fitting a haptic device with test equipment (e.g., an accelerometer) to measure the acceleration output of the haptic device.
In some aspects, the resonant frequency of the device may include an indication of a frequency at which the haptic device achieves resonance. The resonant frequency may be indicated in Hertz (e.g., 166 Hz, 177 Hz, and/or the like), megahertz, and/or another measurement of frequency.
In some aspects, the target acceleration waveform may identify the desired or target output acceleration waveform to be produced by the haptic device. In this case, the target acceleration waveform may indicate the desired or target haptic feedback to be produced by the haptic device. The target acceleration waveform may be associated with an effect or event in a video game, may be associated with information to be indicated in a control system or collision detection system (e.g., may indicate that a driver of a vehicle is in close proximity and/or is approaching an object), and/or the like. In some aspects, the target acceleration waveform may be a uniform acceleration waveform (e.g., where the peak acceleration of the waveform is constant throughout the waveform), may be a non-uniform acceleration waveform (e.g., a ramped acceleration waveform, an acceleration waveform where the acceleration changes throughout the acceleration waveform, and/or the like), and/or the like.
As further shown in
In some aspects, each of the plurality of weights may be used to weight a respective cycle of the playback waveform. A weight of the plurality of weights may be a positive weight or a negative weight. In some aspects, a positive weight may be used to cause a cycle of the playback waveform to increase, sustain, or maintain an acceleration in a corresponding cycle in an output acceleration waveform generated by the haptic device. This may be referred to a drive cycle of the playback waveform. In some aspects, a negative weight may be used to cause a cycle of the playback waveform to decrease or reduce an acceleration in a corresponding cycle in the output acceleration waveform generated by the haptic device. This may be referred to as a brake cycle. In other aspects, the techniques and apparatuses described herein may be applied in scenarios where the polarities of the different types of cycles are reversed such that negative weights are used for drive cycles and positive weights are used for brake cycles.
Drive cycles may be used to ramp the acceleration of the haptic device to a target acceleration of the target acceleration waveform, may be used to maintain the acceleration of the haptic device at or near a target acceleration of the target acceleration waveform, and/or the like. Brake cycles may be used to decrease the acceleration of the haptic device to a target to a target acceleration of the target acceleration waveform, may be used to stop acceleration of the haptic device (such as at the end of the playback waveform to reduce or prevent undesirable vibration ringing or acceleration ringing of the acceleration of the haptic device), and/or the like.
In some aspects, the device may determine the plurality of weights to accurately tailor the playback waveform for the haptic device such that the playback waveform causes the haptic device to generate haptic feedback having an output acceleration waveform that matches or closely resembles the target acceleration waveform. Accordingly, the device may determine any combination of positive weights and negative weights such that the plurality of weights includes one or more positive weights and/or one or more negative weights, depending on the target acceleration waveform to be matched. Moreover, the device may determine any combination of positive weights and negative weights for scenarios where drive cycles are positive weighted and brake cycles are negative weighted, as well as for scenarios where drive cycles are negative weighted and brake cycles are positive weighted.
In some aspects, the device may determine the plurality of weights such that the playback waveform is sequentially weighted. In this case, the device may determine the plurality of weights such that a time delay or time offset is applied to each weight so that the weights are staggered in the time domain. This causes each of the plurality of weights to be applied to a respective cycle of the playback waveform in a sequential manner. As an example, the device may determine a first weight for a first cycle of the playback waveform, may determine a second weight that is time delayed relative to the first weight such that the second weight is applied to the next cycle (second cycle) in the playback waveform, may determine a third weight that is time delayed relative to the second weight such that the third weight is applied to the next cycle (third cycle) in the playback waveform, and so on.
In some aspects, once the device has determined the plurality of weights, the device may determine whether the plurality of weights is expected to result in a crest factor (e.g., a peak voltage to root means square (RMS) voltage ratio) that satisfies a threshold. The device may determine whether the plurality of weights is expected to result in a crest factor that satisfies the threshold to prevent voltage clipping for the haptic device (e.g., to prevent the voltage of the playback waveform from exceeding a voltage capability of the haptic device, which may cause distortion in the haptic feedback generated by the haptic device and/or which may cause damage to the haptic device). Scenarios where the plurality of weights may cause a crest factor to not satisfy the threshold may include a relatively quick acceleration increase to a desired or specified acceleration, a relatively quick acceleration decrease to a desired or specified acceleration, and/or the like. These scenarios may result in relatively high voltages to quickly accelerate or deaccelerate the haptic device.
To reduce or prevent voltage clipping and/or damage to the haptic device, the device may perform one or more actions based at least in part on determining that the plurality of weights may cause a crest factor to not satisfy the threshold. For example, the device may increase the quantity of weights to increase the quantity of cycles in the resulting playback waveform, may decrease the ramp in acceleration or deceleration that is to be produced by the playback waveform (e.g., which may be achieved by adjusting one or more of the plurality of weights to more slowly ramping up or ramping down the voltage in the playback waveform), and/or the like.
As further shown in
As further shown in
In this way, the device may generate a playback waveform based at least in part on various types of inputs, such as a target acceleration waveform (e.g., which may correspond to a desired haptic feedback output from the haptic device), a one-cycle induced acceleration waveform of the haptic device, and a resonant frequency of the haptic device. The device may determine a plurality of weights based on the above-described inputs. The weights may be used to generate drive cycles and/or brake cycles of the playback waveform. The device may generate a non-uniform playback waveform based at least in part on the weights. In this way, the techniques for generating haptic feedback described herein result in an accurate and crispier playback waveform (e.g., a playback waveform that quickly reaches peak acceleration and quickly stops) relative to generating haptic feedback using a uniform playback waveform.
As indicated above,
As shown in
w1=A/B
where B corresponds to the value of the highest or greatest peak acceleration of the one-cycle induced acceleration waveform.
As shown in
As shown in
w2=Δ2/B
A shown in
As shown in
As shown in
w3=Δ3/B
A shown in
As shown in
As shown in
w
4=−D/B
Thus, the fourth weight may be determined to negate or counteract the acceleration D of the peak acceleration of the fourth cycle in the composite acceleration waveform for the first weight the second weight, and the third weight, such that the fourth weight causes the acceleration of the haptic device down to zero or near-zero after the third cycle. Moreover, the phase of the fourth weight is a 180° -shifted weight or a reversed-polarity weight, and thus reduces the acceleration of the haptic device down to zero or near-zero after the third cycle.
A shown in
As shown in
As shown in
In some aspects, the device may generate the playback waveform by applying the weights w1 through w4 to a one-cycle waveform. This one-cycle waveform may be various shapes, amplitudes, or forms of one-cycle waveforms. As an example, the one-cycle waveform may be a one-cycle sinusoid, as the example playback waveform illustrated in
As indicated above,
As shown in
As further shown in
As further shown in
As further shown in
Process 500 may include additional aspects, such as any single aspect or any combination of aspects described below and/or in connection with one or more other processes described elsewhere herein.
In a first aspect, the one-cycle induced acceleration waveform is a measured one-cycle induced acceleration waveform. In a second aspect, alone or in combination with the first aspect, the one-cycle induced acceleration waveform is estimated based at least in part on a back electromotive force generated by the haptic device. In a third aspect, alone or in combination with one or more of the first and second aspects, the plurality of weights comprise one or more positive weights corresponding to one or more drive cycles of the playback waveform and one or more negative weights corresponding to one or more brake cycles of the playback waveform.
In a fourth aspect, alone or in combination with one or more of the first through third aspects, a subset of the one or more brake cycles is to reduce vibration ringing of the haptic device. In a fifth aspect, alone or in combination with one or more of the first through fourth aspects, determining the plurality of weights comprises determining a first weight of the plurality of weights, determining a second weight of the plurality of weights based at least in part on a first component acceleration waveform resulting from the first weight being applied to the one-cycle induced cceleration waveform, and determining a third weight of the plurality of weights based at least in part on a composite acceleration waveform resulting from a combination of the first component acceleration waveform and a second component acceleration waveform resulting from the second weight being applied to the one-cycle induced acceleration waveform.
In a sixth aspect, alone or in combination with one or more of the first through fifth aspects, determining the first weight comprises determining the first weight based at least in part on a difference in acceleration between a first cycle of the one-cycle induced acceleration waveform and a first cycle of the target acceleration waveform, determining the second weight comprises determining the second weight based at least in part on a difference in acceleration between a second cycle of the first component acceleration waveform and a second cycle of the target acceleration waveform, and determining the third weight comprises determining the third weight based at least in part on a difference in acceleration between a third cycle of the composite acceleration waveform and a third cycle of the target acceleration waveform.
In a seventh aspect, alone or in combination with one or more of the first through sixth aspects, process 500 includes determining that the plurality of weights is expected to result in a crest factor that satisfies a threshold and at least one of adjusting a subset of the plurality of weights based at least in part on determining that the plurality of weights is expected to result in the crest factor that satisfies the threshold or increasing a quantity of the plurality of weights based at least in part on determining that the plurality of weights is expected to result in the crest factor that satisfies the threshold.
Although
The foregoing disclosure provides illustration and description but is not intended to be exhaustive or to limit the aspects to the precise form disclosed. Modifications and variations may be made in light of the above disclosure or may be acquired from practice of the aspects.
As used herein, the term “component” is intended to be broadly construed as hardware, firmware, and/or a combination of hardware and software. As used herein, a processor is implemented in hardware, firmware, and/or a combination of hardware and software.
Some aspects are described herein in connection with thresholds. As used herein, satisfying a threshold may refer to a value being greater than the threshold, greater than or equal to the threshold, less than the threshold, less than or equal to the threshold, equal to the threshold, not equal to the threshold, and/or the like.
Even though particular combinations of features are recited in the claims and/or disclosed in the specification, these combinations are not intended to limit the disclosure of various aspects. In fact, many of these features may be combined in ways not specifically recited in the claims and/or disclosed in the specification. Although each dependent claim listed below may directly depend on only one claim, the disclosure of various aspects includes each dependent claim in combination with every other claim in the claim set. A phrase referring to “at least one of” a list of items refers to any combination of those items, including single members. As an example, “at least one of: a, b, or c” is intended to cover a, b, c, a-b, a-c, b-c, and a-b-c, as well as any combination with multiples of the same element (e.g., a-a, a-a-a, a-a-b, a-a-c, a-b-b, a-c-c, b-b, b-b-b, b-b-c, c-c, and c-c-c or any other ordering of a, b, and c).
No element, act, or instruction used herein should be construed as critical or essential unless explicitly described as such. Also, as used herein, the articles “a” and “an” are intended to include one or more items and may be used interchangeably with “one or more.” Further, as used herein, the article “the” is intended to include one or more items referenced in connection with the article “the” and may be used interchangeably with “the one or more.” Furthermore, as used herein, the terms “set” and “group” are intended to include one or more items (e.g., related items, unrelated items, a combination of related and unrelated items, and/or the like), and may be used interchangeably with “one or more.” Where only one item is intended, the phrase “only one” or similar language is used. Also, as used herein, the terms “has,” “have,” “having,” and/or the like are intended to be open-ended terms. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise. Also, as used herein, the term “or” is intended to be inclusive when used in a series and may be used interchangeably with “and/or,” unless explicitly stated otherwise (e.g., if used in combination with “either” or “only one of”).