VACUUM CLEANER

A vacuum cleaner includes: a vacuum motor; a first sensor configured to generate first sensor signals based on sensed motion and orientation of the vacuum cleaner; a cleaner head comprising an agitator; one or more diagnostic sensors configured to generate second sensor signals based on sensed parameters of the cleaner head; and a controller configured to: process the generated first and second sensor signals to determine a type of surface on which the vacuum cleaner is being operated; and control the power of the vacuum motor in dependence on the determined type of surface.

TECHNICAL FIELD

The present disclosure relates to a vacuum cleaner. In particular, but not exclusively, the present disclosure concerns measures, including methods, apparatus and computer programs, for operating a vacuum cleaner.

BACKGROUND

Broadly speaking, there are four types of vacuum cleaner: ‘upright’ vacuum cleaners, ‘cylinder’ vacuum cleaners (also referred to as ‘canister’ vacuum cleaners), ‘handheld’ vacuum cleaners and ‘stick’ vacuum cleaners.

Upright vacuum cleaners and cylinder vacuum cleaners tend to be mains-power-operated.

Handheld vacuum cleaners are relatively small, highly portable vacuum cleaners, suited particularly to relatively low duty applications such as spot cleaning floors and upholstery in the home, interior cleaning of cars and boats etc. Unlike upright cleaners and cylinder cleaners, they are designed to be carried in the hand during use, and tend to be powered by battery.

Stick vacuum cleaners may comprise a handheld vacuum cleaner in combination with a rigid, elongate suction wand which effectively reaches down to the floor so that the user may remain standing while cleaning a floor surface. A floor tool is typically attached to the end of the rigid, elongate suction wand, or alternatively may be integrated with the bottom end of the wand.

Stick vacuum cleaners are typically used in environments which contain several different floor surface types, including hard floors and different types of carpet. Greater power from the vacuum motor is usually required to remove dirt from carpets, especially deep pile carpets, compared to hard floors. Some stick vacuum cleaners are capable of sensing whether the surface type is carpet or hard floor and can adjust the power of the vacuum motor accordingly. However, existing devices are based on fixed parameters and are not capable of discovering and adapting to new types of surface. Furthermore, components of the vacuum cleaner can vary as the device ages. This can eventually result in the vacuum cleaner misidentifying the surface type and consequently using a sub-optimal vacuum motor power.

It is an object of the present disclosure to mitigate or obviate the above disadvantages, and/or to provide an improved or alternative vacuum cleaner.

SUMMARY

According to an aspect of the present disclosure, there is provided a vacuum cleaner comprising: a vacuum motor; a first sensor configured to generate first sensor signals based on sensed motion and orientation of the vacuum cleaner; a cleaner head comprising an agitator; one or more diagnostic sensors configured to generate second sensor signals based on sensed parameters of the cleaner head; and a controller configured to: process the generated first and second sensor signals to determine a type of surface on which the vacuum cleaner is being operated; and control the power of the vacuum motor in dependence on the determined type of surface.

The controller combines sensor data generated by different sensors of the vacuum cleaner in order to determine the type of surface. This enables a more accurate determination of the surface type and allows the controller to identify multiple different surface types, e.g. different types of carpet. For example, the first sensor signals may contain different signatures when the vacuum cleaner is operated on different surfaces, due to the different vibrations caused by the different surfaces.

In embodiments, the first sensor comprises an inertial measurement unit, IMU.

In embodiments, the cleaner head further comprises an agitator motor arranged to rotate the agitator and the sensed parameters of the cleaner head comprise the agitator motor current.

In embodiments, the controller is configured to control the power of the agitator motor in dependence on the determined type of surface.

In embodiments, the sensed parameters of the cleaner head comprise the pressure applied to the cleaner head.

In embodiments, the controller is configured to process the generated first and second sensor signals using a surface type model defining a mapping between generated sensor signals and surface types to determine the type of surface on which the vacuum cleaner is being operated.

In embodiments, the surface type model comprises a plurality of clusters, each cluster corresponding to a respective type of surface.

In embodiments, the surface types defined in the surface type model comprise two or more different types of carpet, and hard floor.

In this manner, the vacuum cleaner is not only capable of differentiating between hard floor and carpet, but can distinguish between different types of carpet, thereby enabling further optimization of the cleaning performance and battery runtime.

In embodiments, the surface types defined in the surface type model comprise at least four different types of carpet.

In embodiments, the four different types of carpet comprise: plush carpet, multi-level loop carpet, level loop carpet and deep pile carpet.

