Scheduling haptic feedback

By prioritizing the waiting and preloading stages in the scheduler, priority sorting and preloading pulses, the problem of simultaneous transmission of multiple haptic feedback events in the prior art is solved, and effective scheduling and delivery under limited resources is realized, ensuring that Continuity and security of user experience.

CN113841108BActive Publication Date: 2024-12-13CAMBRIDGE MECHATRONICS
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202080035536.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-05-15
Filing Date
2020-05-15
Publication Date
2024-12-13
Estimated Expiration
2040-05-15

AI Technical Summary

Technical Problem

The prior art is difficult to effectively schedule multiple simultaneous or close to simultaneous haptic feedback events while requiring multiple simultaneous simultaneous power and hardware resources limit the simultaneous transmission of haptic feedback and cannot meet the simultaneous driving requirements of multiple actuators.

Method used

The scheduler is divided into a waiting phase and a preload phase. By prioritizing and preloading pulses, predefined rules are used to adjust the pulse train to resolve conflicts, ensuring effective scheduling of haptic feedback under limited resources.

Benefits of technology

It realizes effective scheduling and transmission of haptic feedback under limited power supply and hardware resources, avoids energy bursts and resource overloads, and ensures the continuity and security of user experience.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113841108B_ABST
    Figure CN113841108B_ABST
Patent Text Reader

Abstract

Broadly speaking, embodiments of the present technology provide techniques for generating haptic feedback or haptic sensations, and particularly for scheduling such feedback or sensations when there may be conflicting demands for such feedback or sensations.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] The present application relates generally to techniques for generating haptic feedback or haptic sensations, and more particularly to techniques for scheduling output of haptic feedback when multiple simultaneous or near-simultaneous feedback events are desired.

[0002] Consumer electronic devices, such as laptops and smartphones, can use different types of controls to provide some feedback to the device user that they have successfully pressed a button on the device. This is often referred to as tactile feedback, and a tactile button or control on a device can provide a tactile sensation to the user to confirm that they have successfully pressed the button / control / switch. Tactile buttons can be provided as a module or component to be incorporated into an electronic device by a device manufacturer.

[0003] The applicants have identified a need for configurable, customizable tactile feedback, improved user experience, and improved operation.

[0004] definition

[0005] The term "haptic profile" is used herein generally to refer to a description of a particular type of haptic sensation. In other words, the term "haptic profile" is used herein to refer to any description, definition, or manner of describing / defining a particular haptic sensation delivered by a device. A haptic profile may be device agnostic or may depend on the technical specifications of the device or haptic component.

[0006] A haptic profile may be defined using one or more “primitives.” The term “primitive” is generally used herein to mean a base or root value that is used to define a haptic profile, but which is not itself derived from another value.

[0007] Haptic feedback may be delivered as part of a pipeline.The term "pipeline" is generally used herein to refer to a list or sequence of events or actions.

[0008] In a first method of the present technology, a device for delivering tactile feedback is provided, comprising: at least one actuator; a control circuit for controlling the at least one actuator; and at least one processor, the at least one processor being communicatively coupled to the control circuit to: receive an input signal requesting delivery of tactile feedback; render a tactile profile defining instructions for driving the at least one actuator; generate a tactile drive signal using the rendered tactile profile; and send the tactile drive signal to the control circuit to control the at least one actuator to deliver tactile feedback, wherein in response to receiving the input signal requesting tactile feedback, the at least one processor renders a tactile event pipeline including at least one action to be performed, wherein the pipeline is arranged to schedule one or more pulses to be applied to the corresponding one or more actuators, and wherein in the event of a scheduling conflict, the scheduler applies one or more predefined rules to adjust the one or more pulses.

[0009] In a second method of the present technology, a method for delivering tactile feedback using at least one actuator is provided, the method comprising: receiving an input signal requesting delivery of tactile feedback; rendering a tactile profile defining instructions for driving at least one actuator; generating a tactile drive signal using the rendered tactile profile; and transmitting the tactile drive signal to control at least one actuator to deliver tactile feedback, wherein, in response to receiving the input signal requesting tactile feedback, at least one processor renders a tactile event pipeline including at least one action to be performed, wherein the pipeline is arranged to schedule one or more pulses to be applied to the corresponding one or more actuators, and wherein in the event of a scheduling conflict, one or more predefined rules are applied to adjust the one or more pulses.

[0010] In a third method of the present technology, a control system is provided for use with a device for providing tactile feedback via at least one actuator, the control system being operable to: receive an input signal requesting delivery of tactile feedback; render a tactile profile defining instructions for driving at least one actuator; generate a tactile drive signal using the rendered tactile profile; and transmit the tactile drive signal to control at least one actuator to deliver tactile feedback, wherein, in response to receiving the input signal requesting tactile feedback, the control system renders a tactile event pipeline including at least one action to be performed, wherein the pipeline is arranged to schedule one or more pulses to be applied to at least one actuator, and wherein in the event of a scheduling conflict, one or more predefined rules are applied to adjust the one or more pulses.

[0011] In a fourth method of the present technology, a non-transitory data carrier is provided, which carries a processor control code for implementing the second method.

[0012] In the following embodiments, reference to one or more predefined rules is equally applicable to each of the aforementioned first to fourth methods of the present technology. In other words, the predefined rules are applicable to all methods of the present technology, no matter how they are embodied.

[0013] In one embodiment, the at least one actuator is at least one of a shape memory alloy (SMA) actuator, a piezoelectric actuator, an electroactive polymer (EAP) actuator, an electromechanical (EMP) actuator, a linear resonant actuator (LRA), and an eccentric rotating mass (ERM) actuator.

[0014] In one embodiment, the scheduling conflict includes one or more input signals requesting haptic feedback, the haptic feedback requesting scheduling of multiple pulses such that at least a portion of two or more pulses occur simultaneously.

[0015] In one embodiment, one of the one or more predefined rules prioritizes a particular pulse according to a defined parameter associated with the particular pulse.

[0016] In one embodiment, the parameters associated with a particular pulse include one or more of: an explicit priority level assigned to it, a start time, a pulse sequence, or a duration.

[0017] In one embodiment, one of the one or more predefined rules prioritizes all pulses according to their start time so that the rescheduled pulses are generated in the same order as all pulses were requested, whereby if a pulse is delayed as a result, it follows after the end of the previous pulse and the pulse width is not changed.

[0018] In one embodiment, one of the one or more predefined rules prioritizes all pulses according to their start time so that the rescheduled pulses are generated in the same order in which they were requested, whereby if a pulse is thereby delayed, it follows after the end of the previous pulse, and if a pulse in a particular pulse train is delayed, subsequent pulses in the particular pulse train are delayed by the same amount and the pulse width is not changed.

[0019] In one embodiment, one of the one or more predefined rules prioritizes all pulses according to their start time, and if a later pulse collides with an earlier pulse, the later pulse is truncated or omitted entirely according to the duration of the earlier pulse.

[0020] In one embodiment, one of the one or more predefined rules adds a pulse in one pulse train after a previous pulse train.

[0021] In one embodiment, one of the one or more predefined rules assigns a priority to each of several pulses to be scheduled, such that pulses with higher priority are scheduled first and pulses with lower priority are scheduled when pulses with higher priority are completed.

[0022] In one embodiment, all pulses in a particular pulse train have the same priority.

[0023] In one embodiment, one of the one or more predefined rules divides the available power between the different actuators so that if there is no overlap between pulses in different pulse trains, the maximum power is available upon request, and if there is overlap between pulses in different pulse trains, the power is distributed between the pulses in the different pulse trains and the duration of the pulses is adjusted to maintain the requested total energy.

[0024] In one embodiment, one of one or more predefined rules assigns a priority to each of several pulse trains to be scheduled, so that pulses in a pulse train with a higher priority preempt (pre-empt) pulses in a pulse train with a lower priority, interrupt pulses in a pulse train with a lower priority, and thereby adjust the duration of one or more pulses in a pulse train with a lower priority to maintain the requested total energy.

[0025] In one embodiment, the available power is time-multiplexed between the different possible actuators, thereby defining a plurality of time slots, wherein each such time slot is associated with a particular actuator.

[0026] In one embodiment, power is supplied to a particular actuator only during its associated time slot.

[0027] In one embodiment, the multiple time slots are of equal duration.

[0028] In one embodiment, the pulse train associated with each of the different possible actuators has an associated duty cycle, whereby power is provided during corresponding time slots according to the associated duty cycle.

[0029] In one embodiment, the plurality of time slots have unequal durations defined by the duty cycle of one or more pulses in the pulse train associated with each actuator.

[0030] In one embodiment, after applying one or more predefined rules, a check is performed to determine whether it is safe to transmit the adjusted one or more pulses to the actuator.

[0031] In one embodiment, if it is determined that it is unsafe to transmit the adjusted one or more pulses, then: an alternative predefined rule is applied; or one or more of the one or more pulses is modified; or the haptic feedback is not transmitted.

[0032] In one embodiment, one or more additional inputs are received as part of the check to determine whether it is safe to transmit the regulated one or more pulses to the actuator.

[0033] In one embodiment, the one or more additional inputs include information related to the temperature of a given actuator or its immediate vicinity.

[0034] In a related method of the present technology, a non-transitory data carrier is provided, which carries processor control code to implement any of the methods described herein.

[0035] As will be appreciated by those skilled in the art, the present technology can be embodied as a system, method or computer program product.Therefore, the present technology can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects.

[0036] Furthermore, the present technology may take the form of a computer program product embodied in a computer-readable medium having computer-readable program code embodied thereon. The computer-readable medium may be a computer-readable signal medium or a computer-readable storage medium. For example, the computer-readable medium may be, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared or semiconductor system, apparatus or device, or any suitable combination of the foregoing.

[0037] Computer program code for performing operations of the present technology may be written in any combination of one or more programming languages, including object-oriented programming languages ​​and traditional procedural programming languages. Code components may be embodied as procedures, methods, etc., and may include subcomponents that may take the form of instructions or sequences of instructions at any level of abstraction from direct machine instructions of a native instruction set to high-level compiled or interpreted language constructs.

