Digital model rectification with sensing robot

A system includes a computer that includes a processor and a memory storing instructions executable by the processor to decompose a stored map of an area into a plurality of polygonal sub-areas. The instructions include instructions to generate a set of target locations in the polygonal sub-areas according to a leaky ball algorithm. The instructions include instructions to actuate a robot to move to a first one of the target locations of the set. The instructions include instructions to actuate a sensor to collect data at the first one of the target locations.

BACKGROUND

Unmanned vehicles or robots can be deployed in an area to obtain data about an area, e.g., map data and data about objects in the area. However, problems exist with respect to operation of such robots. For example, often a robot can be provided with at best incomplete and/or out-of-date map data of an area, e.g., boundaries or obstacles such as walls, stairs, etc., may have been moved, added, or removed since a map was last updated. Further, objects such as equipment, furniture, etc., may have been added, removed, or moved. Operating a robot to navigate to a suitable location and/or pose to obtain data about an object and/or map data based on such changed, incomplete, and/or inaccurate data presents challenges.

DETAILED DESCRIPTION

Introduction

A system includes a computer that includes a processor and a memory storing instructions executable by the processor to decompose a stored map of an area into a plurality of polygonal sub-areas. The instructions include instructions to generate a set of target locations in the polygonal sub-areas according to a leaky ball algorithm. The instructions include instructions to actuate a robot to move to a first one of the target locations of the set. The instructions include instructions to actuate a sensor to collect data at the first one of the target locations.

The instructions may further include instructions to decompose the stored map of the area into the plurality of polygonal sub-areas based on locations of objects specified in the stored map.

Each of the target locations may define a data collection area, and the instructions may further include instructions to identify a first data collection area of one of the target locations overlapped by a second data collection area of another of the target locations.

The instructions may further include instructions to remove the target location defining the first data collection area from the set before actuating the robot to move to the first one of the target locations.

The instructions may further include instructions to identify a set of navigable paths based on the stored map, and to actuate the robot to move to the first one of the target locations along one or more of the navigable paths.

The instructions may further include instructions to actuate the sensor to collect data while actuating the robot to move along one or more of the navigable paths.

The stored map may include barriers, and the instructions may further include instructions to identify the set of navigable paths based on the barriers included in the map.

The instructions may further include instructions to select a subset of navigable paths from the set of navigable paths, the subset of paths connecting the target locations.

The instructions may further include instructions to select the subset of navigable paths to minimize a distance along the navigable paths connecting the target locations.

A system includes a computer that includes a processor and a memory storing instructions executable by the processor to identify a set of navigable paths based on a stored map of an area. The instructions include instructions to actuate a robot to move along the navigable paths. The instructions include instructions to actuate a sensor supported by the robot to collect data while actuating the robot to move along one or more of the navigable paths. The instructions include instructions to identify an object specified in a digital model of the area, stored at a remote server, to be along one of the navigable paths. The instructions include instructions to update the object in the digital model based on the collected data.

The navigable paths may define data collection areas, and the instructions may further include instructions to select a subset of navigable paths from the set the navigable paths based on the data collection areas.

The instructions may further include instructions to select the subset of the navigable paths such that the data collection areas overlap the area of the stored map and a distance traveled by the robot is minimized.

A method includes decomposing a stored map of an area into a plurality of polygonal sub-areas. The method includes generating a set of target locations in the polygonal sub-areas according to a leaky ball algorithm. The method includes actuating a robot to move to a first one of the target locations of the set. The method includes actuating a sensor to collect data at the first one of the target locations.

The method may include decomposing the stored map of the area into the plurality of polygonal sub-areas based on locations of objects specified in the stored map.

Each of the target locations may define a data collection area, and the method may include identifying a first data collection area of one of the target locations overlapped by a second data collection area of another of the target locations.

The method may include removing the target location defining the first data collection area from the set before actuating the robot to move to the first one of the target locations.

The method may include identifying a set of navigable paths based on the stored map, and the method may include actuating the robot to move to the first one of the target locations along one or more of the navigable paths.

The method may include actuating the sensor to collect data while actuating the robot to move along one or more of the navigable paths.

The stored map may include barriers, and the i method may include identifying the set of navigable paths based on the barriers included in the map.