According to an aspect of the present disclosure, there is provided a method of operating a vacuum cleaner comprising: generating first sensor signals based on sensed motion and orientation of the vacuum cleaner; generating second sensor signals based on sensed parameters of a cleaner head comprising an agitator; processing the generated first and second sensor signals to determine a type of surface on which the vacuum cleaner is being operated; and controlling the power of the vacuum motor in dependence on the determined type of surface.

According to an aspect of the present disclosure, there is provided a computer program comprising a set of instructions, which, when executed by a computerised device, cause the computerised device to perform a method of operating a vacuum cleaner, the method comprising: generating first sensor signals based on sensed motion and orientation of the vacuum cleaner; generating second sensor signals based on sensed parameters of a cleaner head comprising an agitator; processing the generated first and second sensor signals to determine a type of surface on which the vacuum cleaner is being operated; and controlling the power of the vacuum motor in dependence on the determined type of surface.

The present disclosure is not limited to any particular type of vacuum cleaner. For example, the aspects of the disclosure may be utilised on upright vacuum cleaners, cylinder vacuum cleaners or handheld or ‘stick’ vacuum cleaners.

It should be appreciated that features described in relation to one aspect of the present disclosure may be incorporated into other aspects of the present disclosure. For example, a method aspect may incorporate any of the features described with reference to an apparatus aspect and vice versa.

DETAILED DESCRIPTION

FIGS.1to4illustrate a vacuum cleaner2according to embodiments of the present disclosure. The vacuum cleaner2is a ‘stick’ vacuum cleaner comprising a cleaner head4connected to a main body6by a generally tubular elongate wand8. The cleaner head4is also connectable directly to the main body6to transform the vacuum cleaner2into a handheld vacuum cleaner. Other removable tools, such as a crevice tool3, a dusting brush7and a miniature motorized cleaner head5may be attached directly to the main body6, or to the end of the elongate wand8, to suit different cleaning tasks.

The main body6comprises a dirt separator10which in this case is a cyclonic separator. The cyclonic separator has a first cyclone stage12comprising a single cyclone, and a second cyclone stage14comprising a plurality of cyclones16arranged in parallel. The main body6also has a removable filter assembly18provided with vents20through which air can be exhausted from the vacuum cleaner2. The main body6of the vacuum cleaner2has a pistol grip22positioned to be held by the user. At an upper end of the pistol grip22is a user input device in the form of a trigger switch24, which is usually depressed in order to switch on the vacuum cleaner2. However, in some embodiments the physical trigger switch24is optional. Positioned beneath a lower end of the pistol grip22is a battery pack26which comprises a plurality of rechargeable cells27. A controller50and a vacuum motor52, comprising a fan driven by an electric motor, are provided in the main body6behind the dirt separator10.

The cleaner head4is shown from underneath inFIG.2. The cleaner head4has a casing30which defines a suction chamber32and a soleplate34. The soleplate34has a suction opening36through which air can enter the suction chamber32, and wheels37for engaging a floor surface. The casing30defines an outlet38through which air can pass from the suction chamber32into the wand8. Positioned inside the suction chamber32is an agitator40in the form of a brush bar. The agitator40can be driven to rotate inside the suction chamber32by an agitator motor54. The agitator motor54of this embodiment is received inside the agitator40. The agitator40has helical arrays of bristles43projecting from grooves42, and is positioned in the suction chamber such that the bristles43project out of the suction chamber34through the suction opening36.

FIG.3is a schematic representation of the electrical components of the vacuum cleaner2. The controller50manages the supply of electrical power from the cells27of the battery pack26to the vacuum motor52. When the vacuum motor52is powered on, this creates a flow of air so as to generate suction. Air with dirt entrained therein is sucked into the cleaner head4(or, when attached, one of the other tools such as the crevice tool3, the mini motorised cleaner head5, or the dusting brush7), into the suction chamber32through the suction opening36. From there, the air is sucked through the outlet38of the cleaner head4, along the wand8and into the dirt separator10. Entrained dirt is removed by the dirt separator10and then relatively clean air is drawn through the vacuum motor52, through the filter assembly18and out of the vacuum cleaner2through the vents20. In addition, the controller50also supplies electrical power from the battery pack26to the agitator motor54of the cleaner head4, through wires56running along the inside of the wand, so as to rotate the agitator40. When the cleaner head4is on a hard floor, it is supported by the wheels37and the soleplate34and agitator40are spaced apart from the floor surface. When the cleaner head4is resting on a carpeted surface, the wheels37sink into the pile of the carpet and the soleplate34(along with the rest of the cleaner head4) is therefore positioned further down. This allows carpet fibres to protrude towards (and potentially through) the suction opening36, whereupon they are disturbed by bristles43of the rotating agitator40so as to loosen dirt and dust therefrom.

