Odin, a robot for odometry, http://philohome.com/odin/odin.htm
Bong-Su Cho, Woo-sung Moon, Woo-Jin Seo and Kwang-Ryul Baek,
Not applicable
Not applicable
There have been no prior disclosures by the inventor.
Field of the Invention
This invention relates generally to methods for correcting dead-reckoning navigation errors in vehicles which can move past an area having a patterned position marker. In particular, the area can be on a horizontal floor, such as a warehouse floor or a table top; or it can be on a wall, a ceiling, or some other surface. The present invention describes a class of patterns to be used for markers, and methods that an autonomous robot or other vehicle can use to analyze the patterns for determining coordinates to be used for navigational corrections.
The purpose of this invention is providing a simple, single-sensor, low-cost, highly-accurate system for correcting navigation errors as a vehicle moves without changing direction along a dynamically variable path which crosses one or more two-dimensional patterned markers.
The Prior Art
Mobile robots commonly use odometry for position estimation. From wheel rotation measurements a robot can estimate its direction and travel distance along its path, and use those estimates to approximate its position. It is well known that this dead-reckoning navigation suffers from accumulation of errors, so the use of dead-reckoning for extended travel needs a method for correcting the estimated position. Many methods are known.
For example, a U.S. Pat. No. 4,541,049 by S. H. N. Ahlbom, et al. derives corrections using signals from a vehicle-mounted set of optical sensors arranged in a line as the vehicle crosses known-position lines on the floor. The present invention is simpler in that it uses a single optical sensor.
The robot known as “Odin” (reference: “Odin, a robot for odometry”) uses a related method: the robot optically senses one leg of a known-position L-shaped pattern as it moves into the angle between the two legs, then it turns to cross and sense the other leg; it uses the positions sensed to determine its location. The present invention does not need to make large path direction changes to get the data necessary for navigation corrections.
U.S. Pat. No. 4,847,773 by C. C. van Helsdingen, et al. describes a grid of “passive” markers over which a sensor-equipped vehicle moves, but it does not describe markers with patterns similar to those of the present invention.
U.S. Pat. No. 5,111,401 by H. R. Everett, et al teaches the use of a stripe with position markers at various points; the robot moves until it encounters the stripe, then follows the stripe until it encounters a position marker, which it uses to establish its location by referring to predetermined coordinates of the position markers. The position markers are wider places on the stripe. The patent mentions that the “simplistic marker pattern” can be replaced with a more complex pattern providing unique identification of the marker, but it does not provide a detailed description of any such complex pattern. The present invention does not need stripe following, and it has complete descriptions of position markers.
The key concept for this invention is the fact that Fourier analysis can reveal features of an object that is the superposition of periodic structures. The prototype for the patterned position marker is a finite, two-dimensional region, such as a circular disk, for which the optical density varies with position in a particular way. It will be apparent to persons familiar with the appropriate art that optical density is not the only characteristic which is appropriate, but using it here simplifies the description. Generally, the optical density will vary periodically in various directions; more precise descriptions of this are given below. For simplicity, in the following the term marker will mean “patterned position marker.”
A vehicle using this invention carries a sensor which measures an average optical density in a small region. The exact nature of the averaging is not important, and the size of the region is not important as long as it is small compared with the sizes of features of the marker pattern, but large enough to reduce signal noise to an acceptable level. As the vehicle moves the sensor reports the measured density to the navigation computer (henceforth, computer) of the vehicle. The computer stores a portion of the measured density as a function f(s) of distance s along the sensor's path, and uses that function to determine corrections of navigation errors. In the following, this function f is called the path-density function, and the term sensor refers to the density sensor just described.
Some Definitions
Capital letters are used for quantities related to markers, and lower case letters are used for quantities related to the sensor path. Boldface sans-serif letters are used for vectors and points. Thus, points on sensor path 2 are lower-case letters p, p1, p2, etc., whereas the pattern reference point C0=<X0, Y0> on pattern axis 3 is upper case. For descriptions of specific notations, see T
For the part of the path shown, the motion starts at point p1, then goes through points p2, p3, p4, and p5, to p6. The part of the path between p2 and p5 is a straight line aligned with unit direction-of-motion vector v. The point p2 is the reference point for distance s (i.e., s=0 at p2) on the straight segment of the sensor's path.
Simple-pattern marker 1 (see
Within the marker, the optical density is given by the marker-density function F, which will appear as F(x, y) when it is necessary to show the x and y coordinates. At times it will be convenient to use the notation F(p), where p is the point with coordinates x and y. For a simple-pattern marker, F is a sinusoidal function of position in the direction of I0. The distance between adjacent density peaks measured in the direction of I0 is the wavelength Λ0. The function is independent of position in the direction of J0.
The function F has not been defined outside the circular disk of the marker, but the discussion which follows is simplified if F is extended to the entire x,y-plane. Therefore, let F+ denote the function which, throughout the x,y-plane, is constant on lines parallel to J0, and periodic in the direction of I0; and equals F inside disk 1. The maxima of F+ are on certain lines parallel to J0.
Points p3 and p4 are the points at which path 2 intersects the boundary of 1. Line 3 is the pattern axis; it passes through C0 and is parallel to the orientation vector I0. The counterclockwise angle in radians between I0 and v is θ0 satisfying 0≦θ0<2π.
As the sensor moves along the straight-line path across the marker it will report a density which is sinusoidal with wavelength λ0. If cos(θ0)≠0, λ0 satisfies |cos(θ0)|λ0=Λ0. The following discussion uses angular frequencies ω0=2π/λ0 and Ω0=2π/Λ0. Thus
ω0=|cos(θ0)|Ω0. (1)
In
The density reported by the sensor is a function of x and y, but since it is measured on the sensor's path, the computer stores it as periodic samples of the path-density function f(s). On the part of the path intersecting disk 1
f(s)=a cos(ω0s+ψ0)+b, (2)
where a, b, and ψ0 are constants with b≧|a| and 0≦ψ0<2π.
The function F(x, y) is anchored to the x, y-axes and C0, but f(s) is not. Instead, v and p2 determine its relationship to F(x, y), hence to the x, y-axes and C0. Therefore, f(s) carries some information about where the path is located. The computer has approximate values {tilde over (p)}2 and {tilde over (θ)}2 for p2, and θ0, respectively. The angle {tilde over (θ)}0 determines a unit vector {tilde over (v)} which is an approximation of v. The goal is to use f(s) to get {tilde over (θ)}0 and δ0, the latter being the component of the displacement δ={tilde over (p)}2−p2 in the direction of I0. The method for this involves mathematical concepts described in the following.
Mathematics for Getting Position and Direction from Phase and Frequency
An expression for F(p) on the path between p2 and p5 will be obtained, then that will be related to f(s).
For a point p (e.g., on the sensor's path), let S(p) denote the signed distance (positive toward I0) from C0 to the orthogonal projection P of p onto line 3. The reader is reminded that since I0 is a unit vector, the dot product (p−C0)−I0 is the (signed) length of the projection of the line segment from C0 to p onto line 3, and δ0=δ·I0, so
P=C0+((p−C0)·I0)I0,
and
S(p)=(p−C0)·I0. (3)
The value of the function F+(p) at p is determined by S(p). Let φ0 be the phase at C0, so
F+(p)=A cos(Ω0S(p)+φ0)+B, (4)
where A and B are constants associated with the pattern. Usually, B≧|A| so that F(p) is always nonnegative.
Between p2 and p5 on the sensor's path, p is a function of s given by p(s)=p2+sv, so from equations (2) and (4),
a cos(ω0s+ψ0)+b=f(s)=F+(p(s))=A cos(Ω0S(p(s))+φ0)+B, (5)
which is true while p(s) is between p3 and p4.
An early part of the computer processing of f is removal of the DC component b by any well-known technique (high-pass filtering, finding the average value b and subtracting it from f, etc.). Thus, in the following, without loss of generality, b, and B will be taken to be zero. Also, it is obvious that the cosine amplitudes must be equal: a=A. Therefore, the cosine factors in equation (5) are equal:
cos(ω0s+ψ0)=cos(Ω0S(p(s))+φ0) for p(s) between p3 and p4.
Since this is true over an extended interval of s, the arguments of the cosines are equal except for an additive multiple of 2π to account for the periodicity of the cosines. Thus, from equation (3),
ω0s+ψ0=Ω0(p(s)−C0)·I0+φ0−m2π, (6)
where m is an integer. In particular, since p(0)=p2, for s=0 equation (6) is
ψ0=Ω0(p2−C0)·I0+φ0−m2π. (7)
This can be rearranged and applied to the definition of δ0 to get
δ0=({tilde over (p)}2−p2)·I0=({tilde over (p)}2−C0)·I0+(φ0−ψ0−2πm)/Ω0. (8)
Therefore, if ψ0 and m can be found, any position can be partially corrected by subtracting δ0I0 from it. In particular, the partially-corrected {tilde over (p)}2 is {tilde over (p)}2−δ0I0.
A single simple-pattern marker does not, by itself, provide enough information to determine m but there is a condition under which m can be computed. Rearrange equation (8) to get (since Ω0=2π/Λ0)
If
|δ0|<Λ0/2, (10)
then m is the nearest integer to the right side of (9) with δ0=0; i.e.,
The restriction on δ0 is too severe for most applications. Markers comprising superposed patterns, described below, have much weaker restrictions.
The computer will have the following information about the marker: the coordinates X0 and Y0 of the marker reference point C0, the orientation vector I0, the angular frequency Ω0, and the phase φ0 at C0. All of these values, collectively called the marker parameters, are determined at the time of installation of the position marker, then delivered to the computer.
Under condition (10), after ψ0 has been found, the computer can use equation (11) to get m, then use m in equation (8) to get δ0. Then the corrected value of {tilde over (p)}2 is {tilde over (p)}2−δ0I0.
After ω0 has been found, the computer can use it in equation 1 to put restrictions on the approximation {tilde over (θ)}0 to θ0. This does not work well when |d cos({tilde over (θ)}0)/d{tilde over (θ)}0| is close to zero (i.e., when {tilde over (θ)}0 is close to 0 or π).
A given value of ω0 determines several values of {tilde over (θ)}0, however: if {tilde over (θ)}0 is a solution satisfying 0<{tilde over (θ)}0<π, then each of π+{tilde over (θ)}0, π−{tilde over (θ)}0, and 2π−{tilde over (θ)}0 is a solution. Nevertheless, if one of these values is close enough to the current value of θ0 it can be used for the revised value of {tilde over (θ)}0. Usually, this is the case if θ0 and {tilde over (θ)}0 are reasonably close to the same one of π/4, 3π/4, 5π/4, and 7π/4. Therefore, it is best if the path crosses the marker with θ0 close to one of these values.
Getting the Frequency and Phase
The computer uses odometry to measure s and to estimate the sensor's position {tilde over (p)}and direction of motion {tilde over (v)} (at angle {tilde over (θ)}0). When it starts on the straight segment from p2 to p3 it stores {tilde over (p)} as {tilde over (p)}2, an approximation to p2.
After the sensor has passed over the marker, the computer determines ω0 and ψ0 by some means. In principle, the frequency ω0 and phase ψ0 can be determined by finding the midlevel points of f, and doing some simple calculations. This is a poor method because it is relatively sensitive to random errors (e.g., optical noise from dirt or breaks in the density pattern).
Consider, instead, using the Fourier transform {circumflex over (f)}(ω) of the stored path-density function f. Since the complex representation of the cosine is
where j is the imaginary unit (j2=−1), f(s) can be written (with b=0; see equation (2))
so {circumflex over (f)}(ω) is zero except at two points:
{circumflex over (f)}+=caejψ
and
{circumflex over (f)}−=cae−jψ
where c is a positive constant determined by the form of the Fourier transform used.
Therefore, to get both ω0 and ψ0, the computer can examine the values of {circumflex over (f)}(ω) for ω>0 to find the nonzero value at ω0, then evaluate
ψ0=arc tan(Im({circumflex over (f)}+(ω0))/Re({circumflex over (f)}+(ω0))), (14)
where Re(•) and Im(•) extract the real and imaginary parts, respectively.
It will be apparent to persons familiar with the appropriate art that since the computer stores discrete samples it should use the Discrete Fourier Transform (DFT) instead of the continuous-domain Fourier transform appearing in the discussion above. Application of the DFT is illustrated in
The functions {circumflex over (f)}+ and {circumflex over (f)}, which are the DFTs of f+ and f, respectively, are complex functions of ω. For simplicity,
Multiplication of functions implies convolution of their DFTs. In particular, {circumflex over (f)} is the convolution of {circumflex over (f)}+ and {circumflex over (ω)}, the DFT of ω. The latter is a multiple of a sinc function, so |{circumflex over (f)}| is a multiple of the absolute value of a sinc function translated so its center is at ω0, as shown in
The computer can use |{circumflex over (f)}| to determine ω0, either from the position of the peak, or by determining the centroid of the function. The latter should be more accurate if certain precautions are taken, such as using only that part of the function in the central peak. After getting ω0, the computer can determine ψ0 as indicated in equation (14).
Some details that will be apparent to persons familiar with the appropriate art have been omitted. The graphs in
Since the method for determining the frequency and phase integrates measured values (by summation, through the DFT), the accuracy is better than that of methods that use single point measures. It is also much less sensitive to noise.
The method just described fails if the vector v is nearly orthogonal to I0. One way to provide for complete correction is to have the sensor path pass across several markers. This is illustrated in
Marker 6 cannot be used for corrections because I2 is nearly orthogonal to the direction of motion. It is easy to see that the corresponding path wavelength λ2 is very large, and that only two full cycles of the density sinusoid are crossed, so the determination of λ2 would not be accurate. Better rotations of the three markers can be found.
A main disadvantage of the arrangement of
This description is divided into several sections and it uses technical abbreviations, so the following lists are provided as an aid to the reader. Other than in Table 2, below, the first time an abbreviation is used, it is put in parentheses after its definition.
1. T
2. S
3. S
4. U
5. O
No matter what form of navigation (called underlying navigation in the following), dead-reckoning or some other, is used to estimate the instantaneous position of the vehicle, operation of the vehicle must provide for the sensor to cross a position marker properly. Thus, the line from p2 to p5 must pass reasonably close to the center of the marker; within one-half of the radius of the marker may be sufficient.
As discussed above, for the geometry shown in
The |δ|<Λ0/2 restriction can be relieved if there is a second marker pattern which provides for phase identification over a wider range. This can be done by superposing two or more patterns. The term superposing means combining the patterns by weighted addition of their density functions and adjustment of the DC component to produce the final pattern.
This is illustrated in
F3(x, y)=A(F1(x, y)+0.75 F2(x, y))+B, (15)
where A and B are constants. The orientation vectors, Ik for k=1, 2, and 3, are all rotated 15 degrees from the x-axis (so I1=I2=I3). The direction-of-motion vector v is rotated 20 degrees from the orientation vectors, so the two path frequencies are ω1=cos(20°)Ω1 and ω2=cos(20°)Ω2 (see equaion (1)). Points p2, p3, p4, and p5, are the same as in
The path-density function f of
This can be generalized to the superposition of L≧2 patterns with angular frequencies Ωl, and orientation vectors Il for l=1, 2, . . . , L. Here it will be assumed that the Il are all equal.
There are L equations, one for each pattern, corresponding to equation (8):
δ1=({tilde over (p)}2−Cl)·Il+(φl−ψl−2πml)/Ωl, for l∈{1,2, . . . , L}, (16)
where 0≦ψl<2π, and ml is an integer (there is only one δ1 because all Il=I1; all Il are shown, however). Combine these as follows. For l∈{1, 2, . . . , L} let nl be an integer. Multiply equation (16) by nlΩl, then add the equations together and rearrange the sum to get
which can be rearranged into
The left side of this is an integer, so if
then
As before (see the text following equation (11)), after ψl has been found for l∈{1, . . . L}, if condition (19) is satisfied, the computer can get Σl=1L nlml, then δ1, and partially correct {tilde over (p)}2 to {tilde over (p)}2−δ1I0.
Condition (19) is much better than the one (|δ0|<Λ0/2) for a single pattern. For example, with L=2, Λ1=Λ0, and Λ2=Λ1/0.8, the values for
The text after equation (11) applies mutatis mutandis to ψl, ωl, etc.
Consider a marker which is the same as that of
Consider a marker with L≧2 pattern axes. For each l∈{1, . . . , L}, the displacement vector δ={tilde over (p)}2−p2 has a component δl=δ·Il along Il. Given δl for all l∈1, . . . , L, δ can be found by taking δ=Σl=1L alIl and solving the simultaneous linear equations
δl=δ·Il, for l∈{1, . . . , L}. (21)
for a1, . . . , aL.
For
Instead, in the following, each pattern axis Il has Kl≧1 associated patterns. For each k∈{1, . . . , Ki} the pattern has refernce point Clk, angular frequency Ωlk, phase ψlk at Clk, and corresponding path frequency ωlk; and for each of these patterns there is an equation like equation (16) for δl=({tilde over (p)}2−p2)·Il, the displacement in the direction of Il. Let Jl be the unit vector orthogonal to Il and pointing to the left of Il. Then there are numbera ali and bli such that Ii=aliIl+bliJl. Note that all=1 and bll=0.
There are integers mik such that equation (7) mutatis mutandis becomes
Ωik(p2−Cik)·Ii=−φik+ψik+2πmik for i∈{1,2, . . . , L} and k∈{1,2, . . . , Ki}. (22)
Since
(p2−Cik)·Ii=(p2−{tilde over (p)}2+{tilde over (p)}2−Cik)·Ii=−δ·(aliIl+bliJl)+({tilde over (p)}2−Cik)·Ii=−aliδl−bliδ·Jl+({tilde over (p)}2−Cik)·Ii
equation (22) can be rewritten as
(omit any of these equations with ali=0).
Combine all of these equations to get a single equation for δl: choose integers nlik, multiply the equation by them, and sum on i and k to get
If the last term can be computed, this can be solved for δl. As before, since the last term is an integer, for each l∈{1, 2, . . . , L}
provided
It is sufficient to make
In summary, under the assumption in equation (26), for each the computer can use equation (25) to get
use that in equation (24) to get δl, use δl in equation (21) to get the vector displacement δ, then subtract δ from {tilde over (p)}2 to get a new estimate of p2.
Usually, the number Σi=1L Ki of patterns is greater than two, and the peaks of the function |{circumflex over (f)}| must be associated with the corresponding pattern. This can be done if the patterns have unique amplitudes so the computer can associate each pattern with the peak of corresponding size.
Markers for particular applications can be designed by varying the number of pattern axes, the number of patterns for each axis, the pattern frequencies, and the directions of the pattern orientation vectors. The integers nlik can be chosen to provide the best range for δ.
The discussion above assumed that the marker density can take on all possible values over some range. This allowed the marker-density function F to be the sum of several cosine functions. That is not possible for high-contrast media which have only few density values.
Consider a medium that can only be black or white. In this case, patterns can be represented by marker-density functions F, F1, F2, . . . having only the values 0 and 1, say 0 for white, and 1 for black. The function F cannot be formed by weighted addition of the pattern density functions F1, F2, . . . , but it can be formed by multiplying them. Periodic functions of this type can be represented by Fourier series. Multiplication of the functions produece complicated combinations of the sinusoidal components, but analysis of the path-density function can still provide phase and frequency information needed for correction of navigation parameters. For two patterns, if
where ckm is a complex constant, then
so the low frequency terms are separated and can be found using the DFT. This can be extended to more than two patterns. The functions on the left of this equation can be raised to different powers to weight the functions.
Pattern density functions are periodic, but they need not be sinusoidal. Since periodic functions can be represented as a Fourier series like that of equation (27), the technique described for high-contrast media can be adapted for patterns which are not sinusoidal.
It is well known that window functions ω other than the one shown in
Persons knowledgeable of the relevant art will recognize that markers need not be circular disks, so that other regions can be used.
Although it is not clear how one could construct markers for three (or higher) dimensional applications, equations (23) through (26), which were derived for two-dimensional markers, also apply to markers of higher dimensions comprising superposed periodic patterns.
This patent claims the benefit of U.S. provisional patent No. 62/108,004 filed on Jan. 26, 2015, which is herein incorporated by reference. U.S. PAT. DOCUMENTS4,541,049September 1985AhlbomMethod for updating in a wheeled 364/424.02vehicle steered by dead reckoning4,847,773July 1989van HelsdingenSystem for navigating a free 364/443ranging vehide5,111,401May 1992EverettNavigational control system for 364/424.02an autonomous vehicle
Number | Name | Date | Kind |
---|---|---|---|
5650703 | Yardley | Jul 1997 | A |
5806018 | Smith | Sep 1998 | A |
6081231 | Evans | Jun 2000 | A |
20090228204 | Zavoli | Sep 2009 | A1 |
20110243454 | Miyajima | Oct 2011 | A1 |
20120281503 | Rikoski | Nov 2012 | A1 |
20160122038 | Fleischman | May 2016 | A1 |
Number | Date | Country | |
---|---|---|---|
62108004 | Jan 2015 | US |