The method may include selecting a subset of navigable paths from the set of navigable paths, the subset of paths connecting the target locations.

With reference toFIGS. 1 and 2, wherein like numerals indicate like parts throughout the several views a system20for recording changes in a layout of an area50includes a computer22that includes a processor and a memory storing instructions executable by the processor to decompose a stored map54of the area50into a plurality of polygonal sub-areas56(shown inFIGS. 4-6). The instructions include instructions to generate a set of target locations52in the polygonal sub-areas56according to a leaky ball algorithm. The instructions include instructions to actuate a robot30to move to a first one of the target locations52of the set. The instructions include instructions to actuate a sensor32to collect data at the first one of the target locations52.

The map54, shown inFIGS. 3-4 and 7-9, specifies a layout of a defined area50. The layout is a specification of boundaries of the area50as well as of physical features that define the area50, such as walls, barriers, steps, ramps, etc., i.e., a layout specifies, in addition to area50boundaries, typically further specifies locations52and orientations of objects and other physical features of the area50. The defined area50may be an area, such as a manufacturing facility, an assembly facility, a storage facility, an office facility, etc. The map54may include data that specifies barriers58, i.e., objects or other physical features (such as walls, stairs, ramps, equipment, etc.) that inhibit movement within the area50. In other words, the specified barriers58restrict movement from one side of the barrier58to the other, e.g., the robot30cannot navigate through a wall. The data may specify coordinates of the barriers58, X-Y coordinates relative to specified X-Y axes having a specified origin. The X-Y coordinates may be relative to a positioning system (such as GPS), relative to a certain barrier (such as a structural support wall or pillar in the area50), relative to edges or a center of the area50, or relative to any other suitable datum or data for defining locations of barriers58in the map54. The data of the map54may be based on blueprints and other technical documents of the defined area50, a survey of the defined area50, a previously stored digital model of the defined area50, or other information suitable for specifying the layout of the defined area50.

A digital model is a set of electronic data, i.e., that can be stored in a computer memory, that describes objects and other physical features. A digital model of an area50includes data that that specifies a layout of the defined area50. The digital model may include data specifying coordinates (e.g., X-Y coordinates as described for the map54) of barriers58and other objects in the defined area50. For example, the objects may include walls, doorways, rooms, corridors, machines, desks, cubical barriers, storage areas, stock, assembly and dunnage transfer systems, etc. The digital model may include data specifying shapes of the objects. The shapes may be three-dimensional (3-D), e.g., the data may specify heights, widths, and depths of surfaces of the objects. The digital model may include data specifying orientations of the objects. The orientations of the objects are rotational orientations of the objects, e.g., facing directions of specified surfaces of the objects relative to X-Y axes. The digital model may include computer-aided-design (CAD) data and/or mesh data. CAD data is data used by a CAD computer program to specify the layout of the defined area50and the location, shape, and orientation of objects in the defined area50. Example CAD computer programs include AutoCAD by Autodesk and MPDS4 by CAD Schroder. Mesh data is data that specifies a collection of vertices, edges, and faces that define a shape of an object. The faces may be triangles, quadrilaterals, or other convex polygons.

The target location52is a location that specifies coordinates from which the sensor32may collect information and generate data specifying one or more objects in the area50. The target location52may be determined by the server computer22, as described below.

Robot

The robot30can autonomously navigate the area50and collect data via the sensors32for updating the digital model. Autonomous navigation is navigation of the robot30, e.g., to move to a specified location52and/or along a specified path60, without human input. The robot30includes a base34that supports other components, such as the sensors32(e.g., via a data collector assembly36), navigation sensors38, a robot computer40, and a propulsion system42. The base34may be metal, plastic, or any suitable material having sufficient strength for supporting the components, including a combination of various materials.

The propulsion system42transforms stored energy into motion of the robot30. The proposition system20includes an energy storage device, such as a battery or a capacitor. The propulsion system42includes one or more motors, e.g., electric motors that transform electrical energy into mechanical energy, i.e., torque. The propulsion system42includes wheels operatively coupled to the motor(s) such that torque from the motor(s) is transferred to the wheels. Different wheels may be operatively coupled to different motors, e.g., such that the motors may cause the wheels to spin in opposite directions to change a direction of the robot30. The proposition system20may move the robot30in response to a command from the robot computer40.