Vacuum cleaners2according to embodiments of the present disclosure comprise additional components, which are visible inFIGS.3and4. These include one or more of: a current sensor58for sensing the electrical current drawn by the agitator motor54of the cleaner head4, a pressure sensor60for sensing the pressure applied to the soleplate34of the cleaner head4, an inertial measurement unit (IMU)62which is sensitive to motion and orientation of the main body6of the vacuum cleaner2, a human computer interface (HCI)64, one or more proximity sensors, typically in the form of time of flight (TOF) sensors72, a tool switch sensor74and a capacitive sensor76located in the pistol grip22. Although the current sensor58is shown as being situated in the cleaner head4, it could alternatively be located in the main body6. For example, the current sensor58could be integrated as part of the controller50, provided it is operable to sense electrical current supplied to the agitator motor54from the battery26via the wires56. In the illustrated embodiment, one TOF sensor72is located at the end of the detachable wand8, close to where the cleaner head4, or one of the other tools3,5,7, is attached. Further TOF sensors72may be provided on the removable tools3,5,7themselves. Each TOF sensor72generates a sensor signal dependent on the proximity of objects to the TOF sensor72. Suitable TOF sensors72include radar or laser devices. The tool switch sensor74is located on the main body6of the vacuum cleaner2and generates signals dependent on whether a tool3,4,5,7or the wand8is attached to the main body6. In embodiments, the tool switch sensor74generates signals dependent on the type of tool3,4,5,7attached to main body6or the wand8. The capacitive sensor76is located in the pistol grip22and generates signals dependent on whether a user is gripping the pistol grip. In embodiments, the vacuum cleaner2may comprise one or more additional IMUs. For example, the cleaner head4may comprise an IMU which is sensitive to motion and orientation of the cleaner head4and which generates further sensor signals to supplement those generated by the IMU62of the main body6. The IMU62may comprise one or more accelerometers, one or more gyroscopes and/or one or more magnetometers.

As shown in more detail inFIG.4, the main body6of the vacuum cleaner2defines a longitudinal axis70which runs from a front end9to a rear end11of the main body6. When it is attached to the front end9of the main body6, the wand8is parallel to (and in this case collinear with) the longitudinal axis70. In the illustrated embodiment, the HCI64comprises a visual display unit65, more particularly a planar, full colour, backlit thin-film transistor (TFT) screen. The screen65is controlled by the controller50and receives power from the battery26. The screen displays information to the user, such as an error message, an indication of a mode the vacuum cleaner2is operating in, or an indication of remaining battery26life. The screen65faces substantially rearwards (i.e. its plane is orientated substantially normal to the longitudinal axis70). Positioned beneath the screen65(in the vertical direction defined by the pistol grip22) is a pair of control members66, also forming part of the HCI64and each of which is positioned adjacent to the screen65and is configured to receive a control input from the user. In embodiments, the control members are configured to change the mode of the vacuum cleaner, for example to manually increase or decrease the power of the vacuum motor52. In embodiments, the HCI64also comprises an audio output device such as a speaker67which can provide audible feedback to the user.

