Embodiments described herein generally relate to computer input services and more specifically to stylus trajectory prediction.
Computer input devices are hardware peripherals that allow users to provide instructions and interact with a computer system. They enable users to input data, commands, and other types of information into the computer for processing. Examples of computer input devices include a keyboard, a mouse, a trackpad, a microphone, a camera, and a joystick.
Touch-Display type computer input devices, such as a touchscreen or a digitizer tablet, can use touch input to, for example, digitally capture writing or drawing inputs. These devices can use a number of techniques to sense the position of a stylus (e.g., writing instrument) on a display. In general, a stylus is detected on a device surface through one of two primary technologies: capacitive or resistive touch sensing. Capacitive touch sensing uses a capacitive screen in which the display is coated with a transparent conductor. When an object, such as a finger or a stylus designed for capacitive screens, comes close to the screen, it changes the electrostatic field of the conductor and leads to a change in capacitance enabling the object to be located on the screen. Resistive touch sensing includes two layers of the screen that have a gap between them. When an object interacts with the screen, the layers are pushed together changing the electrical resistance of the layers, enabling the object causing the gap to narrow to be detected. Other examples can combine motion and pressure information in a stylus with those of the touch screen to provide the location of a stylus.
In the drawings, which are not necessarily drawn to scale, like numerals may describe similar components in different views. Like numerals having different letter suffixes may represent different instances of similar components. The drawings illustrate generally, by way of example, but not by way of limitation, various embodiments discussed in the present document.
When using a touch-display type input device, the user is typically using a stylus, or finger, on a surface and a representation, such as a line, is displayed under the stylus on a screen. There is some latency between the detection of a stylus point on the surface and the rendering of a point on the screen. When the latency is great, the user generally has a poor experience with the device. This latency may be called a touch-to-photon latency. Touch-to-photon latency can vary depending upon hardware and software design. While the latency may be minimized when a device, stylus, and software are tuned for each other, often this is not possible where there are different manufacturers for each element.
To address touch-to-photon latency, a type of trajectory or next point prediction is often employed. These techniques seek to predict the position of the stylus at a future time step in order to initiate rendering on the screen before the stylus has reached the next point. Current next point prediction falls into two groups: using a physics model or algebraic model—which considers momentum, acceleration, etc. of the stylus—or using a machine learning model—which generally minimizes error between a predicted output and an observed output during training. The first group includes classical techniques such as Kalman Filters, Motion Kinematics based prediction, Kinematic Template matching, Taylor-series based prediction, and curve fitting, among others. The second group generally uses multilayer perceptrons (MLPs), recurrent neural networks (RNNs), or other artificial intelligence (AI) arrangements that are trained to minimize output errors.
Current next point prediction techniques have a number of drawbacks. These techniques tend to have low accuracy (e.g., large prediction errors), treat all predictions equally (e.g., minimize all errors), or are complex (e.g., using millions of multiplications for each trajectory prediction). Physics models tend to have lower complexity than neural network (NN) based techniques, but also generally have lower accuracy than the NN based techniques, for example, when prediction lengths are longer than 20-40 milliseconds. As the prediction length increases, the accuracy gap between physics models and NN techniques tends to increase. The accuracy problem is due to inertial or physical laws of motion on the motion trajectory remaining dominant only at short time durations. The conscious human actions begin to dominate the changes in the trajectory at longer durations (e.g., 40-50 milliseconds). These actions generally cannot be modeled as a function of the recent stylus point history using physics or algebraic models. But data aided universal function approximators like deep neural networks (DNNs) can help model the actions. Hence, there is an upsurge in using AI methods for stylus prediction.
Although NN based techniques have better accuracy than the physics models, current NN techniques generally have greater complexity, treat all types of prediction errors equally, or both. For example, there are no current techniques that minimize jitter or other angular deviation errors. Rather, these techniques minimize all errors. While this may seem beneficial, users experience angular errors more acutely than lead, or distance, errors along a path. Thus, current NN techniques tend to have greater angular errors in order to minimize total error in the next point prediction.
What is needed is a device-agnostic next point prediction technique that can provide low latencies and minimize errors that impact the user experience the most. When the stylus, touch device, and the software are all from the same manufacturer, less than 10 millisecond touch-to-photon latency can be achieved. However, the raw latency can be as high as 100-200 milliseconds when the hardware and software are sourced from different manufacturers. This is the case for many computer systems today. Hence, a platform- and stylus-agnostic prediction technique will improve touch-to-photon latency for these systems.
To address these issues, a neural network technique that minimizes angular error over other errors is described herein. That is, errors other than angular errors (radial errors), are minimized at a lower priority than the angular error. In addition, in angular error minimization, large angular errors are prioritized over low angular errors. Other aspects that may be employed to reduce the complexity of operating the NN model for less powerful devices—such as mobile phones, tablets, etc.—include a normalization of inputs to the NN as well as the possibility of splitting the NN into angular prediction and other prediction components (e.g., distance) during training or implementation. This last point simplifies the aggressive minimization of a subset of prediction errors that are more acutely perceived by users.
Input normalization may include a transformation of the stylus movements into polar coordinates, assignment of different weights to different bins of angular and radial errors, and minimization of the weighted sum of the errors. Complexity may be addressed by reducing the next point prediction search space by: independent prediction in the two dimensions of the prediction range instead of a joint prediction; normalizing the detected inputs in time—thus removing the need to explicitly estimate the motion kinematic parameters or include them as additional parameters for the NN to model—and reduction of the range of input or output variations of the NN by transforming the recent stylus trajectory input and predicted output to be agnostic to rotation, length, or origin. By using these techniques, acceptable touch-to-photon latencies may be achieved on a variety of devices across manufacturers while maintaining accuracy of the next point prediction and reducing complexities by removing the need to explicitly address input velocity or other motion parameters, or timestamps of inputs to the NN by interpolating and uniformizing those stylus coordinates. Additional details and examples are provided below.
The processing circuitry 110 may be a processor—such as a central processing unit (CPU), graphics processing unit (GPU), field programmable gate array (FPGA), other hardware component or collection thereof—that is hardwired or configured by instructions (e.g., software) to perform a variety of operations for stylus trajectory prediction. When instructions provide runtime configuration for the processing circuitry 110, the instructions may be stored in whole or part in the memory 115, or in other storage of the system 105.
As illustrated, the user has produced a set of point that were rendered as the output 130. The processing circuitry 110 has also predicted a set of next points 135 for rendering. To achieve these next points, the processing circuitry 110 is configured to obtain a set of points that are derived from the stylus 125 moving on the surface. In an example, the surface is a capacitive touch screen. In an example, the surface is a resistive touch screen. In an example, the set of points are decoded directly from the surface (e.g., via the interface 120). In an example, the points are obtained from another element of a system, such as a processor, graphics subsystem, network, etc. Again, the interface 120 may be used in this retrieval, although a direct memory access technique may be used to write the points directly to the memory 115 from which they are read by the processing circuitry 110.
The processing circuitry 110 is configured to invoke an artificial neural network (ANN) on an input set. Here, the input set is based on the set of points that were previously obtained from the surface. The ANN is configured (e.g., designed and trained) to output a next point from the input set. The next point is a prediction of a location of the stylus 125 at a next moment (e.g., step) in time. The ANN is trained to minimize angular error for the output point over other errors. Different ANN designs may be employed, such as a convolutional NN, a recurrent NN, or a transformer. Generally, because the next point prediction is based on a sequence of previous inputs, RNNs or transformers are high performing NN architectures. Simple DNNs like feedforward NNs or multilayer-perceptrons have the advantage of lower training and runtime complexity than transformers or RNNs, but generally at the cost of reduced performance. However, for the stylus next-point prediction, some simple DNNs perform reasonably well enough to be used in practice.
The ANN is trained to minimize angular errors above all other errors. For simplicity, errors are reduced to two types, angular and linear in this discussion. Given a line, the angular error is the deviation from the line while the linear error is a mis-prediction of the next point on the line, either too far along the line or not far enough. Generally, the user perceives angular errors more acutely than linear errors. However, linear errors that are too far along the line may become angular errors as the stylus curves, for example. Angular errors may encompass such things a jitter that deviate from the line intended by the user.
In an example, the processing circuitry 110 is configured to create the input set from the set of points. Here, the creation of the input set is preprocessing of the set of points to increase accuracy or reduce complexity of the ANN. In an example, creating the input set from the set of points includes interpolating the set of points in time to produce a uniform time interval between points. For example, if the set of points has five entries between a first time and a second time, the period between the first time and the second time is divided into five equal sub-periods and a point is assigned to each. Thus, the timestamps of the individual points are not tracked. Because the points will now appear to have arrived at equal time intervals, the ANN need not be trained, or operate upon, time variable inputs, reducing complexity of the ANN and training of the ANN. Accordingly, in an example, the input set is a vector of coordinates with each element of the vector representing an interpolated position at the uniform time interval.
In an example, the processing circuitry 110 is configured to create the input set by normalizing the vector with respect to origin, length, or angle. Similar to the time interpolation, this normalization reduces complexity in the input set to simplify ANN operations. In an example, normalizing the vector with respect to origin includes shifting an origin of the vector to the latest detected coordinate of the stylus 125. This aligns the prediction to the stylus 125 such that each prediction could be considered to operate from a single point from the perspective of the ANN.
In an example, normalizing the vector with respect to length includes modifying a length of the vector to a predefined length. Thus, the ANN operates on a fixed number of points. The normalization may include removing elements of the set of points if there are more than the predefined length or adding elements at the interpolated positions if there are too few points in the set of points.
In an example, normalizing the vector with respect to angle includes rotating the vector to a predefined angle. This translation enables the ANN to operate as if it is always at a same point and orientation with respect to the prediction. In an example, the reverse of the angle transformation can be applied to the predicted next point if needed.
In an example, creating the input set from the set of points includes converting the set of points into polar coordinates where each coordinate is defined by a pair that includes a radius and an angle. In an example, the ANN is trained on the input set to reduce error in the angle. In an example, the ANN is configured to predict error for the radius and the angle independently. The independent prediction of the angle and the radius reduces the search space for the ANN, thus reducing complexity. The search space may be further reduced by limiting the prediction to discreet steps, such as ten-degree variations in angle or five-millimeter variations in radius. As noted above, between the two dimensions of prediction, the angular error is minimized even if the total error (e.g., the error in both the angle and radius) is greater, because this leads to a better user experience.
The processing circuitry 110 is configured to communicate the next point for rendering on the display. In a direct memory access arrangement, the communication may include writing the next point to the memory 115, from which the next point will be read by a GPU or other display rendering circuitry. In an example, the interface 120 is the recipient of the communication for rendering to the display. In an example, a GPU, or other circuitry, is the recipient of the communication. Once communicated, the display renders the next point to the screen.
Two ANNs were used in the prediction one for angular prediction and one for radial (e.g., distance) prediction. The two ANNs were multilayer perceptrons with one hidden layer, 100 nodes in the hidden layer, and Rectified Linear Unit (ReLU) activation functions. The ANNs were fed 128 milliseconds of recent history (e.g., the set of points) and are trained to predict up to 128 milliseconds of future trajectory at a resolution of sixteen milliseconds.
The input uniformizer 405 is configured to produce a linear time interpolation for the arriving input coordinates. The inputs may arrive asynchronously because the surface or internal measuring unit (IMU) may not sample the stylus touch location at a regular period. The input uniformizer 405 is configured to generate a vector of coordinates spaced at a predefined interval of T milliseconds, such as every eight milliseconds, every sixteen milliseconds, etc. This reduces the complexity of both run time and training because, with uniformly spaced inputs, the velocity, acceleration, snap, jerk or other higher order derivatives of position may be omitted from inputs to the ANN. Thus, the ANN does not have to be trained to deal with these elements to produce the predicted trajectory. With uniform samples, the ANN will have fewer parameters, such as derivatives of position with respect to time, as part of the model. Although position is used here to represent the stylus input (e.g., as a set of points), other aspects of the stylus input may also be used, such as pressure, which may have a higher correlation to angular changes including abrupt directional changes.
Timing may be done in several domains. Generally, there is a desire to synchronize the surface sampling rate with the display refresh rate. In general, the input sampling rate is higher. Operations to make the input timing uniform may operate in three time domains: the input rate, the display rate, or another rate not based on the input or the display rate. The input rate domain will generally need to be converted to the display rate for rendering. The display rate domain is usually a longer period than the input rate and may introduce greater errors but entails fewer conversions to render on the display. The third option doubles rate conversions (e.g., from the input rate to the other rate and then to the display rate) but may reduce difficulties in cross-device model comparisons.
The polar coordinate converter 410 converts cartesian coordinates from the set of points to polar coordinates. This can be used to split the prediction of angle and radius into independent prediction branches as illustrated. This simplifies the identification of different types of prediction errors and enables assignment of different weights to the respectively ANGLE ANN 420 and RADIUS ANN 430 during training. The prediction of radius and angle (e.g., theta) independently further reduces ANN complexity. Complexity reductions are achieved because the size of the search space for the pair (r,θ) will be the product of sizes of their respective search spaces. As the search space increases, the size of the ANN required, the training data set size and the training duration will also increase proportionally. Hence, predicting r and θ independently saves complexity in terms of the size of the ANNs, training data-set size, and the training duration.
The normalizers, normalizer 415 and normalizer 425, transform the inputs to be position, rotation, and length invariant. For example, the origin of the input vector is shifted to a latest known coordinate. Further, lengths of the inputs are normalized, and the inputs are rotated (e.g., de-rotated) to cause them to be invariant in all three mentioned aspects. The normalizers do not discard information of the arriving coordinates because the absolute value of the latest coordinate, reference angle, or length may be stored in order to apply the inverse transforms to the outputs of ANNs. However, the normalizers further reduce the search space dimensions by reducing the range of the variations in the input values that go into the ANNs.
As mentioned earlier, some errors in prediction are perceived by users to be worse than other errors. Current NN based prediction models tend to minimize the mean squared error (MSE) between the predicted outputs and the actual trajectory. Such minimization of the average of all errors is less than ideal because users perceive some type of errors to be tolerable and some other type of errors jarring enough to ruin the usage experience. For example, users perceive a prediction error that is five pixels behind, but in the same direction of the next point to be more tolerable than an error that is five pixels away in a direction orthogonal to the current direction of writing. To address this problem, errors may be classified into groups based on the magnitude of error in θ (e.g., angle or direction) and radius. The groups are assigned different weights. The weights progressively increase as the errors in θ increase and the weights for the errors in radii are lesser than that of θ. The ANNs are trained to minimize the weighted sum of the errors instead of MSE. Such training may increase the MSE of the prediction, but the user experience is better than MSE-minimizing NNs.
In an example, prediction errors may be perceived as more jarring during abrupt changes in direction rather than seeing just the unpredicted trajectory (e.g., no next point is outputted for rendering) or short predicted trajectories (e.g., if the direction along which the trajectory changes can be predicted with a high probability). Accordingly, abrupt angular changes are weighted more heavily than less abrupt (e.g., continuous, smoother, etc.) angle changes when minimizing angular error. In an example, given a sharp change in direction, shortening or switching off the predicted output trajectory may be used to improve the user experience. This technique may be employed when prediction confidence (e.g., the direction of the stylus travel cannot be reliably predicted) is low. Because stylus motion tends to move to a velocity of zero during these abrupt changes, users are less likely to perceive the shorter or no prediction in such cases. Further, when prediction errors are large, the ANN weights may be retrained slowly for several tens of minutes or hours with small batches of data and the retrained weights may be retained when the error performance improves.
At operation 505, a set of points is obtained. Here, the set of points are derived from a stylus moving on a surface. In an example, the surface is a capacitive touch screen. In an example, the surface is a resistive touch screen. In an example, the set of points are decoded directly from the surface. In an example, the points are obtained (e.g., retrieved or received) from another element of a system, such as a processor, graphics subsystem, network, etc.
At operation 510, an artificial neural network (ANN) is invoked on an input set. Here, the input set is based on the set of points that were previously obtained. The ANN is configured (e.g., designed and trained) to output a next point from the input set. Here, the next point is a prediction of a location of the stylus at a next moment (e.g., step) in time. The ANN is trained to minimize angular error for the output point over other errors.
In an example, the method 500 includes the additional operation of creating the input set from the set of points. In an example, creating the input set from the set of points includes interpolating the set of points in time to produce a uniform time interval between points. In an example, the input set is a vector of coordinates with each element of the vector representing an interpolated position at the uniform time interval.
In an example, creating the input set includes normalizing the vector with respect to origin, length, or angle. In an example, normalizing the vector with respect to origin includes shifting an origin of the vector to a latest detected coordinate of the stylus. In an example, normalizing the vector with respect to length includes modifying a length of the vector to a predefined length. In an example, normalizing the vector with respect to angle includes rotating the vector to a predefined angle.
In an example, creating the input set from the set of points includes converting the set of points into polar coordinates. Here, each coordinate is defined by a pair that includes a radius and an angle. In an example, the ANN is trained on the input set to reduce error in the angle. In an example, the ANN is configured to predict error for the radius and the angle independently.
At operation 515, the next point is communicated for rendering on a display. In an example, a device includes the surface and the display. Here, the display and the surface are arranged such that the next point appears to be rendered under the stylus.
In alternative embodiments, the machine 600 may operate as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine 600 may operate in the capacity of a server machine, a client machine, or both in server-client network environments. In an example, the machine 600 may act as a peer machine in peer-to-peer (P2P) (or other distributed) network environment. The machine 600 may be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a mobile telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein, such as cloud computing, software as a service (SaaS), other computer cluster configurations.
The machine (e.g., computer system) 600 may include a hardware processor 602 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a hardware processor core, or any combination thereof), a main memory 604, a static memory (e.g., memory or storage for firmware, microcode, a basic-input-output (BIOS), unified extensible firmware interface (UEFI), etc.) 606, and mass storage 608 (e.g., hard drives, tape drives, flash storage, or other block devices) some or all of which may communicate with each other via an interlink (e.g., bus) 630. The machine 600 may further include a display unit 610, an alphanumeric input device 612 (e.g., a keyboard), and a user interface (UI) navigation device 614 (e.g., a mouse). In an example, the display unit 610, input device 612 and UI navigation device 614 may be a touch screen display. The machine 600 may additionally include a storage device (e.g., drive unit) 608, a signal generation device 618 (e.g., a speaker), a network interface device 620, and one or more sensors 616, such as a global positioning system (GPS) sensor, compass, accelerometer, or other sensor. The machine 600 may include an output controller 628, such as a serial (e.g., universal serial bus (USB), parallel, or other wired or wireless (e.g., infrared (IR), near field communication (NFC), etc.) connection to communicate or control one or more peripheral devices (e.g., a printer, card reader, etc.).
Registers of the processor 602, the main memory 604, the static memory 606, or the mass storage 608 may be, or include, a machine readable medium 622 on which is stored one or more sets of data structures or instructions 624 (e.g., software) embodying or utilized by any one or more of the techniques or functions described herein. The instructions 624 may also reside, completely or at least partially, within any of registers of the processor 602, the main memory 604, the static memory 606, or the mass storage 608 during execution thereof by the machine 600. In an example, one or any combination of the hardware processor 602, the main memory 604, the static memory 606, or the mass storage 608 may constitute the machine readable media 622. While the machine readable medium 622 is illustrated as a single medium, the term “machine readable medium” may include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) configured to store the one or more instructions 624.
The term “machine readable medium” may include any medium that is capable of storing, encoding, or carrying instructions for execution by the machine 600 and that cause the machine 600 to perform any one or more of the techniques of the present disclosure, or that is capable of storing, encoding or carrying data structures used by or associated with such instructions. Non-limiting machine readable medium examples may include solid-state memories, optical media, magnetic media, and signals (e.g., radio frequency signals, other photon based signals, sound signals, etc.). In an example, a non-transitory machine readable medium comprises a machine readable medium with a plurality of particles having invariant (e.g., rest) mass, and thus are compositions of matter. Accordingly, non-transitory machine-readable media are machine readable media that do not include transitory propagating signals. Specific examples of non-transitory machine readable media may include: non-volatile memory, such as semiconductor memory devices (e.g., Electrically Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM)) and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
In an example, information stored or otherwise provided on the machine readable medium 622 may be representative of the instructions 624, such as instructions 624 themselves or a format from which the instructions 624 may be derived. This format from which the instructions 624 may be derived may include source code, encoded instructions (e.g., in compressed or encrypted form), packaged instructions (e.g., split into multiple packages), or the like. The information representative of the instructions 624 in the machine readable medium 622 may be processed by processing circuitry into the instructions to implement any of the operations discussed herein. For example, deriving the instructions 624 from the information (e.g., processing by the processing circuitry) may include: compiling (e.g., from source code, object code, etc.), interpreting, loading, organizing (e.g., dynamically or statically linking), encoding, decoding, encrypting, unencrypting, packaging, unpackaging, or otherwise manipulating the information into the instructions 624.
In an example, the derivation of the instructions 624 may include assembly, compilation, or interpretation of the information (e.g., by the processing circuitry) to create the instructions 624 from some intermediate or preprocessed format provided by the machine readable medium 622. The information, when provided in multiple parts, may be combined, unpacked, and modified to create the instructions 624. For example, the information may be in multiple compressed source code packages (or object code, or binary executable code, etc.) on one or several remote servers. The source code packages may be encrypted when in transit over a network and decrypted, uncompressed, assembled (e.g., linked) if necessary, and compiled or interpreted (e.g., into a library, stand-alone executable etc.) at a local machine, and executed by the local machine.
The instructions 624 may be further transmitted or received over a communications network 626 using a transmission medium via the network interface device 620 utilizing any one of a number of transfer protocols (e.g., frame relay, internet protocol (IP), transmission control protocol (TCP), user datagram protocol (UDP), hypertext transfer protocol (HTTP), etc.). Example communication networks may include a local area network (LAN), a wide area network (WAN), a packet data network (e.g., the Internet), LoRa/LoRaWAN, or satellite communication networks, mobile telephone networks (e.g., cellular networks such as those complying with 3G, 4G LTE/LTE-A, or 5G standards), Plain Old Telephone (POTS) networks, and wireless data networks (e.g., Institute of Electrical and Electronics Engineers (IEEE) 802.11 family of standards known as Wi-Fi®, IEEE 802.15.4 family of standards, peer-to-peer (P2P) networks, among others. In an example, the network interface device 620 may include one or more physical jacks (e.g., Ethernet, coaxial, or phone jacks) or one or more antennas to connect to the communications network 626. In an example, the network interface device 620 may include a plurality of antennas to wirelessly communicate using at least one of single-input multiple-output (SIMO), multiple-input multiple-output (MIMO), or multiple-input single-output (MISO) techniques. The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding or carrying instructions for execution by the machine 600, and includes digital or analog communications signals or other intangible medium to facilitate communication of such software. A transmission medium is a machine readable medium.
Example 1 is a device for stylus trajectory prediction, the device comprising: memory including instructions; and processing circuitry that, when in operation, is configured by the instructions to: obtain a set of points, the set of points derived from a stylus moving on a surface; invoke an artificial neural network (ANN) on an input set, the input set based on the set of points, the ANN configured to output a next point from the input set, the next point being a prediction of a location of the stylus, the ANN trained to minimize angular error for the next point over other errors; and communicate the next point for rendering on a display.
In Example 2, the subject matter of Example 1, comprising the surface and the display, and wherein the surface and the display are arranged such that the next point is rendered under the stylus.
In Example 3, the subject matter of any of Examples 1-2, wherein the processing circuitry is configured by the instructions to create the input set from the set of points.
In Example 4, the subject matter of Example 3, wherein, to create the input set from the set of points, the processing circuitry is configured by the instructions to interpolate the set of points in time to produce a uniform time interval between points.
In Example 5, the subject matter of Example 4, wherein the input set is a vector of coordinates, each element of the vector representing an interpolated position at the uniform time interval.
In Example 6, the subject matter of Example 5, wherein, to create the input set, the processing circuitry is configured by the instructions to normalize the vector with respect to origin, length, or angle.
In Example 7, the subject matter of Example 6, wherein, to normalize the vector with respect to origin, the processing circuitry is configured by the instructions to shift an origin of the vector to a latest detected coordinate of the stylus.
In Example 8, the subject matter of any of Examples 6-7, wherein, to normalize the vector with respect to origin, the processing circuitry is configured by the instructions to modify a length of the vector to a predefined length.
In Example 9, the subject matter of any of Examples 6-8, wherein, to normalize the vector with respect to origin, the processing circuitry is configured by the instructions to rotate the vector to a predefined angle.
In Example 10, the subject matter of any of Examples 3-9, wherein, to create the input set from the set of points, the processing circuitry is configured by the instructions to convert the set of points into polar coordinates, wherein each coordinate is defined by a pair that includes a radius and an angle.
In Example 11, the subject matter of Example 10, wherein the ANN is trained on the input set to reduce error in the angle.
In Example 12, the subject matter of any of Examples 10-11, wherein the ANN is configured to predict error for the radius and the angle independently.
Example 13 is a method for stylus trajectory prediction, the method comprising: obtaining, by circuitry of a device, a set of points, the set of points derived from a stylus moving on a surface; invoking, by the circuitry, an artificial neural network (ANN) on an input set, the input set based on the set of points, the ANN configured to output a next point from the input set, the next point being a prediction of a location of the stylus, the ANN trained to minimize angular error for the next point over other errors; and communicating the next point for rendering on a display.
In Example 14, the subject matter of Example 13, wherein the device includes the surface and the display, and wherein the surface and the display are arranged such that the next point is rendered under the stylus.
In Example 15, the subject matter of any of Examples 13-14, comprising creating the input set from the set of points.
In Example 16, the subject matter of Example 15, wherein creating the input set from the set of points includes interpolating the set of points in time to produce a uniform time interval between points.
In Example 17, the subject matter of Example 16, wherein the input set is a vector of coordinates, each element of the vector representing an interpolated position at the uniform time interval.
In Example 18, the subject matter of Example 17, wherein creating the input set includes normalizing the vector with respect to origin, length, or angle.
In Example 19, the subject matter of Example 18, wherein normalizing the vector with respect to origin includes shifting an origin of the vector to a latest detected coordinate of the stylus.
In Example 20, the subject matter of any of Examples 18-19, wherein normalizing the vector with respect to length includes modifying a length of the vector to a predefined length.
In Example 21, the subject matter of any of Examples 18-20, wherein normalizing the vector with respect to angle includes rotating the vector to a predefined angle.
In Example 22, the subject matter of any of Examples 15-21, wherein creating the input set from the set of points includes converting the set of points into polar coordinates, wherein each coordinate is defined by a pair that includes a radius and an angle.
In Example 23, the subject matter of Example 22, wherein the ANN is trained on the input set to reduce error in the angle.
In Example 24, the subject matter of any of Examples 22-23, wherein the ANN is configured to predict error for the radius and the angle independently.
Example 25 is at least one machine readable medium including instructions for for stylus trajectory prediction, the instructions, when executed by processing circuitry of a device, cause the processing circuitry to perform operations comprising: obtaining a set of points, the set of points derived from a stylus moving on a surface; invoking an artificial neural network (ANN) on an input set, the input set based on the set of points, the ANN configured to output a next point from the input set, the next point being a prediction of a location of the stylus, the ANN trained to minimize angular error for the next point over other errors; and communicating the next point for rendering on a display.
In Example 26, the subject matter of Example 25, wherein the device includes the surface and the display, and wherein the surface and the display are arranged such that the next point is rendered under the stylus.
In Example 27, the subject matter of any of Examples 25-26, wherein the operations comprise creating the input set from the set of points.
In Example 28, the subject matter of Example 27, wherein creating the input set from the set of points includes interpolating the set of points in time to produce a uniform time interval between points.
In Example 29, the subject matter of Example 28, wherein the input set is a vector of coordinates, each element of the vector representing an interpolated position at the uniform time interval.
In Example 30, the subject matter of Example 29, wherein creating the input set includes normalizing the vector with respect to origin, length, or angle.
In Example 31, the subject matter of Example 30, wherein normalizing the vector with respect to origin includes shifting an origin of the vector to a latest detected coordinate of the stylus.
In Example 32, the subject matter of any of Examples 30-31, wherein normalizing the vector with respect to length includes modifying a length of the vector to a predefined length.
In Example 33, the subject matter of any of Examples 30-32, wherein normalizing the vector with respect to angle includes rotating the vector to a predefined angle.
In Example 34, the subject matter of any of Examples 27-33, wherein creating the input set from the set of points includes converting the set of points into polar coordinates, wherein each coordinate is defined by a pair that includes a radius and an angle.
In Example 35, the subject matter of Example 34, wherein the ANN is trained on the input set to reduce error in the angle.
In Example 36, the subject matter of any of Examples 34-35, wherein the ANN is configured to predict error for the radius and the angle independently.
Example 37 is a system for stylus trajectory prediction, the system comprising: means for obtaining, by a device, a set of points, the set of points derived from a stylus moving on a surface; means for invoking an artificial neural network (ANN) on an input set, the input set based on the set of points, the ANN configured to output a next point from the input set, the next point being a prediction of a location of the stylus, the ANN trained to minimize angular error for the next point over other errors; and means for communicating the next point for rendering on a display.
In Example 38, the subject matter of Example 37, wherein the device includes the surface and the display, and wherein the surface and the display are arranged such that the next point is rendered under the stylus.
In Example 39, the subject matter of any of Examples 37-38, comprising means for creating the input set from the set of points.
In Example 40, the subject matter of Example 39, wherein the means for creating the input set from the set of points include means for interpolating the set of points in time to produce a uniform time interval between points.
In Example 41, the subject matter of Example 40, wherein the input set is a vector of coordinates, each element of the vector representing an interpolated position at the uniform time interval.
In Example 42, the subject matter of Example 41, wherein the means for creating the input set include means for normalizing the vector with respect to origin, length, or angle.
In Example 43, the subject matter of Example 42, wherein the means for normalizing the vector with respect to origin include means for shifting an origin of the vector to a latest detected coordinate of the stylus.
In Example 44, the subject matter of any of Examples 42-43, wherein the means for normalizing the vector with respect to length include means for modifying a length of the vector to a predefined length.
In Example 45, the subject matter of any of Examples 42-44, wherein the means for normalizing the vector with respect to angle include means for rotating the vector to a predefined angle.
In Example 46, the subject matter of any of Examples 39-45, wherein the means for creating the input set from the set of points include means for converting the set of points into polar coordinates, wherein each coordinate is defined by a pair that includes a radius and an angle.
In Example 47, the subject matter of Example 46, wherein the ANN is trained on the input set to reduce error in the angle.
In Example 48, the subject matter of any of Examples 46-47, wherein the ANN is configured to predict error for the radius and the angle independently.
PNUM Example 49 is at least one machine-readable medium including instructions that, when executed by processing circuitry, cause the processing circuitry to perform operations to implement of any of Examples 1-48.
PNUM Example 50 is an apparatus comprising means to implement of any of Examples 1-48.
PNUM Example 51 is a system to implement of any of Examples 1-48.
PNUM Example 52 is a method to implement of any of Examples 1-48.
The above detailed description includes references to the accompanying drawings, which form a part of the detailed description. The drawings show, by way of illustration, specific embodiments that may be practiced. These embodiments are also referred to herein as “examples.” Such examples may include elements in addition to those shown or described. However, the present inventors also contemplate examples in which only those elements shown or described are provided. Moreover, the present inventors also contemplate examples using any combination or permutation of those elements shown or described (or one or more aspects thereof), either with respect to a particular example (or one or more aspects thereof), or with respect to other examples (or one or more aspects thereof) shown or described herein.
All publications, patents, and patent documents referred to in this document are incorporated by reference herein in their entirety, as though individually incorporated by reference. In the event of inconsistent usages between this document and those documents so incorporated by reference, the usage in the incorporated reference(s) should be considered supplementary to that of this document; for irreconcilable inconsistencies, the usage in this document controls.
In this document, the terms “a” or “an” are used, as is common in patent documents, to include one or more than one, independent of any other instances or usages of “at least one” or “one or more.” In this document, the term “or” is used to refer to a nonexclusive or, such that “A or B” includes “A but not B,” “B but not A,” and “A and B,” unless otherwise indicated. In the appended claims, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein.” Also, in the following claims, the terms “including” and “comprising” are open-ended, that is, a system, device, article, or process that includes elements in addition to those listed after such a term in a claim are still deemed to fall within the scope of that claim. Moreover, in the following claims, the terms “first,” “second,” and “third,” etc. are used merely as labels, and are not intended to impose numerical requirements on their objects.
The above description is intended to be illustrative, and not restrictive. For example, the above-described examples (or one or more aspects thereof) may be used in combination with each other. Other embodiments may be used, such as by one of ordinary skill in the art upon reviewing the above description. The Abstract is to allow the reader to quickly ascertain the nature of the technical disclosure and is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. Also, in the above Detailed Description, various features may be grouped together to streamline the disclosure. This should not be interpreted as intending that an unclaimed disclosed feature is essential to any claim. Rather, inventive subject matter may lie in less than all features of a particular disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment. The scope of the embodiments should be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.