The robot30may include a steering system44that controls a steering angle of one or more wheels of the robot30. The steering system44includes a servo motor and steering linkage, or other suitable structure for controlling the steering angle of the wheels in response to a command from the robot computer40.

The navigation sensors38provide data specifying a location and/or proximity of the robot30, e.g., relative to the X-Y coordinates of the map54, other coordinate systems (such as GPS when the coordinates of the map54are based on a local system), and/or detected physical objects. The navigation sensors38may be global positioning system (GPS) sensors; accelerometers such as piezo-electric or microelectromechanical systems (MEMS) sensors; gyroscopes such as rate, ring laser, or fiber-optic gyroscopes; inertial measurements units (IMU); magnetometers; radar sensors; scanning laser range finders; light detection and ranging (LIDAR) devices; sonar sensors; and/or image processing sensors32such as cameras.

The robot30includes the data collector assembly36for collecting data specifying parameters of detected objects. The data collector assembly36includes one or more sensors32. The data collector is supported by the robot30, e.g., fixed to the base34of the robot30. The data collector may include one or more legs that support the sensors32, e.g., above the base34by a certain amount. A bottom end of the legs may be fixed to the base34, and the sensors32may be supported at a top end of the legs opposite the bottom end.

The data collector assembly36may include a gimbal46for controlling a facing direction D of one or more of the sensors32(such as a camera32b), i.e., a direction in which the sensor32gathers information and generates data from. The gimbal46may pivot the sensors32to change an azimuth angle A1and/or an altitude angle A2of the facing direction D of the sensor32relative to the base34(shown inFIG. 2). For example, a first portion of the gimbal46may be fixed to the legs(s) and a second portion of the gimbal46may be fixed to the sensors32. The first portion and the second portion may be connected to each other via one or more hinges, rotator plates, pins, bushings, bearings, and/or other suitable structure for providing relative rotation. The gimbal46may include one or more motors, gears, servos, or other suitable structure for controlling the azimuth angle A1and/or the altitude angle A2of the facing direction D of the sensor32, e.g., in response to a command from the robot computer40.

The sensors32detect the external world by collecting information and generating data specifying parameters of objects detected by the sensors32. For example, the data may specify a location of a detected object relative to the sensor32and/or robot30, e.g., a distance from the sensor32to the object, an azimuth angle A1of the object relative to a specified direction (e.g., forward), an altitude angle A2of the object relative to a specified direction (e.g., parallel with the base34and/or relative to the altitude angle A2of the facing direction D of the sensor32). As another example, the data may specify a shape of the detected object. The shape may be three-dimensional (3-D), e.g., the data may specify a height, width, and depth of a surface of the detected object.

One or more of the sensors32may be a light detection and ranging (LIDAR) lidar sensor32athat measures distances to detected objects by illuminating the object with pulsed laser light and measuring return times of reflected pulses. Differences in return times and wavelengths of reflected pulses can then be used to generate data specifying a 3-D shape of the object.

One or more of the sensors32may be a camera32bthat generates data specifying an image detected by the camera32b. The data may specify a plurality of pixels arranged in a grid, e.g., defining an X-Y coordinate system. The data may specify a color, brightness, hue, etc., of each pixel. A pair of cameras may be used, e.g., to enable bi-cameral image analysis (also known as stereoscopic image analysis) to determine the proximity of an object in the images, i.e., a distance from the pair of cameras to the object.

The robot computer40is a microprocessor-based controller implemented via circuits, chips, or other electronic components. For example, the robot computer40includes a processor, memory, etc. The memory of the robot computer40may include memory for storing instructions executable by the processor as well as for electronically storing data and/or databases. The robot computer40can be in electronic communication with the navigation sensors38, the propulsion system42, the server computer22, and the data collector, e.g., via wired and/or wireless mechanisms such as a communication network48or other suitable mechanism for transmitting and receiving data and commands. Although one robot computer40is shown inFIG. 1for ease of illustration, it is to be understood that the robot computer40could include, and various operations described herein could be carried out by, one or more computing devices.

