Patent Description:
In the package-handling industry, individual packages are sorted from a mass flow of randomly oriented and stacked packages on a conveyor. But before the packages can be sorted, they have to be separated from each other, oriented so that each package's identifying indicia can be read, and sorted off the conveyor to the proper destination. The conveyor speed is controlled to prevent both the oversupply and the undersupply of packages to downstream processing, such as separating, orienting, reading, and sorting.

One way to determine the flow rate of a mass flow of packages is by first measuring the depth, or height, of the mass flow of packages along a line across the width of the conveyor. Laser range finders arranged in a row looking down at the conveyor measure the distances down to the top of the mass flow. The distance measurements can be converted into the heights of the mass along the line. The heights are computed from range-finder distance measurements taken at a rate determined by encoder pulses whose rate is proportional to conveyor speed. In that way the measurements are spaced a generally fixed distance along the conveyor in the conveying direction. The height measurements for all the range finders covering a fixed area of a measurement zone downstream of the range finders are added together and multiplied by that area to determine a volume of packages in the measurement zone. The volume is then divided by an average package volume to estimate the number of packages in the measurement zone. The package flow rate is then calculated by multiplying the estimated number of packages by the belt speed and dividing by the fixed length of the measurement zone. In other words the package flow rate is calculated by dividing the estimated number of packages in the zone by the time the packages take to pass through the zone. The estimated flow rate is then used to control the speed of the conveyor. Errors can result from coarse, non-uniform measurements of package height and inaccurate estimates of average package size. <CIT> discloses an apparatus for determining measurements of an object moving along a conveyor path having a support surface, having in particular a distance-measuring system measuring the profile of the packages at discrete spots extending across the width of the conveyor to produce a series of sequential profile measurements at each discrete spot, a controller programmed to execute instructions to compute the series of profile measurements for each of the discrete spots and to detect edges of the packages from steps of the series of profile measurements, and a speed sensor producing speed measurements of the speed of the conveyor on the conveying direction.

<CIT> discloses a universal counting and measurement system and method.

<CIT> discloses a system for counting overlapped newspapers carried on a moving conveyor which employs an optical sensor which is passive in nature.

One version of a conveying system embodying features of the invention is defined in claim <NUM>.

A method embodying features of the invention for sizing packages on a conveyor is defined in claim <NUM>.

A portion of a conveyor system embodying features of the invention is shown in <FIG>. The conveyor system <NUM> comprises a conveyor <NUM> conveying a mass flow of packages <NUM> along an upper carry way run in a conveying direction <NUM>. In this example the conveyor <NUM> is a conveyor belt trained around a drive element <NUM>-pulleys, sprockets, or drum-at one end and an idle element (not shown) at an opposite end. The drive element <NUM> is part of a conveyor drive that includes a drive shaft and a motor and could also include a transmission belt or a gear train. Instead of a belt conveyor, the conveyor system could alternatively use a powered roller conveyor to advance the mass flow of packages <NUM> in the conveying direction <NUM>.

A distance-measuring system <NUM> is supported above the conveyor <NUM> by side supports <NUM>. The system <NUM> includes an array of laterally spaced distance-measuring sensors <NUM>. The array is linear with equi-spaced sensors <NUM> as also shown in <FIG>. The sensors <NUM> are mounted to a crossbeam <NUM> whose ends are supported by the side supports <NUM>. One version of distance-measuring sensor <NUM> is a laser range finder that directs a laser beam <NUM> at a target and detects the laser light reflected back to measure the distance d from the range finder to the target. Because the height Hs of the sensor <NUM> above the conveying surface <NUM> (<FIG>) is fixed, the height (or depth) of the mass of packages for each distance measurement is given by Hs - M, where M is the sensor's measurement of the distance d. (If each distance measurement M for each sensor is subtracted from the height Hs of the sensors above the conveying surface <NUM>, the result is a profile of the depth, or height, of the packages above the conveying surface. If the distance measurements M are used directly, they produce a reversed, but equivalent profile viewed from the opposite side. ) To increase gradation without increasing the number of sensors, each range finder could scan its beam laterally to measure the distance to more than one spot as indicated by the dashes <NUM> in <FIG> for one of the sensors. (In <FIG> the distance to the target, i.e., to the top of the mass flow of packages, is directed into the page.