The IMU62generates sensor signals dependent on the motion and orientation of the main body6of the vacuum cleaner2in three spatial dimensions (x, y, and z). The motion includes the linear acceleration and angular acceleration of the main body6.FIG.5aillustrates exemplary generated IMU62sensor data corresponding to the linear acceleration of the main body6before, during and after a cleaning operation. The time scale shows the index of samples which were gathered at a sampling rate of 25 Hz. The vertical scale is in units of acceleration due to gravity. Traces91a,91band91ccorrespond to the linear acceleration of the main body6in the x, y and z directions respectively.FIG.5billustrates exemplary generated IMU62sensor data corresponding to the angular acceleration of the main body6before, during and after the same cleaning operation as represented inFIG.5a. Traces92a,92band92ccorrespond to the angular acceleration about the x, y and z axes respectively. In bothFIGS.5aand5b, the vacuum cleaner2is initially static (at rest). This is followed by a cleaning session comprising cleaning strokes, giving rise to oscillatory behaviour in some of the generated sensor data. Finally, the vacuum cleaner2is again returned to rest. The data shown inFIGS.5aand5bhave been smoothed, for example by means of a band-pass filter or a low-pass filter.FIG.6illustrates example generated IMU62sensor data corresponding to of the orientation of the main body6about the y axis during different hand-held cleaning operations. Specifically, interval93acorresponds to cleaning of a low-level surface, e.g. a skirting board, interval93bcorresponds to a period during which the main body6is at rest on a table and interval93ccorresponds to cleaning of an elevated surface, for example a ceiling, blind, curtain, or the top of a cupboard.FIG.7illustrates further exemplary generated IMU62sensor data corresponding to orientation of the main body6about the y axis during different cleaning operations using the motorized cleaner heads4,5. Trace94acorresponds to cleaning under furniture using the main cleaner head4attached to the wand8. Trace94bcorresponds to stair cleaning using the miniature motorized cleaner head5attached directly to the main body6, without using the wand8. Trace94ccorresponds to normal upright vacuum cleaning using the cleaner head4attached to the wand8. It should be appreciated that the different cleaning activities give rise to different signatures in the sensor data generated by the IMU62. In this manner, it should be appreciated that the IMU62sensor data can be processed to infer information about the cleaning activity being performed by a user using the vacuum cleaner, or about the environment in which the vacuum cleaner is being operated.

FIG.8illustrates schematically the electrical layout of the vacuum cleaner2according to embodiments. In embodiments, the controller50receives and processes signals generated by one or more of the trigger24, the current sensor58, the pressure sensor60, the IMU62, the one or more TOF sensors72, the tool switch sensor74and the capacitive sensor76. The controller50has a memory51on which are stored instructions according to which the controller50processes the sensor signals. Based on the processing of the sensor signals, the controller50controls one or more of the vacuum motor52, the agitator motor54and the HCI64in order to enhance operation of the vacuum cleaner2and thereby improve the user experience. Example enhancements include improved pickup of dirt and improved battery life, amongst others.

FIG.9is a block diagram which illustrates example sensor signal processing performed by the controller50according to various embodiments of the present disclosure. Unfiltered sensor signals88are received at the controller50from one or more of the available sensors. Different embodiments utilize sensor signals from different sensors. Some embodiments utilize sensor signals from only one sensor, such as the IMU62, for example. A band-pass filter or low-pass filter82filters the raw sensor signals88to generate smoothed sensor signals90which are more suitable for further processing. At block84, pre-determined features F1, F2. . . Fnare extracted from the smoothed sensor signals and subsequently analysed by a classifier86. In embodiments, the classifier86determines, from the extracted features, a particular cleaning activity being performed by a user using the vacuum cleaner2. In other embodiments, the classifier86determines, from the extracted features a particular surface type on which the vacuum cleaner2is being operated. In other embodiments, the classifier86determines, from the extracted features, whether the vacuum cleaner2is actively being used, to assist in providing a trigger-less vacuum cleaner2. Having determined the above, the controller50causes an action or actions to be performed involving one or more of the vacuum motor52, agitator motor54and HCI64, which are configured in dependence on the classifier86output, and optionally on the status of the trigger24. It should be appreciated that the filter82, feature extraction block84and classifier86are in general implemented as software modules which are executed on or under the control of the controller50. The controller memory51stores sets of instructions defining the operation of the filter82, feature extraction84, classifier86and resultant action. In embodiments, the classifier is based on a machine learning classifier such as an artificial neural network, a random forest, a support-vector machine or any other appropriate trained model. The model could have been pre-trained, for example at the factory, using a supervised learning approach. A sliding window approach is generally used to span the filtered sensor signals and extract features corresponding to that particular time portion of the signal. Consecutive frames usually overlap to some degree but are usually processed separately. It should be appreciated that it is not always necessary to receive and process sensor data from all of the available sensors. For example, in embodiments the controller50may process only IMU62sensor data to obtain a classifier output. Furthermore, in the case of IMU62sensor data, the controller50may for example take account only of IMU62sensor data relating to orientation of the vacuum cleaner2, or only IMU62sensor data relating to acceleration of the vacuum cleaner2.

Vacuum cleaners2are typically used in environments which contain several different floor surface types, including hard floors and different types of carpet. Greater power from the vacuum motor52is usually required to remove dirt from carpets, especially deep pile carpets, compared to hard floors. However, this often comes at the expense of reduced runtime for battery26powered vacuum cleaners2. In general, the power delivered to the vacuum motor52should be increased when the cleaner head4is on a carpet and should be reduced when the cleaner head4is on a hard floor. In this manner, the runtime can be preserved without appreciable loss in cleaning performance.