The robot computer40is programmed to, i.e., the memory may store instructions executable by the processor to, navigate the robot30. The computer may navigate the robot30by transmitting commands to the proposition system20. The commands may specify actuation of one or more of the motors, e.g., the commands may specific a direction of rotation, a magnitude of torque, and/or a speed of rotation for each motor. For example, the commands may specify actuation of the motors such that wheels of the robot30spin in a same direction and a same speed, causing the robot30to move in a straight line. As another example, the commands may specify actuation of the motors such that wheels on a right side and a left side of the robot30spin in opposite directions or at different speeds, causing the robot30to spin or move along a curved path, respectively. The computer may navigate the robot30by transmitting commands to the steering system44, e.g., specifying a steering angle for the wheels of the robot30.

The robot computer40navigates the robot30based on data from the navigation sensors38. For example, data from the navigation sensors38may specify a proximity of the robot30to a detected object and the robot computer40may command the propulsion system42and the steering system44based on such data, e.g., to avoid contact with the detected object, to maintain a specified distance from the detected object, etc. As another example, data from the navigation sensors38may specify a location52of the robot30relative to coordinates, e.g., GPS coordinates, coordinates relative to a certain detected object (such as a pillar or other fixed object of the area50), and coordinates based on triangulation of a plurality of detected signals (such as RF signals transmitted by transmitters of the area50). The robot computer40may transmit commands to the propulsion system42and the steering system44to move the robot30from the from the specified location52of the robot30to a target location52and/or along a specified navigable path60.

The robot computer40may navigate the robot30in response to a command from the server computer22. The command from the server computer22may specify one or more target locations52and navigable paths60. The robot computer40may navigate the robot30to the target locations52and along the navigable paths60.

The robot computer40may be programmed to move one or more of the sensors32to control the facing direction D of the sensors32. For example, the robot computer40may transmit a command to the gimbal46, e.g., to motors, servos, etc., of the gimbal46. The command may specify an azimuth angle A1and/or an altitude angle A2. The robot computer40may move the sensors32in response to a command from the server computer22, e.g., commanding actuation of the robot30to a specified pose (described below).

The robot computer40may be programmed to actuate the sensors32. For example, the robot computer40may transmit a command to the sensors32commanding the sensors32to collect information and generate data about objects detected by the sensors32.

The robot computer40may be programmed to transmit data about objects detected by the sensors32to the server computer22, e.g., via the communication network48. Data about an object (object data) is data that that specifies one or more physical attributes of the object. For example, object data may specify a height, a width, a shape, a surface curvature, a location and/or orientation (e.g., relative to X-Y coordinates and axes), etc., of the object.

Communication Network

The communication network48(sometimes referred to as a wide area network because it can include communications between devices that are geographically remote from one another, i.e., not in a same building) includes hardware, for facilitating communication among components of the system20, e.g., the server computer22and the robot computer40. The communication network48may facilitate wired or wireless communication among the components in accordance with a number of communication protocols and mechanisms. For example, the communication network48may any desired combination of wired (e.g., cable and fiber) and/or wireless (e.g., cellular, wireless, satellite, microwave, and radio frequency) communication mechanisms and any desired network topology (or topologies when multiple communication mechanisms are utilized). Exemplary communication networks include wired and wireless communication networks using Bluetooth, IEEE 802.11, local area networks (LAN) and/or wide area networks (WAN), Ethernet, WiFi, Local Interconnect Network (LIN), and the Internet, for providing data communication services.

Server Computer

The server computer22is a computing device that includes hardware, e.g. circuits, chips, antenna, etc., programmed to transmit, receive, and process information, to and from other computing devices. The server computer22is remote from the robot30and the data collector assembly36. The server computer22may be one or more computers, each generally including at least one processor and at least one memory, implemented as described herein, the memory storing instructions executable by the processor, including instructions for carrying out various processes described herein. The server computer22is in communication with the robot computer40, e.g., via the communication network48. The server computer22stores the map54of the defined area50, e.g., in the memory of the server computer22. The server computer22stores the digital model.

