Patent Description:
The present disclosure relates generally to improved techniques for minimizing unwanted responses in haptic feedback systems.

A continuous distribution of sound energy, which we will refer to as an "acoustic field", can be used for a range of applications including haptic feedback in mid-air.

Haptic curve reproduction involves the rapid translation of focal points in an ultrasonic phased array configuration in order to create a haptic sensation. Human skin is not sensitive to ultrasound frequencies alone, but can be stimulated by modulating ultrasound by a low frequency (~<NUM>) signal. An alternative to modulation in pressure amplitude (the traditional approach) is spatiotemporal modulation-moving a focal point along a repeatable path produces a similar modulated pressure at any one point along that path to that of simple amplitude modulation. This pressure profile produces a sensation on the skin and therefore can be used for haptic feedback. This can be used to create shapes, volumes, and other haptic effects.

Because haptics from ultrasound requires large pressure amplitudes, it is susceptible to the generation of parametric audio. This is an effect whereby the nonlinearity of soundwaves in air can create audible sound. This mixing takes the form of difference tones (intermodulation distortion). For instance, if <NUM> and <NUM> sound waves are produced from the same transducer at sufficient amplitude, a <NUM>-<NUM> = <NUM> tone is produced in the air and is perceivable. This is particularly easy to do with traditional amplitude modulation. For instance, modulating a <NUM>,<NUM> by <NUM> becomes, <MAT>.

The modulation splits the <NUM> carrier into two side-bands at <NUM> and <NUM>. The resulting frequencies can mix to form <NUM> and <NUM>.

Spatiotemporal modulation can also lead to many side bands with large spacing which leads to intermodulation distortion at many frequencies. Moving a focal point in space requires each transducer to shift its output rapidly in phase. This can be described by, <MAT> where ωc is the ultrasonic carrier frequency (<NUM>*pi*<NUM> in the previous example) and f(t) represents the phase angle. While the amplitude of the curve remains constant, changing the phase in time causes deviation from a pure tone. This comes about by expanding the function, <MAT>.

In this form, it is clear that modulating the phase can wrap into sidebands related to multiple powers of the phase function. <FIG> is a graph <NUM> of an example using a pure cosine as the phase modulation function showing a frequency power spectrum of cos(ωct + <NUM>π cos(<NUM>π<NUM>t)). The x-axis <NUM> is frequency in kHz. The y-axis <NUM> is in dB. The plot <NUM> shows the resulting power spectrum that is the interplay of the multiple frequencies produced by increasing powers in the exponent with the decreased magnitude from the factorial denominator. The banding is spaced at <NUM> (modulation frequency) and largely contained within <NUM> of the <NUM> carrier. The sidebands continue indefinitely, of course, but are beyond the precision of this simulation and at those amplitudes, unimportant.

Note that the phase functions presented here can be implemented as driving signals to transducers but also can be implemented as physical displacement. If the transducer is moved one carrier wavelength relative to others towards or away from the path, that represents a 2π phase shift, and can be interpolated in between. Smoothing methods presented here can be applied to this displacement-generated phase function equally well.

Further, high-Q resonant systems have a narrow frequency response but as a result, a long impulse response. Energy takes many cycles to leave the system and at any particular moment the current state is highly dependent on driving history. A typical solution to this problem involves using a drive amplitude (or width in the case of pulse-width-modulation (PWM)) which results in the correct steady-state result. The desired output will only be generated after sufficient cycles have elapsed related to the ring up time. While this results in the ideal solution when full amplitude is desired, headroom in the driving circuit is unused when less than full amplitude is needed.