As shown in <FIG>, the distance-measuring sensors <NUM> illuminate discrete measurement spots <NUM> across the width of the conveyor <NUM> from a first side <NUM> to an opposite second side <NUM> along a line defined by the linear arrangement of the distance-measuring sensors <NUM> in the distance-measuring system <NUM>. The lateral line of sensors <NUM> is read periodically to produce series of measurements, and the series of measurements are saved, for example, in buffers holding enough consecutive sets of measurements to form an array covering a predetermined length of the conveyor <NUM> in the conveying direction <NUM> downstream of the distance-measuring sensors <NUM>. The predetermined length defines a measurement zone <NUM> whose length and width are fixed and whose area is A. The zone <NUM> is a region of the conveyor in which the number of packages is to be estimated. As <FIG> shows, the measurements define series of lateral rows R of measurements spaced apart in distance along the carryway direction <NUM> (the X direction) in the measurement zone <NUM>. Each row of measurements is spaced apart a distance dx in the conveying direction <NUM>. And the series of rows of measurements also define longitudinal lanes, or columns C, of measurements-each column representing consecutive measurements by one of the distance-measuring sensors-spaced apart in the width direction (the Y direction) by a distance dy equivalent to the sensor or measurement-spot spacing. The area of each measurement spot is thus given by the product dx·dy.

<FIG> shows an exemplary height, or depth, profile P(l) produced by one of the distance-measuring sensors measuring the depth of a package flow as in <FIG>. The profile P(l) is differentiated to produce a first derivative P'(l) of the profile P(l). The first derivative P'(l) may be differentiated to produce a second derivative P"(l) of the profile P(l). The first derivative P'(l) is characterized by a number of steps. Abrupt changes in the slope of the profile P(l) result in the steps in the first derivative P'(l). The abrupt changes indicate package edges, i.e., points on the edges of packages. Because the number of edges is generally proportional to the number of packages, counting the steps in the derivatives of all the sensor profiles provides an estimate of the number of packages in the measurement zone. Examples of ways to estimate the number of packages from the package profile follow.

A first way to estimate the number of packages in the measurement zone is for a conveyor controller <NUM> (<FIG>) to execute program instructions in program memory to:.

Another way for the controller to estimate the number of packages in the measurement zone is to execute program instructions to:.

The second count represents detections of stacked packages.

The derivatives taken in the previous two examples can be taken in the X, or conveying, direction <NUM> for each sensor or in the Y, or width, direction from sensor to sensor, or in both directions.

A third way the controller can estimate the number of packages in the measurement zone uses both the X and Y derivatives by:.

In some instances the profile's second derivative P"(l) may be used in a similar way as the first derivative to estimate the number of packages or to enhance the estimate produced by the first derivative. In the second derivative, package edges are indicated by doublets-positive and negative pairs of pulses that exceed corresponding positive and negative thresholds. The edges can be counted to estimate the number of packages in the measurement zone.

As shown in <FIG>, the conveyor system is controlled by the controller <NUM>, such as a programmable logic controller or a general-purpose programmable computer executing instructions stored in its program memory. The controller <NUM> receives distance measurements from the distance-measurement system <NUM>. The measurements are sampled at a repetition rate proportional to the conveyor speed, such as from the output of a speed sensor <NUM> measuring conveyor speed. The speed sensor <NUM> could be, for example, a shaft encoder mounted on the conveyor belt's drive shaft <NUM> transmitting pulses at a rate proportional to conveyor speed. In that way samples are taken at equal spatial intervals on the belt to ensure that the length of the measurement zone is constant from sample to sample. From the distance measurements the controller <NUM> derives their derivatives and estimates the number of packages in the measurement zone. Because the number of packages in the measurement zone at any time is proportional to the flow rate, the controller <NUM> adjusts the speed of the belt with a speed signal <NUM> sent to the conveyor drive <NUM>. As the number of packages in the measurement zone increases, the controller <NUM> reduces the conveyor speed accordingly; and as the number of packages decreases, the controller increases the speed. In that way the flow rate is generally held constant.

As one example of how the controller adjusts the conveyor speed, consider a conveyor system in which an infeed conveyor laden with a mass flow of packages feeds packages to conveyors downstream that separate packages and include a gapping conveyor that imposes minimum gaps of length g between consecutive separated packages. If the gapping conveyor is the pacing item in the conveyor system and its speed vg is fixed, the maximum package rate rp for packages of size s is given by rp = vg/(s + g). The controller adjusts the speed of the infeed conveyor to v = rp(L/Np), where L is the length of the measurement zone and Np is the estimated number of packages in the measurement zone. Thus, the speed v of the infeed conveyor is set to a value inversely proportional to the estimated number of packages Np in the measurement zone. The infeed conveyor speed v is limited to a range between a predetermined minimum allowed speed vmin and a predetermined maximum allowed speed vmax.