The server computer22is programmed to determine a set of target locations52in the defined area50. The target locations52are specified according to coordinates, e.g., X-Y coordinates, on the map54of the defined area50. The X-Y coordinates specify positions along X-Y axes of a Cartesian coordinate system62. An origin of the Cartesian coordinate system62may be at an intersection of X, Y axes of the Cartesian coordinate system62. The origin may be at a center of the area50of the map54, a corner of the area50of the map54, etc.

Each of the target locations52may define a data collection area64(shown inFIGS. 5 and 6). The data collection area64is an area from which data may be obtained by a sensor32of the data collector assembly36when the robot30is at the location52. The data collection area64may be defined by capabilities of the sensors32. For example, the data collection area64may be circular in shape and have a radius defined by a detection range of a 360-degree LIDAR sensor32a. As another example, the data collection area64may be triangular in shape, e.g., having a length defined by a detection range of a camera32b, and a vertex angle defined by a field-of-view of the camera32b.

The server computer22can be programmed to determine the target locations52by first decomposing the stored map54of the defined area50into a plurality of polygonal sub-areas56(shown inFIGS. 4-6). Each sub-area56encloses a portion of the defined area50. The sub-areas56may overlap each other. The sub-areas56provide smaller, less complex shapes (as compared to the entirety of the defined area50). The computer22may decompose the stored map54of the area50into the plurality of polygonal sub-areas56based on locations52of objects, such as barriers58, specified in the stored map54. For example, the server computer22may use the barriers58in the stored map54as initial boundaries of a complex polygon and/or other shape, including areas that are not fully enclosed. The server computer22may decompose the initial boundaries into a plurality of enclosed convex polygons using known polygonal decomposition algorithms. One or more of the sub-areas56may overlap each other. The server computer22may use other decomposition techniques, such as Boustrophedon Cellular Decomposition, Trapezoidal decomposition and convex polygonal decomposition.

Next, the server computer22may generate the set of target locations52in the polygonal sub-areas56according to a leaky ball algorithm. The leaky ball algorithm determines the target locations52by positioning circles within each of the sub-areas56. The circles are positioned to cover all (or substantially all) of each of the sub-areas56. The circles overlap. The circles are positioned such that a minimum number of circles are required to cover the sub-areas56. Covering the sub-areas56with the minimum number of circles is a geometric set cover problem. Covering problems, such as the geometric set cover problem, may be solved using a linear program and an approximation algorithm, such as a greedy algorithm. The server computer22may use other techniques to generate the set of target locations52in the polygonal sub-areas56, such as with the use of a Voronoi diagram.

A diameter of the circles used with the leaky ball algorithm is based on data collection capabilities of the sensor32. In other words, the circles may have a same size and shape as the data collection area64defined by the target location52. For example, the radius of circle may be equal to a detection range of a 360-degree LIDAR sensor32a. The circles may cover less than all of each of the sub-areas56, e.g., substantially all. For example, the map54and/or digital model may include data specifying portions of the defined area50that do not need to be covered and/or the layout of the map54may prevent complete coverage.

Determining the target locations52of each sub-area56reduces computing power required to solve the leaky ball algorithm, e.g., by providing smaller, simpler, polygonal areas to be covered. Once target locations52of for each sub-area56are generated, they may be combined to provide the set of target locations52in the defined area50.

The server computer22may be programmed to eliminate redundant target locations52afrom the set of target locations52(compareFIGS. 5 and 6). A redundant target location52ais a target location52that defines a data collection area64athat is completely overlapped by data collection areas64defined by other target locations52. Redundant target locations52amay occur from combining the target locations52of each of the sub-areas56, e.g., when the sub-areas56overlap. The computer22may eliminate redundant target locations52aby identifying a circle from the results of the leaky ball algorithm that encloses an area that is completely covered by areas enclosed by other circles from the results of the leaky ball algorithm. In other words, the server computer22may identify a first data collection area64aof one of the target locations52that is overlapped by second data collection areas64of other target locations52. The server computer22may remove the target location52defining the first data collection area64that was identified as being overlapped from the set of target locations52stored in the memory of the server.

