Reducing Kinematic Error

20250070698 · 2025-02-27

Assignee

Inventors

Cpc classification

International classification

Abstract

A method includes providing a kinematic correction, outputting a first drive control signal specifying a motor speed having a first kinematic correction output based on a first parameter vector; extracting a frequency component and determining a first feedback vector; outputting to the motor a second drive control signal specifying a motor speed as a sum of the standard speed and a second kinematic correction output based on a second parameter vector; extracting a frequency component and determining a second feedback vector defining a second feedback amplitude and a second feedback phase; subtracting the first feedback vector from the second feedback vector to obtain a feedback difference vector; transforming the feedback difference vector into a difference; applying the transformation to the second feedback vector to obtain a third parameter vector; and programming the kinematic correction generator using the third parameter vector.

Claims

1. A method for reducing kinematic error in a joint between a distal portion and a proximal portion of a manipulator, the joint having associated to it a motor mounted in one of said portions and coupled to the other one of said portions for driving rotation of the distal portion relative to the proximal portion by a reduction gear, the method comprising: providing a kinematic correction generator that is programmable using a parameter vector and outputting, based on said parameter vector and a position input, a kinematic correction, which is a sum of at least one sinusoid having a frequency which is a frequency of rotation of the motor or of a periodic event in the reduction gear occurring at a higher frequency than the rotation of the distal portion, or an integer multiple thereof, and an amplitude and a phase defined by said parameter vector; outputting to the motor a first drive control signal specifying a motor speed which is a sum of a standard speed and a first kinematic correction output by the kinematic correction generator based on a first parameter vector; extracting, from an evaluation signal received from the joint in response to the first drive control signal, at least one frequency component having the frequency of the at least one sinusoid, and determining a first feedback vector defining a first feedback amplitude and a first feedback phase of said frequency component; outputting to the motor a second drive control signal specifying a motor speed which is a sum of the standard speed and a second kinematic correction output by the kinematic correction generator based on a second parameter vector; extracting, from an evaluation signal received from the joint in response to the second drive control signal, a frequency component having the frequency of the at least one sinusoid, and determining a second feedback vector defining a second feedback amplitude and a second feedback phase of said frequency component; subtracting said first feedback vector from said second feedback vector to obtain a feedback difference vector; finding a transformation which transforms said feedback difference vector into a difference between second and first parameter vectors; applying the transformation to the second feedback vector to obtain a third parameter vector; and programming the kinematic correction generator using the third parameter vector.

2. The method of claim 1, wherein the amplitude defined by said first parameter vector is zero.

3. The method of claim 1, wherein the standard speed is a constant speed.

4. The method of claim 1, wherein extracting the frequency component having the frequency of the at least one sinusoid comprises high-pass filtering the evaluation signal, a cutoff frequency optionally being lower than the motor frequency and higher than the motor frequency multiplied with the reduction ratio of the reduction gear.

5. The method of claim 1, wherein the standard speed or a harmonic thereof corresponds to a resonance frequency of the manipulator.

6. The method of claim 5, further comprising at least one of: controlling the distal portion to rotate at various speeds and choosing as the standard speed the one of those various speeds where vibration of the manipulator is strongest; and/or controlling the distal portion to assume a configuration where its moment of inertia is maximized.

7. The method of claim 1, wherein the evaluation signal is representative of motor torque.

8. The method of claim 1, wherein the reduction gear is a harmonic gear having a circular spline with i.sub.c teeth and a flex-spline with i.sub.f teeth, and the frequency of the at least one sinusoid is i.sub.f/i.sub.c times the rotation frequency of the motor or an integer multiple thereof.

9. The method of claim 8, wherein the integer multiple is 2i.sub.f/i.sub.c times the rotation frequency.

10. The method of claim 1, wherein the kinematic correction is a sum of two or more sinusoids.

11. The method of claim 1, wherein the step of providing the kinematic correction generator comprises programming a processor to operate as the kinematic correction generator.

