WO2022059937A1 - 로봇 및 그의 제어 방법 - Google Patents

로봇 및 그의 제어 방법 Download PDF

Info

Publication number
WO2022059937A1
WO2022059937A1 PCT/KR2021/011019 KR2021011019W WO2022059937A1 WO 2022059937 A1 WO2022059937 A1 WO 2022059937A1 KR 2021011019 W KR2021011019 W KR 2021011019W WO 2022059937 A1 WO2022059937 A1 WO 2022059937A1
Authority
WO
WIPO (PCT)
Prior art keywords
points
robot
space
height value
processor
Prior art date
Application number
PCT/KR2021/011019
Other languages
English (en)
French (fr)
Inventor
백아론
김명곤
류제웅
장은솔
Original Assignee
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Publication of WO2022059937A1 publication Critical patent/WO2022059937A1/ko
Priority to US18/120,192 priority Critical patent/US20230213944A1/en

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0238Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using obstacle or wall sensors
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0268Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means
    • G05D1/0274Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means using mapping information stored in a memory device
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1694Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
    • B25J9/1697Vision controlled systems
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • B25J19/021Optical sensing devices
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/161Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds

Definitions

  • the present disclosure relates to a robot and a control method thereof, and more particularly, to a robot traveling using a depth image and a control method thereof.
  • SLAM Simultaneous Localization and Mapping
  • the robot may perform position estimation through data obtained using various sensors.
  • a vision sensor that acquires an image projected onto a plane of space existing within the camera's field of view
  • lidar that acquires data that scans the distance to an object in a 360-degree direction
  • a distance sensor such as LiDAR
  • Vision sensors such as cameras have advantages in that they are inexpensive and can be miniaturized, but they require a lot of computation for data processing, and blur occurs in the image acquired when the robot moves or rotates at high speed. There is a downside to doing it.
  • a distance sensor such as a lidar
  • the lifespan is short, the price is high, and it is difficult to miniaturize the sensor for reasons such as rotating the sensor through a rotating mechanism such as a motor to sense the distance in a 360-degree direction.
  • a rotating mechanism such as a motor to sense the distance in a 360-degree direction.
  • 3D lidar the cost is very high, and the size and weight of the sensor are large.
  • the present disclosure has been devised by the above necessity, and an object of the present disclosure is to provide a robot that travels using a depth image and a control method thereof.
  • the robot obtains a depth image by performing photographing through a depth camera, a driving unit, and a depth camera, and a plurality of pixels based on depth information of a plurality of pixels of the depth image Generates a plurality of 3D points in 3D space corresponding to pixels of and a processor for controlling the driving unit to drive the robot based on the identified plurality of 3D points.
  • the processor may determine a floor surface on which the robot travels in the 3D space, based on the distribution of the plurality of 3D points in the 3D space.
  • the processor rotates a plurality of 3D points in 3D space so that the determined floor surface is mapped to a predetermined plane in 3D space, and a plurality of 3D points having a predetermined height value based on a predetermined plane among the rotated 3D points 3D points can be identified.
  • the preset plane corresponds to an xz plane in a 3D space defined by the XYZ axis, and the processor may identify a plurality of 3D points in which a Y-axis value has a preset value among a plurality of rotated 3D points.
  • the processor identifies a plurality of 3D points having a height value within a preset threshold range including a preset height value with respect to the floor among the plurality of 3D points, and based on the identified plurality of 3D points, the robot runs.
  • the drive unit can be controlled.
  • the processor may convert the identified plurality of 3D points into 2D data based on the values of the X-axis and the Z-axis of the plurality of identified 3D points, and control the driving unit to drive the robot based on the 2D data.
  • the preset height value may be a height value set based on the height value of the robot.
  • the method includes: acquiring a depth image by performing photographing through a depth camera provided in the robot; Generating a plurality of 3D points in a corresponding 3D (three-dimensional) space, identifying a plurality of 3D points having a predetermined height value based on a floor surface on which the robot travels in the 3D space among the plurality of 3D points , and based on the identified plurality of 3D points, it may include controlling a driving unit provided in the robot so that the robot travels.
  • the identifying may include determining a floor surface on which the robot travels in the 3D space based on the distribution of the plurality of 3D points in the 3D space.
  • the identifying includes rotating a plurality of 3D points on the 3D space so that the determined floor surface is mapped to a preset plane on the 3D space, and having a preset height value based on a preset plane among the rotated plurality of 3D points A plurality of 3D points may be identified.
  • the preset plane corresponds to the XZ plane on the 3D space defined by the XYZ axis, and the identifying may include identifying a plurality of 3D points whose Y-axis value has a preset value among a plurality of rotated 3D points.
  • the identifying may include identifying a plurality of 3D points having a height value within a preset threshold range including a preset height value with respect to the floor from among the plurality of 3D points.
  • the identifying includes converting the identified plurality of 3D points into 2D data based on the X -axis value and the Z-axis value of the plurality of identified 3D points, and the controlling includes a driving unit to drive the robot based on the 2D data may include controlling
  • the preset height value may be a height value set based on the height value of the robot.
  • FIG. 1 is a view for explaining a robot according to an embodiment of the present disclosure.
  • FIG. 2 is a block diagram illustrating a configuration of a robot according to an embodiment of the present disclosure.
  • 3A is a diagram for describing a method of generating a 3D point through a depth image according to an embodiment of the present disclosure.
  • 3B is a diagram for describing a method of generating a 3D point through a depth image according to an embodiment of the present disclosure.
  • FIG. 4A is a view for explaining a method of identifying a bottom surface according to an embodiment of the present disclosure.
  • 4B is a side view for explaining a method of identifying a bottom surface according to an embodiment of the present disclosure.
  • 5A is a diagram for explaining a method of aligning a plurality of 3D points according to an embodiment of the present disclosure.
  • 5B is a front view illustrating a method of aligning a plurality of 3D points according to an embodiment of the present disclosure.
  • 5C is a side view for explaining a method of aligning a plurality of 3D points according to an embodiment of the present disclosure.
  • 6A is a view for explaining a method of identifying a 3D point of a specific height according to an embodiment of the present disclosure.
  • 6B is a front view and a side view for explaining a method of identifying a 3D point of a specific height according to an embodiment of the present disclosure.
  • FIG. 7 is a diagram for explaining a method of generating 2D data according to an embodiment of the present disclosure.
  • FIG. 8 is a block diagram illustrating an additional configuration of a robot according to an embodiment of the present disclosure.
  • FIG. 9 is a view for explaining a flowchart according to an embodiment of the present disclosure.
  • expressions such as “A or B,” “at least one of A and/and B,” or “one or more of A or/and B” may include all possible combinations of the items listed together.
  • “A or B,” “at least one of A and B,” or “at least one of A or B” means (1) includes at least one A, (2) includes at least one B; Or (3) it may refer to all cases including both at least one A and at least one B.
  • a component eg, a first component is "coupled with/to (operatively or communicatively)" to another component (eg, a second component);
  • another component eg, a second component
  • the certain element may be directly connected to the other element or may be connected through another element (eg, a third element).
  • a component eg, a first component
  • another component eg, a second component
  • a device configured to may mean that the device is “capable of” with other devices or components.
  • a processor configured (or configured to perform) A, B, and C refers to a dedicated processor (eg, an embedded processor) for performing the above operations, or by executing one or more software programs stored in a memory device.
  • a generic-purpose processor eg, a CPU or an application processor
  • FIG. 1 is a view for explaining a robot according to an embodiment of the present disclosure.
  • a robot 100 is a device capable of traveling in a specific area.
  • the robot 100 may provide a specific service to the user while moving in a specific area.
  • the robot 100 may be implemented as a device capable of providing various services, such as a cleaning robot, a repair robot, a rover robot, and a transport robot.
  • the robot 100 may travel according to various driving methods based on various sensing data.
  • the sensing data is data sensed by the surrounding environment of the robot 100 and may be used as data of a map, and the sensing data may include a depth image.
  • the sensed data may be used to estimate the position of the robot 100 or to generate a map.
  • the driving method may include at least one of a walking type using legs like a human or an animal, a wheel type (or caterpillar type) using rotation of wheels, and a flying type using rotation of wings or fuel injection.
  • the robot 100 may generate a map for a specific height based on the depth image, and may drive based on the map.
  • the robot 100 may acquire a depth image by photographing the surrounding environment through the depth camera 110 .
  • the depth image may include depth information mapped to each of the plurality of pixels.
  • the depth information may indicate a distance between the position of the depth camera 110 and the position of the object 200 .
  • the depth image is the position of the robot 100 (eg, the position of the height y2) and the object 200 .
  • the object 200 refers to an object or an animal existing in the environment around the robot 100 , and may mean, for example, a wall, a door, a table, a chair, a carpet, a cat, a person, and the like.
  • the robot 100 may generate a plurality of three-dimensional (3D) points based on the depth image.
  • the 3D point is defined as coordinates in virtual 3D space (eg, coordinates of x, y, and z), and the coordinates of the 3D point may correspond to a location in real space.
  • the 3D point generated (or converted) based on the depth image may indicate information that an object exists at a corresponding position. That is, the object 200 may be generated as a plurality of 3D points each having specific positions in the 3D space by using the distance to the object 200 mapped to the plurality of pixels of the depth image and the coordinates of each pixel. As such, the robot 100 may convert the depth image into a plurality of 3D points. In this case, the plurality of 3D points may be referred to as a point cloud.
  • the robot 100 may identify a plurality of 3D points for a predetermined height based on the floor from among the plurality of 3D points, and may travel based on the identified plurality of 3D points.
  • the floor surface may be used as a reference surface to generate map data for a preset height.
  • the preset height may be the height of the robot 100 , but this is only an example, and may be set to a height in consideration of the environment in which the robot 100 travels. For example, when the robot 100 is a cleaning robot that runs in an environment such as a home, the preset height may be set as the height of a threshold (threshold) among structures in the home.
  • a threshold threshold
  • the identified plurality of 3D points may be used to generate a map for a preset height or to estimate the position of the robot 100 on the map. For example, when a depth image is continuously acquired over time through the depth camera 110 while the robot 100 is driving, the above-described operation is repeatedly performed to obtain a plurality of 3D 3D images having a preset height corresponding to the depth image.
  • a map of a preset height may be generated by identifying a point and matching a plurality of consecutively identified 3D points in one 3D space according to time.
  • the robot 100 identifies a plurality of 3D points of a preset height corresponding to the most recently acquired depth image, and determines the position and orientation of a portion matching the plurality of 3D points identified on the pre-generated map. Thus, the position and orientation of the robot 100 can be estimated.
  • FIG. 2 is a block diagram illustrating a configuration of a robot according to an embodiment of the present disclosure.
  • the robot 100 may include a depth camera 110 , a driving unit 120 , and a processor 130 .
  • the depth camera 110 may acquire a depth image by photographing a region within a field of view (FoV) of the depth camera 110 .
  • FoV field of view
  • the depth image may include a plurality of pixels in which real 3D space is projected onto a 2D plane (ie, an image plane).
  • a plurality of pixels may be arranged in a matrix form on a 2D plane, and the position of each pixel or the coordinates of each pixel may indicate a direction in 3D space based on the position of the depth camera 110 .
  • depth information may be mapped to each of the plurality of pixels, and the depth information may indicate a distance from the object 200 existing in a direction corresponding to the position of the pixel with respect to the position of the depth camera 110 .
  • the depth camera 110 may include a lens for focusing the visible light or signal reflected by the object 200 to the image sensor and an image sensor capable of detecting the visible light or signal.
  • the image sensor may include a 2D pixel array divided into a plurality of pixels.
  • the depth camera 110 may be implemented in a stereo method, a time-of-flight (ToF) method, a structured light method, or the like.
  • ToF time-of-flight
  • the stereo method the disparity of a plurality of images obtained by simultaneously photographing the object 200 at different positions by two cameras (or more cameras) at different positions (that is, the same object included in the plurality of images) like the human eye.
  • a method of calculating the distance (or depth) with respect to the object 200 using the position difference with respect to ( 200 ) is shown.
  • the ToF method uses the difference between the time at which a signal (eg, infrared, ultrasound, laser, etc.) is emitted and the time at which the emitted signal is reflected by the object 200 and is detected and the speed of the signal to the distance from the object 200 ( or depth) is calculated.
  • a signal eg, infrared, ultrasound, laser, etc.
  • the ToF method has advantages in that the distance at which the object 200 can be identified is long, power consumption is low, and the product can be miniaturized due to its small volume.
  • the structured light method irradiates the object 200 with structured light that is distinguished from ambient light, such as a laser such as visible light or infrared light, and detects the distortion of the structured light reflected by the object 200 to determine the distance from the object 200 Indicates the method of calculation.
  • the depth camera 110 may be implemented as an RGB-D camera capable of acquiring a depth image to which depth information and color information (ie, color values of Red, Green, and Blue) are mapped for each of a plurality of pixels. .
  • RGB-D camera capable of acquiring a depth image to which depth information and color information (ie, color values of Red, Green, and Blue) are mapped for each of a plurality of pixels.
  • the depth camera 110 may sequentially acquire a plurality of depth images through continuous shooting.
  • the depth image or metadata separate from the depth image may include information on at least one of a time taken by the depth camera 110 , a frame rate, a viewpoint, an angle of view, a pixel resolution, and a pixel pitch.
  • the frame rate indicates the number of frames (the number of images) acquired per second (or per minute)
  • the angle of view indicates the focal length of the lens of the depth camera 110 and the depth of the camera 110 . It may represent a value determined according to the size (eg, diagonal length) of the image sensor.
  • the viewpoint may be detected by a sensor (eg, a gyro sensor, an acceleration sensor, etc.) provided inside or outside the depth camera 110 .
  • a sensor eg, a gyro sensor, an acceleration sensor, etc.
  • a viewpoint may be identified by identifying a portion that matches a plurality of 3D points generated based on a depth image on a map generated by matching a plurality of 3D points and using the degree of misalignment thereof.
  • Pixel resolution refers to the number of pixels arranged horizontally (e.g. 640) and pixels arranged vertically (e.g. 480 pixels), e.g. 640 * 480
  • pixel pitch refers to the spacing between adjacent pixels distance (eg, 50um, etc.).
  • the depth camera 110 may acquire a depth image by performing photographing according to a global shutter method.
  • the global shutter is a method of photographing by exposing the entire image sensor at the same time and closing it at once, and since the photographing time of one frame is the same, distortion due to parallax may not occur. That is, it is possible to prevent distortion including blur from occurring in the acquired depth image.
  • the rolling shutter is a method of photographing by sequentially varying exposure for each horizontal line or vertical line of the image sensor, and in the case of a fast moving object, the depth image obtained through this method may be distorted.
  • the application of the rolling shutter method to the depth camera 110 for various reasons such as economic feasibility and miniaturization is not excluded.
  • the driving unit 120 is a device capable of driving the robot 100 , and according to the control of the processor 130 , the driving unit 120 may adjust the traveling direction and the traveling speed.
  • the driving unit 120 is a power generating device that generates power for the robot 100 to travel (eg, a gasoline engine, a diesel engine, or liquefied petroleum gas (LPG) depending on the fuel used (or energy source). engines, electric motors, etc.), steering devices for controlling the direction of travel (e.g., manual steering, hydraulics steering, electronic control power steering (EPS), etc.), robots (e.g., 100) may include a driving device (eg, wheels, propellers, etc.) for driving.
  • the driving unit 120 may be deformed according to a driving type (eg, a wheel type, a walking type, a flying type, etc.) of the robot 100 .
  • the processor 130 acquires a depth image by performing photographing through the depth camera 110 , and based on depth information of a plurality of pixels of the depth image, a plurality of pixels in a three-dimensional (3D) space corresponding to the plurality of pixels. Generates 3D points, identifies a plurality of 3D points having a predetermined height value based on a floor surface on which the robot 100 travels in 3D space among a plurality of 3D points, and based on the identified plurality of 3D points, the robot It is possible to control the driving unit 120 to drive (100).
  • the processor 130 may acquire a depth image by performing photographing through the depth camera 110 .
  • the processor 130 may generate a plurality of 3D points in a 3D space corresponding to the plurality of pixels based on depth information of the plurality of pixels of the depth image. This will be described in detail with reference to FIGS. 3A and 3B.
  • the processor 130 may identify a plurality of 3D points having a predetermined height value based on a floor surface on which the robot 100 travels in a 3D space among the plurality of 3D points.
  • the processor 130 may determine the floor surface on which the robot 100 travels in the 3D space based on the distribution of the plurality of 3D points in the 3D space. This will be described in detail with reference to FIGS. 4A and 4B.
  • the processor 130 may rotate the plurality of 3D points in the 3D space so that the determined floor surface is mapped to a predetermined plane in the 3D space.
  • the preset plane may correspond to the XZ plane on the 3D space defined by the XYZ axis. This will be described in detail with reference to FIGS. 5A to 5C.
  • the processor 130 may identify a plurality of 3D points having a predetermined height value based on a predetermined plane among the plurality of rotated 3D points. In this case, the processor 130 may identify a plurality of 3D points in which the Y-axis value has a preset value among the plurality of rotated 3D points. This will be described in detail with reference to FIGS. 6A and 6B.
  • the processor 130 may control the driving unit 120 to drive the robot 100 based on the identified plurality of 3D points.
  • the processor 130 may convert the identified plurality of 3D points into 2D data based on the X-axis values and the Z-axis values of the plurality of identified 3D points.
  • the processor 130 may control the driving unit 120 to drive the robot 100 based on the 2D data. This will be described in detail with reference to FIG. 7 .
  • the processor 130 may identify a plurality of 3D points having a height value within a preset threshold range including a preset height value based on the floor from among the plurality of 3D points. In this case, the processor 130 may control the driving unit 120 to drive the robot 100 based on the identified plurality of 3D points.
  • 3A and 3B are diagrams for explaining a method of generating a 3D point through a depth image according to an embodiment of the present disclosure.
  • the processor 130 may acquire a depth image 310 by performing photographing through the depth camera 110 .
  • the depth image 310 may include depth information mapped in units of pixels.
  • the depth image 310 may be implemented as data arranged in a matrix form.
  • a column may indicate the coordinates of an x-axis of a pixel
  • a row in the depth image 310 may indicate a coordinate of a y-axis of a pixel.
  • Values mapped to specific rows and columns in the depth image 310 may be depth information mapped to pixels having corresponding coordinates. For example, among a plurality of pixels (eg, 640 * 480 pixels) included in the depth image 310 , depth information such as 1 meter is mapped to (1, 1) pixels and 1.2 meters to (1,2) pixels. and can be stored.
  • the processor 130 generates a plurality of 3D points 320 in 3D space based on the depth information and pixel coordinates of a plurality of pixels included in the depth image 310.
  • each of the plurality of 3D points 320 may correspond to each pixel of the depth image 310 .
  • the 3D point is located in a 3D space having coordinate systems of the X-axis, Y-axis, and Z-axis, and the location of the 3D point may correspond to a location where the object 200 exists.
  • the processor 130 performs the following A first 3D point having a position (X 1 , Y 1 , Z 1 ) according to Equation 1 may be generated.
  • the horizontal direction of the depth camera 110 is the X axis
  • the vertical direction of the depth camera 110 is the Y axis
  • the optical axis direction is the Z axis.
  • x 1 and y 1 represent row coordinates and column coordinates of a pixel of the depth image 310
  • d 1 represents depth information mapped to the corresponding pixel.
  • f x , f y represent focal lengths of the depth camera 110 with respect to the X and Y axes
  • c x , c y are the positions of principal points with respect to the X and Y axes. , which may be information previously stored in a memory inside or outside the depth camera 110 .
  • the plurality of 3D points 320F may be implemented in the form of an image that visually expresses depth information mapped to each pixel as shown in ( 1 ) of FIG. 3B .
  • the depth information may include a contrast value (or grayscale) corresponding to a distance from the object 200 .
  • the processor 130 may generate a 3D point based on coordinates and depth information of pixels included in the depth image 310 through various geometric relationships or various algorithms.
  • the above-described operation has been described as being performed by the processor 130 , this is only an example, and the operation of generating a plurality of 3D points based on the depth image 310 is performed inside the depth camera 110 . possible.
  • the heights of the plurality of 3D points described above may generally be values of the Y-axis.
  • the floor is inclined or the height of the floor is measured as a value other than 0 meters, in order to extract a 3D point of a specific height, it is necessary to identify the floor that is the basis for judging the height. process may be required.
  • a method of identifying the bottom surface will be described in detail with reference to FIGS. 4A and 4B .
  • FIG. 4A and 4B are diagrams for explaining a method of identifying a bottom surface according to an embodiment of the present disclosure.
  • FIG. 4B is a side view of the first plane 430G of FIG. 4A .
  • the processor 130 may determine the floor surface 430G on which the robot 100 travels in the 3D space based on the distribution of the plurality of 3D points 420 in the 3D space.
  • the processor 130 may randomly select a plurality of 3D points (eg, three 3D points) from among the plurality of 3D points 420 .
  • the processor 130 may identify the first plane 430G through the positions of the three 3D points and the following Equation (2).
  • ⁇ A, B, C> may represent a normal vector n perpendicular to the first plane 430G.
  • the values of A, B, C, and D can be obtained through various methods. For example, a first 3D point is located at (X 1 , Y 1 , Z 1 ), a second 3D point is located at (X 2 , Y 2 , Z 2 ), and a third 3D point is located at (X 3 , Y ) 3 , Z 3 ), assuming that the first to third 3D points are respectively substituted for X, Y, and Z of Equation 2 to solve the system of equations, as a result, the values of A, B, C, and D are can be saved
  • the processor 130 regards a 3D point located within a preset distance (eg, t) from among the plurality of 3D points 420 to the first plane 430G as an inlier and , the remaining 3D points may be considered as outliers.
  • the processor 130 may calculate a distribution (ie, the number) of 3D points identified as normal points and store them in the memory.
  • the processor 130 may calculate the distribution of normal points for the randomly identified second to n-th planes (n is a natural number equal to or greater than 2) by repeating the above-described operation. In addition, the processor 130 may determine the plane having the largest distribution among the distributions of vertices with respect to the first plane 430G to the n-th plane as the bottom surface.
  • the processor 130 when randomly selecting a 3D point, identifies a 3D point having a Y value equal to or less than a preset value from among the plurality of 3D points 420 , and the identified 3D point 3D points can be selected randomly from among them. This has the effect of reducing the number of calculations for the floor determination process, considering that most of the floor surfaces are generally located at the bottom.
  • the processor 130 may determine the floor surface through various algorithms such as RANSAC (Random sample consensus) and eigenvalue analysis.
  • the processor 130 may align a plurality of 3D points with respect to the floor surface in order to identify the 3D point having a predetermined height value with respect to the floor surface. That is, all 3D points may be aligned so that the Y-axis value of the 3D points corresponding to the floor is 0. This will be described in detail with reference to FIGS. 5A to 5C.
  • 5A to 5C are diagrams for explaining a method of aligning a plurality of 3D points according to an embodiment of the present disclosure.
  • the processor 130 rotates the plurality of 3D points 520 in 3D space so that the determined floor surface 530G is mapped to a predetermined plane G' in the 3D space.
  • the preset plane G' may correspond to the XZ plane on the 3D space defined by the XYZ axis.
  • the processor 130 determines between the normal vector n and the Y-axis direction vector perpendicular to the bottom surface 530G by using various methods such as a dot product or an external product of the vector, between the normal vector n and the Y-axis direction vector.
  • the angle ⁇ can be calculated.
  • the processor 130 may rotate the entire plurality of 3D points 520 such that an angle ⁇ between the normal vector n and the direction vector of the Y-axis becomes 0.
  • the plurality of points 540 and the bottom surface 540G may be aligned through rotation as shown in (2) of FIG. 5A.
  • the value of the Y-axis of the 3D point may indicate the height of the object with respect to the floor 540G.
  • FIGS. 5B and 5C illustrate a plurality of 3D points in the front direction of the object
  • FIG. 5C illustrates a plurality of 3D points in the side direction of the object.
  • the floor surface 530G is determined from among the plurality of 3D points 520F and 520S generated based on the depth image as shown in (1) of FIG. 5B and (1) of FIG. 5C
  • the floor The surface 530G may be mapped to a plane having a Y-axis value of 0.
  • a plurality of 3D points 540F and 540S may be aligned in a state in which the bottom surface 540G is mapped to a plane having a Y-axis value of 0 as shown in (2) of FIG. 5B and (2) of FIG. 5C. there is.
  • the processor 130 may identify a plurality of 3D points having a predetermined height value based on a floor surface on which the robot 100 travels in a 3D space among the plurality of 3D points. This will be described in detail with reference to FIGS. 6A and 6B.
  • 6A and 6B are diagrams for explaining a method of identifying a 3D point of a specific height according to an embodiment of the present disclosure.
  • the processor 130 may identify a plurality of 3D points having a preset height value based on a preset plane G' among a plurality of rotated 3D points 640 .
  • the plurality of 3D points 640 are rotated so that the bottom surface 640G is mapped to a preset plane G' in the 3D space.
  • the identified plurality of 3D points may indicate the position of the object on a plane having a predetermined height value based on the bottom surface of the robot 100 .
  • the processor 130 may identify a plurality of 3D points in which the Y-axis value has a preset value among the plurality of rotated 3D points 640 .
  • An embodiment of identifying a 3D point located on the H plane 650H having a predetermined height value based on the above-described bottom surface 640G may appear as shown in (1) and (2) of FIG. 6B.
  • (1) of FIG. 6B shows a plurality of 3D points in the front direction of the object
  • (2) of FIG. 6B shows a plurality of 3D points in the side direction of the object.
  • the preset height value may be a value based on the height of the robot 100 .
  • the preset height value may be a value within a range of 0 or more and less than or equal to the height value of the robot 100 . This is for estimating the position of the robot 100 or determining the position of an object capable of colliding with the robot 100 .
  • the preset height value may be a height value based on a person's height.
  • the preset height value may be a Y value corresponding to a height value (eg, 2 meters) greater than the height of a general person. This is to more accurately estimate the position of the robot 100 by excluding dynamic objects to determine the indoor structure.
  • the preset height value is set to one value, this is only an example, and the preset height value may be set to a plurality of values. In this case, the 3D point for each height value may be used for estimating the position of the robot 100 .
  • the processor 130 may identify a plurality of 3D points having a height value within a preset threshold range including a preset height value based on the floor from among the plurality of 3D points.
  • the height value within the preset threshold range may represent a height value between h-a minus the preset threshold value a based on the preset height value h and h+a plus the preset threshold value a. That is, the height value within the preset threshold range may be a value in the range of more than h-a and less than h+a.
  • the processor 130 may control the driving unit 120 to drive the robot 100 based on the identified plurality of 3D points. This will be described together with reference to FIG. 7 .
  • FIG. 7 is a diagram for explaining a method of generating 2D data according to an embodiment of the present disclosure.
  • (1) of FIG. 7 is a top view of a plurality of aligned 3D points 740T projected on an XZ plane
  • (2) of FIG. 7 shows a plurality of 3D points 750T having a preset height on the XZ plane It is shown as a top view projected onto the top.
  • the processor 130 determines the X-axis value and the Z-axis value of the plurality of 3D points 750T having a predetermined height identified among the aligned plurality of 3D points 740T.
  • the plurality of 3D points 750T identified based on the values may be converted into 2D data.
  • the processor 130 omits (or removes) the Y-axis value h from the (X, h, Z) values of the 3D point having a preset height h to obtain (X, Z) values of the X-axis and Z-axis. It can be converted to a 2D point with That is, 2D data may include a plurality of 2D points.
  • the 2D data may include information about the height. This 2D data can be used as a 2D lidar-based SLAM by being converted into the same format as the output value (or input value, etc.) of the 2D lidar sensor.
  • the processor 130 may control the driving unit 120 to drive the robot 100 based on the 2D data.
  • the processor 130 generates a plurality of 3D points based on the periodically acquired depth image, identifies a plurality of 3D points having a preset height among a plurality of aligned 3D points, and identifies the plurality of 3D points. Points can be converted to 2D data. In this case, the processor 130 may generate (or update) the 2D map by matching the periodically transformed 2D data.
  • the processor 130 generates a plurality of 3D points based on the currently (or most recent time) acquired depth image, and identifies a plurality of 3D points having a preset height among the aligned plurality of 3D points, The identified plurality of 3D points may be converted into 2D data.
  • the processor 130 may identify the position of the robot 100 on the 2D map by comparing the 2D data converted now (or at the most recent time) with the 2D map.
  • the processor 130 may simultaneously perform the above-described operation of generating the 2D map and the operation of estimating the location.
  • the processor 130 may determine (or plan) a travel route from the location of the robot 100 to the destination on the 2D map.
  • various route search algorithms such as an algorithm for searching a driving route of the shortest distance, and an algorithm for finding a route that minimizes a change of a driving direction, may be used.
  • the processor 130 may control the driving unit 120 to travel to the destination along the driving route.
  • the amount of computation may be reduced in that a plurality of 3D points having a specific height are processed instead of all of the plurality of 3D points generated based on the depth image.
  • FIG. 8 is a block diagram illustrating an additional configuration of a robot according to an embodiment of the present disclosure.
  • the robot 100 includes, in addition to the depth camera 110 , the driving unit 120 and the processor 130 , an input interface 140 , an output interface 150 , a memory ( 160 ), the sensor 170 , the communication unit 180 , and at least one of the power supply unit 190 may be further included.
  • the content overlapping with the content described in FIG. 2 will be omitted.
  • the processor 130 is a general-purpose processor such as a central processing unit (CPU) and an application processor (AP), a graphics-only processor such as a graphic processing unit (GPU), a vision processing unit (VPU), etc., and artificial It may be implemented as an intelligence-only processor or the like.
  • the processor 130 may include a volatile memory for loading at least one instruction or module.
  • the input interface 140 may receive various user commands and transmit them to the processor 130 . That is, the processor 130 may recognize a user command input from the user through the input interface 140 .
  • the user command may be implemented in various ways, such as a user's touch input (touch panel), a key (keyboard) or button (physical button or mouse, etc.) input, and a user's voice (microphone).
  • the output interface 150 is a component capable of outputting information, and may be implemented as, for example, a display or a speaker.
  • a display is a device that outputs information or data in a visual form.
  • a display may display an image frame on an area or an entire area of the display that may be driven by pixels. At least a portion of the display may be coupled to at least one of a front area and a side area and a rear area of the robot 100 in the form of a flexible display.
  • the flexible display may be characterized as being able to bend, bend, or roll without damage through a thin and flexible substrate like paper.
  • the speaker may directly output various kinds of audio data for which various processing operations such as decoding, amplification, and noise filtering have been performed by an audio processing unit (not shown) as well as various notification sounds or voice messages as sounds.
  • the memory 160 is a configuration for storing an operating system (OS) for controlling the overall operation of the components of the robot 100 and various data related to the components of the robot 100 .
  • OS operating system
  • the memory 160 may be configured as hardware for temporarily or permanently storing data or information.
  • the memory 160 may be implemented as hardware at least one of non-volatile memory, volatile memory, flash memory, hard disk drive (HDD) or solid state drive (SSD), RAM, ROM, etc. there is.
  • At least one instruction, program, or data required for the operation of the robot 100 or the processor 130 may be stored in the memory 160 .
  • the instruction is a unit of code for instructing the operation of the robot 100 or the processor 130, and may be written in machine language, which is a language that a computer can understand.
  • a program may be a set of instructions that perform a specific task of a unit of work.
  • the data may be status information in units of bits or bytes that can represent characters, numbers, images, and the like.
  • the sensor 170 may be implemented with various sensors such as a camera, a microphone, a proximity sensor, an illuminance sensor, a motion sensor, a ToF sensor, and a GPS sensor.
  • the camera divides light into pixel units, detects light intensity for R (Red), G (Green), and B (Blue) colors for each pixel, and converts the light intensity into an electrical signal.
  • Data representing the color, shape, contrast, etc. of an object can be acquired.
  • the data type may be an image having R, G, and B color values for each of the plurality of pixels.
  • the microphone may detect a sound wave, such as a user's voice, and convert the sound wave into an electrical signal to obtain data.
  • the data type may be an audio signal of various formats.
  • a proximity sensor may detect the presence of a nearby object, and may acquire data on whether the surrounding object is present or whether the surrounding object is in proximity.
  • the illuminance sensor may acquire data on illuminance by detecting the amount of light (or brightness) of the surrounding environment of the robot 100 .
  • the motion sensor may detect a moving distance, a moving direction, a tilt, and the like of the robot 100 .
  • the motion sensor may be implemented as a combination of an acceleration sensor, a gyro sensor, a geomagnetic sensor, and the like.
  • a TOF (Time Of Flight) sensor emits various electromagnetic waves (e.g., ultrasonic, infrared, laser, Ultra-Wideband (UWB), etc.) with a specific speed and detects the return time of flight, and thus the distance (or position) from the target. ) can be obtained.
  • a GPS (Global Positioning System) sensor receives radio signals from a plurality of satellites, calculates a distance to each satellite by using the transmission time of the received signal, and uses the calculated distance to triangulate the robot 100 It is possible to obtain data about the current location of
  • the above-described implementation example of the sensor 170 is only an example, and the present invention is not limited thereto, and it will be possible to implement various types of sensors.
  • the communication unit 180 may transmit/receive various types of data by performing communication with various types of external devices according to various types of communication methods.
  • the communication unit 180 is a circuit for performing various types of wireless communication, including a Bluetooth module (Bluetooth method), a Wi-Fi module (Wi-Fi method), a wireless communication module (cellular method such as 3G, 4G, 5G), an NFC module (NFC method) , Ethernet module, USB module, HDMI (High Definition Multimedia Interface), DP (DisplayPort), D-SUB ( D-subminiature), DVI (Digital Visual Interface), Thunderbolt (Thunderbolt), and may include at least one of a component.
  • Bluetooth module Bluetooth method
  • Wi-Fi method Wi-Fi method
  • cellular method such as 3G, 4G, 5G
  • NFC module NFC method
  • Ethernet module such as 3G, 4G, 5G
  • USB module such as 3G, 4G, 5G
  • HDMI High Definition Multimedia Interface
  • DP DisplayPort
  • D-SUB D-submini
  • the power supply unit 190 may supply power to each component of the robot 100 .
  • the power supply unit 190 may include a battery that can be charged by an external commercial power source.
  • FIG. 9 is a view for explaining a flowchart according to an embodiment of the present disclosure.
  • the control method of the robot 100 includes acquiring a depth image by performing photographing through the depth camera 110 provided in the robot 100 ( S910 ), and a depth of a plurality of pixels of the depth image.
  • a depth image may be obtained by photographing through the depth camera 110 provided in the robot 100 ( S910 ).
  • a plurality of 3D points in a three-dimensional (3D) space corresponding to the plurality of pixels may be generated based on the depth information of the plurality of pixels of the depth image ( S920 ).
  • a plurality of 3D points having a preset height value based on the floor surface on which the robot 100 travels in 3D space may be identified ( S930 ).
  • the preset height value may be a height value set based on the height value of the robot.
  • the identifying may include determining a floor surface on which the robot 100 travels in the 3D space based on the distribution of the plurality of 3D points in the 3D space.
  • the identifying step is to rotate a plurality of 3D points on the 3D space so that the determined floor surface is mapped to a predetermined plane on the 3D space, and a predetermined height value based on a predetermined plane among the rotated plurality of 3D points It is possible to identify a plurality of 3D points having
  • the preset plane may correspond to the XZ plane on the 3D space defined by the XYZ axis.
  • the identifying may include identifying a plurality of 3D points in which the Y-axis value has a preset value among the plurality of rotated 3D points.
  • the identifying may include converting the identified plurality of 3D points into 2D data based on the X-axis values and the Z-axis values of the plurality of identified 3D points.
  • a plurality of 3D points having a height value within a preset threshold range including a preset height value based on the floor surface among the plurality of 3D points may be identified.
  • the driving unit 120 provided in the robot 100 may be controlled to drive the robot 100 ( S940 ).
  • controlling may control the driving unit 120 to drive the robot 100 based on 2D data.
  • Various embodiments of the present disclosure may be implemented as software including instructions stored in a machine-readable storage medium readable by a machine (eg, a computer).
  • the device calls the stored instructions from the storage medium. and, as a device capable of operating according to the called command, it may include an electronic device (eg, the robot 100) according to the disclosed embodiments.
  • the processor directly or the processor
  • the function mentioned in the instruction may be performed using other components under the control of It may be provided in the form of a non-transitory storage medium, where 'non-transitory' means that the storage medium does not include a signal and is tangible, but data is stored in the storage medium semi-permanently or temporarily It does not distinguish between stored.
  • the method according to various embodiments may be provided by being included in a computer program product.
  • Computer program products may be traded between sellers and buyers as commodities.
  • the computer program product may be distributed in the form of a machine-readable storage medium (eg, compact disc read only memory (CD-ROM)) or online through an application store (eg, Play StoreTM).
  • an application store eg, Play StoreTM
  • at least a portion of the computer program product may be temporarily stored or temporarily generated in a storage medium such as a memory of a server of a manufacturer, a server of an application store, or a relay server.
  • Each of the components may be composed of a singular or a plurality of entities, and some sub-components of the above-described sub-components may be omitted, or other sub-components may be various It may be further included in the embodiment.
  • some components eg, a module or a program
  • operations performed by a module, program, or other component may be sequentially, parallelly, repetitively or heuristically executed, or at least some operations may be executed in a different order, omitted, or other operations may be added.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Theoretical Computer Science (AREA)
  • Electromagnetism (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
  • Manipulator (AREA)

Abstract

본 개시에서는 로봇 및 그 제어 방법이 제공된다. 본 개시의 로봇은 뎁스 카메라, 구동부, 및 뎁스 카메라를 통해 촬영을 수행하여 뎁스 이미지를 획득하고, 뎁스 이미지의 복수의 픽셀의 뎁스 정보에 기초하여 복수의 픽셀에 대응되는 3D(three-dimensional) 공간 상의 복수의 3D 포인트를 생성하고, 복수의 3D 포인트 중 3D 공간 상에서 로봇의 주행하는 바닥면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별하고, 식별된 복수의 3D 포인트에 기초하여 로봇이 주행하도록 구동부를 제어하는 프로세서를 포함할 수 있다.

Description

로봇 및 그의 제어 방법
본 개시는 로봇 및 그의 제어 방법에 관한 것으로, 보다 상세하게는 뎁스 이미지를 이용하여 주행하는 로봇 및 그의 제어 방법에 관한 것이다.
CROSS-REFERENCE TO RELATED APPLICATIONS
본 출원은 2020년 9월 21일에 출원된 대한민국 특허출원 제 10-2020-0121772호에 기초하여 우선권을 주장하며, 해당 출원의 모든 내용은 그 전체가 본 출원에 레퍼런스로 포함된다.
최근 스스로 주행할 수 있는 로봇 및 그의 응용기술이 개발되고 있다. 로봇은 자율적으로 이동하기 위해 실시간으로 로봇의 위치를 추정함(Localization)과 동시에 지도를 작성(Mapping)하는 SLAM(Simultaneous Localization and Mapping) 기술을 사용하고 있다.
이를 위해, 로봇은 다양한 센서들을 이용하여 획득된 데이터를 통해 위치 추정을 수행할 수 있다. 이때, 위치 추정에는 일반적으로 카메라의 화각 내에 존재하는 공간을 평면으로 투영한 이미지를 획득하는 비전 센서와 360도 방향에 대해 물체와의 거리를 스캔한 데이터를 획득하는 라이다(Light Detection And Ranging, LiDAR)와 같은 거리 센서가 이용될 수 있다.
카메라 등의 비전 센서의 경우 가격이 저렴하고 센서의 소형화가 가능하다는 장점이 있으나, 데이터 처리에 많은 계산량이 요구되며, 로봇이 고속으로 이동하거나 회전할 경우에 획득되는 이미지에는 블러(blur)가 발생한다는 단점이 있다.
라이다 등의 거리 센서의 경우, 모터 등의 회전 기구를 통해 센서를 회전시켜 360도 방향에 대해 거리를 감지하는 등의 이유로 수명이 짧고, 가격이 고가이며, 센서의 소형화가 어렵다는 단점이 있다. 특히, 2D(two-dimensional) 라이다는 고정된 높이(라이다가 탑재된 높이)에 대해서만 거리를 감지할 수 있다는 점에서 로봇 주변의 다양한 환경 또는 객체를 감지하기에 어려움이 있으며, 다채널의 3D(three-dimensional) 라이다의 경우 비용이 매우 고가라는 점과 센서의 크기 및 무게가 크다는 단점이 있다.
이와 같은 센서들의 단점을 보완하여 로봇의 위치 추정을 수행하기 위한 방안이 요구되고 있다.
본 개시는 상술한 필요성에 의해 안출된 것으로, 본 개시의 목적은 뎁스 이미지를 이용하여 주행하는 로봇 및 그의 제어 방법을 제공함에 있다.
상기 목적을 달성하기 위한, 본 개시의 일 실시 예에 따른 로봇은 뎁스 카메라, 구동부, 및 뎁스 카메라를 통해 촬영을 수행하여 뎁스 이미지를 획득하고, 뎁스 이미지의 복수의 픽셀의 뎁스 정보에 기초하여 복수의 픽셀에 대응되는 3D(three-dimensional) 공간 상의 복수의 3D 포인트를 생성하고, 복수의 3D 포인트 중 3D 공간 상에서 로봇의 주행하는 바닥면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별하고, 식별된 복수의 3D 포인트에 기초하여 로봇이 주행하도록 구동부를 제어하는 프로세서를 포함할 수 있다.
프로세서는, 3D 공간 상의 복수의 3D 포인트의 분포에 기초하여, 3D 공간 상에서 로봇이 주행하는 바닥면을 판단할 수 있다.
프로세서는, 판단된 바닥면이 3D 공간 상의 기설정된 평면에 맵핑되도록, 3D 공간 상의 복수의 3D 포인트를 회전시키고, 회전된 복수의 3D 포인트 중 기설정된 평면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별할 수 있다.
기설정된 평면은, XYZ 축으로 정의되는 3D 공간 상의 xz 평면에 해당하고, 프로세서는, 회전된 복수의 3D 포인트 중 Y 축의 값이 기설정된 값을 갖는 복수의 3D 포인트를 식별할 수 있다.
프로세서는, 복수의 3D 포인트 중 바닥면을 기준으로 기설정된 높이 값을 포함하는 기설정된 임계 범위 내의 높이 값을 갖는 복수의 3D 포인트를 식별하고, 식별된 복수의 3D 포인트에 기초하여 로봇이 주행하도록 구동부를 제어할 수 있다.
프로세서는, 식별된 복수의 3D 포인트의 X 축의 값 및 Z 축의 값에 기초하여 식별된 복수의 3D 포인트를 2D 데이터로 변환하고, 2D 데이터에 기초하여 로봇이 주행하도록 구동부를 제어할 수 있다.
기설정된 높이 값은, 로봇의 높이 값에 기초하여 설정된 높이 값일 수 있다.
본 개시의 일 실시 예에 따른 로봇의 제어 방법에 있어서, 로봇에 구비된 뎁스 카메라를 통해 촬영을 수행하여 뎁스 이미지를 획득하는 단계, 뎁스 이미지의 복수의 픽셀의 뎁스 정보에 기초하여 복수의 픽셀에 대응되는 3D(three-dimensional) 공간 상의 복수의 3D 포인트를 생성하는 단계, 복수의 3D 포인트 중 3D 공간 상에서 로봇의 주행하는 바닥면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별하는 단계, 및 식별된 복수의 3D 포인트에 기초하여 로봇이 주행하도록 로봇에 구비된 구동부를 제어하는 단계를 포함할 수 있다.
식별하는 단계는, 3D 공간 상의 복수의 3D 포인트의 분포에 기초하여, 3D 공간 상에서 로봇이 주행하는 바닥면을 판단하는 단계를 포함할 수 있다.
식별하는 단계는, 판단된 바닥면이 3D 공간 상의 기설정된 평면에 맵핑되도록, 3D 공간 상의 복수의 3D 포인트를 회전시키고, 회전된 복수의 3D 포인트 중 기설정된 평면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별할 수 있다.
기설정된 평면은, XYZ 축으로 정의되는 3D 공간 상의 XZ 평면에 해당하고, 식별하는 단계는, 회전된 복수의 3D 포인트 중 Y 축의 값이 기설정된 값을 갖는 복수의 3D 포인트를 식별하는 것을 포함할 수 있다.
식별하는 단계는, 복수의 3D 포인트 중 바닥면을 기준으로 기설정된 높이 값을 포함하는 기설정된 임계 범위 내의 높이 값을 갖는 복수의 3D 포인트를 식별할 수 있다.
식별하는 단계는, 식별된 복수의 3D 포인트의 X 축의 값 및 Z 축의 값에 기초하여 식별된 복수의 3D 포인트를 2D 데이터로 변환하고, 제어하는 단계는, 2D 데이터에 기초하여 로봇이 주행하도록 구동부를 제어하는 것을 포함할 수 있다.
기설정된 높이 값은, 로봇의 높이 값에 기초하여 설정된 높이 값일 수 있다.
이상과 같은 본 개시의 다양한 실시 예에 따르면, 뎁스 이미지를 이용하여 주행하는 로봇 및 그의 제어 방법을 제공할 수 있다.
본 개시의 일 실시 예에 따르면, 라이다에 비해 특별한 제약 없이 다양한 높이에 대한 지도 데이터의 획득이 가능하고, 가격 경제성이 있으며, 센서의 소형화가 가능하다는 장점이 있다.
본 개시의 일 실시 예에 따르면, 로봇의 위치 추정을 위한 연산량을 감소시킬 수 있다. 또한, 블러의 발생을 최소화시키는 뎁스 이미지를 활용하여 로봇의 위치 추정에 대한 정확도를 향상시킬 수 있다.
도 1은 본 개시의 일 실시 예에 따른 로봇을 설명하기 위한 도면이다.
도 2는 본 개시의 일 실시 예에 따른 로봇의 구성을 설명하기 위한 블록도이다.
도 3a는 본 개시의 일 실시 예에 따른 뎁스 이미지를 통해 3D 포인트를 생성하는 방법을 설명하기 위한 도면이다.
도 3b는 본 개시의 일 실시 예에 따른 뎁스 이미지를 통해 3D 포인트를 생성하는 방법을 설명하기 위한 도면이다.
도 4a는 본 개시의 일 실시 예에 따른 바닥면을 식별하는 방법을 설명하기 위한 도면이다.
도 4b는 본 개시의 일 실시 예에 따른 바닥면을 식별하는 방법을 설명하기 위한 측면도이다.
도 5a는 본 개시의 일 실시 예에 따른 복수의 3D 포인트를 정렬하는 방법을 설명하기 위한 도면이다.
도 5b는 본 개시의 일 실시 예에 따른 복수의 3D 포인트를 정렬하는 방법을 설명하기 위한 정면도이다.
도 5c는 본 개시의 일 실시 예에 따른 복수의 3D 포인트를 정렬하는 방법을 설명하기 위한 측면도이다.
도 6a는 본 개시의 일 실시 예에 따른 특정한 높이의 3D 포인트를 식별하는 방법을 설명하기 위한 도면이다.
도 6b는 본 개시의 일 실시 예에 따른 특정한 높이의 3D 포인트를 식별하는 방법을 설명하기 위한 정면도 및 측면도이다.
도 7은 본 개시의 일 실시 예에 따른 2D 데이터를 생성하는 방법을 설명하기 위한 도면이다.
도 8은 본 개시의 일 실시 예에 따른 로봇의 부가적인 구성을 설명하기 위한 블록도이다.
도 9는 본 개시의 일 실시 예에 따른 흐름도를 설명하기 위한 도면이다.
본 개시를 설명함에 있어서, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 개시의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략한다. 덧붙여, 하기 실시 예는 여러 가지 다른 형태로 변형될 수 있으며, 본 개시의 기술적 사상의 범위가 하기 실시 예에 한정되는 것은 아니다. 오히려, 이들 실시 예는 본 개시를 더욱 충실하고 완전하게 하고, 당업자에게 본 개시의 기술적 사상을 완전하게 전달하기 위하여 제공되는 것이다.
본 개시에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 실시 예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 개시에서 사용된 "제1," "제2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 상기 구성요소들을 한정하지 않는다.
본 개시에서, "A 또는 B," "A 또는/및 B 중 적어도 하나," 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B," "A 및 B 중 적어도 하나," 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 개시에서 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "구성되다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제 3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 개시에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)," "~하는 능력을 가지는(having the capacity to)," "~하도록 설계된(designed to)," "~하도록 변경된(adapted to)," "~하도록 만들어진(made to)," 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. 대신, 어떤상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 상기 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 상기 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
도 1은 본 개시의 일 실시 예에 따른 로봇을 설명하기 위한 도면이다.
도 1을 참조하면, 본 개시의 일 실시 예에 따른 로봇(100)은 특정한 구역을 주행할 수 있는 장치이다. 이 경우, 로봇(100)은 특정한 구역을 이동하면서 사용자에게 특정한 서비스를 제공할 수 있다. 예를 들어, 로봇(100)은 청소 로봇, 수리 로봇, 탐사 로봇, 운송 로봇 등과 같이 다양한 서비스를 제공할 수 있는 장치로 구현될 수 있다.
로봇(100)은 다양한 센싱 데이터에 기초하여 다양한 주행 방식에 따라 주행할 수 있다. 센싱 데이터는 로봇(100)의 주변 환경을 센싱한 데이터로서 지도의 데이터로 활용될 수 있으며, 센싱 데이터는 뎁스 이미지를 포함할 수 있다. 또한, 센싱 데이터는 로봇(100)의 위치를 추정하거나 지도를 생성하는데 이용될 수 있다. 주행 방식은 인간 또는 동물과 같이 다리를 이용하는 보행형, 바퀴의 회전을 이용하는 바퀴형(또는 캐터필러형), 날개의 회전 또는 연료의 분사를 이용하는 비행형 등 중에서 적어도 하나를 포함할 수 있다.
본 개시의 일 실시 예에 따른 로봇(100)은 뎁스 이미지에 기초하여 특정한 높이에 대한 지도를 생성하고, 지도에 기초하여 주행할 수 있다.
구체적으로, 로봇(100)은 뎁스 카메라(110)를 통해 주변 환경에 대한 촬영을 수행하여 뎁스 이미지를 획득할 수 있다. 여기서, 뎁스 이미지는 복수의 픽셀 각각에 맵핑된 뎁스 정보를 포함할 수 있다. 뎁스 정보는 뎁스 카메라(110)의 위치 및 객체(200)의 위치 사이의 거리를 나타낼 수 있다. 예를 들어, 도 1과 같이 로봇(100)과 객체(200)가 동일한 축 상에 놓인 경우를 가정하면, 뎁스 이미지는 로봇(100)의 위치(예: 높이 y2의 위치) 및 객체(200)의 위치(예: 높이 y1, y2, y3의 위치) 사이의 거리(예: d1, d2, d3)를 나타내는 뎁스 정보를 포함할 수 있다. 이때, 객체(200)는 로봇(100)의 주변 환경에 존재하는 사물 또는 동물을 말하며, 예를 들어 벽, 문, 테이블, 의자, 카페트, 고양이, 사람 등을 의미할 수 있다.
그리고, 로봇(100)은 뎁스 이미지를 기초로 복수의 3D(three-dimensional; 3D) 포인트를 생성할 수 있다. 여기서, 3D 포인트는 가상의 3D 공간의 좌표(예: x, y, z의 좌표)로 정의되며, 3D 포인트의 좌표는 현실 공간의 위치에 대응될 수 있다. 또한, 뎁스 이미지를 기반으로 생성된(또는 변환된) 3D 포인트는 대응되는 위치에 어떤 객체가 존재한다는 정보를 나타낼 수 있다. 즉, 뎁스 이미지의 복수의 픽셀에 맵핑된 객체(200)와의 거리 및 각 픽셀 좌표를 이용하여, 객체(200)를 3D 공간 상에서 각각 특정한 위치를 갖는 복수의 3D 포인트로 생성할 수 있다. 이와 같이 로봇(100)은 뎁스 이미지를 복수의 3D 포인트로 변환할 수 있다. 이 경우, 복수의 3D 포인트는 포인트 클라우드(point cloud)라고 명명할 수 있다.
그리고, 로봇(100)은 복수의 3D 포인트 중에서 바닥면을 기준으로 기설정된 높이에 대한 복수의 3D 포인트를 식별하고, 식별된 복수의 3D 포인트를 기초로 주행할 수 있다.
여기서, 바닥면은 기설정된 높이에 대한 지도 데이터를 생성하기 위해 기준면으로 이용될 수 있다. 기설정된 높이는 로봇(100)의 높이일 수 있으나, 이는 일 실시 예일 뿐이며, 로봇(100)이 주행하는 환경을 고려한 높이로 설정될 수 있다. 예를 들어, 로봇(100)이 가정과 같은 환경에서 주행하는 청소 로봇 등인 경우에는, 기설정된 높이는 가정 내의 구조물 중 문턱(문지방)의 높이로 설정될 수 있다.
식별된 복수의 3D 포인트는 기설정된 높이에 대한 지도를 생성하거나, 지도 상에서 로봇(100)의 위치를 추정하는데 이용될 수 있다. 예를 들어, 로봇(100)은 주행하는 중에 뎁스 카메라(110)를 통해 시간에 따라 연속적으로 뎁스 이미지가 획득되면, 전술한 동작을 반복적으로 수행하여 뎁스 이미지에 대응되는 기설정된 높이의 복수의 3D 포인트를 식별하고, 시간에 따라 연속적으로 식별된 복수의 3D 포인트를 하나의 3D 공간에 정합함으로써 기설정된 높이에 대한 지도를 생성할 수 있다. 또한, 로봇(100)은 가장 최근에 획득된 뎁스 이미지에 대응되는 기설정된 높이의 복수의 3D 포인트를 식별하고, 기생성된 지도에서 식별된 복수의 3D 포인트와 일치하는 부분의 위치 및 배향을 판단하여 로봇(100)의 위치 및 배향을 추정할 수 있다.
이상과 같은 본 개시의 다양한 실시 예에 따르면, 뎁스 이미지를 이용하여 주행하는 로봇(100) 및 그의 제어 방법을 제공할 수 있다. 또한, 본 개시의 일 실시 예에 따르면, 라이다에 비해 특별한 제약 없이 다양한 높이에 대한 지도 데이터의 획득이 가능하고, 가격 경제성이 있으며, 센서의 소형화가 가능하다는 장점이 있다.
이하에서는 첨부된 도면을 참조하여 본 개시에 대해 보다 구체적으로 설명하도록 한다.
도 2는 본 개시의 일 실시 예에 따른 로봇의 구성을 설명하기 위한 블록도이다.
도 2를 참조하여, 본 개시의 일 실시 예에 따른 로봇(100)은 뎁스 카메라(110), 구동부(120) 및 프로세서(130)를 포함할 수 있다.
뎁스 카메라(110)는 뎁스 카메라(110)의 화각(Field of View; FoV) 내에 영역에 대한 촬영을 수행하여 뎁스 이미지를 획득할 수 있다.
여기서, 뎁스 이미지는 현실의 3D 공간이 2D 평면(즉, 이미지 평면)으로 투영된 복수의 픽셀을 포함할 수 있다. 복수의 픽셀은 2D 평면 상에 매트릭스 형태로 배열될 수 있으며, 각 픽셀의 위치 또는 각 픽셀의 좌표는 뎁스 카메라(110)의 위치를 중심으로 3D 공간 상의 방향을 나타낼 수 있다. 또한, 복수의 픽셀 각각에는 뎁스 정보가 맵핑될 수 있으며, 뎁스 정보는 뎁스 카메라(110)의 위치를 중심으로 픽셀의 위치에 대응되는 방향에 존재하는 객체(200)와의 거리를 나타낼 수 있다.
이를 위해, 뎁스 카메라(110)는 객체(200)에 의해 반사되어 수신되는 가시광 또는 신호를 이미지 센서로 포커싱하는 렌즈 및 가시광 또는 신호를 감지할 수 있는 이미지 센서를 포함할 수 있다. 여기서, 이미지 센서는 복수의 픽셀로 구분되는 2D의 픽셀 어레이를 포함할 수 있다.
뎁스 카메라(110)는 스테레오(Stereo) 방식, ToF(Time-Of-Flight) 방식, 구조광 방식 등으로 구현될 수 있다.
스테레오 방식은 사람의 눈처럼 2개의 카메라(또는 그 이상의 카메라)가 서로 다른 위치에서 객체(200)를 동시에 촬영하여 획득된 복수의 이미지의 시차(disparity)(즉, 복수의 이미지에 포함된 동일한 객체(200)에 대한 위치 차이)를 이용하여 객체(200)와의 거리(또는 뎁스)를 산출하는 방식을 나타낸다. ToF 방식은 신호(예: 적외선, 초음파, 레이저 등)를 방출한 시간 및 방출된 신호가 객체(200)에 의해 반사되어 검출된 시간의 차이 및 신호의 속도를 이용하여 객체(200)와의 거리(또는 뎁스)를 산출하는 방식을 나타낸다. 특히, ToF 방식은 객체(200)의 거리를 식별할 수 있는 거리가 길고, 전력 소모가 적으며, 부피가 작아 제품의 소형화가 가능하다는 장점이 있다. 구조광 방식은 가시광선, 적외선 등의 레이저와 같이 주변 조명과 구별되는 구조광을 객체(200)에 조사하고, 객체(200)에 의해 반사된 구조광의 왜곡을 검출하여 객체(200)와의 거리를 산출하는 방식을 나타낸다.
또한, 뎁스 카메라(110)는 복수의 픽셀 각각에 대해 뎁스 정보 및 색상 정보(즉, Red, Green, Blue의 색상 값)가 맵핑된 뎁스 이미지를 획득할 수 있는 RGB-D 카메라로 구현될 수도 있다.
한편, 뎁스 카메라(110)는 연속적인 촬영을 통해 복수의 뎁스 이미지를 순차적으로 획득할 수 있다. 이때, 뎁스 이미지 또는 뎁스 이미지와는 별도의 메타 데이터는 뎁스 카메라(110)에 의해 촬영된 시간, 프레임 레이트, 시점, 화각, 픽셀 해상도 및 픽셀 피치 중에서 적어도 하나에 대한 정보를 포함할 수 있다. 프레임 레이트(Frame Rate)는 1초당(또는 1분당) 획득되는 프레임의 수(이미지의 수)를 나타내며, 화각은 뎁스 카메라(110)의 렌즈의 초점 거리(focal length) 및 뎁스 카메라(110)의 이미지 센서의 크기(예: 대각 길이)에 따라 결정되는 값을 나타낼 수 있다. 또한, 시점은 뎁스 카메라(110)의 내부 또는 외부에 구비된 센서(예: 자이로 센서, 가속도 센서 등)에 의해 감지될 수 있다. 다만, 이는 일 실시 예일 뿐이며, 시점은 복수의 3D 포인트를 정합하여 생성된 지도 상에서 뎁스 이미지에 기초하여 생성된 복수의 3D 포인트와 일치하는 부분을 식별하고 이들의 틀어진 정도를 이용하여 식별될 수 있다. 픽셀 해상도는 예를 들어 640 * 480과 같이 가로 방향으로 배치된 픽셀의 수(예: 640 개) 및 세로 방향으로 배치된 픽셀의 수(예: 480 개)를 나타내며, 픽셀 피치는 인접한 픽셀 간의 이격된 거리(예: 50um 등)를 나타낼 수 있다.
한편, 본 개시의 일 실시 예에 따른 뎁스 카메라(110)는 글로벌 셔터 방식에 따라 촬영을 수행하여 뎁스 이미지를 획득할 수 있다. 글로벌 셔터는 이미지 센서의 전체를 동시에 노출시킨 후 한꺼번에 닫아버려 촬영을 수행하는 방식이며, 한 프레임(frame)의 촬영 시점이 동일하기 때문에 시차에 따른 왜곡이 발생하지 않을 수 있다. 즉, 획득되는 뎁스 이미지에서 블러를 포함하는 왜곡이 발생되는 것을 방지할 수 있다.
이와 달리, 롤링 셔터는 이미지 센서의 수평 라인(line) 또는 수직 라인 별로 순차적으로 노출을 달리하여 촬영을 수행하는 방식이며, 빠르게 움직이는 객체의 경우 이러한 방식을 통해 획득된 뎁스 이미지가 왜곡될 수 있다. 다만, 본 개시에서는 경제성, 소형화 등의 다양한 이유로 뎁스 카메라(110)에 이러한 롤링 셔터 방식이 적용되는 것을 배제하는 것은 아니라고 할 것이다.
구동부(120)는 로봇(100)을 주행시킬 수 있는 장치이며, 프로세서(130)의 제어에 따라 구동부(120)는 주행 방향 및 주행 속도를 조절할 수 있다. 이를 위해, 구동부(120)는 로봇(100)이 주행하기 위한 동력을 발생시키는 동력발생장치(예: 사용 연료(또는 에너지원)에 따라 가솔린 엔진(engine), 디젤 엔진, LPG(liquefied petroleum gas) 엔진, 전기 모터 등), 주행 방향을 조절하기 위한 조향 장치(예: 기계식 스티어링(manual steering), 유압식 스티어링(hydraulics steering), 전자식 스티어링(electronic control power steering; EPS) 등), 동력에 따라 로봇(100)을 주행시키는 주행 장치(예: 바퀴, 프로펠러 등) 등을 포함할 수 있다. 여기서, 구동부(120)는 로봇(100)의 주행 타입(예: 휠 타입, 보행 타입, 비행 타입 등)에 따라 변형 실시될 수 있다.
프로세서(130)는 뎁스 카메라(110)를 통해 촬영을 수행하여 뎁스 이미지를 획득하고, 뎁스 이미지의 복수의 픽셀의 뎁스 정보에 기초하여 복수의 픽셀에 대응되는 3D(three-dimensional) 공간 상의 복수의 3D 포인트를 생성하고, 복수의 3D 포인트 중 3D 공간 상에서 로봇(100)의 주행하는 바닥면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별하고, 식별된 복수의 3D 포인트에 기초하여 로봇(100)이 주행하도록 구동부(120)를 제어할 수 있다.
구체적으로, 프로세서(130)는 뎁스 카메라(110)를 통해 촬영을 수행하여 뎁스 이미지를 획득할 수 있다. 프로세서(130)는 뎁스 이미지의 복수의 픽셀의 뎁스 정보에 기초하여 복수의 픽셀에 대응되는 3D 공간 상의 복수의 3D 포인트를 생성할 수 있다. 이는 도 3a 및 도 3b를 참조하여 구체적으로 설명하도록 한다.
그리고, 프로세서(130)는 복수의 3D 포인트 중 3D 공간 상에서 로봇(100)의 주행하는 바닥면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별할 수 있다.
구체적인 일 실시 예로서, 프로세서(130)는 3D 공간 상의 복수의 3D 포인트의 분포에 기초하여, 3D 공간 상에서 로봇(100)이 주행하는 바닥면을 판단할 수 있다. 이는 도 4a 및 도 4b를 참조하여 구체적으로 설명하도록 한다.
여기서, 프로세서(130)는 판단된 바닥면이 3D 공간 상의 기설정된 평면에 맵핑되도록, 3D 공간 상의 복수의 3D 포인트를 회전시킬 수 있다. 이 경우, 기설정된 평면은 XYZ 축으로 정의되는 3D 공간 상의 XZ 평면에 해당할 수 있다. 이는 도 5a 내지 도 5c를 참조하여 구체적으로 설명하도록 한다.
여기서, 프로세서(130)는 회전된 복수의 3D 포인트 중 기설정된 평면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별할 수 있다. 이 경우, 프로세서(130)는 회전된 복수의 3D 포인트 중 Y 축의 값이 기설정된 값을 갖는 복수의 3D 포인트를 식별할 수 있다. 이는 도 6a 및 도 6b를 참조하여 구체적으로 설명하도록 한다.
그리고, 프로세서(130)는 식별된 복수의 3D 포인트에 기초하여 로봇(100)이 주행하도록 구동부(120)를 제어할 수 있다.
일 실시 예로서, 프로세서(130)는 식별된 복수의 3D 포인트의 X 축의 값 및 Z 축의 값에 기초하여 식별된 복수의 3D 포인트를 2D 데이터로 변환할 수 있다. 그리고, 프로세서(130)는 2D 데이터에 기초하여 로봇(100)이 주행하도록 구동부(120)를 제어할 수 있다. 이는 도 7을 참조하여 구체적으로 설명하도록 한다.
한편 본 개시의 일 실시 예로서, 프로세서(130)는 복수의 3D 포인트 중 바닥면을 기준으로 기설정된 높이 값을 포함하는 기설정된 임계 범위 내의 높이 값을 갖는 복수의 3D 포인트를 식별할 수 있다. 이 경우, 프로세서(130)는 식별된 복수의 3D 포인트에 기초하여 로봇(100)이 주행하도록 구동부(120)를 제어할 수 있다.
도 3a 및 도 3b는 본 개시의 일 실시 예에 따른 뎁스 이미지를 통해 3D 포인트를 생성하는 방법을 설명하기 위한 도면이다.
도 3a의 (1)을 참조하면, 본 개시의 일 실시 예에 따른 프로세서(130)는 뎁스 카메라(110)를 통해 촬영을 수행하여 뎁스 이미지(310)를 획득할 수 있다. 여기서, 뎁스 이미지(310)는 픽셀 단위로 맵핑된 뎁스 정보를 포함할 수 있다.
일 실시 예로서, 뎁스 이미지(310)는 매트릭스 형태로 배열된 데이터로 구현될 수 있다. 여기서, 뎁스 이미지(310)에서 열은 픽셀의 x축의 좌표를 나타내고, 뎁스 이미지(310)에서 행은 픽셀의 y축의 좌표를 나타낼 수 있다. 뎁스 이미지(310)에서 특정한 행과 열에 맵핑된 값은 해당 좌표를 갖는 픽셀에 맵핑된 뎁스 정보일 수 있다. 예를 들어, 뎁스 이미지(310)에 포함되는 복수의 픽셀(예: 640 * 480 의 픽셀) 중에서 (1, 1) 픽셀에는 1미터, (1, 2) 픽셀에는 1.2미터와 같은 뎁스 정보가 맵핑되어 저장될 수 있다.
도 3a의 (2)를 참조하면, 프로세서(130)는 뎁스 이미지(310)에 포함된 복수의 픽셀의 뎁스 정보 및 픽셀의 좌표에 기초하여, 3D 공간 상에서 복수의 3D 포인트(320)를 생성할 수 있다. 여기서, 복수의 3D 포인트(320) 각각은 뎁스 이미지(310)의 각 픽셀에 대응될 수 있다. 3D 포인트는 X축, Y축 및 Z축의 좌표계를 갖는 3D 공간 상에서 위치하며, 3D 포인트의 위치는 객체(200)가 존재하는 위치에 대응될 수 있다.
이하에서는, 복수의 3D 포인트(320)를 생성하는 과정을 대표하여 복수의 3D 포인트(320) 중 하나인 제1 3D 포인트를 생성하는 과정을 설명하도록 한다. 예를 들어, 프로세서(130)는 뎁스 이미지(310)에 포함된 제1 픽셀에 매핑된 좌표(예: (x1, y1)) 및 뎁스 정보(예: d1)에 기초하여, 다음과 같은 수학식 1에 따른 위치(X1, Y1, Z1)를 갖는 제1 3D 포인트를 생성할 수 있다.
Figure PCTKR2021011019-appb-img-000001
여기서, 3D 공간은 뎁스 카메라(110)의 렌즈의 중심을 기준으로 뎁스 카메라(110)의 수평 방향을 X축으로, 뎁스 카메라(110)의 수직 방향을 Y축으로, 광학축 방향을 Z축으로 설정한 것이다.
여기서, x1, y1는 뎁스 이미지(310)의 픽셀의 행 좌표 및 열 좌표를 나타내며, d1는 해당 픽셀에 맵핑된 뎁스 정보를 나타낸다. 또한, fx, fy는 X축과 Y축에 대한 뎁스 카메라(110)의 초점거리(focal length)를 나타내며, cx, cy는 X축과 Y축에 대한 주점(principal point)의 위치를 나타내며, 이는 뎁스 카메라(110) 내부 또는 외부의 메모리에 기저장된 정보일 수 있다.
이와 같은 동작에 의해 도 3b의 (1)의 뎁스 이미지(310F)에 포함된 복수의 픽셀에 맵핑된 좌표 및 뎁스 정보에 따라, 도 3b의 (2)의 복수의 3D 포인트(320F)가 생성될 수 있다. 여기서, 복수의 3D 포인트(320F)는 도 3b의 (1)와 같이 각 픽셀에 맵핑된 뎁스 정보를 시각적으로 표현하는 이미지 형태로 구현될 수 있다. 이때, 뎁스 정보는 객체(200)와의 거리에 대응되는 명암 값(또는 그레이스케일)을 포함할 수 있다.
한편, 상술한 예는 일 실시 예일 뿐, 프로세서(130)는 다양한 기하학적인 관계 또는 다양한 알고리즘을 통해 뎁스 이미지(310)에 포함된 픽셀의 좌표 및 뎁스 정보에 기초하여 3D 포인트를 생성할 수 있다. 또한, 상술한 동작은 프로세서(130)에서 수행하는 것으로 기술하였으나 이는 일 실시 예일 뿐이며, 뎁스 이미지(310)를 기초로 복수의 3D 포인트를 생성하는 동작은 뎁스 카메라(110) 내부에서 수행되는 것 또한 가능하다.
한편, 상술한 복수의 3D 포인트의 높이는 일반적으로 Y축의 값이 될 수 있다. 다만, 바닥면이 기울어져 있거나, 바닥면의 높이가 0미터가 아닌 값으로 측정될 가능성이 존재한다는 점에서, 특정한 높이의 3D 포인트를 추출하기 위해서는 높이를 판단하는 기준이 되는 바닥면을 식별하는 과정이 요구될 수 있다. 이하에서는 바닥면을 식별하는 방법에 대해 도 4a 및 도 4b를 참조하여 구체적으로 설명하기로 한다.
도 4a 및 도 4b는 본 개시의 일 실시 예에 따른 바닥면을 식별하는 방법을 설명하기 위한 도면이다. 도 4b는 도 4a의 제1 평면(430G)를 측면에서 바라본 도면이다.
도 4a를 참조하여, 프로세서(130)는 3D 공간 상의 복수의 3D 포인트(420)의 분포에 기초하여, 3D 공간 상에서 로봇(100)이 주행하는 바닥면(430G)을 판단할 수 있다.
예를 들어, 프로세서(130)는 복수의 3D 포인트(420) 중에서 랜덤으로 복수의 3D 포인트(예: 3개의 3D 포인트)를 선정할 수 있다. 그리고, 프로세서(130)는 3개의 3D 포인트의 위치와 다음과 같은 수학식 2를 통해 제1 평면(430G)을 식별할 수 있다.
Figure PCTKR2021011019-appb-img-000002
여기서, <A, B, C>는 제1 평면(430G)에 수직하는 법선 벡터 n을 나타낼 수 있다. A, B, C, D의 값은 다양한 방식을 통해 구할 수 있다. 예를 들어, 제1 3D 포인트가 (X1, Y1, Z1)에 위치하고, 제2 3D 포인트가 (X2, Y2, Z2)에 위치하고, 제3 3D 포인트가 (X3, Y3, Z3)에 위치하는 경우를 가정하고, 제1 내지 제3 3D 포인트를 수학식 2의 X, Y, Z에 각각 대입하여 연립 방정식을 풀면, 그 결과로 A, B, C, D의 값을 구할 수 있다.
도 4b를 참조하여, 프로세서(130)는 복수의 3D 포인트(420) 중에서 제1 평면(430G)과의 거리가 기설정된 거리(예: t) 이내에 위치한 3D 포인트를 정상점(inlier)로 간주하고, 이들을 제외한 나머지 3D 포인트는 이상점(Outlier)으로 간주할 수 있다. 프로세서(130)는 정상점으로 식별된 3D 포인트의 분포(즉, 개수)를 산출하여 메모리에 저장할 수 있다.
프로세서(130)는 상술한 동작을 반복하여 랜덤으로 식별된 제2 내지 제n 평면(n은 2 이상의 자연수)에 대한 정상점의 분포를 산출할 수 있다. 그리고, 프로세서(130)는 제1 평면(430G) 내지 제n 평면에 대한 정상점의 분포 중에서 가장 큰 분포를 갖는 평면을 바닥면으로 판단할 수 있다.
한편, 본 개시의 일 실시 예에 따른 프로세서(130)는 랜덤으로 3D 포인트를 선정할 경우에, 복수의 3D 포인트(420) 중에서 Y 값이 기설정된 값 이하인 3D 포인트를 식별하고, 식별된 3D 포인트 중에서 랜덤으로 3D 포인트를 선정할 수 있다. 이는 바닥면이 대부분 아래 쪽에 위치하는 것이 일반적이라는 점을 고려하여 바닥면 판단 과정에 대한 연산 횟수를 줄일 수 있는 효과가 있다.
한편, 상술한 실시 예는 일 실시 예일 뿐이며, 프로세서(130)는 RANSAC(Random sample consensus), 고유치 분석 등의 다양한 알고리즘을 통해 바닥면을 판단할 수 있다.
그리고, 프로세서(130)는 바닥면을 기준으로 기설정된 높이 값을 갖는 3D 포인트를 식별하기 위해, 바닥면을 기준으로 복수의 3D 포인트를 정렬할 수 있다. 즉, 바닥면에 해당하는 3D 포인트들이 Y축의 값이 0이 되도록, 전체 3D 포인트를 정렬할 수 있다. 이는 도 5a 내지 도 5c를 참조하여 구체적으로 설명하도록 한다.
도 5a 내지 도 5c는 본 개시의 일 실시 예에 따른 복수의 3D 포인트를 정렬하는 방법을 설명하기 위한 도면이다.
도 5a의 (1)을 참조하면, 프로세서(130)는 판단된 바닥면(530G)이 3D 공간 상의 기설정된 평면(G')에 맵핑되도록, 3D 공간 상의 복수의 3D 포인트(520)를 회전시킬 수 있다.
여기서, 기설정된 평면(G')은 XYZ 축으로 정의되는 3D 공간 상의 XZ 평면에 해당할 수 있다. 여기서, XZ 평면은 Y=0과 같이 Y축의 값이 0을 갖는 평면이다.
구체적으로, 프로세서(130)는 판단된 바닥면(530G)에 수직하는 법선 벡터 n 및 Y축의 방향 벡터를 벡터의 내적 또는 외적 등의 다양한 방식을 이용하여, 법선 벡터 n 및 Y축의 방향 벡터 사이의 각도 θ를 산출할 수 있다. 그리고, 프로세서(130)는 법선 벡터 n 및 Y축의 방향 벡터 사이의 각도 θ가 0이 되도록 복수의 3D 포인트(520) 전체를 회전시킬 수 있다.
이 경우, 복수의 포인트(540) 및 바닥면(540G)은 도 5a의 (2)와 같이 회전을 통해 정렬될 수 있다. 이때, 3D 포인트의 Y축의 값은 바닥면(540G)을 기준으로 하는 객체의 높이를 나타낼 수 있다.
도 5b 및 도 5c를 참조하여, 본 개시의 일 실시 예에 따라 복수의 3D 포인트가 정렬되는 예를 설명하기로 한다. 도 5b는 복수의 3D 포인트를 객체의 정면 방향에서 나타낸 것이며, 도 5c는 복수의 3D 포인트를 객체의 측면 방향에서 나타낸 것이다.
예를 들어, 도 5b의 (1) 및 도 5c의 (1)과 같이 뎁스 이미지에 기초하여 생성된 복수의 3D 포인트(520F, 520S) 중에서 바닥면(530G)이 판단된 경우를 가정하면, 바닥면(530G)은 Y축의 값이 0을 갖는 평면에 맵핑될 수 있다. 이 경우, 도 5b의 (2) 및 도 5c의 (2)와 같이 바닥면(540G)은 Y축의 값이 0을 갖는 평면에 맵핑된 상태로 복수의 3D 포인트(540F, 540S)가 정렬될 수 있다.
그리고, 프로세서(130)는 복수의 3D 포인트 중 3D 공간 상에서 로봇(100)의 주행하는 바닥면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별할 수 있다. 이는 도 6a 및 도 6b를 참조하여 구체적으로 설명하도록 한다.
도 6a 및 6b는 본 개시의 일 실시 예에 따른 특정한 높이의 3D 포인트를 식별하는 방법을 설명하기 위한 도면이다.
도 6a를 참조하여, 프로세서(130)는 회전된 복수의 3D 포인트(640) 중에서 기설정된 평면(G')을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별할 수 있다. 이때, 복수의 3D 포인트(640)는 바닥면(640G)이 3D 공간 상의 기설정된 평면(G')에 맵핑되도록 회전된 것이다.
여기서, 기설정된 평면(G')은 바닥면(640G)과 동일한 XZ 평면(Y=0인 평면)에 해당할 수 있다. 식별된 복수의 3D 포인트는 로봇(100)의 바닥면을 기준으로 기설정된 높이 값을 갖는 평면에서의 객체의 위치를 나타낼 수 있다.
즉, 프로세서(130)는 회전된 복수의 3D 포인트(640) 중 Y 축의 값이 기설정된 값을 갖는 복수의 3D 포인트를 식별할 수 있다. 예를 들어, Y 축의 값이 기설정된 값 h를 갖는 복수의 3D 포인트는 Y=h인 H 평면(650H) 상에 위치하는 3D 포인트이다.
상술한 바닥면(640G)를 기준으로 기설정된 높이 값을 갖는 H 평면(650H) 상에 위치한 3D 포인트를 식별하는 일 실시 예는 도 6b의 (1) 및 (2)에 도시된 바와 같이 나타날 수 있다. 도 6b의 (1)는 복수의 3D 포인트를 객체의 정면 방향에서 나타낸 것이며, 도 6b의 (2)는 복수의 3D 포인트를 객체의 측면 방향에서 나타낸 것이다.
한편, 일 실시 예로서, 기설정된 높이 값은 로봇(100)의 높이에 기초한 값일 수 있다. 예를 들어, 기설정된 높이 값은 0 이상 및 로봇(100)의 높이 값 이하인 범위 내의 값일 수 있다. 이는 로봇(100)의 위치 추정 또는 로봇(100)과 충돌가능한 객체의 위치를 판단하기 위한 것이다.
다른 실시 예로서, 기설정된 높이 값은 사람의 키에 기초한 높이 값일 수 있다. 예를 들어, 기설정된 높이 값은 일반적인 사람의 키보다 큰 높이 값(예: 2미터)에 대응되는 Y 값일 수 있다. 이는, 동적인 객체를 배제하여 실내 구조를 파악함으로써 로봇(100)의 위치 추정을 보다 정확하게 수행하기 위함이다.
나아가, 기설정된 높이 값은 하나의 값으로 설정된 것으로 설명하였으나, 이는 일 실시 예일 뿐이며, 기설정된 높이 값은 복수의 값으로 설정될 수도 있다. 이 경우, 각각의 높이 값에 대한 3D 포인트는 로봇(100)의 위치 추정에 이용될 수 있다.
한편, 상술한 기설정된 높이 값에 대한 실시 예들은 일 실시 예일 뿐 다양한 변형 실시 예가 가능하다 할 것이다.
한편 본 개시의 일 실시 예로서, 프로세서(130)는 복수의 3D 포인트 중 바닥면을 기준으로 기설정된 높이 값을 포함하는 기설정된 임계 범위 내의 높이 값을 갖는 복수의 3D 포인트를 식별할 수 있다. 예를 들어, 기설정된 임계 범위 내의 높이 값은 기설정된 높이 값 h를 기준으로 기설정된 임계 값 a를 뺀 h-a 및 기설정된 임계 값 a를 더한 h+a 사이의 높이 값을 나타낼 수 있다. 즉, 기설정된 임계 범위 내의 높이 값은 h-a 이상 및 h+a 미만 범위의 값일 수 있다.
그리고, 프로세서(130)는 식별된 복수의 3D 포인트에 기초하여 로봇(100)이 주행하도록 구동부(120)를 제어할 수 있다. 이는 도 7을 참조하여 함께 설명하도록 한다.
도 7은 본 개시의 일 실시 예에 따른 2D 데이터를 생성하는 방법을 설명하기 위한 도면이다. 도 7의 (1)은 정렬된 복수의 3D 포인트(740T)를 XZ 평면 상에 투영한 탑뷰로 나타낸 것이며, 도 7의 (2)는 기설정된 높이를 갖는 복수의 3D 포인트(750T)를 XZ 평면 상에 투영한 탑뷰로 나타낸 것이다.
도 7의 (1) 및 (2)를 참조하면, 프로세서(130)는 정렬된 복수의 3D 포인트(740T) 중에서 식별된 기설정된 높이를 갖는 복수의 3D 포인트(750T)의 X 축의 값 및 Z 축의 값에 기초하여 식별된 복수의 3D 포인트(750T)를 2D 데이터로 변환할 수 있다. 예를 들어, 프로세서(130)는 기설정된 높이 h를 갖는 3D 포인트의 (X, h, Z) 값 중에서 Y축의 값인 h를 생략(또는 제거)하여 X축 및 Z축의 값인 (X, Z)을 갖는 2D 포인트로 변환할 수 있다. 즉, 2D 데이터는 복수의 2D 포인트를 포함할 수 있다. 또한 2D 데이터는 높이에 대한 정보를 포함할 수 있다. 이러한 2D 데이터는 2D 라이다 센서의 출력 값(또는 입력 값 등)과 동일한 포맷으로 변환됨으로써 2D 라이다 기반의 SLAM으로 활용될 수 있다.
그리고, 프로세서(130)는 2D 데이터에 기초하여 로봇(100)이 주행하도록 구동부(120)를 제어할 수 있다.
구체적으로, 프로세서(130)는 주기적으로 획득되는 뎁스 이미지에 기초하여 복수의 3D 포인트를 생성하고, 정렬된 복수의 3D 포인트 중에서 기설정된 높이를 갖는 복수의 3D 포인트를 식별하고, 식별된 복수의 3D 포인트를 2D 데이터로 변환할 수 있다. 이 경우, 프로세서(130)는 주기적으로 변환된 2D 데이터를 정합하여 2D 지도로 생성(또는 업데이트)할 수 있다.
또한, 프로세서(130)는 현재(또는 가장 최근 시간에) 획득된 뎁스 이미지에 기초하여 복수의 3D 포인트를 생성하고, 정렬된 복수의 3D 포인트 중에서 기설정된 높이를 갖는 복수의 3D 포인트를 식별하고, 식별된 복수의 3D 포인트를 2D 데이터로 변환할 수 있다. 이 경우, 프로세서(130)는 현재(또는 가장 최근 시간에) 변환된 2D 데이터를 2D 지도와 비교하여, 2D 지도 상에서의 로봇(100)의 위치를 식별할 수 있다.
본 개시의 일 실시 예에 따른 프로세서(130)는 상술한 상술한 2D 지도를 생성하는 동작 및 위치를 추정하는 동작을 동시에 수행할 수 있다.
그리고, 프로세서(130)는 2D 지도 상에서 로봇(100)의 위치로부터 목적지까지의 주행 경로를 결정(또는 계획)할 수 있다. 이때, 최단 거리의 주행 경로를 탐색하는 알고리즘, 주행 방향의 전환을 최소화하는 경로를 탐색하는 알고리즘 등의 다양한 경로 탐색 알고리즘이 이용될 수 있다.
그리고, 프로세서(130)는 주행 경로를 따라 목적지까지 주행하도록 구동부(120)를 제어할 수 있다.
이상과 같은 본 개시의 다양한 실시 예에 따르면, 뎁스 이미지를 이용하여 주행하는 로봇 및 그의 제어 방법을 제공할 수 있다.
또한, 뎁스 이미지를 활용한다는 점에서 라이다에 비해 특별한 제약 없이 다양한 높이에 대한 지도 데이터의 획득이 가능하다. 또한, 뎁스 이미지를 획득할 수 있는 뎁스 카메라(110)의 경우 라이다에 비해 가격 경제성이 있으며, 센서의 소형화가 가능하다는 장점이 있다.
또한, 뎁스 이미지에 기초하여 생성된 복수의 3D 포인트 전부를 처리하는 것이 아니라, 특정한 높이를 갖는 복수의 3D 포인트를 처리한다는 점에서 연산량를 감소시킬 수 있다.
도 8은 본 개시의 일 실시 예에 따른 로봇의 부가적인 구성을 설명하기 위한 블록도이다.
도 8을 참조하면, 본 개시의 일 실시 예에 따른 로봇(100)은 뎁스 카메라(110), 구동부(120) 및 프로세서(130) 외에도, 입력 인터페이스(140), 출력 인터페이스(150), 메모리(160), 센서(170), 통신부(180) 및 전원부(190) 중에서 적어도 하나를 더 포함할 수 있다. 도 2에서 설명한 내용과 중복되는 내용은 생략하기로 한다.
프로세서(130)는 CPU(Central Processing Unit), AP(Application Processor) 등과 같은 범용 프로세서, GPU(Graphic Processing Unit), VPU(Vision Processing Unit) 등과 같은 그래픽 전용 프로세서, NPU(Neural Processing Unit)와 같은 인공지능 전용 프로세서 등으로 구현될 수 있다. 또한, 프로세서(130)는 적어도 하나의 인스트럭션 또는 모듈을 로드하기 위한 휘발성 메모리를 포함할 수 있다.
입력 인터페이스(140)는 다양한 사용자 명령을 수신하여 프로세서(130)로 전달할 수 있다. 즉, 프로세서(130)는 입력 인터페이스(140)를 통해 사용자로부터 입력된 사용자 명령을 인지할 수 있다. 여기서, 사용자 명령은 사용자의 터치 입력(터치 패널), 키(키보드) 또는 버튼(물리 버튼 또는 마우스 등) 입력, 사용자 음성(마이크) 등 다양한 방식으로 구현될 수 있다.
출력 인터페이스(150)는 정보를 출력할 수 있는 구성이며, 예를 들어 디스플레이, 또는 스피커 등으로 구현될 수 있다. 디스플레이는 정보 또는 데이터를 시각적인 형태로 출력하는 장치이다. 디스플레이는 이미지 프레임을 픽셀로 구동될 수 있는 디스플레이의 일 영역 또는 전체 영역에 표시할 수 있다. 디스플레이의 적어도 일부는 플렉서블 디스플레이(flexible display)의 형태로 로봇(100)의 전면 영역 및, 측면 영역 및 후면 영역 중 적어도 하나에 결합될 수도 있다. 플렉서블 디스플레이는 종이처럼 얇고 유연한 기판을 통해 손상 없이 휘거나 구부리거나 말 수 있는 것을 특징으로 할 수 있다. 스피커는 오디오 처리부(미도시)에 의해 디코딩이나 증폭, 노이즈 필터링과 같은 다양한 처리 작업이 수행된 각종 오디오 데이터뿐만 아니라 각종 알림음이나 음성 메시지를 직접 소리로 출력할 수 있다.
메모리(160)는 로봇(100)의 구성요소들의 전반적인 동작을 제어하기 위한 운영체제(OS: Operating System) 및 로봇(100)의 구성요소와 관련된 다양한 데이터를 저장하기 위한 구성이다.
이를 위해, 메모리(160)는 데이터 또는 정보를 일시적 또는 영구적으로 저장하는 하드웨어로 구성될 수 있다. 예를 들어, 메모리(160)는 비휘발성 메모리, 휘발성 메모리, 플래시메모리(Flash Memory), 하드디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD), RAM, ROM 등 중에서 적어도 하나의 하드웨어로 구현될 수 있다.
메모리(160)에는 로봇(100) 또는 프로세서(130)의 동작에 필요한 적어도 하나의 인스트럭션(instruction), 프로그램 또는 데이터가 저장될 수 있다. 여기서, 인스트럭션은 로봇(100) 또는 프로세서(130)의 동작을 지시하는 부호 단위로서, 컴퓨터가 이해할 수 있는 언어인 기계어로 작성된 것일 수 있다. 프로그램은 작업 단위의 특정 작업을 수행하는 일련의 인스트럭션의 집합체(instruction set)일 수 있다. 데이터는 문자, 수, 영상 등을 나타낼 수 있는 비트 또는 바이트 단위의 상태 정보일 수 있다.
센서(170)는 카메라, 마이크, 근접 센서, 조도 센서, 모션 센서, ToF 센서, GPS 센서 등 다양한 센서로 구현될 수 있다. 예를 들어, 카메라는 빛을 픽셀 단위로 구분하고, 각 픽셀마다 R(Red), G(Green), B(Blue) 색상에 대한 빛의 세기를 감지하여, 빛의 세기를 전기적 신호로 변환하여 객체의 색상, 형상, 명암 등을 표현하는 데이터를 획득할 수 있다. 이때, 데이터의 타입은 복수의 픽셀 각각에 대해 R, G, B 색상 값을 갖는 이미지일 수 있다. 마이크는 사용자의 음성과 같은 음파를 감지하여, 음파를 전기적 신호로 변환하여 데이터를 획득할 수 있다. 이때, 데이터의 타입은 다양한 포맷의 오디오 신호일 수 있다. 근접 센서(proximity sensor)는 주변 물체의 존재를 감지하여, 주변 물체의 존재 여부 또는 주변 물체의 근접 여부에 대한 데이터를 획득할 수 있다. 조도 센서는 로봇(100)의 주변 환경에 대한 광량(또는 밝기)을 감지하여, 조도에 대한 데이터를 획득할 수 있다. 모션 센서는 로봇(100)의 이동 거리, 이동 방향, 기울기 등을 감지할 수 있다. 이를 위해, 모션 센서는 가속도 센서, 자이로(gyro) 센서, 지자기 센서 등의 결합으로 구현될 수 있다. TOF(Time Of Flight) 센서는 특정한 속도를 갖는 다양한 전자기파(예: 초음파, 적외선, 레이저, UWB(Ultra-Wideband) 등)를 방출한 후 되돌아오는 비행 시간을 감지하여, 대상과의 거리(또는 위치)에 대한 데이터를 획득할 수 있다. GPS(Global Positioning System) 센서는 복수의 위성으로부터 전파 신호를 수신하고, 수신된 신호의 전달 시간을 이용하여 각 위성과의 거리를 각각 산출하고, 산출된 거리를 삼각측량을 이용하여 로봇(100)의 현재 위치에 대한 데이터를 획득할 수 있다. 다만, 상술한 센서(170)의 구현 예는 일 실시 예일 뿐이며, 이에 제한되지 아니하고 다양한 유형의 센서로 구현되는 것이 가능하다 할 것이다.
통신부(180)는 다양한 유형의 통신 방식에 따라 다양한 유형의 외부 장치와 통신을 수행하여 다양한 유형의 데이터를 송수신할 수 있다. 통신부(180)는 다양한 방식의 무선 통신을 수행하는 회로로서 블루투스 모듈(블루투스 방식), 와이파이 모듈(와이파이 방식), 무선 통신 모듈(3G, 4G, 5G 등의 셀룰러 방식), NFC 모듈(NFC 방식), IR 모듈(적외선 방식), Zigbee 모듈(Zigbee 방식) 및 초음파 모듈(초음파 방식) 등과 유선 통신을 수행하는 이더넷 모듈, USB 모듈, HDMI(High Definition Multimedia Interface), DP(DisplayPort), D-SUB(D-subminiature), DVI(Digital Visual Interface), 썬더볼트(Thunderbolt) 및 컴포넌트 중 적어도 하나를 포함할 수 있다.
전원부(190)는 로봇(100)의 각 구성에 대해 전원을 공급할 수 있다. 예를 들어, 전원부(190)는 외부 상용 전원에 의해 충전 가능한 배터리를 포함할 수 있다.
도 9는 본 개시의 일 실시 예에 따른 흐름도를 설명하기 위한 도면이다.
도 9를 참조하여, 로봇(100)의 제어 방법은 로봇(100)에 구비된 뎁스 카메라(110)를 통해 촬영을 수행하여 뎁스 이미지를 획득하는 단계(S910), 뎁스 이미지의 복수의 픽셀의 뎁스 정보에 기초하여 복수의 픽셀에 대응되는 3D(three-dimensional) 공간 상의 복수의 3D 포인트를 생성하는 단계(S920), 복수의 3D 포인트 중 3D 공간 상에서 로봇(100)의 주행하는 바닥면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별하는 단계(S930), 및 식별된 복수의 3D 포인트에 기초하여 로봇(100)이 주행하도록 로봇(100)에 구비된 구동부(120)를 제어하는 단계(S940)를 포함할 수 있다.
구체적으로, 로봇(100)의 제어 방법은 먼저 로봇(100)에 구비된 뎁스 카메라(110)를 통해 촬영을 수행하여 뎁스 이미지를 획득할 수 있다(S910).
다음으로, 뎁스 이미지의 복수의 픽셀의 뎁스 정보에 기초하여 복수의 픽셀에 대응되는 3D(three-dimensional) 공간 상의 복수의 3D 포인트를 생성할 수 있다(S920).
다음으로, 복수의 3D 포인트 중 3D 공간 상에서 로봇(100)의 주행하는 바닥면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별할 수 있다(S930). 여기서, 기설정된 높이 값은 로봇의 높이 값에 기초하여 설정된 높이 값일 수 있다.
일 실시 예로서, 식별하는 단계는 3D 공간 상의 복수의 3D 포인트의 분포에 기초하여, 3D 공간 상에서 로봇(100)이 주행하는 바닥면을 판단하는 단계를 포함할 수 있다.
여기서 식별하는 단계는, 판단된 바닥면이 3D 공간 상의 기설정된 평면에 맵핑되도록, 3D 공간 상의 복수의 3D 포인트를 회전시키고, 회전된 복수의 3D 포인트 중 기설정된 평면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별할 수 있다.
한편, 기설정된 평면은 XYZ 축으로 정의되는 3D 공간 상의 XZ 평면에 해당할 수 있다. 이 경우, 식별하는 단계는 회전된 복수의 3D 포인트 중 Y 축의 값이 기설정된 값을 갖는 복수의 3D 포인트를 식별하는 것을 포함할 수 있다.
여기서, 식별하는 단계는, 식별된 복수의 3D 포인트의 X 축의 값 및 Z 축의 값에 기초하여 식별된 복수의 3D 포인트를 2D 데이터로 변환할 수 있다.
한편, 식별하는 단계는, 복수의 3D 포인트 중 바닥면을 기준으로 기설정된 높이 값을 포함하는 기설정된 임계 범위 내의 높이 값을 갖는 복수의 3D 포인트를 식별할 수 있다.
다음으로, 식별된 복수의 3D 포인트에 기초하여 로봇(100)이 주행하도록 로봇(100)에 구비된 구동부(120)를 제어할 수 있다(S940).
여기서, 제어하는 단계는 2D 데이터에 기초하여 로봇(100)이 주행하도록 구동부(120)를 제어할 수 있다.
본 개시의 다양한 실시 예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media에 저장된 명령어를 포함하는 소프트웨어로 구현될 수 있다. 기기는 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 전자 장치(예: 로봇(100))를 포함할 수 있다. 상기 명령이 프로세서에 의해 실행될 경우, 프로세서가 직접, 또는 상기 프로세서의 제어 하에 다른 구성요소들을 이용하여 상기 명령에 상기하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시 예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 상기 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시 예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 상기 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. 다양한 실시 예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.

Claims (14)

  1. 로봇에 있어서,
    뎁스 카메라;
    구동부; 및
    상기 뎁스 카메라를 통해 촬영을 수행하여 뎁스 이미지를 획득하고,
    상기 뎁스 이미지의 복수의 픽셀의 뎁스 정보에 기초하여 상기 복수의 픽셀에 대응되는 3D(three-dimensional) 공간 상의 복수의 3D 포인트를 생성하고,
    상기 복수의 3D 포인트 중 상기 3D 공간 상에서 상기 로봇의 주행하는 바닥면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별하고,
    상기 식별된 복수의 3D 포인트에 기초하여 상기 로봇이 주행하도록 상기 구동부를 제어하는 프로세서;를 포함하는 로봇.
  2. 제1항에 있어서,
    상기 프로세서는,
    상기 3D 공간 상의 상기 복수의 3D 포인트의 분포에 기초하여, 상기 3D 공간 상에서 상기 로봇이 주행하는 바닥면을 판단하는 로봇.
  3. 제2항에 있어서,
    상기 프로세서는,
    상기 판단된 바닥면이 상기 3D 공간 상의 기설정된 평면에 맵핑되도록, 상기 3D 공간 상의 복수의 3D 포인트를 회전시키고,
    상기 회전된 복수의 3D 포인트 중 상기 기설정된 평면을 기준으로 상기 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별하는 로봇.
  4. 제3항에 있어서,
    상기 기설정된 평면은, XYZ 축으로 정의되는 상기 3D 공간 상의 XZ 평면에 해당하고,
    상기 프로세서는,
    상기 회전된 복수의 3D 포인트 중 Y 축의 값이 기설정된 값을 갖는 상기 복수의 3D 포인트를 식별하는 로봇.
  5. 제1항에 있어서,
    상기 프로세서는,
    상기 복수의 3D 포인트 중 상기 바닥면을 기준으로 기설정된 높이 값을 포함하는 기설정된 임계 범위 내의 높이 값을 갖는 복수의 3D 포인트를 식별하고,
    상기 식별된 복수의 3D 포인트에 기초하여 상기 로봇이 주행하도록 상기 구동부를 제어하는 로봇.
  6. 제4항에 있어서,
    상기 프로세서는,
    상기 식별된 복수의 3D 포인트의 X 축의 값 및 Z 축의 값에 기초하여 상기 식별된 복수의 3D 포인트를 2D 데이터로 변환하고,
    상기 2D 데이터에 기초하여 상기 로봇이 주행하도록 상기 구동부를 제어하는 로봇.
  7. 제1항에 있어서,
    기설정된 높이 값은,
    상기 로봇의 높이 값에 기초하여 설정된 높이 값인, 로봇.
  8. 로봇의 제어 방법에 있어서,
    상기 로봇에 구비된 뎁스 카메라를 통해 촬영을 수행하여 뎁스 이미지를 획득하는 단계;
    상기 뎁스 이미지의 복수의 픽셀의 뎁스 정보에 기초하여 상기 복수의 픽셀에 대응되는 3D(three-dimensional) 공간 상의 복수의 3D 포인트를 생성하는 단계;
    상기 복수의 3D 포인트 중 상기 3D 공간 상에서 상기 로봇의 주행하는 바닥면을 기준으로 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별하는 단계; 및
    상기 식별된 복수의 3D 포인트에 기초하여 상기 로봇이 주행하도록 상기 로봇에 구비된 구동부를 제어하는 단계;를 포함하는, 제어 방법.
  9. 제8항에 있어서,
    상기 식별하는 단계는,
    상기 3D 공간 상의 상기 복수의 3D 포인트의 분포에 기초하여, 상기 3D 공간 상에서 상기 로봇이 주행하는 바닥면을 판단하는 단계;를 포함하는 제어 방법.
  10. 제9항에 있어서,
    상기 식별하는 단계는,
    상기 판단된 바닥면이 상기 3D 공간 상의 기설정된 평면에 맵핑되도록, 상기 3D 공간 상의 복수의 3D 포인트를 회전시키고,
    상기 회전된 복수의 3D 포인트 중 상기 기설정된 평면을 기준으로 상기 기설정된 높이 값을 갖는 복수의 3D 포인트를 식별하는, 제어 방법.
  11. 제10항에 있어서,
    상기 기설정된 평면은, XYZ 축으로 정의되는 상기 3D 공간 상의 XZ 평면에 해당하고,
    상기 식별하는 단계는,
    상기 회전된 복수의 3D 포인트 중 Y 축의 값이 기설정된 값을 갖는 상기 복수의 3D 포인트를 식별하는 것을 포함하는, 제어 방법.
  12. 제8항에 있어서,
    상기 식별하는 단계는,
    상기 복수의 3D 포인트 중 상기 바닥면을 기준으로 기설정된 높이 값을 포함하는 기설정된 임계 범위 내의 높이 값을 갖는 복수의 3D 포인트를 식별하는, 제어 방법.
  13. 제11항에 있어서,
    상기 식별하는 단계는,
    상기 식별된 복수의 3D 포인트의 X 축의 값 및 Z 축의 값에 기초하여 상기 식별된 복수의 3D 포인트를 2D 데이터로 변환하고,
    상기 제어하는 단계는,
    상기 2D 데이터에 기초하여 상기 로봇이 주행하도록 상기 구동부를 제어하는 것을 포함하는, 제어 방법.
  14. 제8항에 있어서,
    상기 기설정된 높이 값은,
    상기 로봇의 높이 값에 기초하여 설정된 높이 값인, 제어 방법.
PCT/KR2021/011019 2020-09-21 2021-08-19 로봇 및 그의 제어 방법 WO2022059937A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/120,192 US20230213944A1 (en) 2020-09-21 2023-03-10 Robot and control method therefor

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200121772A KR20220039101A (ko) 2020-09-21 2020-09-21 로봇 및 그의 제어 방법
KR10-2020-0121772 2020-09-21

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/120,192 Continuation US20230213944A1 (en) 2020-09-21 2023-03-10 Robot and control method therefor

Publications (1)

Publication Number Publication Date
WO2022059937A1 true WO2022059937A1 (ko) 2022-03-24

Family

ID=80776198

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2021/011019 WO2022059937A1 (ko) 2020-09-21 2021-08-19 로봇 및 그의 제어 방법

Country Status (3)

Country Link
US (1) US20230213944A1 (ko)
KR (1) KR20220039101A (ko)
WO (1) WO2022059937A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102471234B1 (ko) * 2022-07-15 2022-11-29 서울시립대학교 산학협력단 횡단보도에서 보행자를 도와주는 안전 동행 로봇 및 방법
WO2024058402A1 (ko) * 2022-09-15 2024-03-21 삼성전자주식회사 주행 맵을 생성하는 주행 로봇 및 그 제어 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101460313B1 (ko) * 2013-05-24 2014-11-14 중앙대학교 산학협력단 시각 특징과 기하 정보를 이용한 로봇의 위치 추정 장치 및 방법
KR20150138889A (ko) * 2014-05-30 2015-12-11 동명대학교산학협력단 3차원 깊이정보기반 자율주행 로봇의 위치추정 장치 및 그 방법
KR20170103556A (ko) * 2016-03-04 2017-09-13 엘지전자 주식회사 이동 로봇 및 그 제어방법
KR20180014535A (ko) * 2016-08-01 2018-02-09 한국기계연구원 개인 이동기구의 장애물 회피 시스템 및 이를 이용한 장애물 회피 방법
US20190377355A1 (en) * 2019-07-26 2019-12-12 Lg Electronics Inc. Robot for detecting human head and control method thereof

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101460313B1 (ko) * 2013-05-24 2014-11-14 중앙대학교 산학협력단 시각 특징과 기하 정보를 이용한 로봇의 위치 추정 장치 및 방법
KR20150138889A (ko) * 2014-05-30 2015-12-11 동명대학교산학협력단 3차원 깊이정보기반 자율주행 로봇의 위치추정 장치 및 그 방법
KR20170103556A (ko) * 2016-03-04 2017-09-13 엘지전자 주식회사 이동 로봇 및 그 제어방법
KR20180014535A (ko) * 2016-08-01 2018-02-09 한국기계연구원 개인 이동기구의 장애물 회피 시스템 및 이를 이용한 장애물 회피 방법
US20190377355A1 (en) * 2019-07-26 2019-12-12 Lg Electronics Inc. Robot for detecting human head and control method thereof

Also Published As

Publication number Publication date
KR20220039101A (ko) 2022-03-29
US20230213944A1 (en) 2023-07-06

Similar Documents

Publication Publication Date Title
US11754721B2 (en) Visualization and semantic monitoring using lidar data
EP3191888B1 (en) Scanning laser planarity detection
CN107836012B (zh) 投影图像生成方法及其装置、图像像素与深度值之间的映射方法
WO2022059937A1 (ko) 로봇 및 그의 제어 방법
WO2017196062A1 (en) Distance sensor, and calibration method performed by device and system including the distance sensor
US20160210783A1 (en) Holographic bird&#39;s eye view camera
US20160188123A1 (en) Projection device
US12008782B2 (en) Information processing apparatus, information processing method, and program
US10726616B2 (en) System and method for processing captured images
JP2009118415A (ja) 鳥瞰画像生成装置および方法
KR20210049581A (ko) 이동체의 전방향에 대한 거리 취득 장치 및 방법
CN111435081B (zh) 海面测量***、海面测量方法以及存储介质
US20190079158A1 (en) 4d camera tracking and optical stabilization
CN115023627A (zh) 用于将世界点投影到滚动快门图像的高效算法
Vechersky et al. Colourising point clouds using independent cameras
US20200234452A1 (en) Imaging object tracking system and imaging object tracking method
WO2020054408A1 (ja) 制御装置、情報処理方法、およびプログラム
CN114026610A (zh) 用于障碍物检测的设备和方法
CN115686233A (zh) 一种主动笔与显示设备的交互方法、装置及交互***
CN116136408A (zh) 室内导航方法、服务器、装置和终端
Stanèiæ et al. A novel low-cost adaptive scanner concept for mobile robots
WO2022103190A1 (ko) 3차원 모델의 텍스처를 생성하기 위한 방법 및 장치
WO2024112012A1 (ko) 라이다 기반 지도 생성 방법 및 그 장치
US20220343536A1 (en) Three-dimensional map estimation apparatus and obstacle detection apparatus
WO2016093428A1 (ko) 소형통합제어장치

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21869560

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21869560

Country of ref document: EP

Kind code of ref document: A1