Take, for instance, a linear system that takes <NUM> cycles to reach <NUM>% steady-state value. It approaches the steady state exponentially and can reach approximately <NUM>% of the final value in one cycle with each additional cycle yielding diminishing returns. If the desired final output is the maximum output that the system is capable of, getting there in <NUM> cycles is optimal. However, if the desired output is only <NUM>% of maximum, a different solution would be to drive it at full-scale for one cycle, then cut the drive back to what would yield a steady-state result of <NUM>% of maximum. The result is the system reaching the desired output in one cycle rather than <NUM>. In this invention, we present methods to characterize the system and predict the necessary drive conditions to force it into an output faster than steady-state driving conditions are capable of. Patent document <CIT> discloses a sound system provided which utilizes finite amplitude ultrasonic sources. These sources may be used alone or in combination with finite amplitude sonic sources. A controller manipulates the phase, frequency and amplitude parameters of the sources so that they interact with each other and create combinatorial and differential frequencies in particular locations of the acoustic field. These frequencies further interact with their by-products, as well as with sonic frequencies to create a complex multi-dimensional acoustic field. The audible portion of this complex multi-dimensional acoustic field is what the human auditory system detects and perceives as sound. Patent document <CIT> discloses algorithm techniques which may be used for superior operation of haptic-based systems. An eigensystem may be used to determine for a given spatial distribution of control points with specified output the set of wave phases that are the most efficiently realizable. Reconstructing a modulated pressure field may use emitters firing at different frequencies. An acoustic phased-array device uses a comprehensive reflexive simulation technique. There may be an exchange of information between the users and the transducer control processors having the ability to use that information for optimal haptic generation shadows and the like. Applying mid -air haptic sensations to objects of arbitrary 3D geometry requires that sensation of the object on the user's hand is as close as possible to a realistic depiction of that object.

Aspects of the invention are described in accordance with the appended set of claims.

The accompanying figures, where like reference numerals refer to identical or functionally similar elements throughout the separate views, together with the detailed description below, are incorporated in and form part of the specification, serve to further illustrate embodiments of concepts that include the claimed invention and explain various principles and advantages of those embodiments.

A given curve to be traced with spatiotemporal modulation does not define a unique phase function (f(t)) solution. For instance, when tracing a line, more time could be spent on one half of the line than the other. Compared to an equal-time line this will create a different phase functions, yet the entire line is traced in both cases. On top of this, a given curve (repeated with a specific frequency) does not define a unique haptic experience. For a given carrier frequency, diffraction will limit the focusing resolution, and therefore some small deviations in the focus position can be made for a given curve and not create a discernible effect. The goal of this disclosure is to present methods with which to create a requested spatiotemporal haptic effect by adjusting the curve to be traced and the phase function(s) to trace that curve in a way which produces minimal parametric audio.

<FIG> is a graph <NUM> of an example of a phase modulation function with high frequency components. It is a frequency power spectrum of cos(ωct + <NUM>π triangle(<NUM>π<NUM>t)). The x-axis <NUM> is frequency in kHz. The y-axis <NUM> is dB. As shown in the plot <NUM>, by using a triangle wave, higher frequency harmonics are contained in every power of the modulating function and give rise to many side bands at high-frequency spacing. These then mix to make higher-frequency audio. It is interesting to note that the banding is spaced at <NUM> instead of <NUM> except at two small clusters around +/- <NUM>. This is due to some coincidental cancellation of various terms when using a perfect triangle wave.

Sharp features in the phase modulation function arise from sharp features in the curve being traced by the array. This includes both sharp features in space (hard angles, changes in direction) but also sharp features in time (sudden stops or starts). For instance, a common path in airborne haptics is a line parallel to the array at a fixed height. The array traces the line from one end to the other and back again at a frequency selected to maximize sensitivity.

<FIG> shows a graph <NUM> of the resulting phase function for a transducer directly below one end of the line which in this case is <NUM> in length. The x-axis <NUM> is time in seconds. The y-axis <NUM> is the phase value. A plot <NUM> of phase versus time for a fixed-velocity horizontal line at a height of <NUM> and <NUM> in length for an emitter placed directly under starting point operating at <NUM>.

The phase function value is related to the distance of the focal point to the transducer. On one end of the line (the closest point) the phase function is smooth because the distance versus time is also smooth. If the line were to be extended past this point, the distance to the transducer would start to extend again. It is this minimum distance which causes the smooth inflection point. The far point, however, represents an abrupt stop and reverse of the phase function.

The resulting 'kink' in the curve causes many harmonics and noise. This is shown in <FIG>, which is a graph <NUM> of a plot <NUM> showing a frequency power spectrum resulting from the phase function shown in <FIG>. The x-axis <NUM> is frequency in kHz. The y-axis <NUM> is dB.

The goal of the methods presented below is to provide a framework to make arbitrary haptic curves with smooth phase functions to reduce undesired parametric audio. These do not represent all solutions but merely give some specific examples on how it may be done. Solutions may include subdividing an input curve into discrete points, but this is not necessary for all methods. Any solution which provides a continuous solution can also be sampled to produce a discrete solution.

The phase function for a given transducer is directly proportional to the distance that transducer is from the focus. Therefore, we can smooth this function directly by choosing a path parameterization which gives a smooth distance versus time from a given transducer.