12. A robotic system, comprising: a manipulator having a proximal portion, a distal portion, a joint connecting said proximal and distal portions, and a motor for driving rotation of the joint; and a controller connected to the motor and adapted to carry out: providing a kinematic correction generator that is programmable using a parameter vector and outputting, based on said parameter vector and a position input, a kinematic correction, which is a sum of at least one sinusoid having a frequency which is a frequency of rotation of the motor or of a periodic event in the reduction gear occurring at a higher frequency than the rotation of the distal portion, or an integer multiple thereof, and an amplitude and a phase defined by said parameter vector; outputting to the motor a first drive control signal specifying a motor speed which is a sum of a standard speed and a first kinematic correction output by the kinematic correction generator based on a first parameter vector; extracting, from an evaluation signal received from the joint in response to the first drive control signal, at least one frequency component having the frequency of the at least one sinusoid, and determining a first feedback vector defining a first feedback amplitude and a first feedback phase of said frequency component; outputting to the motor a second drive control signal specifying a motor speed which is a sum of the standard speed and a second kinematic correction output by the kinematic correction generator based on a second parameter vector; extracting, from an evaluation signal received from the joint in response to the second drive control signal, a frequency component having the frequency of the at least one sinusoid, and determining a second feedback vector defining a second feedback amplitude and a second feedback phase of said frequency component; subtracting said first feedback vector from said second feedback vector to obtain a feedback difference vector; finding a transformation which transforms said feedback difference vector into a difference between second and first parameter vectors; applying the transformation to the second feedback vector to obtain a third parameter vector; and programming the kinematic correction generator using the third parameter vector.

Description

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING(S)

[0005] FIG. 1 is a block diagram of a robotic system in accordance with the disclosure.

[0006] FIG. 2 is a perspective view of the manipulator of the system of FIG. 1.

[0007] FIG. 3 is a cross section of a harmonic drive gear in accordance with the disclosure.

[0008] FIG. 4 is a pose assumed by the manipulator while carrying out the method in accordance with the disclosure for one of its joints.

[0009] FIG. 5 is a pose assumed by the manipulator while carrying out the method in accordance with the disclosure for another of its joints.

[0010] FIGS. 6A, 6B, and 6C are charts showing vectors in accordance with the disclosure.

DETAILED DESCRIPTION OF THE INVENTION

[0011] FIG. 1 is a block diagram of a robot system comprising an articulated robot arm 1 and a controller 2, in which the method of the invention can be applied. The robot arm 1, shown in more detail in FIG. 2, has a stationary base 3 fixed to a support, and a plurality of links 4.sub.j, j=1 . . . 6 rotatably connected to each other and to the base 3 by joints 5.sub.j. The joint 5.sub.5 connecting links 4.sub.4, 4.sub.5 is concealed behind link 4.sub.5. Each joint 5.sub.j enables a rotation of the link 4.sub.j on its distal side by an axis 6.sub.j. Axis 6.sub.1 is vertical, axes 6.sub.2 and 6.sub.3 are horizontal; the orientations of the other axes vary. Each joint 5.sub.j has a motor associated to it for driving its rotation; the motor can be provided in a member on the proximal side of the joint and be connected to a member on the distal side thereof, or vice versa. In the robot arm of FIG. 2, joints 5.sub.1, 5.sub.2, 5.sub.3 have their motors in members on their proximal side, i.e. in base 3 and links 4.sub.1, 4.sub.5, respectively; joints 5.sub.3, 5.sub.4 and 5.sub.5 have the motors on their distal side, in links 4.sub.3, 4.sub.4 and 4.sub.5, respectively.

[0012] Motors 9.sub.2, 9.sub.3, 9.sub.4 associated to joints 5.sub.2, 5.sub.3, 5.sub.4 and reduction gears 10.sub.2, 10.sub.3, 10.sub.4 connecting these motors to links 4.sub.2, 4.sub.2 and 4.sub.3, respectively, are shown in FIG. 1. Each motor 9.sub.j is provided with a current sensor 7.sub.j for measuring its winding current. Since measurement data from sensor 7.sub.j are representative of a torque applied by the motor 9.sub.j they will be referred to below as torque data .sub.mot. A resolver 8.sub.j is placed at each joint 5.sub.j so as to measure its rotation angle q*.sub.arm,j.

[0013] The reduction gear 10.sub.j is a harmonic gear, shown in cross section in FIG. 3, in which a wave generator 16 is rigidly coupled to an output shaft 17 of motor 9.sub.j, and is pressing teeth of a flex-spline 18 into local engagement with a circular spline 19 surrounding it. When the number of teeth of the circular spline 19 is i.sub.c and that of the flexspline 18 is i.sub.f, the transmission ratio of the gear 10.sub.j is