FIG.10is a flow diagram showing a method270of operating a vacuum cleaner2according to embodiments. In step272, sensor signals are generated by one or more sensors associated with the vacuum cleaner2. In embodiments, one of the sensors is a sensor configured to generate sensor signals based on sensed motion and orientation of the vacuum cleaner2, such as the IMU62. Where the vacuum cleaner is used in conjunction with a cleaner head4comprising an agitator40driven by an agitator motor54, the sensors may include diagnostic sensors configured to generate sensor signals based on sensed parameters of the cleaner head4. Such diagnostic sensors include the current sensor58which senses the current drawn by the agitator motor54and the pressure sensor60which senses the pressure applied to the cleaner head4. However, it should be appreciated that in some embodiments only sensor signals from the IMU62are used, or only sensor signals from the diagnostic sensors are used. In step274, the generated sensor signals are processed by the controller50using a surface type model defining a mapping between generated sensor signals and surface types to determine a type of surface on which the vacuum cleaner2is being operated. In step276, the power of the vacuum motor52is controlled in dependence on the determined type of surface. In step278, the surface type model is updated based on the generated sensor signals and/or the determined type of surface. In embodiments, the surface type model accounts for different types of carpet, such as plush carpet, multi-level loop carpet, level loop carpet and deep pile carpet. Accordingly, the vacuum cleaner2can not only distinguish between hard floor and carpet, but can even distinguish between different types of carpet, enabling further control of the vacuum motor52power to optimize cleaning efficiency and runtime.

With reference toFIG.11, the filtered sensor signals90from the one or more sensors associated with the vacuum cleaner2form an input to the surface type model110. It should be appreciated that in embodiments, the surface type model110is akin to the feature extraction block84and classifier86described with reference toFIG.9. The surface type model110provides an output corresponding to the determined surface type, on the basis of which the power of the vacuum motor52is controlled, as shown inFIG.11. With reference toFIG.12a, the surface type110model may comprise a plurality of clusters120,122within a parameter space, each of which corresponds to a respective type of surface. InFIG.12a, the parameter space is formed by the cleaner head pressure, sensed by the pressure sensor60, and the agitator motor current (or brush bar current), sensed by the current sensor58. InFIGS.12aand12bthe agitator motor current and head pressure have been re-scaled to form dimensionless quantities which are more convenient for representation in a parameter space. Each point in the parameter space corresponds to an extracted value pair for the two sensors. It should be appreciated that greater or fewer than two sensor types may be used, such that in general the parameter space is n-dimensional. The clusters120,122can be determined using a Gaussian fitting procedure which would be understood by one skilled in the art. Determining the type of surface on which the vacuum cleaner2is being operated generally involves determining which cluster120,122an extracted value pair (current and pressure in this example) belongs to.

Aside from controlling the vacuum motor52in dependence on the determined surface type, in embodiments additional steps are performed in order to improve and adapt the surface type model110dynamically over time. With reference toFIG.11, the controller50determines whether a data point (i.e. an extracted sensor value or values, such as a particular current and pressure pair) corresponds to an existing cluster120,122. If it does correspond to an existing cluster, updating the surface type model110comprises reinforcing or adjusting an existing cluster120,122of the surface type model110. For example, the controller50may periodically recalculate the Gaussian fit to account for slight variations in parameters of the vacuum cleaner over time, which may result in a shifting of the Gaussian width or centre. Alternatively, if data points do not correspond to an existing cluster120,122, the controller50can discover a novel cluster, at112. With reference toFIG.12b, a novel cluster124has been discovered from a series of data points collected over time. The novel cluster124may correspond to a new surface type which was not contained in the initial surface type model110. The novel cluster124is optionally added to the surface type model110such that the vacuum cleaner2can respond to the new surface type in future vacuum cleaning operations. This may be assisted by the user manually entering a desired vacuum motor power52for the novel surface, which the controller50will then subsequently remember when it detects the surface again in the future. The controller50retains a cluster history114in memory51which allows the controller50to track variations in parameters of the vacuum cleaner2over time, e.g. due to wear and tear on bristles of the cleaner head4. In embodiments, the controller is configured to purge (i.e. remove/delete) a particular cluster from the memory51in response to determining that the type of surface corresponding to that particular cluster has not been observed for a pre-determined period of time. In this manner, if a surface is not observed for a period of time then the cluster will be aged-out from the memory of the vacuum cleaner, reducing on-device storage requirements. The pre-determined period of time could be one week, one month or one year, for example.