<FIG> shows a schematic <NUM> of geometry for an arbitrary TPS curve and radius smoothing. <FIG> includes a transducer <NUM>, an origin point <NUM> and a haptic curve <NUM>.

Using the geometry presented in <FIG>, a haptic path is parameterized as the following, <MAT>.

The goal is then to create a mapping function, g(t) which smooths the radius function. Using a single-frequency smoothing function, a mapping function g(t) would be, <MAT>.

While analytic solutions do not always exist, a simple solver should get close enough to be effective in most cases. This particular radius smoothing function expects Rf to be larger than R<NUM> so an arbitrary curve would need to be divided into sections of monotonically increasing or decreasing sections. For the increasing sections, solve as normal. For the decreasing sections, it needs to be solved from the last point to the first and then read in reversed order.

The new curve would then be, <MAT> using the selected transducer as the center of the coordinate or simply <MAT>, from the origin.

Using this mapping function, one transducer (e<NUM>) <NUM> would have a perfect, single-frequency phase function. Other transducers would get increasingly less-perfect as their distances increase from the solved transducer. This method works well if the perfect-transducer for the solver is the farthest one from the haptic interaction.

<FIG> shows a graph <NUM> of the results of applying method <NUM> smoothing for a line extending from <NUM> to <NUM> in the x-axis extending from the center of an array. The x-axis <NUM> is time in seconds. The y-axis <NUM> is the x value in cm. The plot shows a fixed velocity <NUM> and smooth radius <NUM> lines. Because the fixed velocity line <NUM> is already at a spatiotemporal minimum at the start, it is not affected. The far end of the fixed velocity line <NUM> receives most of the adjustment.

Shown in <FIG> is a graph <NUM> of a phase function for a transducer directly below one end of the line given in <FIG>. The x-axis <NUM> is time in seconds. The y-axis <NUM> is phase value. The plot shows a fixed velocity <NUM> and smooth radius <NUM> lines.

Shown in <FIG> is a graph <NUM> of a frequency power spectrum for the two curves shown in <FIG>. The x-axis <NUM> is frequency in kHz. The y-axis <NUM> is dB. The plot shows a fixed velocity <NUM> and smooth radius <NUM> lines.

With far fewer sidebands, the smoothed curve will produce less parametric audio.

While best implemented with foreknowledge of the desired path, this method can be implemented in real-time with a sample buffer where points are redistributed in blocks, dividing the curve into increasing and decreasing distance. A sufficiently large buffer would be needed so as to always include enough points to divide the space into distinct sections. This would be a function of the update rate and the size of the possible interaction regions.

An approximation of the previous method may be achieved by manipulating traversal rate on the path so that it has minimum velocity at sharp points which might cause noise. If <MAT> represents a fixed-velocity parametrized TPS curve which starts and stops at a hard location (such as a line), a minimum-velocity curve would be, <MAT> where tf is the time representing the end of the curve. To return to the start of the curve the phase functions can be run in reverse. This results in a low-spread power spectrum.

<FIG> is a graph <NUM> showing the application of this method smoothing to a line extending from <NUM> to <NUM> in the x-axis extending from the center of an array. The x-axis <NUM> is time in seconds. The y-axis <NUM> is x-value in cm. The plot shows a fixed velocity <NUM> and temporally radius <NUM> lines.

This method is unaware that the start of the curve is already a spatiotemporal minimum and therefore smooths both ends. While not perfect for the presented transducer, the net result over all of the transducers in the array can be very similar in total to the other methods presented.

Shown in <FIG> is a graph <NUM> of a phase function for a transducer directly below one end of the line given in <FIG>. The x-axis <NUM> is time in seconds. The y-axis <NUM> is phase value. The plot shows a fixed velocity <NUM> and temporally smooth <NUM> lines.

This can be implemented in real-time with a sample buffer or with sub-sampling. A sample buffer would have to look ahead for sharp transitions and redistribute to first accelerate to get ahead in space and then decelerate into those points. Sub-sampling would be done by assuming each point is itself a "sharp" transition and distributions would follow a smooth function (like above) in between on a direct-line path. This should be especially effective if the accepted point rate is at <NUM> or less with an update rate of <NUM> or higher.

The radius function for an arbitrary haptic path is given by: <MAT> From this equation, it is clear that spatial functions (fx(t), etc) with high-frequency content will directly translate to high-frequency content in R(t). If we filter the spatial functions directly, R(t) and therefore the phase function for the curve, will have a minimum of high-frequency content.

