Patent Description:
Millions of people suffer from disorders that may limit their upper-extremity mobility. These disorders include diseases such as cerebral palsy, spinal cord injuries, Huntington's Disease, or otherwise. Currently, there are limited solutions for those suffering from these disorders. Many rely on external assistance to perform activities of daily living including feeding, cooking, or grooming. There is a strong unmet need to provide assistance to these people to improve overall independence. Increased independence reduces care-giver costs and is associated with more positive long-term health outcomes. <CIT> shows a handheld tool according to the preamble of claim <NUM>.

Non-limiting and non-exhaustive embodiments of the invention are described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various views unless otherwise specified. Not all instances of an element are necessarily labeled so as not to clutter the drawings where appropriate. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles being described.

Embodiments of a system, apparatus, and method of operation for a handheld tool with behavior control modes are described herein. In the following description numerous specific details are set forth to provide a thorough understanding of the embodiments. One skilled in the relevant art will recognize, however, that the techniques described herein can be practiced without one or more of the specific details, or with other methods, components, materials, etc. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring certain aspects.

<FIG> is a perspective view illustration of a handheld tool <NUM>, in accordance with an embodiment of the disclosure. Handheld tool <NUM> is an articulated user-assistive device having different behavior control modes associated with different user-assistive implements (a demonstrative makeup applicator implement is illustrated in <FIG>). Each behavior control mode has a separate behavior routine stored in handheld tool <NUM> that aides users having limited upper-extremity mobility perform certain daily tasks. For example, these tasks may include personal grooming (e.g., applying makeup, brushing teeth, etc.), cooking, eating, drinking, or otherwise. The illustrated embodiment of handheld tool <NUM> includes a user-assistive implement <NUM> (e.g., a makeup applicator is illustrated), an implement mount <NUM>, a handle <NUM>, an actuator assembly <NUM>, sensors <NUM> and <NUM>, a control module <NUM>, and a power source <NUM>. The illustrated embodiment of actuator assembly <NUM> includes motors <NUM> and <NUM>.

<FIG> illustrate various other examples of a detachable user-assistive implement. For example, <FIG> illustrates a toothbrush implement <NUM>, <FIG> illustrates a cooking utensil implement <NUM>, and <FIG> illustrates a drink holder implement <NUM>.

In the illustrated embodiment, implement mount <NUM> provides a detachable mount location for various types of user-assistive implements <NUM>. In one embodiment, handle <NUM> and implement mount <NUM> are discrete rigid bodies of the handheld tool <NUM> connected by rotary joints of actuator assembly <NUM> that enable movement of implement mount <NUM>, and thus user-assistive implement <NUM>, in two rotational degrees of freedom relative to handle <NUM>.