<FIG> illustrates one way in which the controller estimates the number of packages in the measurement zone. In this example implementation, the distance-measuring sensors <NUM> make periodic distance measurements along the line. The measurements may be taken simultaneously across all sensors or asynchronously. Based on the speed measured by the speed sensor <NUM>, the controller samples the outputs of the distance-measuring sensors at a variable repetition rate. The most recent distance measurements <NUM> are read and transferred into a line buffer <NUM> in the controller's data memory. As a new set of sequential distance measurements is clocked into the line buffer <NUM>, the older sets are shifted toward the end of the buffer and the oldest set is shifted out. A counter <NUM> counts encoder pulses to produce a time stamp <NUM> associated with the clocking of each set of distance measurements into the line buffer <NUM>. The multiple sets of measurements in the line buffer are used to filter the raw distance measurements in a low-pass digital filter <NUM>. The array of filtered measurements is stored in a height-map buffer <NUM> whose length corresponds to the length of the measurement zone. As an alternative to the filtered measurements, the unfiltered raw distance measurements <NUM> may be used to populate the height-map buffer <NUM> if the signal-to-noise ratio of the measurements is high enough. Inline first derivatives of the distance measurements are computed and clocked through an inline-derivative buffer <NUM> as an array. The inline derivative is computed by an inline differentiator <NUM>. The differentiator <NUM> divides the difference (Mni - Mni-<NUM>) between consecutive distance measurements M for each measurement spot n by the distance dx between consecutive spots i, i-<NUM> in the conveying direction, i.e., along each column C of measurements. In a similar way crossline derivatives of the profile are computed and clocked through a crossline buffer <NUM>. A crossline differentiator <NUM> computes derivatives across a single set of measurements i in the width direction by dividing the difference between the distance measurements (Mni-Mn+<NUM>i) at laterally consecutive spots n, n+<NUM> across each row R by the distance dy between spots. Together, the inline and crossline derivatives produce a three-dimensional gradient of the profile. Both differentiators <NUM>, <NUM> could also convert the distance measurements into actual depth (height) measurements by applying appropriate scale factors and functional relationships. But whether scaled and converted or not, the distance measurements still represent the profile of the mass of packages in the measurement zone. And dividing the differences by dy and dx is optional if both are constants and, thus, scale factors. The controller also computes a volume vector <NUM> for each line as the product of the area of the measurement zone and the sum of the depth measurements of all the sensors along the line. The sum of all the volume vectors across the length of the measurement zone, i.e., the integral of the profile, provides an estimate of the number of packages in the zone.

The time stamp <NUM>, the volume vector <NUM>, the height map <NUM>, the inline-derivative map <NUM>, and the crossline-derivative map <NUM> are all inputs to an estimation process <NUM> that produces an estimate <NUM> of the number of packages in the measurement zone. The estimate is updated at the variable repetition rate set by the speed sensor <NUM>. The estimation process <NUM> can use only the inline derivative as disclosed previously or can use both the inline and crossline derivatives to estimate the number of packages. If one of the inline-only methods is used, the crossline buffer <NUM> and the crossline differentiator <NUM> are not necessary. If the second derivative is used, the inline buffer <NUM> or the crossline buffer <NUM> would feed inline and crossline second derivative buffers (not shown) that would feed the estimation process.

The time stamp <NUM> is used to synchronize the data. The volume vector <NUM> is summed with the previous volume vectors that span the measurement zone to produce an overall package volume V from the integrated profile that can be used to refine the derivative-based estimate. And if certain characteristics of the mass of packages are known a priori, such as actual physical dimensions or empirically determined relationships between estimated package count and actual package count, the estimates could be further refined with that a priori knowledge.

