SYSTEMS AND METHODS FOR ASSISTING MOVEMENT USING ROBOTIC LIMBS
20250345926 ยท 2025-11-13
Assignee
Inventors
Cpc classification
B64G2004/005
PERFORMING OPERATIONS; TRANSPORTING
B64G4/00
PERFORMING OPERATIONS; TRANSPORTING
B25J9/0006
PERFORMING OPERATIONS; TRANSPORTING
International classification
B25J9/00
PERFORMING OPERATIONS; TRANSPORTING
B25J13/08
PERFORMING OPERATIONS; TRANSPORTING
Abstract
Systems and methods for assisting movement of a user and/or a base connected to one or more robotic limbs are described herein. Forces may be applied to one or more robotic limbs to control movement of the base. The base may be attached to a user, or other payload, and forces applied to the base due to externally applied forces, such as those applied by a user interacting with an environment, may result in reactionary forces being applied to the one or more robotic limbs. These forces may be detected and used to determine one or more commands for operation of the one or more robotic limbs. Optionally, the robotic limbs may include one or more end effectors which may removably couple or otherwise be held substantially stationary relative to an environment to form a closed loop kinematic chain.
Claims
1. A system for assisting movement of a user comprising: a base; at least two robotic limbs attached to the base; one or more sensors configured to detect forces applied to the robotic limbs; and at least one processor configured to: obtain the forces detected by the one or more sensors; determine a direction of the forces relative to the base; determine a command based at least in part on the direction of the forces; and operate the at least two robotic limbs based at least in part on the command.
2. The system of claim 1, wherein determining the direction of the forces relative to the base comprises transforming the forces from reference frames associated with the at least two robotic limbs to a reference frame associated with the base.
3. The system of claim 2, wherein the at least one processor is further configured to sum the transformed forces from the at least two robotic limbs to obtain a net force applied to the base to determine the command.
4. The system of claim 3, wherein the processor is further configured to determine a magnitude of the net force to determine the command.
5. The system of claim 1, wherein the command is a velocity command of the base including a commanded direction and magnitude.
6. The system of claim 5, wherein the at least one processor is further configured to determine one or more limb commands for the at least two robotic limbs based at least in part on the velocity command.
7. The system of claim 5, wherein the commanded direction of the velocity command is at least partially oriented in a direction of a net force applied to the base by the forces.
8. The system of claim 5, wherein the one or more sensors are configured to detect a velocity of the base, and wherein the processor is further configured to compare the velocity command to the detected velocity and alter the velocity command based on the detected velocity.
9. The system of claim 8, wherein altering the velocity command based on the detected velocity results in a decay in the velocity command over time.
10. The system of claim 1, wherein the base is coupled to a space suit.
11. The system of claim 1, further comprising one or more end effectors coupled to the at least two robotic limbs, wherein the one or more end effectors are configured to removably couple with an environment, and wherein the at least two robotic limbs are configured to form a closed kinematic chain with the base and the environment.
12. A method for assisting movement of a user comprising: detecting forces applied to at least one robotic limb; determining a direction of the detected forces relative to a base attached to the at least one robotic limb; determining a command based at least in part on the direction of the forces; and operating the robotic limb based at least in part on the command.
13. The method of claim 12, wherein determining the direction of the forces comprises transforming the forces from a reference frame of the at least one robotic limb to a reference frame of the base.
14. The method of claim 13, wherein the at least one robotic limb is at least two robotic limbs, and further comprising summing the transformed to obtain a net force applied to the base to determine the command.
15. The method of claim 14, further comprising determining a magnitude of the net force to determine the command.
16. The method of claim 12, wherein the command is a velocity command of the base including a commanded direction and magnitude.
17. The method of claim 16, further comprising determining one or more limb commands for the at least two robotic limbs based at least in part on the velocity command.
18. The method of claim 16, wherein the commanded direction of the velocity command is at least partially oriented in a direction of a net force applied to the base by the forces.
19. The method of claim 16, further comprising detecting a velocity of the base, and further comprising comparing the velocity command to the detected velocity and altering the velocity command based on the detected velocity.
20. The method of claim 19, wherein altering the velocity command based on the detected velocity results in a decay in the velocity command over time.
21. The method of claim 12, further comprising removably coupling one or more end effectors of the at least one robotic limb with the environment.
22. A non-transitory computer readable media including processor executable instructions that when executed by one or more processors perform the method of claim 12.
Description
BRIEF DESCRIPTION OF DRAWINGS
[0008] The accompanying drawings are not intended to be drawn to scale. In the drawings, each identical or nearly identical component that is illustrated in various figures may be represented by a like numeral. For purposes of clarity, not every component may be labeled in every drawing. In the drawings:
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
DETAILED DESCRIPTION
[0015] In various situations, a user may perform a task using their hands and may be required to perform the task in a specific location, requiring the user to move a distance to reach the specific location and possibly maintain a pose in order to complete the task. This may require the user to exert effort while moving to the specific location, maintaining the pose, and/or completing the task. Accordingly, there is opportunity for the user to become fatigued as a result of exerting effort, which may be detrimental to the results and/or quality of the task being completed. Alternatively or additionally, maintaining the pose of the user may either be difficult and/or exhibit a potential safety risk to the user. One such situation includes an astronaut performing an Extra-Vehicular Activity (EVA) such as maintenance task on an exterior of a space station. EVAs such as the maintenance task performed on the exterior of the space station are especially complex and costly missions associated with spaceflight missions. EVAs are also inherently risky, as an astronaut may be in an environment without additional oxygen for extended periods of time, thereby requiring the astronaut to rely on a finite quantity of oxygen supplied by a space suit. As the astronaut exerts effort, they may need to breathe heavily, which generates carbon dioxide and depletes the finite oxygen supply and poses a risk of asphyxiation if sufficiently large amounts of carbon dioxide are generated. Accordingly, it is desirable to reduce the effort of a user such as an astronaut while moving and/or maintaining a pose while completing a task in various environments including during EVA.
[0016] One existing approach to assisting an astronaut perform an EVA includes a machine that may hold the feet of the astronaut and articulate about a spacecraft to move the astronaut to a certain location. However, this approach requires a complicated and burdensome control process as well as the use of machines that are costly and physically large, taking up excessive amounts of valuable space. Another existing approach to EVAs includes tethering the astronaut to the spacecraft, which is also complicated as well as time and effort intensive for the astronaut to repeated tether and untether themselves from various locations as they perform an EVA.
[0017] In view of the above, the Inventors have recognized the benefits associated with employing a supernumerary robotic limb to assist the user in moving and/or maintaining a pose to reduce the effort and associated fatigue for a user. However, in instances where the user is attached to the supernumerary robotic limb, moving may be difficult and/or the user may actually exert additional effort to move the supernumerary robotic limb, thereby increasing the opportunity for fatigue. Further, controlling the supernumerary robotic limb may be complicated and/or unintuitive for the user, thereby increasing training time and/or increasing the likelihood of errors while controlling the supernumerary robotic limb. Accordingly, the Inventors have recognized a need for a supernumerary robotic limb system that assists movement of a user in a simple and intuitive manner.
[0018] In view of the above, the Inventors have recognized the benefits associated with controlling operation of one or more supernumerary robotic limbs configured to be attached to a user based at least in part on reaction forces applied to the one or more supernumerary robotic limbs during interaction of the user with the surrounding environment. For example, a system for assisting movement of a user may include one or more robotic limbs with end effectors that may have forces applied to the end effectors by a user and/or by the environment during use. The applied forces may be result in reaction forces being applied to the end effectors associated with the distal portions of the one or more robotic limbs interacting with the environment. As elaborated on further below, the use of the reaction forces may help to facilitate control of the one or more robotic limbs based on intuitive and natural interactions of the user with the environment.
[0019] As detailed further below, in some embodiments, a system including two or more robotic limbs may advantageously form a closed loop kinematic chain which may facilitate the measurement and use of the above noted reaction forces for controlling operation of a system. As discussed further elsewhere, the closed loop kinematic chain may be formed by coupling the end effectors to an environment. The applied forces may be detected using any appropriate combination of one or more sensors. Directions associated with the applied forces may be estimated using the detected forces. The robotic limbs may be coupled to a base, and the detected forces on the robotic limbs may be combined to determine forces and corresponding directions of the forces applied to the base. A command may be determined based at least in part on the identified direction of the forces applied to the base. For example, a user may apply forces to the robotic limbs and forces with corresponding directions applied to the base may be determined to create velocity commands to operate the robotic limbs. In some embodiments, a velocity command may including both a direction and magnitude of a commanded velocity for movement of the base and/or user. Such operation offers a simple control approach where in some embodiments a user may move themselves in a direction they wish to move, and the system will allow safe and low-effort movement in the desired direction. Optionally, velocity commands can be determined at least in part based on magnitudes of forces applied to the robotic limbs and/or end effectors. For example, a direction of the velocity command may be at least partially oriented in, and in some instances parallel to, a direction of a net force applied to the base by the robotic limbs. Velocity commands may comprise a displacement in a desired direction over time, i.e., a direction and magnitude. This velocity command may be appropriately transformed into one or more commands for the robotic limbs, including one or more commands for the individual joints of the robotic limbs, to provide the desired combined motion of the robotic limbs and associated base as elaborated on further below.
[0020] Forces applied to the robotic limbs, end effectors, base, and any other appropriate element of the system as described herein may be detected using any appropriate sensor or combination of sensors configured to sense applied forces as the disclosure is not so limited. The sensors as described herein may include load cells, strain sensors, force sensors, linear variable differential transformers (LVDT), displacement sensors, joint torque sensors, combinations of the forgoing, and/or any sensor configured to directly or indirectly detect force using an associated displacement or strain. The one or more sensors may include sensors configured to detect forces in a single axis, multiple axes, multiple sensors configured to measure a force in a single axis and directed in different orientations, combinations of the above, and/or any other appropriate type of sensor. Further, the sensors may be coupled to any appropriate portion of the system including the robotic limbs, links of the robotic limbs, joints of the robotic limbs, the base, joints of the base, end effectors, and/or any other appropriate portion of a system where the desired forces may be measures as the disclosure is not limited in this fashion.
[0021] The quantity and orientation of sensors used to detect force as described herein may be determined at least in part based on the degrees of freedom (DOF) of the system. For example, a system with robotic limbs having three or more degrees of freedom (e.g., controlled movement in three dimensions) may benefit from three or more force sensors each configured to detect force in three or more axes. In some embodiments, the one or more force sensors may detect force in three axes. In further embodiments, the one or more force sensors may be configured to detect force in six axes, that is, the system may detect forces using six DOF. Thus, it should be understood that any sensor with any appropriate number of axes of detection for a desired application may be used with the disclosed systems and methods. Thus, in some embodiments, the combination of force sensors may be configured to detect forces in at least three axes (e.g., translation axes) and preferably in six axes. In some embodiments, detecting force in six axes may enable fine tuning of the force detection, which may improve the quality of operation of the system.
[0022] In embodiments where forces applied to the system are detected in a reference frame associated with a portion of a robotic limb, e.g., a link of a robotic limb, limb joint of a robotic limb, and/or end effector of the robotic limb, it may be desirable to translate these forces to a reference frame associated with the base and/or user. Transforming the various reference frames of the robotic limbs to a reference frame associated with the base and/or user may allow the forces to be combined to better inform how the forces, when combined, are directed relative to the user and/or base. This net force applied to the base and/or use in a reference frame of the base may be used to determine appropriate commands, such as velocity commands, for controlling operation of the robotic limbs. Further, translating/transforming the reference frames may be desirable due to the robotic limbs having a plurality of potential configurations. That is, a reference frame associated with a link of a robotic limb, for example, may be oriented differently according to the configuration of the robotic limb which may make it difficult to combine the sensed forces associated with the separate robotic limbs and determining their orientation relative to a base of the system. Thus, in some embodiments, the sensed reaction forces may be transformed from a reference frame of the robotic limbs to a reference frame of the base and/or use using one or more transformation matrices, such as a Jacobian matrix transformation, or other appropriate method. Transforming the reaction forces from the reference frame of the robotic limbs to a reference frame of the base and/or user in some cases may involve translation and/or rotation depending on the application and orientation of the robotic limbs.
[0023] Information regarding configurations/poses of the robotic limbs includes information associated with the joints of the robotic limbs. For example, a limb joint may be rotatable and accordingly a pose associated with the limb joint may include an angle formed between a first link and a second link via the limb joint. Base joints coupling a link of the robotic limb to the base may also be rotatable and have associated angles. One or more limb joints and/or base joints may be revolute joints, prismatic joints, combinations of the forgoing, and/or any other appropriate type of joint. Accordingly, information associated with the joints may also include distances associated with extension and/or retraction of a prismatic joint. Angles of the limb joints and base joints may be detected in any appropriate fashion using any appropriate sensor or combination of sensors as the disclosure is not so limited. Sensors configured to measure angles may include encoders, angle sensors, any other appropriate sensor, and any combination thereof. Sensors configured to measure an extension of a prismatic joint may include encoders, linear variable differential transducers (LVDT's), extensometers, and/or any other appropriate type of sensor. When this information is combined with known or measured lengths of links of the robotic limbs, this may allow for information regarding poses/configurations of the robotic limbs to be easily obtained including a position and orientation of an end effector present on a distal end portion of a robotic limb.
[0024] As used herein, a link refers to a structural segment of a robotic limb that connects a joint and/or end effector to a different joint of the robotic limb. A pose comprises a position (e.g., location in three-dimensional space) and orientation (e.g., angular orientation in three-dimensional space) of one or more portions of a robotic limb. For example, a pose may describe a location and angular orientation in three-dimensional space of a link, a plurality of links, an end effector, each element of a robotic limb, the base, and any appropriate combination thereof. The pose of each segment of a robotic limb may influence the position and orientation of a distally located segment and/or end effector. As such, the pose of a robotic limb may be viewed as a combination of the pose of each segment and end effector of the robotic limb.
[0025] As used herein, a base refers to a portion of the system which each robotic limb of the system connects to either directly or indirectly. The base may couple to the one or more robotic limbs via base joints. The base may be removably coupled to a user by a harness, suit, or other wearable structure such that forces applied by the user to an environment may be at least partially transferred to the robotic limbs. Due to the closed loop kinematic chain formed by the robotic limbs and environment in some embodiments detailed further below this interaction of the user with the environment may result in the above noted reaction forces which are used to control operation of the robotic limbs.
[0026] The systems and methods as described herein may be implemented in any appropriate situation and for any appropriate task. As previously described, astronauts performing EVAs or any other appropriate task may benefit from the systems and methods described herein. Thus, the disclosed methods and systems may be used in conjunction with or integrated with a space suit. However, the disclosed methods and systems may be used for any application where a system including supernumerary robotic limbs are used to aid in movement of a user within an environment. This may include applications such as supporting and manipulating a user's pose within an environment while their hands are occupied, helping a user support a load, and/or any other appropriate application. Further, the disclosed methods and systems may be beneficial in any situation where the robotic limbs may be fixed to an object or the environment to form a closed kinematic chain which may help facilitate implementation of the disclosed control methods. In view of the above, it should be understood that any system having one or more supernumerary robotic limbs coupled to a user during operation and where the user is interacting with an environment and/or object the limbs are in contact with may benefit from the systems and methods described herein. It should also be understood that the systems and methods described herein need not necessarily include a human user, and instead, a base associated with the one or more robotic limbs may be used to support a different payload instead of a user as the disclosure is not limited in this fashion.
[0027] For the sake of clarity the embodiments described herein primarily refer to sensing, manipulating, or otherwise using a force. However, it should be understood that a force as used herein a may refer to a force matrix including separate components of forces and/or toques applied in different directions within a given reference frame. Thus, it should be understood that any reference to a force or torque herein should be understood to also refer to the use of a force matrix where appropriate which may include values for forces and/or torques oriented in a plurality of different directions.
[0028] Turning to the figures, specific non-limiting embodiments are described in further detail. It should be understood that the various systems, components, features, and methods described relative to these embodiments may be used either individually and/or in any desired combination as the disclosure is not limited to only the specific embodiments described herein.
[0029] A system 100 for assisting movement of a user 101 according to some embodiments is shown in
[0030] As shown in
[0031] In some embodiments, the one or more sensors may detect reaction forces applied to the end effectors 110 due to forces and/or movements applied to the environment by the user. As described herein, the forces applied to the end effectors result in a net force being applied to the base 102 by the separate robotic limb 103. The separate forces applied to the end effectors of the robotic limbs are labeled as
[0032] The system for assisting movement 100 may include any appropriate combination of one or more actuators including motors, stepper motors, solenoids, and any other appropriate mechanical, electrical, or electromechanical actuators to move the user 101, base 102, robotic limbs 103, links 104, end effectors 110, and any other appropriate portion of the system in a desired manner. The actuators may be disposed in any appropriate portion of the system for assisting movement including the base 102, base joints 106, robotic limbs 103, limb joints 108, and/or end effectors 110. For example, one or more base joints 106 and/or limb joints 108 may include actuators configured to move the associated links 104, base 102, and/or end effectors 110 relative to one another. In instances where the end effectors are held stationary due to friction, attachment to a portion of the environment, or other consideration during a commanded operation, movement of links 104 and/or end effectors 110 relative to the base may cause a corresponding force to be applied to the user in a desired direction of motion based on the commanded operation of the links. For example, the actuators may receive velocity commands to provide a commanded velocity of the base and user in a reference frame of the base and/or user using the control methods as described herein. For example, the one or more actuators of a robotic limb may receive a velocity command based on sensed reactionary forces applied to the robotic limbs 103 which may then aid movement of the base 102 and/or user 101 within the environment by applying a corresponding force to the user in a desired direction of motion.
[0033] A system 200 for assisting movement of a user 201 according to some further embodiments is shown in
[0034] As shown in
[0035] The system 200 for assisting movement may include any appropriate combination of one or more actuators including, for example, motors, stepper motors, solenoids, and/or any other appropriate mechanical, electrical, or electromechanical actuator configured to actuate the robotic limbs relative to the associated base for assisting movement. The actuators may be disposed in any appropriate portion of the system 200 for assisting movement, including the base 202, base joints 206, robotic limbs 203, limb joints 208, and/or end effectors 210. For example, one or more base joints 206 and/or limb joints 208 may include an actuator configured to move the associated links 204, base 202, and/or end effectors 210. Movement of the base 202, links 204, and/or end effectors 210 may apply a force to the base and user in a desired direction of motion based on the sensed reactionary forces applied to the end effectors as elaborated on further below. The movement elements may receive velocity commands using the control methods as described herein. For example, a motor may receive a velocity command based on force inputs from the robotic limbs 203 and cause the base 202 and/or user 201 to move.
[0036] In some embodiments, the system 200 for assisting movement may form a closed loop kinematic chain by coupling with, grasping onto, being held stationary from friction, or otherwise being held stationary relative to features 316 of a surrounding environment 314 the end effectors are in contact with, see
[0037] While the above embodiment is described relative to a user in a space suit operating in proximity to a spacecraft, the currently disclosed systems and methods are not limited to this application. For example, other environments that the systems and methods disclosed herein may be used for may include, but are not limited to, any appropriate extraterrestrial body (e.g., on a planetary scale and/or smaller scales), asteroids, any appropriate environment where it is desirable to reduce an inertia associated with a user, object, or other mass including assembly lines and constructions sites, and any other appropriate environment as the disclosure is not so limited.
[0038] The end effectors 210 may couple to the environment 314 and/or environment features 316 in any appropriate fashion. For example, in the depicted embodiment of
[0039]
[0040] As shown in
[0041] Movement of a user may be assisted by following the method 500 presented by the depicted flow chart of
[0042]
[0043] In some instances, the detected values for the input force F.sub.h may be relatively noisy. Thus, in some embodiments, one or more filters may be applied to the sensed input force F.sub.h to more accurately determine the detected forces applied to the base by the associated robotic limbs. In some embodiments, the force F.sub.h may be estimated using a Kalman Filter, and/or any other appropriate method for filtering and/or better estimating the input force.
[0044] Input F.sub.h may be fed into an admittance matrix A, where the admittance matrix A may represent the inverse of a damping matrix in some embodiments. The admittance matrix A may be adjusted as desired to tune the resulting output V.sub.h,d, which in turn tunes the output of the control loop V.sub.h. For example, by increasing the values of admittance matrix A, the damping of the system may effectively be reduced, thereby making the system more responsive to inputs (e.g., more agile) while decreasing values of the admittance matrix in one or more directions may make the system less sensitive to forces applied in those directions. Accordingly, the admittance matrix may be used to either provide either the same or different levels of damping, or conversely responsiveness, to forces applied in different directions by a user. For instance, it may be desirable to move a user more slowly in one direction in response to a command (e.g., towards a surface) while permitting more free movement of the user in other directions. For example, it may be desired for a user to move a first distance in a first direction for a given amount of force and move a shorter second distance in a second direction for the same amount of force. In another example, it may be desirable for the user to move with a relatively low amount of applied force in cardinal directions, and to rotate only if relatively high amounts of force and/or torque are applied. In such an embodiment, the cardinal directions of the admittance matrix may have larger values as compared to the values of the admittance matrix associated with torques. Of course, it should be understood that any appropriate combination of values for the admittance matrix may be used depending on the desired functionality of a system as the disclosure is not so limited.
[0045] The output of the admittance matrix A may be an intermediate velocity matrix V.sub.h,d, which may optionally be inputted into a difference junction where the commanded velocity V.sub.h may be used in a feedback loop where the commanded velocity V.sub.h is subtracted from the intermediate velocity matrix V.sub.h,d. The intermediate velocity matrix V.sub.h,d or the output from the difference junction may be input into a gain matrix K.sub.v. The gain matrix K.sub.v may be adjusted as desired to achieve a desired output of the control loop, similar to the adjustability of the admittance matrix A as previously described. In some embodiments, the gain matrix K.sub.v effectively adjust the mass of the system within the control loop. Adjusting the mass of the system within the control loop may enable the user to apply more or less force to move a distance and/or with a desired velocity for a given force applied to the system. Adjusting the gain matrix K.sub.v may also alter the moment of inertia of the system within the control loop, allowing for control over the applied force/torque needed to rotate the user. In some embodiments, increasing K.sub.v may effectively reduce the mass of the user making it easier to move a base and/or user attached to the base for a force input to the system by the user.
[0046] The control loop 600 may include a feedforward loop, shown in the depicted embodiment of
[0047] In some embodiments, the control loop 600 may also be configured to reject disturbances (e.g., disturbance rejection) even though rejecting disturbances is not visually represented in the depicted embodiment of
[0048] In view of the above, in certain embodiments, the control loop 600 may treat any input force F.sub.h below a threshold force as a disturbance and accordingly may reject (e.g., not affect the output V.sub.h based on) the input force F.sub.h. In some embodiments, the threshold may be set by adjusting a rejection factor . The rejection factor may be a matrix including values corresponding to each DOF of the system for assisting movement, such as a three-by-one or preferably a six-by-one matrix of values set to any appropriate level. For example, each of the rejection factor values may be set equal to or between 0 and 1, where setting as 1 may completely reject the disturbances and setting as 0 may not reject any disturbances. In some embodiments, the threshold for disturbances may also be set to different threshold forces for different directions of movement and/or rotation. For example, an amount of force in a first direction may move the user a distance in the first direction, but the same amount of force in a second direction may be rejected as a disturbance and accordingly the user will not move in the second direction. In some embodiments, the thresholds for disturbance rejections may be set by adjusting one or both of the admittance matrix A and the gain matrix K.sub.v. For example, in some embodiments disturbance rejection may be implemented by setting the admittance matrix A to follow the equation: A=K.sub.v.sup.1 where is the rejection factor and K.sub.v is the gain matrix as described herein.
[0049] Also noted above, the control loop 600 may also include a feedback loop. In the depicted embodiment of
[0050] In the embodiment of the control loop depicted by
[0051] The various methods disclosed above may be implemented by one or more controllers including at least one processor operatively coupled to the various controllable portions of a system for assisting movement as disclosed herein. Alternatively or additionally, in some embodiments, the disclosed methods may be performed at least in part, and in some instances completely, on a computing device that is separate and removed from the disclosed systems for assisting movement. In either case, the disclosed methods may be embodied as computer readable instructions stored on non-transitory computer readable memory associated with the at least one processor such that when executed by the at least one processor the associated system, which may be a system for assisting movement in some embodiments, may perform any of the actions related to the methods disclosed herein. Additionally, it should be understood that the disclosed order of the steps is exemplary and that the disclosed steps may be performed in a different order, simultaneously, and/or may include one or more additional intermediate steps not shown as the disclosure is not so limited.
[0052] The above-described embodiments of the technology described herein can be implemented in any of numerous ways. For example, the embodiments may be implemented using hardware, software or a combination thereof. When implemented in software, the software code can be executed on any suitable processor or collection of processors, whether provided in a single computing device or distributed among multiple computing devices. Such processors may be implemented as integrated circuits, with one or more processors in an integrated circuit component, including commercially available integrated circuit components known in the art by names such as CPU chips, GPU chips, microprocessor, microcontroller, or co-processor. Alternatively, a processor may be implemented in custom circuitry, such as an ASIC, or semicustom circuitry resulting from configuring a programmable logic device. As yet a further alternative, a processor may be a portion of a larger circuit or semiconductor device, whether commercially available, semi-custom or custom. As a specific example, some commercially available microprocessors have multiple cores such that one or a subset of those cores may constitute a processor. Though, a processor may be implemented using circuitry in any suitable format.
[0053] Further, it should be appreciated that a computing device may be embodied in any of a number of forms, such as a rack-mounted computer, a desktop computer, a laptop computer, or a tablet computer. Additionally, a computing device may be embedded in a device not generally regarded as a computing device but with suitable processing capabilities, including a Personal Digital Assistant (PDA), a smart phone, tablet, or any other suitable portable or fixed electronic device.
[0054] Also, a computing device may have one or more input and output devices. These devices can be used, among other things, to present a user interface. Examples of output devices that can be used to provide a user interface include display screens for visual presentation of output and speakers or other sound generating devices for audible presentation of output. Examples of input devices that can be used for a user interface include keyboards, individual buttons, and pointing devices, such as mice, touch pads, and digitizing tablets. As another example, a computing device may receive input information through speech recognition or in other audible format.
[0055] The controller 412 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer. The remote computer may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the controller 412.
[0056] The various methods or processes outlined herein may be implemented in any suitable hardware. Additionally, the various methods or processes outlined herein may be implemented in a combination of hardware and of software executable on one or more processors that employ any one of a variety of operating systems or platforms. Examples of such approaches are described above. However, any suitable combination of hardware and software may be employed to realize any of the embodiments discussed herein.
[0057] Also, the various methods or processes outlined herein may be coded as software that is executable on one or more processors that employ any one of a variety of operating systems or platforms. Additionally, such software may be written using any of a number of suitable programming languages and/or programming or scripting tools, and also may be compiled as executable machine language code or intermediate code that is executed on a framework or virtual machine.
[0058] In this respect, various inventive concepts may be embodied as at least one non-transitory computer readable storage medium (e.g., a computer memory, one or more floppy discs, compact discs, optical discs, magnetic tapes, flash memories, circuit configurations in Field Programmable Gate Arrays or other semiconductor devices, etc.) encoded with one or more programs that, when executed on one or more computers or other processors, implement the various embodiments of the present disclosure. The non-transitory computer-readable medium or media may be transportable, such that the program or programs stored thereon may be loaded onto any computer resource to implement various aspects of the present disclosure as discussed above.
[0059] The terms program or software are used herein in a generic sense to refer to any type of computer code or set of computer-executable instructions that can be employed to program a computer or other processor to implement various aspects of embodiments as discussed above. Additionally, it should be appreciated that according to one aspect, one or more computer programs that when executed perform methods of the present disclosure need not reside on a single computer or processor, but may be distributed in a modular fashion among different computers or processors to implement various aspects of the present disclosure.
[0060] Computer-executable instructions may be in many forms, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
[0061] The embodiments described herein may be embodied as a method, of which an example has been provided. The acts performed as part of the method may be ordered in any suitable way. Accordingly, embodiments may be constructed in which acts are performed in an order different than illustrated, which may include performing some acts simultaneously, even though shown as sequential acts in illustrative embodiments.
[0062] Further, some actions are described as taken by a user. It should be appreciated that a user need not be a single individual, and that in some embodiments, actions attributable to a user may be performed by a team of individuals and/or an individual in combination with computer-assisted tools or other mechanisms.
[0063] While the present teachings have been described in conjunction with various embodiments and examples, it is not intended that the present teachings be limited to such embodiments or examples. On the contrary, the present teachings encompass various alternatives, modifications, and equivalents, as will be appreciated by those of skill in the art. Accordingly, the foregoing description and drawings are by way of example only.