FIG.13is a flow diagram showing a method280of operating a vacuum cleaner2according to embodiments. In step282, sensor signals are generated based on sensed parameters of the cleaner head4. In embodiments where the cleaner head4comprises an agitator40driven by an agitator motor54, diagnostic sensors are configured to generate the sensor signals based on sensed parameters of the cleaner head4. Such diagnostic sensors include the current sensor58which senses the current drawn by the agitator motor54and the pressure sensor60which senses the pressure applied to the cleaner head4. In step284, further sensor signals are generated based on sensed motion and orientation of the vacuum cleaner. In embodiments, the further sensor signals are generated by the IMU62. In step286, the generated sensor signals (based on sensed parameters of the cleaner head and based on sensed motion and orientation of the vacuum cleaner) are processed by the controller50to determine a type of surface on which the vacuum cleaner2is being operated. In step288, the power of the vacuum motor52is controlled in dependence on the determined type of surface. Accordingly, the controller50combines sensed motion and orientation with sensed parameters of the cleaner head4in order to determine the surface type. This may be achieved using a surface type model110defining a mapping between generated sensor signals and surface types, such as that described with reference toFIGS.11,12aand12b. The surface type model may contain a plurality of clusters120,122, each of which corresponds to a respective type of surface. The model may be static, such that updating of the surface type model is optional.

It is to be understood that any feature described in relation to any one embodiment and/or aspect may be used alone, or in combination with other features described, and may also be used in combination with one or more features of any other of the embodiments and/or aspects, or any combination of any other of the embodiments and/or aspects. For example, it will be appreciated that features and/or steps described in relation to a given one of the methods270,280may be included instead of or in addition to features and/or steps described in relation to other ones of the methods270,280.

In embodiments of the present disclosure, the vacuum cleaner2comprises a controller50. The controller50is configured to perform various methods described herein. In embodiments, the controller comprises a processing system. Such a processing system may comprise one or more processors and/or memory. Each device, component, or function as described in relation to any of the examples described herein, for example the IMU62and/or HCI64may similarly comprise a processor or may be comprised in apparatus comprising a processor. One or more aspects of the embodiments described herein comprise processes performed by apparatus. In some examples, the apparatus comprises one or more processors configured to carry out these processes. In this regard, embodiments may be implemented at least in part by computer software stored in (non-transitory) memory and executable by the processor, or by hardware, or by a combination of tangibly stored software and hardware (and tangibly stored firmware). Embodiments also extend to computer programs, particularly computer programs on or in a carrier, adapted for putting the above described embodiments into practice. The program may be in the form of non-transitory source code, object code, or in any other non-transitory form suitable for use in the implementation of processes according to embodiments. The carrier may be any entity or device capable of carrying the program, such as a RAM, a ROM, or an optical memory device, etc.

The one or more processors of processing systems may comprise a central processing unit (CPU). The one or more processors may comprise a graphics processing unit (GPU). The one or more processors may comprise one or more of a field programmable gate array (FPGA), a programmable logic device (PLD), or a complex programmable logic device (CPLD). The one or more processors may comprise an application specific integrated circuit (ASIC). It will be appreciated by the skilled person that many other types of device, in addition to the examples provided, may be used to provide the one or more processors. The one or more processors may comprise multiple co-located processors or multiple disparately located processors. Operations performed by the one or more processors may be carried out by one or more of hardware, firmware, and software. It will be appreciated that processing systems may comprise more, fewer and/or different components from those described.

The techniques described herein may be implemented in software or hardware, or may be implemented using a combination of software and hardware. They may include configuring an apparatus to carry out and/or support any or all of techniques described herein. Although at least some aspects of the examples described herein with reference to the drawings comprise computer processes performed in processing systems or processors, examples described herein also extend to computer programs, for example computer programs on or in a carrier, adapted for putting the examples into practice. The carrier may be any entity or device capable of carrying the program. The carrier may comprise a computer readable storage media. Examples of tangible computer-readable storage media include, but are not limited to, an optical medium (e.g., CD-ROM, DVD-ROM or Blu-ray), flash memory card, floppy or hard disk or any other medium capable of storing computer-readable instructions such as firmware or microcode in at least one ROM or RAM or Programmable ROM (PROM) chips.