[0038] Embodiments of the present technology also provide a non-transitory data carrier carrying code which, when implemented on a processor, causes the processor to perform any of the methods described herein.

[0039] The techniques also provide processor control code to implement the above methods, for example, on a general purpose computer system or a digital signal processor (DSP). The techniques also provide a carrier carrying processor control code to implement any of the above methods at runtime, in particular to implement any of the above methods on a non-transitory data carrier. The code may be provided on a carrier such as a disk, a microprocessor, a CD-ROM or a DVD-ROM; a programming memory such as a non-volatile memory (e.g., flash memory) or a read-only memory (firmware); or a data carrier such as an optical or electrical signal carrier. The code (and / or data) implementing the embodiments of the techniques described herein may include source, object or executable code in a conventional programming language (interpreted or compiled) such as C, or assembly code, code for setting or controlling an ASIC (application specific integrated circuit) or an FPGA (field programmable gate array), or code for a hardware description language such as Verilog (RTM) or VHDL (very high speed integrated circuit hardware description language). As will be appreciated by the skilled person, such code and / or data may be distributed between multiple coupled components that communicate with each other. These techniques may include a controller including a microprocessor, working memory, and program memory coupled to one or more of the components of the system.

[0040] It will also be clear to those skilled in the art that all or part of the logic method according to an embodiment of the present technology can be appropriately embodied in a logic device including logic elements that perform the steps of the above method, and these logic elements can include, for example, components in a programmable logic array or an application-specific integrated circuit, such as logic gates. Such a logic arrangement can also be embodied in an enabling element for temporarily or permanently establishing a logic structure in such an array or circuit using, for example, a virtual hardware descriptor language, which can be stored and transmitted using a fixed or transmittable carrier medium.

[0041] In an embodiment, the present technology may be implemented in the form of a data carrier having functional data thereon, the functional data comprising a functional computer data structure to enable the computer system to perform all the steps of the above-described method when loaded into a computer system or network and operated accordingly.

