Patent Publication Number: US-10789569-B1

Title: System to determine item footprint

Description:
BACKGROUND 
     A facility may handle a variety of different types of items of differing size and shape. Interactions with these items may be facilitated by gathering information such as a particular footprint of the item, location of the item, and so forth. 
     BRIEF DESCRIPTION OF FIGURES 
     The detailed description is set forth with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items or features. 
       FIG. 1  illustrates a system to determine footprint data about an item based on occlusion of one or more projected lines, according to some implementations. 
       FIG. 2  illustrates various views of the system to determine footprint data, according to some implementations. 
       FIG. 3  is a block diagram of a footprint module that generates footprint data based on the occlusion of a projected line, according to some implementations. 
       FIG. 4  is an enlarged view of an image including an analysis area in which the projected line is occluded, according to some implementations. 
       FIG. 5  illustrates a compilation of analysis areas obtained at different times and relative linear displacements, according to some implementations. 
       FIG. 6  is a block diagram of a coordinate mapping module that determines coordinates of edge points based on linear displacement and occlusion location, according to some implementations. 
       FIG. 7  is a plot of the edge points and fitted lines corresponding to the edge points, according to one implementation. 
       FIG. 8  depicts a flow diagram of a process of determining footprint data using occlusion of projected lines, according to some implementations. 
       FIG. 9  is a block diagram of a materials handling facility (facility), according to some implementations. 
       FIG. 10  is a block diagram illustrating additional details of the facility, according to some implementations. 
       FIG. 11  illustrates a block diagram of a server configured to support operation of the facility, according to some implementations. 
     While implementations are described herein by way of example, those skilled in the art will recognize that the implementations are not limited to the examples or figures described. It should be understood that the figures and detailed description thereto are not intended to limit implementations to the particular form disclosed but, on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean “including, but not limited to”. 
    
    
     DETAILED DESCRIPTION 
     A facility that handles items may utilize information about the size, shape, and location of a footprint of an item. The footprint may be indicative of where the edges of the item are located. Information about the footprint, such as wherein a given space the edge of the item is located, may be used in various ways. For example, information about the size and shape of the footprint may be used to identify a particular item. Continuing the example, different types of items may be associated with different size boxes. By determining the size of the box, the type of the item contained inside may be determined. In another example, information about the size, shape, and location of the item may be used to control operation of tools such as printers, robot arms, chutes, cutting tools, and so forth. Continuing the example, information about the footprint of the item and the location and orientation of that footprint may be used to position a printer that applies a marking to the item. In still other examples, the footprint may be assessed for quality control purposes, such as to determine if a box is unsealed, if a manufactured part is incorrectly formed, and so forth. 
     The footprint of some types of items are particularly challenging to determine. For example, existing techniques may be unable to determine the footprint of items that are at least partially transparent or that exhibit specular reflections, such as in the case of a mirror finish. 
     Described in this disclosure are systems and techniques for determining footprint data about an item indicative of one or more of a boundary of part of an exterior of the item, a location in space of at least a part of the item, and so forth. These systems and techniques are suitable for determining footprint data about items with a wide variety of surfaces, including transparent materials such as glass or plastic, specularly reflective surfaces, and so forth. 
     One or more line projectors in different positions are used to produce one or more projected lines on a surface in a measurement area. The projected line results from the light from the line projector interacting with a surface, such as on the item or a conveyor belt. Within the measurement area is a material that produces a diffuse reflection of the light from the line projector, producing the projected line. In one implementation, the measurement area may be a designated location along a conveyor belt device with a moving conveyor belt. The surface of the conveyor belt itself moves past this designated location, with the measurement area remaining fixed as the projected lines are projected onto the surface of the moving conveyor belt. The measurement area may span the conveyor belt. A long axis of the measurement area may be perpendicular to a direction of motion of the moving conveyor belt. In some implementations, this perpendicular arrangement may reduce the computational complexity of the system. 
     One or more cameras are configured so their respective fields-of-view (FOV) include at least a portion of the measurement area. The one or more cameras are in different positions with respect to the one or more line projectors and the measurement area. For example, a first line projector may be on a first side of the conveyor belt and positioned above the conveyor belt at some offset distance that is perpendicular to a long axis of the measurement area. The first camera may be positioned along the long axis of the measurement area but above the conveyor belt as well. Likewise, a second line projector and a second camera may be similarly positioned on the opposite side of the conveyor belt. The first line projector and the second line projector may be arranged diagonal to one another with respect to the conveyor belt. For example, the first line projector may be positioned on a side that is upstream of the measurement area with respect to the direction of movement while the second line projector is positioned on a side that is downstream of the measurement area. 
     As an item moves past the measurement area, the exterior of the item occludes or otherwise interferes with the path of the projected lines. Meanwhile, the cameras are used to acquire images of the measurement area. Each image is associated with a particular linear displacement value that is representative of the displacement of the item with respect to the measurement area at a particular time. A first set of images are acquired from the first camera, while a second set of images are acquired from the second camera. As a result, the projected lines scan across the item and images are acquired. 
     A portion of the images that includes the projected line as it spans the conveyor belt unimpeded may be referred to as an analysis area. The analysis area of the image may be processed to determine an occlusion location which is the point at which the projected line on the conveyor belt is occluded or otherwise impeded. In some situations, two or more occlusion locations may be present in a particular image. The occlusion location that corresponds to the location in space that is closest to the camera acquiring the image may be retained, while the other occlusion locations may be disregarded from further consideration. 
     The linear displacement value is used to determine a first coordinate along an X axis that is parallel to the direction of motion of the conveyor belt. For example, as the item moves past the measurement area, a first image is acquired at a first time. The item continues moving, and a second image is taken at a second time. Given the speed of the conveyor belt, the linear displacement value may be 1 millimeter (mm) per image. The first image may thus be determined to have a first coordinate value of 0, while the second image has a second coordinate value of 1 mm along the X axis. 
     The occlusion may manifest as a portion of the projected line in the image disappearing, or exhibiting a drop of intensity to a value that is below a threshold value, at a particular pixel in the analysis area. An occlusion location indicates the location within the image at which the occlusion was deemed to occur. 
     The image may comprise pixels arranged in rows and columns, with each pixel having a location described with respect to these rows and columns. The occlusion location may be indicated with respect to these rows and columns of pixels. During setup of the system, coordinates of particular pixel locations within the images may be related to a particular point in space on the conveyor belt. For example, a transform function may be used to associate a pixel in row 253 column 93 with a location that is 27 centimeters from the right edge of the conveyor belt. Thus, the location of the occlusion in the image may be used to determine a second coordinate that is indicative of an actual location where the occlusion occurs on the surface supporting the item, for that particular image. For example, the second coordinate may specify a point along a Y axis that is perpendicular to the X axis. 
     The first coordinate and the second coordinate that are both associated with the same image are combined to produce an edge point. The edge point thus describes a particular point in space. 
     A plurality of edge points may be obtained, such as those generated by the first set of images obtained by the first camera and those from the second set of images obtained by the second camera. 
     Footprint data indicative of the locations of an exterior of the item may be determined by using line fitting algorithms to determine one or more fitted lines that fit the edge points. In other implementations, other techniques may be used. 
     Data indicative of the location of the item may be generated using the coordinates of the edge points, or the coordinates of the fitted lines. For example, the location of the item may be based on the fitted lines. 
     In other implementations the item may remain stationary while other elements of the system move. For example, one or more of the line projectors or the cameras may move around the stationary item. 
     The system and techniques described in this disclosure provide several advantages during operation. For example, the footprint data of an item may be determined regardless of the optical properties of the item. In another example, the system may be operated at high speeds, allowing the rapid determination of footprint data in high volume environments such as fulfillment or distribution centers. 
     The facility may include, or have access to, an inventory management system. The inventory management system may be configured to maintain information about items, users, condition of the facility, and so forth. For example, the inventory management system may maintain data indicative of what items have been received, what items have been shipped, what items a particular user has picked, environmental status of the facility, and so forth. 
     During operation, the inventory management system may use the footprint data to determine a type of item. For example, the size and shape of an unidentified item may be compared to previously stored item data. Based on a match that is within a threshold value, an identity of the unidentified item may be determined. In another implementation, the footprint data may be used to control a printer that applies a machine-readable code to items. The machine-readable code may then be used by the inventory management system to track items as they are picked, returned, received, shipped, and so forth. 
     Illustrative System 
       FIG. 1  illustrates a system  100  to determine footprint data about an item based on occlusion of one or more projected lines, according to some implementations. 
     A conveyor belt  102  is depicted that is moved in a direction of movement  104 . A linear motion sensor  106  is designed to provide information about the movement  104  of the conveyor belt  102 . An item  108  may be supported and moved by the conveyor belt  102 . The item  108  may comprise a box, foodstuff such as a vegetable, or other object. As a result of the movement  104  of the conveyor belt  102 , the item  108  is moved past a measurement area  110 . One or more line projectors  112  provide one or more projected lines  114  within the measurement area  110 . The line projectors  112  comprise a light source and one or more lenses or other devices that produce a plane of light. For example, the line projector  112  may comprise a laser light source that is then spread to form a plane of light using a cylindrical lens. When the light interacts with a surface, such as on the item  108  or the conveyor belt  102 , the projected line(s)  114  may be detectable by the camera  116 . The examples provided in this disclosure illustrate the use of projected lines  114  that are straight. In other implementations the projected lines  114  may be curved. In still other implementations, a pattern of projected lines may be used. For example, instead of a single projected line, a grid of lines may be projected. 
     In this illustration, a first line projector  112 ( 1 ) is located “upstream” of the measurement area  110  and projects light onto a surface of the conveyor belt  102  in the measurement area  110  producing a first projected line  114 ( 1 ). A second line projector  112 ( 2 ) is located “downstream” of the measurement area  110  and projects light onto the surface of the conveyor belt  102  in the measurement area  110  producing a second projected line  114 ( 2 ). The projected line(s)  114  may be arranged such that they are perpendicular to the direction of movement  104 . In some implementations the projected lines  114 ( 1 ) and  114 ( 2 ) may overlap one another or otherwise appear on the same section of the surface of the conveyor belt  102 . 
     Other arrangements of projected line(s)  114  may be used. For example, the projected line(s)  114  may be non-perpendicular to the direction of movement  104 . Continuing the example, the projected line(s)  114  may form an acute angle with respect to a lateral edge of the conveyor belt  102 . In another example, the projected line(s)  114  may not intersect with one another. 
     One or more cameras  116  are positioned where their respective fields-of-view (FOV) include one of the projected lines  114 . For example, a first camera  116 ( 1 ) is positioned on the same side of the conveyor belt  102  as the first line projector  112 ( 1 ). The first camera  116 ( 1 ) is positioned at some offset distance  118  with respect to the first line projector  112 ( 1 ). For example, the first camera  116 ( 1 ) may be positioned along a line through a long axis of the measurement area  110 , that is, a line perpendicular to the direction of movement  104 . Likewise, a second camera  116 ( 2 ) may be positioned on the opposite side of the conveyor belt  102 , on the same side as the second line projector  112 ( 2 ). 
     The cameras  116  are able to detect the projected line  114 . For example, if the projected line  114  is monochromatic light with a wavelength of 500 nanometers (nm), the camera  116  may comprise photosites that are sensitive to 500 nm. The cameras  116  may comprise an image sensor that is two-dimensional, having photosites arranged in rows and columns. The image sensor may be sensitive to one or more wavelengths. For example, the image sensor may be able to detect wavelengths including terahertz, infrared, visible, ultraviolet, and so forth. The cameras  116  may comprise charge coupled devices (CCD), complementary metal oxide semiconductor (CMOS) devices, and so forth. In some implementations the cameras  116  may be equipped with filters. For example, a narrowband filter may be included in an optical path of the camera  116  such that light with the wavelength of line projector  112  is passed but other wavelengths are attenuated or blocked. 
     One or more fiducials  120  may be present within the FOV of the cameras  116 . The fiducials  120  may be used to facilitate calibration of the cameras  116 , provide for information used to map a particular pixel location in an image with a physical location within the measurement area  110 , and so forth. 
     One or more tools  122  may be positioned adjacent to the conveyor belt  102  downstream of the measurement area  110 . In one implementation, the tool  122  may comprise a printer that is designed to apply one or more markings to the item  108 . For example, the printer may use a continuous inkjet printhead to print a machine-readable code upon the item  108 . In another implementation, the tool  122  may comprise a mechanical arm or effector that is designed to lift or move the item  108 . 
     During operation of the system  100 , the cameras  116  acquire image data  124 . For example, the first camera  116 ( 1 ) may produce first image data  124 ( 1 ) while the second camera  116 ( 2 ) produces second image data  124 ( 2 ). The image data  124  may include data representative of one or more images  126  of the measurement area  110  and one or more of the fiducials  120 . For example, the image data  124  may comprise a set of still images, video, and so forth. The image data  124  may also include a timestamp  128  that provides information indicative of when a particular image  126  was acquired. The timestamp  128  may comprise data indicative of a time as measured by a clock, a counter value, a sequence value, and so forth. 
     The image data  124  is provided to a server  130 . For example, the cameras  116  and the server  130  may be connected to a network that is used to transfer the image data  124 . The server  130  may comprise one or more computing devices that execute a footprint module  132 . The footprint module  132  may use the image data  124  and other information such as linear motion data  134  to generate footprint data  136 . The linear motion data  134  comprises information about the displacement or movement of the surface such as the conveyor belt  102  with respect to the measurement area  110  during operation. For example, the linear motion sensor  106  may comprise an encoder that reports the linear movement of the conveyor belt  102  between a first time and a second time. This linear motion data  134  may be used to determine a linear displacement value indicative of how far the conveyor belt  102 , and the item  108  that is supported thereon, has moved between images  126 . 
     The linear displacement value between images  126  may be used to represent a first coordinate in real space, as the projected line  114  scans the item  108  due to the movement of the conveyor belt  102 . For example, the first coordinate may be along an X axis that is parallel to the direction of movement  104 . 
     As discussed below in more detail with regard to  FIG. 3 , the footprint module  132  processes the image data  124  to determine an occlusion location that represents a feature change in the projected line  114  in the measurement area  110  that is captured in the image  126 . The feature change results from the occlusion or other interaction of the projected line  114  with the edge of the item  108 . For example, an edge of the item  108  may result in the projected line  114  appearing to change direction, change intensity, and so forth. The location of this feature change in the image  126 , that is the coordinates in the pixel space of the image  126 , may be mapped to a second coordinate in real space in the measurement area  110  on the conveyor belt  102 . This second coordinate may be along a Y axis that is perpendicular to the X axis described above. 
     By observing the occlusion of the projected line  114  with respect to the surface of the measurement area  110 , the system  100  is able to determine the edges of items  108  that have been traditionally difficult to assess using other techniques. For example, the footprint data  136  may be determined for transparent items  108  such as bottles of water or items  108  with mirror finishes such as polished metal. 
     A first coordinate and a second coordinate associated with a particular image  126  may be used to determine an edge point. Edge points may be determined from the image data  124  acquired from the one or more cameras  116  as the item  108  moves through the measurement area  110 . For example, the first image data  124 ( 1 ) may be processed to determine the edge points of a left side of the item  108  while the second image data  124 ( 2 ) may be processed to determine the edge points of a right side of the item  108 . 
     One or more line fitting algorithms may use the edge points to determine fitted lines that describe the outline of the item  108  as it sat on the surface of the conveyor belt  102 , or footprint, during passage through the measurement area  110 . The footprint data  136  may be provided that is indicative of a physical boundary or edge of the item  108  that is close to or in contact with the surface such as the conveyor belt  102  during scanning. The footprint data  136  may also include information indicative of a location of the item  108 . For example, the footprint data  136  may include information about where the item  108  is on the conveyor belt  102 . 
     The footprint data  136  may be used in a variety of ways. In one example, the footprint data  136  may be used to identify the type of item  108 . For example, the footprint data  136  may be compared to determine if the shape and dimensions match to or are within a threshold value of previous values. In another example, the footprint data  136  may be used in the operation of other devices. For example, the tool  122  such as a printer may use the footprint data  136  to position a printhead at a particular distance and orientation with respect to the side of the item  108 , such that one or more markings may be applied to the item  108  as it passes by the tool  122  on the conveyor belt  102 . 
       FIG. 2  illustrates various views  200  of the system to determine footprint data  136 , according to some implementations. Depicted are a top view  202  looking down on the system  100 , a side view  204 , and an end view  206 . 
     The top view  202  depicts the view as shown in  FIG. 1 . A line projector  112  and a camera  116  are positioned on either side of the conveyor belt  102 . The line projector  112  and the camera  116  on a side of the conveyor belt  102  are separated from one another by an offset distance  118 . The first line projector  112 ( 1 ) is at a first position that is upstream of the measurement area  110 , while the second line projector  112 ( 2 ) is at a second position that is downstream of the measurement area  110 . In this illustration the projected lines  114 ( 1 ) and  114 ( 2 ) overlap one another in the measurement area  110 . In the implementation depicted, both line projectors  112 ( 1 ) and  112 ( 2 ) may produce projected lines  114  that have the same or similar wavelengths. In other implementations, the line projectors  112 ( 1 ) and  112 ( 2 ) may produce projected lines  114 ( 1 ) and  114 ( 2 ) at different wavelengths or colors. 
     In some implementations, such as shown here, the line projectors  112  may be arranged opposite one another, such that they are pointing generally towards one another. In other implementations, the line projectors  112  may be arranged at different angles relative to the measurement area  110 . 
     The cameras  116 ( 1 ) and  116 ( 2 ) are depicted as being aligned along a long axis of the measurement area  110 , that is along a line that is perpendicular to the direction of movement  104  of the conveyor belt  102 . In other implementations the cameras  116  may be placed at other positions. These other positions may be such that the FOV of the camera  116  includes at least a portion of the measurement area  110 . For example, the first camera  116 ( 1 ) may be positioned downstream of the measurement area  110 . 
     The side view  204  shows the placement of the line projectors  112  that produce the projected lines  114  above the surface of the conveyor belt  102 . As shown each line projector  112  is positioned at a height with respect to the surface that is non-zero, that is, greater than zero. The angle between the projected line  114  and a plane of the surface of the conveyor belt  102  is less than 90 degrees. In this illustration, the camera  116 ( 2 ) is shown, also directed such that the FOV of the camera  116 ( 2 ) includes at least a portion of the measurement area  110 . Also shown in the side view  204  are the rollers  208  of the conveyor belt  102 . 
     The end view  206  shows the placement of cameras  116  and the line projectors  112  at the height above the surface of the conveyor belt  102  and also at some setoff distance with respect to a lateral edge of the conveyor belt  102 . In some implementations the setoff distance is greater than zero. 
     As depicted in these views  200 , the camera  116  is positioned to have a FOV that includes at least a portion of the projected line  114  as it appears in the measurement area  110  during operation. The camera  116  and the associated line projector  112  are located at some offset distance from one another. This offset distance may be expressed as a distance in a plane that is parallel to, or projected onto, the surface upon which the item  108  rests in the measurement area  110 . For example, the offset distance may be the distance measured within a plane of the conveyor belt  102 . 
     As depicted in these views  200 , the camera  116  and the line projector  112  are at some height to the plane of the surface upon which the item  108  rests in the measurement area  110 . 
     In other implementations, other positions of one or more of the cameras  116  or line projectors  112  may be utilized. For example, different line projectors  112  may be placed at different heights, different cameras  116  may be placed at different offset distances, and so forth. 
     This disclosure discusses the implementation in which the item  108  is moved past the measurement area  110 , such as under the influence of the conveyor belt  102 . In other implementations other techniques may be used to scan the item  108  and determine the footprint data  136 . For example, the item  108  may rest on a stationary platform while one or more of the line projectors  112  or cameras  116  are mounted to a gantry that moves with respect to the item  108 . The movement of the gantry may be manual, or may use one or more actuators. Continuing the example, the one or more actuators may comprise rotary motors, linear motors, hydraulic devices, and so forth. In another implementation, the item  108  and the line projector  112  may remain stationary, while the projected line  114  is displaced across the surface upon which the item  108  is resting. In yet another implementation, the item  108  may remain stationary on the surface and a plurality of projected lines  114  may be projected onto the surface. 
     The system  100  may include other sensors (not shown). For example, sensors may be used to determine a height of the item  108 . The sensors may include one or more of ultrasonic distance sensors, infrared distance sensors, photoelectric detector arrays, structured light depth cameras, and so forth. For example, an ultrasonic distance sensor positioned above the measurement area  110  on the conveyor belt  102  may have a sensor field-of-view directed downward and resulting distance data may be output that is used to determine the height of the item  108 . In other implementations, other sensors or techniques may be used to determine the height of the item  108 . 
     Other configurations may also be utilized. For example, instead of a conveyor belt  102 , items  108  may be suspended from overhead. In another example, the measurement area  110  may comprise a section with a window, such as positioned within a gap between two conveyor belts, and the line projectors  112 , cameras  116 , and so forth may be positioned beneath window. In yet another example, the conveyor belt  102  may be transparent or otherwise configured such that projected lines  114  may at least partially pass through and images  126  may be acquired. Continuing this example, the conveyor belt  102  may comprise a mesh or plurality of strips. 
       FIG. 3  is a block diagram  300  of the footprint module  132  that generates footprint data  136  based on the occlusion of a projected line  114 , according to some implementations. 
     The footprint module  132  may include one or more of the following modules. In some implementations the functions of one or more modules may be combined or separated. Operation of these modules may be performed, at least in part, using one or more tools available in the OpenCV libraries as developed by Intel Corporation of Santa Clara, Calif., USA; Willow Garage of Menlo Park, Calif., USA; and Itseez of Nizhny Novgorod, Russia, with information available at www.opencv.org. In another implementation, functions available in the OKAO machine vision library as promulgated by Omron Corporation of Kyoto, Japan, may be used. In still another implementation, functions such as those in the Machine Vision Toolbox for Matlab (MVTB) available using MATLAB as developed by MathWorks, Inc. of Natick, Mass., USA, may be utilized. 
     An occlusion location detection module  302  is calibrated using camera calibration data  304 . The camera calibration data  304  may include intrinsic camera parameters and extrinsic camera parameters. The intrinsic camera parameters for an individual camera  116  may include a perspective projection matrix that maps points in three-dimensional (3D) space to points in a source image, radial distortion parameters representative of radial lens distortion, tangential distortion parameters representative of tangential distortion between a camera lens and a camera sensor, and so forth. For example, the intrinsic camera parameters provide information that relates the actual camera  116  with an idealized model of a pinhole camera. The radial and tangential distortion parameters may be representative of lens aberration, also known as geometrical nonlinear distortion. 
     The extrinsic parameters for the individual camera  116  may include rotation data indicative of rotation of the individual camera  116  with respect to a calibration object or marking, translation data indicative of translation of the individual camera  116  with respect to the calibration object or marking, and so forth. For example, the extrinsic parameters may provide information about the pose of the camera  116  with respect to one or more fiducials  120  that are depicted in the image  126 . 
     In one implementation in which the OpenCV library is being utilized, the camera calibration data  304  may be determined using the calibrateCamera function. In other implementations, other techniques may be used to determine the camera calibration data  304 . 
     The camera calibration data  304  may be determined at particular times, such as during setup or initialization of the system  100 . In other implementations the camera calibration data  304  may be determined on an ongoing basis. For example, the camera calibration data  304  may be determined at different times using the images  126 . 
     As mentioned above, the occlusion location detection module  302  uses the camera calibration data  304  to account for the variances in different cameras  116 . In some implementations, camera calibration data  304  may be determined for each camera  116 , and may be used to adjust the processing of images  126  acquired from that particular camera  116 . 
     The occlusion location detection module  302  processes the image data  124  to determine occlusion location data  306  for a particular image  126 . The occlusion location data  306  is indicative of the position of an occlusion location of the projected line  114  within a particular image  126 . The occlusion location may be expressed in terms of coordinates of elements within the image  126 . For example, the image  126  may be expressed as pixels arranged in rows and columns. Within the image space, or image coordinates, a particular pixel may be referenced based on the particular row and column. For example, the occlusion location data  306  may indicate an occlusion is present in the image  126  at the pixel located at row 253 and column 93. 
     The occlusion location detection module  302  may determine the occlusion location data  306  based on the presence of a feature change of the projected line  114  with respect to the surface of the measurement area  110 . Given the differences in the relative positions of the line projector  112  and the camera  116  with respect to the measurement area  110 , when a portion of the projected line  114  interacts with an edge of an item  108  a feature change occurs. This feature change may result in a change in apparent direction of the projected line  114  in the image  126 . For example, the projected line  114  may appear to suddenly change direction and exit the measurement area  110 . In another example, the slope of a portion of the projected line  114  in the image  126  may change. The feature change may result in a transition from presence to absence of the projected line  114  in the image  126 . For example, the projected line  114  may be visible on the surface of the conveyor belt  102 , but disappears when it is refracted by the transparent glass of a bottle of water. The feature change may result in a change in intensity in the projected line  114 . For example, when the projected line  114  transitions from a brightly visible line on the surface of the measurement area  110  to a dim line on a matte black surface of the item  108 , the intensity of the pixels representing the line may drop from a brightness value of 241 to 17, below a threshold value of 100. The feature change may result in a change in polarization of the projected line  114  that exceeds a threshold value. For example, the projected line  114  that is reflected by the surface of the measurement area  110  may exhibit a polarization of 0 degrees, while the light of the projected line  114  that is reflected by the item  108  may exhibit a polarization of 45 degrees, in excess of a threshold value of 10 degrees. In other implementations, other techniques may be used to determine the feature change. 
     In some implementations, one or more of the different techniques to determine the feature change may be used to determine the occlusion location data  306 . For example, two or more of the different techniques to determine the feature change may be used in conjunction with one another. For example, the occlusion location data  306  may use an average of the feature change locations determined based on absence of the projected line, apparent change in direction, and polarization change. 
     A coordinate mapping module  308  is used to determine the coordinates with respect to real space of one or more edge points  310 . For example, the edge points  310  may be expressed in terms of coordinates with respect to an X axis that is parallel to the direction of movement  104  of the conveyor belt  102  and a Y axis that is perpendicular to the X axis. For example, the edge point  310  may be expressed in coordinates such as 27 centimeters (cm) along the X axis and 39 cm along the Y axis. 
     The coordinate mapping module  308  may use the linear motion data  134  to determine a first coordinate with respect to the X axis. For example, in the implementations depicted here the measurement area  110  and projected lines  114  are in fixed locations, and the item  108  moves past the projected lines  114 . The linear motion data  134  provides information about the displacement of the item  108  between the images  126  that are acquired. As a result, the linear motion data  134  may be used to determine the linear displacement value, such as 1 cm of movement of the item  108  between images  126 . Based on this movement, the position along the X axis may be determined. Continuing the example, the coordinate of the projected line  114 , and the occlusion location, may be designated as being 1 cm. 
     The coordinate mapping module  308  may be configured to reset values of the X axis when a first edge point  310  is determined. For example, after an interval in which no edge points  310  have been determined, a next edge point  310  may be designated as a starting edge point  310 , and an initial coordinate along the X axis may be reset to zero as of that edge point  310 . Subsequent linear motion data  134  may then be determined with respect to that zero value. 
     The coordinate mapping module  308  may use the information about the occlusion location data  306  to determine the second coordinate of the edge point  310  along the Y axis. In one implementation, a transform matrix may be used to associate a particular pixel location in terms of one or more of rows or columns in the image  126  with a particular location with regard to the Y axis. In this way, the occlusion location data  306 , that is indicative of a location with respect to the image  126  is transformed into a location in real space with respect to one or both of the X or Y axes. The coordinate mapping module  308  is discussed in more detail below with regard to  FIG. 6 . 
     As images  126  are acquired while the item  108  is scanned by the projected line  114 , the edge points  310  that are representative of the boundaries of the exterior of the item  108  are obtained. 
     In some implementations, the cameras  116  may utilize a global shutter. A global shutter allows for acquisition of an entire image  126  at one time. In comparison, a rolling shutter acquires lines in the image  126  in sequence, which may introduce distortion of a motion object. Acquisition of image data  124  by the cameras  116  as well as the acquisition of linear motion data  134  may be synchronized such that at particular time intervals this image data  124  and linear motion data  134  are acquired. By using cameras  116  with global shutter functionality, the image distortion produced by a rolling shutter is avoided. 
     In some implementations, the footprint data  136  may comprise the edge points  310 . In other implementations described next, additional processing may be performed to produce the footprint data  136 . 
     A line fitting module  312  may use one or more line fitting algorithms to determine one or more fitted lines  314  that correspond to the edge points  310 . For example, the line fitting module  312  may implement maximum likelihood-type estimation techniques, such as a least-squares estimator to produce fitted lines  314 . In one implementation, the line fitting algorithm may fill a buffer by iteratively adding edge points  310  while traversing the coordinate space in a particular direction, such as clockwise or anti-clockwise, until a line fit error is greater than a threshold value. The points in the buffer may then be saved as representative of an edge of the item  108 . 
     In one implementation, information indicative of the fitted lines  314  may be provided as the footprint data. For example, the line may be expressed in terms of endpoint coordinates, as a function, and so forth. In another implementation, the fitted lines  314  may be further processed by a polygon module  316 . 
     The polygon module  316  may be configured to determine a closed polygon that is representative of the footprint of the item  108 . For example, if the item  108  is a cubical box, the footprint of the item  108  may represent a square that is defined by the coordinates of two opposing edge points  310 . 
     In some implementations other techniques may be used to determine the footprint data  136 . For example, if the system  100  is scanning items  108  that have known or predetermined shapes, that information may be used to determine the footprint data  136 . Continuing the example, a plurality of candidate item shapes may describe the size and shape of boxes associated with different types of items  108 . A plurality of edge points  310  may be determined, and compared to determine if there is a correspondence with at least a portion of those edge points  310  and the candidate item shapes. For example, if one edge point  310  is determined for each of the four vertical sides of a box, those four points may be used to select that type of item  108  from the candidate item shapes. The footprint data  136  may then express the edges of that selected shape, with the edge points  310  fixing that shape in real space. 
       FIG. 4  is a view  400  of the image  126 ( 1 ). An enlarged view  402  shows a portion of the image  126 ( 1 ) in greater detail. Present in the image  126 ( 1 ) is the item  108  resting on a surface  404 . For example, the surface  404  in this illustration is the conveyor belt  102 . The surface  404  may be configured to provide a diffuse reflection, resulting in the projected line  114 . 
     As described above, the first line projector  112 ( 1 ) projects the projected line  114 ( 1 ) onto the surface  404  within the measurement area  110  (not shown). An analysis area  406  is shown. The analysis area  406  comprises a portion of an image  126  within which the projected line  114  is expected to appear to be when unimpeded. For example, the analysis area  406  may extend from one lateral edge of the conveyor belt  102  to the other. The analysis area  406  may be relatively narrow with respect to the length. For example, the analysis area  406  may be 10 pixels wide. The analysis area  406  comprises the portion of the image  126  that is used to determine an occlusion location  408 . For example, the analysis area  406  may comprise a rectangle that is defined by a first set of coordinates with respect to the image  126  and a second set of coordinates with respect to the image  126 . 
     As described above, the occlusion location  408  is indicative of where, with respect to the image  126 , the projected line  114  experiences an interaction with the item  108 . The occlusion results from the item  108  interacting with the projected line  114  before that projected line  114  would otherwise interact with the surface  404  in the measurement area  110 . This interaction may result in an apparent feature change. In this illustration, the feature change is manifested by the absence of the projected line  114 ( 1 ) in a portion of the analysis area  406  and the change in direction of the projected line  114 ( 1 ). In implementations where the feature change that is detected by the footprint module  132  is a change in line direction, the analysis area  406  may be relatively wide. This additional width allows several points along the projected line  114  to be detected and used to determine the change in direction. 
     The projected line  114 ( 1 ) as shown here progresses from a lateral edge of the surface  404  of the conveyor belt upwards in the image  126  until the item  108  is encountered. In some implementations, the item  108  may be relatively short, may include holes, or may be otherwise shaped such that a plurality of occlusion locations  408  are present in the analysis area  406 . In some implementations the determination of the edge point  310  for a particular image  126  may utilize the occlusion location  408  that is closest to the edge of the surface  404  that is closest to the camera  116 . For example, the occlusion location  408  having the lowest row number may be used while those with greater row numbers are discarded from further consideration. 
     As described above, the image  126  may include one or more fiducials  120 . The fiducials  120  may be used to determine the camera calibration data  304 . For example, the fiducials  120  may be recognized in the image  126  and processed to determine extrinsic parameters such as the pose of the camera  116  with respect to the surface  404 . A plurality of fiducials  120  may be arranged such that they are present within the image(s)  126  acquired by the camera(s)  116 . For example, within the field-of-view of the camera  116  may be three separate groupings of fiducials  120 . In some implementations, a particular fiducial  120  or other indicia may be used to designate the expected location of the projected line  114 . For example, a fiducial may comprise an isosceles triangle with an apex of the isosceles triangle marking a location at which the projected line  114  intersects a lateral edge of the conveyor belt  102 . The fiducials  120  comprise markings or other features which produce features in the image  126 . For example, the fiducials  120  may comprise a mark that is printed or painted onto a surface. 
     In some implementations, a linear image sensor may be utilized instead of a two-dimensional image sensor array. For example, the linear image sensor may comprise semiconductor photosites that are arranged in a straight line. These photosites may be configured to generate an electric signal responsive to incident light. As a result, the image data  126  produced would comprise a single column with many rows. In such an implementation, the analysis area  406  may have a width of one pixel. 
     Projected lines  114  having different wavelengths or colors may be used in some implementations. For example, the projected line  114 ( 1 ) may be green while a third line projector  112 ( 3 ) on the same side of the conveyor belt  102  but at a different position produces a projected line  114 ( 3 ) that is red. The footprint module  132  may be configured to assess the projected line(s)  114  based on these color differences. For example, the camera  116 ( 1 ) may be configured to acquire color image data  124  and the image  126  may be processed to assess two analysis areas  406 ( 1 ) and  406 ( 2 ) corresponding to the green and red lines, respectively. 
     Additional line projectors  112  presenting projected lines  114  with the same or different wavelengths may be used to increase the number of edge points  310  detected, increasing resolution of the footprint. As described above, the projected line(s)  114  may be arranged at other, non-perpendicular, angles relative to the direction of movement  104 . By utilizing line projectors  112  at different locations, projected lines  114  at different angles on the measurement area  110 , or combinations of the two, the system  100  is able to reliably scan an item  108  regardless of the relative orientation. For example, in the case of a single projected line  114  and a single camera  116 , a cubical item  108  could be oriented at an angle such that no feature change in the projected line  114  is apparent. However, by utilizing multiple projected lines  114  and different relative angles with respect to the conveyor belt  102 , the discontinuities in other projected lines  114  formed by edges of the item  108  may be determined and used to generate edge points  310 . 
     In some implementations, a physical or mechanical slot filter may be used to isolate the analysis area  406 . For example, a mask may be placed in an optical path of the camera  116  such that the analysis area  406  and the fiducial(s)  120  are visible, but the remaining portion of the scene is blocked out. 
       FIG. 5  illustrates a compilation  500  of analysis areas  406  obtained at different times and relative linear displacements, according to some implementations. In this illustration, a horizontal axis  502  corresponds to the time at which the image  126  which provided the analysis area  406  was acquired. With regard to the conveyor belt  102  implementation as described above, or another case in which the surface  404  moves, the horizontal axis could be indicative of relative linear displacement instead of time. 
     Each analysis area  406  comprises a “slice” that was acquired at a particular time. Continuing the example, the rightmost analysis area  406  was acquired at time=0 milliseconds (ms), such as prior to the item  108  passing through the measurement area  110 , while the leftmost analysis area  406  was acquired at time 300 ms, after the item  108  has passed through the measurement area  110 . 
     A vertical axis depicts a pixel coordinate  504 , such as a row number. In this example, the pixel count ranges from row  0  to row  1024 . The projected lines  114 ( 1 ) and  114 ( 2 ) are shown. The occlusion locations  408  are the points on the surface  404  at which the projected line  114  thereon is occluded or otherwise disrupted. 
     As depicted, the interaction of the item  108  with the projected lines  114  has provided a series of occlusion locations  408  that outline the item  108  on the surface  404 . 
       FIG. 6  is a block diagram  600  of the coordinate mapping module  308  that determines coordinates of edge points  310  based on linear displacement and occlusion location data  306 , according to some implementations. 
     The coordinate mapping module  308  may include a linear displacement determination module  602  that accepts as input timestamp(s)  128  associated with a particular image  126  and linear motion data  134 . The linear motion data  134  comprises information about the displacement or movement of the surface  404 , such as the conveyor belt  102 , with respect to the measurement area  110  during operation. For example, the linear motion data  134  may indicate that between a first time and a second time the conveyor belt  102  moved 10 cm. In this implementation, the linear displacement determination module  602  may generate an X axis coordinate  604  for an image  126  that indicates a location of 10 cm along the X axis for that image  126 . 
     In another implementation, the linear motion data  134  may indicate that the conveyor belt  102  was moving at a speed of 1 meter per second. Based on that speed, the linear displacement determination module  602  may generate an X axis coordinate  604  for an image  126 . For example, given each image  126  being acquired at 10 milliseconds intervals, the occlusion location  408  may be associated with a point along an X axis that is determined by the elapsed time multiplied by the velocity. For example, for the image  126 ( 10 ) acquired at time=0, no displacement and so x=0, for the image  126 ( 11 ) acquired at time=100 ms then x=10 cm, for the image  126 ( 12 ) acquired at time=200 ms then x=20 cm, and so forth. 
     The occlusion location data  306  may be processed by a transform module  606 . The transform module  606  may provide a transform function, matrix, or other data that is indicative of a relationship between a particular pixel coordinate within the image  126  and a physical location along the Y axis of the measurement area  110 . The transform module  606  may utilize the camera calibration data  304 . For example, a particular transform matrix may be generated for a particular camera  116  and based on the pose of that camera  116 . As a result, different cameras  116  may be processed using different transform matrices. 
     Based on the occlusion location data  306  provided as input, the transform module  606  may provide as output a Y axis coordinate  608 , indicative of a position of the occlusion location  408  along the Y axis that is orthogonal to the X axis in the plane of the surface  404 . 
     The coordinate mapping module  308  produces, for a particular image  126  in which an occlusion location  408  has been detected, the edge point  310  that is indicative of an X axis coordinate  604  and a Y axis coordinate  608 . 
       FIG. 7  is plot  700  of the edge points  310  and fitted lines  314  corresponding to the edge points  310 , according to one implementation. In this illustration, a horizontal axis  702  is indicative of locations along the X axis while a vertical axis  704  is indicative of locations along the Y axis. The edge points  310  are shown, and the line fitting module  312  has been used to determine the fitted lines  314  that correspond to the edge points  310 . The fitted lines  314  may, but need not always, pass through the edge points  310 . In some situations, outliers or erroneous readings may result in a fitted line  314  that does not intersect one or more edge points  310 . 
     The footprint data  136  may be indicative of the fitted lines  314 , one or more polygons, edge points  310 , and so forth. The fitted lines  314  in this illustration describe the boundary of the item  108  proximate to the surface  404  during scanning. 
     In some implementations, the footprint data  136  may include height data. For example, an overhead ultrasonic sensor may provide data indicative of a height of the item  108 . 
       FIG. 8  depicts a flow diagram  800  of a process of determining footprint data  136  using occlusion of projected lines, according to some implementations. The process may be implemented at least in part by the footprint module  132 . 
     At  802 , a plurality of images  126  of a projected line  114  are acquired of a scene. For example, successive images  126  may be obtained of the measurement area  110  within which a projected line is depicted. 
     At  804 , for individual ones of the plurality of images  126 , occlusion location data  306  is determined. For example, the occlusion location detection module  302  described above with regard to  FIG. 3  may determine the coordinates within the image  126  at which a feature change in the projected line  114  is determined that is representative of an occlusion of the projected line  114  by the item  108 . 
     At  806 , a linear displacement value associated with one or more of the images  126  may be determined. For example, the linear motion data  134  may be acquired that indicates the motion of the conveyor belt  102 , or other motion of the surface  404  upon which the item  108  is supported during scanning. 
     At  808 , based on the linear displacement value, a first coordinate along a first axis is determined for individual ones of the plurality of images  126 . For example, given the timestamp  128  value, the X axis coordinate of an edge point  310  may be determined as described above with regard to  FIG. 6 . The X axis coordinate may be indicative of a location in space, such as a distance along a lateral edge of the conveyor belt  102 . 
     At  810 , based on the occlusion location data  306 , a second coordinate along a second axis is determined for individual ones of the plurality of images  126 . For example, the Y axis coordinate  608  may be determined by the transform module  606  of the coordinate mapping module  308 . As described above, the transform module  606  may determine a transform that associates a particular location in an image  126 , such as the coordinates of a pixel in the image  126 , with a particular location along the Y axis in space. Continuing the example, the Y axis coordinate  608  may be indicative of a location in space at a given distance perpendicular to a particular lateral edge of the conveyor belt  102 . 
     At  812 , a plurality of edge points  310  are determined. For example, one edge point  310  may be determined for each image  126  in which an occlusion of the projected line  114  is determined. 
     At  814 , one or more fitted lines  314  are determined based on the plurality of edge points  310 . For example, a damped least-squares algorithm, also known as the Levenberg-Marquardt algorithm, may be used to fit a line to one or more of the edge points  310 . In other implementations, other techniques may be used. 
     At  816 , based on the one or more fitted lines  314 , footprint data  136  is determined. The footprint data  136  may be indicative of an outline of an item  108 , a location of the item  108 , the dimensions of the item  108  based on the outline, and so forth. For example, in some implementations the footprint data  136  may include a calculated centroid value that is indicative of a centroid for a closed polygon described by the fitted lines  314 . 
     In some implementations, the footprint data  136  may then be used for other operations. For example, the footprint data  136  may be compared with previously stored data to determine the type of the item  108 . In another example, the footprint data  136  may be used to determine instructions to control another device such as the tool  122 . 
       FIG. 9  is a block diagram  900  illustrating a materials handling facility (facility)  902  using the system  100 , according to some implementations. A facility  902  comprises one or more physical structures or areas within which one or more items  108 ( 1 ),  108 ( 2 ), . . . ,  108 (Q) may be held. As used in this disclosure, letters in parenthesis such as “(Q)” indicate an integer value greater than or equal to zero. The items  108  may comprise physical goods, such as books, pharmaceuticals, repair parts, electronic gear, and so forth. 
     The facility  902  may include one or more areas designated for different functions with regard to inventory handling. In this illustration, the facility  902  includes a receiving area  904 , a storage area  906 , and a transition area  908 . 
     The receiving area  904  may be configured to accept items  108 , such as from suppliers, for intake into the facility  902 . For example, the receiving area  904  may include a loading dock at which trucks or other freight conveyances unload the items  108 . In some implementations, the items  108  may be processed at the receiving area  904 , to generate at least a portion of item data. For example, the item  108  may be scanned using the system  100  to generate footprint data  136  about the item  108  at the receiving area  904 . 
     The storage area  906  is configured to store the items  108 . The storage area  906  may be arranged in various physical configurations. In one implementation, the storage area  906  may include one or more aisles  914 . The aisle  914  may be configured with, or defined by, fixtures  920  on one or both sides of the aisle  914 . 
     One or more users  916  and totes  918  or other material handling apparatuses may move within the facility  902 . For example, the user  916  may move about within the facility  902  to pick or place the items  108  in various fixtures  920 , placing them on the tote  918  for ease of transport. The tote  918  is configured to carry or otherwise transport one or more items  108 . For example, the tote  918  may include a basket, cart, bag, bin, and so forth. In other implementations, other material handling apparatuses such as robots, forklifts, cranes, aerial drones, and so forth, may move about the facility  902  picking, placing, or otherwise moving the items  108 . For example, a robot may pick an item  108  from a first fixture  920 ( 1 ) and move the item  108  to a second fixture  920 ( 2 ). 
     One or more sensors  924  may be configured to acquire information in the facility  902 . The sensors  924  may include, but are not limited to, cameras  922 , depth sensors  924 ( 2 ), weight sensors  924 ( 6 ), optical sensor arrays  924 ( 13 ), proximity sensors  924 ( 14 ), and so forth. The sensors  924  may be stationary or mobile, relative to the facility  902 . For example, the fixtures  920  may contain weight sensors  924 ( 6 ) to acquire weight sensor data of items  108  stowed therein, cameras  922  to acquire images of picking or placement of items  108  on shelves, optical sensor arrays  924 ( 13 ) to detect shadows of the user&#39;s hands at the fixtures  920 , and so forth. In another example, the facility  902  may include cameras  922  to obtain images of the user  916  or other objects in the facility  902 . The sensors  924  are discussed in more detail below with regard to  FIG. 10 . 
     While the storage area  906  is depicted as having a single aisle  914 , fixtures  920  storing the items  108 , sensors  924 , and so forth, it is understood that the receiving area  904 , the transition area  908 , or other areas of the facility  902  may be similarly equipped. Furthermore, the arrangement of the various areas within the facility  902  is depicted functionally rather than schematically. For example, in some implementations, multiple different receiving areas  904 , storage areas  906 , and transition areas  908  may be interspersed rather than segregated in the facility  902 . 
     The facility  902  may include, or be coupled to, an inventory management system  910 . The inventory management system  910  is configured to interact with users  916  or devices such as sensors  924 , robots, material handling equipment, computing devices, and so forth, in one or more of the receiving area  904 , the storage area  906 , or the transition area  908 . 
     During operation of the facility  902 , the sensors  924  may be configured to provide sensor data, or information based on the sensor data, to the inventory management system  910 . The sensor data may include image data obtained from cameras  922 , weight sensor data obtained from weight sensors  924 ( 6 ), and so forth. 
     The inventory management system  910  or other systems may use the sensor data to track the location of objects within the facility  902 , movement of the objects, or provide other functionality. Objects may include, but are not limited to, items  108 , users  916 , totes  918 , and so forth. For example, the image data acquired by the camera  922  may indicate removal by the user  916  of an item  108  from a particular location on the fixture  920  and placement of the item  108  on or at least partially within the tote  918 . 
     The facility  902  may be configured to receive different kinds of items  108  from various suppliers and to store them until a customer orders or retrieves one or more of the items  108 . A general flow of items  108  through the facility  902  is indicated by the arrows of  FIG. 9 . Specifically, as illustrated in this example, items  108  may be received from one or more suppliers, such as manufacturers, distributors, wholesalers, and so forth, at the receiving area  904 . In various implementations, the items  108  may include merchandise, commodities, perishables, or any suitable type of item  108 , depending on the nature of the enterprise that operates the facility  902 . 
     Upon being received from a supplier at the receiving area  904 , the items  108  may be prepared for storage in the storage area  906 . For example, in some implementations, items  108  may be unpacked or otherwise rearranged. The inventory management system  910  may include one or more software applications executing on a computer system to provide inventory management functions. These inventory management functions may include maintaining information indicative of the type, quantity, condition, cost, location, weight, or any other suitable parameters with respect to the items  108 . The items  108  may be stocked, managed, or dispensed in terms of countable units, individual units, or multiple units, such as packages, cartons, crates, pallets, or other suitable aggregations. Alternatively, some items  108 , such as bulk products, commodities, and so forth, may be stored in continuous or arbitrarily divisible amounts that may not be inherently organized into countable units. Such items  108  may be managed in terms of a measurable quantity such as units of length, area, volume, weight, time, duration, or other dimensional properties characterized by units of measurement. Generally speaking, a quantity of an item  108  may refer to either a countable number of individual or aggregate units of an item  108  or a measurable amount of an item  108 , as appropriate. 
     After arriving through the receiving area  904 , items  108  may be stored within the storage area  906 . In some implementations, like items  108  may be stored or displayed together in the fixtures  920  such as in bins, on shelves, hanging from pegboards, and so forth. In this implementation, all items  108  of a given kind are stored in one fixture  920 . In other implementations, like items  108  may be stored in different fixtures  920 . For example, to optimize retrieval of certain items  108  having frequent turnover within a large physical facility  902 , those items  108  may be stored in several different fixtures  920  to reduce congestion that might occur at a single fixture  920 . 
     When a customer order specifying one or more items  108  is received, or as a user  916  progresses through the facility  902 , the corresponding items  108  may be selected or “picked” from the fixtures  920  containing those items  108 . In various implementations, item picking may range from manual to completely automated picking. For example, in one implementation, a user  916  may have a list of items  108  they desire and may progress through the facility  902  picking items  108  from fixtures  920  within the storage area  906  and placing those items  108  into a tote  918 . In other implementations, employees of the facility  902  may pick items  108  using written or electronic pick lists derived from customer orders. These picked items  108  may be placed into the tote  918  as the employee progresses through the facility  902 . 
     After items  108  have been picked, the items  108  may be processed at a transition area  908 . The transition area  908  may be any designated area within the facility  902  where items  108  are transitioned from one location to another or from one entity to another. For example, the transition area  908  may be a packing station within the facility  902 . When the item  108  arrives at the transition area  908 , the items  108  may be transitioned from the storage area  906  to the packing station. Information about the transition may be maintained by the inventory management system  910 . 
     In another example, if the items  108  are departing the facility  902 , a list of the items  108  may be obtained and used by the inventory management system  910  to transition responsibility for, or custody of, the items  108  from the facility  902  to another entity. For example, a carrier may accept the items  108  for transport with that carrier accepting responsibility for the items  108  indicated in the list. In another example, a user  916  may purchase or rent the items  108  and remove the items  108  from the facility  902 . During use of the facility  902 , the user  916  may move about the facility  902  to perform various tasks, such as picking or placing the items  108  in the fixtures  920 . 
     To facilitate operation of the facility  902 , the inventory management system  910  is configured to use the sensor data to generate interaction data  912 . For example, tracking data may be used to associate a particular pick of an item  108  at a particular fixture  920  with a particular user ID. 
     The interaction data  912  may provide information about an interaction, such as a pick of an item  108  from the fixture  920 , a place of an item  108  to the fixture  920 , a touch made to an item  108  at the fixture  920 , a gesture associated with an item  108  at the fixture  920 , and so forth. The interaction data  912  may include one or more of the type of interaction, interaction location identifier indicative of where from the fixture  920  the interaction took place, item identifier, quantity change to the item  108 , user ID, and so forth. The interaction data  912  may then be used to further update the item data. For example, the quantity of items  108  on hand at a particular lane a the shelf may be changed based on an interaction that picks or places one or more items  108 . 
     The inventory management system  910  may combine or otherwise utilize data from different sensors  924  of different types to generate the interaction data  912 . For example, weight data obtained from weight sensors  924 ( 6 ) at the fixture  920  may be used instead of, or in conjunction with, the image data to determine the interaction data  912 . 
       FIG. 10  is a block diagram  1000  illustrating additional details of the facility  902 , according to some implementations. The facility  902  may be connected to one or more networks  1002 , which in turn connect to one or more servers  130 . The network  1002  may include private networks such as an institutional or personal intranet, public networks such as the Internet, or a combination thereof. The network  1002  may utilize wired technologies (e.g., wires, fiber optic cables, and so forth), wireless technologies (e.g., radio frequency, infrared, acoustic, optical, and so forth), or other connection technologies. The network  1002  is representative of any type of communication network, including one or more of data networks or voice networks. The network  1002  may be implemented using wired infrastructure (e.g., copper cable, fiber optic cable, and so forth), a wireless infrastructure (e.g., cellular, microwave, satellite, and so forth), or other connection technologies. 
     The servers  130  may be configured to execute one or more modules or software applications associated with the inventory management system  910  or other systems. While the servers  130  are illustrated as being in a location outside of the facility  902 , in other implementations, at least a portion of the servers  130  may be located at the facility  902 . The servers  130  are discussed in more detail below with regard to  FIG. 11 . 
     The users  916 , the totes  918 , or other objects in the facility  902  may be equipped with one or more tags  1004 . The tags  1004  may be configured to emit a signal. In one implementation, the tag  1004  may be a radio frequency identification (RFID) tag  1004  configured to emit an RF signal upon activation by an external signal. For example, the external signal may comprise a radio frequency signal or a magnetic field configured to energize or activate the RFID tag  1004 . In another implementation, the tag  1004  may comprise a transmitter and a power source configured to power the transmitter. For example, the tag  1004  may comprise a Bluetooth Low Energy (BLE) transmitter and battery. In other implementations, the tag  1004  may use other techniques to indicate presence of the tag  1004 . For example, an acoustic tag  1004  may be configured to generate an ultrasonic signal, which is detected by corresponding acoustic receivers. In yet another implementation, the tag  1004  may be configured to emit an optical signal. 
     The inventory management system  910  may be configured to use the tags  1004  for one or more of identification of the object, determining a location of the object, and so forth. For example, the users  916  may wear tags  1004 , the totes  918  may have tags  1004  affixed, and so forth, which may be read and, based at least in part on signal strength, used to determine identity and location. 
     Generally, the inventory management system  910  or other systems associated with the facility  902  may include any number and combination of input components, output components, and servers  130 . 
     The one or more sensors  924  may be arranged at one or more locations within the facility  902 . For example, the sensors  924  may be mounted on or within a floor, wall, at a ceiling, at a fixture  920 , on a tote  918 , may be carried or worn by a user  916 , and so forth. 
     The sensors  924  may include an instrumented auto-facing unit (IAFU)  924 ( 1 ). The IAFU  924 ( 1 ) may comprise a position sensor or encoder configured to provide data indicative of displacement of a pusher. As an item  108  is removed from the IAFU  924 ( 1 ), the pusher moves, such as under the influence of a spring, and pushes the remaining items  108  in the IAFU  924 ( 1 ) to the front of the fixture  920 . By using data from the position sensor, and given item data such as a depth of an individual item  108 , a count may be determined, based on a change in position data. For example, if each item  108  is 1 inch deep, and the position data indicates a change of 10 inches, the quantity held by the IAFU  924 ( 1 ) may have changed by 10 items  108 . This count information may be used to confirm or provide a cross check for a count obtained by other means, such as analysis of the image data. 
     The sensors  924  may include one or more cameras  922  or other imaging sensors. The one or more cameras  922  may include imaging sensors configured to acquire images of a scene. The cameras  922  are configured to detect light in one or more wavelengths including, but not limited to, terahertz, infrared, visible, ultraviolet, and so forth. The cameras  922  may comprise charge coupled devices (CCD), complementary metal oxide semiconductor (CMOS) devices, microbolometers, and so forth. The inventory management system  910  may use image data acquired by the cameras  922  during operation of the facility  902 . For example, the inventory management system  910  may identify items  108 , users  916 , totes  918 , and so forth, based at least in part on their appearance within the image data acquired by the cameras  922 . The cameras  922  may be mounted in various locations within the facility  902 . For example, cameras  922  may be mounted overhead, on fixtures  920 , may be worn or carried by users  916 , may be affixed to totes  918 , and so forth. 
     One or more depth sensors  924 ( 2 ) may also be included in the sensors  924 . The depth sensors  924 ( 2 ) are configured to acquire spatial or three-dimensional (3D) data, such as depth information, about objects within a field-of-view. The depth sensors  924 ( 2 ) may include range cameras, lidar systems, sonar systems, radar systems, structured light systems, stereo vision systems, optical interferometry systems, and so forth. The inventory management system  910  may use the 3D data acquired by the depth sensors  924 ( 2 ) to identify objects, determine a location of an object in 3D real space, and so forth. 
     One or more buttons  924 ( 3 ) may be configured to accept input from the user  916 . The buttons  924 ( 3 ) may comprise mechanical, capacitive, optical, or other mechanisms. For example, the buttons  924 ( 3 ) may comprise mechanical switches configured to accept an applied force from a touch of the user  916  to generate an input signal. The inventory management system  910  may use data from the buttons  924 ( 3 ) to receive information from the user  916 . For example, the tote  918  may be configured with a button  924 ( 3 ) to accept input from the user  916  and send information indicative of the input to the inventory management system  910 . 
     The sensors  924  may include one or more touch sensors  924 ( 4 ). The touch sensors  924 ( 4 ) may use resistive, capacitive, surface capacitance, projected capacitance, mutual capacitance, optical, Interpolating Force-Sensitive Resistance (IFSR), or other mechanisms to determine the position of a touch or near-touch. For example, the IFSR may comprise a material configured to change electrical resistance responsive to an applied force. The location within the material of that change in electrical resistance may indicate the position of the touch. The inventory management system  910  may use data from the touch sensors  924 ( 4 ) to receive information from the user  916 . For example, the touch sensor  924 ( 4 ) may be integrated with the tote  918  to provide a touchscreen with which the user  916  may select from a menu one or more particular items  108  for picking, enter a manual count of items  108  at a fixture  920 , and so forth. 
     One or more microphones  924 ( 5 ) or other acoustic transducers may be configured to acquire information indicative of sound present in the environment. In some implementations, arrays of microphones  924 ( 5 ) may be used. These arrays may implement beamforming techniques to provide for directionality of gain. The inventory management system  910  may use the one or more microphones  924 ( 5 ) to acquire information from acoustic tags  1004 , accept voice input from the users  916 , determine ambient noise level, and so forth. 
     One or more weight sensors  924 ( 6 ) are configured to measure the weight of a load, such as the item  108 , the tote  918 , or other objects. The weight sensors  924 ( 6 ) may be configured to measure the weight of the load at one or more of the fixtures  920 , the tote  918 , on the floor of the facility  902 , and so forth. For example, the shelf may include a plurality of lanes or platforms, with one or more weight sensors  924 ( 6 ) beneath each one to provide weight sensor data about an individual lane or platform. The weight sensors  924 ( 6 ) may include one or more sensing mechanisms to determine the weight of a load. These sensing mechanisms may include piezoresistive devices, piezoelectric devices, capacitive devices, electromagnetic devices, optical devices, potentiometric devices, microelectromechanical devices, and so forth. The sensing mechanisms of weight sensors  924 ( 6 ) may operate as transducers that generate one or more signals based on an applied force, such as that of the load due to gravity. For example, the weight sensor  924 ( 6 ) may comprise a load cell having a strain gauge and a structural member that deforms slightly when weight is applied. By measuring a change in the electrical characteristic of the strain gauge, such as capacitance or resistance, the weight may be determined. In another example, the weight sensor  924 ( 6 ) may comprise a force sensing resistor (FSR). The FSR may comprise a resilient material that changes one or more electrical characteristics when compressed. For example, the electrical resistance of a particular portion of the FSR may decrease as the particular portion is compressed. The inventory management system  910  may use the data acquired by the weight sensors  924 ( 6 ) to identify an object, determine a change in the quantity of objects, determine a location of an object, maintain shipping records, and so forth. 
     The sensors  924  may include one or more optical sensors  924 ( 7 ). The optical sensors  924 ( 7 ) may be configured to provide data indicative of one or more of color or intensity of light impinging thereupon. For example, the optical sensor  924 ( 7 ) may comprise a photodiode and associated circuitry configured to generate a signal or data indicative of an incident flux of photons. As described below, the optical sensor array  924 ( 13 ) may comprise a plurality of the optical sensors  924 ( 7 ). For example, the optical sensor array  924 ( 13 ) may comprise an array of ambient light sensors such as the ISL76683 as provided by Intersil Corporation of Milpitas, Calif., USA, or the MAX44009 as provided by Maxim Integrated of San Jose, Calif., USA. In other implementations, other optical sensors  924 ( 7 ) may be used. The optical sensors  924 ( 7 ) may be sensitive to one or more of infrared light, visible light, or ultraviolet light. The optical sensors  924 ( 7 ) may include photodiodes, photoresistors, photovoltaic cells, quantum dot photoconductors, bolometers, pyroelectric infrared detectors, and so forth. For example, the optical sensor  924 ( 7 ) may use germanium photodiodes to detect infrared light. 
     One or more radio frequency identification (RFID) readers  924 ( 8 ), near field communication (NFC) systems, and so forth, may be included as sensors  924 . For example, the RFID readers  924 ( 8 ) may be configured to read the RF tags  1004 . Information acquired by the RFID reader  924 ( 8 ) may be used by the inventory management system  910  to identify an object associated with the RF tag  1004  such as the item  108 , the user  916 , the tote  918 , and so forth. For example, based on information from the RFID readers  924 ( 8 ) detecting the RF tag  1004  at different times and RFID readers  924 ( 8 ) having different locations in the facility  902 , a velocity of the RF tag  1004  may be determined. 
     One or more RF receivers  924 ( 9 ) may also be included as sensors  924 . In some implementations, the RF receivers  924 ( 9 ) may be part of transceiver assemblies. The RF receivers  924 ( 9 ) may be configured to acquire RF signals associated with Wi-Fi, Bluetooth, ZigBee, 3G, 4G, LTE, or other wireless data transmission technologies. The RF receivers  924 ( 9 ) may provide information associated with data transmitted via radio frequencies, signal strength of RF signals, and so forth. For example, information from the RF receivers  924 ( 9 ) may be used by the inventory management system  910  to determine a location of an RF source, such as a communication interface onboard the tote  918 . 
     The sensors  924  may include one or more accelerometers  924 ( 10 ), which may be worn or carried by the user  916 , mounted to the tote  918 , and so forth. The accelerometers  924 ( 10 ) may provide information such as the direction and magnitude of an imposed acceleration. Data such as rate of acceleration, determination of changes in direction, speed, and so forth, may be determined using the accelerometers  924 ( 10 ). 
     A gyroscope  924 ( 11 ) may provide information indicative of rotation of an object affixed thereto. For example, the tote  918  or other objects may be equipped with a gyroscope  924 ( 11 ) to provide data indicative of a change in orientation of the object. 
     A magnetometer  924 ( 12 ) may be used to determine an orientation by measuring ambient magnetic fields, such as the terrestrial magnetic field. The magnetometer  924 ( 12 ) may be worn or carried by the user  916 , mounted to the tote  918 , and so forth. For example, the magnetometer  924 ( 12 ) mounted to the tote  918  may act as a compass and provide information indicative of which direction the tote  918  is oriented. 
     An optical sensor array  924 ( 13 ) may comprise one or more optical sensors  924 ( 7 ). The optical sensors  924 ( 7 ) may be arranged in a regular, repeating, or periodic two-dimensional arrangement such as a grid. The optical sensor array  924 ( 13 ) may generate image data. For example, the optical sensor array  924 ( 13 ) may be arranged within or below a fixture  920  and obtain information about shadows of items  108 , hand of the user  916 , and so forth. 
     The sensors  924  may include proximity sensors  924 ( 14 ) used to determine presence of an object, such as the user  916 , the tote  918 , and so forth. The proximity sensors  924 ( 14 ) may use optical, electrical, ultrasonic, electromagnetic, or other techniques to determine a presence of an object. In some implementations, the proximity sensors  924 ( 14 ) may use an optical emitter and an optical detector to determine proximity. For example, an optical emitter may emit light, a portion of which may then be reflected by the object back to the optical detector to provide an indication that the object is proximate to the proximity sensor  924 ( 14 ). In other implementations, the proximity sensors  924 ( 14 ) may comprise a capacitive proximity sensor  924 ( 14 ) configured to provide an electrical field and determine a change in electrical capacitance due to presence or absence of an object within the electrical field. 
     The proximity sensors  924 ( 14 ) may be configured to provide sensor data indicative of one or more of a presence or absence of an object, a distance to the object, or characteristics of the object. An optical proximity sensor  924 ( 14 ) may use time-of-flight (ToF), structured light, interferometry, or other techniques to generate the distance data. For example, ToF determines a propagation time (or “round-trip” time) of a pulse of emitted light from an optical emitter or illuminator that is reflected or otherwise returned to an optical detector. By dividing the propagation time in half and multiplying the result by the speed of light in air, the distance to an object may be determined. In another implementation, a structured light pattern may be provided by the optical emitter. A portion of the structured light pattern may then be detected on the object using a sensor  924  such as a camera  922 . Based on an apparent distance between the features of the structured light pattern, the distance to the object may be calculated. Other techniques may also be used to determine distance to the object. In another example, the color of the reflected light may be used to characterize the object, such as skin, clothing, tote  918 , and so forth. 
     The sensors  924  may include a light curtain  924 ( 15 ) that utilizes a linear array of light emitters and a corresponding linear array of light detectors. For example, the light emitters may comprise a line of infrared light emitting diodes (LEDs) or vertical cavity surface emitting lasers (VCSELs) that are arranged above a top shelf in front of the fixture  920 , while the light detectors comprise a line of photodiodes sensitive to infrared light arranged below the light emitters. The light emitters produce a “lightplane” or sheet of infrared light that is then detected by the light detectors. An object passing through the lightplane may decrease the amount of light falling upon the light detectors. For example, the user&#39;s  916  hand would prevent at least some of the light from light emitters from reaching a corresponding light detector. As a result, a position along the linear array of the object may be determined that is indicative of a touchpoint. This position may be expressed as touchpoint data, with the touchpoint being indicative of the intersection between the hand of the user  916  and the sheet of infrared light. In some implementations, a pair of light curtains  924 ( 15 ) may be arranged at right angles relative to one another to provide two-dimensional touchpoint data indicative of a position of touch in a plane. Input from the light curtain  924 ( 15 ), such as indicating occlusion from a hand of a user  916  may be used to trigger acquisition or selection of image data for processing by the inventory management system  910 . 
     A location sensor  924 ( 16 ) may be configured to provide information such as geographic coordinates, speed, heading, and so forth. The location sensor  924 ( 16 ) may comprise a radio navigation-based system, such as a terrestrial or satellite-based navigational system. Satellite-based navigational systems may include a GPS receiver, a Global Navigation Satellite System (GLONASS) receiver, a Galileo receiver, a BeiDou Navigation Satellite System (BDS) receiver, an Indian Regional Navigational Satellite System, and so forth. 
     The sensors  924  may include other sensors  924 (S) as well. For example, the other sensors  924 (S) may include ultrasonic rangefinders, thermometers, barometric sensors, hygrometers, and so forth. For example, the inventory management system  910  may use information acquired from thermometers and hygrometers in the facility  902  to direct the user  916  to check on delicate items  108  stored in a particular fixture  920 , which is overheating, too dry, too damp, and so forth. 
     In some implementations, the camera  922  or other sensors  924 (S) may include hardware processors, memory, and other elements configured to perform various functions. For example, the cameras  922  may be configured to generate image data, send the image data to another device such as the server  130 , and so forth. 
     The facility  902  may include one or more access points  1006  configured to establish one or more wireless networks. The access points  1006  may use Wi-Fi, NFC, Bluetooth, or other technologies to establish wireless communications between a device and the network  1002 . The wireless networks allow the devices to communicate with one or more of the sensors  924 , the inventory management system  910 , the optical sensor arrays  924 ( 13 ), the tags  1004 , a communication device of the tote  918 , or other devices. 
     Output devices  1008  may also be provided in the facility  902 . The output devices  1008  are configured to generate signals, which may be perceived by the user  916  or detected by the sensors  924 . In some implementations, the output devices  1008  may be used to provide illumination of the optical sensor array  924 ( 13 ), light curtain  924 ( 15 ), and so forth. 
     Haptic output devices  1008 ( 1 ) are configured to provide a signal that results in a tactile sensation to the user  916 . The haptic output devices  1008 ( 1 ) may use one or more mechanisms such as electrical stimulation or mechanical displacement to provide the signal. For example, the haptic output devices  1008 ( 1 ) may be configured to generate a modulated electrical signal, which produces an apparent tactile sensation in one or more fingers of the user  916 . In another example, the haptic output devices  1008 ( 1 ) may comprise piezoelectric or rotary motor devices configured to provide a vibration, which may be felt by the user  916 . 
     One or more audio output devices  1008 ( 2 ) may be configured to provide acoustic output. The acoustic output includes one or more of infrasonic sound, audible sound, or ultrasonic sound. The audio output devices  1008 ( 2 ) may use one or more mechanisms to generate the acoustic output. These mechanisms may include, but are not limited to, the following: voice coils, piezoelectric elements, magnetostrictive elements, electrostatic elements, and so forth. For example, a piezoelectric buzzer or a speaker may be used to provide acoustic output. In another example, a location of a mobile device in the facility  902  may be determined based on device data indicative of ultrasonic sound emitted by audio output devices  1008 ( 2 ) positioned within the facility  902 . 
     Display devices  1008 ( 3 ) may be configured to provide output, which may be seen by the user  916  or detected by a light-sensitive sensor such as a camera  922  or an optical sensor  924 ( 7 ). In some implementations, the display devices  1008 ( 3 ) may be configured to produce output in one or more of infrared, visible, or ultraviolet light. The output may be monochrome or in color. The display devices  1008 ( 3 ) may be one or more of emissive, reflective, microelectromechanical, and so forth. An emissive display device  1008 ( 3 ), such as using LEDs, is configured to emit light during operation. In comparison, a reflective display device  1008 ( 3 ), such as using an electrophoretic element, relies on ambient light to present an image. Backlights or front lights may be used to illuminate non-emissive display devices  1008 ( 3 ) to provide visibility of the output in conditions where the ambient light levels are low. 
     The display devices  1008 ( 3 ) may be located at various points within the facility  902 . For example, the addressable displays may be located on fixtures  920 , totes  918 , on the floor of the facility  902 , and so forth. 
     Other output devices  1008 (P) may also be present. For example, the other output devices  1008 (P) may include scent/odor dispensers, document printers, 3D printers or fabrication equipment, and so forth. 
       FIG. 11  illustrates a block diagram  1100  of a server  130  configured to support operation of the facility  902 , according to some implementations. The server  130  may be physically present at the facility  902 , may be accessible by the network  1002 , or a combination of both. The server  130  does not require end-user knowledge of the physical location and configuration of the system that delivers the services. Common expressions associated with the server  130  may include “on-demand computing”, “software as a service (SaaS)”, “platform computing”, “network-accessible platform”, “cloud services”, “data centers”, and so forth. Services provided by the server  130  may be distributed across one or more physical or virtual devices. 
     One or more power supplies  1102  may be configured to provide electrical power suitable for operating the components in the server  130 . The one or more power supplies  1102  may comprise batteries, capacitors, fuel cells, photovoltaic cells, wireless power receivers, conductive couplings suitable for attachment to an external power source such as provided by an electric utility, and so forth. The server  130  may include one or more hardware processors  1104  (processors) configured to execute one or more stored instructions. The processors  1104  may comprise one or more cores. One or more clocks  1106  may provide information indicative of date, time, ticks, and so forth. For example, the processor  1104  may use data from the clock  1106  to associate a particular interaction with a particular point in time. 
     The server  130  may include one or more communication interfaces  1108  such as input/output (I/O) interfaces  1110 , network interfaces  1112 , and so forth. The communication interfaces  1108  enable the server  130 , or components thereof, to communicate with other devices or components. The communication interfaces  1108  may include one or more I/O interfaces  1110 . The I/O interfaces  1110  may comprise Inter-Integrated Circuit (I2C), Serial Peripheral Interface bus (SPI), Universal Serial Bus (USB) as promulgated by the USB Implementers Forum, RS-232, and so forth. 
     The I/O interface(s)  1110  may couple to one or more I/O devices  1114 . The I/O devices  1114  may include input devices such as one or more of a sensor  924 , keyboard, mouse, scanner, and so forth. The I/O devices  1114  may also include output devices  1008  such as one or more of a display device  1008 ( 3 ), printer, audio speakers, and so forth. In some embodiments, the I/O devices  1114  may be physically incorporated with the server  130  or may be externally placed. 
     The network interfaces  1112  may be configured to provide communications between the server  130  and other devices, such as the totes  918 , routers, access points  1006 , and so forth. The network interfaces  1112  may include devices configured to couple to personal area networks (PANs), local area networks (LANs), wireless local area networks (WLANS), wide area networks (WANs), and so forth. For example, the network interfaces  1112  may include devices compatible with Ethernet, Wi-Fi, Bluetooth, ZigBee, and so forth. 
     The server  130  may also include one or more busses or other internal communications hardware or software that allow for the transfer of data between the various modules and components of the server  130 . 
     As shown in  FIG. 11 , the server  130  includes one or more memories  1116 . The memory  1116  may comprise one or more non-transitory computer-readable storage media (CRSM). The CRSM may be any one or more of an electronic storage medium, a magnetic storage medium, an optical storage medium, a quantum storage medium, a mechanical computer storage medium, and so forth. The memory  1116  provides storage of computer-readable instructions, data structures, program modules, and other data for the operation of the server  130 . A few example functional modules are shown stored in the memory  1116 , although the same functionality may alternatively be implemented in hardware, firmware, or as a system on a chip (SoC). 
     The memory  1116  may include at least one operating system (OS) module  1118 . The OS module  1118  is configured to manage hardware resource devices such as the I/O interfaces  1110 , the I/O devices  1114 , the communication interfaces  1108 , and provide various services to applications or modules executing on the processors  1104 . The OS module  1118  may implement a variant of the FreeBSD operating system as promulgated by the FreeBSD Project; other UNIX or UNIX-like variants; a variation of the Linux operating system as promulgated by Linus Torvalds; the Windows operating system from Microsoft Corporation of Redmond, Wash., USA; and so forth. 
     Also stored in the memory  1116  may be a data store  1120  and one or more of the following modules. These modules may be executed as foreground applications, background tasks, daemons, and so forth. The data store  1120  may use a flat file, database, linked list, tree, executable code, script, or other data structure to store information. In some implementations, the data store  1120  or a portion of the data store  1120  may be distributed across one or more other devices including the servers  130 , network attached storage devices, and so forth. 
     A communication module  1122  may be configured to establish communications with one or more of other servers  130 , mobile devices, the totes  918 , sensors  924 , or other devices. The communications may be authenticated, encrypted, and so forth. 
     The memory  1116  may store the footprint module  132 . The functions of the footprint module  132  are discussed above. 
     The memory  1116  may store a tool control module  1124 . The tool control module  1124  may be configured to generate instruction to control the tool  122 . For example, the tool control module  1124  may use the footprint data  136  to determine the location of one or more sides of the item  108  to use in positioning the tool  122 . Continuing the example, the tool  122  may comprise a continuous inkjet printer that is used to apply one or more machine-readable markings on the item  108 . 
     The memory  1116  may also store an inventory management module  1126 . The inventory management module  1126  is configured to provide the inventory functions as described herein with regard to the inventory management system  910 . For example, the inventory management module  1126  may track items  108  between different fixtures  920 , to and from the totes  918 , and so forth. During operation, the inventory management module  1126  may access sensor data  1132 , such as the image data  124 , data from other sensors  924 , and so forth. 
     The data store  1120  may store one or more threshold values  1134 . For example, the threshold values  1134  may include the threshold value used by the footprint module  132  to determine the occlusion location data  306 . 
     An accounting module  1128  may be configured to assess charges to accounts associated with particular users  916  or other entities. For example, the interaction data  912  may indicate that the user  916  has removed a particular item  108  from a fixture  920 . Based on the interaction data  912 , the accounting module  1128  may assess the charge to a payment instrument associated with the account. 
     Processing of sensor data  1132 , such as the image data  124 , may be performed by a module implementing, at least in part, one or more of the following tools or techniques. In one implementation, processing of the image data may be performed, at least in part, using one or more tools available in the OpenCV library as developed by Intel Corporation of Santa Clara, Calif., USA; Willow Garage of Menlo Park, Calif., USA; and Itseez of Nizhny Novgorod, Russia, with information available at www.opencv.org. In another implementation, functions available in the OKAO machine vision library as promulgated by Omron Corporation of Kyoto, Japan, may be used to process the sensor data  1132 . In still another implementation, functions such as those in the Machine Vision Toolbox for Matlab (MVTB) available using MATLAB as developed by MathWorks, Inc. of Natick, Mass., USA, may be utilized. 
     Techniques such as artificial neural networks (ANNs), active appearance models (AAMs), active shape models (ASMs), principal component analysis (PCA), cascade classifiers, and so forth, may also be used to process the sensor data  1132  or other data. For example, the ANN may be a trained using a supervised learning algorithm such that object identifiers are associated with images of particular objects within training images provided to the ANN. Once trained, the ANN may be provided with the sensor data  1132  such as the image data to generate identification data of an object. 
     Other modules  1130  may also be present in the memory  1116  as well as other data  1136  in the data store  1120 . 
     By using the devices and techniques described in this disclosure, the footprint data  136  about items  108  may be determined rapidly regardless of the nature of the item  108 . For example, footprint data  136  may be determined for transparent items  108  such as bottles or items  108  with mirror finishes. The footprint data  136  may then be used for identification of the item  108 , to control operation of tools  122 , and so forth. 
     The processes discussed herein may be implemented in hardware, software, or a combination thereof. In the context of software, the described operations represent computer-executable instructions stored on one or more non-transitory computer-readable storage media that, when executed by one or more processors, perform the recited operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, and the like that perform particular functions or implement particular abstract data types. Those having ordinary skill in the art will readily recognize that certain steps or operations illustrated in the figures above may be eliminated, combined, or performed in an alternate order. Any steps or operations may be performed serially or in parallel. Furthermore, the order in which the operations are described is not intended to be construed as a limitation. 
     Embodiments may be provided as a software program or computer program product including a non-transitory computer-readable storage medium having stored thereon instructions (in compressed or uncompressed form) that may be used to program a computer (or other electronic device) to perform processes or methods described herein. The computer-readable storage medium may be one or more of an electronic storage medium, a magnetic storage medium, an optical storage medium, a quantum storage medium, and so forth. For example, the computer-readable storage media may include, but is not limited to, hard drives, floppy diskettes, optical disks, read-only memories (ROMs), random access memories (RAMs), erasable programmable ROMs (EPROMs), electrically erasable programmable ROMs (EEPROMs), flash memory, magnetic or optical cards, solid-state memory devices, or other types of physical media suitable for storing electronic instructions. Further, embodiments may also be provided as a computer program product including a transitory machine-readable signal (in compressed or uncompressed form). Examples of transitory machine-readable signals, whether modulated using a carrier or unmodulated, include, but are not limited to, signals that a computer system or machine hosting or running a computer program can be configured to access, including signals transferred by one or more networks. For example, the transitory machine-readable signal may comprise transmission of software by the Internet. 
     Separate instances of these programs can be executed on or distributed across any number of separate computer systems. Thus, although certain steps have been described as being performed by certain devices, software programs, processes, or entities, this need not be the case, and a variety of alternative implementations will be understood by those having ordinary skill in the art. 
     Additionally, those having ordinary skill in the art will readily recognize that the techniques described above can be utilized in a variety of devices, environments, and situations. Although the subject matter has been described in language specific to structural features or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as illustrative forms of implementing the claims.