The server computer22may determine the set of target locations52based on input received from a user. For example, a user may provide input to the server computer22specifying one or more target locations52. The server computer22may determine the set of target locations52based on the map54and/or the digital model. For example, the map54and/or digital model may include data specifying one or more target locations52, e.g., target locations52previous determined with the leaky ball algorithm, provided via input from a user, etc. The server computer22may use other techniques for determining the set of target locations52.

The server computer22may be programmed to determine a pose for the robot30. A pose is a specified orientation (typically, pitch, roll, and yaw) of the robot30and components of the robot30to orient the sensor32to face a certain direction. For example, a pose may specify an orientation of the base34of the robot30, e.g., relative to the Cartesian coordinate system62of the map54, and may specify an azimuth angle A1and/or altitude angle A2for the gimbal46. The pose enables the robot30to orient the sensor32to face a certain object. The pose specifies an orientation of the sensor32with respect to base34of the robot30, the coordinates of map54, and/or the coordinates of the digital model. The pose may include data specifying an azimuth angle A1and an altitude angle A2. The azimuth angle A1and the altitude angle A2may be associated with one of the target locations52, e.g., so that the sensor32may face the specified azimuth angle A1and altitude angle A2while the robot30is at the associated target location52. The server computer22may determine the pose by comparing the coordinates of the target location52with the coordinates of the object, e.g., to determine the azimuth angle A1of a vector extending from the X-Y coordinates of the target location52to the X-Y coordinates of the object. The server computer22may determine the altitude angle A2based on a height of the object specified by the digital model and a height of the sensor32, e.g., specified by data stored in memory of the server computer22, and based on a distance between the target location52and the object according to the X-Y coordinates. The server computer22may determine the pose based on input of a user, e.g. specifying an azimuth angle A1, an altitude angle A2, and an associated target location52. The server computer22may use other techniques to determine the pose, such as fusing inertial measurement unit (IMU) data with LIDAR data matching using Kalman Filters (e.g., Particle, Unscented, and/or Extended Kalman Filters).

The server computer22is programmed to identify a set of navigable paths60based on the stored map54(shown inFIGS. 8 and 9). Navigable paths60are portions of the defined area50navigable by the robot30. The computer may identify the set of navigable paths60based on the barriers58included in the map54. For example, the computer may identify distances between barriers58specified in the data of the map54. The distances may be compared to physical attributes of the robot30, e.g., a width of the robot30and/or a turning radius of the robot30. The server computer22may identify portions of the defined area50as navigable paths60when the distance between the barriers58is sufficient for the robot30to navigate therebetween. For example, when the distance between the barriers58is greater than the width of the robot30. As another example, the stored map54and/or digital model may include data specifying portions of the defined area50as navigable paths60. The server computer22may use other techniques to identify the set of navigable paths60.

The navigable paths60may define data collection areas, i.e., an area from which information may be received by the sensor32of the data collector assembly36when the robot30is navigating along the navigable path60. The data collection areas64may be based on a facing direction D of the sensor32, capabilities of the sensors32, e.g., detection ranges, fields of view, etc., of the sensors32, such as described above for the data collection areas64of the target locations52.

The server computer22may be programmed to select a subset66of navigable paths60from the set of navigable paths60. For example, compare the navigable paths60shown inFIG. 8with subset66of the navigable paths60shown inFIG. 9. The subset66of paths60may connect the target locations52, e.g., such that the robot30may navigate along the subset66of paths60to navigate to each target location52. The computer may select the subset66of navigable paths60to minimize a distance along the navigable paths60connecting the target locations52. For example, the server computer22may use an algorithm designed to solve a traveling salesman problem, e.g., as used in known route planning software applications.

The server computer22may select a subset66of navigable paths60from the set the navigable paths60based on the data collection areas64. The server computer22may select the subset66of the navigable paths60such that the data collection areas overlap the area50of the stored map54and a distance traveled by the robot30is minimized. For example, the server computer22may identify data collection areas defined by one or more navigable paths60that are overlapped by data collection areas of one or more other navigable paths60. In other words, the server computer22may identify redundant data collection areas64. The server computer22may select one of the navigable paths60defining the overlapping data collections areas, and refrain from selecting the other, for the subset66of the navigable paths60. Additionally or alternatively, the server computer22may consolidate the navigable paths60defining the overlapping data collection areas into a single navigable path, e.g., along a median path between the navigable paths60defining the overlapping data collection areas64. The server computer22may connect the subset66of navigable paths60, e.g., with an algorithm designed to solve a traveling salesman problem, e.g., as used in known route planning software applications.