[0042] The device can be any of the following: a smartphone, a protective cover or protective case for a smartphone, a functional cover or protective case for a smartphone or electronic device, a camera, a foldable smartphone, a foldable tablet computing device, a foldable communication device, a foldable large-screen mobile phone, a foldable image capture device, a foldable smartphone camera, a foldable consumer electronic device, a camera with folded optical devices, an image capture device, an array camera, a 3D sensing device or system, a servo motor, a consumer electronic device (including household appliances such as vacuum cleaners, washing machines, and lawn mowers), a mobile or portable computing device, a mobile or portable electronic device, a laptop, a tablet computing device, a large-screen mobile phone, an e-reader (also known as an e-book reader or e-book device), a computing accessory or computing peripheral device (such as a mouse, keyboard, head-mounted The invention also includes a device that can be used to control a user's computer or other device, such as a headset, a head-mounted device, a headset, etc., a security system, a gaming system, a gaming accessory (such as a controller, a head-mounted device, a wearable controller, a joystick, etc.), a robot or robotic device, a medical device (such as an endoscope), an augmented reality system, an augmented reality device, a virtual reality system, a virtual reality device, a wearable device (such as a watch, a smart watch, a fitness tracker, etc.), an autonomous vehicle (such as a driverless car), a vehicle, a tool, a surgical tool, a remote control (such as for a drone or a consumer electronic device), an apparel (such as a dress, a shoe, etc.), a switch, a dial or button (such as a light switch, a thermostat dial, etc.), a display screen, a touch screen, a flexible surface, and a wireless communication device (such as a near field communication (NFC) device). It should be understood that this is a non-exhaustive list of possible devices.

[0043] Embodiments of the present technology will now be described, by way of example only, with reference to the accompanying drawings, in which:

[0044] Figure 1 A schematic diagram of a device including one or more tactile buttons is shown;

[0045] Figure 2 is a device for delivering tactile feedback (such as Figure 1 A schematic block diagram of a device)

[0046] Figure 3 is a schematic diagram of a system for generating tactile feedback;

[0047] Figure 4 is a schematic block diagram of a system architecture for generating tactile feedback;

[0048] Figure 5 is a diagram of a scheduler including preload and wait areas;

[0049] Figure 6 shows a timing diagram illustrating the scheduling of haptic feedback pulses;

[0050] Figure 7 shows a timing diagram illustrating the scheduling of haptic feedback pulses;

[0051] Figure 8 shows a timing diagram illustrating the scheduling of haptic feedback pulses;

[0052] Fig. 9 shows a timing diagram illustrating the scheduling of haptic feedback pulses;

[0053] Fig.10 showing operation of a primary timer associated with generation of tactile feedback;

[0054] Fig.11 showing operation of a secondary timer associated with generation of tactile feedback;

[0055] Fig.12 shows a timing diagram illustrating the scheduling of haptic feedback pulses;

[0056] Fig.13 shows a timing diagram illustrating the scheduling of haptic feedback pulses;

[0057] Fig.14 shows a timing diagram illustrating the scheduling of haptic feedback pulses;

[0058] Fig.15 shows a timing diagram illustrating the scheduling of haptic feedback pulses;

[0059] Fig.16 shows a timing diagram illustrating the scheduling of haptic feedback pulses;

[0060] Fig.17 shows a timing diagram illustrating the scheduling of haptic feedback pulses; and

[0061] Fig.18 A flow chart of a method for scheduling haptic feedback pulses is shown.

[0062] Broadly speaking, embodiments of the present technology provide techniques for generating haptic feedback or haptic sensations, and particularly for scheduling such feedback or sensations when there may be conflicting demands for such feedback or sensations.

[0063] The tactile feedback component can be incorporated into any device in which it may be useful to provide tactile feedback to the user of the device. Tactile feedback can be provided to confirm user actions (e.g., confirm button presses), indicate what actions the user is performing (e.g., typing, scrolling, making a selection), or enhance the user experience (e.g., when playing games or operating "applications" on a smartphone). For example, the tactile feedback component can be incorporated into an electronic device or consumer electronic device, such as a computer, a laptop, a portable computing device, a smartphone, a computer keyboard, a game system, a portable game device, game equipment / accessories (e.g., a controller, a wearable controller, etc.), a medical device, a user input device, etc. It should be understood that this is a non-limiting, non-exhaustive enumeration of possible devices. The tactile feedback component can be provided as a separate module that can be incorporated into the electronic device during the manufacturing process and can be modified to fit the device specifications so that it is suitable for the housing or external surface of the electronic device. Alternatively, some or all of the components of the tactile feedback component can be formed as a whole in the electronic device. Each tactile feedback component can include an electrical connection that can couple the component to a processor, a chip, a motherboard, etc. of the device. The use of SMA actuator wires in an actuation mechanism providing tactile feedback may be advantageous because of their high energy density, which means that an actuator including the SMA actuator wires required to apply a particular force may be of relatively small size. Other forms of actuators may be used, including: piezoelectric actuators, electroactive polymer (EAP) actuators, electromechanical (EMP) actuators, linear resonant actuators (LRAs), and eccentric rotating mass (ERM) actuators. In the following, specific reference will be made to SMA actuator wires, but those skilled in the art will appreciate that one or more different actuators may be used.

[0064] Figure 1 A schematic diagram of an apparatus 100 including one or more tactile buttons is shown. Apparatus 100 may be any electronic or electromechanical device. In the figure, apparatus 100 resembles a smartphone or a tablet computing device, but this is a non-limiting illustration. However, it should be understood that apparatus 100 may be, among other things, a smartphone, a mobile computing device, a laptop, a tablet computing device, a gaming system, gaming equipment / accessories (e.g., a handheld controller, a wearable controller, etc.), an augmented or virtual reality system, an augmented or virtual reality device, a wearable device, an automatic vehicle (e.g., a driverless car) or a vehicle (e.g., a car, an airplane, a spacecraft, a submarine, etc.), etc. Apparatus 100 may include a user interface 102, such as a display screen or a touch screen.

[0065] The device 100 may include one or more buttons 104a-b, 106 to receive user input / actions and / or enable user control of the device. The buttons 104a-b, 106 are shown as protruding along the edge of the device 100, but it should be understood that the buttons can be set anywhere on the device. For example, if the device 100 is a smart phone, one or more buttons can be provided along any edge of the smart phone, on the front (screen side) of the smart phone, and / or on the back of the smart phone. In addition, it should be understood that the buttons 104a-b, 106 may not protrude from the device 100, but may be substantially flush with the surface of the device or integrated into the surface of the device. In an embodiment, one or more buttons of the device 100 may not be visible to a human user because various components of the button (e.g., touch detection mechanism, tactile feedback transmission mechanism, etc.) may be located below the surface or edge of the device 100, or integrated into the housing of the device 100. The button may not be pressable, and in some cases, the button may be touch-sensitive, so that no force (or force) is required to enable or activate the button. This may occur if a sliding or scrolling gesture is used to operate the button.

[0066] One or more buttons of device 100 may be tactile buttons, i.e., buttons capable of delivering tactile feedback to a user of device 100. Buttons 104a and 104b are small discrete buttons on the surface of device 100, while button 106 is a long button or touch-sensitive area on the surface of device 100.

[0067] If any of buttons 104a-b is a tactile button, the button may include a dedicated tactile component for generating localized tactile feedback.

[0068] If button 106 is a tactile button, the button may have one or more dedicated tactile components for generating local tactile feedback. For example, button 106 may have a single tactile component arranged at a position along the button (e.g., at the center of the button), in which case the tactile feedback may feel strongest at a point directly above / above the tactile component on button 106, and may feel less strong at a point further away from the point. Alternatively, button 106 may have two or more tactile components distributed along the length of the button (equally or otherwise). In this case, long button 106 may be used to provide tactile feedback in at least two different ways. For example, long button 106 may be used to provide tactile feedback using one of the tactile components. The tactile component generating tactile feedback may be located below or near the point where the user presses / touches on button 106, or may be located further away from the point. In another example, long button 106 may be used by the user to scroll or slide, and each tactile component may provide tactile feedback depending on the position where the user touches / presses the button at a given time. That is, when the user slides along the button near the haptic component, the particular haptic component may be activated, and when the user slides along the button further away from the haptic component, the particular haptic component is deactivated. If the user slides along the long button 106 to, for example, increase the volume of a certain audio output, the "intensity" of the haptic feedback may increase as the user slides. For example, the "intensity" of the haptic feedback provided by the first haptic component (which corresponds to a lower volume selection) may be lower than the "intensity" of the haptic feedback provided by the second haptic component (which corresponds to a higher volume selection).

[0069] Figure 2 is a device 200 capable of providing tactile feedback (such as Figure 1 As described above, the apparatus 200 may be a smartphone, a mobile computing device, a laptop, a tablet computing device, a gaming system, gaming equipment / accessories (e.g., a handheld controller, a wearable controller, etc.), an augmented or virtual reality system, an augmented or virtual reality device, a wearable device, or a vehicle (e.g., a car, an airplane, a spacecraft, a submarine, etc.).

[0070] The device 200 includes at least one haptic component 210 to generate tactile feedback. As described above, the haptic component 210 may not be associated with a physical button visible to the user, or may not include a physical button visible to the user. In an embodiment, the haptic component 210 may include a piston or button that provides tactile feedback when operated.

[0071] In a particular embodiment, the haptic component 210 or each haptic component 210 may include a mechanism for moving a button of the device in a lateral direction relative to the user's contact. Example mechanisms for doing this are described in International Patent Publication WO2018 / 046937 and British Patent Publication No. GB2551657, both of which are incorporated herein in their entirety. Additionally or alternatively, the haptic component 210 or each haptic component 210 may include a mechanism for moving a button of the device in a direction perpendicular to the contact surface of the button (and the surface of the device 200 in which the button is incorporated). Example mechanisms for doing this are described in British Patent Application Nos. GB1803084.1 and GB1813008.8, both of which are incorporated herein in their entirety.

[0072] The or each haptic assembly 210 includes at least one shape memory alloy (SMA) actuator wire 212 .

[0073] The or each haptic assembly 210 may optionally include a control circuit 214 to control the SMA actuator wires 212. In other words, a dedicated control circuit 214 may be used to individually control a particular haptic assembly 210 (i.e., one control circuit 214 controls one haptic assembly 210), or a single control circuit 214 may be used to control multiple haptic assemblies 210 (i.e., one control circuit 214 controls many haptic assemblies 210). In some embodiments, control of the SMA actuator wires 212 may be performed using a processor 202 or control circuit external to the haptic assembly 210.

[0074] In an embodiment, as described in UK patent application No. GB1813008.8, the tactile assembly 210 may include a button movable along a first axis of the assembly and at least one intermediate movable element in contact with the button. The at least one intermediate movable element is movable in a plane defined by the first axis and a second axis, the second axis being perpendicular to the first axis. The at least one intermediate movable element is arranged to drive the button to move along the first axis. The tactile assembly 210 may include at least one SMA actuator wire coupled to the at least one intermediate movable element and arranged to move the intermediate movable element in a plane when contracted.

[0075] Alternatively, as described in UK patent application No. GB1813008.8, the haptic assembly 210 may include a button movable along a first axis, and at least one intermediate movable element in contact with the button and rotatable about a second axis parallel to the first axis. In this case, the at least one intermediate movable element is also arranged to drive the button to move along the first axis. The haptic assembly 210 may include at least one SMA actuator wire coupled to the at least one intermediate movable element and arranged to rotate the intermediate movable element about the second axis when contracted.

[0076] It should be understood that these two examples of haptic components are merely illustrative, non-limiting examples, and that the techniques described herein for delivering haptic feedback can be used with any type or arrangement of haptic components. In both examples, the movable element of the haptic component can be provided as a physical button that a user can engage, or the movable element can be "hidden," such as beneath the surface of the device or beneath / behind a screen.

[0077] The or each haptic assembly 210 may optionally include a resistance measurement circuit 216 to measure the resistance of each SMA actuator wire 212 (e.g., to determine the state of the SMA actuator wire). There may be a dedicated resistance measurement circuit 216 to measure the resistance of each SMA actuator wire 212 for a single haptic assembly 210, or there may be one resistance measurement circuit 216 for multiple haptic assemblies 210.

[0078] The device 200 may include at least one processor 202 coupled to the or each haptic component 210. A single processor 202 may be used to control multiple haptic components 210, or a dedicated processor 202 may be used to control a single haptic component 210. In an embodiment, the processor 202 may be used to implement other functions of the device 100. The or each processor 202 may include processing logic for processing data (e.g., data received from any sensor). The processor 202 may be a microcontroller or a microprocessor. The processor 202 may be coupled to at least one memory 206. The memory 206 may include working memory and program memory storing computer program code for implementing some or all of the processes for generating tactile feedback described herein. The program memory of the memory 206 may be used to buffer data when executing the computer program code.

[0079] The device 200 may optionally include one or more interfaces 208, such as a conventional computer screen / display, a keyboard (virtual or physical), a touch screen / touch sensor, a mouse, and / or other interfaces (such as network interfaces and software interfaces). The interface 208 may include a user interface, such as a graphical user interface (GUI), a touch screen, a microphone, a voice / speech recognition interface, a physical or virtual button. Interaction with the interface 208 may be used to generate a command for the tactile feedback to be generated.

[0080] The apparatus 200 may optionally include a database or storage device 204 to store, for example, any data collected by any sensor 218, and / or to store any data that may be used to generate tactile feedback. For example, the storage device 204 may store one or more tactile feedback profiles and / or one or more lookup tables indicating how the tactile feedback profile may need to be adjusted to account for environmental factors (e.g., temperature, state of the SMA actuator wire, humidity, etc.). Optionally, such data and lookup tables may be stored in the memory 206.

[0081] The device 200 may optionally include at least one sensor 218. The sensor 218 may be provided in the device, and the output of the sensor may be used to control the haptic component 210 or each haptic component 210. Optionally, the sensor 218 may be provided in the haptic component 210 or each haptic component 210. Optionally, one or more sensors may be provided in the device 200, and one or more sensors may be provided in the haptic component 210 or each haptic component 210. Regardless of where the sensor 218 is located, the sensor may be a temperature sensor (e.g., a thermistor), a humidity sensor, a touch sensor (e.g., a capacitive sensor, a force sensor, a contact sensor, etc.), an accelerometer, or a gyroscope. In a specific non-limiting example, a temperature sensor may be provided in the device 200, and a force sensor may be provided in the haptic component 210 or each haptic component 210.

[0082] The device 200 may include a power source 220, such as a battery / rechargeable battery. The power source 220 may be used to power each haptic component 210. The power source 220 may also be used to power other components of the device 200 (e.g., the processor 202 and the interface 208). Optionally, the device 200 may include multiple power sources 220.

[0083] Figure 3300 is a schematic diagram of an example system 300 for generating tactile feedback. System 300 can be considered to be a tactile feedback rendering system. In general, the output of a tactile component that uses an actuator (e.g., an SMA wire) to transmit a tactile sensation may depend on various environmental factors (such as the age of the tactile component, the number of uses or the frequency of use, the last time it was used, etc.) and the technical specifications of the tactile component (e.g., the diameter of the SMA wire, the number of SMA wires, the resistance of the SMA wire, etc.). Environmental factors and / or technical specifications may cause the output tactile sensation transmitted by the tactile component to be different from or deviate from the desired output. (Hereinafter, the term "environmental factor" is used as a shorthand, generally meaning environmental factors and technical specifications). For example, due to normal wear of the tactile component, the intensity of the tactile sensation may decrease over time. This may be problematic because the user experience may decrease over time. Another problem with existing tactile feedback systems is that they typically output limited types of tactile sensations. For example, some systems may only output a buzzing sensation, regardless of what user action has been performed (e.g., button presses, typing, scrolling, selection, etc.). However, it may be desirable to output different types of tactile sensations, such that, for example, different user actions are associated with different types of tactile sensations. This can enhance the user experience. Similarly, it may be desirable to allow a user to customize the tactile sensations delivered for different types of events or user actions.

[0084] In the present technology, and as described above, a "haptic profile" is a description of a particular type of haptic sensation. In general, the term "haptic profile" is used herein to mean any description, definition, or manner of describing / defining a particular haptic sensation to be delivered by a device (such as device 100 or 200). In an embodiment, the definition or description may be device agnostic. In other words, the definition / description may not depend on the technical specifications of the device or haptic component used to deliver haptic feedback. In this case, the haptic profile may be modified before being used to deliver haptic feedback to take into account the technical specifications or capabilities of the haptic component or device. Alternatively, the definition / description may depend on the technical specifications of the device or haptic component.

[0085] In embodiments of the present technology, a haptic profile may be defined using one or more "primitives". The term "primitive" is used herein to mean a base or root value used to define a haptic profile, but which itself is not derived from another value. One or more of the following primitives may be used to define a haptic profile:

[0086] • Strength - This primitive value indicates the width of the pulse used to deliver the haptic sensation, or may indicate how much the haptic button may be displaced / moved to deliver a particular haptic sensation.

[0087] More specifically, intensity can be defined as the percentage of pulse duration that, given a particular power setting, will cause the haptic actuator to reach its maximum travel value. For example, a 5V setting might require a square wave of 8ms duration to reach maximum value. In this case, a single pulse at 75% intensity indicates a square wave of 6ms duration;

[0088] Number of pulses - this primitive value indicates the number of pulses / motion instances required to deliver a specific tactile sensation;

[0089] Tempo - This primitive value indicates the time between the end of one pulse and the beginning of the next pulse in a pulse train or burst;

[0090] - Pitch - This primitive value indicates the power to be applied during a pulse to deliver a particular haptic sensation, with higher power resulting in higher pitch.

[0091] Thus, each haptic profile may be defined using one or more of these primitives. In certain embodiments, a haptic profile may be constructed using pulse intensity, duration, and number of pulse primitives, and primitives defining pitch (i.e., power or energy) may be optional. Primitives may be fixed constants, variables, or may be defined by mathematical functions. Primitive values ​​do not depend on the device or haptic component used to deliver haptic feedback. Figure 4 These primitives are described in more detail.

[0092] In the present technology, a tactile profile can be selected and used to generate a specific desired tactile sensation. System 300 includes a tactile profile selector 304 for selecting a suitable tactile profile for a desired tactile sensation. In an embodiment, the tactile profile selector 304 can select a tactile profile from a set of tactile profiles. Alternatively, the tactile profile selector 304 can generate a tactile profile based on one or more primitives that produce a desired tactile sensation. The tactile profile selector 304 can be triggered or started based on any type of input or trigger. An example trigger is a command 312. The command 312 can be a command generated from the implementation of a specific program or application in the device providing the system 300. Another example trigger is sensor data 314. Sensor data 314 can be received from a button of a device that has been pressed by a user. In other words, a force sensor, for example, can be used to detect a button press, and the sensed force can trigger the tactile profile selector 304 to select a tactile profile. In an embodiment, the magnitude of the force can also be used to select a tactile profile.

[0093] Optionally, the system 300 may include a haptic profile editor 302. The haptic profile editor 302 may enable a specific type of haptic event to be generated before haptic feedback is delivered or when haptic feedback has been requested. In an embodiment, a user may define the type of haptic feedback or sensation, which may be performed using the haptic profile editor 302. The haptic profile editor 302 may be provided as a graphical user interface that allows a user to define a haptic event. In one example, a haptic event may be simply a type of haptic sensation as defined by a haptic profile. In this case, the user interface of the haptic profile editor 302 may enable a user to select the value of one or more primitives. For example, the user interface may include a slider bar of one or more primitives that allows a user to modify or select, which may allow a user to select the value of a primitive between some minimum and maximum values. In another example, the user interface may include a drop-down list of predefined values ​​of one or more primitives, and a user may select the value of a primitive from a drop-down list of options. In an embodiment, one or more primitives may not be modified by a user. For example, it may not be desirable to allow a user to adjust the amount of power of a pulse of at least one SMA actuator line used to drive a haptic component.

[0094] The system 300 may include a haptic event renderer 308. When a haptic profile 304 has been selected, it may be sent / transmitted to the haptic event renderer 308. The haptic event renderer 308 may be used to generate a haptic drive signal using the received haptic profile. The haptic drive signal is used to control at least one SMA actuator wire of the haptic component to deliver haptic feedback. In an embodiment, the haptic event renderer 308 may generate only drive signals for the SMA actuator wires based only on the haptic profile selected by the haptic profile selector 304. In other embodiments, the haptic event renderer 308 may generate drive signals taking into account environmental data or factors 306 as well as the selected haptic profile. The environmental data 306 may be, for example:

[0095] The current temperature in the vicinity of the SMA actuator wire, or the current temperature of the environment external to the device, such as measured, estimated, or derived;

[0096] The status of the SMA actuator wires;

[0097] The history of the haptic component, e.g., the time since it was last used to deliver haptic feedback;

[0098] The age of the haptic component, for example, the total number of times it has been used to deliver haptic feedback, or how old the material is (which could lead to creep);

[0099] The orientation and / or position of the device for delivering tactile feedback;

[0100] The resistance value of the SMA actuator wire, such as a measured, estimated, or derived resistance value;

[0101] Humidity near the SMA actuator wires or humidity in the environment outside the device; and

[0102] The time between presses of a tactile button;

[0103] • The size of the actuator (ie, the volume of the wire and / or the resistance of the SMA actuator wire).

[0104] It should be understood that these are just some examples of environmental data 306 and that this list is not an exhaustive list.

[0105] The haptic event renderer 308 may modify the haptic profile based on any received or input environmental data 306 to generate drive signals for the SMA actuator wires. Some examples are now described.

[0106] Temperature: A haptic profile may have been defined for a device being used in a room temperature (e.g., 21°C) environment. However, the device may actually be used in an environment with higher or lower temperatures. For example, the device may be used outdoors in winter, or in a country with a colder climate. Haptic components and in particular SMA actuator wires may operate differently in cooler / colder temperatures. For example, it may take longer for an SMA actuator wire to contract at a lower temperature, or more power may be required. Therefore, the haptic event renderer 308 may take into account the colder temperature to generate a drive signal that allows the same haptic sensation (as defined by the haptic profile) to be delivered. The haptic event renderer 308 may access the current temperature to achieve this, for example, the current temperature may be stored in the device. The haptic event renderer 308 may keep aspects of the waveform defined by the haptic profile the same (such as power (voltage or current) or duration), but may change other characteristics of the waveform in order to deliver the desired haptic sensation. Optionally, the haptic event renderer 308 may adjust the power (voltage or current) or duration. Optionally, haptic event renderer 308 can adjust the power, duration, and / or other characteristics of the waveform. Optionally, haptic event renderer 308 can perform additional actions (eg, pre-heating of the line) before rendering the haptic profile.

[0107] State of the SMA actuator wire: In some cases, the current state of the SMA actuator wire may make it unsafe to pass power to the wire. Therefore, the haptic event renderer 308 can use the current state of the SMA actuator wire to determine whether it is safe, unsafe, or somewhat safe to pass power to the wire. More generally, it is desirable to ensure that the maximum energy is not exceeded, regardless of the history or current state of the SMA actuator wire, to prevent damage to the SMA actuator wire. The haptic profile may specify the energy to be passed to the SMA actuator wire, but this may be based on a certain default SMA actuator wire specification (e.g., wire volume). For example, the maximum power that can be passed to a thinner wire than the default SMA actuator wire may be lower. Therefore, the haptic event renderer 308 may use information about the SMA actuator wire itself to generate a drive signal for the wire. The haptic event renderer 308 may use a lookup table (which may be populated using experimental and / or model data) to determine whether it is safe to pass the energy defined in the haptic profile. (In some cases, the safety level may be calculated / determined in real-time / dynamically, and a lookup table may not be used.) For example, the lookup table may show a safe / allowable amount of energy that may be delivered to the wire at a particular temperature. Accordingly, the haptic event renderer 308 may generate a drive signal having a lower energy than that defined by the haptic profile. In some cases, it may not be safe to deliver any energy to the SMA actuator wire, and the haptic event renderer 308 may not generate a drive signal. In such cases, the haptic event renderer 308 may truncate the drive signal or pulse being delivered, or omit a pulse of the drive signal, or cancel the drive signal entirely.

[0108] History of haptic components: In some cases, the haptic event renderer 308 can use the history of the haptic component to generate a drive signal. For example, to prevent damage to a haptic button or SMA wire, it may be desirable to limit the number of times a haptic button is actuated within a particular time period (e.g., per second or per minute). In another example, to prevent damage to the haptic button or SMA wire, it may be desirable to have a minimum "rest" period between actuations of a haptic button or between pulses of a particular haptic sensation. The haptic event renderer 308 can determine when the last actuation occurred and then generate a drive signal that includes a delay to provide this "rest" period. Similarly, when generating a drive signal, the haptic event renderer 308 can adjust the time between pulses (as defined by the haptic profile).

[0109] Lifespan of haptic component: When generating a drive signal, haptic event renderer 308 can take into account the total number of times the haptic component has been used to deliver haptic feedback. For example, the operation of one or more components of a haptic component can change over time, such that as the haptic component ages, a greater force may need to be used to achieve the same haptic sensation. Therefore, when generating a drive signal, haptic event renderer 308 can take into account the lifespan of the haptic component (however the lifespan of the haptic component may be defined).

[0110] Orientation and / or position of the device for delivering haptic feedback: An accelerometer or gyroscope can be used to determine the orientation and / or position of the device, and the haptic event renderer 308 can use the results to generate drive signals to deliver a particular haptic sensation.

[0111] Resistance value of the SMA actuator wire: In some cases, the resistance of the SMA actuator wire can be measured or derived, and the haptic event renderer 308 can use this resistance value when generating the drive signal. For example, the static resistance value can indicate how much power can be safely applied to the SMA actuator wire (or how much more power can be applied). The resistance value can also indicate how much power is required for the SMA actuator wire to contract the amount required to deliver the haptic sensation. This resistance value is considered the static resistance value.

[0112] In some cases, the drive signal may include driving the SMA actuator wire toward a target resistance value. In this case, a dynamic resistance measurement may be performed to determine whether the target resistance has been reached or whether the SMA wire needs to be further driven. However, if the maximum allowed / safe power is reached when performing such a drive, the tactile component may attempt to continue driving the SMA actuator wire regardless of the fact that the target resistance cannot be reached. In this case, the tactile event renderer 308 may adjust the drive signal during use (i.e., during the tactile sensation delivery) to adjust the target resistance value. For example, the tactile event renderer 308 may be intended to deliver a pulse with a duration of 5ms, but if the desired target resistance has not been reached within this time, the tactile event renderer 308 may adjust the target and / or pulse duration. (However, significant adjustments may cause the tactile sensation to be different from the desired tactile sensation. For example, if the pulse duration is extended, the tactile sensation may no longer feel like a soft buzzing sound, but instead feel like a click).

[0113] Humidity: It may not be desirable to deliver haptic sensations when there is a high risk of condensation forming inside the haptic assembly. This may be the case if the ambient temperature is low, because powering the SMA actuator wires causes the haptic assembly to heat up and may cause condensation to occur, which may cause a short circuit to occur. (This may also be a problem if the device is in an environment of <0°C and then brought to an environment of >0°C, in which case condensation may occur even when the SMA actuator wires are not powered). Condensation can cause damage to components of the haptic assembly. Therefore, the haptic event renderer 308 may not generate a drive signal when the humidity inside the haptic assembly is above a certain threshold.

[0114] Time between presses of haptic button: Whenever haptic profile selector 304 selects a haptic profile (in response to a request for haptic feedback to be delivered), haptic event renderer 308 may not generate a drive signal. For example, if a haptic button is pressed more than N times within a particular duration D, haptic event renderer 308 may ignore the most recent button press (e.g., the most recently selected haptic profile received from haptic profile selector 304). Thus, in some cases, system 300 may be a frequency-limited system. In an embodiment, the allowed frequency may be varied based on the haptic profile and information about a previous haptic profile that was most recently used to deliver haptic feedback.

[0115] System 300 may include amplifier 310. Amplifier 310 may be used to handle any problem of high instantaneous power and / or actuator capabilities.

[0116] When the drive signal has been generated, it is transmitted to the control circuit and used to control at least one SMA actuator wire of the actuator 316 to deliver tactile feedback.

[0117] The system 300 may include a scheduler 500. The scheduler may be operable to resolve possible timing conflicts in the scheduling of pulses for one or more specific actuators. In particular, the scheduler may be operable to adjust the timing of one or more pulses in the event that insufficient system resources are available to fully satisfy all requests.

[0118] In an embodiment, the system 300 may be fully implemented in a device capable of delivering tactile feedback (e.g., devices 100, 200). Alternatively, certain functions of the system 300 may be distributed across two or more devices. For example, in an embodiment, the tactile profile editor 302 may be provided outside the device, and the tactile profile generated therein may be uploaded to the device.

[0119] Figure 44 is a schematic block diagram of a system architecture 400 for generating haptic feedback. As described above, haptic profiles 408 and / or primitives 402 are used to generate and deliver haptic feedback. The haptic feedback may be delivered as part of a pipeline 418 (see definition above). System architecture 400 will now be explained in more detail.

[0120] When a request for tactile feedback is received (such as reference Figure 3 408. The rendered haptic profile defines instructions for driving at least one SMA actuator wire. The haptic profile may be rendered by selecting a profile from a set of predefined haptic profiles 410, or by dynamically (i.e., during the process of generating and delivering haptic feedback) generating a generated profile 412. In an embodiment, the rendering process may include rendering a haptic profile based solely on received instructions / requests to deliver haptic feedback. In an embodiment, the rendering process may also include taking into account additional information, such as the environmental data 306 described above.

[0121] Predefined Profiles: One or more predefined haptic profiles 410 may be stored in the system 400 and may be accessed by the haptic profile selector 304. The selection may be based on one or more factors. For example, the selection may be based on:

[0122] Which button or tactile button was pressed;

[0123] The reason the user pressed the button (e.g., to make a selection, as part of a game, to change audio output volume, to scroll, etc.);

[0124] Environmental data;

[0125] The force with which the button / tactile button is pressed;

[0126] Software incidents; and / or

[0127] • A message, trigger, or other received communication (e.g., a communication or message received from another device or source).

[0128] It should be appreciated that these are just some of the factors that may be used to determine which haptic profile to select from a set of predefined haptic profiles 410 .

[0129] When the haptic event renderer 308 uses the predefined haptic profile 410 to generate a drive signal for the SMA actuator wire, the haptic event renderer 308 may do so using only the contents of the selected predefined haptic profile 410. Alternatively, the haptic event renderer 308 may use one or more inputs 416 (e.g., environmental data) in conjunction with the selected predefined haptic profile 410 to generate a drive signal. This may include modifying aspects of the selected predefined haptic profile 410.

[0130] Generated profile: The tactile event renderer 308 can generate a generated tactile profile 412 based on the received instructions / requests for tactile feedback. The tactile event renderer 308 can generate the generated tactile profile 412 using only the received instructions in some cases. Alternatively, the tactile event renderer 308 can use one or more inputs 416 (e.g., environmental data) in conjunction with the received instructions / requests to generate a drive signal. In each case, the tactile event renderer 308 uses one or more primitives 402 to construct the generated profile 412. The primitives 402 can be predefined primitives 404 or variable primitives 406, or a combination of both.

[0131] As mentioned above, one or more primitives can be used to define a tactile profile. System 400 can include a storage device with one or more predefined primitives 404. Predefined primitives 404 can be fixed constants. One or more primitives can be variable primitives 406. Variable primitives 406 can change according to one or more inputs 414 (e.g., environmental data). Predefined primitives 404 and variable primitives 406 can include one or more of the above-mentioned primitives, i.e., intensity, number of pulses, speed, and pitch. In an embodiment, it may be desirable to prevent primitives from changing. For example, it may be desirable not to change the pitch because doing so can cause damage to the system.

[0132] Thus, generated haptic profile 412 may be constructed using predefined or fixed primitives 402 and / or variable primitives 406 .

[0133] The tactile feedback can be delivered as part of a pipeline, and therefore, the system 400 can include one or more pipelines 418, or at least have the ability to build a pipeline. The term "pipeline" is used herein to refer to a list or sequence of events or actions. Events / actions may need to occur in a specific order, and the order can be defined in the pipeline. For example, a pipeline can specify a series of events A, B, and C, and can specify that A must occur before B and B must occur after C. In addition to events / actions, a pipeline can also contain conditional statements. Conditional statements can be statements of the "if this then that" (IFTTT) type or statements of the "if else" type. For example, a pipeline can specify "if X, then action A must occur, or if Y, then ignore action A and start with action B", where X and Y are specific conditions. These conditions can be, for example, the value of some environmental data (e.g., current temperature, resistance value of SMA wire, etc.). Additionally or alternatively, the condition may be based on other programs, software, applications or actions taken or run on the device to which the haptic feedback is to be delivered. For example, the condition may be whether audio is being output from the device.

[0134] The pipeline 418 may be a predefined pipeline 420, or may be a generated pipeline 422 that is dynamically generated (e.g., as part of the process of delivering haptic feedback). Each predefined pipeline 420 and each generated pipeline 422 includes at least one action 428. The action 428 may be a command or may be associated with a command for implementing the action 428. For example, if the action 428 is "output audio," the action 428 may be associated with a command, instruction, or script that implements the action. (For example, the action may cause a trigger within the device, which may then, for example, check a memory location to determine what action to perform (e.g., play audio)). Similarly, if the action 428 is "deliver haptic feedback," the action 428 may be associated with instructions outlining where the drive signal needs to be sent in order to deliver haptic feedback (e.g., to each SMA actuator wire or a specific SMA actuator wire, or to a control circuit for controlling a haptic component, etc.).

[0135] In an embodiment, the predefined pipeline 420 and / or the generated pipeline 422 may include one or more primitives 430. As described above, the primitive may be a predefined and / or variable primitive. The primitive 430 may be provided as a type of action 428. For example, if the pipeline specifies a series of actions 428A, B, C, and D, action A may be a primitive or a group of primitives 430 (or an action to obtain one or more primitives from a memory), action B may be a command to build a tactile profile using action A, action C may be used to generate a drive signal using the tactile profile, and action D may be used to apply the drive signal to deliver tactile feedback. More generally, each action 428 may be associated with a command, script, or other instruction on how to implement the action 428 or how to complete the steps associated with the action 428. In some cases, the primitive 430 may be simply or include a pointer to the location of the primitive value itself. That is, the primitive 430 may be a pointer to the location of the primitive value in the memory.

[0136] A trigger 424 can trigger the start of pipeline 418. Trigger 424 can be an instruction or input signal requesting the delivery of tactile feedback. Trigger 424 can initiate the selection of a predefined pipeline 420, or can cause the generation of a generated pipeline 422. Optionally, one or more inputs 426 (e.g., environmental data) can also be used to select a pipeline or generate a pipeline. Input 426 can be used to modify the selected predefined pipeline 420. Regardless of whether it is predefined, modified, or generated, the pipeline includes one or more actions 428, where action 428 can be a primitive 430. Primitive 430 can be a fixed / predefined primitive, or can be a variable primitive that can change according to one or more inputs 426.

[0137] Regardless of whether it is predefined or generated, one of actions 428 of pipeline 418 can be used to select or build haptic profile 408. A haptic profile can be selected from the set of predefined haptic profiles 410 using information in trigger 424 and / or input 426. Alternatively, a haptic profile can be generated 412 using information in trigger 424 and / or input 426. Using one or more inputs 416, the selected predefined haptic profile 410 can be modified, or the generated profile 412 can be built.

[0138] Thus, in the simplest case, every aspect of the system is predefined. In this case, a trigger can cause a predefined pipeline 420 to be initiated, wherein all actions 428 of the pipeline are defined, and the haptic profiles 408 and primitives 402 that the pipeline can rely on are also defined. A more complex case is one where every aspect of the system is dynamically generated. In this case, a trigger can cause a pipeline 422 to be generated, and the haptic profiles 408 and primitives 402 that the pipeline needs to use are also dynamically generated or changed / modified. It should be understood that there are a large number of possibilities between these simple and complex cases.

[0139] In certain embodiments, pipeline 418 may be optional. For example, if pipeline 418 only includes action 428 for delivering haptic feedback using predefined haptic profile 410, pipeline 418 may not be necessary. In this case, trigger 424 may directly initiate the selection of predefined haptic profile 410.

[0140] This technique is intended to use reference Figure 4 Describes the system architecture for delivering haptic feedback.

[0141] If more than one haptic feedback event is required at the same time or nearly at the same time, so that different haptic events may conflict, certain problems may arise in delivering such events. This is referred to herein as a scheduling conflict, and such a conflict occurs when at least two pulses are requested so that at least a portion of at least two pulses occur simultaneously.

[0142] One problem arises due to the typically limited instantaneous power available to deliver tactile feedback. This is particularly true in devices (such as smartphones, wearable devices, cameras, etc.) that have limited and typically constrained available power. In order to optimize the power performance of the device in question, a single power supply can be provided to provide power to multiple tactile actuators, each associated with a tactile button or part of the device. Because of this, it is not possible to drive all tactile actuators at any given time. A system may include, for example, three actuators, but only two of them may be driven simultaneously.

[0143] Another problem involves systems such as Figure 4 Typically, the pulses are controlled by hardware, for example using a 16 or 32-bit timer provided in an integrated circuit IC. Such an IC has a limited number of available pins or connections, and therefore may not be able to control the delivery of tactile feedback to all available actuators simultaneously. Therefore, the total available energy that can be delivered may be implicitly limited by the available hardware resources. In addition, there may be other hardware limitations that affect the generation and delivery of pulses.

[0144] It is therefore desirable to define a scheme by which requests to provide haptic feedback to different actuators are processed and scheduled in a manner that respects the requests and conforms to the constraints of the physical layout of the device.

[0145] Embodiments of the present technology should be directed to addressing issues of limited power and / or hardware and relative timing constraints of individual pulses in a single pulse train associated with a particular actuator.

[0146] Generally speaking, practical embodiments of the present invention may need to share some hardware resources, which limits the ability to independently create tactile feedback pulses for different tactile actuators. This may be due to the need to share one or more power supplies, timers, I / O pins, schedulers, or other resources.

[0147] For this reason, one or more schedulers are provided. Each scheduler is implemented in two phases: a wait phase; and a preload phase. The wait phase is typically implemented in firmware, which is where individual pulses and pulse trains are sequenced and prioritized. The preload phase is typically implemented in hardware, which is where the pulses are loaded (typically 1 ms before the start of the pulse). This ensures that the pulses can be programmed with appropriate accuracy in terms of delay and width.

[0148] The referenced scheduler 500 is Figure 5 5. The preload region 510 is immediately preceded by the wait region 520. Sample pulses (pulses 0, 1, and 2) are shown at different stages in the scheduler 500.

[0149] A pulse train including one or more pulses is initially loaded into the waiting area 520 where the pulses are sorted and prioritized. When a new pulse train is added to the non-empty scheduler, the scheduler must resolve potential conflicts by rescheduling the pulses using a strategy or scheme. Several schemes are described below. One or more schemes may be implemented as needed.

[0150] In the following, a pulse train is intended to mean a series of one or more individual pulses. Each pulse is generally a square pulse, i.e. a pulse with sharp rising and falling edges. However, other pulses may be used as desired, including pulses with more sinusoidal, triangular or other shapes.

[0151] In the above, profiles have been mentioned, and it is desirable to understand the interrelationship between profiles and pulse trains. The previously mentioned pipeline may include one or more profiles, and the output from the pipeline is a pulse train. Therefore, in simple cases, profiles and pulse trains may be synonymous, but a pulse train may include multiple profiles.

[0152] In certain circumstances below, a single pulse may include other pulses as required by the circumstances. For example, a pulse may be defined in terms of a start time and a duration. If another parameter (duty cycle) is also defined, the pulse may be switched according to the defined duty cycle within the total duration of the pulse, effectively reducing the energy of the pulse without changing its duration.

[0153] As an alternative to using switching pulses within the total duration of the pulse (which may be less than ideal in some cases due to the presence of possible high frequency switching noise), the energy of the pulse can be adjusted by a linear drive which is able to adjust the amplitude of the output pulse.

[0154] In the first scenario, the following rules apply:

[0155] Pulses are prioritized based on their start time;

[0156] When there is a conflict between two pulses, the second pulse is delayed until the first pulse ends; and

[0157] The pulse width never changes.

[0158] The first scenario is easy to implement because the rules are clear. In this case, the energy of the individual pulses does not change. However, it can produce a burst or concentration of energy on a single actuator. This may be undesirable because each actuator is usually specified to receive a certain maximum energy input at a given time. If the amount of energy applied is at or close to this maximum, then the actuator may not function properly or may even be damaged. In addition, the relative timing of pulses in the same pulse train can be changed by applying the rules.

[0159] Figure 6 The first strategy is shown applied to two desired pulse trains (Pulse Train 0 and Pulse Train 1). Pulse Train 0 includes pulses A, B, and C. Pulse Train 1 includes pulses D, E, and F. In this case, pulse trains 0 and 1 are generated using a common power supply that shares a common scheduler 500.

[0160] By applying the rules of the first scheme, the start times are prioritized and the combined drive output (pulse train 0+1) is shown. In this way, for example, pulse D follows pulse A and pulse E follows pulse D, meaning that the pulses appear in the drive output in the same order as requested and the resultant pulse has the same length as requested. However, as mentioned before, with this scheme, energy can be concentrated in an undesirable way, so care needs to be taken. By checking Figure 6, pulses D and E are requested to have a short time between them, but by applying the rules of this scheme, pulse D and pulse E actually have no time or very little time between them in the output.

[0161] In the second scenario, these rules apply:

[0162] Pulses are prioritized based on their start time;

[0163] When there is a collision between two pulses, the second pulse is delayed until the first pulse ends;

[0164] When a pulse is delayed, subsequent pulses of the same pulse train are delayed by the same duration; and

[0165] The pulse width never changes.

[0166] In the second scheme, the energy of the individual pulses is not varied, and there is no burst of energy on a single actuator.The relative timing of pulses within the same pulse train may be varied.

[0167] The effect of applying the second solution is as follows Figure 7 As shown, Figure 7 Shown with Figure 6 Pulse train 0 and pulse train 1 are identical, but due to the application of the second scheme, the resultant pulse train 0+1 is different.

[0168] Now, the individual pulses are initially ordered according to their start time, but in case of a conflict, the second pulse is delayed until the first pulse has finished. This changes the relative ordering of pulses A, D, B, and E compared to the first scheme, since pulses B and E are now swapped in order. Figure 6 Compared with the first solution, the total time for outputting all pulses A to F increases. In addition, by applying this solution, pulses D and E are separated in time, avoiding the risk of excess energy in a specific actuator.

[0169] Furthermore, pulse F is delayed by the same amount as pulse E.

[0170] In the third scenario, these rules apply:

[0171] Pulses are prioritized according to their start time; and

[0172] When there is a collision between two pulses, the width of the second pulse is truncated to accommodate, or removed entirely.

[0173] In this scheme, the energy of individual pulses can be varied by truncating or deleting them. There are no bursts of energy on a single actuator.

[0174] The effect of applying the third solution is as follows Figure 8 As shown, Figure 8 Shown with Figure 6 The pulse train 0 and pulse train 1 are the same, but due to the application of the third scheme, the resultant pulse train 0+1 is different.

[0175] Here, it can be seen that by applying the third scheme, pulse D has been omitted, and pulse B has been truncated because it conflicts with pulse E. Similarly, pulse F has been omitted because it conflicts with pulse C.

[0176] In the fourth scenario, this rule applies:

[0177] Any pulses contained in a burst remain unchanged, and any new bursts are added to the end of the current burst.

[0178] In this scheme, the energy of the individual pulses does not change. There is no burst of energy on a single actuator, and the relative timing of pulses in the same pulse train does not change. However, some pulses or pulse trains can have larger delays.

[0179] exist Fig. 9 The application of the fourth solution is shown in FIG. Fig. 9 Shown with Figure 6 The same pulse train 0 and pulse train 1, while the resultant pulse train 0+1 is different due to the application of the fourth scheme. Note that the time interval between pulses E and F in the output pulse train 0+1 is the same as the time interval in the input pulse train 1.

[0180] Here, burst 1 is added only after burst 0 is generated.

[0181] It can be seen that by selecting one of the above solutions (1-4), different effects can be achieved, and one or more solutions can be implemented in any given device, depending on specific requirements. Specific requirements can be based on, for example, the desired user experience.

[0182] For example, if several haptic feedback events are scheduled and need to be modified by one or more of the above schemes, it may be particularly important to preserve a particular haptic feedback experience. For example, a sharp single haptic pulse of relatively short duration may be required at one actuator, while a relatively longer "soft buzz" feedback may be required at another actuator. If there are not enough resources to render both events at the same time, the scheme described above is used. To determine which scheme to use, a single sharp haptic pulse may be considered to take precedence over a buzz, and vice versa. This can inform the decision about which scheme to select. The decision may take into account, for example, whether it is more important to maintain the total duration of one or more haptic events, the relative order of different events, or whether a particular event can tolerate a reduction in energy.

[0183] Return to reference Figure 5 , note that individual pulses are preloaded at a moment before their actual expiration time using one or more high-precision timers configured in single-pulse mode. The typical preload time is 1ms. This ensures that the pulse is always preloaded before its actual start time.

[0184] The preload time may depend on various factors, such as the service rate of the haptic application in firmware and other hardware limitations. For example, a 16-bit timer that can operate in microsecond increments limits the total (delay + width) to 2^16 microseconds = 65.536ms.

[0185] The generation of pulses can be implemented using a 16-bit timer with microsecond precision configured in single pulse mode, where a single pulse is generated once triggered. Each scheduler should have at least one timer, but each actuator can have at most one timer.

[0186] A typical timer configured in single pulse mode is used to generate a pulse with the desired timing:

[0187] In counting-up mode, the timer starts from 0

[0188] Compare register loading with pulse delay

[0189] The time period or reload register is set to the delay + width of the pulse

[0190] When a compare match event is generated, the selected output is set to the active state

[0191] When a reload event is generated, the selected output is set to inactive and the timer is stopped

[0192] This is like Fig.10, where the delay period is followed by the width of the pulse as defined above. This arrangement is able to generate sub-microsecond accuracy for the pulse width and also minimize the jitter of the opening edge of the pulse. In general, it is desirable to minimize jitter so that the desired timing accuracy can be achieved. Any timing derived from a hardware counter is likely to be more accurate than timing derived from firmware or software, so this should be considered in system design.

[0193] An alternative technique uses pulse width modulation (PWM) to modulate the pulses and control the power applied to the SMA wire without changing the relative timing of the pulses.

[0194] This can be achieved using a second timer in addition to the simple timer mentioned above.

[0195] In this PWM implementation, the first timer is configured as described above. However, rather than directly driving the output of the SMA wire, the first timer is configured to enable the second timer. The second timer is operable in PWM mode, where the duty cycle is set according to the power to be applied to the SMA wire. In other words, if Fig.11 As the off time of the pulse in the "width" portion of the pulse shown is increased compared to the on time, the total power applied to the line is reduced.

[0196] If this PWM implementation is combined with one of the above schemes, it allows for finer control over the power of any particular pulse, since the total power can now be fine-tuned by the duty cycle of a particular pulse. This is one of the contexts mentioned earlier, where a pulse can be considered to also include multiple pulses. Fig.11 , a pulse is defined as having a duration defined by the difference between the start and stop times shown as a "width", which includes multiple other pulses. These other pulses are controlled by a specific PWM configuration and can be used to control the energy in a pulse having a duration "width".

[0197] The linear drive technique mentioned above can be used in conjunction with any of the above schemes (instead of PWM) to allow finer control of power or pulse energy. It should be noted that if linear drive is used, scheduling conflicts only occur when the total requested power exceeds 100% of the available power supply.

[0198] Another embodiment uses a priority system attached to a particular pulse train or pulses, whereby the relative importance of the pulse train or pulses is reflected in the priority classification, depending on the relative importance of the pulse train or pulses in providing tactile feedback to the user.

[0199] In this embodiment, if Fig.12As shown, each burst is associated with a priority level. In case of scheduling conflicts, bursts with lower priorities are rescheduled to take precedence over bursts with higher priorities.

[0200] In the event of a reschedule, use the Figures 6 to 9 The illustrated embodiments illustrate one or more schemes to reschedule lower priority pulses.

[0201] Fig.12 Pulse train 0 and pulse train 1 are shown. Pulse train 1 has a higher priority and therefore takes precedence over pulse train 0. As such, pulses D and E are output, and pulses A and B are delayed until D and E are complete. Similarly, pulse C is delayed until after pulse F, and is delayed by the same amount of time that pulse A is delayed. This maintains the relative timing between pulses D and F.

[0202] In fact, Fig.12 Use with Figure 7 The same reordering scheme is shown, but the priority level rather than the start time is used as the main consideration when rescheduling the pulses in the pulse train.

[0203] This embodiment can be further refined by defining categories for specific pulses or pulse trains. Here, each pulse or pulse train is associated with one or more predefined categories. If multiple pulse trains are added to the scheduler, it checks the category of each pulse train to determine which rules can be used to resolve conflicts. The category can define which rules in the available scheduling schemes can be used to resolve such conflicts.

[0204] These categories can be defined in such a way that important features of a particular pulse or pulse train are identified and prioritized. For example, one category can specify that an associated pulse train should / can be delayed when resolving a conflict. Another category can specify that the energy (i.e., pulse width) of a pulse train can be reduced when resolving a conflict. Yet another category can specify that a pulse train should not be changed at all.

[0205] The definition of other categories is possible, depending on the specific requirements of any particular system.

[0206] Fig.12 The embodiment explicitly applies different priorities to different bursts, while Figures 6 to 9 Embodiments of the present invention prioritize certain pulses within a pulse train based on rules associated with each of the schemes disclosed therein. At a more general level, it can be seen that certain pulses (or pulse trains) can be prioritized based on, for example, an explicit priority level assigned to it, a start time, a pulse sequence, a duration, or any other parameter associated with a particular pulse or pulse train.

[0207] Another embodiment provides a means of driving two actuators simultaneously, wherein the energy supplied to a given actuator is momentarily reduced, thereby adjusting the width of each pulse to ensure that the total energy delivered by a particular pulse remains constant. In effect, the "area under the curve" equivalent to the energy of the pulse is preserved as much as possible, so that a momentary reduction in the amplitude of a given pulse requires an extension of its duration.

[0208] This is like Fig.13 As shown, Fig.13 Pulse Train 0 and Pulse Train 1 are shown. As can be seen in the upper two traces, there is some conflict between the pulses in each pulse train. The lower two traces show the corresponding outputs of actuator 0 and actuator 1.

[0209] In this case, considering pulses A and D, the power delivered to the corresponding actuator is maximized during the time periods when either of these pulses does not conflict with the other. However, for the time periods when the two pulses conflict in time, each pulse is provided with half of the available maximum power. This is shown in the form of pulses A' and D', where the available power is reduced when power is provided to another pulse at the same time. Similar constraints apply to the other pulses shown. In this example, the pulses themselves are not rescheduled. Instead, the pulses are extended, if necessary, to ensure that the pulses apply the same amount of energy even if there is a conflict. Note that, for example, A' is wider than A, but represents the same total pulse energy.

[0210] Although illustrated with two competing pulse trains, it will be appreciated that the technique can be applied to situations with more potentially conflicting pulses. In this case, rather than providing each pulse with half of the maximum available power, each pulse can be provided with some fraction of the total available power. In the simplest case, if there are n competing pulses, the total power applied to each pulse can be 1 / n of the total available power. However, this 1 / n rule can be modified so that it is not evenly divided among the n pulses.

[0211] Advantageously, this embodiment can maintain the relative start timing of each pulse even if the duration of each pulse changes. The total energy applied to each pulse is maintained, but the instantaneous power can be reduced, which can result in a tactile pulse that is less sharp or less defined.

[0212] In another embodiment, when some pulse trains or actuators have higher priority, they can preempt pulse trains or pulses with lower priority in the scheduler. In this case, it is desirable that the scheduler adjusts the duration of the lower priority pulse so that it still delivers the required total energy.

[0213] This is like Fig.14 As shown, Fig.14 Two pulse trains are shown, pulse train 0 and pulse train 1. Pulse train 1 has a higher priority, so its pulses B, C and D preempt pulse A in the output and are displayed as B', C' and D' at the requested time position. Pulse A is actually divided into several sub-pulses A' in the output, which are interrupted by B', C' and D'. The total duration of sub-pulses A' is the same as pulse A in the original pulse train.

[0214] In this embodiment, the total energy and relative timing of the pulses are maintained, but the lower priority pulses may appear less intense or clear during the overlap period because the instantaneous power of these pulses is reduced.

[0215] In another embodiment, power is shared between the actuators in a time division multiplexing (TDM) manner. Fig.15 The frame structure is defined by multiple fixed-size frames. A typical frame size can be around 50μs. Fig.15 A total of 6 frames (0 to 5) are shown, each frame being divided into 2 time slots (0 and 1).

[0216] Each actuator is allocated a time slot within each frame, where the size of the time slot depends on the number of actuators powered by the same power supply. For example, if there are two actuators, each actuator will be allocated half of the time within a frame. If necessary, for example if the actuators involved have different sizes, the frame can be divided accordingly (e.g. 60:40), whereby larger actuators are allocated larger time slots.

[0217] The time slots of different actuators do not overlap, and each actuator can only be driven during its own assigned time slot within the frame. Pulse train 0 and pulse train 1 are shown as the expected input pulse trains. The lower trace (power supply) shows the power output of the power supply. When the corresponding pulse train 0 is high, the time slot 0 in each frame is "high". Similarly, when the corresponding pulse train 1 is high, the time slot 1 in each frame is "high".

[0218] In this way, the available power supply can be shared among any number of actuators by means of a TDM scheme which allocates the required number of time slots as needed, which may be of uniform or non-uniform duration.

[0219] In a further refinement, the duty cycle of the pulse train or individual pulses can be varied to provide a greater degree of control. The duty cycle can be adjusted to control how much of the available time is occupied within a particular time slot.

[0220] This option is Fig.16 As shown, Fig.16The effect of varying the duty cycle within a particular time slot to adjust the total power applied to a particular actuator is shown.

[0221] The upper trace shows Pulse Train 0, with a desired duty cycle of 40%. The second trace shows Pulse Train 1, with a desired duty cycle of 100%. The resultant output is shown in the lower trace. Whenever Pulse Train 0 is "high", the output is high, but with the added feature of taking the desired duty cycle into account, meaning that the time slot is only "high" for 40% of the allocated time. In this way, whenever Pulse Train 0 is "high", the resultant output is "high", but only 40% of the time.

[0222] Since the required duty cycle of Pulse Train 1 is 100%, each time it is "high", the resultant output is high for the entire time slot.

[0223] It may be desirable to control the duty cycle of individual pulses (rather than the entire pulse train), in which case an appropriate signal is provided to indicate this.

[0224] exist Fig.15 and Fig.16 In any of the embodiments shown, a single actuator can receive half of the instantaneous power available from the associated power supply. For example, if the power supply is rated at 6 W, each actuator can only receive 3 W. If more actuators share the same power supply, the power that each actuator can receive will be further reduced.

[0225] An advantage of this arrangement is that each actuator can be driven independently of the other actuators, with no interaction between them.

[0226] like Fig.16 As shown, one advantage of applying an additional duty cycle feature is that the applied power can be controlled depending on the ambient temperature, or the "sharpness" of the pulse / pulse train can be controlled.

[0227] Fig.17 Another embodiment is shown, which relates to a dynamic TDM method, which is different from Fig.15 and Fig.16 The static TDM method shown here is where time slots are allocated dynamically based on the active bursts or pulses.

[0228] Here, each pulse train has an associated duty cycle from 0 to 100%. The duty cycle specifies how much time is needed to drive a particular pulse train in a frame. The scheduler checks whether the power supply has enough operating time before scheduling a new pulse train. If the available time is insufficient, the new pulse train is ignored, delayed, or the duty cycle is reduced to accommodate the remaining available time. To achieve this, the previously described and implemented Figures 6 to 9 One or more schemes shown in .

[0229] exist Fig.17 In the example, the duty cycle of pulse train 0 is 50%, and the duty cycle of pulse train 1 is 30%. These duty cycles are reflected in the lower trace, showing the composite output of the power supply. When pulse train 0 is "high", time slot 0 is high for its entire duration (equal to 50% of the frame duration). Similarly, when pulse train 1 is "high", time slot 1 is high for 60% of its duration (equal to 30% of the frame duration). In this example, sufficient power is available from the power supply. In other cases, as described above, it may be necessary to delay, ignore, or adjust the duty cycle of a particular pulse or pulse train.

[0230] In this particular embodiment, a particular actuator can draw up to 100% of the available power if no other actuator is active at the same time. As in the previous embodiment, by adjusting the duty cycle, the applied power can be controlled according to the ambient temperature, or the "sharpness" of the pulse / pulse train can be controlled.

[0231] Fig.18 A flow chart illustrating a general method of an embodiment of the present technology is shown. It shows a flow chart of example steps for delivering tactile feedback. The process begins with receiving an input signal (step S500). The input signal can be received by the processor 202 of the device 200 or a dedicated processor of the tactile component 210 of the device 200. The input signal can be triggered by a software process or event occurring in the device, or by receiving a message through the communication protocol of the device. In some cases, the input signal can be triggered by detecting contact on a depressible button or touch-sensitive portion of the device. The input signal can be triggered only when a minimum threshold capacitance is sensed, a force is applied, or a button is displaced.

[0232] The input signal includes a request for tactile feedback to be delivered. In response to receiving the input signal, the processor 202 renders a tactile profile that defines instructions for driving at least one SMA actuator wire 212 of the tactile assembly 210 (step S506). The tactile profile can be rendered by selecting a predefined tactile profile, modifying a predefined tactile profile, or generating a generated tactile profile as described above. As already described, the processor generates a tactile drive signal using the rendered tactile profile (step S508), and determines whether there is a scheduling conflict (step S510). If there is a conflict, the conflict is resolved by applying one or more predefined rules as described above (step S512).

[0233] At step S516, optionally, a check is performed to ensure that the solution is safe for transmission to the actuator in terms of the adjusted pulse train. Figure 6, the adjusted pulse train may result in a concentration of energy supplied to a particular actuator exceeding a safe level. A check at step S516 ensures that the predefined safety level is not exceeded. If the adjusted haptic drive signal is determined to be safe, or if there is no conflict, the processor transmits the generated haptic drive signal to the control circuit 214 to control at least one SMA actuator wire 212 to deliver haptic feedback (step S514).

[0234] However, if the check at step S516 determines that it is unsafe to transmit a haptic drive signal to the actuator, one or more options may be taken. First, at step S518, the haptic drive signal may optionally be modified, such as by reducing the amplitude or duration of one or more of the pulses, such that the total energy delivered is reduced. A further conflict check is then performed at step S510, and the process continues as previously described.

[0235] Next, at step S520 , optionally, the haptic feedback process may be cancelled so that no haptic feedback is delivered in response to the current request.

[0236] Third, at step S522, an alternative rule or conflict resolution method that can resolve the safety issue is applied. After applying the new rule, the process returns to step S516 to recheck the safety of the new haptic drive signal.

[0237] Optionally, as part of the check performed at step S516, one or more additional inputs may be provided at S504, which may help inform the check at step S516. For example, the additional input may relate to the temperature of the SMA wire or its immediate vicinity. Such a temperature reading may indicate whether the wire in question is capable of receiving more than a certain amount of energy.

[0238] In connection with the check at step S516, a count of the number of iterations may be maintained to avoid an infinite loop. Once the count reaches a predetermined value, the flow is forced to a known safe condition, such as step S520.

[0239] Optionally, the process may include starting the pipeline in response to receiving an input signal as described above (step S502).

[0240] Optionally, the process may include receiving or obtaining one or more additional inputs (step S504 ), which may be used to initiate, modify, or cancel a pipeline and / or rendering haptic profile, as described above.

[0241] Those skilled in the art will appreciate that, although the foregoing has described what are considered to be the best modes for carrying out the present technology and other modes for carrying out the present technology where appropriate, the present technology should not be limited to the specific constructions and methods of the preferred embodiments disclosed in this specification. Those skilled in the art will appreciate that the present technology has a wide range of applications and that the embodiments may be modified in a wide range without departing from any inventive concept defined in the appended claims.

Claims

1. A device for delivering tactile feedback, include: multiple actuators; a control circuit, the control circuit being used to control the plurality of actuators; and at least one processor communicatively coupled to the control circuitry to: receiving an input signal requesting delivery of tactile feedback; rendering a haptic profile defining instructions for driving each of the plurality of actuators; generating a haptic drive signal using the rendered haptic profile; and transmitting the haptic drive signal to the control circuit to control each of the plurality of actuators to deliver haptic feedback, Wherein, in response to receiving the input signal requesting tactile feedback, the at least one processor renders a tactile event pipeline including at least one action to be performed, wherein the pipeline is arranged to schedule multiple pulse trains, each pulse train including one or more pulses, each pulse train being applied to a different one of the multiple actuators, and wherein, in the event of a scheduling conflict, the scheduler applies one or more predefined rules to adjust one or more pulses of one or more of the multiple pulse trains.

2. The device according to claim 1, in, The plurality of actuators include at least one of a shape memory alloy (SMA) actuator, a piezoelectric actuator, an electroactive polymer (EAP) actuator, an electromechanical (EMP) actuator, a linear resonant actuator (LRA) and an eccentric rotating mass (ERM) actuator.

3. The device according to claim 1 or 2, in, The scheduling conflict includes one or more input signals requesting haptic feedback that schedules multiple pulses such that at least a portion of two or more pulses occur simultaneously.

4. A device according to any preceding claim, in, One of the one or more predefined rules prioritizes a particular pulse according to a defined parameter associated with the particular pulse.

5. The device according to claim 4, in, The parameters associated with the particular pulse include one or more of: an explicit priority level assigned to it, a start time, a pulse sequence, or a duration.

6. The device according to claim 5, in, One of the one or more predefined rules prioritizes all pulses according to their start time so that the rescheduled pulses are generated in the same order as the order in which all pulses were requested, whereby if a pulse is delayed as a result, it follows after the end of the previous pulse and the pulse width is not changed.

7. The device according to claim 5, in, One of the one or more predefined rules prioritizes all pulses according to their start times so that rescheduled pulses are generated in the same order as the order in which all pulses were requested, whereby if a pulse is thereby delayed, it follows after the end of the previous pulse, and if a pulse in a particular pulse train is delayed, subsequent pulses in the particular pulse train are delayed by the same amount and the pulse width is not changed.

8. The device according to claim 5, in, One of the one or more predefined rules prioritizes all pulses according to their start time, and if a later pulse collides with an earlier pulse, the later pulse is truncated or omitted entirely according to the duration of the earlier pulse.

9. The device according to claim 5, in, One of the one or more predefined rules adds a pulse in one pulse train after a previous pulse train.

10. The device according to claim 5, in, One of the one or more predefined rules assigns a priority to each of several pulses to be scheduled, such that pulses with higher priority are scheduled first and pulses with lower priority are scheduled when pulses with the higher priority are completed.

11. The device according to claim 10, in, All pulses in a particular pulse train have the same priority.

12. The device according to claim 5, in, One of the one or more predefined rules divides the available power between different actuators so that if there is no overlap between pulses in different pulse trains, maximum power is available upon request, and if there is overlap between pulses in different pulse trains, power is divided between pulses in the different pulse trains and the duration of the pulses is adjusted to maintain the requested total energy.

13. The device according to claim 5, in, One of the one or more predefined rules assigns a priority to each of several pulse trains to be scheduled, so that pulses in a pulse train with a higher priority preempt pulses in a pulse train with a lower priority, interrupt pulses in a pulse train with a lower priority, and thereby adjust the duration of one or more pulses in a pulse train with a lower priority to maintain the requested total energy.

14. The device according to claim 5, in, The available power is time-multiplexed between the different possible actuators, thereby defining a plurality of time slots, each such time slot being associated with a specific actuator.

15. The device according to claim 14, in, Power is supplied to a particular actuator only during its associated time slot.

16. The device according to claim 14 or 15, in, The plurality of time slots have equal duration.

17. The device according to claim 15 or 16, in, The pulse train associated with each of the different possible actuators has an associated duty cycle, whereby power is provided during a corresponding time slot in accordance with the associated duty cycle.

18. The device according to claim 16 or 17, in, The plurality of time slots have unequal durations defined by a duty cycle of one or more pulses in a pulse train associated with each of the actuators.

19. A method for delivering tactile feedback using a plurality of actuators, the method include: receiving an input signal requesting delivery of tactile feedback; rendering a haptic profile defining instructions for driving each of the plurality of actuators; generating a haptic drive signal using the rendered haptic profile; and transmitting the haptic drive signal to control each of the plurality of actuators to deliver haptic feedback, Wherein, in response to receiving the input signal requesting tactile feedback, a tactile event pipeline is rendered including at least one action to be performed, wherein the pipeline is arranged to schedule multiple pulse strings, each pulse string including one or more pulses, each pulse string being applied to a different one of the multiple actuators, and wherein in the event of a scheduling conflict, one or more predefined rules are applied to adjust one or more pulses of one or more of the multiple pulse strings.

20. The method according to claim 19, in, After applying the one or more predefined rules, a check is performed to determine whether it is safe to transmit the adjusted one or more pulses to the plurality of actuators.

21. The method according to claim 20, in, If it is determined that it is unsafe to transmit the adjusted one or more pulses, then: an alternative predefined rule is applied; or one or more of the one or more pulses is modified; or the transmission of the tactile feedback is cancelled.

22. The method according to claim 20 or 21, in, One or more additional inputs are received as part of the checking to determine whether it is safe to transmit the adjusted one or more pulses to the plurality of actuators.

23. The method according to claim 22, in, The one or more additional inputs may include information related to the temperature of a given actuator or its immediate vicinity.

24. A control system for use with an apparatus for providing tactile feedback via a plurality of actuators, the control system being operable to: receiving an input signal requesting delivery of tactile feedback; rendering a haptic profile defining instructions for driving each of the plurality of actuators; generating a haptic drive signal using the rendered haptic profile; and transmitting the haptic drive signal to control each of the plurality of actuators to deliver haptic feedback, Wherein, in response to receiving the input signal requesting tactile feedback, the control system renders a tactile event pipeline including at least one action to be performed, wherein the pipeline is arranged to schedule multiple pulse trains, each pulse train including one or more pulses, each pulse train being applied to a different one of the multiple actuators, and wherein in the event of a scheduling conflict, one or more predefined rules are applied to adjust one or more pulses of one or more of the multiple pulse trains.

25. A non-transitory data carrier carrying processor control code to implement the method according to any one of claims 19 to 23.