Patent Description:
With the development of electronic technology, various robots have been developed to replace human jobs. For example, a serving robot performs a role of a human server in a restaurant. Serving robots drive autonomously in restaurants, serve food or carry dishes.

<CIT> discloses a method for operating a robot.

According to an existing motion planning algorithm, since a serving robot plans a driving route only considering its size and whether it will or will likely collide with an obstacle, the serving robot may select a route that traverses a space under a table or a space between chairs in some cases. The robot's driving route planning may not be reasonable for most humans, and may significantly reduce service efficiency especially when the robot moves to a space where the robot will likely to be stuck. In addition, as the serving robot drives between tables, safety problems such as collisions between serving robots and restaurant customers may occur.

Accordingly, there is a need for a technology that enables the robot to plan a reasonable driving route by itself and to increase work efficiency of the robot.

One technical problem to be solved by the disclosure is to provide a technology for generating a driving route of a robot based on the number of times an obstacle is detected (e.g., the number of times occupancy has occurred) for each area of a space (e.g., each of a plurality of cells in a map covering a target space such as a restaurant) in which the robot is located.

The technical problems of the disclosure are not limited to the technical problems described above, and the other technical problems not described will be clearly understood by those skilled in the art from the following description.

According to an aspect of the disclosure, a robot may include: a light detection and ranging (LiDAR) sensor; a memory configured to store at least one instruction; and at least one processor configured to execute the at least one instructions to: acquire, based on a sensing value of the LiDAR sensor, a first map that covers a space where the robot is located, detect one or more obstacles existing in the space based on the sensing value of the LiDAR sensor, acquire a number of times that each of a plurality of areas in the first map is occupied by the one or more obstacles, based on location information of the one or more obstacles, determine an obstacle area based on the number of times that each of the plurality of areas is occupied by the one or more obstacles, and acquire a second map indicating the obstacle area on the first map to determine a driving route of the robot based on the second map.

The at least one processor may be further configured to execute the at least one instructions to: obtain an occupancy frequency of each of the plurality of areas, based on the number of times that each of the plurality of areas is occupied by the one or more obstacles, acquire a weight value corresponding to each of the plurality of areas based on the occupancy frequency and a predefined function, identify at least one area corresponding to the weight value greater than a predetermined value among the plurality of areas, and determine the obstacle area based on information of the at least one area.

The at least one processor may be further configured to execute the at least one instructions to: cluster the at least one area to determine the obstacle area including the at least one area.

The at least one processor may be further configured to execute the at least one instructions to: obtain an occupancy frequency of each of the plurality of areas, based on the number of times that each of the plurality of areas is occupied by the one or more obstacles, identify at least one area having the occupancy frequency that is greater than a threshold value among the plurality of areas, and determine the obstacle area based on the information of the at least one area.

The at least one processor may be further configured to execute the at least one instructions to: identify a plurality of coordinates corresponding to a plurality of locations at which the one or more obstacles are detected, based on a density of the plurality of coordinates in the plurality of areas, perform clustering on the plurality of coordinates to define a cluster composed of at least one of the plurality of coordinates, and determine an area corresponding to the plurality of coordinates included in the cluster as the obstacle area.

The robot may further include: a driver, wherein the processor may be further configured to execute the at least one instructions to generate the driving route that bypasses the obstacle area based on the second map, and control the driver such that the robot moves along the driving route.

The at least one processor may be further configured to execute the at least one instructions to: acquire an occupancy frequency of each of the plurality of areas based on the sensing value of the LiDAR sensor acquired while the robot moves to a predetermined destination, and update the second map based on the occupancy frequency.

The at least one processor may be further configured to execute the at least one instructions to: apply the sensing value of the LiDAR sensor to simultaneous localization and mapping (SLAM) algorithm to acquire location information of the robot, and acquire coordinates of the one or more obstacles on the first map based on the location information of the robot and the location information of the one or more obstacles.

According to another aspect of the disclosure, a method for controlling a robot including a light detection and ranging (LiDAR) sensor, may include: acquiring, based on a sensing value of the LiDAR sensor, a first map that covers a space where the robot is located; detecting one or more obstacles existing in the space based on the sensing value of the LiDAR sensor; acquiring a number of times that each of a plurality of areas in the first map is occupied by the one or more obstacles, based on location information of the one or more obstacles; determining an obstacle area based on the number of times that each of the plurality of areas is occupied by the one or more obstacles; and acquiring a second map indicating the obstacle area on the first map to determine a driving route of the robot based on the second map.

