WO2016205821A1 - Operating a wearable mouse in three dimensions with six full degrees of freedom - Google Patents

Operating a wearable mouse in three dimensions with six full degrees of freedom Download PDF

Info

Publication number
WO2016205821A1
WO2016205821A1 PCT/US2016/038429 US2016038429W WO2016205821A1 WO 2016205821 A1 WO2016205821 A1 WO 2016205821A1 US 2016038429 W US2016038429 W US 2016038429W WO 2016205821 A1 WO2016205821 A1 WO 2016205821A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
movement
finger
sensing device
finger mouse
Prior art date
Application number
PCT/US2016/038429
Other languages
French (fr)
Inventor
George Thomas
Original Assignee
Innovative Devices, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Innovative Devices, Inc. filed Critical Innovative Devices, Inc.
Publication of WO2016205821A1 publication Critical patent/WO2016205821A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0346Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/033Indexing scheme relating to G06F3/033
    • G06F2203/0331Finger worn pointing device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/038Indexing scheme relating to G06F3/038
    • G06F2203/0384Wireless input, i.e. hardware and software details of wireless interface arrangements for pointing devices

Definitions

  • the device, methods, and systems described below relate generally to the field of computing devices and methods of interacting with computing devices and more particularly to devices, methods and systems for data input, cursor manipulation and transcription.
  • FIG. 1 A is an exploded perspective view of a finger mouse.
  • FIG. IB is a perspective view of a finger mouse.
  • FIG. 1C is a perspective view of a finger mouse.
  • FIG. ID is a perspective view of a finger mouse system.
  • FIG. IE is an exploded view of an ergonomic finger mouse.
  • FIG. IF is an exploded view of an ergonomic finger mouse.
  • FIG. 1G is a perspective view of a finger mouse circuit board.
  • FIG. 1H is a partially exploded view of a finger mouse with a removable power module.
  • FIG. 11 is a plan view of a daughter board for a finger mouse.
  • FIG. 2 is a perspective view of a finger mouse on an index finger of a human hand.
  • FIG. 3 A is a perspective view of a finger mouse on an index finger of a human hand
  • FIG. 3B is a perspective view of a finger mouse on an index finger of a human hand
  • FIG. 3C is a perspective view of a finger mouse on an index finger of a human hand
  • FIG. 4 is a perspective view of two finger mice on two fingers of a human hand.
  • FIG. 5A is a perspective view of two finger mice on two fingers of a human hand.
  • FIG. 5B is a perspective view of two finger mice on two fingers of a human hand.
  • FIG. 5C is a perspective view of two finger mice on two fingers of a human hand.
  • FIG. 6 is a perspective view of a finger mouse on an index finger of a human hand.
  • FIG. 7 is a perspective view of a finger mouse on an index finger of a human hand.
  • FIG. 8 is a perspective view of a human hand.
  • FIG. 9 is a perspective view of a personal computer system.
  • FIG. 10 is a perspective view of a finger mouse on an index finger of a human hand while typing.
  • FIG. 11 is a perspective view of a finger mouse on an index finger of a human hand tapping against a surface.
  • FIG. 12 is a flowchart of a method of processing motion data from a finger mouse.
  • FIG. 13 is a flowchart of a method of processing motion data from a finger mouse.
  • FIG. 14 is a flowchart of a method of interfacing a finger mouse with a computing device.
  • FIG. 15A is a flowchart of a method of interfacing a finger mouse with a computing device.
  • FIG. 15B is a flowchart of a method of interfacing a finger mouse with a computing device.
  • FIG. 15C is a flowchart of a method of interfacing a finger mouse with a computing device.
  • FIG. 15D is a flowchart of a method of interfacing a finger mouse with a computing device.
  • FIG. 16 is a flowchart of a method of operating a finger mouse to obtain three dimensional position information with 6 full degrees of freedom.
  • FIG. 17 is a flowchart of a method of operating a finger mouse to obtain three dimensional position information with 6 full degrees of freedom.
  • a method comprises receiving data associated with at least a portion of a movement of a wearable motion sensing device; filtering the data to produce a rate of change of the movement of the wearable motion sensing device; integrating the rate of change of the movement to produce a measured movement of the wearable motion sensing device; using the measured movement and an accumulated movement to produce at least one of an updated position of the wearable motion sensing device and an updated orientation of the wearable motion sensing device; and updating a feature of a user interface of a computing device based at least in part upon one of the updated position and the updated orientation; wherein the movement of the wearable motion sensing device is at least one of a movement along one of three axes of a three- dimensional space and a movement about one of three axes of a three-dimensional space.
  • the method can further comprise scaling the data.
  • the method the feature of the user interface of the computing device can be a cursor position.
  • the cursor position can be updated based at least in part upon a scaled measured movement.
  • the method can further comprise receiving an indication of a sensor activation of the wearable motion sensing device, and the feature can be updated at least in part upon receiving the indication of the sensor activation.
  • the filtering can be performed by a filter selected from the group consisting of smoothing filter, a high pass filter, a Kalman filter or an iterative algorithm.
  • the method can still further comprise determining an orientation of the wearable motion sensing device using a measurement of acceleration due to gravity on the wearable motion sensing device.
  • An apparatus comprises at least one accelerometer and at least one gyroscope configured to create data associated with at least a portion of a movement of a wearable motion sensing device; a processor configured to filter the data to produce a rate of change of the movement of the wearable motion sensing device, integrate the rate of change of the movement to produce a measured movement of the wearable motion sensing device, use the measured movement and an accumulated movement to produce at least one of an updated position of the wearable motion sensing device and an updated orientation of the wearable motion sensing device, and update a feature of a user interface of a computing device based at least in part upon one of the updated position and the updated orientation; an energy storage unit configured to supply electrical energy to the accelerometer, the gyroscope, and the processor; a communication module configured to exchange a data signal with the computing device; and a housing configured to at least partially enclose the accelerometer, the gyroscope, and the processor; wherein the movement of the wearable motion sensing device is at least one of
  • the processor can be further configured to scale the data.
  • the feature of the user interface of the computing device can be a cursor position.
  • the processor can be further configured to receive an indication of a sensor activation of the wearable motion sensing device.
  • the processor can be still further configured to update the feature of the user interface of the computing device upon receiving an indication of a sensor activation of the wearable motion sensing device.
  • the processor can be yet further configured to determine an orientation of the wearable motion sensing device using a measurement of acceleration due to gravity on the wearable motion sensing device.
  • references to components or modules generally refer to items that logically can be grouped together to perform a function or group of related functions.
  • Components and modules can be implemented in software, hardware, or a combination of software and hardware.
  • software is used expansively to include not only executable code, but also data structures, data stores and computing instructions in any electronic format, firmware, and embedded software.
  • information is used expansively and includes a wide variety of electronic information, including but not limited to machine-executable or machine-interpretable instructions; content such as text, video data, and audio data, among others; and various codes or flags.
  • the terms "information” and “content” are sometimes used interchangeably when permitted by context.
  • Computing systems typically have a user interface to allow a person to either access or enter data within a computing device.
  • Computing devices can be desktop computers, laptops, tablets, smartphones, gaming systems, kiosk systems, devices with embedded processors, automotive systems, music playing devices, and generally any kind of system or device that employs processing logic where human input is utilized to control a function of the system or device.
  • Most common user interface data entry devices used in conjunction with computing systems are the keyboard, which allows a user to enter data either as text or numerical information, and the mouse, which refers to a type of user interface in which a computer operator can manipulate a cursor in a 2D plan video graphic screen such as the video screen 402 of a computer 400.
  • the traditional mouse is also used as a navigation tool to select points of data entry and other related functions on the video graphic screen.
  • the finger mouse 100 provides fewer restrictions to the user or computer operator as with use of a conventional mouse.
  • the finger mouse 100 is a motion sensing device that can interface with a computing device and facilitate human-computer interaction.
  • the finger mouse 100 can comprise a bottom housing 101, a top housing 102, a rigid circuit board 103 comprising a RF transceiver 105, an
  • a gyroscope 107 functional in at least three axis (pitch, yaw, roll), a capacitive sensing circuit 108 that can sense areas including buttons, a slide bar, or both, a battery 109, and a visual indicator 110, for example a Light Emitting Diode (LED) and a flexible circuit 104 that can comprise capacitive sense buttons 111, 112, 113 or touch sensors, a slide bar, or tactile buttons.
  • LED Light Emitting Diode
  • the rigid circuit board 103 can be flexible, or can comprise two or more separate circuit boards. In other configurations, the rigid circuit board 103 and flexible circuit 104 can be a single flexible circuit. In still other configurations, the RF transceiver 105, accelerometer 106, gyroscope 107, capacitive circuit 108, battery 109, visual indicator 110, and flexible circuit 104 can be separate from the rigid circuit board 103 and electrically connected via a bus or wires (not shown). In alternative configurations, the finger mouse 100 may comprise only a subset of the listed components. For example, the gyroscope 107 can have less than three axes or the rigid circuit board 103 may not include a visual indicator 110.
  • the individual components can be combined or separated as would be understood by one familiar with the art.
  • the accelerometer 106 and gyroscope 107 can be a single component or chip, or each axis of the accelerometer 106 and gyroscope 107 can comprise a separate discrete component.
  • the housing 101, 102 can be a single molded unit that provides a protective recessing by surrounding all of, or a portion of, the internal electronics, using for example molded silicon, plastic, rubber, other compounds, or combinations thereof.
  • the housing 101, 102 can include a band 115 or removable finger grip 125 and can be a single unit of material, for example a molded silicon or rubber unit, with the rigid circuit board 103 and flexible circuit 104 embedded within the material.
  • the finger mouse 100 can include a pulse oximeter to measure heart rate 155 which can include a separate sensor mounted in the housing 101, 102, 115, 125, a global positioning system (GPS) 156 circuit, radio frequency identification (RFID) chips 154, camera (not shown), charge coupled devices, focal plane arrays or linear sensor arrays sensitive to various frequencies of electromagnetic radiation (not shown), altimeters (not shown), and magnetometers (not shown) as additional sensors to develop a more comprehensive set of data for understanding the movement, position, and state of the user who is utilizing the finger mouse 100. With additional sensors inputs, the finger mouse 100 can develop a more complete, comprehensive event analysis of the user's experience with the finger mouse 100.
  • GPS global positioning system
  • RFID radio frequency identification
  • a power source in the finger mouse 100 can be a battery 109.
  • the battery 109 can be a coin-type battery of the type commonly used to power small electronic devices.
  • a conductive retaining clip (not shown) can be used to both releasably attach the battery 109 to the device and to complete a power circuit that includes the battery 109 as the power source. This releasable construction can be used to permit removal of the battery 109 for replacement or recharging, among other things.
  • the finger mouse 100 incorporates a charging circuit (not shown) either directly connected by cable or wires to an external power source (not shown) or connected to an external power source through inductive coupling.
  • the finger mouse 100 can be powered by an external power source (not shown) operatively coupled with the finger mouse 100.
  • the finger mouse 100 can be powered by a computer 400 through a USB port 130; the computer 400 would be the external power source.
  • a computer 400 would be the external power source.
  • Those of ordinary skill in this area will recognize from reading this disclosure that other types of batteries and power sources (such as a solar cell or a supercapacitor) may be used in different configurations as desired, needed, or appropriate.
  • An indicator window 114 can be located on the exterior of the finger mouse 100, and can expose the LED or visual indicator 110, which can indicate multiple functions, actions, and conditions of the finger mouse 100, for example a power on condition, a self-test condition, and a sleep mode condition. Mouse selections from the user's thumb, or another finger, can result in certain kinds of flashing of LED or visual indicator 110.
  • Movement of the finger while in cursor mode or scrolling mode can cause another type of flashing.
  • Another flashing could be an indication of active communications between the finger mouse 100 and another computing device, for example establishment of a communications link or sending and receiving messages from a computing device.
  • the finger mouse 100 can also have a vibratory component 152 and a sound emitter component 153 (see FIG. 11.) These components can be programmed to interact in correspondence to actions as portrayed on a visual feedback device (not shown), for example by receiving a message from a computing device. For example, a cursor indicator on a video screen 402 moving and hitting an edge of the video graphic screen may be linked to the vibratory component 152 vibrating.
  • tactile sensations can serve the user to indicate cursor placement, or in another configuration tactile feedback can enhance a video game player's experience.
  • auditory cues from the sound emitter can be similarly interactive, or can be based on an internal condition of the finger mouse 100, for example a power on or power off condition.
  • Communications operably couple the finger mouse 100 to a computing device.
  • the communications can include wired and wireless communications.
  • Data which can include packetized data, messages, and signals, from the finger mouse 100 can be transmitted using a wired data transmission pathway including specific implementations or versions of universal serial bus ("USB"), Ethernet, or IEEE 1394 ("Fire WireTM” or “iLinkTM”), among others.
  • Data from the finger mouse 100 can be transmitted using wireless data transmission or reception components.
  • the wireless data transmission or reception components can operate according to a specified communication protocol. Suitable protocols include those in the Institute of Electrical and Electronics Engineers (“IEEE”) 802-series such as ZigBeeTM (IEEE 802.15.4), BluetoothTM (IEEE 802.16) and WiFiTM (IEEE 802.11), among others.
  • IEEE Institute of Electrical and Electronics Engineers
  • FIG 14 a flow diagram depicting a method of interfacing 600 a finger mouse 100 with a computing device is presented. Execution of the method begins at START block 610. At process block 620, the finger mouse 100 is associated with a computing device. Processing continues to process block 625 where the finger mouse 100 is activated to sense motion. Processing continues to process block 630 where finger mouse 100 is initialized.
  • Processing continues to process block 640 where the sensed motion is processed into motion data. Processing continues to process block 650 where the motion data is formatted into a data packet or message. Processing then continues to process block 660 where the data packet or message is transmitted to a receiver. Processing then continues to process block 670 where the data packet or message is received by the receiver. Processing then continues to process block 680 where the data packet or message is formatted into motion data for the computing device. Processing then continues to process block 690 where the motion data is processed into an action for, or event on, the computing device. Processing then continues to processing block 700 a feature of a user interface of the computing device is updated. Processing then terminates at END block 710.
  • FIG 15 A a flow diagram depicting a method of authenticating 800 a user with a finger mouse 100 is presented. Execution of the method begins at START block 805. Processing continues to process block 810 where the user is authenticated with the computing device. Processing continues to process block 820 where access to the computing device is configured. Processing then terminates at END block 825.
  • the method of authenticating 800 a user with a finger mouse 100 can be part of process block 620 of FIG. 14 where a finger mouse 100 is associated with a computing device.
  • FIG. 15B a flow diagram depicting a method of receiving motion data 830 by a first finger mouse 100 from second finger mouse 100 is presented. Execution of the method begins at START block 835. Processing continues to process block 840 where the first finger mouse 100 receives motion data from a second finger mouse 100. Processing continues to process block 840 where the first finger mouse 100 processes the motion data from the second finger mouse 100 to create a new data packet or new message. Processing then terminates at END block 845.
  • the method of receiving motion data 830 from a second finger mouse 100 can be part of process block 640 of FIG. 14 where a finger mouse 100 processes motion data.
  • FIG. 15C a flow diagram depicting a method of providing an indication 850 is presented. Execution of the method begins at START block 855. Processing continues to process block 860 where the finger mouse 100 presents an indication to the user, for example a visual indication, an audible indication, a vibratory indication or any other kind of indication. Processing then terminates at END block 865.
  • the method of providing an indication 850 can be part of process blocks 620, 625, 630, 660, 670 or any other process block where the user can receive information that a particular event has occurred or to provide status about an internal state of the finger mouse 100.
  • FIG. 15D a flow diagram depicting a method of data transfer 900 is presented. Execution of the method begins at START block 905. Processing continues to process block 660 where the data packet or message is transmitted to a receiver. Processing then continues to process block 670 where the data packet or message is received by the receiver. Processing then continues to decision block 910 where a determination is made whether the data packet or message is a valid data packet or message or is the next expected data packet or message if sequencing information is utilized. If the determination is NO, then processing continues to process block 930 where the receiver requests retransmission of the data packet or message. Processing then continues back to process block 670.
  • processing continues to process block 920 where receipt of the data packet or message is acknowledged back to the finger mouse 100 and processing then terminates at END block 935.
  • the method of data transfer 900 can be part of process blocks 660, and 670 of FIG. 14 where a finger mouse 100 is transmitting and receiving data with a computing device.
  • example methods of interfacing 600 a finger mouse 100 with a computing device are presented.
  • the finger mouse 100 can be associated 620 with a computing device by activating 625 the finger mouse 100 near a computing device.
  • the finger mouse 100 can be associated 620 with the computing system by activating 625 the finger mouse 100 and obtaining a network address from the computing device, for example by using a dynamic host control protocol (DHCP.)
  • DHCP dynamic host control protocol
  • the finger mouse 100 can be associated 620 with the computing system by attaching to a USB port of the computing device and passing configuration information with the computing device.
  • the finger mouse 100 can require an authentication method 800.
  • an authentication method 800 For example, if the finger mouse 100 and the computing device use BluetoothTM, an initial pairing procedure takes place that associates 620 the BluetoothTM interface in the finger mouse 100 with the receiving device.
  • the finger mouse 100 can also authenticate 810 the user with the computing device, for example by identifying the particular finger mouse 100 from a device identification number of the finger mouse 100 that was previously associated with a particular user, or by a sequence of movements or sensor activations of the finger mouse 100 by the user.
  • the authentication method 800 can also use digital certificates, encryption methods, or other authentication methods known in the art.
  • the computing device can configure 820 the appropriate user access to files, applications, and system resources for that user on the computing device.
  • an RFID 154 chip in the finger mouse 100 can provide identification and authentication information for the finger mouse 100.
  • the computing device can interrogate the RFID 154 chip directly, or the interrogation can be performed by another device and provided to the computing device though a network.
  • a user entering a room can be identified by an RFID reader that can be located for example in the doorframe.
  • the RFID 154 chip in the finger mouse 100, or a separate RFID device associated with the user provides authentication and identification information about the user and finger mouse 100.
  • the information can be authenticated 800 by an authentication system that enables use of the finger mouse 100 with the computing device.
  • the finger mouse 100 processes 640 the sensed motion into motion data, formats 650 the motion data into a message structure suitable for the wired or wireless communications protocol being utilized, for example a data packet, and transmits 660 the message to a receiver, such as a computing device.
  • the receiver receives 670 the message, and can acknowledge 920 the message, if a suitable protocol is being used, and can request retransmission 930 of packets if message sequencing information is supported by the protocol or if the finger mouse 100 determines that the message is corrupt. If the receiver is not the computing device, but is, for example, a dongle or wireless adaptor, then the receiver can further process the message, for example by formatting 680, reformatting, or converting the message into a protocol suitable for the computing device.
  • a finger mouse 100 can wirelessly communicate with a dongle using the ZigBeeTM protocol, and the dongle can communicate with the computing device using a USB port.
  • the motion data in the message can be processed 690 and turned into an action, event, or command for the computing device, for example a movement of a cursor on the computing device that is displayed 700 to the user.
  • the finger mouse 100 can form an ad-hoc network with another finger mouse 100 and route messages to the receiver, for example if multiple finger mice 100 are simultaneously used by the user.
  • the finger mouse 100 can also receive 840 messages from other finger mice 100 and process 850 new messages that are sent to the computing device. This advantageously requires the user to only have to authenticate a first finger mouse 100 with the computing system instead of having to individually authenticate 810 one or more finger mice 100 with the computing system.
  • the finger mouse 100 can receive messages from other finger mice 100 and process 850 the messages to create new messages based on a combination of the data from one or more finger mice 100, thereby facilitating control of the user interface of the computing device based upon combinations of movements of multiple finger mice 100.
  • the finger mouse 100 uses a transmission control protocol over internet protocol (TCP/IP.) In a configuration, the finger mouse 100 uses a user datagram protocol over internet protocol (UDP/IP.) In a configuration, the finger mouse 100 uses a lightweight protocol adapted for low power wireless transmission.
  • the finger mouse 100 can use a wireless communication protocol such as the SimpliciTITM protocol from Texas Instruments, or another suitable protocol.
  • the finger mouse 100 can transmit data to a receiver 116 or computing device at a data transmission rate of 250Hz.
  • the data packet can comprise the following elements:
  • the first three bytes of data can be the start bytes for verifying the start of a packet.
  • the peer # byte can be used for collaboration of multiple finger mice 100.
  • the transaction ID. can contain a sequence number of the packet being transmitted, and can be used for windowing functions or proper sequencing of the data packets.
  • the capsense data byte can contain cursor button activation, slide activation, and centroid position information. For example bit 0 can be always 1; bit 1 can be for activation of a button 111 or touch sensor area 129; bit 2 can indicate button 112, 113 or slide sensor area 128 activation, and bits 3-7 can be for button 112, 113 activation or centroid position in the slide sensor area 128.
  • the centroid position indicates where a user's finger is placed within the slide sensor area 128.
  • the capsense data byte 2 can contain charging status and link status information.
  • bit 0 can be a debug bit
  • bit 1-5 can be reserved for future use, for example additional touch sensors
  • bit 6 can be for link status
  • bit 7 can be for charge status, for example if the finger mouse 100 is charging through the USB port 130.
  • the finger mouse 100 wakes, sets bit 1 of the capsense data byte to high, and begins sending acceleration data, Ax, Ay, Az, and angular rate data Gx, Gy, Gz to the computing device.
  • the finger mouse 100 can also perform an initializing 630 or zeroing of the acceleration data, Ax, Ay, Az, and angular rate data Gx, Gy, Gz to remove any drift or bias.
  • the data can be converted by the finger mouse 100, receiver 116 or device driver into a cursor movement on the computing device displayed 700 to the user that tracks the movement of the fingermouse 100.
  • the finger mouse 100 can send motion data to the computing device only when button 111 or touch sensor area 129 is touched, which functions as an activation sequence.
  • An activation sequence can be configured to be any kind of action by the user or computing device to instruct the finger mouse 100 to send motion data to the computing device, such as a powering on of the finger mouse 100, a user initiated activation of a button 111 or touch sensor 129 of the finger mouse 100, a user initiated activation of a slide sensor area 128 of the finger mouse 100, a user initiated movement of the finger mouse 100, and a receiving of a signal from a computing device.
  • the finger mouse 100 can halt sending messages to the computer device.
  • the finger mouse 100 can also halt sending messages based on loss of a communications link with the receiver 116, a reduction in movement of the finger mouse 100, a second activation sequence, an expiration of a timer after an activation of the activation sequence, a low battery power condition, an error condition of the finger mouse 100, and a receiving of a signal from the computing device.
  • the acceleration data, Ax, Ay, Az, and angular rate data Gx, Gy, Gz, data can be sent as raw data or processed data.
  • Software for example an algorithm 300 on the finger mouse 100, receiver 116, or a device driver on the computing device, can process 324 or convert the raw data into processed data that corresponds to a position value. What follows is a description of a non- limiting example of an algorithm 300 to convert the raw data into a position value.
  • FIG. 12 is a flow diagram depicting an algorithm 300 for controlling a finger mouse 100. Execution of the method begins at START block 310. At process block 320, the motion data is acquired. Processing continues to process block 330 where the motion data is scaled. Processing continues to process block 340 where the motion data is filtered. Processing continues to process block 350 where the motion data is processed to remove the DC offset. At decision block 360 a determination is made whether to apply a gain to the processed motion data. If that determination is YES, processing continues to processing block 400 where a gain is applied to the motion data and processing then continues to decision block 270. If the determination is NO, then processing continues to decision block 270.
  • processing continues to processing block 380.
  • the processed motion data is integrated to obtain the accumulated position or angle data.
  • processing continues to processing block 390 where the accumulated position or angle data can be used to update a feature of a user interface of the computing device. Processing then terminates at END block 420.
  • FIG. 13 is a flow diagram depicting a fine control algorithm 500 for filtering and processing motion data to remove offset.
  • the fine control algorithm 500 can be used in addition to, or instead of, the process blocks 340 and 350 of FIG. 12. Execution of the method begins at START block 510. At process block 520, a subset of the motion data is selected. Processing continues to process block 530 where a mean value of the subset of the motion data is
  • processing continues to process block 540 where a standard deviation of the subset of the motion data is determined. Processing continues to decision block 550. At decision block 550 at determination is made whether the standard deviation of the subset of the motion data exceeds at threshold standard deviation. If the determination is YES, then the movement of the finger mouse 100 is too great for fine control and processing terminates at END block 570. If the determination is NO, then the finger mouse 100 is moving slowly enough for fine control and processing continues to process block 560. At process block 560, the mean value that was calculated at process block 530 is used to remove the offset from the motion data. Processing then terminates at END block 570.
  • the finger mouse 100 determines the motion data and sends it to the device 100, 116 or computing device that is running the algorithm.
  • the motion data can be scaled 330.
  • the raw acceleration data, Ax, Ay, Az, and angular rate data Gx, Gy, Gz can be converted or scaled 330 into usable units that correspond to real world values.
  • the acceleration data can be scaled 330 to a plus or minus 4g scale, for example
  • the angular rate data can be scaled 330 to a plus or minus 500 degrees per second (dps) scale, for example
  • the algorithm 300 can filter 340 the data, for example using smoothing functions or a moving average to remove transients that can cause large unwanted movements of the cursor on the user interface and inhibit fine control of the cursor on the user interface.
  • the algorithm can also remove 350 the DC offsets, for example using a high pass filter to obtain only data representative of the change in motion of the finger mouse 100.
  • a Kalman filter or an iterative algorithm can be used, for example a fine control algorithm 500. For example, a subset of the data is selected 520 and a mean calculation of the value for each axis of acceleration and angular rate can be determined 530.
  • the subset of the data can be selected 520 using a window function, and the mean can be determined 530 or calculated using only that subset of data points in the window.
  • the window size can be adjustable and nominally is 50 data points.
  • the standard deviation for each axis is calculated 540 and compared 550 against a minimum standard deviation.
  • the minimum standard deviation can be adjustable and nominally is .03.
  • the minimum standard deviation can be adjustable and nominally is .003.
  • the standard deviation for an axis is below the minimum standard deviation, the user's hand and the finger mouse 100 can be stable enough for the mean value for that axis to be subtracted from the data point, thus removing 560 the DC offset for each data point of the axis to produce data values representative of the true movement.
  • the algorithm 300 can also perform a baseline measurement to determine 370 the orientation of the finger mouse 100, for example using the acceleration of the finger mouse 100 due to gravity 410.
  • the algorithm 300 can convert acceleration data to position data and convert angular rate to degrees of rotation to determine the position of the finger mouse 100 and the orientation of the finger mouse 100, for example, by performing a discrete integration 380 of the data values representative of the true movement with the accumulated position or angle data.
  • the algorithm 300 can also re-orient the position data based on a change in angle.
  • the algorithm 300 can apply 400 a gain to the data values representative of the true movement in order to control cursor acceleration; the gain can be selectable 360 and can be linear, or exponential, or any other function.
  • the algorithm then outputs a position data in the desired form, for example an X, Y cursor position, or other form, to update 390 the cursor or any other feature of the user interface.
  • the output position data could be in a Cartesian, or X, Y, Z coordinate system, or can be converted to a spherical-based coordinate system, or any other coordinate system as needed.
  • FIG. 1C a typical orientation of an acceleration orientation origin located at the tip of the finger mouse 100 is illustrated. Three dimensional frames of reference can be selected from a fixed reference plane or a floating reference plane in relation to the acceleration orientation origin.
  • acceleration of gravity and angular acceleration detected by the accelerometer 106 and a gyroscope 107 provide orientation of the finger mouse 100 in three dimensional spaces.
  • Motion of the accelerometer 106 can be interpolated in a plane with respect to the finger tip.
  • the directions of the various axis and 20 reference planes can be fixed to the finger mouse 100 itself.
  • the ZX plane of the accelerometer 106 can be no longer perfectly vertical, the translation plane for pointer position can be interpolated based on the acceleration and the position feedback from the gyroscope 107.
  • Such control can attribute the same execution of motion of the user's finger whether the finger mouse 100 is pointing straight out or pointed down.
  • the data from the finger mouse 100 can be processed 640 or converted into feature displayed 700 on a user interface, including keyboard keystrokes, mouse actions, or any other type of command used in human-machine user interfaces.
  • the data from the finger mouse 100 that is processed 640 or converted into the feature can include one or more of the following: the motion of the finger mouse 100 in the form of raw acceleration data, Ax, Ay, Az, and angular rate data Gx, Gy, Gz, data, or processed position data, and the various activations of the various buttons 111, 112, 113, touch sensor areas 129, and slide sensor areas 128.
  • the data that is processed 640 or converted can include individual data points, such as an individual sensor activation, or can include groupings of data.
  • a gesture from a user can be captured by the finger mouse 100 as a set of movements or several sets of movements.
  • the sets of movements can be non-contiguous movements, for example an exclamation point can be processed by the finger mouse 100 from a rapid downward movement of the finger 100 to indicate a vertical line, followed within a short time interval by a forward movement of the finger mouse 100 to indicate a period under the vertical line.
  • the data from the finger mouse 100 can be processed or converted into common keyboard or mouse commands such as movement of a cursor, a left button click, a tight button click, a scrolling function, the opening of an application, the closing of an application, and deleting an item or sending the item to the recycle bin.
  • the data can also be processed or converted into an application defined button click, or a user defined button click.
  • the data can be used to perform a zoom in function or a zoom out function for a window on a screen, or facilitate checking email.
  • the data can be used for text creation, for example by providing a virtual keyboard for typing characters or interpreting motions as letters and characters, or document editing, for example editing strings of characters, block and copying text, pasting text, or deleting text.
  • commands and controls include control of the playback of multimedia files, such as selecting a multimedia item to play, modifying or muting volume levels, pausing playback, fast forwarding or rewinding, or starting playback at various positions within the file.
  • the finger mouse 100 can provide intuitive control and manipulation of the images, for example the rotation of an image, the resizing or scaling of an image, trimming of an image, or other image processing features.
  • the finger mouse 100 can also provide intuitive control for controlling movie editing features.
  • the data can be interpreted different ways by the application, depending on the particular context. For example, if the user was previously reading and not editing a document, sliding a finger across the slide sensor area 128 can function to scroll the document.
  • sliding a finger across the slide sensor area 128 can select text.
  • the particular context can depend upon the previous actions of the user, or can be determined, for example, by the focus of the application (e.g., is the focus the entire window, or is the focus relating to a text field within the window.)
  • the RF transceiver 105 can communicate directly with a computing device that has a compatible wireless interface.
  • the RF transceiver 105 can also communicate with a computing device through a receiver 116.
  • a receiver 116 can have a RF transceiver 105 for communicating with the finger mouse 100, a controller 117 that can be a processor or microcontroller, a USB transceiver chip 131 for communicating with the computing device, a male USB connector interface 118 for connecting to the USB port of a computing device, and can have a cord 119 between the RF transceiver 105 and the USB connector interface 118.
  • the receiver 116 can interface with the computing device using any number of interfaces, including a serial port that can be asynchronous or synchronous, an Ethernet port, a LAN port, a card socket, for example a PCMCIA card slot, a bus interface card, for example an internal ISA or PCI card slot, and, if separately powered, through another wireless interface.
  • a serial port that can be asynchronous or synchronous
  • an Ethernet port for example a PCMCIA card slot
  • a bus interface card for example an internal ISA or PCI card slot
  • the receiver 116 can be connected to the computing device through a cord 119, permitting placement of the receiver 116 at a distance from the computing device.
  • the cord 119 advantageously allows the receiver 116 to be placed closer to the user to facilitate
  • the receiver 116 can be placed where there is a clear line of sight to the user. Placing the receiver 116 closer to the finger mouse 100 can reduce the RF power consumption of finger mouse 100. Placement of the receiver 116 can also control the zone where a finger mouse 100 can be used.
  • the finger mouse 100 and receiver 116 can use a short range RF protocol, a piconet protocol, or a wireless personal area network (WP AN) protocol such as Infrared Data
  • IrDA International Mobile Subscriber Identity
  • Wireless USB Wireless USB
  • ZigBeeTM Wireless USB
  • IEEE 802.15 IEEE 802.15 protocol.
  • These protocols have limited ranges and can prevent interference of signals from the receiver 116 and finger mouse 100 from interfering with those of other users. This can be advantageous in public areas or office cubicles where there may be multiple users in relatively close proximity that are simultaneously using finger mice 100 with their individual computing devices.
  • the receiver 116 can be a dumb receiver that does not process data, for example a BluetoothTM dongle or a WiFiTM wireless adaptor that plugs into a USB port of the computing device and passes data, signals or messages between the computing device and the finger mouse 100.
  • the receiver 116 can also be incorporated into the computing device, for example as a component of the motherboard of the computing device, or in a card slot. In these
  • the finger mouse 100 can use a device driver on the computing device to translate the data, signals or messages from the finger mouse 100 into actions to be taken, or commands to be executed, by the computing device.
  • the finger mouse 100 can perform the processing of motion data into a processed command and send the processed command to the receiver 116.
  • the receiver 116 can also be a smart receiver that translates or processes communications received from the finger mouse 100.
  • the receiver 116 can maintain the link with the finger mouse 100, receive communications from the finger mouse 100, process or translate the communications from the finger mouse 100, which can comprise raw data, signals or packetized messages, and produce a processed message that is output using an output interface to the input interface of the computing device. Because the receiver 116 can be powered by the computing device, for example by using power directly from a USB connection to the computing device, performing the processing on the receiver 116 can minimize power consumption on the finger mouse 100 and advantageously extend the useful battery life.
  • the receiver 116 or finger mouse 100 can emulate a device, for example a computer mouse, by sending messages to the computing device in a standard recognized format.
  • the receiver 116 can send commands and messages to the computing device that would be recognized by the default mouse driver of the computing device.
  • the receiver 116 can ensure backwards compatibility with a wide range of computing devices without requiring the installation of new device drivers. This advantageously allows the finger mouse 100 to be used with computing devices that use embedded processors or that run proprietary software or operating system where developing device drivers would not be cost effective or possible.
  • the receiver 116 can also enable the finger mouse 100 to interface with devices that run application specific protocols such XI 0 or Z-Wave, which are used for home automation and the control of home electrical devices such as lamps.
  • application specific protocols such as XI 0 or Z-Wave, which are used for home automation and the control of home electrical devices such as lamps.
  • the use of various configurations of receivers 116 advantageously allows the use of the finger mouse 100 with a wide variety of electronic devices without requiring changes to the finger mouse 100 itself.
  • FIG. 1C also has a perspective view of an attachment mechanism for attaching the finger mouse 100 to the user.
  • the band 115 securing the finger mouse 100 to the index finger or any other finger of the human hand 200 can be constructed of various different materials and formed in many different fashions.
  • the band 115 can be constructed of flexible material such as silicone, rubber, elastic fabrics, etc. Constructing the band 115 using flexible materials provides an infinite range of sizing targeting 90% of the finger size population. Users can select the band 115 that best fits.
  • the band 115 can also be constructed of rigid materials such as plastic or metal. Sizing of the band 115 in the case of rigid materials can be accomplished using secondary bands which reduce the inner diameter of the band 115 much like that of sizing a ring to a finger.
  • the band 115 can also be interchangeable, with various inner diameters that fit the same profile. Interchangeable bands can allow stylistic changes or the sharing of a single device amongst several different users.
  • the finger mouse 100 can be attached by various other attaching means, as may be recognized by those of ordinary skill in the art.
  • the ergonomic finger mouse 120 comprises some of the features and aspects of the finger mouse 100 but further comprises a molded top housing 122 configured to secure to a molded bottom housing 121. When secured, the molded top housing 122 and molded bottom housing 121 form protective recesses that protect a circuit 123 and a flexible sensing circuit 124.
  • a removable finger grip 125 for gripping a finger of a hand is configured to physically attach to the molded bottom housing 121.
  • the molded top housing 122, molded bottom housing 121, and removable finger grip 125 comprise a housing 122, 121, 125.
  • the removable finger grip 125 can work in conjunction with a curved section 126 of the molded bottom housing 121 to attach the ergonomic finger mouse 120 to the finger or an appendage of the user.
  • the removable finger grip 125 can be sized in a range of sizes to fit fingers or thumbs (collectively fingers or digits) or other appendages, such as toes or arms.
  • the removable finger grip 125 facilitates attachment of the ergonomic finger mouse 120 to a wide range of appendage sizes, and is an alternative to a one-size-fits-all type approach.
  • the removable finger grip 125 can be configured to different geometries to accommodate placement on different parts of a finger.
  • the prongs of the removable finger grip 125 can be configured to have different diameters or shapes that facilitate comfortable securing of the ergonomic finger mouse 120 to the underlying bony structures of the finger, known as phalanges.
  • the prongs of the removable finger grip 125 can have an approximately tapered geometry to accommodate placement of the ergonomic finger mouse 120 on the distal and intermediate phalanges.
  • the prongs of the removable finger grip 125 can be configured to support attachment to the proximal phalanges, without substantially affecting movement of the distal and intermediate phalanges.
  • the molded top housing 122 can be connected to the molded bottom housing 121 to form a protective recess for the flexible sensing circuit 124.
  • the curved section 126 of the molded bottom housing 121 can function as a support surface for the flexible sensing circuit 124.
  • the curved sensing area 127 in the molded top housing 122 can provide a protective covering for the flexible sensing circuit 124.
  • the curved sensing area 127 can also provide a visual indication of a touch sensor area 129 by raising, lowering, or creating visual markers for where a user is to touch with their finger.
  • the touch sensor area 129 is positioned over the area where the flexible sensing circuit 124 is configured to register finger touches.
  • the curved sensing area 127 can similarly provide a visual indication of a slide sensor area 128 and the flexible sensing circuit 124 underneath is configured to register one or more finger's position within the slide sensor area 128.
  • the flexible sensing circuit 124 can be configured to register a sliding motion, for example the translating of a finger across the surface of the slide sensor area 128, or the position of one or more fingers touching within the slide sensor area 128.
  • the molded top housing 122 can be connected to the molded bottom housing 121 to form a protective recess for the circuit 123.
  • a circuit 123 is presented.
  • the circuit 123 comprises a USB connector 130, a USB transceiver chip 131, a microcontroller 132, a capacitive sensing chip 108, a gyroscope 107, an accelerometer 106, a flex connector 136 for connecting the flexible sensing circuit 124, a battery module 138 and a second flex connector 137.
  • the capacitive sensing circuit 108 monitors the flexible sensing circuit 124 through the flex connector 136.
  • Separating the battery module 138 from the circuit 123 provides several advantages. It allows the use of larger batteries as space for the battery is no longer constrained by the placement of the battery in a battery holder on the circuit 123. It also permits the battery module 138 to have a different geometry depending on the application, for example a thin spacesaving geometry for lighter weight, or a thicker geometry for longer battery life. Further, it can make it easier to replace the battery module 138, for example for repair and maintenance procedures.
  • the daughter board 150 comprises a transceiver module 148, an RF antenna 151, a vibratory component 152, a sound emitter component 153, an RFID 154 circuit, a pulse oximeter circuit 155, and a GPS 156 circuit.
  • the daughter board 150 can have altimeters (not shown) or magnetometers (not shown) in addition to, or instead of, some of the components shown in FIG. 1G.
  • the daughter board 150 can connect to the circuit 123 through the second flex connector 137.
  • the vibratory component 152 can be a small motor having an irregular unbalanced load or cam.
  • the sound emitter component 153 can be a piezoelectric device. Other vibratory components 152 or sounder emitter components 153 can also be used. In different configurations, the daughter board 150 can be configured with or without a vibratory component 152, and with or without a sound emitter component 153. The vibratory component 152 and sound emitter component 153 can also be placed on the circuit 123 or on the battery module 138.
  • the RFID 154 circuit, pulse oximeter circuit 155, and GPS 156 circuit can provide additional information about the user and the user's environment as described above.
  • the pulse oximeter circuit 155 can be connected to a sensor (not shown) mounted in the band 115, removable finger grip 125, or housing 101, 121, 141 or separately attached to the user.
  • the RF transceiver module and RF antenna 151 can be located on the circuit 123 or the battery module 138. In FIG. 11, the RF transceiver module and RF antenna 151 are shown on the daughter board 150. Moving the RF transceiver module 148 and RF antenna 151 off of the circuit 123 reduces the amount of RF shielding and other isolation measures required for the circuit 123. By having the RF transceiver module 148 separate from the circuit 123, it is possible to change the type of wireless interface on the ergonomic finger mouse 120 without having to make hardware changes to the circuit 123. For example, the same circuit 123 can be programmed to operate with a ZigBeeTM RF transceiver module, a
  • the circuit 123 can be preloaded with a single driver for a specific type of RF transceiver module, or the circuit 123 can be pre-loaded with a number of drivers for a number of different types of RF transceiver modules.
  • the circuit 123 can automatically determine the type of RF transceiver module, or the circuit 123 can be configured through software, for example by a user or during an initializing step.
  • the USB connector 130 can be configured to allow connections to a USB port of a computer 400.
  • the USB transceiver chip 131 that is connected to the USB connector 130 can receive or transmit data from the ergonomic finger mouse 120 to the computer 400.
  • the USB transceiver chip 131 facilitates entering the initial configuration into the ergonomic finger mouse 120, for example configuring the wireless communications parameters.
  • the USB transceiver chip 131 also facilitates updating the internal software of the ergonomic finger mouse 120.
  • the USB connector 130 can be configured to allow connections to a USB connected power supply (not shown), for example an AC adaptor.
  • the USB connector can also connect to a separate battery unit (not shown), for example a user-carried battery unit.
  • the ergonomic finger mouse 120 can be powered through the USB connector 130, in addition to being powered by the battery module 138.
  • the battery module 138 can be recharged through the USB connector 130.
  • a microcontroller 132 controls the actions and features of the ergonomic finger mouse 120.
  • the microcontroller 132 receives inputs from the accelerometer 106, the gyroscope 107, and the capacitive sensing circuit 108, and processes the information from those inputs to create a signal that is representative of at least a portion of one or more of the inputs.
  • the microcontroller 132 can process or convert the raw data from the accelerometer 106 and gyroscope 107 inputs into processed data.
  • the microcontroller 132 can also process or convert the various activations of the buttons 111, 112, 113, touch sensor areas 129, and slide sensor areas 128, into processed data, or merely format the data into the appropriate message format or packet and send a communication to the computing device.
  • the microcontroller 132 can receive the inputs by polling the accelerometer 106, the gyroscope 107, and the capacitive sensing circuit 108. In addition to polling, the inputs can be received through an interrupt driven process, or can be a combination of both polling and interrupts.
  • the microcontroller 132 can format the signal into a format appropriate for
  • the microcontroller 132 can format the signal into a format appropriate for wireless transmission, for example through an RF transceiver in the circuit 132, daughter board 150, or battery module 138.
  • the microcontroller 132 can run a protocol stack that enables proper handshaking and link establishment, error correction, datagram packetization, and message parsing of communications with a remote receiver, such as a remote computer 400 or smartphone (not shown.)
  • a remote receiver such as a remote computer 400 or smartphone (not shown.)
  • the microcontroller 132 is a message unit.
  • the rigid circuit board 103, the circuit 123, the daughter board 150, and the microcontroller 132, or any combination thereof can be a messaging unit or perform the functions of a messaging unit.
  • the microcontroller 132 can be implemented using hardware components, software modules or combinations thereof.
  • the microcontroller 132 can include a processor, a microprocessor, a circuit, a central processing unit (CPU), an application specific integrated circuit (ASIC), a programmable logic devices (PLD), a field programmable gate array (FPGA) or any other kind of processor or variety of other suitable electronic components including but not limited to transistors, resistors, capacitors, inductors, logic gates, registers, semiconductor device, chips, a microchip, an integrated circuit, an arithmetic logic unit (ALU), a chipset, an input/output (1/0) device, a random access memory (RAM) such as dynamic RAM (DRAM), and a read only memory (ROM), digital-to-analog and analog-to-digital converters (DAC, ADC), and busses.
  • RAM random access memory
  • DRAM dynamic RAM
  • ROM read only memory
  • DAC analog-to-digital converters
  • the microcontroller 132 can be a multi-processing unit, a reduced instruction set computer (RISC), a processor that has a pipeline or parallel threading capabilities, a complex instruction set computer (CISC), or a digital signal processor (DSP).
  • Factors affecting selection of the appropriate microcontroller 132 can include computational rates or processing time, power requirements, heat tolerances, data bus speeds, the types of inputs and outputs available on the microcontroller 132, the input and output data rates, and memory resources.
  • Software can include operations, code, routines, subroutines, objects, function calls, application program interfaces (API), applications, programs, middleware, operating systems, embedded code, microcode, and firmware.
  • processing refers to the various operations of a computing device or microcontroller 132.
  • the above terms are intended as non-limiting examples of operations typically performed by computing devices in order to change, move, or otherwise manipulate data, whether in data structures or not, that are stored in various types of memory.
  • the finger mouse with a removable power module 140 comprises a bottom portion 141 that connects to a removable top portion 142.
  • the bottom portion 141 and removable top portion 142 can mate together using a mechanical connector 143, for example interlocking notches.
  • the bottom portion 141 and removable top portion 142 can mate together using a magnetic connector 144.
  • the bottom portion 141 and removable top portion 142 can be electrically connected using an electrical connection 145, for example a rigid plug and socket mechanism, a flexible wiring harness, a battery-type connector with movable contact members typically found in mobile phones and mobile phone batteries, or a land grid array of pins and electrical contacts.
  • the bottom portion 141 and removable top portion 142 can be electrically connected using inductive coupling.
  • the bottom portion 141 of the finger mouse with a removable power module 140 can comprise a curved sensing area 127, touch sensor area 129, and slide sensor area 128 similar to the ergonomic finger mouse 120.
  • the top portion 142 can comprise a battery 146, one or more capacitive sense buttons 14 7, an RF transceiver 148, and one or more visual indicators 149.
  • the capacitive sense buttons 14 7 can also be a slide-type capacitive sensor, or a combination of one or more capacitive sense buttons 147 and one or more slide-type capacitive sensors.
  • the capacitive sense buttons 147 can be used to select which computing device to which the finger mouse with a removable power module 140 will be connected.
  • a visual indicator 149 could provide an indication of which computing device the finger mouse with removable power module 140 is communicating with.
  • a user could select one of the capacitive sense buttons 147 to connect the finger mouse with a removable power module 140 to a laptop or desktop computer 400 using a ZigBeeTM connection.
  • the user could select a different capacitive sense button 14 7 to connect the finger mouse with a removable power module 140 with a smartphone using a BluetoothTM connection.
  • the user could select another capacitive sense button 147 to connect the finger mouse with a removable power module 140 with an Internet Protocol television (IPTV), Television Over Internet Protocol (TVoiP), gaming system, or set-top box using an IrDA or WiFiTM connection.
  • IPTV Internet Protocol television
  • TVoiP Television Over Internet Protocol
  • the finger mouse with a removable power module 140 can be configurable to support any number of finger presses or finger press combinations of the capacitive sense button 147 to control the computing devices or
  • FIGs. 2 through 7 and 10 through 11 are perspective views of at least one finger mouse 100 on a human hand 200.
  • these perspective views have been limited to the index finger and/or middle finger of the right hand 200 of a human, and should not be viewed as a limitation of the position or use of the finger mouse 100 on a human hand 200.
  • the finger mouse 100 is illustrated on a single finger, the finger mouse 100 can be located on a plurality of fingers of either the right hand 200 or the left hand (not shown), or other appendage (not shown), for example by using a larger band 115 as may be understood by a person skilled in the art.
  • the basic position for locating the finger mouse 100 on the index finger of the right hand 200 can be between points 204 and 201 along the length of the finger as shown in FIG. 8.
  • the basic position for locating the finger mouse 100 on the middle finger of the right hand 200 can be between points 209 and 206 along the length of the finger as shown in FIG. 8.
  • This basic position can be replicated along any finger of the human hand 200 allowing for a plurality of finger mouse 100 positions.
  • the finger mouse 100 can be positioned between points 203 and 202 of the index finger, between points 208 and 207 of the middle finger, and between points 205 and 201 of the thumb. This alignment is merely an example and not a limitation of the position of the finger mouse 100 along the length of any finger of either the right hand 200 or the left hand (not shown).
  • FIGs. 2 through 3C are perspective views of finger mouse 100 located on the right hand 200 of a human demonstrating example methods of using the finger mouse 100 to manipulate cursor position; for example, cursor position can be manipulated in a 2D plan video graphic screen such as the video screen 402 of a computer 400.
  • cursor movement can be accomplished by maneuvering the thumb next to the index finger supporting the finger mouse 100 and touching one or more buttons 111, 112, 113 activating data collection from sensors within the finger mouse 100. Movement of the finger supporting the finger mouse 100 can be tracked by collecting angular and linear acceleration data.
  • the data collected can be wirelessly transmitted to a computing device, for example, a personal computer 400 or a smart phone (not shown) where the data can be processed.
  • the processed data can translate or move a cursor in a 2D plan video graphic screen such as the video screen 402 of a computer 400.
  • the data collected and wirelessly transmitted to the personal computer 400 or other computing device can be processed as written text, thereby turning the finger mouse 100 into an electronic writing utensil.
  • Moving the finger mouse 100 as a writing device either on a surface or in mid-air can create electronic files of transcribed text and drawings, for example signatures, notes, preliminary documents, drawings in hand written form. Movement of the cursor could correlate to the movement of the finger mouse 100.
  • a virtual keyboard can be presented, for example on a screen.
  • a virtual finger or virtual hand is presented on the virtual keyboard.
  • the virtual hands or virtual fingers stay over the virtual keyboard and the user can type. For example, if the user has multiple finger mice 100, then those fingers with finger mice 100 can type on the virtual keyboard, with each tap being registered as a keystroke.
  • cursor drift can be controlled by having cursor positioning functions accomplished only during the interaction of the thumb and buttons 111, 112, 113.
  • cursor control can be configured to be activated by a click or double click and deactivated by a succeeding click or double click.
  • FIGs. 4 through 5C perspective view a finger mouse 100 on the index finger of the right hand 200 and a second finger mouse 100 on the middle finger of the right hand 200 of a human, demonstrating methods of using the finger mouse 100 to manipulate cursor position, for example in a 2D plan video graphic screen such as the video screen 402 of a computer 400.
  • cursor movement can be accomplished by maneuvering the thumb next to the middle finger supporting the finger mouse 100 and touching one or more buttons 111, 112, 113 activating data collection from sensors within the finger mouse 100.
  • the activation of one or more of buttons 111, 112 and 113 can support such functions as typical media controls, volume, track, advance, forward, reverse, single click functions and multiple click functions.
  • Movement of the finger supporting the finger mouse 100 can be tracked by collecting angular and linear acceleration data.
  • the data collected can be wirelessly transmitted to the personal computer 400 or other computing devices such as smart phones (not shown) where it can be processed.
  • the processed data can function to translate or move a cursor in a 2D plan video graphic screen such as the video screen 402 of a computer 400. Movement of the cursor would correlate to the movement of the finger mouse 100.
  • FIG. 6 presents a configuration of a finger mouse 100 on the index finger of the right hand 200 of a human and demonstrates a method of in air function control. Abrupt movements of the finger mouse 100 such as quick jerking motions could trigger programmed functions according to adjustable acceleration thresholds.
  • the data collected from such action can be wirelessly transmitted to a computing device, for example a personal computer 400 or a smart phone (not shown) where the data can be processed.
  • the processed data can control actions on the computing device.
  • the processed data can control actions of the cursor in a 2D plan video graphic screen such as the video screen 402 of a computer 400, or a 3D virtual world presented thereon.
  • FIG. 7 is a perspective view of a finger mouse 100 on the index finger of the right hand 200 of a human and illustrates an exemplary method for in detecting tapping for function control.
  • Tapping of the finger, to which the finger mouse 100 is attached, onto an object such as a table, leg, etc. can trigger programmed functions once certain adjustable acceleration thresholds are reached, for example by sending a tap indication in a message to the computing device.
  • the data collected can be wirelessly transmitted to the personal computer 400 or other computing devices such as smart phones (not shown) where it can be processed.
  • the processed data can control actions of the cursor in a 2D plan video graphic screen such as the video screen 402 of a computer 400, or a 3D virtual world presented thereon.
  • FIG. 9 presents a prior art personal computer 400 system consisting of a CPU 401, a mouse 404, a keyboard 403, and a monitor or video screen 402.
  • FIG. 9 further presents a prior art pictorial of how the right hand 200 is maneuvered when using a mouse 404 and a keyboard. In such systems, a user must remove a hand 200 from the keyboard in order to engage the mouse and use any available mouse functions.
  • FIG. 10 is a perspective view of a finger mouse 100 on one or more fingers of a hand 200 and demonstrates configurations of the finger mouse 100 in use while typing.
  • These configurations can reduce the processing time by eliminating the need to move the hand 200 from the keyboard to engage a mouse-in order to operate mouse type functionality, by locating such functionality in a manner in which the user's fingers do not have to leave the keyboard 403 area.
  • the user can utilize one thumb to activate the finger mouse 100 at the same time the fingers remain on the keys and the other thumb remains on the space bar.
  • the immediate use of mouse functions without the fingers leaving the key pad area can significantly increase typing speed and provide a faster and more ergonomic computing experience.
  • FIG. 11 is a perspective view of a finger mouse 100 on the index finger of the right hand 200 of a human demonstrating the usability of the finger mouse 100 while tapping the index finger.
  • Tapping of the finger, to which the finger mouse 100 resides, onto an object such as a table, leg, etc. could trigger programmed functions once certain thresholds of accelerations are reached, for example by sending a tap indication in a message to the computing device.
  • the data collected on the onset of such an action can be wirelessly transmitted to the personal computer 400 or other computing devices such as smart phones (not shown) where it can be processed.
  • the processed data and function would control actions of the cursor in a 2D plan video graphic screen such as the video screen 402 of a computer 400.
  • the processed data from the finger mouse 100 can also be used to provide complete 3D motion information with 6 full degrees of freedom from the finger mouse 100 to the computing device.
  • the steps of a process 1600 for operating a finger mouse 100 in three dimensions with 6 full degrees of freedom are shown in Fig. 16. The process begins at start block 1601, and proceeds to process block 1602.
  • the step of reading the initial accelerometer and gyroscope data occurs. Readings from the accelerometer are provided as three values, representing the acceleration values along each axis, Ax, Ay, and Az of the accelerometer. Sample values for the accelerometer (a n ) may therefore each be represented by matrices of these three values.
  • Readings from the gyroscope are also provided as three values, representing the angular velocity values about each axis, Gx (roll), Gy (pitch), and Gz (yaw) of the gyroscope.
  • Sample values for the gyroscope ( ⁇ ⁇ ) may therefore each be represented by matrices of these three values.
  • the initial readings from the accelerometer are read and recorded as a 0
  • the initial readings from the gyroscope are recorded as ⁇ 0 .
  • the process continues at process block 1603.
  • motion variables velocity estimate v, position estimate p, and gravity vector estimate g are each pre-populated with values representing a neutral velocity, origin point, and presumed gravity, respectively. This may be expressed as
  • process block 1604 the process waits for a pre-determined interval of time, or sampling interval, dictated by the desired sampling rate, before proceeding to sample inputs from the accelerometer a n and gyroscope ⁇ ⁇ at process block 1605. Provided that the controller 117 is appropriately selected to timely perform all calculations of process 1600, this delay ensures that the iteration of process 1600 from process block 1604 through 1610 occurs at the desired sampling interval.
  • the well-known Nyquist theorem from signal processing states that in order to be able to represent a signal (in this case, the 3D motion of finger mouse 100) as a set of discrete time samples, a sample interval (in Hz) at least two times the rate of the highest frequency component (also in Hz) in the signal must be chosen.
  • the frequency content of the acceleration and angular velocity to be measured by accelerometers and gyroscopes depends on the particular use case and can be determined empirically. After determining the expected frequency content for a given use case, an appropriate sampling interval can be selected.
  • sampling interval from the accelerometer 106 and gyroscope 107 has been found to be acceptable for the operation of the finger mouse at a rate of 120 samples per second, although 60 samples per second has also been shown to be adequate.
  • the highest possible sampling interval (which differ from device to device as constrained by hardware selected in the construction of the finger mouse 100) may be chosen in order to obtain as much information as possible about the input motion to be captured. For example, in applications where rapid change in the acceleration of the finger mouse are expected, such as in gaming, higher sampling intervals may be desirable. However, increased sampling interval increases battery consumption, already at a premium in a wireless wearable such as a finger mouse 100. Increased sampling interval also requires more computational effort. Alternatively, therefore, lower sampling intervals may be chosen to reduce power consumption or reduce computational effort. Furthermore, sampling interval need not remain static, but may be adjusted based on the application with which the finger mouse is being used, charge state of the finger mouse's battery, or other criteria.
  • the iteration of process 1600 still occurs at the desired sampling interval, (for example, the process 1600 loops from step 1604 through 1610 at 120 iterations per second), while sub-samples are taken more than once per iteration, and then averaged or totaled to provide a sample value for calculations.
  • Sub-samples may be evenly distributed over the sampling interval.
  • the accelerometer 106 and/or gyroscope 107 may be sub-sampled 10 times per iteration through the loop, and the average or sum of the 10 sub-samples used as the sample value for the sampling interval. This largely avoids the calculation overhead involved in increasing sampling interval, while still providing additional motion information unavailable from a lower sampling rate.
  • process block 1605 the step of reading the current incremental input from the accelerometer 106 and gyroscope 107 occurs.
  • a sample input from both the accelerometer a n and the gyroscope ⁇ ⁇ are read, indicating the current acceleration and angular velocity of the finger mouse 100.
  • These sample inputs from the accelerometer a n and gyroscope ⁇ ⁇ are stored, and the process continues to process block 1606.
  • the current gravity vector estimate g n is given a value calculated as a function f of the current accelerometer sample a n , the current gyroscope sample ⁇ ⁇ , the previous gravity vector g n -i estimate, and time t:
  • This gravity vector estimate update function may be executed in firmware or hardware for the finger mouse, but alternatively may be executed remotely on a computing device.
  • the process continues at process block 1607.
  • the step of updating the estimate of the translational velocity v occurs.
  • the translational acceleration component of current sensed acceleration a n is isolated by subtracting the current gravity vector estimate g n from current sensed acceleration a n .
  • the current velocity estimate v n is updated by a piecewise function intended to minimize drift and errors.
  • the current velocity estimate v n is set to 0 along all three axes. Whether an acceleration is "minimal" or not is evaluated by determining whether the magnitude absolute value of the translational component of the current sensed acceleration is less than some preselected positive constant k x . This may be expressed as
  • Constant k x provides a minimum acceleration threshold, below which measured acceleration is disregarded as unintentional or noise, and should be selected to minimize acceptance of unintentional motion of the finger mouse 100, while not disregarding intentional motion.
  • the maximum hand tremors may be approximated by a sinusoid function, with amplitude of 0.1 mm, and frequency of 10 Hz.
  • this acceleration may be expressed in whatever units are appropriate to use with the accelerometer 106.
  • Minimum acceleration threshold Iq should be selected so that the output signal is at zero when the hand is at rest, but generally looks like an acceleration signal when the hand is moving. Accelerations below approximately 0.01 m/s 2 are therefore properly disregarded as hand tremor or other noise. In practice, however, values from five to ten times that acceleration are appropriate for noise suppression. Higher values for minimum acceleration threshold k x make the process more likely to disregard useful, intentional acceleration data. Lower values allow the process to pick up more noise. When zero-mean noise white noise is integrated, the resulting signal is a random walk, i.e. an unpredictably drifting signal. In practice, the noise is not always zero-mean, and so such integration is of a signal with a small mean value turns into a ramp when integrated. A minimum acceleration threshold k x « 0.06 m/s 2 has been found to strike an acceptable balance, causing the system to disregard the vast majority of noise while still accepting the majority of useful acceleration data.
  • the current velocity estimate v n is set to 0 along all three axes. Whether an angular rate is "excessive" or not is evaluated by determining whether the magnitude of the current sensed rotation ⁇ ⁇ is greater than some preselected constant k 2 . This may be expressed as
  • Maximum rotation constant k 2 provides a threshold above which measured rotation ⁇ is disregarded as unintentional or erroneous.
  • Maximum rotation constant k 2 should be selected so as to allow the user to rotate the finger mouse 100 naturally, but to disregard highly rotational motion data provided by gyroscope 107.
  • Such highly rotational motion data is particularly difficult to use to track velocity, as the orientation (gravity vector) of the finger mouse 100 must be known precisely in order to calculate the linear acceleration exactly. This is because centripetal and Coriolis accelerations are also measured by the finger mouse 100 and must be subtracted from the measured acceleration. These accelerations are measured because the finger mouse accelerometer 106 is generally taking measurements in a moving frame of reference. Further, highly angular motions can often be indicative of unintentional motion of a finger mouse 100 or of a dropped finger mouse 100.
  • Maximum rotation constant k2 is used to throw out accelerometer 106 sample data when rotation at a significant angular rate (used interchangeably with angular velocity) is present.
  • centripetal acceleration picked up with the accelerometer 106 due to rotation is significant.
  • Measured centripetal acceleration is difficult to calculate and subtract out, as it is strongly dependent on the orientation of the accelerometer 106, which can only be estimated moderately well.
  • Such estimation is not acceptable to accurately compensate for centripetal acceleration. If centripetal acceleration is not compensated for, translational velocity estimate v would erroneously incorporate a DC offset value after motion. This would unacceptably result in the cursor's continued movement when the finger mouse 100 is again at rest.
  • maximum rotation constant k2 Low values for maximum rotation constant k2 mean that the process will reject most motions, because there is often some nonzero magnitude of the sensed angular rate, even when the user is trying very hard to move the finger mouse 100 very straight. Unacceptably low values for maximum rotation constant k2 result in the failure of the cursor to move when the intentionally moves the finger mouse 100.
  • the correct value for maximum rotation constant k2 is a tradeoff between these two cases. As an example, a maximum rotation constant of approximately sixty degrees per second,
  • angular rate ⁇ may be expressed in whatever units are appropriate to use with the gyroscope 107.
  • the current sensed acceleration a n is not minimal, and that the current sensed angular velocity ⁇ ⁇ is not excessive, the current velocity estimate v n is updated by integrating the previous velocity estimate v n--1 forward with a leaky integrator:
  • Integration to update the current velocity estimate v n may undesirably integrate noise or roundoff error, or other errors, resulting in the current velocity estimate v n containing a small non-zero value even in the absence of detected motion when finger mouse 100 is at rest. As a result, the cursor will slowly drift across the screen. Inclusion of leak constant k 3 gently sets these small nonzero values back to zero. Leak constant k 3 is between 0 and 1, (k 3 G (0,1)), so that in the absence of any detected motion, the velocity estimate v decays to 0. The higher the value of k 3 , the slower the decay of velocity.
  • Leak constant k 3 should be selected to minimize its impact on translational velocity estimate v while finger mouse 100 is being operated by user. Ideally, with perfect sensors, or at least with perfect filtering of erroneous acceleration data, leak constant k 3 could be set to 1. Practically, leak constant k 3 should be set as closely to 1 as possible, while still effectively removing erroneous acceleration data not filtered out by other parts of the process. A leak constant k 3 set between 0.9 and 0.9999 have been found to be acceptable in practice. For example, a leak constant k 3 of 0.999 effectively removes erroneous acceleration data without significant distortion of the velocity signal.
  • the integrator acts instead as a low-pass filter, slowing the response in the velocity signal and smoothing out noise.
  • the value of k 3 may be adjusted by the user, or by software, depending respectively upon user preference or software application.
  • the step of updating the estimate of the translational position p occurs.
  • the current estimate of the translational position p n is set to be the previous estimate of the translational position ⁇ ⁇ --1 plus the change in position as estimated by the product of current translational velocity estimate v n and the change in time At since the previous iteration of the algorithm (generally equal to 1 divided by the selected sampling rate, e.g. 1/120 second), or
  • the process determines whether it should end or not. If it is determined that the process should end, the process advances to end block 1611, where the process is terminated. If it is determined that the process should not end, the process returns to process block 1604 to wait for another accelerometer and gyroscope data sample. In this way, the process continues looping to provide the PC with 3D position data until some termination state, such as a "power off or "disconnect" signal occurs to indicate that the process should end.
  • a process 1700 for updating a gravity vector estimate begins at start block 1701. Processing continues at process block 1702, where average error variable e 0 is initialized to 0 on all three axes, which can be expressed as :
  • Process blocks 1701-02 of the process 1700 for updating a gravity vector estimate can be part of process block 1603 of FIG. 16 where the steps for operating a finger mouse 100 in three dimensions with 6 full degrees of freedom are shown.
  • Gyroscope-based gravity vector estimate g w is set to the sum of previous gravity vector estimate g n--1 and the cross product of the current gyroscope sample ⁇ ⁇ , and the previous gravity vector estimate g n--1 , times the change in time At since the previous sampling (At is generally equal to 1 divided by the selected sampling rate, e.g. 1/120 second). This may be expressed as:
  • Gyroscope based gravity vector estimate g w is susceptible to cumulatively increasing error over time, and requires error correction.
  • Current accelerometer sample a n always includes within it an actual gravity vector measurement. That gravity vector component from an accelerometer sample a remains consistent from sample to sample. Therefore, the accelerometer samples a, over time, may be used to restrain cumulative error by forcing g to track the accelerometer samples a.
  • a hysteresis controller (also known as an on-off controller) can be used as a filter, with a "tuning" constant k 4 , to force the gravity vector estimate g n to track actual gravity (reducing the mean difference between the gravity vector estimate g n and current accelerometer sample a n over time).
  • a hysteresis controller also known as an on-off controller
  • k 4 a "tuning" constant k 4
  • other methods such as low-pass filters or Kalman filters may be employed to force the gravity vector estimate g n to track actual gravity: any controller defined by any function of the error that forces the error to zero will work in substantially the same way.
  • the hysteresis controller described is advantageous in terms of performance for a given amount of computational effort.
  • Estimated error e is only an approximation. There are other variables upon which the gravity vector estimate may depend, such as drifting bias in the angular rate. Also, the accelerometer data, a n , generally contains accelerations other than gravity. Thus, this measure of error is generally incomplete. However, estimated error e as defined produces gravity vector estimates that reliably track the low frequency profile of the accelerometer data while also rejecting the high frequency content of the accelerometer data, which often consists of linear accelerations (which should not be assumed to be part of the gravity vector) and noise.
  • estimated error e that causes the gravity vector estimate g n to track the accelerometer data a n will also result in a substantially equivalent finger mouse system.
  • estimated error e as defined above is the difference of the current accelerometer data a n and the current gravity vector estimate g n , but it could also be defined as the integral of that quantity.
  • the resulting gravity vector estimates will track the accelerometer data a n in both cases, but the tracking response will have subtle differences.
  • processing continues at process block 1705, where mean error e n is approximated by a running average, as follows: [00142] Processing continues at process block 1706, where correction is applied to the gyroscope based gravity vector estimate g w in order to prevent integration of the estimated error e, and to yield a corrected gravity vector estimate g n .
  • a correction or "tuning" constant k 4 is applied to the gyroscope based gravity vector estimate g w whenever the mean error e n deviates from 0. This corrected gravity vector estimate g n is calculated as:
  • Tuning constant k 4 may be selected as any positive value, but practically should not exceed 1 standard gravity, 9.8 m/s 2 . Higher values for tuning constant k 4 make corrected gravity vector estimate g n track the actual gravity vector more quickly, but also cause more user-intended motion information to be discarded as error.
  • tuning constant k 4 selected from the range between about 0.6 m/s 2 and about 9 m/s 2 are acceptable. In practice, values for tuning constant k 4 of approximately 6 m/s 2 (around 10,000 in accelerometer units of 16,384ths of a gravity) have yielded good results. However, both the bandwith of the signal (i.e. the speed of operation of the finger mouse 100) to be detected, as well as changes in values for constants k x , k 2 , and k 3 , may affect the selection of the appropriate value for tuning constant k 4 . [00145] One can also use a different algorithm for obtaining gravity vector estimates and still have a functionally equivalent finger mouse system.
  • the problem can instead cast the problem as a filtering problem and design a Kalman filter or a complementary filter to combine information from the accelerometer and gyroscope to obtain gravity vector estimates. For instance, one can design a complementary filter that estimates the gravity vector as a sum of low-pass filtered
  • gn Ci (gn-i + ( ⁇ ⁇ X gn-i) ⁇ ⁇ ) + (1 - where t ⁇ [0, 1] is a filter coefficient that determines how much trust one places in the gyroscope-based portion of the estimate versus the accelerometer-based portion of the estimate.
  • t ⁇ [0, 1] is a filter coefficient that determines how much trust one places in the gyroscope-based portion of the estimate versus the accelerometer-based portion of the estimate.
  • Process blocks 1703-1708 of the process 1700 for updating a gravity vector estimate can be part of process block 1606 of FIG. 16 where the steps for operating a finger mouse 100 in three dimensions with 6 full degrees of freedom are shown.

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Position Input By Displaying (AREA)

Abstract

A method comprises receiving data associated with at least a portion of a movement of a wearable motion sensing device; filtering the data to produce a rate of change of the movement; integrating the rate of change to produce a measured movement of the wearable motion sensing device; using the measured movement and an accumulated movement to produce at least one of an updated position of the wearable motion sensing device and an updated orientation of the wearable motion sensing device; and updating a feature of a user interface of a computing device based at least in part upon one of the updated position and the updated orientation; wherein the movement of the wearable motion sensing device is at least one of a movement along one of three axes of a three-dimensional space and a movement about one of three axes of a three- dimensional space.

Description

OPERATING A WEARABLE MOUSE IN THREE DIMENSIONS
WITH SIX FULL DEGREES OF FREEDOM
George Thomas
TECHNICAL FIELD
[0001] The device, methods, and systems described below relate generally to the field of computing devices and methods of interacting with computing devices and more particularly to devices, methods and systems for data input, cursor manipulation and transcription.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] FIG. 1 A is an exploded perspective view of a finger mouse.
[0003] FIG. IBis a perspective view of a finger mouse.
[0004] FIG. 1C is a perspective view of a finger mouse.
[0005] FIG. ID is a perspective view of a finger mouse system.
[0006] FIG. IE is an exploded view of an ergonomic finger mouse.
[0007] FIG. IF is an exploded view of an ergonomic finger mouse.
[0008] FIG. 1G is a perspective view of a finger mouse circuit board.
[0009] FIG. 1H is a partially exploded view of a finger mouse with a removable power module.
[0010] FIG. 11 is a plan view of a daughter board for a finger mouse.
[0011] FIG. 2 is a perspective view of a finger mouse on an index finger of a human hand.
[0012] FIG. 3 A is a perspective view of a finger mouse on an index finger of a human hand
[0013] FIG. 3B is a perspective view of a finger mouse on an index finger of a human hand
[0014] FIG. 3C is a perspective view of a finger mouse on an index finger of a human hand
[0015] FIG. 4 is a perspective view of two finger mice on two fingers of a human hand. [0016] FIG. 5A is a perspective view of two finger mice on two fingers of a human hand.
[0017] FIG. 5B is a perspective view of two finger mice on two fingers of a human hand.
[0018] FIG. 5C is a perspective view of two finger mice on two fingers of a human hand.
[0019] FIG. 6 is a perspective view of a finger mouse on an index finger of a human hand.
[0020] FIG. 7 is a perspective view of a finger mouse on an index finger of a human hand.
[0021] FIG. 8 is a perspective view of a human hand.
[0022] FIG. 9 is a perspective view of a personal computer system.
[0023] FIG. 10 is a perspective view of a finger mouse on an index finger of a human hand while typing.
[0024] FIG. 11 is a perspective view of a finger mouse on an index finger of a human hand tapping against a surface.
[0025] FIG. 12 is a flowchart of a method of processing motion data from a finger mouse.
[0026] FIG. 13 is a flowchart of a method of processing motion data from a finger mouse.
[0027] FIG. 14 is a flowchart of a method of interfacing a finger mouse with a computing device.
[0028] FIG. 15A is a flowchart of a method of interfacing a finger mouse with a computing device.
[0029] FIG. 15B is a flowchart of a method of interfacing a finger mouse with a computing device.
[0030] FIG. 15C is a flowchart of a method of interfacing a finger mouse with a computing device.
[0031] FIG. 15D is a flowchart of a method of interfacing a finger mouse with a computing device. [0032] FIG. 16 is a flowchart of a method of operating a finger mouse to obtain three dimensional position information with 6 full degrees of freedom. [0033] FIG. 17 is a flowchart of a method of operating a finger mouse to obtain three dimensional position information with 6 full degrees of freedom.
SUMMARY
[0034] A method comprises receiving data associated with at least a portion of a movement of a wearable motion sensing device; filtering the data to produce a rate of change of the movement of the wearable motion sensing device; integrating the rate of change of the movement to produce a measured movement of the wearable motion sensing device; using the measured movement and an accumulated movement to produce at least one of an updated position of the wearable motion sensing device and an updated orientation of the wearable motion sensing device; and updating a feature of a user interface of a computing device based at least in part upon one of the updated position and the updated orientation; wherein the movement of the wearable motion sensing device is at least one of a movement along one of three axes of a three- dimensional space and a movement about one of three axes of a three-dimensional space. The method can further comprise scaling the data. The scaling can be performed by a scaling function selected from the group consisting of a linear scaling function, an exponential scaling function, a scaling function that scales according to the formula A,'=((4/32768)*Ai)*9.81 where A, is an acceleration data for a single axis selected from the x, y, and z axes, and a scaling function that scales according to the formula Gi'=((500 dps/32786)*(pi/180))*G, where G, is an angular rate data for a single axis selected from the x, y, and z axes.
[0035] The method the feature of the user interface of the computing device can be a cursor position. The cursor position can be updated based at least in part upon a scaled measured movement. The method can further comprise receiving an indication of a sensor activation of the wearable motion sensing device, and the feature can be updated at least in part upon receiving the indication of the sensor activation. The filtering can be performed by a filter selected from the group consisting of smoothing filter, a high pass filter, a Kalman filter or an iterative algorithm. The method can still further comprise determining an orientation of the wearable motion sensing device using a measurement of acceleration due to gravity on the wearable motion sensing device.
[0036] An apparatus comprises at least one accelerometer and at least one gyroscope configured to create data associated with at least a portion of a movement of a wearable motion sensing device; a processor configured to filter the data to produce a rate of change of the movement of the wearable motion sensing device, integrate the rate of change of the movement to produce a measured movement of the wearable motion sensing device, use the measured movement and an accumulated movement to produce at least one of an updated position of the wearable motion sensing device and an updated orientation of the wearable motion sensing device, and update a feature of a user interface of a computing device based at least in part upon one of the updated position and the updated orientation; an energy storage unit configured to supply electrical energy to the accelerometer, the gyroscope, and the processor; a communication module configured to exchange a data signal with the computing device; and a housing configured to at least partially enclose the accelerometer, the gyroscope, and the processor; wherein the movement of the wearable motion sensing device is at least one of a movement along one of three axes of a three-dimensional space and a movement about one of three axes of a three-dimensional space. The processor can be further configured to scale the data. The feature of the user interface of the computing device can be a cursor position. The processor can be further configured to receive an indication of a sensor activation of the wearable motion sensing device. The processor can be still further configured to update the feature of the user interface of the computing device upon receiving an indication of a sensor activation of the wearable motion sensing device. The processor can be yet further configured to determine an orientation of the wearable motion sensing device using a measurement of acceleration due to gravity on the wearable motion sensing device.
DETAILED DESCRIPTION
[0037] The devices, methods, and systems disclosed and described in this document can be used to interface motion sensing devices with computing devices. For ease of description, the examples included in this document focus on wearable motion sensing devices and
communication methodologies and protocol stacks that can be used to interface with a user interface of a computing device. Those of ordinary skill in this art area will recognize from reading this description that the devices, methods, and systems described can be applied to, or easily modified for use with, other types of equipment, other protocols, and at other layers in a communication protocol stack. Descriptions of components presented solely as part of a direct communication link between the motion sensing devices and computing device do not imply that other architectures, such as network based architectures, could not be used. To the contrary, possible modifications will be apparent to people of ordinary skill in this area after reading disclosures in this document. Like reference numerals are intended to refer to the same or similar components.
[0038] Throughout this disclosure, references to components or modules generally refer to items that logically can be grouped together to perform a function or group of related functions. Components and modules can be implemented in software, hardware, or a combination of software and hardware. The term software is used expansively to include not only executable code, but also data structures, data stores and computing instructions in any electronic format, firmware, and embedded software. The term "information" is used expansively and includes a wide variety of electronic information, including but not limited to machine-executable or machine-interpretable instructions; content such as text, video data, and audio data, among others; and various codes or flags. The terms "information" and "content" are sometimes used interchangeably when permitted by context. It should be noted that although for clarity and to aid in understanding some examples discussed below might describe specific features or functions as part of a specific component or module, or as occurring at a specific layer of a computing device (for example, a hardware layer, operating system layer, or application layer), those features or functions may be implemented as part of a different component or module or at a different layer.
[0039] The examples discussed below are examples only and are provided to assist in the explanation of the systems and methods described. None of the features or components shown in the drawings or discussed below should be taken as mandatory for any specific implementation of any of these systems or methods unless specifically designated as mandatory. For ease of reading and clarity, certain components, modules, or methods may be described solely in connection with a specific figure. Any failure to specifically describe a combination or subcombination of components should not be understood as an indication that any combination or subcombination is not possible. Also, for any methods described, regardless of whether the method is described in conjunction with a flow diagram, it should be understood that unless otherwise specified or required by context, any explicit or implicit ordering of steps performed in the execution of a method does not imply that those steps must be performed in the order presented. These steps may be performed in a different order or in parallel.
[0040] Computing systems typically have a user interface to allow a person to either access or enter data within a computing device. Computing devices can be desktop computers, laptops, tablets, smartphones, gaming systems, kiosk systems, devices with embedded processors, automotive systems, music playing devices, and generally any kind of system or device that employs processing logic where human input is utilized to control a function of the system or device. Most common user interface data entry devices used in conjunction with computing systems are the keyboard, which allows a user to enter data either as text or numerical information, and the mouse, which refers to a type of user interface in which a computer operator can manipulate a cursor in a 2D plan video graphic screen such as the video screen 402 of a computer 400. The traditional mouse is also used as a navigation tool to select points of data entry and other related functions on the video graphic screen. As disclosed herein, the finger mouse 100 provides fewer restrictions to the user or computer operator as with use of a conventional mouse. Those of ordinary skill in the art area will recognize from reading the description that the device, methods, and systems described herein can be applied to, or easily modified for use with, other types of equipment. Like reference numbers are intended to refer to the same or similar items.
[0041] Referring now to FIGs. 1 A, IB, and 1C, views of a finger mouse 100 are presented. The finger mouse 100 is a motion sensing device that can interface with a computing device and facilitate human-computer interaction. The finger mouse 100 can comprise a bottom housing 101, a top housing 102, a rigid circuit board 103 comprising a RF transceiver 105, an
accelerometer 106 of at least one axis, a gyroscope 107 functional in at least three axis (pitch, yaw, roll), a capacitive sensing circuit 108 that can sense areas including buttons, a slide bar, or both, a battery 109, and a visual indicator 110, for example a Light Emitting Diode (LED) and a flexible circuit 104 that can comprise capacitive sense buttons 111, 112, 113 or touch sensors, a slide bar, or tactile buttons.
[0042] In configurations, the rigid circuit board 103 can be flexible, or can comprise two or more separate circuit boards. In other configurations, the rigid circuit board 103 and flexible circuit 104 can be a single flexible circuit. In still other configurations, the RF transceiver 105, accelerometer 106, gyroscope 107, capacitive circuit 108, battery 109, visual indicator 110, and flexible circuit 104 can be separate from the rigid circuit board 103 and electrically connected via a bus or wires (not shown). In alternative configurations, the finger mouse 100 may comprise only a subset of the listed components. For example, the gyroscope 107 can have less than three axes or the rigid circuit board 103 may not include a visual indicator 110.
[0043] In alternative configurations, the individual components can be combined or separated as would be understood by one familiar with the art. For example, the accelerometer 106 and gyroscope 107 can be a single component or chip, or each axis of the accelerometer 106 and gyroscope 107 can comprise a separate discrete component. In another example configuration, the housing 101, 102 can be a single molded unit that provides a protective recessing by surrounding all of, or a portion of, the internal electronics, using for example molded silicon, plastic, rubber, other compounds, or combinations thereof. In a configuration, the housing 101, 102, can include a band 115 or removable finger grip 125 and can be a single unit of material, for example a molded silicon or rubber unit, with the rigid circuit board 103 and flexible circuit 104 embedded within the material. [0044] In configurations, the finger mouse 100 can include a pulse oximeter to measure heart rate 155 which can include a separate sensor mounted in the housing 101, 102, 115, 125, a global positioning system (GPS) 156 circuit, radio frequency identification (RFID) chips 154, camera (not shown), charge coupled devices, focal plane arrays or linear sensor arrays sensitive to various frequencies of electromagnetic radiation (not shown), altimeters (not shown), and magnetometers (not shown) as additional sensors to develop a more comprehensive set of data for understanding the movement, position, and state of the user who is utilizing the finger mouse 100. With additional sensors inputs, the finger mouse 100 can develop a more complete, comprehensive event analysis of the user's experience with the finger mouse 100.
[0045] A power source in the finger mouse 100 can be a battery 109. The battery 109 can be a coin-type battery of the type commonly used to power small electronic devices. A conductive retaining clip (not shown) can be used to both releasably attach the battery 109 to the device and to complete a power circuit that includes the battery 109 as the power source. This releasable construction can be used to permit removal of the battery 109 for replacement or recharging, among other things. The finger mouse 100 incorporates a charging circuit (not shown) either directly connected by cable or wires to an external power source (not shown) or connected to an external power source through inductive coupling. The finger mouse 100 can be powered by an external power source (not shown) operatively coupled with the finger mouse 100. For example, the finger mouse 100 can be powered by a computer 400 through a USB port 130; the computer 400 would be the external power source. Those of ordinary skill in this area will recognize from reading this disclosure that other types of batteries and power sources (such as a solar cell or a supercapacitor) may be used in different configurations as desired, needed, or appropriate. [0046] An indicator window 114 can be located on the exterior of the finger mouse 100, and can expose the LED or visual indicator 110, which can indicate multiple functions, actions, and conditions of the finger mouse 100, for example a power on condition, a self-test condition, and a sleep mode condition. Mouse selections from the user's thumb, or another finger, can result in certain kinds of flashing of LED or visual indicator 110. Movement of the finger while in cursor mode or scrolling mode can cause another type of flashing. Another flashing could be an indication of active communications between the finger mouse 100 and another computing device, for example establishment of a communications link or sending and receiving messages from a computing device. The finger mouse 100 can also have a vibratory component 152 and a sound emitter component 153 (see FIG. 11.) These components can be programmed to interact in correspondence to actions as portrayed on a visual feedback device (not shown), for example by receiving a message from a computing device. For example, a cursor indicator on a video screen 402 moving and hitting an edge of the video graphic screen may be linked to the vibratory component 152 vibrating. The use of tactile sensations can serve the user to indicate cursor placement, or in another configuration tactile feedback can enhance a video game player's experience. In other configurations, auditory cues from the sound emitter can be similarly interactive, or can be based on an internal condition of the finger mouse 100, for example a power on or power off condition.
[0047] Communications operably couple the finger mouse 100 to a computing device. The communications can include wired and wireless communications. Data, which can include packetized data, messages, and signals, from the finger mouse 100 can be transmitted using a wired data transmission pathway including specific implementations or versions of universal serial bus ("USB"), Ethernet, or IEEE 1394 ("Fire Wire™" or "iLink™"), among others. Data from the finger mouse 100 can be transmitted using wireless data transmission or reception components. The wireless data transmission or reception components can operate according to a specified communication protocol. Suitable protocols include those in the Institute of Electrical and Electronics Engineers ("IEEE") 802-series such as ZigBee™ (IEEE 802.15.4), Bluetooth™ (IEEE 802.16) and WiFi™ (IEEE 802.11), among others.
[0048] Referring now to FIG 14, a flow diagram depicting a method of interfacing 600 a finger mouse 100 with a computing device is presented. Execution of the method begins at START block 610. At process block 620, the finger mouse 100 is associated with a computing device. Processing continues to process block 625 where the finger mouse 100 is activated to sense motion. Processing continues to process block 630 where finger mouse 100 is initialized.
Processing continues to process block 640 where the sensed motion is processed into motion data. Processing continues to process block 650 where the motion data is formatted into a data packet or message. Processing then continues to process block 660 where the data packet or message is transmitted to a receiver. Processing then continues to process block 670 where the data packet or message is received by the receiver. Processing then continues to process block 680 where the data packet or message is formatted into motion data for the computing device. Processing then continues to process block 690 where the motion data is processed into an action for, or event on, the computing device. Processing then continues to processing block 700 a feature of a user interface of the computing device is updated. Processing then terminates at END block 710.
[0049] Referring now to FIG 15 A, a flow diagram depicting a method of authenticating 800 a user with a finger mouse 100 is presented. Execution of the method begins at START block 805. Processing continues to process block 810 where the user is authenticated with the computing device. Processing continues to process block 820 where access to the computing device is configured. Processing then terminates at END block 825. The method of authenticating 800 a user with a finger mouse 100 can be part of process block 620 of FIG. 14 where a finger mouse 100 is associated with a computing device.
[0050] Referring now to FIG. 15B, a flow diagram depicting a method of receiving motion data 830 by a first finger mouse 100 from second finger mouse 100 is presented. Execution of the method begins at START block 835. Processing continues to process block 840 where the first finger mouse 100 receives motion data from a second finger mouse 100. Processing continues to process block 840 where the first finger mouse 100 processes the motion data from the second finger mouse 100 to create a new data packet or new message. Processing then terminates at END block 845. The method of receiving motion data 830 from a second finger mouse 100 can be part of process block 640 of FIG. 14 where a finger mouse 100 processes motion data.
[0051] Referring now to FIG. 15C, a flow diagram depicting a method of providing an indication 850 is presented. Execution of the method begins at START block 855. Processing continues to process block 860 where the finger mouse 100 presents an indication to the user, for example a visual indication, an audible indication, a vibratory indication or any other kind of indication. Processing then terminates at END block 865. The method of providing an indication 850 can be part of process blocks 620, 625, 630, 660, 670 or any other process block where the user can receive information that a particular event has occurred or to provide status about an internal state of the finger mouse 100.
[0052] Referring now to FIG. 15D, a flow diagram depicting a method of data transfer 900 is presented. Execution of the method begins at START block 905. Processing continues to process block 660 where the data packet or message is transmitted to a receiver. Processing then continues to process block 670 where the data packet or message is received by the receiver. Processing then continues to decision block 910 where a determination is made whether the data packet or message is a valid data packet or message or is the next expected data packet or message if sequencing information is utilized. If the determination is NO, then processing continues to process block 930 where the receiver requests retransmission of the data packet or message. Processing then continues back to process block 670. If the determination is YES, then processing continues to process block 920 where receipt of the data packet or message is acknowledged back to the finger mouse 100 and processing then terminates at END block 935. The method of data transfer 900 can be part of process blocks 660, and 670 of FIG. 14 where a finger mouse 100 is transmitting and receiving data with a computing device.
[0053] Continuing to refer to FIGs. 1 A, IB, and 1C, and now also referring to FIGs. 14, 15A, 15B, 15C, and 15D, example methods of interfacing 600 a finger mouse 100 with a computing device are presented. The finger mouse 100 can be associated 620 with a computing device by activating 625 the finger mouse 100 near a computing device. In a configuration, the finger mouse 100 can be associated 620 with the computing system by activating 625 the finger mouse 100 and obtaining a network address from the computing device, for example by using a dynamic host control protocol (DHCP.) The finger mouse 100 can be associated 620 with the computing system by attaching to a USB port of the computing device and passing configuration information with the computing device. In a configuration, the finger mouse 100 can require an authentication method 800. For example, if the finger mouse 100 and the computing device use Bluetooth™, an initial pairing procedure takes place that associates 620 the Bluetooth™ interface in the finger mouse 100 with the receiving device. In a configuration, the finger mouse 100 can also authenticate 810 the user with the computing device, for example by identifying the particular finger mouse 100 from a device identification number of the finger mouse 100 that was previously associated with a particular user, or by a sequence of movements or sensor activations of the finger mouse 100 by the user. The authentication method 800 can also use digital certificates, encryption methods, or other authentication methods known in the art. Once authenticated 810, the computing device can configure 820 the appropriate user access to files, applications, and system resources for that user on the computing device.
[0054] Referring now also to FIG. II, in a configuration an RFID 154 chip in the finger mouse 100 can provide identification and authentication information for the finger mouse 100. The computing device can interrogate the RFID 154 chip directly, or the interrogation can be performed by another device and provided to the computing device though a network. For example, a user entering a room can be identified by an RFID reader that can be located for example in the doorframe. The RFID 154 chip in the finger mouse 100, or a separate RFID device associated with the user, provides authentication and identification information about the user and finger mouse 100. The information can be authenticated 800 by an authentication system that enables use of the finger mouse 100 with the computing device.
[0055] The finger mouse 100 processes 640 the sensed motion into motion data, formats 650 the motion data into a message structure suitable for the wired or wireless communications protocol being utilized, for example a data packet, and transmits 660 the message to a receiver, such as a computing device. The receiver receives 670 the message, and can acknowledge 920 the message, if a suitable protocol is being used, and can request retransmission 930 of packets if message sequencing information is supported by the protocol or if the finger mouse 100 determines that the message is corrupt. If the receiver is not the computing device, but is, for example, a dongle or wireless adaptor, then the receiver can further process the message, for example by formatting 680, reformatting, or converting the message into a protocol suitable for the computing device. In a non-limiting the example, a finger mouse 100 can wirelessly communicate with a dongle using the ZigBeeTM protocol, and the dongle can communicate with the computing device using a USB port. The motion data in the message can be processed 690 and turned into an action, event, or command for the computing device, for example a movement of a cursor on the computing device that is displayed 700 to the user.
[0056] If the finger mouse 100 is utilizing a wireless networking protocol, the finger mouse 100 can form an ad-hoc network with another finger mouse 100 and route messages to the receiver, for example if multiple finger mice 100 are simultaneously used by the user. In a configuration, the finger mouse 100 can also receive 840 messages from other finger mice 100 and process 850 new messages that are sent to the computing device. This advantageously requires the user to only have to authenticate a first finger mouse 100 with the computing system instead of having to individually authenticate 810 one or more finger mice 100 with the computing system. In a configuration, the finger mouse 100 can receive messages from other finger mice 100 and process 850 the messages to create new messages based on a combination of the data from one or more finger mice 100, thereby facilitating control of the user interface of the computing device based upon combinations of movements of multiple finger mice 100.
[0057] In a configuration, the finger mouse 100 uses a transmission control protocol over internet protocol (TCP/IP.) In a configuration, the finger mouse 100 uses a user datagram protocol over internet protocol (UDP/IP.) In a configuration, the finger mouse 100 uses a lightweight protocol adapted for low power wireless transmission. [0058] In a non-limiting example, the finger mouse 100 can use a wireless communication protocol such as the SimpliciTI™ protocol from Texas Instruments, or another suitable protocol. The finger mouse 100 can transmit data to a receiver 116 or computing device at a data transmission rate of 250Hz. In a non-limiting example, the data packet can comprise the following elements:
OxAA, (unsigned Byte [8 bit integer] (0-255))
0x55, (unsigned Byte [8 bit integer] (0-255))
0x12, (unsigned Byte [8 bit integer] (0-255))
Peer #, (unsigned word [16 bit integer] (0-65535))
Transaction ID.,
Capsense Data Byte, (unsigned Byte [8 bit integer] (0-255))
Capsense Data Byte 2, (unsigned Byte [8 bit integer] (0-255))
Ax, (word [16 bit integer] (-32768 to 32768))
Ay, (word [16 bit integer] (-32768 to 32768))
Az, (word [16 bit integer] (-32768 to 32768))
Gx, (word [16 bit integer] (-32768 to 32768))
Gy, (word [16 bit integer] (-32768 to 32768))
Gz, (word [16 bit integer] (-32768 to 32768))
(unsigned Byte [8 bit integer] (0-255))
[0059] The first three bytes of data (OxAA, 0x55, 0x12) can be the start bytes for verifying the start of a packet. The peer # byte can be used for collaboration of multiple finger mice 100. The transaction ID. can contain a sequence number of the packet being transmitted, and can be used for windowing functions or proper sequencing of the data packets. The capsense data byte can contain cursor button activation, slide activation, and centroid position information. For example bit 0 can be always 1; bit 1 can be for activation of a button 111 or touch sensor area 129; bit 2 can indicate button 112, 113 or slide sensor area 128 activation, and bits 3-7 can be for button 112, 113 activation or centroid position in the slide sensor area 128. The centroid position indicates where a user's finger is placed within the slide sensor area 128. The capsense data byte 2 can contain charging status and link status information. For example bit 0 can be a debug bit; bit 1-5 can be reserved for future use, for example additional touch sensors; bit 6 can be for link status; and bit 7 can be for charge status, for example if the finger mouse 100 is charging through the USB port 130.
[0060] In an example operation, when a user touches the button 111 or touch sensor area 129, the finger mouse 100 wakes, sets bit 1 of the capsense data byte to high, and begins sending acceleration data, Ax, Ay, Az, and angular rate data Gx, Gy, Gz to the computing device. When the button 111 or touch sensor area 129 is touched, the finger mouse 100 can also perform an initializing 630 or zeroing of the acceleration data, Ax, Ay, Az, and angular rate data Gx, Gy, Gz to remove any drift or bias. The data can be converted by the finger mouse 100, receiver 116 or device driver into a cursor movement on the computing device displayed 700 to the user that tracks the movement of the fingermouse 100.
[0061] In a configuration, the finger mouse 100 can send motion data to the computing device only when button 111 or touch sensor area 129 is touched, which functions as an activation sequence. An activation sequence can be configured to be any kind of action by the user or computing device to instruct the finger mouse 100 to send motion data to the computing device, such as a powering on of the finger mouse 100, a user initiated activation of a button 111 or touch sensor 129 of the finger mouse 100, a user initiated activation of a slide sensor area 128 of the finger mouse 100, a user initiated movement of the finger mouse 100, and a receiving of a signal from a computing device. When the user stops touching the button 111 or touch sensor area 129, the finger mouse 100 can halt sending messages to the computer device. The finger mouse 100 can also halt sending messages based on loss of a communications link with the receiver 116, a reduction in movement of the finger mouse 100, a second activation sequence, an expiration of a timer after an activation of the activation sequence, a low battery power condition, an error condition of the finger mouse 100, and a receiving of a signal from the computing device.
[0062] When the user touches other sensing areas, for example the other buttons 112, 113 or slide sensor area 128, bit 2 of the capsense byte goes high. Short taps of a finger or thumb, collectively digits or fingers, to the slide sensor area 128 can indicate left, center, and right clicks, depending upon the Centroid Position Data (CPD): for example, (6>= CPD <=9) for a left mouse click, (13>=CPD<=16) for a middle mouse click, and (22>=CPD<=26) for a right mouse click. Activating the slide sensor area 128 for a user-configurable time can disable cursor movement and indicate left and right drag actions. Zoom and scroll capabilities can be controlled by detecting changes in CPD. A quick swipe of the user's finger over the slide sensor area 128 causes rapid increases or decreases in CPD values. If changes in CPD occur over a short time period then zoom or scroll function is active depending on the state of the cursor and the application running on the computing device.
[0063] The acceleration data, Ax, Ay, Az, and angular rate data Gx, Gy, Gz, data can be sent as raw data or processed data. Software, for example an algorithm 300 on the finger mouse 100, receiver 116, or a device driver on the computing device, can process 324 or convert the raw data into processed data that corresponds to a position value. What follows is a description of a non- limiting example of an algorithm 300 to convert the raw data into a position value.
[0064] FIG. 12 is a flow diagram depicting an algorithm 300 for controlling a finger mouse 100. Execution of the method begins at START block 310. At process block 320, the motion data is acquired. Processing continues to process block 330 where the motion data is scaled. Processing continues to process block 340 where the motion data is filtered. Processing continues to process block 350 where the motion data is processed to remove the DC offset. At decision block 360 a determination is made whether to apply a gain to the processed motion data. If that determination is YES, processing continues to processing block 400 where a gain is applied to the motion data and processing then continues to decision block 270. If the determination is NO, then processing continues to decision block 270. At decision block 270, a determination is made as to whether to determine the baseline orientation of the finger mouse 100. If that determination is YES, then processing continues to processing block 410 where acceleration of the finger mouse 100 due to gravity is used to determine the current orientation of the finger mouse 100 and processing then continues to processing block 380. If that
determination is NO, then processing continues to processing block 380. At processing block 380, the processed motion data is integrated to obtain the accumulated position or angle data. Processing continues to processing block 390 where the accumulated position or angle data can be used to update a feature of a user interface of the computing device. Processing then terminates at END block 420.
[0065] FIG. 13 is a flow diagram depicting a fine control algorithm 500 for filtering and processing motion data to remove offset. The fine control algorithm 500 can be used in addition to, or instead of, the process blocks 340 and 350 of FIG. 12. Execution of the method begins at START block 510. At process block 520, a subset of the motion data is selected. Processing continues to process block 530 where a mean value of the subset of the motion data is
determined. Processing continues to process block 540 where a standard deviation of the subset of the motion data is determined. Processing continues to decision block 550. At decision block 550 at determination is made whether the standard deviation of the subset of the motion data exceeds at threshold standard deviation. If the determination is YES, then the movement of the finger mouse 100 is too great for fine control and processing terminates at END block 570. If the determination is NO, then the finger mouse 100 is moving slowly enough for fine control and processing continues to process block 560. At process block 560, the mean value that was calculated at process block 530 is used to remove the offset from the motion data. Processing then terminates at END block 570.
[0066] In an example of the algorithm 300 for controlling a finger mouse 100 and the fine control algorithm 500, when a user activates the finger mouse 100, the finger mouse 100 determines the motion data and sends it to the device 100, 116 or computing device that is running the algorithm. Once the motion data is acquired 320 the motion data can be scaled 330. The raw acceleration data, Ax, Ay, Az, and angular rate data Gx, Gy, Gz can be converted or scaled 330 into usable units that correspond to real world values. For example, the acceleration data can be scaled 330 to a plus or minus 4g scale, for example
(A/ (m/s2) = ((4g/32768) * Aj) * 9.8l),
[0067] where i=x, y, or z. The angular rate data can be scaled 330 to a plus or minus 500 degrees per second (dps) scale, for example
(G (radians/s) = ((500dps/32768) * (ττ/180)) * Gj), where i = x, y, or z.
[0068] The algorithm 300 can filter 340 the data, for example using smoothing functions or a moving average to remove transients that can cause large unwanted movements of the cursor on the user interface and inhibit fine control of the cursor on the user interface. The algorithm can also remove 350 the DC offsets, for example using a high pass filter to obtain only data representative of the change in motion of the finger mouse 100. For finer control, a Kalman filter or an iterative algorithm can be used, for example a fine control algorithm 500. For example, a subset of the data is selected 520 and a mean calculation of the value for each axis of acceleration and angular rate can be determined 530. The subset of the data can be selected 520 using a window function, and the mean can be determined 530 or calculated using only that subset of data points in the window. The window size can be adjustable and nominally is 50 data points. The standard deviation for each axis is calculated 540 and compared 550 against a minimum standard deviation. For acceleration, the minimum standard deviation can be adjustable and nominally is .03. For angular rate, the minimum standard deviation can be adjustable and nominally is .003. When the standard deviation for an axis is below the minimum standard deviation, the user's hand and the finger mouse 100 can be stable enough for the mean value for that axis to be subtracted from the data point, thus removing 560 the DC offset for each data point of the axis to produce data values representative of the true movement.
[0069] The algorithm 300 can also perform a baseline measurement to determine 370 the orientation of the finger mouse 100, for example using the acceleration of the finger mouse 100 due to gravity 410. The algorithm 300 can convert acceleration data to position data and convert angular rate to degrees of rotation to determine the position of the finger mouse 100 and the orientation of the finger mouse 100, for example, by performing a discrete integration 380 of the data values representative of the true movement with the accumulated position or angle data. The algorithm 300 can also re-orient the position data based on a change in angle. The algorithm 300 can apply 400 a gain to the data values representative of the true movement in order to control cursor acceleration; the gain can be selectable 360 and can be linear, or exponential, or any other function. The algorithm then outputs a position data in the desired form, for example an X, Y cursor position, or other form, to update 390 the cursor or any other feature of the user interface. The output position data could be in a Cartesian, or X, Y, Z coordinate system, or can be converted to a spherical-based coordinate system, or any other coordinate system as needed. [0070] Referring again to FIG. 1C, a typical orientation of an acceleration orientation origin located at the tip of the finger mouse 100 is illustrated. Three dimensional frames of reference can be selected from a fixed reference plane or a floating reference plane in relation to the acceleration orientation origin. In an example of a fixed reference plane, acceleration of gravity and angular acceleration detected by the accelerometer 106 and a gyroscope 107 provide orientation of the finger mouse 100 in three dimensional spaces. Motion of the accelerometer 106 can be interpolated in a plane with respect to the finger tip. As shown in FIG. 1C, the directions of the various axis and 20 reference planes can be fixed to the finger mouse 100 itself. In this manner, if the ZX plane of the accelerometer 106 can be no longer perfectly vertical, the translation plane for pointer position can be interpolated based on the acceleration and the position feedback from the gyroscope 107. Such control can attribute the same execution of motion of the user's finger whether the finger mouse 100 is pointing straight out or pointed down.
[0071] The data from the finger mouse 100 can be processed 640 or converted into feature displayed 700 on a user interface, including keyboard keystrokes, mouse actions, or any other type of command used in human-machine user interfaces. The data from the finger mouse 100 that is processed 640 or converted into the feature can include one or more of the following: the motion of the finger mouse 100 in the form of raw acceleration data, Ax, Ay, Az, and angular rate data Gx, Gy, Gz, data, or processed position data, and the various activations of the various buttons 111, 112, 113, touch sensor areas 129, and slide sensor areas 128. The data that is processed 640 or converted can include individual data points, such as an individual sensor activation, or can include groupings of data. For example, a gesture from a user can be captured by the finger mouse 100 as a set of movements or several sets of movements. The sets of movements can be non-contiguous movements, for example an exclamation point can be processed by the finger mouse 100 from a rapid downward movement of the finger 100 to indicate a vertical line, followed within a short time interval by a forward movement of the finger mouse 100 to indicate a period under the vertical line.
[0072] The data from the finger mouse 100 can be processed or converted into common keyboard or mouse commands such as movement of a cursor, a left button click, a tight button click, a scrolling function, the opening of an application, the closing of an application, and deleting an item or sending the item to the recycle bin. The data can also be processed or converted into an application defined button click, or a user defined button click. For example, the data can be used to perform a zoom in function or a zoom out function for a window on a screen, or facilitate checking email. The data can be used for text creation, for example by providing a virtual keyboard for typing characters or interpreting motions as letters and characters, or document editing, for example editing strings of characters, block and copying text, pasting text, or deleting text. Other non-limiting examples of commands and controls include control of the playback of multimedia files, such as selecting a multimedia item to play, modifying or muting volume levels, pausing playback, fast forwarding or rewinding, or starting playback at various positions within the file. For image editing, the finger mouse 100 can provide intuitive control and manipulation of the images, for example the rotation of an image, the resizing or scaling of an image, trimming of an image, or other image processing features. The finger mouse 100 can also provide intuitive control for controlling movie editing features. In a configuration, the data can be interpreted different ways by the application, depending on the particular context. For example, if the user was previously reading and not editing a document, sliding a finger across the slide sensor area 128 can function to scroll the document. However, if the user has been making edits to the document, sliding a finger across the slide sensor area 128 can select text. The particular context can depend upon the previous actions of the user, or can be determined, for example, by the focus of the application (e.g., is the focus the entire window, or is the focus relating to a text field within the window.)
[0073] The RF transceiver 105 can communicate directly with a computing device that has a compatible wireless interface. The RF transceiver 105 can also communicate with a computing device through a receiver 116. Referring now to FIG. 10, a receiver 116 can have a RF transceiver 105 for communicating with the finger mouse 100, a controller 117 that can be a processor or microcontroller, a USB transceiver chip 131 for communicating with the computing device, a male USB connector interface 118 for connecting to the USB port of a computing device, and can have a cord 119 between the RF transceiver 105 and the USB connector interface 118. In configurations, the receiver 116 can interface with the computing device using any number of interfaces, including a serial port that can be asynchronous or synchronous, an Ethernet port, a LAN port, a card socket, for example a PCMCIA card slot, a bus interface card, for example an internal ISA or PCI card slot, and, if separately powered, through another wireless interface.
[0074] The receiver 116 can be connected to the computing device through a cord 119, permitting placement of the receiver 116 at a distance from the computing device. The cord 119 advantageously allows the receiver 116 to be placed closer to the user to facilitate
communications between the finger mouse 100 and the computing device. For example, the receiver 116 can be placed where there is a clear line of sight to the user. Placing the receiver 116 closer to the finger mouse 100 can reduce the RF power consumption of finger mouse 100. Placement of the receiver 116 can also control the zone where a finger mouse 100 can be used. For example, the finger mouse 100 and receiver 116 can use a short range RF protocol, a piconet protocol, or a wireless personal area network (WP AN) protocol such as Infrared Data
Association (IrDA), Wireless USB, ZigBeeTM, or generally an IEEE 802.15 protocol. These protocols have limited ranges and can prevent interference of signals from the receiver 116 and finger mouse 100 from interfering with those of other users. This can be advantageous in public areas or office cubicles where there may be multiple users in relatively close proximity that are simultaneously using finger mice 100 with their individual computing devices.
[0075] The receiver 116 can be a dumb receiver that does not process data, for example a Bluetooth™ dongle or a WiFi™ wireless adaptor that plugs into a USB port of the computing device and passes data, signals or messages between the computing device and the finger mouse 100. The receiver 116 can also be incorporated into the computing device, for example as a component of the motherboard of the computing device, or in a card slot. In these
configurations, the finger mouse 100 can use a device driver on the computing device to translate the data, signals or messages from the finger mouse 100 into actions to be taken, or commands to be executed, by the computing device.
[0076] In a configuration, the finger mouse 100 can perform the processing of motion data into a processed command and send the processed command to the receiver 116. However, the receiver 116 can also be a smart receiver that translates or processes communications received from the finger mouse 100. In a configuration, the receiver 116 can maintain the link with the finger mouse 100, receive communications from the finger mouse 100, process or translate the communications from the finger mouse 100, which can comprise raw data, signals or packetized messages, and produce a processed message that is output using an output interface to the input interface of the computing device. Because the receiver 116 can be powered by the computing device, for example by using power directly from a USB connection to the computing device, performing the processing on the receiver 116 can minimize power consumption on the finger mouse 100 and advantageously extend the useful battery life.
[0077] In a configuration, the receiver 116 or finger mouse 100 can emulate a device, for example a computer mouse, by sending messages to the computing device in a standard recognized format. For example, the receiver 116 can send commands and messages to the computing device that would be recognized by the default mouse driver of the computing device. In this way, the receiver 116 can ensure backwards compatibility with a wide range of computing devices without requiring the installation of new device drivers. This advantageously allows the finger mouse 100 to be used with computing devices that use embedded processors or that run proprietary software or operating system where developing device drivers would not be cost effective or possible. The receiver 116 can also enable the finger mouse 100 to interface with devices that run application specific protocols such XI 0 or Z-Wave, which are used for home automation and the control of home electrical devices such as lamps. The use of various configurations of receivers 116 advantageously allows the use of the finger mouse 100 with a wide variety of electronic devices without requiring changes to the finger mouse 100 itself.
[0078] FIG. 1C also has a perspective view of an attachment mechanism for attaching the finger mouse 100 to the user. The band 115 securing the finger mouse 100 to the index finger or any other finger of the human hand 200 can be constructed of various different materials and formed in many different fashions. The band 115 can be constructed of flexible material such as silicone, rubber, elastic fabrics, etc. Constructing the band 115 using flexible materials provides an infinite range of sizing targeting 90% of the finger size population. Users can select the band 115 that best fits. The band 115 can also be constructed of rigid materials such as plastic or metal. Sizing of the band 115 in the case of rigid materials can be accomplished using secondary bands which reduce the inner diameter of the band 115 much like that of sizing a ring to a finger. The band 115 can also be interchangeable, with various inner diameters that fit the same profile. Interchangeable bands can allow stylistic changes or the sharing of a single device amongst several different users. The finger mouse 100 can be attached by various other attaching means, as may be recognized by those of ordinary skill in the art.
[0079] Referring now to FIGs. IE and IF, an ergonomic finger mouse 120 is presented. The ergonomic finger mouse 120 comprises some of the features and aspects of the finger mouse 100 but further comprises a molded top housing 122 configured to secure to a molded bottom housing 121. When secured, the molded top housing 122 and molded bottom housing 121 form protective recesses that protect a circuit 123 and a flexible sensing circuit 124. A removable finger grip 125 for gripping a finger of a hand is configured to physically attach to the molded bottom housing 121. Together, the molded top housing 122, molded bottom housing 121, and removable finger grip 125 comprise a housing 122, 121, 125. The removable finger grip 125 can work in conjunction with a curved section 126 of the molded bottom housing 121 to attach the ergonomic finger mouse 120 to the finger or an appendage of the user. The removable finger grip 125 can be sized in a range of sizes to fit fingers or thumbs (collectively fingers or digits) or other appendages, such as toes or arms. The removable finger grip 125 facilitates attachment of the ergonomic finger mouse 120 to a wide range of appendage sizes, and is an alternative to a one-size-fits-all type approach. The removable finger grip 125 can be configured to different geometries to accommodate placement on different parts of a finger. For example, the prongs of the removable finger grip 125 can be configured to have different diameters or shapes that facilitate comfortable securing of the ergonomic finger mouse 120 to the underlying bony structures of the finger, known as phalanges. For example, the prongs of the removable finger grip 125 can have an approximately tapered geometry to accommodate placement of the ergonomic finger mouse 120 on the distal and intermediate phalanges. In another example, the prongs of the removable finger grip 125 can be configured to support attachment to the proximal phalanges, without substantially affecting movement of the distal and intermediate phalanges.
[0080] The molded top housing 122 can be connected to the molded bottom housing 121 to form a protective recess for the flexible sensing circuit 124. The curved section 126 of the molded bottom housing 121 can function as a support surface for the flexible sensing circuit 124. The curved sensing area 127 in the molded top housing 122 can provide a protective covering for the flexible sensing circuit 124. The curved sensing area 127 can also provide a visual indication of a touch sensor area 129 by raising, lowering, or creating visual markers for where a user is to touch with their finger. The touch sensor area 129 is positioned over the area where the flexible sensing circuit 124 is configured to register finger touches. The curved sensing area 127 can similarly provide a visual indication of a slide sensor area 128 and the flexible sensing circuit 124 underneath is configured to register one or more finger's position within the slide sensor area 128. For example the flexible sensing circuit 124 can be configured to register a sliding motion, for example the translating of a finger across the surface of the slide sensor area 128, or the position of one or more fingers touching within the slide sensor area 128.
[0081] The molded top housing 122 can be connected to the molded bottom housing 121 to form a protective recess for the circuit 123. Continuing to refer to FIGs. IE and IF, and referring now to FIG. 1H, a circuit 123 is presented. The circuit 123 comprises a USB connector 130, a USB transceiver chip 131, a microcontroller 132, a capacitive sensing chip 108, a gyroscope 107, an accelerometer 106, a flex connector 136 for connecting the flexible sensing circuit 124, a battery module 138 and a second flex connector 137. The capacitive sensing circuit 108 monitors the flexible sensing circuit 124 through the flex connector 136.
[0082] Separating the battery module 138 from the circuit 123 provides several advantages. It allows the use of larger batteries as space for the battery is no longer constrained by the placement of the battery in a battery holder on the circuit 123. It also permits the battery module 138 to have a different geometry depending on the application, for example a thin spacesaving geometry for lighter weight, or a thicker geometry for longer battery life. Further, it can make it easier to replace the battery module 138, for example for repair and maintenance procedures.
[0083] Continuing to refer to FIG. IG and now referring also to FIG. 11, a daughter board 150 is presented. The daughter board 150 comprises a transceiver module 148, an RF antenna 151, a vibratory component 152, a sound emitter component 153, an RFID 154 circuit, a pulse oximeter circuit 155, and a GPS 156 circuit. In examples, the daughter board 150 can have altimeters (not shown) or magnetometers (not shown) in addition to, or instead of, some of the components shown in FIG. 1G. The daughter board 150 can connect to the circuit 123 through the second flex connector 137. The vibratory component 152 can be a small motor having an irregular unbalanced load or cam. The sound emitter component 153 can be a piezoelectric device. Other vibratory components 152 or sounder emitter components 153 can also be used. In different configurations, the daughter board 150 can be configured with or without a vibratory component 152, and with or without a sound emitter component 153. The vibratory component 152 and sound emitter component 153 can also be placed on the circuit 123 or on the battery module 138. The RFID 154 circuit, pulse oximeter circuit 155, and GPS 156 circuit can provide additional information about the user and the user's environment as described above. The pulse oximeter circuit 155 can be connected to a sensor (not shown) mounted in the band 115, removable finger grip 125, or housing 101, 121, 141 or separately attached to the user.
[0084] In a configuration, the RF transceiver module and RF antenna 151 can be located on the circuit 123 or the battery module 138. In FIG. 11, the RF transceiver module and RF antenna 151 are shown on the daughter board 150. Moving the RF transceiver module 148 and RF antenna 151 off of the circuit 123 reduces the amount of RF shielding and other isolation measures required for the circuit 123. By having the RF transceiver module 148 separate from the circuit 123, it is possible to change the type of wireless interface on the ergonomic finger mouse 120 without having to make hardware changes to the circuit 123. For example, the same circuit 123 can be programmed to operate with a ZigBee™ RF transceiver module, a
Bluetooth™ RF transceiver module, or a WiFi™ RF transceiver module. In different configurations, the circuit 123 can be preloaded with a single driver for a specific type of RF transceiver module, or the circuit 123 can be pre-loaded with a number of drivers for a number of different types of RF transceiver modules. When the circuit 123 is preloaded with a number of drivers, the circuit 123 can automatically determine the type of RF transceiver module, or the circuit 123 can be configured through software, for example by a user or during an initializing step.
[0085] Referring again to FIG. 1G, the USB connector 130 can be configured to allow connections to a USB port of a computer 400. The USB transceiver chip 131 that is connected to the USB connector 130 can receive or transmit data from the ergonomic finger mouse 120 to the computer 400. The USB transceiver chip 131 facilitates entering the initial configuration into the ergonomic finger mouse 120, for example configuring the wireless communications parameters. The USB transceiver chip 131 also facilitates updating the internal software of the ergonomic finger mouse 120.
[0086] The USB connector 130 can be configured to allow connections to a USB connected power supply (not shown), for example an AC adaptor. The USB connector can also connect to a separate battery unit (not shown), for example a user-carried battery unit. The ergonomic finger mouse 120 can be powered through the USB connector 130, in addition to being powered by the battery module 138. The battery module 138 can be recharged through the USB connector 130.
[0087] A microcontroller 132 controls the actions and features of the ergonomic finger mouse 120. The microcontroller 132 receives inputs from the accelerometer 106, the gyroscope 107, and the capacitive sensing circuit 108, and processes the information from those inputs to create a signal that is representative of at least a portion of one or more of the inputs. As described above, the microcontroller 132 can process or convert the raw data from the accelerometer 106 and gyroscope 107 inputs into processed data. The microcontroller 132 can also process or convert the various activations of the buttons 111, 112, 113, touch sensor areas 129, and slide sensor areas 128, into processed data, or merely format the data into the appropriate message format or packet and send a communication to the computing device. The microcontroller 132 can receive the inputs by polling the accelerometer 106, the gyroscope 107, and the capacitive sensing circuit 108. In addition to polling, the inputs can be received through an interrupt driven process, or can be a combination of both polling and interrupts.
[0088] The microcontroller 132 can format the signal into a format appropriate for
transmission through the USB connector 130. The microcontroller 132 can format the signal into a format appropriate for wireless transmission, for example through an RF transceiver in the circuit 132, daughter board 150, or battery module 138. The microcontroller 132 can run a protocol stack that enables proper handshaking and link establishment, error correction, datagram packetization, and message parsing of communications with a remote receiver, such as a remote computer 400 or smartphone (not shown.) In a configuration, the microcontroller 132 is a message unit. In configurations, the rigid circuit board 103, the circuit 123, the daughter board 150, and the microcontroller 132, or any combination thereof, can be a messaging unit or perform the functions of a messaging unit.
[0089] The microcontroller 132 can be implemented using hardware components, software modules or combinations thereof. The microcontroller 132 can include a processor, a microprocessor, a circuit, a central processing unit (CPU), an application specific integrated circuit (ASIC), a programmable logic devices (PLD), a field programmable gate array (FPGA) or any other kind of processor or variety of other suitable electronic components including but not limited to transistors, resistors, capacitors, inductors, logic gates, registers, semiconductor device, chips, a microchip, an integrated circuit, an arithmetic logic unit (ALU), a chipset, an input/output (1/0) device, a random access memory (RAM) such as dynamic RAM (DRAM), and a read only memory (ROM), digital-to-analog and analog-to-digital converters (DAC, ADC), and busses. The microcontroller 132 can be a multi-processing unit, a reduced instruction set computer (RISC), a processor that has a pipeline or parallel threading capabilities, a complex instruction set computer (CISC), or a digital signal processor (DSP). Factors affecting selection of the appropriate microcontroller 132 can include computational rates or processing time, power requirements, heat tolerances, data bus speeds, the types of inputs and outputs available on the microcontroller 132, the input and output data rates, and memory resources. [0090] Software can include operations, code, routines, subroutines, objects, function calls, application program interfaces (API), applications, programs, middleware, operating systems, embedded code, microcode, and firmware. It should be noted that terms such as "processing", "computing", "running", "determining", "calculating", and "converting", or similar terms refer to the various operations of a computing device or microcontroller 132. The above terms are intended as non-limiting examples of operations typically performed by computing devices in order to change, move, or otherwise manipulate data, whether in data structures or not, that are stored in various types of memory.
[0091] Referring now to FIG. 1H, a finger mouse with a removable power module 140 is presented. The finger mouse with a removable power module 140 comprises a bottom portion 141 that connects to a removable top portion 142. The bottom portion 141 and removable top portion 142 can mate together using a mechanical connector 143, for example interlocking notches. The bottom portion 141 and removable top portion 142 can mate together using a magnetic connector 144. The bottom portion 141 and removable top portion 142 can be electrically connected using an electrical connection 145, for example a rigid plug and socket mechanism, a flexible wiring harness, a battery-type connector with movable contact members typically found in mobile phones and mobile phone batteries, or a land grid array of pins and electrical contacts. The bottom portion 141 and removable top portion 142 can be electrically connected using inductive coupling.
[0092] The bottom portion 141 of the finger mouse with a removable power module 140 can comprise a curved sensing area 127, touch sensor area 129, and slide sensor area 128 similar to the ergonomic finger mouse 120. The top portion 142 can comprise a battery 146, one or more capacitive sense buttons 14 7, an RF transceiver 148, and one or more visual indicators 149. The capacitive sense buttons 14 7 can also be a slide-type capacitive sensor, or a combination of one or more capacitive sense buttons 147 and one or more slide-type capacitive sensors.
[0093] In operation, the capacitive sense buttons 147 can be used to select which computing device to which the finger mouse with a removable power module 140 will be connected. A visual indicator 149 could provide an indication of which computing device the finger mouse with removable power module 140 is communicating with. For example, a user could select one of the capacitive sense buttons 147 to connect the finger mouse with a removable power module 140 to a laptop or desktop computer 400 using a ZigBee™ connection. The user could select a different capacitive sense button 14 7 to connect the finger mouse with a removable power module 140 with a smartphone using a Bluetooth™ connection. The user could select another capacitive sense button 147 to connect the finger mouse with a removable power module 140 with an Internet Protocol television (IPTV), Television Over Internet Protocol (TVoiP), gaming system, or set-top box using an IrDA or WiFi™ connection. The finger mouse with a removable power module 140 can be configurable to support any number of finger presses or finger press combinations of the capacitive sense button 147 to control the computing devices or
communication links with the computing devices.
[0094] FIGs. 2 through 7 and 10 through 11 are perspective views of at least one finger mouse 100 on a human hand 200. For simplicity of discussion purposes only, these perspective views have been limited to the index finger and/or middle finger of the right hand 200 of a human, and should not be viewed as a limitation of the position or use of the finger mouse 100 on a human hand 200. Although the finger mouse 100 is illustrated on a single finger, the finger mouse 100 can be located on a plurality of fingers of either the right hand 200 or the left hand (not shown), or other appendage (not shown), for example by using a larger band 115 as may be understood by a person skilled in the art. The basic position for locating the finger mouse 100 on the index finger of the right hand 200 can be between points 204 and 201 along the length of the finger as shown in FIG. 8. The basic position for locating the finger mouse 100 on the middle finger of the right hand 200 can be between points 209 and 206 along the length of the finger as shown in FIG. 8. This basic position can be replicated along any finger of the human hand 200 allowing for a plurality of finger mouse 100 positions. The finger mouse 100 can be positioned between points 203 and 202 of the index finger, between points 208 and 207 of the middle finger, and between points 205 and 201 of the thumb. This alignment is merely an example and not a limitation of the position of the finger mouse 100 along the length of any finger of either the right hand 200 or the left hand (not shown).
[0095] FIGs. 2 through 3C are perspective views of finger mouse 100 located on the right hand 200 of a human demonstrating example methods of using the finger mouse 100 to manipulate cursor position; for example, cursor position can be manipulated in a 2D plan video graphic screen such as the video screen 402 of a computer 400. In this example method, cursor movement can be accomplished by maneuvering the thumb next to the index finger supporting the finger mouse 100 and touching one or more buttons 111, 112, 113 activating data collection from sensors within the finger mouse 100. Movement of the finger supporting the finger mouse 100 can be tracked by collecting angular and linear acceleration data. The data collected can be wirelessly transmitted to a computing device, for example, a personal computer 400 or a smart phone (not shown) where the data can be processed. For example, in one configuration, the processed data can translate or move a cursor in a 2D plan video graphic screen such as the video screen 402 of a computer 400. In another configuration, the data collected and wirelessly transmitted to the personal computer 400 or other computing device can be processed as written text, thereby turning the finger mouse 100 into an electronic writing utensil. Moving the finger mouse 100 as a writing device either on a surface or in mid-air can create electronic files of transcribed text and drawings, for example signatures, notes, preliminary documents, drawings in hand written form. Movement of the cursor could correlate to the movement of the finger mouse 100. In a configuration, a virtual keyboard can be presented, for example on a screen. When the user moves the finger mouse 100 and the cursor into the area of the virtual keyboard, or performs an action such as selecting a button or performing a tap or sequence of taps or a particular gesture, a virtual finger or virtual hand is presented on the virtual keyboard. The virtual hands or virtual fingers stay over the virtual keyboard and the user can type. For example, if the user has multiple finger mice 100, then those fingers with finger mice 100 can type on the virtual keyboard, with each tap being registered as a keystroke.
[0096] In a configuration, limiting accidental activation of cursor functions could be accomplished with the interaction of the thumb and one or more buttons 111, 112, and 113 to makes all cursor functions deliberate and to eliminate the accidental activation of those functions. In a configuration, cursor drift can be controlled by having cursor positioning functions accomplished only during the interaction of the thumb and buttons 111, 112, 113. In another configuration, cursor control can be configured to be activated by a click or double click and deactivated by a succeeding click or double click.
[0097] FIGs. 4 through 5C perspective view a finger mouse 100 on the index finger of the right hand 200 and a second finger mouse 100 on the middle finger of the right hand 200 of a human, demonstrating methods of using the finger mouse 100 to manipulate cursor position, for example in a 2D plan video graphic screen such as the video screen 402 of a computer 400. In a configuration, cursor movement can be accomplished by maneuvering the thumb next to the middle finger supporting the finger mouse 100 and touching one or more buttons 111, 112, 113 activating data collection from sensors within the finger mouse 100. In a configuration, the activation of one or more of buttons 111, 112 and 113 can support such functions as typical media controls, volume, track, advance, forward, reverse, single click functions and multiple click functions. Movement of the finger supporting the finger mouse 100 can be tracked by collecting angular and linear acceleration data. The data collected can be wirelessly transmitted to the personal computer 400 or other computing devices such as smart phones (not shown) where it can be processed. The processed data can function to translate or move a cursor in a 2D plan video graphic screen such as the video screen 402 of a computer 400. Movement of the cursor would correlate to the movement of the finger mouse 100.
[0098] In some configurations, non-typical mouse control can be obtained. FIG. 6 presents a configuration of a finger mouse 100 on the index finger of the right hand 200 of a human and demonstrates a method of in air function control. Abrupt movements of the finger mouse 100 such as quick jerking motions could trigger programmed functions according to adjustable acceleration thresholds. The data collected from such action can be wirelessly transmitted to a computing device, for example a personal computer 400 or a smart phone (not shown) where the data can be processed. In turn, the processed data can control actions on the computing device. For example, the processed data can control actions of the cursor in a 2D plan video graphic screen such as the video screen 402 of a computer 400, or a 3D virtual world presented thereon.
[0099] FIG. 7 is a perspective view of a finger mouse 100 on the index finger of the right hand 200 of a human and illustrates an exemplary method for in detecting tapping for function control. Tapping of the finger, to which the finger mouse 100 is attached, onto an object such as a table, leg, etc., can trigger programmed functions once certain adjustable acceleration thresholds are reached, for example by sending a tap indication in a message to the computing device. The data collected can be wirelessly transmitted to the personal computer 400 or other computing devices such as smart phones (not shown) where it can be processed. For example, the processed data can control actions of the cursor in a 2D plan video graphic screen such as the video screen 402 of a computer 400, or a 3D virtual world presented thereon.
[00100] FIG. 9 presents a prior art personal computer 400 system consisting of a CPU 401, a mouse 404, a keyboard 403, and a monitor or video screen 402. FIG. 9 further presents a prior art pictorial of how the right hand 200 is maneuvered when using a mouse 404 and a keyboard. In such systems, a user must remove a hand 200 from the keyboard in order to engage the mouse and use any available mouse functions.
[00101] In an example application of the finger mouse 100, the prior art use of a mouse and a keyboard that requires extra movement of the hand 200 in order to use a mouse and that imposes a substantial reduction in typing speed, as well as increased repetition of hand flexion can be overcome. The advantage of the finger mouse 100 over the conventional mouse 404 can be less movement of the hand 200 away from the keyboard to control cursor function and position. Reduced hand movement can have a dramatic effect on reducing hand fatigue which can lead to carpel tunnel syndrome, as well as can greatly increase user interaction speed. FIG. 10 is a perspective view of a finger mouse 100 on one or more fingers of a hand 200 and demonstrates configurations of the finger mouse 100 in use while typing. These configurations can reduce the processing time by eliminating the need to move the hand 200 from the keyboard to engage a mouse-in order to operate mouse type functionality, by locating such functionality in a manner in which the user's fingers do not have to leave the keyboard 403 area. The user can utilize one thumb to activate the finger mouse 100 at the same time the fingers remain on the keys and the other thumb remains on the space bar. The immediate use of mouse functions without the fingers leaving the key pad area can significantly increase typing speed and provide a faster and more ergonomic computing experience.
[00102] FIG. 11 is a perspective view of a finger mouse 100 on the index finger of the right hand 200 of a human demonstrating the usability of the finger mouse 100 while tapping the index finger. Tapping of the finger, to which the finger mouse 100 resides, onto an object such as a table, leg, etc., could trigger programmed functions once certain thresholds of accelerations are reached, for example by sending a tap indication in a message to the computing device. The data collected on the onset of such an action can be wirelessly transmitted to the personal computer 400 or other computing devices such as smart phones (not shown) where it can be processed. The processed data and function would control actions of the cursor in a 2D plan video graphic screen such as the video screen 402 of a computer 400.
[00103] In addition to controlling actions of the cursor in a 2D plane video graphic screen such as the video screen 402 of a computer 400, the processed data from the finger mouse 100 can also be used to provide complete 3D motion information with 6 full degrees of freedom from the finger mouse 100 to the computing device. The steps of a process 1600 for operating a finger mouse 100 in three dimensions with 6 full degrees of freedom are shown in Fig. 16. The process begins at start block 1601, and proceeds to process block 1602.
[00104] At process block 1602, the step of reading the initial accelerometer and gyroscope data occurs. Readings from the accelerometer are provided as three values, representing the acceleration values along each axis, Ax, Ay, and Az of the accelerometer. Sample values for the accelerometer (an) may therefore each be represented by matrices of these three values.
Readings from the gyroscope are also provided as three values, representing the angular velocity values about each axis, Gx (roll), Gy (pitch), and Gz (yaw) of the gyroscope. Sample values for the gyroscope (ωη) may therefore each be represented by matrices of these three values. The initial readings from the accelerometer are read and recorded as a0, and the initial readings from the gyroscope are recorded as ω0. When the initial readings are read and recorded, the process continues at process block 1603.
[00105] At process block 1603, the step of initializing the motion variable estimates occurs. Motion variables velocity estimate v, position estimate p, and gravity vector estimate g are each pre-populated with values representing a neutral velocity, origin point, and presumed gravity, respectively. This may be expressed as
Figure imgf000041_0001
[00106] At initialization, it is assumed that the finger mouse is not in motion. Thus, (1) all measured acceleration is assumed to be due to gravity, and initial gravity vector estimate g0 is set to the initial accelerometer reading a0; and (2) velocity estimate v is initialized to a neutral, non-moving state, with velocity along the x, y, and z axes set each to 0. Further, at initialization, the position of the finger mouse is also designated the origin point, with position estimate p given coordinates of 0 on each of the x, y, and z axes. Note that the motion variables are each relative values, so steady motion along a level surface, such as riding in a train or automobile, or level flight in an airplane, will have little effect on the operation of the finger mouse. When the motion variables are thus initialized, the process proceeds to process block 1604, entering a continuous loop. [00107] At process block 1604, the process waits for a pre-determined interval of time, or sampling interval, dictated by the desired sampling rate, before proceeding to sample inputs from the accelerometer an and gyroscope ωη at process block 1605. Provided that the controller 117 is appropriately selected to timely perform all calculations of process 1600, this delay ensures that the iteration of process 1600 from process block 1604 through 1610 occurs at the desired sampling interval. The well-known Nyquist theorem from signal processing states that in order to be able to represent a signal (in this case, the 3D motion of finger mouse 100) as a set of discrete time samples, a sample interval (in Hz) at least two times the rate of the highest frequency component (also in Hz) in the signal must be chosen. The frequency content of the acceleration and angular velocity to be measured by accelerometers and gyroscopes depends on the particular use case and can be determined empirically. After determining the expected frequency content for a given use case, an appropriate sampling interval can be selected.
[00108] For general use, the sampling interval from the accelerometer 106 and gyroscope 107 has been found to be acceptable for the operation of the finger mouse at a rate of 120 samples per second, although 60 samples per second has also been shown to be adequate. The highest possible sampling interval (which differ from device to device as constrained by hardware selected in the construction of the finger mouse 100) may be chosen in order to obtain as much information as possible about the input motion to be captured. For example, in applications where rapid change in the acceleration of the finger mouse are expected, such as in gaming, higher sampling intervals may be desirable. However, increased sampling interval increases battery consumption, already at a premium in a wireless wearable such as a finger mouse 100. Increased sampling interval also requires more computational effort. Alternatively, therefore, lower sampling intervals may be chosen to reduce power consumption or reduce computational effort. Furthermore, sampling interval need not remain static, but may be adjusted based on the application with which the finger mouse is being used, charge state of the finger mouse's battery, or other criteria.
[00109] Current processors economically selected to be controller 117 are operated near processing capacity when performing all calculations necessary to determine current gravity vector estimate gn, current translational velocity estimate vn, and current translational position estimate pn at a sampling interval of 120 samples per second. Additionally, wireless data rate at which this information is sent as mouse packets to the PC may be similarly restricted by hardware selection. However, increased accuracy may be obtained by oversampling either the gyroscope, the accelerometer, or both. In such oversampling, the iteration of process 1600 still occurs at the desired sampling interval, (for example, the process 1600 loops from step 1604 through 1610 at 120 iterations per second), while sub-samples are taken more than once per iteration, and then averaged or totaled to provide a sample value for calculations. Sub-samples may be evenly distributed over the sampling interval. For example, the accelerometer 106 and/or gyroscope 107 may be sub-sampled 10 times per iteration through the loop, and the average or sum of the 10 sub-samples used as the sample value for the sampling interval. This largely avoids the calculation overhead involved in increasing sampling interval, while still providing additional motion information unavailable from a lower sampling rate.
[00110] Once the sampling interval has elapsed (e.g. 1/120 seconds where the sampling rate is 120 samples per second), the process advances to process block 1605.
[00111] In process block 1605, the step of reading the current incremental input from the accelerometer 106 and gyroscope 107 occurs. A sample input from both the accelerometer an and the gyroscope ωη are read, indicating the current acceleration and angular velocity of the finger mouse 100. These sample inputs from the accelerometer an and gyroscope ωη are stored, and the process continues to process block 1606.
[00112] At process block 1606, the step of updating the gravity vector estimate occurs. The current gravity vector estimate gn is given a value calculated as a function f of the current accelerometer sample an, the current gyroscope sample ωη, the previous gravity vector gn-i estimate, and time t:
(gn = f(an, ωη, t))
with f operating as described in further detail below with reference to Fig. 17. This gravity vector estimate update function may be executed in firmware or hardware for the finger mouse, but alternatively may be executed remotely on a computing device. When the gravity vector estimate is updated to be the value calculated by gravity estimate update function f, the process continues at process block 1607.
[00113] At process block 1607, the step of updating the estimate of the translational velocity v occurs. The translational acceleration component of current sensed acceleration an is isolated by subtracting the current gravity vector estimate gn from current sensed acceleration an. The current velocity estimate vn is updated by a piecewise function intended to minimize drift and errors.
[00114] Where minimal acceleration is detected, the current velocity estimate vnis set to 0 along all three axes. Whether an acceleration is "minimal" or not is evaluated by determining whether the magnitude absolute value of the translational component of the current sensed acceleration is less than some preselected positive constant kx. This may be expressed as
(| an - gn | < ^), (^ £ (0,∞))
Constant kx provides a minimum acceleration threshold, below which measured acceleration is disregarded as unintentional or noise, and should be selected to minimize acceptance of unintentional motion of the finger mouse 100, while not disregarding intentional motion.
Accelerations whose magnitude falls below that of typical hand tremor motion can be presumed to be unintentional and may be safely disregarded. Clinical data hand regarding hand tremor motion can be indicative of appropriate values. Gomez-Bianco et al. describes tremors as high as 0.1 mm peak with a frequency of 10 Hz. Mario Gomez-Bianco et al., Sensing Hand Tremor in a Vitreoretinal Microsurgical Instrument, CMU-RI-TR-99-39 (Carnegie Mellon U. 1999) (available for download at
http://repository.cmu.edu/cgi/viewcontent.cgi?article=1532&context=isr) (incorporated herein in its entirety by reference). Appropriate value ranges can be calculated by assuming the tremors to be sinusoidal, and differentiating the tremor frequency twice.
[00115] As a practical matter, the maximum hand tremors may be approximated by a sinusoid function, with amplitude of 0.1 mm, and frequency of 10 Hz.
(f(t) = (. 0001m) sin((10/ls)t))
Differentiating the function twice yields the acceleration at any time:
Figure imgf000045_0001
The maximum acceleration experienced along that curve occurs at the inflection points of f ", given by:
Figure imgf000045_0002
Solving for t yields— ττ/20 radians. Thus, f "(— ττ/20) provides the maximum acceleration along the curve:
Figure imgf000046_0001
[00116] Note that in the finger mouse system, this acceleration may be expressed in whatever units are appropriate to use with the accelerometer 106.
[00117] Minimum acceleration threshold Iq should be selected so that the output signal is at zero when the hand is at rest, but generally looks like an acceleration signal when the hand is moving. Accelerations below approximately 0.01 m/s2 are therefore properly disregarded as hand tremor or other noise. In practice, however, values from five to ten times that acceleration are appropriate for noise suppression. Higher values for minimum acceleration threshold kx make the process more likely to disregard useful, intentional acceleration data. Lower values allow the process to pick up more noise. When zero-mean noise white noise is integrated, the resulting signal is a random walk, i.e. an unpredictably drifting signal. In practice, the noise is not always zero-mean, and so such integration is of a signal with a small mean value turns into a ramp when integrated. A minimum acceleration threshold kx « 0.06 m/s2 has been found to strike an acceptable balance, causing the system to disregard the vast majority of noise while still accepting the majority of useful acceleration data.
[00118] Additionally, where an excessive angular rate is detected, the current velocity estimate vn is set to 0 along all three axes. Whether an angular rate is "excessive" or not is evaluated by determining whether the magnitude of the current sensed rotation ωη is greater than some preselected constant k2. This may be expressed as
|ω„| > k: (k2 G (0, oo))
[00119] Maximum rotation constant k2 provides a threshold above which measured rotation ω is disregarded as unintentional or erroneous. Maximum rotation constant k2 should be selected so as to allow the user to rotate the finger mouse 100 naturally, but to disregard highly rotational motion data provided by gyroscope 107. Such highly rotational motion data is particularly difficult to use to track velocity, as the orientation (gravity vector) of the finger mouse 100 must be known precisely in order to calculate the linear acceleration exactly. This is because centripetal and Coriolis accelerations are also measured by the finger mouse 100 and must be subtracted from the measured acceleration. These accelerations are measured because the finger mouse accelerometer 106 is generally taking measurements in a moving frame of reference. Further, highly angular motions can often be indicative of unintentional motion of a finger mouse 100 or of a dropped finger mouse 100.
[00120] Maximum rotation constant k2 is used to throw out accelerometer 106 sample data when rotation at a significant angular rate (used interchangeably with angular velocity) is present. In these cases, the centripetal acceleration picked up with the accelerometer 106 due to rotation is significant. Measured centripetal acceleration is difficult to calculate and subtract out, as it is strongly dependent on the orientation of the accelerometer 106, which can only be estimated moderately well. Such estimation is not acceptable to accurately compensate for centripetal acceleration. If centripetal acceleration is not compensated for, translational velocity estimate v would erroneously incorporate a DC offset value after motion. This would unacceptably result in the cursor's continued movement when the finger mouse 100 is again at rest. Practically, ignoring this DC offset and setting translational velocity estimate v to 0 effectively compensates for the centripetal acceleration. When the acceleration information is restricted to motion that is mostly linear, only translational acceleration is collected. Any rotationally coupled (i.e. due to centripetal acceleration) errors or noise are suppressed, resulting in a reasonable translational velocity estimate v after integration. [00121] High values for maximum rotation constant k2 mean that the process will not reject motions unless they are very angular in nature. However, high values for maximum rotation constant k2 will cause the process to accept accelerations with fairly high angular rates as be free of centripetal acceleration, which is a faulty assumption with annoying consequences: the cursor will fly across the screen due to the incorporated DC offset value. Low values for maximum rotation constant k2 mean that the process will reject most motions, because there is often some nonzero magnitude of the sensed angular rate, even when the user is trying very hard to move the finger mouse 100 very straight. Unacceptably low values for maximum rotation constant k2 result in the failure of the cursor to move when the intentionally moves the finger mouse 100. The correct value for maximum rotation constant k2 is a tradeoff between these two cases. As an example, a maximum rotation constant of approximately sixty degrees per second,
(k2 = 60°/s),
have been found to be acceptable.
[00122] As with acceleration discussed above, angular rate ω may be expressed in whatever units are appropriate to use with the gyroscope 107.
[00123] Provided the current sensed acceleration an is not minimal, and that the current sensed angular velocity ωη is not excessive, the current velocity estimate vn is updated by integrating the previous velocity estimate vn--1 forward with a leaky integrator:
Figure imgf000048_0001
[00124] Integration to update the current velocity estimate vn may undesirably integrate noise or roundoff error, or other errors, resulting in the current velocity estimate vn containing a small non-zero value even in the absence of detected motion when finger mouse 100 is at rest. As a result, the cursor will slowly drift across the screen. Inclusion of leak constant k3 gently sets these small nonzero values back to zero. Leak constant k3 is between 0 and 1, (k3 G (0,1)), so that in the absence of any detected motion, the velocity estimate v decays to 0. The higher the value of k3, the slower the decay of velocity. This decay ensures that translational velocity estimate v remains bounded, otherwise, cumulative integrations over time of small motions may force v to undesirably approach infinity. Leak constant k3 therefore gradually removes erroneous acceleration data introduced by other parts of the process.
[00125] Leak constant k3 should be selected to minimize its impact on translational velocity estimate v while finger mouse 100 is being operated by user. Ideally, with perfect sensors, or at least with perfect filtering of erroneous acceleration data, leak constant k3 could be set to 1. Practically, leak constant k3 should be set as closely to 1 as possible, while still effectively removing erroneous acceleration data not filtered out by other parts of the process. A leak constant k3 set between 0.9 and 0.9999 have been found to be acceptable in practice. For example, a leak constant k3 of 0.999 effectively removes erroneous acceleration data without significant distortion of the velocity signal.
[00126] Leak constant k3 values too far removed from 1, e.g. 0.5, cause significant distortion to the velocity signal. Low leak constant k3 values cause the leaky integrator function to cease functioning as an integrator that accumulates and integrates the velocity signal over time.
Rather, the integrator acts instead as a low-pass filter, slowing the response in the velocity signal and smoothing out noise.
[00127] Optionally, the value of k3 may be adjusted by the user, or by software, depending respectively upon user preference or software application.
[00128] In its entirety, the piecewise function for updating the current velocity estimate vn can be expressed as: k2
Figure imgf000050_0001
[00129] As discussed above, the values of constants kx, k2, and k3 place bounds on the types of motion of finger mouse 100 that will be tracked. When the translational velocity estimate is updated, the process proceeds to process block 1608.
[00130] At process block 1608, the step of updating the estimate of the translational position p occurs. The current estimate of the translational position pn is set to be the previous estimate of the translational position ρη--1 plus the change in position as estimated by the product of current translational velocity estimate vn and the change in time At since the previous iteration of the algorithm (generally equal to 1 divided by the selected sampling rate, e.g. 1/120 second), or
Figure imgf000050_0002
[00131] This current estimate of the translational position is stored. Once the estimate of the translational position is updated, the process proceeds to process block 1609.
[00132] At process block 1609, the step of sending the current gravity vector estimate gn, current translational velocity estimate vn, and current translational position estimate pn are sent to the PC for use in applications capable of using this 3D information. Once these data estimates are sent to the PC, the process proceeds to decision block 1610.
[00133] At decision block 1610, the process determines whether it should end or not. If it is determined that the process should end, the process advances to end block 1611, where the process is terminated. If it is determined that the process should not end, the process returns to process block 1604 to wait for another accelerometer and gyroscope data sample. In this way, the process continues looping to provide the PC with 3D position data until some termination state, such as a "power off or "disconnect" signal occurs to indicate that the process should end.
[00134] Referring now to Fig. 17, a the steps of a process 1700 for updating a gravity vector estimate are shown. Processing begins at start block 1701. Processing continues at process block 1702, where average error variable e0 is initialized to 0 on all three axes, which can be expressed as :
Figure imgf000051_0001
[00135] Process blocks 1701-02 of the process 1700 for updating a gravity vector estimate can be part of process block 1603 of FIG. 16 where the steps for operating a finger mouse 100 in three dimensions with 6 full degrees of freedom are shown.
Processing continues at process block 1703, where the gyroscope-based gravity vector estimate gw, an intermediate variable, is calculated. Gyroscope-based gravity vector estimate gw is set to the sum of previous gravity vector estimate gn--1 and the cross product of the current gyroscope sample ωη, and the previous gravity vector estimate gn--1, times the change in time At since the previous sampling (At is generally equal to 1 divided by the selected sampling rate, e.g. 1/120 second). This may be expressed as:
Figure imgf000051_0002
or, in an alternative equivalent expression employing the expanded view of a skew symmetric cross product matrix:
Figure imgf000051_0003
where
Figure imgf000052_0001
[00136] The letters within the brackets in the matrix indicate current sample data from particular gyroscope axes (i.e. con[x] indicates the angular velocity of the finger mouse 100 about the gyroscope 107 x axis, con[y] angular velocity about the y axis, and so on). Completion of this equation yields a gyroscope 107 based gravity vector estimate gw.
[00137] Gyroscope based gravity vector estimate gw is susceptible to cumulatively increasing error over time, and requires error correction. Current accelerometer sample an always includes within it an actual gravity vector measurement. That gravity vector component from an accelerometer sample a remains consistent from sample to sample. Therefore, the accelerometer samples a, over time, may be used to restrain cumulative error by forcing g to track the accelerometer samples a. As discussed below in more detail regarding process block 1706, a hysteresis controller (also known as an on-off controller) can be used as a filter, with a "tuning" constant k4, to force the gravity vector estimate gn to track actual gravity (reducing the mean difference between the gravity vector estimate gn and current accelerometer sample an over time). Alternatively, other methods such as low-pass filters or Kalman filters may be employed to force the gravity vector estimate gn to track actual gravity: any controller defined by any function of the error that forces the error to zero will work in substantially the same way.
However, the hysteresis controller described is advantageous in terms of performance for a given amount of computational effort.
[00138] Processing continues at process block 1704, where an intermediate variable for estimated error e is assigned the value of the current accelerometer sample an less gyroscope based gravity vector estimate gw, or e = a
[00139] Estimated error e is only an approximation. There are other variables upon which the gravity vector estimate may depend, such as drifting bias in the angular rate. Also, the accelerometer data, an, generally contains accelerations other than gravity. Thus, this measure of error is generally incomplete. However, estimated error e as defined produces gravity vector estimates that reliably track the low frequency profile of the accelerometer data while also rejecting the high frequency content of the accelerometer data, which often consists of linear accelerations (which should not be assumed to be part of the gravity vector) and noise.
[00140] Alternatively, any definition for estimated error e that causes the gravity vector estimate gn to track the accelerometer data an will also result in a substantially equivalent finger mouse system. For instance, estimated error e as defined above is the difference of the current accelerometer data anand the current gravity vector estimate gn, but it could also be defined as the integral of that quantity. The resulting gravity vector estimates will track the accelerometer data an in both cases, but the tracking response will have subtle differences. Using the integral of the difference of the accelerometer data an and the current gravity vector estimate gn for controller error instead of the difference itself will ensure that the gravity vector estimate gn tracks the accelerometer data an with no DC offset in the absence of motion, but using the integral of the quantity instead of the quantity itself may result in estimations that are more prone to oscillating, and the tracking response may be slower.
[00141] Processing continues at process block 1705, where mean error en is approximated by a running average, as follows:
Figure imgf000053_0001
[00142] Processing continues at process block 1706, where correction is applied to the gyroscope based gravity vector estimate gw in order to prevent integration of the estimated error e, and to yield a corrected gravity vector estimate gn. A correction or "tuning" constant k4 is applied to the gyroscope based gravity vector estimate gw whenever the mean error en deviates from 0. This corrected gravity vector estimate gn is calculated as:
(gn = gw + k4signum(en)),
k4 e (0, oo)
[00143] This operates as a hysteresis controller to reduce or eliminate inclusion of estimated error e in corrected gravity vector estimate gn. Tuning constant k4 may be selected as any positive value, but practically should not exceed 1 standard gravity, 9.8 m/s2. Higher values for tuning constant k4 make corrected gravity vector estimate gn track the actual gravity vector more quickly, but also cause more user-intended motion information to be discarded as error. The value for k4 and the algorithm step size, Δΐ, together define the slope at which current gravity vector estimate gn approaches current measured acceleration an: for each algorithm iteration, the gravity vector estimate will track at most k4 units closer to the measured acceleration data. The tracking slope thus becomes k4/At.
[00144] Values for tuning constant k4 selected from the range between about 0.6 m/s2 and about 9 m/s2 are acceptable. In practice, values for tuning constant k4 of approximately 6 m/s2 (around 10,000 in accelerometer units of 16,384ths of a gravity) have yielded good results. However, both the bandwith of the signal (i.e. the speed of operation of the finger mouse 100) to be detected, as well as changes in values for constants kx, k2, and k3, may affect the selection of the appropriate value for tuning constant k4. [00145] One can also use a different algorithm for obtaining gravity vector estimates and still have a functionally equivalent finger mouse system. Instead of defining the gravity vector corrections as the output of a control system, one can instead cast the problem as a filtering problem and design a Kalman filter or a complementary filter to combine information from the accelerometer and gyroscope to obtain gravity vector estimates. For instance, one can design a complementary filter that estimates the gravity vector as a sum of low-pass filtered
accelerometer data and the updates prescribed by gyroscope data via the finger mouse rotational kinematics. This complementary filter can be written as the following recursive equation
gn = Ci (gn-i + (ωη X gn-i) Δ ί) + (1 - where t ε [0, 1] is a filter coefficient that determines how much trust one places in the gyroscope-based portion of the estimate versus the accelerometer-based portion of the estimate. Such a filter represents an alternative and substantially equivalent method for implementing the process 1700 of Fig. 17 and process block 1606.
[00146] Processing continues at process block 1707, in which the newly calculated corrected gravity vector estimate gn is updated, stored, and returned to the process that requested it.
Processing then terminates at process block 1708. Process blocks 1703-1708 of the process 1700 for updating a gravity vector estimate can be part of process block 1606 of FIG. 16 where the steps for operating a finger mouse 100 in three dimensions with 6 full degrees of freedom are shown.
[00147] These and other configurations of the finger mouse 100 can be used as an
enhancement over current gaming controllers or remote control devices as would be recognized by those skilled in the art. The above descriptions of various components and methods are intended to illustrate specific examples and describe certain ways of making and using the devices disclosed and described here. These descriptions are neither intended to be nor should be taken as an exhaustive list of the possible ways in which these components can be made and used. A number of modifications, including substitutions of components between or among examples and variations among combinations can be made. Those modifications and variations should be apparent to those of ordinary skill in this area after having read this document.

Claims

CLAIMS What is claimed is:
1. A method, comprising: receiving data associated with at least a portion of a movement of a wearable motion sensing device; filtering the data to produce a rate of change of the movement of the wearable motion sensing device; integrating the rate of change of the movement to produce a measured movement of the wearable motion sensing device; using the measured movement and an accumulated movement to produce at least one of an updated position of the wearable motion sensing device and an updated orientation of the wearable motion sensing device; and updating a feature of a user interface of a computing device based at least in part upon one of the updated position and the updated orientation; wherein the movement of the wearable motion sensing device is at least one of a movement along one of three axes of a three-dimensional space and a movement about one of three axes of a three-dimensional space.
2. The method of claim 1, further comprising: scaling the data.
3. The method of claim 2, wherein the scaling is performed by a scaling function selected from the group consisting of a linear scaling function, an exponential scaling function, a scaling function that scales according to the formula A,'=((4/32768)*Ai)*9.81 where A, is an acceleration data for a single axis selected from the x, y, and z axes, and a scaling function that scales according to the formula Gi'=((500 dps/32786)*(pi/180))*G, where G, is an angular rate data for a single axis selected from the x, y, and z axes.
4. The method of claim 1, wherein the feature of the user interface of the computing device is a cursor position.
5. The method of claim 4, wherein the cursor position is updated based at least in part upon a scaled measured movement.
6. The method of claim 1, further comprising: receiving an indication of a sensor activation of the wearable motion sensing device, and wherein the feature is updated at least in part upon receiving the indication of the sensor activation.
7. The method of claim 1, wherein the filtering is performed by a filter selected from the group consisting of smoothing filter, a high pass filter, a Kalman filter or an iterative algorithm.
8. The method of claim 1, further comprising: determining an orientation of the wearable motion sensing device using a measurement of acceleration due to gravity on the wearable motion sensing device.
9. An apparatus, comprising: at least one accelerometer and at least one gyroscope configured to create data associated with at least a portion of a movement of a wearable motion sensing device; a processor configured to filter the data to produce a rate of change of the movement of the wearable motion sensing device, integrate the rate of change of the movement to produce a measured movement of the wearable motion sensing device, use the measured movement and an accumulated movement to produce at least one of an updated position of the wearable motion sensing device and an updated orientation of the wearable motion sensing device, and update a feature of a user interface of a computing device based at least in part upon one of the updated position and the updated orientation; an energy storage unit configured to supply electrical energy to the accelerometer, the gyroscope, and the processor; a communication module configured to exchange a data signal with the computing device; and a housing configured to at least partially enclose the accelerometer, the gyroscope, and the processor; wherein the movement of the wearable motion sensing device is at least one of a movement along one of three axes of a three-dimensional space and a movement about one of three axes of a three-dimensional space.
10. The apparatus of claim 9, wherein the processor is further configured to scale the data.
11. The apparatus of claim 10, wherein the feature of the user interface of the computing device is a cursor position.
12. The apparatus of claim 11, wherein the processor is further configured to receive an indication of a sensor activation of the wearable motion sensing device.
13. The apparatus of claim 12, wherein the processor is further configured to update the feature of the user interface of the computing device upon receiving an indication of a sensor activation of the wearable motion sensing device.
14. The apparatus of claim 13, wherein the processor us further configured to determine an orientation of the wearable motion sensing device using a measurement of acceleration due to gravity on the wearable motion sensing device.
PCT/US2016/038429 2015-06-18 2016-06-20 Operating a wearable mouse in three dimensions with six full degrees of freedom WO2016205821A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201562181262P 2015-06-18 2015-06-18
US62/181,262 2015-06-18

Publications (1)

Publication Number Publication Date
WO2016205821A1 true WO2016205821A1 (en) 2016-12-22

Family

ID=57546538

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2016/038429 WO2016205821A1 (en) 2015-06-18 2016-06-20 Operating a wearable mouse in three dimensions with six full degrees of freedom

Country Status (1)

Country Link
WO (1) WO2016205821A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080084385A1 (en) * 2006-10-06 2008-04-10 Microsoft Corporation Wearable computer pointing device
US20090278798A1 (en) * 2006-07-26 2009-11-12 The Research Foundation Of The State University Of New York Active Fingertip-Mounted Object Digitizer
US20090322676A1 (en) * 2007-09-07 2009-12-31 Apple Inc. Gui applications for use with 3d remote controller
US20120146899A1 (en) * 2010-12-14 2012-06-14 Chi Mei Communication Systems, Inc. Wearable pointing device
US20130027341A1 (en) * 2010-04-16 2013-01-31 Mastandrea Nicholas J Wearable motion sensing computing interface

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090278798A1 (en) * 2006-07-26 2009-11-12 The Research Foundation Of The State University Of New York Active Fingertip-Mounted Object Digitizer
US20080084385A1 (en) * 2006-10-06 2008-04-10 Microsoft Corporation Wearable computer pointing device
US20090322676A1 (en) * 2007-09-07 2009-12-31 Apple Inc. Gui applications for use with 3d remote controller
US20130027341A1 (en) * 2010-04-16 2013-01-31 Mastandrea Nicholas J Wearable motion sensing computing interface
US20120146899A1 (en) * 2010-12-14 2012-06-14 Chi Mei Communication Systems, Inc. Wearable pointing device

Similar Documents

Publication Publication Date Title
US10168775B2 (en) Wearable motion sensing computing interface
US9110505B2 (en) Wearable motion sensing computing interface
US11009951B2 (en) Wearable muscle interface systems, devices and methods that interact with content displayed on an electronic display
US10838495B2 (en) Devices for controlling computers based on motions and positions of hands
US10061458B1 (en) Hand-held controller using capacitive touch pad
KR102131977B1 (en) Wearable wireless hmi device
US9152236B2 (en) Apparatus for remotely controlling another apparatus and having self-orientating capability
WO2015153690A1 (en) Wearable motion sensing computing interface
US10183217B2 (en) Hand-held controller using segmented capacitive touch trigger
US8570273B1 (en) Input device configured to control a computing device
JP5440176B2 (en) Input device, control device, control system, handheld device, and control method
EP1958045B1 (en) System including a hand-held wireless graphical input device and a computer device.
EP2919481A1 (en) Remote control device, display device, and method for controlling same
JP2012508408A (en) Mouse controlled through finger movement in the air
US8246462B1 (en) Hall-effect finger-mounted computer input device
US20110199301A1 (en) Sensor-based Pointing Device for Natural Input and Interaction
Pandit et al. A simple wearable hand gesture recognition device using iMEMS
CN105302451A (en) Gesture input device
WO2016205821A1 (en) Operating a wearable mouse in three dimensions with six full degrees of freedom
KR102659301B1 (en) Smart ring and method for smart ring control
JP2014063221A (en) Control device, control method of control device, device to be controlled, electronic apparatus, control program and recording medium
Chen et al. MobiRing: A Finger-Worn Wireless Motion Tracker
EP3388919B1 (en) Hand-held controller using segmented capacitive touch trigger
Mehta et al. Handicap Assistance Device for Appliance Control Using User-Defined Gestures
EP3392741A1 (en) Hand-held controller using capacitive touch pad

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16812641

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16812641

Country of ref document: EP

Kind code of ref document: A1