The server computer22may define the navigable paths60and/or subset66of navigable paths60with data specifying a plurality of way points, vectors, and/or curves, e.g., relative to X-Y coordinates of the map54. For example, the navigable paths60and/or subset66of navigable paths60may be represented by a polynomial of third degree (sometimes referred to as a “path polynomial”) such as Y=aX+bX2+cX3. Y and X represent X-Y coordinates, e.g., relative to the map54. Parameters a, b, and c of such a polynomial may determine a path curvature.

The server computer22may be programed to actuate the robot30to move to one or more of the target locations52. For example, the server computer22may transmit a command to the robot computer40specifying the set of target locations52. The server computer22may actuate the robot30to move to the target locations52along one or more of the navigable paths60. For example, the server computer22may transmit a command to the robot computer40specifying a plurality of way points, vectors, and/or curves, e.g., relative to X-Y coordinates of the map54and/or digital model.

The server computer22may be programed to actuate the robot30to a pose specified to orient the sensor32with respect to the object. For example, the server computer22may transmit a command to the robot computer40specifying an azimuth angle A1and an altitude angle A2. The command may specify an association between a certain one of the target locations52, and the azimuth angle A1and the altitude angle A2, e.g., so that the sensor32is actuated to face the specified azimuth angle A1and altitude angle A2once the robot30is actuated to move to the associated target location52.

The server computer22may be programmed to actuate the sensor32on the robot30to collect data at the target locations52. For example, the server computer22may transmit a command to the robot computer40specifying the actuation of the sensor32and specifying one or more of the target locations52for such actuation.

The server computer22may be programmed to actuate the sensor32to collect data while actuating the robot30to move along one or more of the navigable paths60. For example, the server computer22may transmit a command to the robot computer40specifying actuation of the sensor32and specifying one or more of the navigable paths60for such actuation.

The server computer22may be programmed to identify an object specified in the digital to be at the coordinates for the target location52. The server computer22may identify an object in data generated from information collected by the sensor32from the data collection area64while the robot30is at the target location52.

The server computer22may identify the object specified in the digital model by comparing the data collected at one of the target locations52to the data of the digital model specifying the three-dimensional shape of the object. For example, the server computer22may compare one or more parameters, e.g., length, width, curvature, etc., specified by the data generated with the LIDAR sensor32awhile the robot30is at one of the target locations52with one or more parameters specified by the data of the object at the target location52in the digital model. The server computer22may identify the object in the digital model as the object in the data from the LIDAR sensor32awhen the parameters specified in such data match, or are within a threshold amount of matching, e.g., 95%.

The server computer22may identify the object specified in the digital model based on image recognition analysis of data specifying one or more images captured by the camera32bat one of the target locations52. The images may be captured while the robot30is in a specified pose. For example, the objects may be recognized in the image data using known techniques and methods, and parameters of such objects may be compared to the parameters specified by the data of the object in the digital model.

The server computer22may be programmed to identify an object specified in the digital model of the area50to be along one of the navigable paths60. The server computer22may identify the object based on compared parameters, image recognition, etc., as described for the object at the target location52. The server computer22may use other techniques to identify the object at the target location52and/or along the navigable path60.

The data specifying the identified objects in the sensor32data may not exactly match the data specifying such objects in the digital model. For example, one or more objects may have changed locations and/or orientations since generation of the digital model. In other words, the digital model may not be up-to-date. Identification of the objects in the data from the sensor32and in the digital model enable differences, e.g., in location, orientation, etc., between such data to be rectified, e.g., so that the digital data matches the data from the sensor32.

The server computer22is programmed to update the object in the digital model based on the collected data. For example, the server computer22may amend the data of the digital model that specifies the object to replicate the data that specifies such object in the data generated by the sensor32.

The server computer22may be programmed to identify one or more additional target locations52based on the data collected with the sensor32, e.g., at one of the target locations52and/or along one of the navigable paths60. The additional location52may be outside the defined area50, i.e., an area not specified in the digital model. For example, the data collected by the sensor32may specify a corridor or other area50not included in the map54and/or digital model and navigable by the robot30. The server computer22may identify a target location52at such area.