This can be accomplished with any number of standard frequency filtering approaches, both pre-processed and real-time. Processing continuous curves can be done with analogue filter implementations. Curves divided into a series of points can be filtered using traditional digital methods such as infinite impulse response (IIR) and finite impulse response (FIR) filters. Each dimension at a time must be filtered individually.

Frequency filtering approaches fall into two categories: ones involving feedback/feedforward called infinite impulse response (IIR) and ones without feedback called finite impulse response (FIR). IIR filtering requires less buffering and computation cost but often introduces phase delay. FIR filtering can be phase-perfect but requires a buffer equal to the size of the coefficients which can get large for low-frequency filtering.

<FIG> shows a graph <NUM> of <NUM> <NUM>-point square curve <NUM> filtered by a <NUM>nd order Butterworth (IIR) filter at sampled at <NUM> (<NUM>). The x-axis <NUM> is x in cm. The y-axis <NUM> is y in cm. Shown is one loop of the steady-state response. The resulting curve <NUM>, while not identical to the input curve, is largely indistinguishable using <NUM> ultrasound due to focusing resolution.

<FIG> shows a graph <NUM> of the frequency power spectrum for the two curves shown in <FIG>. The x-axis <NUM> is frequency in kHz. The y-axis <NUM> is in dB. The plot shows a perfect square <NUM> and a filtered square <NUM>. This is the absolute sum of the output of <NUM> individual transducers located at <NUM> pitch in a <NUM> x <NUM> array. In this case, the data presented represents the sum of all the transducers placed at <NUM> pitch in a <NUM> x <NUM> square array.

<FIG> shows a graph <NUM> of the phase function for a transducer located near the origin in <FIG>. The x-axis <NUM> is time in seconds. The y-axis <NUM> is phase value in dB. The plot shows a perfect square <NUM> and a filtered square <NUM>. The smoothing of the phase function for a transducer located under one corner of the square is shown in <FIG>.

Filtering can be adjusted to achieve the desired balance between path reproduction accuracy and audio reduction.

Any input path or series of points representing a path can be approximated with smooth path using curve fitting techniques.

For example, a haptic path is often repeated several times in order to create a haptic sensation. If a complete loop is buffered in advance, this nicely encapsulates a repetitive sequence and can be expressed as a Fourier series. Being directly related to the frequency domain, increasing orders of approximation directly relates to the trade-off between accuracy and unwanted audio. The Fourier series approximation is given by, <MAT> where, <MAT> <MAT> <MAT> where the integrals are taken over one period. Each dimension would need to be approximated separately.

<FIG> is a graph <NUM> showing an example of a <NUM> square with increasing orders of Fourier series expansion. The x-axis <NUM> is x in cm. The y-axis <NUM> is y in cm. The plots <NUM>, <NUM>, <NUM>, <NUM>, <NUM> respectfully represent the maximum order included in each expansion of perfect, <NUM>, <NUM>, <NUM> and <NUM>.

<FIG> shows a graph <NUM> of the frequency power spectrum for the curves shown in <FIG>. This is the absolute sum of the output of <NUM> individual transducers located at <NUM> pitch in a <NUM> x <NUM> array. The x-axis <NUM> is frequency in kHz. The y-axis <NUM> is dB. The resulting power spectrums <NUM>, <NUM>, <NUM>, <NUM>, <NUM> show how increasing the order of the approximation (respectively perfect, <NUM>, <NUM>, <NUM>, <NUM>) yields more sidebands and more audio as a result of better path reproduction. The approximation would need to be updated every time the haptic loop is updated. Transitioning between them would need another method discussed in this document to avoid high-frequency jumps.

Polynomial fits are another class of smooth functions which can easily be fit to a set of input points. Critical points can be chosen in advance or in a buffered or sub-sampled signal and a fitting routine such as least-squares can be used to fit a low-order polynomial. Selecting critical points with sudden stops or high curvature will likely be the most effective. The higher-order used, the more accurate the curve will be to the input points, but the higher curvature will allow for higher frequency content. Essentially non-oscillatory (ENO) polynomials may also be used to counter this through the weighted selection of high-order polynomial interpolations which are representative yet minimize unwanted high-frequency content. If desired, the number of critical points could relate to the order of the polynomial fit in order to include those points exactly (a determinate system). If implemented real-time, the fit would need to update smoothly as new critical points are determined.