[00001] R j = i f - i c i f .

Since the flexspline is 18 rotating in a direction opposite to that of the wave generator 16, points of the two currently in contact will meet again after the wave generator 16 has rotated by 2i.sub.f/i.sub.c, slightly less than a complete turn.

[0014] Controller 2 comprises a trajectory generator 11 for outputting, with an appropriate timing, position and speed commands to joint controllers 12.sub.j associated to a specific joint 5.sub.j as would be required for having a reference point of link 4.sub.6 or of the tool mounted to it follow a predetermined trajectory assuming that the joints are free from kinematic error. Each joint controller 12.sub.j further has associated to it a kinematic error calculator 13.sub.j for calculating a kinematic error correction q.sub.ke, {dot over (q)}.sub.ke and adders 14.sub.j, 15.sub.j for superimposing the kinematic error correction onto the commands q.sub.mot,j, {dot over (q)}.sub.mot,j output by the trajectory generator 11, and providing corrected commands {circumflex over (q)}.sub.mot,j=q.sub.mot,j+q.sub.ke, {circumflex over ({dot over (q)})}.sub.mot,j={dot over (q)}.sub.mot,j+{dot over (q)}.sub.ke as will be explained in detail below.

[0015] The method of the invention can be carried out for each joint 5.sub.j at a time.

[0016] In a first step of the method of the invention (S1, see FIG. 5), the manipulator 1 is brought into a configuration where a resonance frequency of it components on the distal side of joint 5.sub.j is maximized by moving the centers of gravity of links 4.sub.j-4.sub.6 as far away from axis 6.sub.j as possible, as shown in FIG. 4 for j=2. A counting index i is set to 1, a fluctuation reference F.sub.0 is set to 0, and a step width {dot over (q)} is initialized.

[0017] A rotation speed {dot over (q)}.sub.mot,j for motor 9.sub.j is set (S2), and trajectory generator 11 controls a rotation around axis 6.sub.j at nominally constant speed by outputting angle commands q.sub.mot,j to motor 9.sub.j that have a constant rate of change {dot over (q)}.sub.mot,j.

[0018] In step 3, while the joint 5.sub.j is being rotated at the speed set in step S2, imperfections of the motor 9.sub.j and the reduction gear 10.sub.j cause the current detected by sensor 7.sub.j to fluctuate. A measure F.sub.i of this fluctuation, e.g., a standard deviation of currents measured while carrying out the rotation, is recorded (S4).

[0019] If in step S5, F.sub.i-F.sub.i-1 is found to be positive, and |{dot over (q)}.sub.mot,j| is above a pre-determined threshold, i is incremented and {dot over (q)}.sub.mot,j is incremented by {dot over (q)} in step S6, and the method returns to step S3. If F.sub.i-F.sub.i-1 is found to be negative, {dot over (q)} is multiplied by a factor between 0 and 1 (S7) before proceeding to step S6. When successive multiplications by have caused {dot over (q)} to drop below the threshold, the amount F of fluctuation has reached a maximum, and it can be assumed that {dot over (q)}.sub.mot,j is the critical speed of joint 5.sub.j.

[0020] Each time step S3 is executed, a series of motor positions and associated torque data Imot from sensor 7.sub.j are recorded. The last one of these series, comprising N pairs of measurement values .sub.mot.sup.1, .sub.mot.sup.2, . . . , .sub.mot.sup.N and motor or arm positions at which these were obtained is retained for evaluation. The positions may be taken from commands q.sub.mot,j.sup.1, q.sub.mot,j.sup.2, . . . , q.sub.mot,j.sup.N of the trajectory generator, preferably they are derived from readings q.sub.arm,j* from resolver 8.sub.j taken simultaneously with the torque measurement values.

[0021] Optionally, a spectral analysis of this series may be carried out in order to find out the frequency components that provide the largest contribution to the fluctuation of the torque data. Else it may simply be assumed that components which have been found to provide an important contribution in other manipulators will do so here, too.

[0022] In step S9, a sum of sinusoids .sub.i=1.sup.MA.sub.i,j sin (k.sub.iq.sub.mot,j+.sub.i,j) of M harmonics is fitted to the N collected data points with solving b=p for the parameter vector p with