<FIG> illustrates an alternative algorithm executed by the controller <NUM> to estimate the number of packages in the measurement zone. As in <FIG>, the most recent set of distance measurements <NUM> from the line of sensors <NUM> is sampled and transferred at a rate set by the encoder <NUM> into a line buffer <NUM> in the controller's data memory. The line buffer <NUM> contains the most recent two sets of measurement data Mi, Mi-<NUM>, which represent a two-line slice of the package-height profile. The difference (Mi-Mi-<NUM>) between the two measurement sets is computed to derive a set of slope values mi = Mi-Mi-<NUM>, which are transferred to a slope buffer <NUM>. Because the inline measurement-spot spacing dx is a constant, it does not have to be used as a divisor in computing the slope values mi, but it could be. The slope values mi are equivalent to the first derivatives of the measurement values Mi. A positive counter acting on the slope buffer's output values mi-<NUM> increments the counts Ki-<NUM>(m+) for each measurement spot in a positive accumulator <NUM> by one if the slope value mi-<NUM> is positive and exceeds a positive slope threshold Th+ and the immediately preceding slope value mi-<NUM> does not exceed the threshold. Those criteria identify a positive step in the slope, or first derivative, which indicates the detection of a package edge. Similarly, a negative counter acting on the slope buffer's output values mi-<NUM> increments the counts K i-<NUM>(m-) for each measurement spot in a negative accumulator <NUM> by one if the slope value mi-<NUM> is more negative than a negative slope threshold Th- and the immediately preceding slope value mi-<NUM> is not. Those criteria identify a negative step in the slope, or first derivative, which indicates the detection of a package edge. Thus, the positive and negative accumulators <NUM>, <NUM> are incremented only when the positive or negative slope values cross positive and negative thresholds Th+, Th-. The sum of the positive counts ΣKi-<NUM>(m+) in the positive accumulator <NUM> for each set of slope values mi-<NUM> is computed and transferred into a positive-sum vector array <NUM> whose length <NUM> represents the length of the measurement zone. The sum of the negative counts ΣKi-<NUM>(m-) in the negative accumulator <NUM> for each set of slope values mi-<NUM> is computed and transferred into a negative-sum vector array <NUM> whose length <NUM> represents the length of the measurement zone. The step-size sum of the absolute values S = Σ(|m+i-<NUM>| + |m-i-<NUM>|) of all the slope values mi-<NUM> that resulted in the incrementing of either a positive or a negative count is computed for each set of values mi-<NUM> and clocked into a slope-magnitude vector <NUM> whose length <NUM> is the same as that of the sum vectors <NUM>, <NUM>.

The controller <NUM> executes processes according to program instructions stored in its program memory to:.

Other user inputs that could be used include a desired package flow rate <NUM> and an average package volume <NUM> that the controller <NUM> can use in refining the estimate of the number of packages or adjusting the infeed conveyor speed.

<FIG> is a flowchart of an exemplary control algorithm of program steps executed by the controller. Initial parameters <NUM>, such as the length of the measurement zone, the minimum package gap, the speed of the gapping conveyor, the maximum allowed package flow rate, and the average package size, may be predetermined fixed values or user-inputted settings. The initial parameters are used in subsequent calculations. The controller waits for an encoder pulse at step <NUM>. When a pulse is received, the controller reads <NUM> the distance-measurement sensors. From those distance readings, the controller calculates <NUM> the height of the mass of packages along the sensor line. At step <NUM> the controller calculates the derivatives of the height measurements for each sensor. The controller can optionally compute adaptive thresholds at step <NUM> from an average of the magnitudes of the recent derivatives that indicate package edges detected by the controller at step <NUM>. As an alternative, the controller can use predetermined fixed thresholds or user-inputted threshold settings. The controller counts the number of positive and negative threshold crossings by the derivatives at step <NUM> and, from those counts, estimates the number of packages in the measurement zone at step <NUM>. And from that estimate the controller can compute a speed for the infeed conveyor at step <NUM> and send a corresponding speed signal to the conveyor drive to adjust the conveyor speed appropriately. The controller can also estimate an average package size at step <NUM> from the area of the measurement zone and the positive and negative counts. And the controller can calculate the maximum allowable package flow rate from the average package size, the speed of the gapping conveyor, and the minimum inter-package gap at step <NUM>. The maximum package flow rate can be used with the estimated number of packages and the length of the measurement zone to set the belt speed at step <NUM>.

Claim 1:
A conveyor system (<NUM>) comprising:
a conveyor (<NUM>) extending in width from a first side (<NUM>) to an opposite second side (<NUM>) and advancing packages (<NUM>) in a conveying direction (<NUM>);
a distance-measuring system (<NUM>) measuring the profile of the packages (<NUM>) at discrete spots (<NUM>) extending across the width of the conveyor (<NUM>) to produce a series of sequential profile measurements at each discrete spot (<NUM>);
a controller (<NUM>) programmed to execute instructions to:
(a) compute derivatives of the series of profile measurements for each of the discrete spots (<NUM>);
(b) detect edges of the packages from steps in the derivatives of the series of profile measurements;
a speed sensor (<NUM>) producing speed measurements of the speed of the conveyor (<NUM>) in the conveying direction (<NUM>) and wherein the distance-measuring system (<NUM>) makes the profile measurements at a repetition rate proportional to the speed of the conveyor (<NUM>).