Splines offer yet another curve approximation system which can emphasize smoothness and low curvature. As with other methods, the input could be critical points from a sub-sampled system or chosen algorithmically from an input buffer.

As far as is known, no attempt has ever been made to adjust curve parameterization (point spacing/location) in order to improve unintended audio. The idea here is recognizing the direct relationship between spatial spectral content and parametric audio.

These techniques are much easier to implement at a software level versus direct filtering at the firmware level. These techniques are easier to tune to adjust accuracy versus audio.

The impulse response of a system can be used to predict its output for a given drive by use of convolution, <MAT> where Vout(t) is the output of the system, Vin(t) is the driving signal, h(t) is the system's impulse response, and * is the convolution operator. One way to organize a system is to divide the past of the system into segments each with fixed time interval T. Past drive signals are grouped into equal-time segments and designated by the number of periods in the past they represent. If these signals are Dn where n represents the number of periods in the past, this results in: <MAT> where V<NUM> and D<NUM> represent the output and drive of next cycle to be produced and all other terms encapsulate the history of the system. The time offsets may be foregone by writing this as an index, hn = h(t - nT). The notation may be simplified by denoting vectors <MAT> and <MAT>, where each entry in the vector is the time-series data for the drive and impulse response respectively. The convolution operator would then first convolve then add as a vector product. Equation <NUM> can then be written as, <MAT> and the inverse problem which we are trying to solve is , <MAT> where *-<NUM> is the deconvolution operator.

This solution may be expanded to an array of coupled systems by measuring the impulse response of one element when another is driven. Take, for example, two elements A and B. The impulse response of A when B is driven is defined as hBA and the opposite case of response of B when A is driven as hAB. The traditional impulse response in this notation would be hAA and hBB respectively. The above analysis reduces to a system of two equations, <MAT> <MAT>
where the <NUM> subscripts represent the next cycle for the various parameters, Da and DB are the vectors of time-series driving data analogous to D above, and VA0 and VB0 are the output of each element. When VA0 and VB0 are specified this reduces to an indeterminate system in which a solution can be approximated. This technique can be expanded to an arbitrarily sized array of elements. This is the most general form of the invention. This formula calculates the necessary drive (D<NUM>) for a desired output (V<NUM>) given the history of the drive contained in D * h. Presented below are methods to simplify the deconvolution process under certain conditions.

While convolution calculations are straightforward, the inverse problem is often difficult. Deconvolution algorithms can be computationally challenging and can yield oscillatory or unstable behavior. A major simplification can be made when working with high-Q resonant systems by using the convolution theorem. This states that the Fourier transform of two convolved signals is the multiplication of their individual Fourier transforms. In a resonant system, the Fourier transform the impulse response is dominated by the component at the resonant frequency. If the driving signal are kept largely monochromatic, the system may be reduced largely to algebra. In the above notation this takes the form, <MAT> where <MAT> denotes the Fourier transform, and A is an operator which returns the complex Fourier component at the resonant frequency of the element. By specifying the desired output in terms of the resonant frequency complex Fourier component (A(V<NUM>)), each term on the right are simply complex values, and the system is now algebraic. The single-element control function in this notation reduces to: <MAT>.

In this case both the output (V<NUM>), drive (D<NUM>), and first-period impulse response (h<NUM>) would be complex numbers representing the Fourier component at the resonant frequency. D and h are vectors containing the time shifted impulse response and drive Fourier components respectively. The number of historical data points to include in any one timestep is dependent on the desired accuracy of the drive as well as the computational power available. The complex output is relatively easy to realize in practice and will be covered below.

An array of coupled elements can be similarly simplified. Given an array with m elements the equation <NUM> can be written as , <MAT> <MAT> where n refers to the given period delay offset, the numbered indexes in the impulse response are the impulse on the second number with the first number driven (as above), and <MAT> is the inverse of the first-cycle impulse response matrix. The output of this, like equation <NUM>, is an array of complex driving coefficients for the m transducers given the desired m outputs in V.

