CONTROL COMPONENT WITH FORCE FEEDBACK
20230240890 · 2023-08-03
Inventors
- Yoav GOLAN (Tel-Aviv, IL)
- Ori Ben Zeev (Ramat HaSharon, IL)
- Tal Korman (Tel Aviv, IL)
- Daniel Glozman (Kfar Yona, IL)
Cpc classification
A61B90/90
HUMAN NECESSITIES
A61F9/00754
HUMAN NECESSITIES
A61B34/76
HUMAN NECESSITIES
A61B34/20
HUMAN NECESSITIES
International classification
A61B34/00
HUMAN NECESSITIES
Abstract
Apparatus and methods are described for performing a procedure on a patient's eye. A robotic unit inserts an ophthalmic tool into the patient's eye via an incision in a cornea of the patient's eye. The location and the orientation of the tip of a control-component tool that is configured to be moved by an operator is determined, based upon data received from one or more location sensors that are disposed on a control-component arm that is coupled to the control-component tool, and the tip of the ophthalmic tool is moved within the patient's eye in a manner that corresponds with movement of the control-component tool. Force feedback is provided to the operator via the control-component arm. Other applications are also described.
Claims
1. An apparatus for performing a procedure on an eye of a patient using an ophthalmic tool that has a tip, the apparatus comprising: a robotic unit configured to move the tool; a control-component unit that comprises: a control-component tool that is configured to be moved by an operator and that defines a tip; and a control-component arm coupled to the control-component tool and comprising: a plurality of links that are coupled to each other via rotational arm joints; one or more location sensors; and one or more motors that are operatively coupled to respective rotational arm joints: a computer processor configured to: drive the robotic unit to insert the ophthalmic tool into the patient's eye via an incision in a cornea of the patient's eye, such that a tip of the ophthalmic tool is disposed within the patient's eye; determine a location and orientation of the tip of the control-component tool based upon data received from the one or more locations sensors; move the tip of the selected ophthalmic tool within the patient's eye in a manner that corresponds with movement of the control-component tool; and provide force feedback to the operator by driving the control-component arm using the plurality of motors.
2. The apparatus according to claim 1, wherein the control component comprises exactly three motors operatively coupled to respective rotational arm joints.
3. The apparatus according to claim 1, wherein the control-component arm comprises a belt, and at least one of the motors is operatively coupled to a corresponding one of the rotational arm joints via the belt, such that the at least one of the motors is disposed closer to a base of the control-component unit than if the at least one of the motors directly drove the corresponding one of the rotational arm joints.
4. The apparatus according to claim 1, wherein a majority of the one or more motors directly drive a corresponding one of the rotational arm joints to which they are operatively coupled.
5. The apparatus according to claim 1, wherein the one or more location sensors comprise: three rotary encoders, each of the three rotary encoders coupled to a respective one of the rotational arm joints and configured to detect movement of the respective rotational arm joint and to generate rotary-encoder data indicative of an XYZ location of the tip of the control-component tool in response thereto; and an inertial measurement unit comprising at least one of sensor selected from the group consisting of: a three-axis accelerometer, a three-axis gyroscope, and a three-axis magnetometer, the inertial measurement unit being configured to generate inertial-measurement-unit data indicative of an orientation of the tip of control-component tool.
6. The apparatus according to claim 1, wherein the control-component tool is coupled to the control-component arm via three rotational tool joints, and wherein the one or more location sensors comprise: two rotary encoders coupled to each one of the rotational arm joints and configured to detect movement of the rotational arm joint and to generate rotary-encoder data indicative of an XYZ location of the tip of the control-component tool, in response thereto; and one rotary encoder coupled to each one of the rotational tool joints and configured to detect movement of the rotational tool joint and to generate rotary-encoder data indicative of an orientation of the tip of the control-component tool, in response thereto; an inertial measurement unit comprising at least one of sensor selected from the group consisting of: a three-axis accelerometer, a three-axis gyroscope, and a three-axis magnetometer, the inertial measurement unit being configured to generate inertial-measurement-unit data indicative of an orientation of the tip of control-component tool.
7. The apparatus according to claim 1, wherein the computer processor is configured to: drive the robotic unit to insert the ophthalmic tool into the patient's eye via the incision in the cornea of the patient's eye, such that the tip of the ophthalmic tool is disposed within the patient's eye and a remote center of motion location of the ophthalmic tool is disposed within the incision; and provide force feedback to the operator that is indicative of a disposition of the remote center of motion location of the ophthalmic tool relative to the incision.
8. The apparatus according to claim 7, wherein the computer processor is configured to: determine an identity of the ophthalmic tool that has been inserted into the patient's eye, and based upon the identity of the ophthalmic tool, calculate a disposition of the remote center of motion location of the ophthalmic tool relative to the incision.
9. The apparatus according to claim 7, wherein the computer processor is configured to provide force feedback to the operator via the control component, by: performing velocity measurements on the control-component tool, calculating a force to be applied to the operator based on the velocity measurements, and driving the control component to apply the calculated force to the operator, via the one or more motors.
10. The apparatus according to claim 7, wherein the computer processor is configured to provide force feedback to the operator via the control component, by: performing measurements of a position of the ophthalmic tool relative to the incision, calculating a force to be applied to the operator based on the position measurements, and driving the control component to apply the calculated force to the operator.
11. The apparatus according to claim 7, wherein the computer processor is configured to calculate a force to be applied to the operator by calculating the force such as to be equal and opposite to a force applied to the control-component tool by the operator.
12. The apparatus according to claim 7, wherein the computer processor is configured to calculate a force to be applied to the operator by calculating the force such as to be proportional to a distance of an outer edge of the ophthalmic tool from a center of the incision.
13. The apparatus according to claim 7, wherein the computer processor is configured to receive an input from the operator that is indicative of a stiffness of force feedback that they wish to receive, and to calculate a force to be applied to the operator at least partially based upon the input from the operator.
14. The apparatus according to claim 7, wherein the computer processor is configured to constrain movement of the control-component tool in a manner that corresponds to how movement of the remote center of motion location of the ophthalmic tool relative to the incision should be constrained.
15. The apparatus according to claim 14, wherein the computer processor is configured to constrain movement of the control-component tool in a manner that constrains the remote center of motion location of the ophthalmic tool to remain within an incision zone that is larger than the incision.
16. The apparatus according to claim 14, wherein the computer processor is configured to constrain movement of the control-component tool in a manner that constrains the remote center of motion location of the ophthalmic tool to remain within the incision.
17. The apparatus according to claim 7, wherein the computer processor is configured to calculate a force to be applied to the operator by calculating a force function that is based on a distance of an outer edge of the ophthalmic tool from a center of the incision in two directions.
18. The apparatus according to claim 17, wherein a first one of the two directions is parallel to the incision and at a tangent to the cornea of the patient's eye at the incision, and a second one of the two directions is normal to the first direction and at a tangent to the cornea of the patient's eye at the incision.
19. A method for performing a procedure on an eye of a patient using an ophthalmic tool that has a tip, the method comprising: driving a robotic unit to insert the ophthalmic tool into the patient's eye via an incision in a cornea of the patient's eye, such that a tip of the ophthalmic tool is disposed within the patient's eye and a remote center of motion location of the ophthalmic tool is disposed within the incision; determining the location and the orientation of the tip of a control-component tool that is configured to be moved by an operator, based upon data received from one or more location sensors that are disposed on a control-component arm that is coupled to the control-component tool; moving the tip of the ophthalmic tool within the patient's eye in a manner that corresponds with movement of the control-component tool; and providing force feedback to the operator via the control-component arm, wherein the control component arm includes a plurality of links that are coupled to each other via rotational arm joints and one or more motors that are operatively coupled to respective rotational arm joints and the force feedback is provided to the operator by driving the control-component arm using the plurality of motors.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0145]
[0146]
[0147]
[0148]
[0149]
[0150]
[0151]
DETAILED DESCRIPTION OF EMBODIMENTS
[0152] Reference is now made to
[0153] Typically, movement of the robotic units (and/or control of other aspects of the robotic system) is at least partially controlled by one or more operators 25 (e.g., healthcare professionals, such as a physician and/or a nurse). For example, the operator may receive images of the patient's eye and the robotic units and/or tools disposed therein, via display 24. Typically, such images are acquired by imaging system 22. For some applications, imaging system 22 is a stereoscopic imaging device and display 24 is a stereoscopic display. Based on the received images, the operator typically performs steps of the procedure. For some applications, the operator provides commands to the robotic units via control-component unit 26. Typically, such commands include commands that control the position and/or orientation of tools that are disposed within the robotic units, and/or commands that control actions that are performed by the tools. For example, the commands may control a blade, a phacoemulsification tool (e.g., the operation mode and/or suction power of the phacoemulsification tool), and/or injector tools (e.g., which fluid (e.g., viscoelastic fluid, saline, etc.) should be injected, and/or at what flow rate). Alternatively or additionally, the operator may input commands that control the imaging system (e.g., the zoom, focus, and/or x-y positioning of the imaging system). For some applications, the commands include controlling an intraocular-lens-manipulator tool, for example, such that the tool manipulates the intraocular lens inside the eye for precise positioning of the intraocular lens within the eye.
[0154] Typically, the control-component unit includes one or more control-component joysticks 30 that are configured to correspond to respective robotic units 20 of the robotic system. For example, as shown, the system may include first and second robotic units, and the control-component unit may include first and second joysticks, as shown. Typically, each of the joysticks is a control-component arm that includes a plurality of links that are coupled to each other via joints, as described in further detail hereinbelow with reference to
[0155] Reference is now made to
[0156] In order to perform non-robotic anterior ophthalmic surgery, a surgeon typically makes one or more incisions in the patient's cornea, which is thereafter used as an entry point for various surgical tools. A tool is inserted through an incision, and is manipulated within the eye to achieve the surgical goals. While this manipulation occurs, it is medically preferable that the tool does not forcefully press against the incision edges, lift upwards, or depress downwards exceedingly. Such motions may cause tearing at the incision edges, which widens the incision and can negatively impact the surgical outcome. Ideally, the surgeon will manipulate a tool such that at the entry point of the tool through the incision, the tool is rotated about the center of the incision and not moved laterally, with such motion of the tool at the incision being described herein as maintaining the center of motion. For robotic procedures, such as those described herein, the above-described motion of tool 21 is described as maintaining a remote center of motion, since the tool is typically controlled from a distance (via control-component unit 26). In non-robotic procedures, it can be difficult to manually maintain a center of motion, especially when the surgeon needs to focus on the tool tip, which is performing the current surgical action. In accordance with some applications of the present invention, feedback is provided to assist an operator performing robotic-assisted ophthalmic surgery. The feedback, which is typically provided by control-component unit 26 (as described in further detail hereinbelow), typically assists the operator in maintaining the remote center of motion of tool 21 by applying forces that oppose the operator's attempted movements of joysticks 30 and/or control-component tool 32 that would result in violation of the remote center of motion.
[0157] As described hereinabove, for some applications, the operator provides commands to the robotic units via control-component unit 26 (shown in
[0158] Reference is now made to
[0159] For some applications, the computer processor identifies the tool that is currently disposed within the incision (i.e., which type of tool is currently disposed within the incision), and calculates a disposition of the remote center of motion location of the ophthalmic tool relative to the incision, based upon the tool that is identified as currently being disposed within the incision. For example, the computer processor identifies the tool that is currently disposed within the incision by analyzing images that are acquired using imaging system 22 (e.g., using machine vision algorithms). Alternatively or additionally, each of the tools may have a tool-identification component (e.g., a marker, a barcode, and/or a QR code), and the computer processor identifies the tool that is currently disposed within the incision by identifying the tool-identification component within images that are acquired using imaging system 22. For some applications, the computer processor is configured to receive a manual input identifying which tool is currently disposed within the incision. As described hereinabove, the computer processor typically drives the control-component unit to provide force feedback to the operator based on disposition of the remote center of motion location of the ophthalmic tool relative to the incision. Referring to
[0160] As described hereinabove, typically, the robotic system is configured to assist the operator in moving tool 21, such that a tip of the tool is moved in a desired manner within the patient's eye, while entry of the tool into the patient's eye is maintained within the incision. The longitudinal portion of the tool that is within the incision and which functions as the remote center of motion is referred to herein as “the remote center of motion location of the tool”. (It is noted that over the course of the procedure, the location along the tool that is within the incision may change. The remote center of motion location of the tool refers to whichever location along the tool is currently within the incision.) In general, all descriptions of the robotic system assisting the operator in moving the tip of the tool within the patient's eye in such a manner that the remote center of motion location of the tool remains within the incision should be understood to either mean that the operator is assisted in maintaining the remote center of motion location of the tool within either the incision itself or within an incision zone that is larger than the incision by a predetermined amount (e.g., as described in the previous paragraph). For some applications, a force is applied to the operator via the control-component unit, with the force varying as a function of the distance of the outer edge of the tool relative to the center of the incision.
[0161] For some applications, the control-component unit is configured to apply a directional force that is calculated based upon the disposition (i.e., location and orientation) and movement of the control-component joysticks 30 and/or control-component tools 32. For example, the computer processor may perform velocity measurements on movement of the control-component tools and may calculate a force that is applied to the control-component arm that simulates physical interaction based upon the velocity measurements. Alternatively or additionally, the computer processor may perform measurements of the location of the ophthalmic tool relative the incision and may calculate a force that is applied to the control-component arm that simulates physical interaction based upon the location measurements. For some applications, the control-component arm is configured to apply torque to the user. For some applications, the feedback is configured to simulate a wall by applying force to the operator whenever they attempt to move a portion of the control-component tool 32 past a certain plane. For some such applications, the applied force is configured to be equal and opposite to the force applied to control-component tool 32 by the operator, such as to provide the sensation of a rigid wall that the operator cannot pass. Alternatively or additionally, the applied force is configured to be proportional to the distance of the outer edge of ophthalmic tool 21 from the center of the incision. Typically, this creates the sensation of an elastic, spring-like barrier, that is more difficult to enter the further it is penetrated.
[0162] Referring again to
[0163] For some applications, based on images of the tool and the patient's eye, as well as predetermined data regarding the tools dimensions, the computer processor is configured to determine the location and orientation of the remote center of motion location of the tool relative to the incision. For some applications, the computer processor determines the location of the incision based on the location and orientation of the keratome blade when the incision was made (as well as predetermined data regarding the width of the keratome blade), or by using computer vision, or a combination of the two. For some applications the computer processor determines the location of the tool's longitudinal axis relative to the incision (e.g., relative to the center of the incision, relative to an edge of the incision, and/or relative to the edge of an incision zone). In the case of some tools, the longitudinal axis is a straight line and the cross-section of the tool is symmetrical around its axis. In the case of some of the tools, the tool's longitudinal axis is not a straight line, but rather it differs at different locations along the length of the tool, with the longitudinal axis following the centroid of the tool's cross-section. For some applications, the computer processor determines the distance between the outer edge of the remote center of motion location of the tool relative to the incision (e.g., relative to the center of the incision, relative to an edge of the incision, and/or relative to the edge of an incision zone). Typically, the computer processor determines the magnitude and/or the direction of the feedback force that is provided to the operator based upon the above-mentioned calculations.
[0164] For some applications, based upon the above-mentioned calculations, the computer processor computes a force function, which returns a force vector that is to be provided by the control-component arm to the operator. The scope of the present disclosure includes providing any type of force functions, some of which are described in detail with reference to
[0165] Reference is now made to
[0166] Referring to
F=0; |x|≤1.3 mm
F=10N; |x|>1.3 mm [Function 1]
[0167] In the present example, the force function is applied as a function of the distance of the longitudinal axis of the tool from the center of the incision at the remote center of motion location of the tool, although the scope of the present disclosure includes calculating the force function as a function of other variable, e.g., the distance of the outer edge of the tool from the outer edge of the incision at the remote center of motion location of the tool. In addition, the scope of the present disclosure should not be interpreted by the particular distances and forces provided in the above or the below examples. Rather, these examples are provided to demonstrate the type of force functions that may be provided. The scope of the present disclosure includes modifying these examples, such that these types of force functions are applied using different distances and forces to those provided.
[0168] Using Function 1, no force is applied when the operator moves the tool such that the tool's axis is less than 1.3 mm from the incision center in either direction along the x axis. When the operator moves the tool such that tool's axis is more than 1.3 mm from the incision center in either direction along the x axis, a force of 10 N is applied. In this example, only the force magnitude is shown. The force direction is typically opposite to the direction of violation, i.e. opposite of the sign of the distance. A more complete function is:
F=0; |x|≤1.3 mm
F=−10N; x>1.3 mm [Function 1]
F=+10N; x<1.3 mm [Function 2]
[0169] For simplicity, for all of the other functions that are described herein, the force is displayed as a magnitude. However, it should be understood that the direction of the force typically opposes the direction of motion and is directed towards the incision center.
[0170] A step function as shown in
[0171] Other options of force functions may be applied such as to generate a different sensation for the operator. One example is a linear function, as graphically shown in
[0172] For some applications, a combination of functions is provided. For example, as graphically shown in
[0173] For some applications, parameters of the force function are configured to create a given sensation. For example, for a linear force function, one may change the stiffness k to change the feeling of the feedback, using Function 3 shown below:
F=k|x| [Function 3]
[0174]
[0175] For some applications, different combinations of force functions are used. For example, as graphically shown in
[0176] For some applications, other types of force functions are applied, e.g. an exponential force function, as graphically shown in
F=b.Math.e.sup.a|x|+c [Function 4]
[0177] where a, b and c are configurable parameters, and e is Euler's number.
[0178] For some applications, such a function is configured to give the operator gradually increasing force feedback as they distance themselves from the center, creating a variable stiffness sensation. Other functions may also be used, such as functions that incorporate polynomials, logarithms, or powers.
[0179] For some applications additional combinations of functions are used. For example, as graphically shown in
[0180]
[0181] Purely by way of example,
[0182] For example, Function 5, presented below, may be used as the 2D force function:
F=b.sub.1.Math..sup.a.sup.
[0183] The force output may be interpreted as a vector, or as a magnitude. If treated as a magnitude, the direction of the vector is typically toward the center of the incision.
[0184] Reference is now made to
[0185] Subsequently, the computer processor detects whether or not the tool is still inside the patient's eye (step 64). Assuming that the tool is still within the eye, the computer processor computes the distance between the tool's axis and the center of the incision, at the remote center of motion location along the tool (step 66). (As noted above, alternatively or additionally, the computer processor computes the distance between the edge of the tool and the edge of the incision or the end of an incision zone, at the remote center of motion location along the tool.) Based upon step 66, the computer processor computes the magnitude and the direction of the force that is to be provided to the operator by the control-component unit (step 68). In step 70, the force that was computed in step 68 is applied. Assuming that in step 64, it is detected that the tool is no longer in the eye, the force feedback is terminated (step 72). In accordance with respective applications, the force feedback functionality of the control-component unit is terminated automatically (in response to detecting that the tool has been removed from the incision) or is terminated manually by the operator.
[0186] Reference is now made to
[0187] Referring to
[0188] It is noted that, in order to increase the richness with which the feedback that the joystick provides to the operator reflects the position of the ophthalmic tool's remote center of motion location relative to the incision, it may be preferable to use a greater number of control-component motors. For example, for some applications, six motors are used, such that the control component is configured to apply a 3D force vector and a 3D torque vector. The scope of the present disclosure include using between one and six motors to provide feedback to the operator via the control component. However, using more than three motors typically adds additional weight and complexity to the design of the joystick. In addition, the inventors have found that using three motors provides a feedback that sufficiently reflects the position of the ophthalmic tool's remote center of motion location relative to the incision to be of assistance to the operator. Therefore, each of the joysticks typically includes three motors, as shown in
[0189] Reference is now made to
[0190] For some applications, the computer processor drives the robotic unit such that the tip of the ophthalmic tool that is being used to perform the procedure tracks the movements of the tip of the control-component tool. For some applications, the computer processor drives the robotic unit such that the tip of the ophthalmic tool that is being used to perform the procedure tracks the movements of the tip of the control-component tool in six degrees-of-freedom. Typically, incorporating an inertial-measurement unit to detect the three-dimensional orientation of the control-component arm allows the operator to control movement of the robotic unit using a reduced number of sensors, relative to if rotary encoders were used to detect motion of the control-component arm in all six degrees-of-freedom. Further typically, reducing the number of rotary encoders that are used tends to reduce the overall complexity of the control-component arm, since introducing additional rotary encoders would require additional wires to pass through rotating joints.
[0191] Notwithstanding the complexity associated with having additional rotary encoders, for some applications, the control-component arm includes more than three rotary encoders as well as an inertial-measurement unit, for redundancy, i.e., such that there are additional location sensors that may be used by the system in the event that some of the location sensors fail. For some such applications, the control-component arm includes an additional rotary encoder at each of the rotational arm joints, for redundancy. In addition, for some applications, the control component includes rotary encoders to detect the roll, pitch and yaw of tool 32 of the control-component tool, in addition to the inertial-measurement unit, for redundancy. For some such applications, tool 32 is coupled to the control-component arm via three rotational tool joints, corresponding to the roll, pitch and yaw of tool 32. Typically, the aforementioned rotary encoders detect motion of respective rotational tool joints via which the control-component tool is coupled to the control-component arm.
[0192] Although some applications of the present invention are described with reference to cataract surgery, the scope of the present application includes applying the apparatus and methods described herein to other medical procedures, mutatis mutandis. In particular, the apparatus and methods described herein to other medical procedures may be applied to other microsurgical procedures, such as general surgery, orthopedic surgery, gynecological surgery, otolaryngology, neurosurgery, oral and maxillofacial surgery, plastic surgery, podiatric surgery, vascular surgery, and/or pediatric surgery that is performed using microsurgical techniques. For some such applications, the imaging system includes one or more microscopic imaging units.
[0193] It is noted that the scope of the present application includes applying the apparatus and methods described herein to intraocular procedures, other than cataract surgery, mutatis mutandis. Such procedures may include collagen crosslinking, endothelial keratoplasty (e.g., DSEK, DMEK, and/or PDEK), DSO (descemet stripping without transplantation), laser assisted keratoplasty, keratoplasty, LASIK/PRK, SMILE, pterygium, ocular surface cancer treatment, secondary IOL placement (sutured, transconjunctival, etc.), iris repair, IOL reposition, IOL exchange, superficial keratectomy, Minimally Invasive Glaucoma Surgery (MIGS), limbal stem cell transplantation, astigmatic keratotomy, Limbal Relaxing Incisions (LRI), amniotic membrane transplantation (AMT), glaucoma surgery (e.g., trabs, tubes, minimally invasive glaucoma surgery), automated lamellar keratoplasty (ALK), anterior vitrectomy, and/or pars plana anterior vitrectomy.
[0194] Applications of the invention described herein can take the form of a computer program product accessible from a computer-usable or computer-readable medium (e.g., a non-transitory computer-readable medium) providing program code for use by or in connection with a computer or any instruction execution system, such as computer processor 28. For the purpose of this description, a computer-usable or computer readable medium can be any apparatus that can comprise, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Typically, the computer-usable or computer readable medium is a non-transitory computer-usable or computer readable medium.
[0195] Examples of a computer-readable medium include a semiconductor or solid-state memory, magnetic tape, a removable computer diskette, a random-access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W), DVD, and a USB drive.
[0196] A data processing system suitable for storing and/or executing program code will include at least one processor (e.g., computer processor 28) coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. The system can read the inventive instructions on the program storage devices and follow these instructions to execute the methodology of the embodiments of the invention.
[0197] Network adapters may be coupled to the processor to enable the processor to become coupled to other processors or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
[0198] Computer program code for carrying out operations of the present invention may be written in any combination of one or more programming languages, including an object-oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the C programming language or similar programming languages.
[0199] It will be understood that the algorithms described herein, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general-purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer (e.g., computer processor 28) or other programmable data processing apparatus, create means for implementing the functions/acts specified in the algorithms described in the present application. These computer program instructions may also be stored in a computer-readable medium (e.g., a non-transitory computer-readable medium) that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means which implement the function/act specified in the algorithms. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the algorithms described in the present application.
[0200] Computer processor 28 is typically a hardware device programmed with computer program instructions to produce a special purpose computer. For example, when programmed to perform the algorithms described with reference to the Figures, computer processor 28 typically acts as a special purpose robotic-system computer processor. Typically, the operations described herein that are performed by computer processor 28 transform the physical state of a memory, which is a real physical article, to have a different magnetic polarity, electrical charge, or the like depending on the technology of the memory that is used. For some applications, operations that are described as being performed by a computer processor are performed by a plurality of computer processors in combination with each other.
[0201] It will be appreciated by persons skilled in the art that the present invention is not limited to what has been particularly shown and described hereinabove. Rather, the scope of the present invention includes both combinations and subcombinations of the various features described hereinabove, as well as variations and modifications thereof that are not in the prior art, which would occur to persons skilled in the art upon reading the foregoing description.