Processes

FIG. 10is a process flow diagram illustrating an exemplary process1000for operating the system20. The process1000begins in a block1005where the server computer22determines target locations52for collecting data and/or navigable paths60, e.g., as described herein. The server computer22may determine the target locations52and/or navigable paths60according to a process1100(further described below).

At a block1010, the server computer22actuates the robot30to navigate to one of the target locations52and/or along the navigable paths60determined in the block1005. For example, the server computer22may actuate the robot30by transmitting a command to the robot30specifying target locations52and/or navigable paths60, e.g., as described herein.

At a block1015, the server computer22actuates the robot30to a specified pose, e.g., to orient the sensor32with respect to an object at the target location52. The server computer22may determine the specified pose as described herein. The server computer22may actuate the robot30to the pose by transmitting a command to the robot30, e.g., specifying an azimuth angle A1, an altitude angle A2, and an associated target location52(relative to the Cartesian coordinate system62of the map54).

At a block1020the server computer22actuates one or more of the sensors32of the robot30to collect data. The server computer22may actuate the sensors32of the robot30by transmitting a command to the robot30. The server computer22actuates one or more of the sensors32to collect data when the robot30is at the target location52. The server computer22may actuate one or more of the sensors32to collect data when the robot30is navigating along the navigable path60. The server computer22may actuate one or more of the sensors32to collect data when the robot30is in the specified pose.

At a block1025the server computer22identifies an object specified in the digital model, and identifies such object specified in data collected at the block1020. The server computer22may identify such object as described herein.

At a block1030the server computer22updates the data specifying the object in the digital model to match the data specifying the object collected by the sensors32, e.g., as described herein.

At a block1035the server computer22identifies a next target location52. The server computer22may determine the next target location52as being outside the defined area50and based on the data collected at the block1020, e.g., as described herein. Alternatively, the server computer22may identify the next target location52based on the target locations52previously determined at the block1005. After the block1035the process1000returns to the block1010and reiterates the process1000, e.g., navigating and posing the robot30, and then collecting data and updating the digital model. The server computer22may continue to iterate the process1000until data has been collected at all identifiable target locations52.

FIG. 11is a process flow diagram illustrating an exemplary process1100for determining target locations52and navigable paths60. The process1100begins in a block1105where the server computer22decomposes a stored map54of an area50into a plurality of polygonal sub-areas56, e.g., based on data specifying barriers58and as described herein.

Next at a block1110the server computer22generates target locations52in each of the sub-areas56. The server computer22generates the target locations52in the sub-areas56according to a leaky ball algorithm. The server computer22consolidates the generated target locations52into a set of target locations52.

Next at a block1115the server computer22identifies any target locations52agenerated at the block1105having a data collection area64athat is overlapped by data collection areas64defined by other target locations52. In other words, the server computer22identifies redundant target locations52a.

Next at a block1120the server computer22removes the target locations52identified at the block1115from the set of target locations52generated at the block1110.

At a block1125the server computer22identifies a set of navigable paths60, e.g., based on barriers58and other physical objects specified in the map54and as described herein.

Next, at a block1130the server computer22identifies data collection areas of the set of navigable paths60identified at the block1125. The data collection areas are defined by capabilities of the sensors32and as described herein.

Finally, at a block1135the server computer22selects a subset66of navigable paths60from the navigable paths60identified at the block1125. The server computer22may select the subset66to minimize a distance along the navigable paths60connecting the target locations52, such that the data collection areas overlap the area50of the stored map54and a distance traveled by the robot30is minimized, etc., as described herein.

CONCLUSION

With regard to the processes1000,1100described herein, it should be understood that, although the steps of such processes1000,1100have been described as occurring according to a certain ordered sequence, such processes1000,1100could be practiced with the described steps performed in an order other than the order described herein. It further should be understood that certain steps could be performed simultaneously, that other steps could be added, or that certain steps described herein could be omitted. In other words, the description of the process300herein is provided for the purpose of illustrating certain embodiments and should in no way be construed so as to limit the disclosed subject matter.