Another simplification of the above method can be accomplished through a recursive definition of the impulse response function. In many systems, the impulse response function can be approximate by purely exponential decay. In this case, the total contribution from the previous activations can be approximated by , <MAT> where α is an experimentally derived constant. Each cycle the previous contribution is multiplied by a and summed with the new cycle. In this way, only one multiplication is necessary each cycle to calculate the complete historical contribution. This simplification works very well for systems well described by a damped harmonic oscillator. This can be applied on an element-by-element basis for an array system but tends to only work well if the cross-coupling is minimal as the first-order nature of this recursive filter does not pass ringing. A hybrid recursive filter can be made by including a fixed number of cycles using the previous explicit method and then lumping the remainder into a recursive term. If the bulk of the ringing behavior can be captured in the fixed cycles which are explicitly calculated, the remainder should be well described by a recursive approach.

Resonant systems can display non-linear behavior near the resonant frequency. This can manifest as a nonlinearity in the amplitude response. As a result, the impulse response function changes as a function of current drive level. This can cause the estimation of the previous contributions (Dh) to be inaccurate at high drive levels. To compensate for this, the impulse response matrix must become a function of drive level. For each element the impulse response can be measured for a given amplitude, h(A). Using this notation, the driving activation coefficients can be calculated using, <MAT> Where h<NUM>-<NUM> is the small-amplitude impulse response. For the next period the amplitude(s) used to modify h can be estimated using the D<NUM> just derived, <MAT> where An are calculated from previous time steps (already calculated in <NUM> and can be reused). In this notation Dn and An are the drive and amplitude at n periods in the past and hn is the time-shifted impulse response for that amplitude. In our notation, for the next timestep, this would be incremented to A<NUM> and used within the historical term in equation <NUM> above.

The methods presented above rely on an accurate impulse response. In a real system, this can change under various environmental conditions including temperature, altitude, age, and many others. Accuracy of the methods depend on tracking the most important factors and adjusting the impulse responses accordingly. This can be implemented using a large store of recorded impulse responses which are then accessed based on external sensors or clocks. Alternatively, a different resonant driving frequency can be used which could restore accuracy to the impulse response as most decay and cross talk mechanisms will remain largely similar even if the resonant frequency of the system changes. In another arrangement, a mathematical model of the change in impulse response can be implemented in the system to change the stored impulse response over time and function. In yet another arrangement, the device can be setup to measure the impulse response at certain times such as start-up or during periods of minimal output to re-adjust the internal tables. This could be accomplished electrically via an impedance sweep or with some other electrical measuring method. Alternatively, feedback from an external measurement device (such as a microphone for an ultrasonic transducer system) could be used to update tables.

The feed-forward control scheme can introduce some high-frequency components to the drive which could be detrimental in certain applications (high-power airborne ultrasound for instance). In this case there are a number of possible solutions to limit the high-frequency components while still retaining the precise control of feed-forward. One simple method is to simply apply IIR low-pass filters to the output drive coefficients of equation <NUM> (one for each of the real and imaginary components). For each cycle, the previous cycle's output is the output of the filter, then a new drive term is calculated with equation <NUM>, and that is filtered, and so on. Another option is a simple comparison of the change of D from one cycle to the next and limit this to a certain magnitude (point by point), this limited D is the input to the history term in the next cycle. This is effectively a low-order low-pass filter.

The filter, or magnitude limiter, can adapt to the input, by analyzing the bandwidth of the input and applying a filter which starts to attenuate based on that value. For the simple case of a magnitude-change filter, a running max change from the previous n input samples could be stored and that could be used as the limiting change. In that way if the input is requesting high-frequency changes, high-frequency changes are passed, but if the input is slow and smooth, the output coefficients are also limited in their rate of change. In another implementation, the input signal could be analyzed for frequency content (say with a series of band filters) and an adjustable IIR filter applied to each driving term based upon the input frequency analysis. The exact relationship between the content of the input and filtered output can be adjusted to optimize accuracy (by passing all frequencies) versus noise (heavily filtering).

Examples shown in the figures are generated using a <NUM>-level PWM interpretation of the coefficient output equation <NUM>. This is done simply by matching the Fourier component of PWM to the desired output by adjusting the phase and width of the pulse. When an amplitude requested exceeds what is possible by the drive, phase can still be preserved by amplitude is kept at maximum duty cycle (<NUM>%). This clipping of amplitude does not impede the method and is implemented in the simulations above. Despite this being the only type of simulation shown, the invention presented here is not limited to a <NUM>-level PWM drive. Any drive system will work from PWM to analogue. The only requirement is that the drive for each resonant-frequency-period have a Fourier component at that frequency which matches in the output from equation <NUM>. The cleaner the drive is from a frequency perspective, the better the system will perform. This can be achieved by switching many times per cycle, many different voltage levels available, or a full high-bandwidth analogue drive.