[00002] = [ 1 sin ( k 1 q mot , j 1 ) cos ( k 1 q mot , j 1 ) .Math. sin ( k M q mot , j 1 ) cos ( k M q mot , j 1 ) .Math. .Math. .Math. 1 sin ( k 1 q mot , j N ) cos ( k 1 q mot , j N ) .Math. sin ( k M q mot , j N ) cos ( k M q mot , j N ) ] ( 1 ) b = [ mot 1 .Math. mot N ] N and p = [ C A S , 1 A C , 1 .Math. A S , M A C , M ] 1 + 2 M ,

wherein k.sub.i, i=1, . . . , M refers to the important frequency components mentioned above. If it is known that the most important frequency components are e.g. at twice the rotation frequency of the motor 9.sub.j and at 2*i.sub.f/i.sub.c times the rotation frequency of the motor 9.sub.j, we may set M=2, k.sub.2=2 for the second harmonic of the motor rotation and k.sub.1=2i.sub.f/i.sub.c for a nearby contribution of the harmonic gear. The parameter vector p, referred to below as the feedback parameter vector, contains a sine and cosine value A.sub.S,i, A.sub.C,i for each frequency component (which is equivalent to characterizing the component by an amplitude and a phase) and a constant offset C to handle a constant bias.

[0023] If the joint is subject to position-dependent gravity load (as is the case for joint 5.sub.2 in FIG. 4), the torque data can be subjected to high-pass filtering (S8) prior to their evaluation in step S9. The transmission ratio of gear 10.sub.j being R.sub.j, the filtering threshold frequency should be between the rotation frequency of motor 9.sub.j and R.sub.j times this frequency.

[0024] In step S10, a second parameter vector

[00003] p = [ C A S , 1 A C , 1 .Math. A S , M A C , M ]

is arbitrarily defined, and is

[0025] transmitted to kinematic error calculator 13.sub.j, thereby enabling it to output a kinematic error compensation

[00004] q k e = .Math. i = 1 M A i , j sin ( k i q mot , j + i , j ) ( 2 ) q k e = .Math. i = 1 M k i A i , j cos ( k i q mot , j + i , j ) ,

wherein A.sub.i,j={square root over (A.sub.S,i.sup.2+A.sub.C,i.sup.2 )}and .sub.i,j=tan.sup.1(A.sub.C,i/A.sub.S,i), when q.sub.mot,j is the motor angle output by trajectory generator 11. In step S11, another rotation around axis 6.sub.j is carried out, in which the motor receives commands q.sub.mot,j, {dot over (q)}.sub.mot,j to which compensations q.sub.ke(q.sub.mot,j), {dot over (q)}.sub.ke(q.sub.mot,j) have been added in adders 14.sub.j, 15.sub.j. Torque data b=(.sub.mot.sup.1, .sub.mot.sup.2, . . . , .sub.mot.sup.N).sup.T resulting therefrom are collected, and are evaluated (S12) as described above in steps S8, S9 for torque data b, whereby a second feedback parameter vector {tilde over (p)}=[{tilde over (C)} .sub.S,1 .sub.C,1 . . . .sub.C,;].sup.T is obtained.

[0026] Processing of these data (S12) is described referring to FIG. 6. FIG. 6 is a series of diagrams showing components A.sub.S,i, A.sub.C,i of an arbitrary frequency component k.sub.i of a parameter vector. It should be understood that this two-dimensional representation is chosen only because more than two dimensions are difficult to illustrate graphically; i.e. what the diagrams show are in fact two-dimensional projections of multi-dimensional vectors. The left-hand part of each diagram shows in solid lines components of a parameter vector used by kinematic error calculator 13.sub.j to calculate the kinematic error compensation according to eq. (2); the right-hand part shows components of the parameter vector extracted from the torque data using eq. (1).

[0027] FIG. 6A illustrates the case of step S3 where the parameter vector used by the kinematic error calculator 13.sub.j is 0, but a vector p0 (of which components p.sub.i are shown) is derived from the torque data in step S9.

[0028] FIG. 6B illustrates components p.sub.i=[A.sub.S,i, A.sub.C,i] of the second parameter vector p and {tilde over (p)}.sub.i=[.sub.S,i, .sub.C,i] of the second feedback vector {tilde over (p)} resulting from it. If there wasn't the underlying imperfection that yields the first feedback vector p0 for a parameter vector 0, the second parameter vector p could be expected to produce an ideal feedback vector p=[.sub.S,i, .sub.C,i]={tilde over (p)}p where p.sub.i is related to p.sub.i by an angle .sub.i between the two and a gain factor