The determining the obstacle area comprises: obtaining an occupancy frequency of each of the plurality of areas, based on the number of times that each of the plurality of areas is occupied by the one or more obstacles; acquiring a weight value corresponding to each of the plurality of areas based on the occupancy frequency and a predefined function; identifying at least one area corresponding to the weight value greater than a predetermined value among the plurality of areas; and determining the obstacle area based on information of the at least one area.

The determining the obstacle area may further include clustering the at least one area to determine the obstacle area including the at least one area.

The determining the obstacle area may include: obtaining the an occupancy frequency of each of the plurality of areas, based on the number of times that each of the plurality of areas is occupied by the one or more obstacles; identifying at least one area having the occupancy frequency that is greater than a threshold value among the plurality of areas, and determining the obstacle area based on the information of the at least one area.

The determining the obstacle area may include: identifying a plurality of coordinates corresponding to a plurality of locations at which the one or more obstacles are detected; based on a density of the plurality of coordinates in the plurality of areas, performing clustering on the plurality of coordinates to define a cluster composed of at least one of the plurality of coordinates, and determining an area corresponding to the plurality of coordinates included in the cluster as the obstacle area.

The method may further include: generating the driving route that bypasses the obstacle area based on the second map; and controlling a driver of the robot such that the robot moves along the driving route.

The method may further include: acquiring an occupancy frequency of each of the plurality of areas based on the sensing value of the LiDAR sensor acquired while the robot moves to a predetermined destination; and updating the second map based on the occupancy frequency.

According to another aspect of the disclosure a non-transitory computer-readable storage medium may store a program that is executable by at least one processor to perform a method of processing data for motion planning. The method may include: acquiring a space map of a target space; dividing an area of the space map into a plurality of cells; identifying an occupancy frequency of each of the plurality of cells by counting a number of times that occupancy has occurred in each of the plurality of cells; identifying two or more cells, each of which has the occupancy frequency higher than or equal to a threshold value, among the plurality of cells; clustering the two or more cells and at least one neighbor cell of the two or more cells into an integrated obstacle area; and acquiring a driving map based on the space map and the integrated obstacle area.

The acquiring the space map of the target space may include: acquiring the space map using a light detection and ranging (LiDAR) sensor located in the target space.

The dividing the area of the space map into the plurality of cells may include: dividing the area of the space map into the plurality of cells in a two-dimensional (2D) grid form.

The occupancy frequency of the at least one neighbor cell may be lower than the threshold value. The clustering the two or more cells and the at least one neighbor cell of the two or more cells into the integrated obstacle area may include: selecting the at least one neighbor cell, from the plurality of cells to be clustered with the two or more cells, based on distance between the at least one neighbor cell and the two or more cells being less than a predetermined distance.

The method further may include: based on the driving map, controlling a robot, to move around the integrated obstacle area to reach a destination.

According to various embodiments of the disclosure as described above, the robot may generate an efficient driving route and the robot's work efficiency may be improved, thereby increasing convenience and satisfaction of users.

In addition, effects acquirable or predicted by the embodiments of the disclosure are to be disclosed directly or implicitly in the detailed description of the embodiments of the disclosure. For example, various effects predicted according to embodiments of the disclosure will be disclosed in the detailed description to be described below.

Other aspects, advantages and prominent features of the disclosure will become apparent to those skilled in the art from the following detailed description, which discloses various embodiments of the disclosure taken in conjunction with the accompanying drawings.

The terms used in example embodiments will be briefly explained, and example embodiments will be described in greater detail with reference to the accompanying drawings.

Terms used in the disclosure are selected as general terminologies currently widely used in consideration of the configuration and functions of the disclosure, but can be different depending on intention of those skilled in the art, a precedent, appearance of new technologies, and the like. Further, in specific cases, terms may be arbitrarily selected. In this case, the meaning of the terms will be described in the description of the corresponding embodiments. Accordingly, the terms used in the description should not necessarily be construed as simple names of the terms, but be defined based on meanings of the terms and overall contents of the disclosure.

The example embodiments may vary, and may be provided in different example embodiments. Various example embodiments will be described with reference to accompanying drawings. However, this does not necessarily limit the scope of the exemplary embodiments to a specific embodiment form. Instead, modifications, equivalents and replacements included in the disclosed concept and technical scope of this specification may be employed. While describing exemplary embodiments, if it is determined that the specific description regarding a known technology obscures the gist of the disclosure, the specific description is omitted.