Feedback from an external pickup could also be incorporated.

Feed-forward drive allows for the precise control of resonant systems.

<FIG> and <FIG> show a pair of graphs <NUM>, <NUM> that are a simple model demonstration of a basic drive versus feed-forward control (this invention). The x-axis <NUM>, <NUM> are unitless scale values. The y-axes <NUM>, <NUM> are unitless scale values. The curved plot lines <NUM>, <NUM> represent the motion of the system and the straight plot lines <NUM>, <NUM> are the drive. Vertical lines denote resonant periods of the model system. The system has a rise-time of about <NUM> cycles. The numbers above the curves are the input amplitude and phase and the lower numbers are the resulting output amplitude and phase. In <FIG>, the drive is only related to the input and the straight plot lines <NUM> are the same every cycle. In <FIG>, the drive uses information about the history of the transducer drive and drives in such a way to both drive harder (at the start) and drive in such a say to damp the motion (at the end). This results in output closer to the input at all points in the control period.

<FIG> show a pair of graphs <NUM>, <NUM> showing amplitude and phase accuracy of amplitude-modulated input using regular and feed-forward drive applied to a real-world <NUM> transducer model. The x-axes <NUM>, <NUM> are the <NUM> period number. The y-axis <NUM> of the first graph <NUM> is output-input magnitude. The y-axis <NUM> of the second graph <NUM> is output-input phase. The plot shows normal <NUM>, <NUM> and feed forward <NUM>, <NUM> drive. The feed-forward system in all the simulations presented here uses <NUM> terms in the impulse response. Amplitude modulation desired is <NUM> and full modulation amplitude. Input coefficients are converted to a PWM signal with <NUM> steps per period to simulate real-world digital drive. The first graph <NUM> shows the difference of the output to input over <NUM> periods. The second graph <NUM> shows the difference in phase between the output to input. The feed-forward control <NUM> is able to hold the system to better than <NUM>% amplitude accuracy and less than <NUM> radians except near zeros of the amplitude. By comparison, the traditional drive <NUM> has more than <NUM>% amplitude error and drifts up to <NUM> radians off target even at non-zero amplitudes.

<FIG> shows graphs <NUM>, <NUM> of amplitude and phase accuracy of phase-modulated input using regular and feed-forward drive applied to a real-world <NUM> transducer model. The x-axes <NUM>, <NUM> are the <NUM> period number. The y-axis <NUM> of the first graph <NUM> is output-input magnitude. The y-axis <NUM> of the second graph <NUM> is output-input phase. The plot shows normal <NUM>, <NUM> and feed forward <NUM>, <NUM> drive. The input drive is <NUM>% amplitude and <NUM>*pi radians amplitude at <NUM>. In this case, the transducer is physically not capable of following the requested phase shift as neither system is able to fully match both the amplitude and phase of the requested input. Comparing the two, it is clear that when the request is physically possible (near periods <NUM>, <NUM>, <NUM>, <NUM>) the feed-forward system is able to hold both the phase and amplitude with only a few percent error. When the system does deviate and the errors are significant, the feed-forward system is able to recover faster and even when amplitude dips, is able to keep phase closer to request compared to a traditional drive system.

<FIG> are graphs <NUM>, <NUM> that use regular drive <FIG> are graphs <NUM>, <NUM> that use feed-forward drive. The x-axes <NUM>, <NUM>, <NUM>, <NUM> are the <NUM> period number. The y-axes <NUM>, <NUM> for the magnitude error graphs <NUM>, <NUM> are output-input magnitude. The y-axes <NUM>, <NUM> for the phase error graphs <NUM>, <NUM> are output-input phase. The plots show results for transducer <NUM><NUM>, <NUM>, <NUM>, <NUM> and for transducer <NUM><NUM>, <NUM>, <NUM>, <NUM>.

These graphs are examples of cross-talk performance showing amplitude and phase accuracy of two strongly-coupled phase-modulated transducers with transducer <NUM> at <NUM> degrees out of phase with transducer <NUM>. The mathematical model uses the same real-world <NUM> transducer model as the previous figures with an added coupling losses spring. Input coefficients are converted to a PWM signal with <NUM> steps per period to emulate real-world digital drive. The input drive is <NUM>% amplitude with <NUM>*pi radians of modulation at <NUM>, with transducer <NUM> at <NUM> degrees out of phase with transducer <NUM>. The graphs <NUM>, <NUM> show the large errors introduced by coupling with the amplitude dropping by as much as <NUM>%. The graphs <NUM>, <NUM> show the control possible with feed-forward coupled control, with amplitude and phase accuracy on the order of <NUM>%.