[00005] g i = A S , i 2 + A C , i 2 / A S , i 2 + A C , i 2 ,

where .sub.S,i=.sub.S,iA.sub.S,i and .sub.C,i=.sub.C,iA.sub.C,i. I.e. .sub.i and g.sub.i are parameters of a transformation that would transform components p.sub.i of FIG. 6B into components p.sub.i. With these parameters known, it is possible to find a parameter vector p which, by the same transformation, is transformed into p (FIG. 6C).

[0029] This parameter vector p is transmitted to kinematic error calculator 13.sub.j in step S13, so as to cause it, in the future, to calculate the kinematic error correction by inserting components of p in eq. (2).

[0030] This process is carried out for one joint after the other. When afterwards (S14) the controller 2 enters production mode with all kinematic error calculator 13.sub.j, applying the correction of eq. 2, speed fluctuations of the reference point due to imperfections of the reduction gears 10.sub.j are substantially cancelled.

[0031] The object of the present invention is to provide simple and cost-efficient way of reducing kinematic error in a robot joint.

[0032] According to an aspect of the present invention, this object is achieved by a method for reducing kinematic error in a j-th joint between distal and proximal portions of a manipulator, the joint having associated to it a motor mounted in one of said portions and coupled to the other one of said portions for driving rotation of the distal portion relative to the proximal portion by a reduction gear, the method comprising the steps of: [0033] providing a kinematic correction generator which is programmable using a parameter vector and outputting, based on said parameter vector and a position input, a kinematic correction which is a sum of at least one sinusoid having [0034] a frequency which is a frequency of rotation of the motor or of a periodic event in the reduction gear occurring at a higher frequency than the rotation of the distal portion, or an integer multiple thereof, and [0035] an amplitude and a phase defined by said parameter vector, [0036] outputting to the motor a first drive control signal specifying a motor speed which is a sum of a standard speed and a first kinematic correction output by the kinematic correction generator based on the first parameter vector; [0037] extracting, from an evaluation signal received from the joint in response to the first drive control signal, at least one frequency component having the frequency of the at least one sinusoid, and determining a first feedback vector defining a first feedback amplitude and a first feedback phase of said frequency component, [0038] outputting to the motor a second drive control signal specifying a motor speed which is a sum of the standard speed and a second kinematic correction output by the kinematic correction generator based on the second parameter vector; [0039] extracting, from an evaluation signal received from the joint in response to the second drive control signal, a frequency component having the frequency of the at least one sinusoid, and determining a second feedback vector defining a second feedback amplitude and a second feedback phase of said frequency component, [0040] subtracting said first feedback vector from said second feedback vector to obtain a feedback difference vector; [0041] finding a transformation which transforms said feedback difference vector into a difference between second and first parameter vectors, [0042] applying the transformation to the first feedback vector to obtain a third parameter vector, [0043] programming the kinematic correction generator using the third parameter vector.

[0044] In a preferred embodiment, the above processing is simplified by choosing the first parameter vector to define an amplitude of the at least one sinusoid to be zero. The sinusoid can be defined as a weighted sum of sine and cosine functions; in that case weighting coefficients of both would have to be zero. Alternatively it can be defined as a sine or cosine function having an amplitude and a phase; when the amplitude is zero here, the phase has no physical significance and can be assigned any value.

[0045] In order to facilitate processing of the evaluation signal, the standard speed should be constant or, at least, substantially constant.

[0046] The standard speed can be regarded as substantially constant if effects of external forces acting on the distal portion on the evaluation signal, due e.g. to the weight of the distal portion driving or opposing the movement of the distal portion, can be suppressed by high-pass filtering the evaluation signal. Due to the reduction gear, the speed of rotation of the motor will be much higher than that of the joint. Since the external forces are usually proportional to a sinusoid of the joint angle, these can be suppressed by setting a cutoff frequency lower than the motor frequency and higher than the motor frequency multiplied with the reduction ratio of the reduction gear.

[0047] The standard speed or a harmonic thereof should correspond to a resonance frequency of the manipulator, i.e. the motor frequency needed to drive the distal portion at the standard speed or a harmonic thereof, preferably the second harmonic, should equal the resonance frequency.