Handheld tool <NUM> is capable of independently detecting and tracking the absolute positions (relative to Earth's frame of reference) of handle <NUM> and user-assistive implement <NUM> using sensors <NUM> and <NUM>, respectively. Control module <NUM> uses the real-time position/orientation data output from sensors <NUM> and <NUM> to control actuator assembly <NUM> to manipulate user-assistive implement <NUM> and aid the user perform one or more of the tasks described above, despite the user's limited mobility. In some embodiments, handheld tool <NUM> may even be capable of detecting and compensating (e.g., stabilizing) for unintentional muscle movement (e.g. tremors).

Handheld tool <NUM> includes handle <NUM>, which also functions as a housing that contains various other subcomponents of handheld tool <NUM>, such as power source <NUM>, control module <NUM>, and at least a portion of actuator assembly <NUM>. Handheld tool <NUM> also includes implement mount <NUM> coupled to the housing <NUM> via actuator assembly <NUM>, as discussed in greater detail below. Implement mount <NUM> is configured to accept a different user-assistive implements <NUM> (e.g., makeup applicator, toothbrush, cooking utensil, drink holder, etc.) to its end distal from handle <NUM>.

In one embodiment, implement mount <NUM> uses one of a friction, snap, magnet, screw, or other form of locking mechanism to provide a detachable and rigid mounting point for user-assistive implements <NUM>. <FIG> illustrates a mounting end <NUM> of user-assistive implement <NUM>, while <FIG> illustrates the mounting interface <NUM> of implement mount <NUM>. As illustrated both mounting interface <NUM> and mounting end <NUM> include contacts <NUM> that align with each and to form electrical contact when mounting end <NUM> is inserted into mounting interface <NUM>. In one embodiment, electrical contacts <NUM> of mounting interface <NUM> are spring loaded pogo-pins that make physical contact with electrical contacts <NUM> within mounting end <NUM> of user-assistive implement <NUM>. The illustrated embodiment includes three electrical contacts <NUM>: a power contact, a ground contact, and a identifier (ID) contact. The power and ground contacts provide power to mechanized implements (e.g., electric toothbrush implement). In one embodiment, the ID contact of user-assistive implement <NUM> is coupled to a resistor having a resistance value that is interrogated by control module <NUM> to identify the type of user-assistive implement <NUM> that is currently attached. For example, control module <NUM> may store a plurality of behavior routines associated with a variety of different types of user-assistive implement ends <NUM>. By measuring the resistance value of the ID contact and comparing the resistance value to a table of resistance values, the correct behavior routine may be loaded and executed. Other numbers of contacts (more or less) and physical form factors for the contacts may be used.

As illustrated, implement mount <NUM> is coupled to the handle <NUM> via motors <NUM> and <NUM> of actuator assembly <NUM>. Motor <NUM> is rigidly mounted to handle <NUM> and orientated to rotate both motor <NUM> and implement mount <NUM> in a first degree of freedom about rotational axis Z, as illustrated by movement <NUM> in <FIG>. Motor <NUM> connects the output of motor <NUM> to implement mount <NUM> and controls movement <NUM> of implement mount <NUM> in a second degree of freedom about a rotational axis Y, as illustrated in <FIG> and <FIG>.

The illustrated embodiment of handheld tool <NUM> further includes at least two sensors (e.g., sensor <NUM> placed along or within handle <NUM> and sensor <NUM> placed along or within implement mount <NUM>). In one embodiment, each of the sensors <NUM> and <NUM> are inertial measuring units (IMUs) capable of providing measurements of orientations, angular rate of movement, force, etc. of the bodies in which they are placed. In one embodiment, each IMU is a six degree of freedom IMU having at least an accelerometer and a gyroscope. In one embodiment, the sensors <NUM> and <NUM> respectively collect measurements during use of the handheld tool <NUM> to independently determine an orientation of the handle <NUM> and implement mount <NUM>.

In embodiments, handheld tool <NUM> may further include a portable power source <NUM> to power the control module <NUM>, actuator assembly <NUM>, and powered user-assistive implements (e.g., toothbrush implement <NUM> in <FIG>). Power source <NUM> may utilize a variety of options including but not limited to a rechargeable battery, a solar panel, etc..

Sensors <NUM> and <NUM> take measurements to determine an orientation of handle <NUM> and an orientation of the implement mount <NUM> and/or implement <NUM>. Control module <NUM>, based on these two orientations, can determine the relative orientations of the parts of the handheld tool <NUM>. Furthermore, the relative orientations of the parts can be used to determine the position of the joints that couple the handle <NUM> with the implement mount <NUM> and the current orientation of the user-assistive implement <NUM> relative to the handle <NUM>. As will be discussed in greater detail below, based on the measured orientations and expected orientations between parts of the handheld tool <NUM>, the control module <NUM> generates control signals (e.g., motor commands) for the actuator assembly <NUM> that correct and/or maintain an expected relative orientation between the different parts of handheld tool <NUM> or maintains an absolute orientation of user-assistive implement <NUM>. These control signals can be manipulated according to various behavior routines to aid the user in the performance of various tasks associated with a given type of user-assistive implement <NUM>. In one embodiment, the control signals may include voltage commands generated by control module <NUM> that drive the motors of the actuator assembly <NUM> to turn their respective gears in a desired direction, at a desired speed, with a desired acceleration, etc..

One of ordinary skill in the art readily recognizes that a system and method in accordance with the present disclosure may utilize various implementations of control module <NUM>, sensors <NUM> and <NUM>, actuator assembly <NUM>, etc. that would be within the spirit and scope of the present disclosure. In one embodiment, control module <NUM> comprises an electrical system, capable of producing an electrical response from sensor inputs, such as a programmable microcontroller, a field-programmable gate array (FPGA), an application specific integrated circuit ("ASIC"), or otherwise. In one embodiment, control module <NUM> comprises an <NUM>-bit ATMEGA8A programmable microcontroller manufactured by Atmel due to its overall low-cost, low-power consumption and ability to be utilized in high-volume applications.

<FIG> is a functional block illustration of various subsystems of handheld tool <NUM>, in accordance with an embodiment of the disclosure. The illustrated embodiment of handheld tool <NUM> includes actuator assembly <NUM> including motors <NUM> and <NUM>, sensors <NUM> and <NUM>, power source <NUM>, and control module <NUM>. The illustrated embodiment of control module <NUM> includes a controller <NUM>, memory <NUM> storing behavior routines <NUM>, a communication interface <NUM>, and a user interface <NUM>.

As discussed above, controller <NUM> is coupled to sensors <NUM> and <NUM> to received orientation/motion information and output control signals for manipulating motors <NUM> and <NUM>. The control signals are generated according to the instructions of behavior routines <NUM> stored in memory <NUM> with feedback from sensors <NUM> and <NUM>. Communication interface <NUM> may include a wired connection (e.g., USB interface) or wireless connection (e.g., WiFi, Bluetooth, etc.). In one embodiment, communication interface <NUM> provides a wireless connection to a mobile device <NUM> (e.g., smart phone). The wireless connection can be used to receive user commands while executing behavior routines <NUM>, provide software updates to controller <NUM>, or update behavior routines <NUM>. The user commands may be tactile inputs via a screen of mobile device <NUM> or voice commands. Communication interface <NUM> may also be used to communicate operational adjustments to handheld tool <NUM>. For example, an application running on mobile device <NUM> may adjust a level of assistance applied to actuator assembly <NUM> as a user regains their upper extremity dexterity/mobility. A doctor or physical therapist may monitor assistance levels through cloud connectivity and remotely adjust assistance-level settings.

In one embodiment, control module <NUM> also provides an integrated user interface <NUM> to received direct user commands. User interface <NUM> may include one or more of a microphone for voice commands or a tactile interface (e.g., buttons, touch sensitive screen, pressure sensors to measure squeeze commands, etc.) for touch commands.

<FIG> is a flow chart illustrating a process <NUM> of general operation for handheld tool <NUM>, in accordance with an embodiment of the disclosure. Process <NUM> is described with reference to functional elements of handheld tool <NUM> illustrated in <FIG> and <FIG>. The order in which some or all of the process blocks appear in process <NUM> should not be deemed limiting. Rather, one of ordinary skill in the art having the benefit of the present disclosure will understand that some of the process blocks may be executed in a variety of orders not illustrated, or even in parallel.

In a process block <NUM>, the user attaches a desired user-assistive implement to mounting end <NUM>. The selected user-assistive implement may include any one of user-assistive implements <NUM>, <NUM>, <NUM>, <NUM>, or otherwise. In process block <NUM>, controller <NUM> interrogates the attached user-assistive implement to determine its type. In one embodiment, interrogation includes measuring a resistance value of a resistor disposed within the user-assistive implement through an ID contact (e.g., one of electrical contacts <NUM>). The measured resistance value is then compared against a table of resistance values that correlates resistance values or ranges to different types of user-assistive implements. Once controller <NUM> determines the type of the connected user-assistive implement, handheld tool <NUM> is entered into a corresponding behavior control mode by loading and executing an associated behavior routine (process block <NUM>).

In a process block <NUM>, the articulating mechanisms of actuator assembly <NUM> move the user-assistive implement into a default position/orientation associated with the selected behavior control mode. In various embodiments, the default position may be an initial position/orientation, may depend upon the current orientation of handle <NUM> (e.g., is handle upright, inverted, near horizontal, etc.), and/or may including active feedback control (e.g., auto-leveling, auto-orientation control, etc.). In process block <NUM>, the specific behavior routine associated with the type of user-assistive implement is executed. <FIG> describe various examples of behavior routines associated with different types of user-assistive implements. However, in general, each behavior routine includes some form of auto-orientation control, which is tailored according to the specific use-case of a given user-assistive implement. Auto-orientation control may include auto-leveling, absolute orientation control in one or more degrees of freedom relative to Earth's frame of reference, and/or relative orientation control relative to handle <NUM>.

In a decision block <NUM>, controller <NUM> continuously monitors for a user lock/unlock command. Acknowledgment of a lock command causes the actuator assembly <NUM> to lock user-assistive implement (process block <NUM>) either at its current orientation relative to handle <NUM> or move to a default lock position and hold that position relative to handle <NUM>. Acknowledgement of an unlock commend (decision block <NUM>) causes actuator assembly <NUM> to unlock the user-assistive implement (process block <NUM>) and resume execution of the loaded behavior routine (process block <NUM>). User commands may be acknowledged as an intentional shake. The output of sensor <NUM> and/or sensor <NUM> may be monitored and filtered by controller <NUM> to identify an intentional shack. In another embodiment, the commands may be received as a voice command with a microphone either integrated into handheld tool <NUM> (e.g., user interface <NUM>) or using the microphone of a wirelessly connected mobile device <NUM>. In yet other embodiments, any of the native interfaces of mobile device <NUM> may be used to receive user commands.

<FIG> is a flow chart illustrating a makeup applicator behavior routine <NUM> for use with a makeup applicator implement, in accordance with an embodiment of the disclosure. The order in which some or all of the process blocks appear in routine/process <NUM> should not be deemed limiting. Rather, one of ordinary skill in the art having the benefit of the present disclosure will understand that some of the process blocks may be executed in a variety of orders not illustrated, or even in parallel.

In a process block <NUM>, controller <NUM> reads the output sensor <NUM> to continuously monitor the orientation of handle <NUM>. In decision block <NUM>, if handle <NUM> is determined to be between a horizontal position and a near vertical threshold position, then controller <NUM> operates actuator assembly <NUM> to actively level user-assistive implement <NUM>. In one embodiment, the orientation of handle <NUM> is measured with reference to a longitudinal axis <NUM> extending down a centerline of handle <NUM>. The near vertical threshold position may have a predetermined value (e.g., <NUM> degrees from vertical) or be a user defined value. Accordingly, despite a limited range of motion of handle <NUM> between the horizontal position and the near vertical threshold position, controller <NUM> operates actuator assembly <NUM> to ensure a center axis <NUM> of user-assistive implement <NUM> is maintained level at or near horizontal. However, if handle <NUM> is not between the horizontal position and the near vertical threshold position, then process <NUM> continues to decision block <NUM>.

In decision block <NUM>, if controller <NUM> determines that handle <NUM> is between the near vertical threshold position and an absolute vertical position, then the relative position between handle <NUM> and user-assistive implement <NUM> is locked (process block <NUM>). In other words, the relative position between handle <NUM> and user-assistive implement <NUM> at the moment handle <NUM> crosses over the near vertical threshold position is held or locked for the time that handle <NUM> remains between absolute vertical and the near vertical threshold position. However, if handle <NUM> is not between the horizontal position and the absolute vertical position, then process <NUM> continues to a decision block <NUM>.

In decision block <NUM>, if handle <NUM> is dipped into an inverted position below the horizontal position (i.e., user-assistive implement <NUM> pointing downwards), then control module <NUM> operates actuator assembly <NUM> to straighten user-assistive implement <NUM> (process block <NUM>). In other words, centerline axes <NUM> and <NUM> are aligned parallel to each other. Once straightened, actuator assembly <NUM> rigidly holds the straightened position until handle <NUM> rises above the horizontal position (process block <NUM>). The straightening provided in process block <NUM>, facilitates the user dipping user-assistive implement <NUM> into a makeup bottle, the active leveling provided in process block <NUM> facilitates level makeup application onto the body (e.g., eyelashes, eyebrows, eyelids, lips, etc.), and holding the locked position in process block <NUM> enables non-level makeup application.

<FIG> is a flow chart illustrating a toothbrush behavior routine <NUM> for use with toothbrush implement <NUM>, in accordance with an embodiment of the disclosure. The order in which some or all of the process blocks appear in routine/process <NUM> should not be deemed limiting. Rather, one of ordinary skill in the art having the benefit of the present disclosure will understand that some of the process blocks may be executed in a variety of orders not illustrated, or even in parallel.

In a process block <NUM>, controller <NUM> activates the cleaning motion for bristles <NUM> (see <FIG>) on toothbrush implement <NUM>. In one embodiment, power is delivered to bristles <NUM> via electrical contacts <NUM>. In a process block <NUM>, toothbrush implement <NUM> is moved into a position associated with a first tooth bank to clean. A tooth bank is one side of a group of teeth that are cleaned using substantially the same handle orientation. For example, the outside of the upper-left row of teeth (e.g., upper left molars, bicuspids, lateral, and central) may correspond to one bank of teeth. In a process block <NUM>, controller <NUM> operates actuator assembly <NUM> to maintain the correct orientation of toothbrush implement <NUM> while the current bank of teeth is cleaned. In process block <NUM>, the user moves bristles <NUM> along the current tooth bank for cleaning. After the current tooth bank is cleaned (decision block <NUM>), controller <NUM> moves toothbrush implement <NUM> to the next position/orientation associated with the next tooth bank (process <NUM>). The completion of a given tooth bank may occur after experiation of fixed period of time (e.g., timer) or after receiving a user command to move to the next tooth bank. A user command may be received as a voice command, an intentional shake of handheld tool <NUM>, or by other means. Cleaning and repositioning continue until all tooth banks have been cleaned (decision block <NUM>). Once all tooth banks are cleaned, controller <NUM> returns toothbrush implement <NUM> to its default position and disables the bristle motion.

It should be appreciated that toothbrush behavior routine <NUM> may include orientation settings for a number of tooth bank positions. For example, the upper-left, upper-right, lower-left, and lower-right rows of teeth (each including molars, bicuspids, a lateral tooth, and a central tooth) may each have an inside and outside bank of teeth, corresponding to a total of eight banks of teeth. In other embodiments, the outside of the front teeth may correspond to yet a ninth bank of teeth while the inside of the upper-front and lower-front teeth may each correspond to additional banks for a total of eleven banks of teeth. The particular number of tooth banks may be customized or adjusted as desired.

<FIG> is a flow chart illustrating a cooking utensil behavior routine <NUM> for use with cooking utensil implement <NUM>, in accordance with an embodiment of the disclosure. The order in which some or all of the process blocks appear in routine/process <NUM> should not be deemed limiting. Rather, one of ordinary skill in the art having the benefit of the present disclosure will understand that some of the process blocks may be executed in a variety of orders not illustrated, or even in parallel.

In a process block <NUM>, controller <NUM> uses the output of sensors <NUM> and <NUM> to monitor the orientation of handle <NUM> and cooking utensil implement <NUM>. Based upon the feedback from sensors <NUM> and <NUM>, controller <NUM> operates actuator assembly <NUM> to maintain a slight downward pitch orientation (e.g., <NUM>-degrees below level) of cooking utensil implement <NUM> as a default position for routine <NUM> (process block <NUM>). In one embodiment, the slight downward pitch orientation of cooking utensil implement <NUM> is maintained despite a relatively large deviation in the orientation of handle <NUM>. This enables a user will relatively low upper-extremity motor control to achieve the correct orientation of cooking utensil implement <NUM> for sliding or scooping under food. Although <FIG> illustrates cooking utensil implement <NUM> as a spatula, it is anticipated that cooking utensil implement <NUM> may be a spoon or scoop, a fork, tongs, or otherwise.

With a food item on the end of cooking utensil implement <NUM>, the user can issue a flip/rotate command to flip over the food. The command may be issued as a voice command, shaking or squeezing handle <NUM>, via mobile device <NUM>, or otherwise. In a decision block <NUM>, controller <NUM> monitors for the flip command. Upon receipt of a flip command (decision block <NUM>), controller <NUM> operates actuator assembly <NUM> to rotate cooking utensil implement <NUM> (process block <NUM>) and turn over the food item. After rotating cooking utensil implement <NUM>, controller <NUM> returns cooking utensil implement <NUM> to its default position.

<FIG> is a flow chart illustrating a drink holder behavior routine for use with drink holder implement <NUM>, in accordance with an embodiment of the disclosure. The order in which some or all of the process blocks appear in routine/process <NUM> should not be deemed limiting. Rather, one of ordinary skill in the art having the benefit of the present disclosure will understand that some of the process blocks may be executed in a variety of orders not illustrated, or even in parallel.

In a process block <NUM>, controller <NUM> and sensor <NUM> continuously monitor the orientation of handle <NUM>. In decision block <NUM>, if handle <NUM> is rotated less than a rotational threshold and tilted less than tilting threshold, then the controller <NUM> operates actuator assembly <NUM> to actively level drink holder implement <NUM> in both rotational and tilt axes (process block <NUM>). In other words, controller <NUM> acts to maintain a level drinking cup despite a user with limited upper-extremity control rotating or tilting handle <NUM> within prescribed thresholds. In some embodiments, the rotational and tilt axes are orthogonal rotational axis relative to handle <NUM>. In other embodiments, the rotational and tilt axes are orthogonal rotational axis relative to drink holder implement <NUM>.

If however, the user rotates handle <NUM> past the rotational threshold (decision block <NUM>), then controller <NUM> operates actuator assembly <NUM> to lock the rotational position of drink holder implement <NUM> relative to handle <NUM> (process block <NUM>). Thus, the rotational motion is a rotation towards the user's mouth. In one embodiment, the rotational axis is a <NUM>-degree rotation towards the user's mouth. Accordingly, if the user rotates handle <NUM> past <NUM>-degrees towards the user's mouth, then controller <NUM> stops actively leveling drink holder implement <NUM>, locks its current rotational position upon crossing the threshold, and allows the user to rotate drink holder implement <NUM> for drinking. In one embodiment, just the rotational position is locked while continuing to actively level any tilting rotation. In another embodiment, both the rotational and tilt positions are locked.

If however, the user tilts handle <NUM> past a tilt threshold close to vertical (e.g., within <NUM>-degrees of vertical or other threshold values whether greater or smaller), then controller <NUM> operates actuator assembly <NUM> to lock both the rotational position and the tilt position. Alternatively, the user may issue a locking command as discussed in connection with decision block <NUM> and process block <NUM> in general operation process <NUM>.

A tangible machine-readable storage medium includes any mechanism that provides (i.e., stores) information in a non-transitory form accessible by a machine (e.g., a computer, network device, personal digital assistant, manufacturing tool, any device with a set of one or more processors, etc.). For example, a machine-readable storage medium includes recordable/non-recordable media (e.g., read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.).

Claim 1:
A handheld tool (<NUM>),
comprising: a handle (<NUM>);
an implement mount (<NUM>) to detachably accept and hold a user-assistive implement (<NUM>);
an actuator assembly (<NUM>) mounted to the handle to physically manipulate the implement mount (<NUM>) relative to the handle (<NUM>);
a first sensor (<NUM>) disposed to sense an orientation of the handle (<NUM>);
a second sensor (<NUM>) disposed to sense an orientation of the user-assistive implement (<NUM>);
a controller (<NUM>) coupled to the actuator assembly (<NUM>) and the first and second sensors (<NUM>, <NUM>); and memory (<NUM>) coupled to the controller (<NUM>), characterized in that the memory stores instructions that, when executed by the controller (<NUM>), causes the handheld tool (<NUM>) to perform operations including:
identifying, via contacts (<NUM>) at a mounting interface (<NUM>) of the implement mount (<NUM>) and a mounting end (<NUM>) of the user-assistive implement (<NUM>) that align with each other to form an electrical contact when the mounting end (<NUM>) is inserted into the mounting interface (<NUM>), a type of the user-assistive implement (<NUM>) currently attached to the implement mount (<NUM>);
selecting a behavior routine (<NUM>) based upon the type of the user-assistive implement (<NUM>) identified; and
manipulating the user-assistive implement (<NUM>) relative to the handle (<NUM>) according to the behavior routine to aid performance of a task with the handheld tool (<NUM>).