The mathematical model uses the same real-world <NUM> transducer model as the previous figures with an added coupling losses spring. Input coefficients are converted to a PWM signal with <NUM> steps per period to simulate real-world digital drive. The input drive is <NUM>% amplitude depth at <NUM>, with transducer <NUM> at <NUM> degrees out of phase with transducer <NUM>. The graphs <NUM>, <NUM> show the large errors introduced by coupling: the amplitude is out of phase with drive input in graph <NUM> and causes massive phase errors in graph <NUM>. The graphs <NUM>, <NUM> show the control possible with feed-forward coupled control, with amplitude accuracy better than <NUM>% in graph <NUM> and phase under tight control except near zero-output in graph <NUM>.

<FIG> shows a graph <NUM> of simulations of a nonlinear response for impulse response amplitude of a standard damped oscillator and a damped harmonic oscillator with a nonlinear damping term. The x-axis <NUM> is n. The y-axis <NUM> is magnitude. The plots <NUM>, <NUM> represent the amplitude decay of a resonant system starting at the amplitude given at the start of the curve (x-axis <NUM> value <NUM>). The scaled small impulse plot <NUM> show a response where decay is exponential (simply proportional to amplitude) and hence is a straight line on a semi-log plot which is expected from a simple damped oscillator. In this case the impulse response can simply be scaled by the starting value. The real response plot <NUM> show the response of a nonlinear system where the decay of the amplitude is a stronger with higher amplitude and thus deviates more from the simple system when drive is high. The method presented in equation <NUM> uses the full range of impulse response curves produced by different starting amplitudes to work out a correct historical term and more accurately drive the system.

<FIG> show graphs <NUM>, <NUM> of amplitude and phase accuracy of amplitude-modulated input using regular and feed-forward drive applied to a real-world <NUM> transducer model including a nonlinear damping term. The x-axes <NUM>, <NUM> are the <NUM> period number. The y-axis <NUM> of the first graph <NUM> is output-input magnitude. The y-axis <NUM> of the second graph <NUM> is output-input phase. The plot shows normal <NUM>, <NUM> and feed forward <NUM>, <NUM> drive. Amplitude modulation desired is <NUM> and full modulation amplitude. Input coefficients are converted to a PWM signal with <NUM> steps per period to simulate real-world digital drive. In the case of the normal drive, the input amplitude is adjusted to match the nonlinear response curve in the steady state, and this corrected response is what is used to calculate the difference from output. In the case of the feed-forward control, the input signal was scaled so that an input of <NUM> corresponded to the maximum the transducer model was capable of producing (in this case ~<NUM>). Information regarding the shape of the nonlinearity is contained in the impulse response functions and will automatically fix the curve shape. As with linear systems, the feed-forward control is able to control the system with better accuracy than traditional methods.

There is quite a bit of text spent comparing the feed-forward method to current (steady-state) methods.

Feedback control designs require sampling at the system which increases cost and complexity.

One inventive step lies in recognizing that the impulse response for a highly-resonant system can be approximated by Fourier components at the resonant frequency (equation <NUM>). This key simplification reduces the deconvolution operator to matrix algebra. Beyond this, manipulating the impulse response to be a function of drive amplitude to compensate for amplitude non-linearities is novel. Also, adapting this to a coupled resonant-system array and solving for the necessary drive as a matrix inversion is new.

While the foregoing descriptions disclose specific values, any other specific values may be used to achieve similar results. Further, the various features of the foregoing embodiments may be selected and combined to produce numerous variations of improved haptic methods as defined by the appended set of claims.

Claim 1:
A method comprising:
creating haptic feedback in mid-air using ultrasound comprising the steps of:
producing an acoustic field from a transducer array having known relative positions and orientations;
defining a focus point having a known spatial relationship relative to the transducer array defining a path having at least a first path dimension and a second path dimension, and having a known spatial relationship relative to the transducer array in which the focus point will translate;
moving the focus point near the path so as to produce little audible sound;
wherein the path is approximated by an approximation function using curve fitting techniques;
filtering the approximation function in the first path dimension and in the second path dimension to reduce high-frequency content.