[0048] This speed doesn't have no be known in advance; rather, finding it can be a preparatory step of the method of the invention. Specifically, in a preparatory stage of the method, the distal portion can be controlled to rotate at various speeds, and the speed where vibration of the manipulator is strongest can be chosen as the standard speed.

[0049] It can be assumed that a robot controller is trying to find the critical speed when a same movement of the distal portion is carried out repeatedly at different speeds, the speed changing from one iteration to the next, and the speed difference between successive iterations occasionally changing its sign, and/or the amount of the speed difference decreasing on each change of sign.

[0050] Since the moment of inertia of the manipulator or of parts of it is variable depending on configuration, and for the method of the invention it is desirable to have a low critical speed, the distal portion can be controlled to assume a configuration in which its moment of inertia is maximized, and which should be maintained while the method is carried out.

[0051] The evaluation signal can represent any measurable quantity that is susceptible to fluctuate due to an imperfection of the motor or the reduction gear. It could be the speed of rotation of the distal member itself, as measured e.g. by a dedicated angle sensor built into the manipulator for measuring rotation of the joint on a downstream side of the reduction gear, a laser scanner or other optical sensing means for observing the manipulator from outside, or the like. According to a preferred embodiment, the evaluation signal is representative of motor torque, since suitable sensing circuitry exists in many legacy manipulators, so that when the method of the invention makes use of this circuitry, it can be implemented in such manipulators by a control software update.

[0052] When a harmonic drive gear is used as a reduction gear, its wave generator will usually be connected to the motor output shaft, whereas its flex-spline is connected to the output shaft of the reduction gear, and the circular spline is fixed. When the number of teeth of the circular spline is i.sub.c, and that of the flexspline is i.sub.f, the orientation of the wave generator relative to the flexspline becomes identical after every i.sub.f/i.sub.c rotations of the wave generator ant the motor output shaft, causing contributions to the kinematic error at m i.sub.f/i.sub.c times the rotation frequency of the motor, where m is a small integer. Since is i.sub.f is slightly smaller than i.sub.c, contributions of the flex-spline and the circular spline to the kinematic error tend to have frequencies that differ slightly from those of the motor and the wave generator.

[0053] Experiments have shown that for most harmonic drive gears the most important contribution of the flex-spline and the circular spline is at is 2i.sub.f/i.sub.c times the rotation frequency.

[0054] In order to take account of various sources contributing to the kinematic error, in most practical cases the kinematic correction will be a sum of two or more sinusoids.

[0055] The kinematic correction generator can best be provided by programming a processor to operate as such, in particular by updating a control processor of a legacy manipulator to enable it to operate as the kinematic correction generator, or by updating the third parameter vector whenever maintenance or repair work has been carried out at the corresponding joint.

[0056] According to another aspect of the present invention, the object is achieved by a robotic system comprising a manipulator having a proximal portion, a distal portion, a joint connecting said proximal and distal portions and a motor for driving rotation of the joint, and a controller connected to the motor and adapted to carry out at least steps b. to i. of the method described above.

[0057] According to a further aspect, the object is achieved by a computer software product comprising a plurality of instructions which, when executed by a processor, cause the processor to carry out at least steps b. to i. of the method described above.

[0058] All references, including publications, patent applications, and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.

[0059] The use of the terms a and an and the and at least one and similar referents in the context of describing the invention (especially in the context of the following claims) are to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. The use of the term at least one followed by a list of one or more items (for example, at least one of A and B) is to be construed to mean one item selected from the listed items (A or B) or any combination of two or more of the listed items (A and B), unless otherwise indicated herein or clearly contradicted by context. The terms comprising, having, including, and containing are to be construed as open-ended terms (i.e., meaning including, but not limited to,) unless otherwise noted. Recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, unless otherwise indicated herein, and each separate value is incorporated into the specification as if it were individually recited herein. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples, or exemplary language (e.g., such as) provided herein, is intended merely to better illuminate the invention and does not pose a limitation on the scope of the invention unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the invention.

[0060] Preferred embodiments of this invention are described herein, including the best mode known to the inventors for carrying out the invention. Variations of those preferred embodiments may become apparent to those of ordinary skill in the art upon reading the foregoing description. The inventors expect skilled artisans to employ such variations as appropriate, and the inventors intend for the invention to be practiced otherwise than as specifically described herein. Accordingly, this invention includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the invention unless otherwise indicated herein or otherwise clearly contradicted by context.