The present invention relates to the field of robotics, and, more particularly, to collision avoidance for robotic manipulators and related methods.
Robotic systems are commonplace in fields such as manufacturing. Indeed, manufacturing plants typically employ robotic systems including numerous robotic manipulators to perform various tasks. To avoid damage to the robotic manipulators, it is helpful to control the robotic manipulators according to a collision avoidance scheme. As such, a variety of collision avoidance schemes for robotic systems have been developed.
Some collision avoidance schemes work by constraining each robotic manipulator to pre-planned collision free paths. For example, one such collision avoidance scheme is disclosed in U.S. Pat. No. 5,204,942 to Otera et al. Such a collision avoidance scheme typically requires reprogramming to accommodate each and every change made to the pre-planned paths of the robotic manipulators. In a manufacturing process that is routinely altered and updated, the collision avoidance system of Otera et al. may be disadvantageous due to the necessary repeated reprogramming thereof.
Other collision avoidance schemes may model a workspace and divide it into different zones. Certain robotic manipulators may be forbidden to enter certain zones, or only one robotic manipulator may be allowed into a given zone at a time. U.S. Pat. No. 5,150,452 to Pollack et al. discloses such a collision avoidance scheme for a robotic system. The robotic system includes a controller storing a model of the workspace that is divided into an occupancy grid. The controller controls the robotic manipulators of the robotic system such that only one robotic manipulator may occupy a cell of the occupancy grid at a given time. This collision avoidance system may reduce the efficiency of a manufacturing plant, particularly if there are a variety of differently sized robotic manipulators and the cell sizes of the occupancy grid are sized to accompany the largest robotic manipulators. Further, since this robotic system operates based upon a model of the workspace, any change to the workplace may require an update of the model, which may be time consuming.
Other attempts at collision avoidance schemes for robotic systems include a controller that actively looks for potential collisions between robotic manipulators. For example, U.S. Pat. No. 4,578,757 to Stark discloses a collision avoidance scheme for a robotic system that models each robotic manipulator of the system as a number of overlapping spheres. As the robotic manipulators move along pre-planned paths, the distance between each sphere of nearby robotic manipulators is calculated by a controller. These calculated distances indicate a risk of collision between two adjacent robotic manipulators. When the risk of collision exceeds a threshold amount, at least one of the robotic manipulators may be slowed down as it travels along its pre-planned path, or even stopped completely. Such a collision avoidance scheme, however, may reduce the efficiency of a manufacturing plant employing the robotic system due to the stopping of robotic manipulators and the associated delays in the manufacturing process.
As explained, these prior approaches may render a manufacturing process employing their respective robotic systems inefficient. Moreover, robotic systems employing these prior approaches may be difficult and/or costly to adapt to new applications or to the addition of additional robotic manipulators. As such, further advances in the field of collision avoidance schemes may be desirable.
In view of the foregoing background, it is therefore an object of the present invention to provide a more efficient collision avoidance scheme for a robotic apparatus.
This and other objects, features, and advantages in accordance with the present invention are provided by a robotic manipulator that detects a potential collision with another robotic manipulator, and moves in a dodging path based upon detection of the potential collision. More particularly, the robotic apparatus may comprise a first robotic manipulator, and a first controller configured to control the first robotic manipulator for movement along a first pre-planned actual path. In addition, the robotic apparatus may include a second robotic manipulator, and a second controller configured to control movement of the second robotic manipulator for movement along a second pre-planned intended path. The second robotic manipulator deviates therefrom to move in a dodging path away from the first pre-planned actual path based upon determining a potential collision with the first robotic manipulator and without prior knowledge of the first pre-planned actual path.
This collision avoidance scheme advantageously allows the first pre-planned actual path of the first robotic manipulator to be reprogrammed without necessitating a reprogramming of the second pre-planned intended path. This may reduce the time it takes to adapt the robotic apparatus to a new application.
The first controller may generate first drive signals for the first robotic manipulator, and the second controller may determine the potential collision based upon the first drive signals. Additionally or alternatively, the first robotic manipulator may include at least one joint, and a joint sensor cooperating with the at least one joint and the first controller for determining positioning of the at least one joint. The second controller may determine the potential collision based upon the positioning of the at least one joint of the first robotic apparatus. This may allow the determination of potential collisions more accurately and with the use of less processing power than through the use of an image sensor. Of course, the second controller may also determine the potential collision based upon an image sensor or joint position sensor in some embodiments.
The second controller may repeatedly determine a distance between the second robotic manipulator and the first robotic manipulator, and, may compare the distance to a threshold distance to thereby determine a potential collision. In addition, the second controller may also repeatedly determine an approach velocity between the second robotic manipulator and the first robotic manipulator, and the second controller may also determine the potential collision based upon the approach velocity.
Furthermore, the second controller may also repeatedly determine an approach velocity between the second robotic manipulator and the first robotic manipulator, and the second controller may also determine the potential collision based upon the approach velocity. The second controller may move the second robotic manipulator at different speeds based upon the approach velocity. The second controller may also repeatedly determine an acceleration of the first robotic manipulator, and the second controller may also determine the potential collision based upon the acceleration.
In addition, the second controller may store a geometric model of the first and second robotic manipulators, and the second controller may determine the distance between the second robotic manipulator and the first robotic manipulator based upon the geometric models. The use of geometric models may greatly reduce the processing power consumed in determining potential collisions.
Each geometric model may include a series of buffer zones surrounding a respective robotic manipulator. The second controller may determine a potential collision between the second robotic manipulator and the first robotic manipulator based upon an overlap between the buffer zones. In addition, the second controller may move the second robotic manipulator at different speeds based upon which respective buffer zones are overlapping.
The second pre-planned intended path may be based upon a sequence of desired velocities. The second controller may move the second robotic manipulator along the dodging path based upon a sequence of dodge velocities to avoid the potential collisions while closely following the sequence of desired velocities of the second pre-planned intended path.
The second robotic manipulator may comprise at least one joint, and the second controller may determine the sequence of dodge velocities based upon a force on the at least one joint. Additionally or alternatively, the second controller may also determine the sequence of dodge velocities upon kinetic energy of the second robotic manipulator. Determining the sequence of dodge velocities based upon a force or torque on the at least one joint, or based upon kinetic energy of the second robotic manipulator, may advantageously constrain the second robotic manipulator from advancing along a dodge velocity or path that would be potentially damaging to its hardware.
The sequence of dodge velocities may comprise at least one velocity in each of a plurality of physical directions. The second controller may determine the sequence of dodge velocities based upon a plurality of convex sets of allowable velocities.
A method aspect is directed to a method of operating a robotic apparatus according to a collision avoidance scheme to avoid a collision with a first robotic manipulator controlled by a first controller for movement along a first pre-planned actual path. The method may comprise controlling a second robotic manipulator with a second controller for movement along a second pre-planned intended path. The method may further include controlling the second robotic manipulator with the second controller for movement in a dodging path away from the first pre-planned actual path based upon determining a potential collision with the first robotic manipulator and without prior knowledge of the first pre-planned actual path.
The present invention will now be described more fully hereinafter with reference to the accompanying drawings, in which preferred embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Like numbers refer to like elements throughout, and prime and multiple prime notations are used to indicate similar elements in alternative embodiments.
Referring initially to
Those skilled in the art will recognize that the robotic apparatus 9 may include any number of robotic manipulators and that the first and second robotic manipulators 10, 12 may be any suitable robotic manipulators, for example, robotic welding arms, or robotic claws for handling objects and/or tools. Of course, the first and second robotic manipulators 10, 12 may be different types of robotic manipulators and may vary in size.
The first pre-planned actual path 11a, 11b, in other embodiments, may include continuous or discontinuous movement in any direction, and may include movement of joints 26 of the first robotic manipulator 10. Likewise, the second pre-planned intended path 13 may, in other embodiments include continuous or discontinuous movement in any direction, and may include movement of joints 27 of the second robotic manipulator 12. In the embodiment as shown in
The application of this collision avoidance scheme, at three discrete moments in time, is illustrated in
A second controller 20 (
Those skilled in the art will understand that the second controller 20 may repeatedly search for potential collisions with the first robotic manipulator 10, and may repeatedly adjust the dodge path 13 based thereupon, for example, every 2 milliseconds.
A further embodiment of the robotic apparatus 9′ is now described with reference to
The second controller 20′ comprises a processor 21′ and a memory 22′ cooperating for controlling movement of the second robotic manipulator 12′ along the second pre-planned intended path. Here, the second pre-planned intended path is based upon a sequence of desired velocities. The processor 21′ sends drive instructions to the drive signal generator 23′, which in turn generates and sends second drive signals to the second robotic manipulator 12′. The second robotic manipulator 12′ moves along the second pre-planned intended path based upon the second drive signals.
The processor 21′ determines a potential collision with the first robotic manipulator 10′ without prior knowledge of the first pre-planned actual path. To effectuate this determination, a communications interface 24′ of the second controller 20′ is coupled to the communications interface 19′ of the first controller 15′ to read the first drive signals. The processor 21′ cooperates with the communications interface 24′ to thereby determine a potential collision based upon the first drive signals. This advantageously allows a quick and accurate determination of the velocity of each portion of the first robotic manipulator 10′ and thus the first pre-planned actual path.
When the processor 21′ determines a potential collision of the second robotic manipulator 12′ and the first robotic manipulator 10′, it causes the second robotic manipulator to deviate from the second pre-planned path and instead move in a dodging path (away from the first pre-planned actual path and thus the first robotic manipulator) based upon a sequence of dodge velocities.
The processor 21′ may select each of the sequence of dodge velocities from a set of potential dodge velocities. Such a set of potential dodge velocities is illustrated in the two-dimensional graph of
The dodge velocities may also be based, among other factors, on a torque on a joint of the second robotic manipulator 12′ and/or a kinetic energy of the second robotic manipulator (or based upon some objective function dealing with the robot—some kinematic, dynamic, etc., rule for choosing desired velocities—however optimal is defined for the robot system). For example, certain joints of the second robotic manipulator 12′ may have a torque limit, and moving the robotic manipulator at a velocity that would cause those joints to exceed that torque limit is undesirable. Basing the dodge velocities on a torque on a joint or a kinetic energy of the second robotic manipulator may advantageously help ensure that the second robotic manipulator 12′ is not damaged during movement according to the sequence of dodge velocities, or that a tool or object carried by the second robotic manipulator is not damaged during movement according to a dodge velocity. The determination of these dodge velocities will be described in detail below.
With additional reference to
The second controller 20″ comprises a processor 21″, memory 22″, drive signal generator 23″, and communications interface 24″ as described above with reference to the second controller 20′. However, here, the memory 22″ stores geometric models of the first and second robotic manipulators. The processor 21″ of the second controller 20″ may generate the geometric models, or this data may be communicated to the second controller and stored in the memory 22″ thereof.
To generate the geometric models, each robotic manipulator 10″, 12″ is first represented as a set of geometric primitives. The geometric primitives include points, line segments, and rectangles. To complete the geometric models, the first and second robotic manipulators 10″, 12″ as then represented as swept spherical bodies. These swept spherical bodies comprise the set of points that are at a specified distance/radius from a respective geometric primitive. If the primitive is a point, the resulting body is a sphere. If the primitive is a line segment, the body is a cylinder with spherical endcaps, also known as a cyclisphere. If the primitive is a rectangle, the body is a box with rounded edges. For ease of reading, these bodies will hereinafter be referred to as “cyclispherical shells,” but it should be appreciated that they may take other shaped, as described above.
As shown in
The primary advantage of using such a method for approximating the robotic manipulators of the robotic apparatus is the simplicity in calculating the distance between the robotic manipulators. The distance d(j,k) between objects j and k is simply
d(j,k)=dp(j,k)−rj−rk (1)
where dp(j,k) is the distance between the primitives of objects j and k and rj and rk are the radii of objects j and k respectively. Calculating the distance between the primitives (points, line segments, rectangles) has a relatively straightforward closed-form solution in some cases.
Increasing the number of cyclispherical shells used per robotic manipulator can improve the accuracy of the geometric model, but at the cost of increased computation time. Those skilled in the art will appreciate that this is not the only possible method of simplifying the geometric model of the robotic apparatus. Any representation of the robotic apparatus that allows geometric calculations to be performed quickly would be an acceptable substitute.
As will be described below with respect to the calculation of a sequences of dodge velocities, a constraint generation portion of this collision avoidance scheme creates limits on the motion of the second robotic manipulator 12″ based on how close it is to colliding with the first robotic manipulator 10″. This is accomplished by creating a set of three buffer zones 26″, 27″, 28″ for each geometric primitive. This is illustrated in
In applying this collision avoidance scheme to the robotic apparatus of
Referring still to
Referring again to
The processor 21″ determines a distance between a shell of the second robotic manipulator 12″ and a shell of the first robotic manipulator 10″, based upon the visual sensor 25″, to detect a potential collision between the first and second robotic manipulators 10″, 12″. The potential collision may be detected based upon a buffer zone of the second robotic manipulator 12″ overlapping a buffer zone of the first robotic manipulator 10″.
In response to a potential collision, the processor 21″ controls the second robotic manipulator 12″ for movement in a dodge path to avoid a collision with the first robotic manipulator 10″. The dodge path may depend upon which buffer zones of the first and second robotic manipulators 10″, 12″ overlap each other. For example, if the reaction buffer zones 26″ of the first and second robotic manipulators 10″, 12″ overlap, the dodge path may take the second robotic manipulator 12″ away from the first robotic manipulator 10″, but at a lesser speed than the approach speed thereof. Since the reaction 26″ buffer zones may be defined so as to be relatively large in comparison to the geometric model of their respective robotic manipulator, the second robotic manipulator 12″ may simply not need to move at a speed greater or equal to the approach speed of the first robotic manipulator 10″. Movement at such a lesser speed along the dodge path may conserve power, or may reduce wear and tear on the second robotic manipulator 12″.
If the equilibrium buffer zones 27″ of the first and second robotic manipulators 10″, 12″ overlap each other, the dodge path may take the second robotic manipulator 12″ away from the first robotic manipulator 10″ at the approach speed thereof. This may help to avoid a collision that would otherwise be unavoidable were the second robotic manipulator 12″ to move at a slower speed. If the object buffer zones 28″ of the first and second robotic manipulators 10″, 12″ contact each other, the dodge path may be an emergency stop. Moreover, if the object buffer zones 28″ of the first and second robotic manipulators 10″, 12″ contact each other, the second controller 20″ may shut down the robotic apparatus 9″.
For compactness, each geometric primitive and the three shells associated with it shall collectively be referred to as a “body,” denoted b. The set of bodies can be divided into two sets. The set of “robotic manipulator” bodies, R, are the bodies that are a part of the second robotic manipulator. The set of “object” bodies, O, are the other bodies (including the first robotic manipulator).
For each robotic manipulator body bjεR it is helpful to then determine the set of the bodies bkε(R∪O) that could possibly collide with it. This is done in three steps. The first step is performed off-line prior to executing the collision avoidance scheme, and includes manually removing potential collision pairs (bj, bk) from the list of possible collisions. Potential collision pairs removed in this step may not be checked for at any point in the collision avoidance scheme. This is primarily used to allow neighboring bodies to overlap each other without being flagged as a collision.
For example, in
The second step is performed after beginning execution of the collision avoidance scheme. The purpose of this step is to quickly check whether potential collision pairs (bj, bk) are far enough apart that they can be ignored at this instant. To implement this step, bounding boxes have been constructed around bodies in the workspace. The bounding boxes of each potential collision pair (bj, bk) are compared and if the bounding boxes do not overlap, that (bj, bk) pair can be excluded from the list of possible colliding bodies. This step is fast and may quickly eliminate potential collisions from consideration.
In the third step the actual distance between the bodies is calculated based upon the pairs (bj, bk) that were not eliminated in the first two steps. In particular, the distance between the geometric primitives associated with the bodies is calculated. Because of the simple geometric primitives chosen, this can be calculated very quickly. The output of this step is the shortest distance dp(j,k) between the primitives of (bj, bk) and the points on each of the primitives corresponding to this shortest distance. For the ith pair of (bj, bk) considered, this distance is referred to as dpi and these points are referred to as cpi (the “collision point”), and ipi (the “interfering point”), where cpi is on body bj and ipi is on body bk.
It is worth noting that it may be helpful to modify the collision and distance check method described hereinbefore if a different geometric modeling approach were used.
Given the current state of the robotic apparatus (as represented by the geometric model) and the set of possible collisions, it is helpful to generate constraints on the allowed motion of the robot in order to avoid these collisions. In addition to avoiding collisions (both with the first robotic manipulator and with itself), it is helpful for the motion of the second robotic manipulator to not violate its joint angle limits or joint velocity limits.
To effectuate this, a set of linear inequality constraints on the commanded velocity of the first robotic manipulator is created. For convenience, these limits are formulated in the end-effector (task space) in the implementation described here. Note that because the Jacobian mapping of joint velocities to task space velocities is linear, these constraints can be expressed in either the joint space or the task space and they will still be linear. As a result, the set of allowable velocities of the robot at this instant forms a convex set. This structure is advantageous as it allows formulation of the velocity selection problem as a convex optimization. This optimization can be calculated very efficiently, which may allow collision-free motions to be computed in real time.
The form of the convex optimization problem is
minimize ƒ0(x)
subject to ƒi(x)≦0,i=1, . . . ,κ (2)
where there are κ simultaneous inequality constraints. The objective function ƒ0(x) can be any function that produces desirable or “optimal” behavior when minimized. It is desirable to minimize the error between the actual end-effector linear and angular velocity (vT wT)eeT and the desired end-effector linear and angular velocity (vT wT)ee,dT. Thus, the following function was chosen.
where W is a weighting matrix with appropriate unit terms such that all of the elements of x have the same units:
For example, a valid choice would be α=1m/rad. In other cases it may be desirable to have additional criteria included in the objective function. For example, with redundant manipulators additional terms can be added to the objective function to represent optimal use of the self-motion of the robot, provided the resulting ƒ0(x) is a convex, twice-differentiable function.
Given the objective function, it is helpful to define the constraint functions ƒi(x). Constraints due to joint angle limits and joint velocity limits are generated.
There are two different cases of joint limits: joint angle limits and joint velocity limits. As explained above, it may be desirable to base the dodge velocities on these limits, so it is helpful to accommodate both cases with a single set of upper and lower joint velocity limits. To do this, a vector that contains all of the upper limits on allowable joint velocities at this instant is formed
where the value of each {dot over (q)}ul
That is, the joint i is nominally upper bounded by a user-specified velocity limit (typically the rated velocity limit of the joint), but if joint i has begun to exceed its joint limit its upper velocity limit is 0 and the angle may not be allowed to increase further. A similar vector of lower limits on allowable joint velocities is created:
Given the values for the upper and lower joint limits in (7) and (9) the instantaneous limit on {dot over (q)}i can be stated as
{dot over (q)}ll
Equation (10) may be restated using (6) and (8) as
ŝiT{dot over (q)}ll≦ŝiT{dot over (q)}≦ŝiT{dot over (q)}ul (11)
where ŝi is a vector that selects the terms corresponding to the ith joint:
ŝ1=[1 0 . . . 0]T (12)
Note that (^) notation is used to indicate that a vector is a unit vector. The constraint functions ƒi(x) corresponding to the right portion of (11) (i.e. the upper limits) are:
ŝiT{dot over (q)}≦ŝiT{dot over (q)}ul (13)
using the Jacobian relationship for serial manipulators
and assuming that the second robotic manipulator is not in a singular configuration, J can be inverted and substitute (14) into (13):
Using the fact that w−1w=1, it can be inserted into (15) and group terms:
Dividing through by the magnitude of (17) produces:
Thus the upper joint limit on joint i reduces to
âul
The constraint functions fi(x) corresponding to the left portion of (11) (i.e. the lower limits) may then be created similarly:
Combining coefficients of (19) and (24) for all n joints produces
Then the set of 2 n constraints due to joint limits simplifies to
As described above, the collision and distance check generates pairs of potential collision points: the collision point cpi and the interfering point ipi. For each potential collision, it desirable to constrain the velocity of cpi toward ipi. Graphically, this is illustrated in
The limit on the motion of cpi towards ipi may be restated as
ĉiTVcp
where υai is the greatest allowed “approach velocity” of cpi towards ipi. The manner in which υai is specified can be varied depending on the desired collision avoidance behavior. In the described embodiments, multiple shells (reaction, equilibrium, and safety) have been constructed for each body in order to create a smoothed approach velocity υai, which is expressed as:
where dpi is the distance cpi between ipi, rri towards is the sum of the reaction radii of the two bodies, rei is the sum of the equilibrium radii of the two objects, and υhalfi is the greatest approach velocity allowed when dpi is halfway between rri and rei. The resulting greatest allowed approach velocity is plotted in
When the objects are separated by exactly the sum of their equilibrium radii, the avoidance velocity should equal the velocity of the interfering point along the collision direction to ensure that they do not get any closer. As the separation distance increases to the sum of the reaction radii, the avoidance velocity increases to infinity, effectively ignoring the constraint. When the objects are closer than the sum of their equilibrium radii, the avoidance velocity is lowered to force them apart. If dpi drops below rsi (the sum of the safety radii of the two bodies) an emergency stop of the robotic apparatus may be triggered. Note that the rule chosen in (29) can be replaced by any equivalent function.
Given υai the left side of (28) should be expanded to express the velocity of cpi in terms of the robot joint velocities. This is accomplished by treating cpi as if it were the end-effector of the robotic apparatus and creating a “partial Jacobian matrix” (Jcp
vcp
In the case shown in
where there are μ joints between cpi and the ground. In the case of potential collision between the robotic manipulator and itself, as is shown in
Thus the effects of these joints can be ignored and Jcp
where there are η−1 joints between ipi and the ground. Substituting (30) into (28) produces
ĉiTJcp
Using (14) and substituting for {dot over (q)}
and using the same approach as (16), w−1w is inserted and terms are grouped:
Eqn. (35) is thus reduced to
Dividing through by the magnitude of (36) produces:
Thus the limits due to the potential collision (28) reduce to
âciTx≦bci (38)
Combining the coefficients of (39) for m potential collisions produces
which can be combined with (26)
such that the constraints on the manipulator's velocity due to joint angle limits, joint velocity limits, potential collisions with other objects, and potential collisions with itself are expressed within the single set of equations
Ax≦b (41)
To achieve the desired form of the constraints, (42) is rearranged to
Ax−b≦0 (42)
where each fi(x) is represented by the row of the left side of (43). Thus the total number of constraints is k=2 n+m.
Before continuing, the special cases that cause this method to fail shall be discussed. First, it is helpful for the robotic manipulator to be in a non-singular configuration. This is typically achieved through appropriate selection of joint limits to avoid singular configurations or using additional software to transition the robotic manipulator through the singularity and then resuming the collision avoidance algorithm. Also, in the case where the range space of Jcp
Restating (2), the collision avoidance algorithm has been reduced to a constrained optimization of the form:
minimize ƒ0(x)
subject to ƒi(x)≦0,i=1, . . . ,κ (43)
The objective function ƒ0(x) and constraint functions ƒ1(x), . . . , ƒ0(x) are detailed in (3) and (42), respectively. In addition, ƒ0, . . . , ƒκ: Rq→R are convex and twice continuously differentiable. Thus convex optimization techniques are applicable.
Convex optimization is a subject of extensive study within mathematics. Here, an interior point method of solving the convex optimization has been chosen. In particular, the logarithmic barrier method is employed. This method is well-suited because it is very fast, can handle an arbitrarily large number of inequality constraints, and the accuracy of the result (bounding the error) can be mathematically proven.
Briefly, the optimization is illustrated in
{dot over (q)}opt=J−1W−1xopt (44)
These joint velocities are commanded to the robotic manipulator. After they are executed for the duration of the specified time interval, the algorithm is repeated.
With respect to flowchart 30 of
At Block 34, a distance between the second robotic manipulator and the first robotic manipulator is determined and compared to a threshold distance to determine a potential collision. At Block 35, a decision is made. If there is no potential collision, at Block 36, the movement of the second robotic manipulator along the second pre-planned intended path is continued. If there is a potential collision, at Block 37, the second movement of the second robotic manipulator is deviated from the second pre-planned intended path to move in a dodge path away from, but closely following, the first pre-planned actual path. Block 38 indicates the end of the method.
Many modifications and other embodiments of the invention will come to the mind of one skilled in the art having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is understood that the invention is not to be limited to the specific embodiments disclosed, and that modifications and embodiments are intended to be included within the scope of the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
4412293 | Kelley et al. | Oct 1983 | A |
4578757 | Stark | Mar 1986 | A |
4831549 | Red et al. | May 1989 | A |
5150452 | Pollack et al. | Sep 1992 | A |
5204942 | Otera et al. | Apr 1993 | A |
5247608 | Flemming et al. | Sep 1993 | A |
5280431 | Summerville et al. | Jan 1994 | A |
5457367 | Thorne | Oct 1995 | A |
5561742 | Terada et al. | Oct 1996 | A |
5579444 | Dalziel et al. | Nov 1996 | A |
5675720 | Sato et al. | Oct 1997 | A |
5798627 | Gilliland et al. | Aug 1998 | A |
5920678 | Watanabe et al. | Jul 1999 | A |
5959425 | Bieman et al. | Sep 1999 | A |
6004016 | Spector | Dec 1999 | A |
6212444 | Kato et al. | Apr 2001 | B1 |
6243621 | Tao et al. | Jun 2001 | B1 |
6445964 | White et al. | Sep 2002 | B1 |
6526373 | Barral | Feb 2003 | B1 |
6717382 | Graiger et al. | Apr 2004 | B2 |
7298385 | Kazi et al. | Nov 2007 | B2 |
7322510 | Kraus | Jan 2008 | B2 |
20010004718 | Gilliland et al. | Jun 2001 | A1 |
20030225479 | Waled | Dec 2003 | A1 |
20050246062 | Keibel | Nov 2005 | A1 |
20050273200 | Hietmann et al. | Dec 2005 | A1 |
20060108960 | Tanaka et al. | May 2006 | A1 |
20060149418 | Anvari | Jul 2006 | A1 |
20060241813 | Babu et al. | Oct 2006 | A1 |
20080114492 | Miegel et al. | May 2008 | A1 |
20080150965 | Bischoff et al. | Jun 2008 | A1 |
20080288109 | Tao et al. | Nov 2008 | A1 |
20080319557 | Summers et al. | Dec 2008 | A1 |
20090003975 | Kuduvalli et al. | Jan 2009 | A1 |
20090043440 | Matsukawa et al. | Feb 2009 | A1 |
Number | Date | Country |
---|---|---|
1901151 | Mar 2008 | EP |
2009055707 | Apr 2009 | WO |
Number | Date | Country | |
---|---|---|---|
20130151008 A1 | Jun 2013 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 12559698 | Sep 2009 | US |
Child | 13760545 | US |