The terms such as "first," "second," and so on may be used to describe a variety of elements, but the elements should not be limited by these terms. The terms used herein are solely intended to explain specific example embodiments, and not to limit the scope of the disclosure.

In the present application, the terms "include" and "comprise" designate the presence of features, numbers, steps, operations, components, elements, or a combination thereof that are written in the specification, but do not exclude the presence or possibility of addition of one or more other features, numbers, steps, operations, components, elements, or a combination thereof.

The example embodiments of the disclosure will be described in greater detail below in a manner that will be understood by one of ordinary skill in the art. However, exemplary embodiments may be realized in a variety of different configurations, and not limited to descriptions provided herein. Also, well-known functions or constructions are not described in detail since they would obscure the embodiments with unnecessary detail.

<FIG> is a view illustrating an operation of a robot according to an embodiment of the disclosure.

Referring to <FIG>, a robot <NUM> may detect obstacles <NUM>, <NUM>, <NUM>, and <NUM> using a light detection and ranging (LiDAR) sensor, and acquire location information on the obstacles <NUM>, <NUM>, <NUM> and <NUM>. The obstacles <NUM>, <NUM>, <NUM>, <NUM> may be legs of a table.

The robot <NUM> may acquire a first map (e.g., a space map) M1 corresponding to a space located in the robot <NUM> by using the LiDAR sensor. The first map M1 may include a plurality of areas including areas R1, R2, R3, and R4, respectively, corresponding to locations where the obstacles <NUM>, <NUM>, <NUM>, and <NUM> are detected. Also, the first map M1 may include location information on a destination. For example, the robot <NUM> may define a two-dimensional (2D) matrix of cells, each of which represents a certain (square) area of the space and stores a probability of being occupied (e.g., a probability that an obstacle occupies that cell. Areas R1, R2, R3, and R4 may be also referred to as cells R1, R2, R3, and R4.

When an existing robot generates a driving route based on the first map M1, the existing robot may generate a first route P1 passing between the areas R1, R2, R3, and R4 to move to a destination by a shortest route. However, if the obstacles <NUM>, <NUM>, <NUM>, and <NUM> are moving objects such as humans, the existing robot may collide with the obstacles or causes inconvenience to the humans. Also, if a table is located in the areas R1, R2, R3, and R4, a collision may occur because a height of the existing robot is higher than a height of the table.

To solve this problem, the robot <NUM> according to embodiments may define an obstacle area OR based on the areas R1, R2, R3, and R4. For example, the robot <NUM> may acquire the obstacle area OR by clustering the areas R1, R2, R3, and R4. In addition, the robot <NUM> may generate a second map (e.g., a driving map) M2 based on the first map M1 and the obstacle area OR. The robot <NUM> may generate a driving route based on a second map M2. For example, the robot <NUM> may generate a second route P2 bypassing the obstacle area OR. The robot <NUM> may drive along the second route P2. Accordingly, the robot <NUM> may not cause inconvenience to the user and move to a destination without colliding with the obstacles <NUM>, <NUM>, <NUM>, and <NUM>.

<FIG> is a block diagram illustrating a configuration of a robot according to an embodiment of the disclosure.

Referring to <FIG>, the robot <NUM> may include a LiDAR sensor <NUM>, a memory <NUM>, and a processor <NUM>. The robot <NUM> may be a service robot. For example, the robot <NUM> may be a serving robot. However, this is only an embodiment, and the type of the robot <NUM> may be various. The configuration of the robot <NUM> is not limited to the configuration shown in <FIG>, and a configuration obvious to those skilled in the art may be added.

The LiDAR sensor <NUM> is configured to acquire depth information on a circumstance around the robot <NUM>. For example, the LiDAR sensor <NUM> may acquire a point cloud for the surrounding circumstance while the robot <NUM> is driving. The processor <NUM> may detect an obstacle based on the point cloud acquired through the LiDAR sensor <NUM> and acquire location information on the obstacle. The location information on the obstacle may include a relative location of the obstacle with respect to the robot <NUM> (e.g., a distance between the robot <NUM> and the obstacle).

The memory <NUM> may store an operating system (OS) for controlling overall operations of components of the robot <NUM> and commands or data related to the components of the robot <NUM>. For example, the memory <NUM> may store a map corresponding to a space in which the robot <NUM> is located.

The memory <NUM> may store data necessary for the module for controlling the operation of the robot <NUM> to perform various operations. A module for controlling the operation of the robot <NUM> may include a map generation module <NUM>, an obstacle detection module <NUM>, a robot location acquisition module <NUM>, an obstacle detection frequency calculation module <NUM>, and an obstacle area acquisition module <NUM>, a driving map generation module <NUM> and a driving route generation module <NUM>. The memory <NUM> may be implemented as a non-volatile memory (e.g., a hard disk, a solid state drive (SSD), a flash memory), a volatile memory, or the like.

The processor <NUM> may be electrically connected to the memory <NUM> to control overall functions and operations of the robot <NUM>. The processor <NUM> may load data for performing various operations of modules <NUM> to <NUM> stored in the non-volatile memory into the volatile memory. Here, the loading refers to an operation of loading and storing data stored in the non-volatile memory into the volatile memory such that it can be accessed by the processor <NUM>.

The map generation module <NUM> may acquire a first map covering the space in which the robot <NUM> is located based on a sensing value of the LiDAR sensor <NUM>. The map generation module <NUM> may generate a first map by applying simultaneous localization and mapping (SLAM) algorithm to point cloud information acquired through the LiDAR sensor <NUM>. The first map may include location information on the robot <NUM> and location information on the obstacle detected by the obstacle detection module <NUM>. The SLAM algorithm may be stored in the memory <NUM>.

The obstacle detection module <NUM> may detect an obstacle around the robot <NUM> based on the sensing value of the LiDAR sensor <NUM>. The obstacle detection module <NUM> may acquire location information on the obstacle based on the sensing value of the LiDAR sensor <NUM>. The location information on the obstacle may include information on a relative location of the obstacle with respect to the robot <NUM>. For example, the information on the relative location of the obstacle may include a distance relative angle between the robot <NUM> and the obstacle.

The location information on the obstacle may include information on an absolute location of the obstacle. The information on the absolute location of the obstacle may include coordinates (e.g., x and y coordinates) of a position of an obstacle on the first map generated through the map generation module <NUM>. The robot <NUM> may acquire information on the absolute location of the obstacle based on the information on the relative location of the obstacle and the location information on the robot <NUM> acquired by the robot location acquisition module <NUM>.

The robot location acquisition module <NUM> may acquire current location information and posture information on the robot <NUM>. The robot location acquisition module <NUM> may acquire (x, y) coordinates corresponding to a location of the robot <NUM> on the first map and a direction that the robot <NUM> is looking. For example, the robot location acquisition module <NUM> may apply the simultaneous localization and mapping (SLAM) algorithm to the point cloud information acquired through the LiDAR sensor <NUM> to acquire the location information and posture information on the robot <NUM>.

The obstacle detection frequency calculation module <NUM> may acquire the number of times that obstacles for each area included in the first map are detected. The obstacle detection frequency calculation module <NUM> may calculate a frequency at which obstacles for each of a plurality of areas are detected (e.g., a frequency at which each of the plurality of areas is occupied by one or more obstacles) based on the number of times the obstacle (or any other obstacles) is detected in each of the plurality of areas. The frequency at which the obstacle is detected may mean how often the obstacle is located in a specific area. The obstacle detection frequency calculation module <NUM> may calculate the frequency at which the obstacles are detected based on the number of times the obstacles for each of the plurality of areas are detected for a predetermined time. As the number of times the obstacle is detected increases, the frequency at which the obstacle is detected may increase. In other words, as the number of times occupancy is detected in an area increases, the probability that the area is occupied (i.e., the probability that an obstacle occupies the area) increases. When the first map is divided into a plurality of cells in a grid form, the obstacle detection frequency calculation module <NUM> may detect whether occupancy occurs in each of the plurality of cells to determine an occupancy probability for each of the plurality of cells.

The obstacle area acquisition module <NUM> may define an obstacle area based on the frequency at which obstacles are detected in a plurality of areas included in the first map. The obstacle area acquisition module <NUM> may acquire a plurality of weight values corresponding to each of the plurality of areas based on a frequency at which an obstacle is detected and a predefined function. For example, the predefined function may be an exponential linear unit (ELU) function in which an x-axis represents a frequency and a y-axis represents a weight value. Thus, if the frequency is less than a threshold value, the weight value may be zero, and if the frequency exceeds the threshold value, the weight value may have a value greater than zero. And, when the frequency is greater than the threshold value, the weight value may increase as the frequency increases. The obstacle area acquisition module <NUM> may identify a frequency corresponding to each of the plurality of areas, and acquire a weight value corresponding to the identified frequency.

The obstacle area acquisition module <NUM> may identify at least one area based on a weight value corresponding to each of the plurality of areas. The obstacle area acquisition module <NUM> may identify at least one area corresponding to a weight value greater than the predetermined value among the plurality of areas.

The obstacle area acquisition module <NUM> may acquire an obstacle area based on at least one area. For example, the obstacle area acquisition module <NUM> may determine an obstacle area including at least one area by clustering at least one area. In particular, the obstacle area acquisition module <NUM> may perform clustering based on a density of at least one area. A density of the at least one area may refer to a degree to which the at least one area is dense with each other. Accordingly, the closer the distance between the at least one area is, the higher the density may be. For example, referring to <FIG>, when the first map is divided into <NUM> by <NUM> cells, composed of cell <NUM> to cell <NUM>, and when a weight assigned to each of cells R1, R2, R3, and R4 according to an occupancy frequency of cells R1, R2, R3, and R4 is greater than the predetermined value, the obstacle area acquisition module <NUM> may compute distances between neighbor cells and each of cells R1, R2, R3, and R4 to determine whether to combine the neighbor cells and cells R1, R2, R3, and R4 as a single integrated obstacle area, based on the computed distances being less that a predetermined distance.

The obstacle area acquisition module <NUM> may acquire information on the obstacle area. The information on the obstacle area may include location information on the obstacle area. The location information on the obstacle area may include coordinates corresponding to a boundary of the obstacle area.

The driving map generation module <NUM> may generate a second map based on the first map and information on the obstacle area. The second map may refer to a driving map used when generating a driving route of the robot <NUM>. The second map may include information on the obstacle area, location information on the robot <NUM>, and location information on the detected obstacle. The driving map generation module <NUM> may store the second map in the memory <NUM>.

The driving map generation module <NUM> may update the second map. The driving map generation module <NUM> may update the second map at a predetermined time interval. Alternatively, the driving map generation module <NUM> may update the second map when a predetermined event occurs. For example, the predetermined event may include an event in which a frequency of an obstacle area acquired after the second map is generated becomes smaller than a predetermined value. Also, the predetermined event may include an event in which a user command for updating the second map is acquired.

The driving route generation module <NUM> may generate a driving route of the robot <NUM> based on the second map. For example, the driving route generation module <NUM> may generate a driving route that bypasses an obstacle area and moves to a destination based on current location information on the robot <NUM>, location information on the destination, and location information on the obstacle area. The generated driving route may be stored in the memory <NUM>.

Although <FIG> illustrates that the map generation module <NUM>, the obstacle detection module <NUM>, the robot location acquisition module <NUM>, the obstacle detection frequency calculation module <NUM>, the obstacle area acquisition module <NUM>, the driving map generation module <NUM>, and the driving route generation module <NUM> are included in the robot <NUM>, but the embodiment is not limited thereto. In an embodiment, one or more modules in the robot <NUM> may be included in an external server, and the robot <NUM> may transmit sensing data of the LiDAR sensor <NUM> to the external server via a communication interface, and may receive the second map from the external server via the communication interface.

In the disclosure, a map may be divided into a plurality of grid cells having a constant size, and a plurality of areas included in the map may be referred to as a plurality of cells. For example, in <FIG>, a first area R31 may be referred to as a first cell.

<FIG> is a view illustrating a method of calculating an obstacle detection frequency according to an embodiment of the disclosure. <FIG> illustrates a state in which a point cloud corresponding to an obstacle detected for each frame is mapped to a first map.

Referring to <FIG>, the robot <NUM> may map point clouds corresponding to a plurality of frames acquired through the LiDAR sensor <NUM> to the first map <NUM>. For example, the robot <NUM> may map a first point cloud corresponding to a first frame to the first map <NUM>. Also, the robot <NUM> may map a second point cloud acquired in a second frame after the first frame acquired while the robot <NUM> is driving to the first map <NUM>.

The robot <NUM> may identify an area in which an obstacle is detected among a plurality of areas included in the first map <NUM>. For example, the robot <NUM> may identify the first area R31 and the second area R32. The robot <NUM> may acquire information on the identified area, match the information with the identified area, and store it. The information on the identified area may include location information (e.g., coordinates) of the identified area and the number and frequency of detecting obstacles in the identified area.

The robot <NUM> may calculate the number of times an obstacle is detected based on the number of points corresponding to the identified area. For example, since the number of points corresponding to the first area R31 in the first frame is three, the number of times an obstacle is detected in the first area R31 may be three. Since the number of points corresponding to the second area R32 in the first frame is two, the number of times that an obstacle is detected in the second area R32 may be two.

The robot <NUM> may calculate a frequency at which an obstacle is detected for each area based on the number of points for each area acquired over a plurality of frames. The robot <NUM> may calculate a frequency at which an obstacle is detected in each area by summing the number of points corresponding to each area for a predetermined time. For example, the robot <NUM> may calculate a frequency at which an obstacle is detected in the first area R31 by summing the number of points corresponding to the first area R31 for <NUM> frames.

<FIG> is a view illustrating a method for acquiring an obstacle area according to an embodiment of the disclosure.

Referring to <FIG>, the robot <NUM> may acquire a weight value corresponding to each of a plurality of areas included in the first map. The robot <NUM> may acquire weight values based on a frequency at which obstacles are detected in each area. The robot <NUM> may acquire a weight value by inputting the frequency at which an obstacle is detected into a predefined function. For example, the predefined function may be an exponential linear unit (ELU) function.

The robot <NUM> may filter a partial area based on the weight value. The robot <NUM> may identify a weight value greater than a predetermined value (e.g., <NUM>) and identify areas R41, R42, R43, R44, R45, R46, and R47 corresponding to the identified weight value. For example, an area corresponding to a weight value greater than a predetermined value may be an area in which a permanent occupancy is detected, and an area corresponding to a weight value less than or equal to a predetermined value may be an area in which a temporary occupancy is detected.

The robot <NUM> may acquire an obstacle area OR by clustering based on the identified areas R41, R42, R43, R44, R45, R46, and R47. The robot <NUM> may acquire information (e.g., coordinates) on the obstacle area OR and store it in the memory <NUM>. For example, the robot <NUM> may perform clustering based on a density of the identified areas. Also, the robot <NUM> may perform clustering using a clustering algorithm.

<FIG> is a view illustrating a method of updating a driving map according to an embodiment.

Referring to <FIG>, the driving environment may change while the robot <NUM> is driving. For example, an obstacle <NUM> may disappear or its location may be changed. The robot <NUM> may update a driving map by acquiring a new obstacle area. For example, the robot <NUM> may acquire a second obstacle area OR2 different from a first obstacle area OR1 included in a first driving map <NUM> before the driving environment is changed. In addition, the robot <NUM> may generate a second map <NUM> including the second obstacle area OR2.

The robot <NUM> may update the number of times that an obstacle in the first obstacle area OR1 is detected based on current posture information on the robot <NUM>, a field of view (FOV) of the LiDAR sensor <NUM>, and information on the first obstacle area OR1. The robot <NUM> may identify an area included in the first obstacle area OR1 among a plurality of areas corresponding to a direction and a field of view (FOV) in which the robot <NUM> is currently looking. The robot <NUM> may identify whether a point corresponding to the identified area exists among point clouds acquired at the current time point. A point could is a set of data points in space, which may represent a three-dimensional (3D) or two-dimensional (2D) shape of an object. For example, when a point corresponding to the identified area does not exist, the robot <NUM> may reduce the number of times of detecting an obstacle corresponding to the identified area. Accordingly, an obstacle detection frequency corresponding to the identified area and a weight value corresponding to the obstacle detection frequency may be reduced.

The robot <NUM> may update the number of times of detecting obstacles corresponding to the identified area based on a frequency corresponding to the stored identified area before the driving environment is changed. For example, the identified area may include a first area R51 and a second area R52. A second frequency corresponding to the second area R52 may be greater than a first frequency corresponding to the first area R51. The robot <NUM> may greatly reduce the number of times of detecting obstacles corresponding to an area as the area corresponding to the greater frequency increases. For example, the robot <NUM> may reduce the number of obstacle detections corresponding to the first area R51 by a first value, and reduce the number of obstacle detections corresponding to the second area R52 by a second value greater than the first value.

<FIG> and <FIG> are views illustrating a driving scenario of a robot according to an embodiment of the disclosure.

Referring to <FIG>, a first time interval T1 may be a time interval before the robot <NUM> acquires an obstacle area OR. Accordingly, the robot <NUM> may generate a first route <NUM> passing between a first obstacle O1 and a second obstacle O2 based on a driving map that does not include the obstacle area OR. As described above, the robot <NUM> may acquire the obstacle area OR based on an area having a weight value greater than a predetermined value. The first time interval T1 may be a state that the robot <NUM> has not yet acquired a sufficient point cloud, such that there may be no area having a frequency greater than or equal to a threshold value. In this case, the robot <NUM> may drive without colliding with obstacles O1, O2, and O3 based on a dynamic obstacle avoidance algorithm.

A second time interval T2 is a time interval after the first time interval T1, and may be a time interval after the driving map of the robot <NUM> is updated to include the obstacle area OR. In the second time interval T2, the robot <NUM> may generate a second route <NUM> bypassing the obstacle area OR including the first obstacle O1, the second obstacle O2, and the third obstacle O3.

Referring to <FIG>, in a third time interval T3 and a fourth time interval T4, the second obstacle O2 may not exist in a space where the robot <NUM> is located. For example, the user may remove the second obstacle O2 from the space where the robot <NUM> is located. In the third time interval T3, a driving map is not yet updated and thus the obstacle area OR may be included. For example, in the third time interval T3, the number of times of detecting an obstacle corresponding to an area in which the second obstacle O2 is detected does not sufficiently decrease, and thus a frequency corresponding to the area in which the second obstacle O2 is detected may be greater than a threshold value, and a weight value corresponding the area in which the second obstacle O2 is detected may be greater than a predetermined value. Accordingly, the robot <NUM> may generate a third route <NUM> that bypasses the obstacle area OR despite the second obstacle O2 has disappeared.

In the fourth time interval T4, in which a predetermined time has elapsed after the third time interval T3, the number of obstacle detections corresponding to the area in which the second obstacle O2 is detected decreases, and thus a frequency corresponding to the area in which the second obstacle O2 is detected may be smaller than the threshold value, and a weight value corresponding to the area in which the second obstacle O2 is detected may be smaller than the predetermined value. Accordingly, the driving map of the robot <NUM> may be updated so as not to include the obstacle area OR. Accordingly, the robot <NUM> may generate a fourth route <NUM> passing between the first obstacle O1 and the third obstacle O3.

<FIG> is a flowchart illustrating a method for controlling a robot according to an embodiment of the disclosure.

Referring to <FIG>, the robot <NUM> may acquire a first map corresponding to a space in which the robot is located based on a sensing value of the LiDAR sensor acquired while the robot <NUM> is driving (operation S810). The robot <NUM> may generate a first map by applying the simultaneous localization and mapping (SLAM) algorithm to point cloud information acquired through the LiDAR sensor <NUM>.

The robot <NUM> may detect an obstacle existing in a space in which the robot is located based on the sensing value of the LiDAR sensor <NUM> to acquire location information on the detected obstacle (operation S820). The robot <NUM> may acquire relative location information between the robot <NUM> and the obstacle based on the sensing value acquired through the LiDAR sensor <NUM>. The robot <NUM> may acquire location information on the robot <NUM> by applying the simultaneous localization and mapping (SLAM) algorithm to point cloud information acquired through the LiDAR sensor <NUM>. The robot <NUM> may acquire coordinates of an obstacle on the first map based on relative location information between the robot <NUM> and the obstacle and the location information on the robot <NUM>.

The robot <NUM> may acquire the number of times occupancy has occurred by an obstacle (or any obstacle) in each of a plurality of areas included in the first map, based on the location information on the obstacle (operation S830). The robot <NUM> may map the point cloud corresponding to the obstacle to the first map. The robot <NUM> may acquire the number of obstacles detected based on the number of points, respectively, corresponding to a plurality of areas included in the first map.

The robot <NUM> may acquire information on the obstacle area based on the number of times the obstacle is detected (operation S840). The robot <NUM> may calculate an obstacle detection frequency by summing the number of obstacle detections acquired for a predetermined time. The robot <NUM> may assign a weight value corresponding to the obstacle detection frequency to each of the plurality of areas. The robot <NUM> may identify an area having a weight value greater than a predetermined value and cluster the identified area to define an obstacle area.

The robot <NUM> may calculate the frequency at which the obstacle is detected in the plurality of areas based on the number of times the obstacle is detected. The robot <NUM> may identify at least one area in which the frequency in which the obstacle is detected is greater than a threshold value among the plurality of areas. The robot <NUM> may determine the obstacle area based on information on at least one area.

The robot <NUM> may identify a plurality of coordinates corresponding to a plurality of locations where the obstacle is detected based on the location information on the obstacle. The robot <NUM> may perform clustering on the plurality of identified coordinates based on a density of the plurality of coordinates identified in the plurality of areas to define a cluster composed of at least some of the plurality of identified coordinates. The robot <NUM> may determine an area corresponding to the plurality of coordinates included in the defined group as the obstacle area.

The robot <NUM> may acquire and store a second map including the obstacle area based on the first map and the information on the obstacle area (operation S850). In addition, the robot <NUM> may generate a driving route that bypasses the obstacle area based on the second map.

Referring to <FIG>, the robot <NUM> may include a sensor <NUM>, a memory <NUM>, a processor <NUM>, a microphone <NUM>, a speaker <NUM>, a communication interface <NUM>, and a driver <NUM>. A description overlapping with <FIG> will be omitted.

The sensor <NUM> may include a camera <NUM> and an inertial measurement unit (IMU) sensor <NUM>. The camera <NUM> is configured to acquire an image of the surroundings of the robot <NUM>. The camera <NUM> may include various image sensors. For example, the camera <NUM> may include at least one of a complementary metal oxide semiconductor (CMOS) image sensor and a charge coupled device (CCD) image sensor. The IMU sensor <NUM> may include a gyro sensor and a geomagnetic sensor. The processor <NUM> may acquire posture information on the robot <NUM> based on a sensing value of the IMU sensor <NUM>.

The microphone <NUM> may acquire the user's voice. The processor <NUM> may control an operation of the robot <NUM> based on the user's voice acquired through the microphone <NUM>. For example, when a voice command for updating a driving map (e.g., "update the driving map") is acquired, the processor <NUM> may update the driving map. For this operation, a natural language processing module for providing a voice recognition service may be stored in the memory <NUM>.

The speaker <NUM> refers, for example, to a component that outputs a sound signal. For example, the speaker <NUM> may output a guide voice (e.g., "Here's the food you ordered"). In another example, the audio output unit <NUM> may output a voice message corresponding to the user command.

The communication interface <NUM> may include at least one circuit and communicate with various types of external devices. The communication interface <NUM> may include a BLE (Bluetooth Low Energy) module, Wi-Fi communication module, cellular communication module, a 3rd generation (<NUM>) mobile communication module, 4th generation (<NUM>) mobile communication module, a <NUM> long term evolution (LTE) communication module, and a 5th generation (<NUM>) mobile communication module.

The driver <NUM> may include a wheel for moving the robot <NUM> and a wheel driving motor for rotating the wheel. In addition, the driver 170may further include a motor driving circuit for supplying a driving current to the wheel driving motor, a power transmission module for transmitting a rotational force of the wheel driving motor to the wheels, a wheel driving motor, or a rotation detection sensor for detecting a rotational displacement and a rotational speed of wheels.

Various exemplary embodiments described above may be embodied in a recording medium that may be read by a computer or a similar apparatus to the computer by using software, hardware, or a combination thereof. In some cases, embodiments described herein may be implemented by the processor itself. In a software configuration, various embodiments described in the specification such as a procedure and a function may be embodied as separate software modules. The software modules may respectively perform one or more functions and operations described in the present specification.

Computers instructions for performing a processing operation according to various exemplary embodiments may be stored on a non-transitory readable medium. When the computer instructions stored in such a non-transitory computer-readable medium are executed by a processor, a specific apparatus may perform a processing operation according to various embodiments described above.

Claim 1:
A robot (<NUM>) comprising:
a light detection and ranging, LiDAR, sensor (<NUM>);
a memory (<NUM>) configured to store at least one instruction; and
at least one processor (<NUM>) configured to execute the at least one instruction to:
acquire, based on a sensing value of the LiDAR sensor (<NUM>), a first map (<NUM>) that covers a space where the robot (<NUM>) is located,
detect one or more obstacles (<NUM>, <NUM>, <NUM>, <NUM>) existing in the space based on the sensing value of the LiDAR sensor (<NUM>), characterised in that the at least one processor is further configured to execute the at least one instruction to:
acquire a number of times that each of a plurality of areas in the first map (<NUM>) is occupied by the one or more obstacles (<NUM>, <NUM>, <NUM>, <NUM>), based on location information of the one or more obstacles (<NUM>, <NUM>, <NUM>, <NUM>),
determine an obstacle area based on the number of times that each of the plurality of areas is occupied by the one or more obstacles (<NUM>, <NUM>, <NUM>, <NUM>), and
acquire a second map (<NUM>) indicating the obstacle area on the first map (<NUM>) to determine a driving route of the robot (<NUM>) based on the second map (<NUM>).