KR20230032852A - Robot and controlling method of robot - Google Patents

Robot and controlling method of robot Download PDF

Info

Publication number
KR20230032852A
KR20230032852A KR1020220062330A KR20220062330A KR20230032852A KR 20230032852 A KR20230032852 A KR 20230032852A KR 1020220062330 A KR1020220062330 A KR 1020220062330A KR 20220062330 A KR20220062330 A KR 20220062330A KR 20230032852 A KR20230032852 A KR 20230032852A
Authority
KR
South Korea
Prior art keywords
points
manipulator
edge
pose
processor
Prior art date
Application number
KR1020220062330A
Other languages
Korean (ko)
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 KR20230032852A publication Critical patent/KR20230032852A/en

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1612Programme controls characterised by the hand, wrist, grip control
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/08Controls for manipulators by means of sensing devices, e.g. viewing or touching 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
    • B25J19/023Optical sensing devices including video camera means
    • 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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1674Programme controls characterised by safety, monitoring, diagnostic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/593Depth or shape recovery from multiple images from stereo images

Abstract

A robot and a method for controlling the same are disclosed. A robot according to the present disclosure comprises: a manipulator; a plurality of motors for controlling the operation of the manipulator; a memory storing at least one instruction; and a processor to execute the at least one instruction. In addition, the processor may obtain an image of an object through a camera, obtain, based on the obtained image, point cloud information including a plurality of points indicating the object, identify, among the plurality of points, a plurality of edge points indicating the edge of the object and a plurality of body points indicating a body region excluding the edge of the object, obtain a plurality of pose values indicating a pose when the manipulator grips the object by using at least some points among the plurality of edge points and the plurality of body points as griping points, respectively, obtain evaluation information indicating stability when the manipulator grips the object according to the plurality of pose values, identify, based on the evaluation information, one pose value among the plurality of pose values, and control, based on the identified one pose value, the plurality of motors so that the manipulator operates. To this end, a robot capable of stably and efficiently gripping an object and a method for controlling the same are provided.

Description

로봇 및 로봇의 제어 방법{ROBOT AND CONTROLLING METHOD OF ROBOT}Robot and control method of robot {ROBOT AND CONTROLLING METHOD OF ROBOT}

본 개시는 로봇 및 로봇 의 제어 방법에 관한 것으로서, 구체적으로는 매니퓰레이터를 이용하여 오브젝트를 파지할 수 있는 로봇 및 로봇의 제어 방법에 관한 것이다.The present disclosure relates to a robot and a method for controlling the robot, and more specifically, to a robot capable of gripping an object using a manipulator and a method for controlling the robot.

근래에는 로봇 기술의 발달에 힘입어 청소 로봇, 서비스 로봇, 산업용 로봇 등 다양한 유형의 로봇이 이용되고 있으며, 특히 최근에는 사용자(즉, 사람)의 팔의 움직임과 같이 움직이는 로봇 암(robot arm) 즉, 매니퓰레이터(manipulator)에 대한 연구가 활발히 진행되고 있다. 로봇의 매니퓰레이터를 이용하여 오브젝트를 파지하는 것에 관련된 기술은 매니퓰레이터에 관련된 기술 분야에 있어서도 가장 기본적이면서도 활용도가 높은 기술이라고 할 수 있다. Recently, thanks to the development of robot technology, various types of robots such as cleaning robots, service robots, and industrial robots are being used. , research on manipulators is being actively conducted. A technology related to gripping an object using a robot manipulator can be said to be the most basic and highly utilized technology in a technology field related to a manipulator.

매니퓰레이터를 이용하여 오브젝트를 파지함에 있어서, 종래 기술은 오브젝트의 파지율을 높이기 위해, 카메라를 이용하여 오브젝트를 360도로 촬영함으로써 오브젝트에 대한 이미지를 획득하거나, 딥 러닝(deep learning) 기술에 의존하여 오브젝트에 대한 이미지를 분석하는 방법 등을 이용하고 있는 실정이다.In gripping an object using a manipulator, the prior art acquires an image of the object by photographing the object at 360 degrees using a camera, or relies on deep learning technology to increase the gripping rate of the object. Currently, a method for analyzing an image is being used.

그런데 종래 기술에 따라 카메라를 이용하여 오브젝트를 360도로 촬영하는 경우, 오브젝트에 대한 이미지를 획득함에 있어서 많은 시간이 소요될 수밖에 없다는 한계가 있다. However, when an object is photographed at 360 degrees using a camera according to the prior art, there is a limit in that it takes a lot of time to acquire an image of the object.

한편, 딥 러닝 기술에 의존하여 오브젝트에 대한 이미지를 분석하는 방법을 이용하는 경우, 이미지를 딥 러닝으로 분석하는 과정에 있어 많은 시간이 소요될 뿐만 아니라, 신경망 모델의 학습을 위한 다량의 학습 데이터가 필요하며, 또한 GPU(graphics processing unit)와 같은 고성능의 하드웨어가 필요하다는 한계가 지적되고 있다.On the other hand, in the case of using a method of analyzing an image of an object relying on deep learning technology, not only does it take a lot of time in the process of analyzing the image by deep learning, but also requires a large amount of training data for learning the neural network model. In addition, the limitation that high-performance hardware such as GPU (graphics processing unit) is required is pointed out.

본 개시는 상술한 바와 같은 종래 기술의 한계를 극복하기 위한 것으로서, 본 개시의 목적은 오브젝트에 대한 이미지를 획득하고, 획득된 이미지를 기하학적으로 분석함으로써, 안정적이고도 효율적으로 오브젝트를 파지할 수 있는 로봇 및 로봇의 제어 방법을 제공함에 있다. The present disclosure is to overcome the limitations of the prior art as described above, and an object of the present disclosure is to acquire an image of an object and geometrically analyze the obtained image, thereby enabling a robot capable of stably and efficiently gripping an object. And to provide a control method of the robot.

상술한 바와 같은 목적을 달성하기 위한 본 개시의 일 실시 예에 따르면, 로봇은 카메라, 매니퓰레이터(manipulator), 상기 매니퓰레이터의 동작을 제어하기 위한 복수의 모터, 적어도 하나의 인스트럭션(instructions)을 저장하는 메모리 및 상기 적어도 하나의 인스트럭션을 실행하는 프로세서를 포함하고, 상기 프로세서는 상기 카메라를 통해 오브젝트에 대한 이미지를 획득하고, 상기 획득된 이미지에 기초하여 상기 오브젝트를 나타내는 복수의 포인트를 포함하는 포인트 클라우드 정보(point cloud information)를 획득하며, 상기 복수의 포인트 중 상기 오브젝트의 엣지(edge)를 나타내는 복수의 엣지 포인트 및 상기 오브젝트의 엣지를 제외한 바디(body) 영역을 나타내는 복수의 바디 포인트를 식별하고, 상기 매니퓰레이터가 상기 복수의 엣지 포인트 및 상기 복수의 바디 포인트 중 적어도 일부 포인트들 각각을 파지점으로 하여 상기 오브젝트를 파지하는 경우의 포즈를 나타내는 복수의 포즈 값을 획득하며, 상기 복수의 포즈 값에 따라 상기 매니퓰레이터가 상기 오브젝트를 파지하는 경우의 안정성을 나타내는 평가 정보를 획득하고, 상기 평가 정보에 기초하여 상기 복수의 포즈 값 중 하나의 포즈 값을 식별하고, 상기 식별된 하나의 포즈 값에 기초하여 상기 매니퓰레이터가 동작하도록 상기 복수의 모터를 제어한다. According to an embodiment of the present disclosure for achieving the above object, the robot includes a camera, a manipulator, a plurality of motors for controlling the operation of the manipulator, and a memory for storing at least one instruction. And a processor that executes the at least one instruction, wherein the processor obtains an image of an object through the camera, and point cloud information including a plurality of points representing the object based on the obtained image ( point cloud information) is acquired, and among the plurality of points, a plurality of edge points representing an edge of the object and a plurality of body points representing a body area excluding the edge of the object are identified, and the manipulator acquires a plurality of pose values representing poses when gripping the object using at least some of the plurality of edge points and the plurality of body points as gripping points, and the manipulator according to the plurality of pose values obtains evaluation information indicating stability when holding the object, identifies one pose value among the plurality of pose values based on the evaluation information, and determines that the manipulator operates based on the identified one pose value. Control the plurality of motors to operate.

여기서, 상기 프로세서는 상기 복수의 포인트 별로, 상기 복수의 포인트에서 상기 복수의 포인트를 중심으로 하는 기 설정된 크기의 원 안에 포함된 포인트들의 중심점을 향하는 ZMS(zero moment shift) 벡터를 식별하고, 상기 복수의 포인트 중 상기 ZMS 벡터의 크기가 기 설정된 임계 값 이상인 벡터들에 대응되는 포인트들을 상기 엣지 포인트로 식별하며, 상기 복수의 포인트 중 상기 ZMS 벡터의 크기가 상기 임계 값 미만인 벡터들에 대응되는 포인트들을 상기 바디 포인트로 식별할 수 있다. Here, the processor identifies, for each of the plurality of points, a zero moment shift (ZMS) vector directed from the plurality of points to the center point of points included in a circle having a predetermined size centered on the plurality of points, and Points corresponding to vectors having a size of the ZMS vector greater than or equal to a preset threshold among points of are identified as the edge points, and among the plurality of points, points corresponding to vectors having a size of the ZMS vector less than the threshold are identified. It can be identified as the body point.

여기서, 상기 프로세서는 상기 엣지 포인트로 식별된 하나의 포인트에 대한 ZMS 벡터와 상기 카메라에서 상기 하나의 포인트를 향하는 레이(ray) 벡터 사이의 각도가 기 설정된 임계 각도 이상이면, 상기 하나의 포인트를 상기 바디 포인트로 식별할 수 있다. Here, the processor determines the one point when an angle between a ZMS vector for one point identified as the edge point and a ray vector directed from the camera to the one point is equal to or greater than a preset threshold angle. It can be identified as a body point.

여기서, 상기 프로세서는 상기 매니퓰레이터의 하박 관절을 향하는 방향과 반대 방향을 향하도록 정의된 상기 매니퓰레이터의 z축이 상기 식별된 엣지 포인트에 대한 ZMS 벡터의 방향에 대응되도록 하고, 상기 매니퓰레이터에 포함된 하나의 핑거에서 반대 방향의 다른 핑거를 향하도록 정의된 상기 매니퓰레이터의 y축이 상기 식별된 엣지 포인트의 표면에 수직인 방향에 대응되도록 하기 위한 상기 매니퓰레이터의 포즈를 식별함으로써, 상기 복수의 포즈 값 중 상기 복수의 엣지 포인트에 대응되는 포즈 값들을 획득할 수 있다. Here, the processor causes the z-axis of the manipulator, which is defined to face in a direction opposite to the direction toward the forearm joint of the manipulator, to correspond to the direction of the ZMS vector with respect to the identified edge point, and the one included in the manipulator By identifying the pose of the manipulator so that the y-axis of the manipulator defined from a finger to the other finger in the opposite direction corresponds to a direction perpendicular to the surface of the identified edge point, the plurality of pose values Pose values corresponding to the edge points of can be obtained.

여기서, 상기 프로세서는 상기 z축이 상기 복수의 포인트의 표면에 수직인 방향에 대응되도록 하고, 상기 y축이 상기 복수의 포인트에서 곡률이 가장 큰 방향에 대응되도록 하기 위한 상기 매니퓰레이터의 포즈를 식별함으로써, 상기 복수의 포즈 값 중 상기 복수의 바디 포인트에 대응되는 포즈 값들을 획득할 수 있다. Here, the processor identifies a pose of the manipulator so that the z-axis corresponds to a direction perpendicular to the surface of the plurality of points and the y-axis corresponds to a direction of greatest curvature at the plurality of points. , Among the plurality of pose values, pose values corresponding to the plurality of body points may be obtained.

여기서, 상기 프로세서는 상기 복수의 엣지 포인트에 대응되는 포즈 값들 및 상기 복수의 바디 포인트에 대응되는 포즈 값들의 일부 좌표축을 변경함으로써, 상기 복수의 포즈 값을 증강시킬 수 있다. Here, the processor may augment the plurality of pose values by changing some coordinate axes of pose values corresponding to the plurality of edge points and pose values corresponding to the plurality of body points.

여기서, 상기 평가 정보는 상기 매니퓰레이터에 포함된 두 개의 핑거의 표면에서 수직인 방향과 상기 두 개의 핑거가 상기 오브젝트와 접촉되는 접촉 영역의 표면에서 수직인 방향 사이의 각도에 따라 산출되는 제1 스코어, 상기 접촉 영역에 포함된 포인트의 개수에 따라 산출되는 제2 스코어, 상기 두 개의 핑거 중 하나의 핑거와 상기 접촉 영역 사이의 거리 및 상기 두 개의 핑거 중 다른 하나의 핑거와 상기 접촉 영역 사이의 거리 사이의 차이에 따라 산출되는 제3 스코어 및 상기 적어도 일부 포인트가 상기 오브젝트의 무게 중심에 가까운지 여부에 따라 산출되는 제4 스코어 중 적어도 하나를 포함할 수 있다. Here, the evaluation information is a first score calculated according to an angle between a direction perpendicular to the surface of two fingers included in the manipulator and a direction perpendicular to the surface of a contact area where the two fingers come into contact with the object; A second score calculated according to the number of points included in the contact area, a distance between one of the two fingers and the contact area, and a distance between another one of the two fingers and the contact area It may include at least one of a third score calculated according to the difference between and a fourth score calculated according to whether the at least some points are close to the center of gravity of the object.

여기서, 상기 프로세서는 상기 제1 스코어, 상기 제2 스코어, 상기 제3 스코어 및 상기 제4 스코어의 가중합에 기초하여 최종 스코어를 산출함으로써, 상기 복수의 포즈 값 각각에 대한 평가 정보를 획득할 수 있다. Here, the processor may obtain evaluation information for each of the plurality of pose values by calculating a final score based on a weighted sum of the first score, the second score, the third score, and the fourth score. there is.

여기서, 상기 프로세서는 상기 식별된 엣지 포인트에 대한 ZMS 벡터 및 상기 레이 벡터에 기초하여, 상기 이미지에 포함된 비관측 영역에 대응되는 복수의 추정 포인트에 대한 정보를 획득하고, 상기 두 개의 핑거의 표면적에 대한 정보, 상기 매니퓰레이터의 복수의 엣지 포인트, 상기 복수의 바디 포인트 및 상기 복수의 추정 포인트에 기초하여 상기 접촉 영역을 식별할 수 있다. Here, the processor obtains information on a plurality of estimated points corresponding to a non-observation area included in the image based on the ZMS vector and the ray vector for the identified edge point, and obtains surface area of the two fingers The contact area may be identified based on the information about, the plurality of edge points of the manipulator, the plurality of body points, and the plurality of estimated points.

상술한 바와 같은 목적을 달성하기 위한 본 개시의 일 실시 예에 따르면, 매니퓰레이터(manipulator) 및 상기 매니퓰레이터의 동작을 제어하기 위한 복수의 모터를 포함하는 로봇의 제어 방법은 오브젝트에 대한 이미지를 획득하는 단계, 상기 획득된 이미지에 기초하여 상기 오브젝트를 나타내는 복수의 포인트를 포함하는 포인트 클라우드 정보(point cloud information)를 획득하는 단계, 상기 복수의 포인트 중 상기 오브젝트의 엣지(edge)를 나타내는 복수의 엣지 포인트 및 상기 오브젝트의 엣지를 제외한 바디(body) 영역을 나타내는 복수의 바디 포인트를 식별하는 단계, 상기 매니퓰레이터가 상기 복수의 엣지 포인트 및 상기 복수의 바디 포인트 중 적어도 일부 포인트들 각각을 파지점으로 하여 상기 오브젝트를 파지하는 경우의 포즈를 나타내는 복수의 포즈 값을 획득하는 단계, 상기 복수의 포즈 값에 따라 상기 매니퓰레이터가 상기 오브젝트를 파지하는 경우의 안정성을 나타내는 평가 정보를 획득하는 단계, 상기 평가 정보에 기초하여 상기 복수의 포즈 값 중 하나의 포즈 값을 식별하는 단계 및 상기 식별된 하나의 포즈 값에 기초하여 상기 매니퓰레이터가 동작하도록 상기 복수의 모터를 제어하는 단계를 포함한다.According to an embodiment of the present disclosure for achieving the above object, a control method of a robot including a manipulator and a plurality of motors for controlling an operation of the manipulator includes acquiring an image of an object. Obtaining point cloud information including a plurality of points representing the object based on the obtained image, a plurality of edge points representing the edge of the object among the plurality of points, and Identifying a plurality of body points representing a body area excluding an edge of the object, wherein the manipulator uses at least some of the plurality of edge points and the plurality of body points as gripping points to hold the object obtaining a plurality of pose values representing poses when gripping the object; obtaining evaluation information representing stability when the manipulator grips the object according to the plurality of pose values; The method includes identifying one pose value among a plurality of pose values and controlling the plurality of motors to operate the manipulator based on the identified pose value.

도 1은 본 개시의 일 실시 예에 따른 로봇을 나타내는 도면,
도 2는 본 개시의 일 실시 예에 따른 로봇의 구성을 간략하게 나타내는 블록도,
도 3은 본 개시의 일 실시 예에 따른 엣지 포인트와 바디 포인트의 식별 과정에 대해 설명하기 위한 도면,
도 4는 본 개시의 일 실시 예에 따른 트루 엣지 포인트와 폴스 엣지 포인트를 구별하는 과정에 대해 설명하기 위한 도면,
도 5는 본 개시의 일 실시 예에 따른 비관측 영역의 추정 과정에 대해 설명하기 위한 도면,
도 6 내지 도 8은 본 개시의 일 실시 예에 따른 복수의 포즈 값의 획득 과정에 대해 설명하기 위한 도면,
도 9 및 도 10은 본 개시의 일 실시 예에 따른 평가 정보에 대해 상세하게 설명하기 위한 도면,
도 11은 본 개시의 일 실시 예에 따른 로봇의 구성을 상세하게 나타내는 블록도, 그리고,
도 12는 본 개시의 일 실시 예에 따른 로봇의 제어 방법을 나타내는 흐름도이다.
1 is a diagram showing a robot according to an embodiment of the present disclosure;
2 is a block diagram briefly showing the configuration of a robot according to an embodiment of the present disclosure;
3 is a diagram for explaining a process of identifying an edge point and a body point according to an embodiment of the present disclosure;
4 is a diagram for explaining a process of distinguishing a true edge point and a false edge point according to an embodiment of the present disclosure;
5 is a diagram for explaining a process of estimating a non-observation area according to an embodiment of the present disclosure;
6 to 8 are diagrams for explaining a process of obtaining a plurality of pose values according to an embodiment of the present disclosure;
9 and 10 are diagrams for explaining in detail evaluation information according to an embodiment of the present disclosure;
11 is a block diagram showing in detail the configuration of a robot according to an embodiment of the present disclosure, and
12 is a flowchart illustrating a method for controlling a robot according to an embodiment of the present disclosure.

본 실시 예들은 다양한 변환을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 특정한 실시 형태에 대해 범위를 한정하려는 것이 아니며, 본 개시의 실시 예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.Since the present embodiments can apply various transformations and have various embodiments, specific embodiments will be illustrated in the drawings and described in detail in the detailed description. However, this is not intended to limit the scope to the specific embodiments, and should be understood to include various modifications, equivalents, and/or alternatives of the embodiments of the present disclosure. In connection with the description of the drawings, like reference numerals may be used for like elements.

본 개시를 설명함에 있어서, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 개시의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략한다. In describing the present disclosure, if it is determined that a detailed description of a related known function or configuration may unnecessarily obscure the gist of the present disclosure, a detailed description thereof will be omitted.

덧붙여, 하기 실시 예는 여러 가지 다른 형태로 변형될 수 있으며, 본 개시의 기술적 사상의 범위가 하기 실시 예에 한정되는 것은 아니다. 오히려, 이들 실시 예는 본 개시를 더욱 충실하고 완전하게 하고, 당업자에게 본 개시의 기술적 사상을 완전하게 전달하기 위하여 제공되는 것이다.In addition, the following embodiments may be modified in many different forms, and the scope of the technical idea of the present disclosure is not limited to the following embodiments. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the spirit of the disclosure to those skilled in the art.

본 개시에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 권리범위를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.Terms used in this disclosure are only used to describe specific embodiments, and are not intended to limit the scope of rights. Singular expressions include plural expressions unless the context clearly dictates otherwise.

본 개시에서, "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다. In the present disclosure, expressions such as “has,” “can have,” “includes,” or “can include” indicate the presence of a corresponding feature (eg, numerical value, function, operation, or component such as a part). , which does not preclude the existence of additional features.

본 개시에서, "A 또는 B," "A 또는/및 B 중 적어도 하나," 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B," "A 및 B 중 적어도 하나," 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.In this 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. . For example, “A or B,” “at least one of A and B,” or “at least one of A or B” (1) includes at least one A, (2) includes at least one B, Or (3) may refer to all cases including at least one A and at least one B.

본 개시에서 사용된 "제1," "제2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. Expressions such as "first," "second," "first," or "second," used in the present disclosure may modify various elements regardless of order and/or importance, and may refer to one element as It is used only to distinguish it from other components and does not limit the corresponding components.

어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. A component (e.g., a first component) is "(operatively or communicatively) coupled with/to" another component (e.g., a second component); When referred to as "connected to", it should be understood that the certain component may be directly connected to the other component or connected through another component (eg, a third component).

반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.On the other hand, when an element (eg, a first element) is referred to as being “directly connected” or “directly connected” to another element (eg, a second element), the element and the above It may be understood that other components (eg, a third component) do not exist between the other components.

본 개시에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)," "~하는 능력을 가지는(having the capacity to)," "~하도록 설계된(designed to)," "~하도록 변경된(adapted to)," "~하도록 만들어진(made to)," 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. The expression “configured to (or configured to)” as used in this disclosure means, depending on the situation, for example, “suitable for,” “having the capacity to.” ," "designed to," "adapted to," "made to," or "capable of." The term "configured (or set) to" may not necessarily mean only "specifically designed to" hardware.

대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.Instead, in some contexts, the phrase "device configured to" may mean that the device is "capable of" in conjunction with other devices or components. For example, the phrase "a processor configured (or configured) to perform A, B, and C" may include a dedicated processor (eg, embedded processor) to perform the operation, or by executing one or more software programs stored in a memory device. , may mean a general-purpose processor (eg, CPU or application processor) capable of performing corresponding operations.

실시 예에 있어서 '모듈' 혹은 '부'는 적어도 하나의 기능이나 동작을 수행하며, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의 '모듈' 혹은 복수의 '부'는 특정한 하드웨어로 구현될 필요가 있는 '모듈' 혹은 '부'를 제외하고는 적어도 하나의 모듈로 일체화되어 적어도 하나의 프로세서로 구현될 수 있다.In an embodiment, a 'module' or 'unit' performs at least one function or operation, and may be implemented with hardware or software, or a combination of hardware and software. In addition, a plurality of 'modules' or a plurality of 'units' may be integrated into at least one module and implemented by at least one processor, except for 'modules' or 'units' that need to be implemented with specific hardware.

한편, 도면에서의 다양한 요소와 영역은 개략적으로 그려진 것이다. 따라서, 본 발명의 기술적 사상은 첨부한 도면에 그려진 상대적인 크기나 간격에 의해 제한되지 않는다. Meanwhile, various elements and regions in the drawings are schematically drawn. Therefore, the technical spirit of the present invention is not limited by the relative size or spacing drawn in the accompanying drawings.

이하에서는 첨부한 도면을 참고하여 본 개시에 따른 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다.Hereinafter, with reference to the accompanying drawings, an embodiment according to the present disclosure will be described in detail so that those skilled in the art can easily implement it.

도 1은 본 개시의 일 실시 예에 따른 로봇(100)을 나타내는 도면이고, 도 2는 본 개시의 일 실시 예에 따른 로봇(100)의 구성을 간략하게 나타내는 블록도이다. 1 is a diagram showing a robot 100 according to an embodiment of the present disclosure, and FIG. 2 is a block diagram briefly showing the configuration of the robot 100 according to an embodiment of the present disclosure.

본 개시에 따른 로봇(100)은 매니퓰레이터(120)를 이용하여 오브젝트를 파지할 수 있는 장치를 말한다. 본 개시에 따른 로봇(100)은 도 1에 도시된 바와 같은 구조와 형상을 가질 수 있으나 이는 일 예시에 불과하다. 즉, 본 개시에 따른 로봇(100)과 매니퓰레이터(120)의 구조, 형상, 크기 등에 특별한 제한이 따르는 것은 아니다.The robot 100 according to the present disclosure refers to a device capable of gripping an object using the manipulator 120 . The robot 100 according to the present disclosure may have a structure and shape as shown in FIG. 1, but this is only an example. That is, there are no particular limitations on the structure, shape, size, etc. of the robot 100 and the manipulator 120 according to the present disclosure.

도 1에 도시된 바와 같이, 본 개시의 일 실시 예에 따른 로봇(100)은 카메라(110) 및 매니퓰레이터(120)를 포함할 수 있다. 그리고, 도 1에는 도시되어 있지 않지만, 로봇(100)은 도 2에 도시된 바와 같이, 로봇(100)의 내부에 복수의 모터(130), 메모리(140) 및 프로세서(150)를 포함할 수 있다. As shown in FIG. 1 , a robot 100 according to an embodiment of the present disclosure may include a camera 110 and a manipulator 120. And, although not shown in FIG. 1, the robot 100 may include a plurality of motors 130, a memory 140, and a processor 150 inside the robot 100, as shown in FIG. there is.

카메라(110)는 적어도 하나의 오브젝트에 대한 이미지를 획득할 수 있다. 구체적으로, 카메라(110)는 이미지 센서를 포함하고, 이미지 센서는 렌즈를 통해 들어오는 빛을 전기적인 영상 신호로 변환할 수 있다. The camera 110 may acquire an image of at least one object. Specifically, the camera 110 includes an image sensor, and the image sensor may convert light entering through a lens into an electrical image signal.

특히, 본 개시에 따른 다양한 실시 예에 있어서, 카메라(110)는 오브젝트에 대한 이미지를 획득할 수 있는바, 본 개시에 다른 오브젝트에 대한 이미지는 오브젝트에 대한 싱글 뷰(single view) 이미지를 말한다. 즉, 본 개시에 있어서, 프로세서(150)는 카메라(110)의 위치 또는 각도를 이동시키면서 오브젝트에 대한 멀티 뷰(multi-view) 이미지를 획득하는 것이 아니라, 오브젝트에 대한 하나의 이미지인 싱글 뷰 이미지만을 획득하고, 획득된 싱글 뷰 이미지에 기초하여 후술하는 바와 같이 오브젝트를 파지하기 위한 포즈 값을 획득할 수 있다. In particular, in various embodiments according to the present disclosure, the camera 110 may acquire an image of an object, and an image of an object according to the present disclosure refers to a single view image of the object. That is, in the present disclosure, the processor 150 does not acquire a multi-view image of an object while moving the position or angle of the camera 110, but a single-view image that is one image of the object. , and based on the obtained single-view image, a pose value for holding an object may be obtained as will be described later.

매니퓰레이터(120)는 인간의 팔 및 손과 유사한 동작을 수행할 수 있다. 구체적으로, 매니퓰레이터(120)는 사용자의 팔의 상박 및 하박 각각에 대응되는 링크를 포함할 수 있으며, 복수의 핑거를 포함하는 핸드를 포함할 수 있다. 매니퓰레이터(120)는 복수의 모터(130)와 연결될 수 있으며, 특히 매니퓰레이터(120)의 상박, 하박, 핸드 및 복수의 핑거 각각에 대응되는 복수의 모터(130)와 연결될 수 있다. The manipulator 120 can perform similar motions to human arms and hands. Specifically, the manipulator 120 may include links corresponding to the upper arm and lower arm of the user's arm, and may include a hand including a plurality of fingers. The manipulator 120 may be connected to a plurality of motors 130, and in particular, may be connected to a plurality of motors 130 corresponding to each of the upper arm, lower arm, hand, and plurality of fingers of the manipulator 120.

그리고, 프로세서(150)는 본 개시에 따른 포즈 값에 기초하여 복수의 모터(130)를 제어함으로써, 매니퓰레이터(120)의 동작을 제어할 수 있다. 매니퓰레이터(120)는 인간의 팔 및 손과 유사한 다양한 동작을 제공할 수 있지만, 본 개시에 있어서는 매니퓰레이터(120)를 이용하여 오브젝트를 파지하는 경우를 전제로 하여 본 개시에 따른 다양한 실시 예에 대해 설명한다.Also, the processor 150 may control the operation of the manipulator 120 by controlling the plurality of motors 130 based on the pose value according to the present disclosure. The manipulator 120 can provide various motions similar to those of the human arm and hand, but in the present disclosure, various embodiments according to the present disclosure will be described on the assumption that an object is gripped using the manipulator 120. do.

메모리(140)에는 로봇(100)에 관한 적어도 하나의 인스트럭션(instruction)이 저장될 수 있다. 그리고, 메모리(140)에는 로봇(100)을 구동시키기 위한 O/S(Operating System)가 저장될 수 있다. 또한, 메모리(140)에는 본 개시의 다양한 실시 예들에 따라 로봇(100)이 동작하기 위한 각종 소프트웨어 프로그램이나 애플리케이션이 저장될 수도 있다. 그리고, 메모리(140)는 플래시 메모리(Flash Memory) 등과 같은 반도체 메모리나 하드디스크(Hard Disk) 등과 같은 자기 저장 매체 등을 포함할 수 있다.At least one instruction for the robot 100 may be stored in the memory 140 . And, an O/S (Operating System) for driving the robot 100 may be stored in the memory 140 . Also, various software programs or applications for operating the robot 100 may be stored in the memory 140 according to various embodiments of the present disclosure. Also, the memory 140 may include a semiconductor memory such as a flash memory or a magnetic storage medium such as a hard disk.

구체적으로, 메모리(140)에는 본 개시의 다양한 실시 예에 따라 로봇(100)이 동작하기 위한 각종 소프트웨어 모듈이 저장될 수 있으며, 프로세서(150)는 메모리(140)에 저장된 각종 소프트웨어 모듈을 실행하여 로봇(100)의 동작을 제어할 수 있다. 즉, 메모리(140)는 프로세서(150)에 의해 액세스되며, 프로세서(150)에 의한 데이터의 독취/기록/수정/삭제/갱신 등이 수행될 수 있다. Specifically, various software modules for operating the robot 100 may be stored in the memory 140 according to various embodiments of the present disclosure, and the processor 150 executes various software modules stored in the memory 140 to The operation of the robot 100 can be controlled. That is, the memory 140 is accessed by the processor 150, and data can be read/written/modified/deleted/updated by the processor 150.

한편, 본 개시에서 메모리(140)라는 용어는 메모리(140), 프로세서(150) 내 롬(미도시), 램(미도시) 또는 로봇(100)에 장착되는 메모리 카드(미도시)(예를 들어, micro SD 카드, 메모리 스틱)를 포함하는 의미로 사용될 수 있다.Meanwhile, in the present disclosure, the term memory 140 refers to the memory 140, a ROM (not shown) in the processor 150, a RAM (not shown), or a memory card (not shown) mounted in the robot 100 (eg For example, micro SD card, memory stick) can be used as a meaning including.

특히, 본 개시에 따른 다양한 실시 예에 있어서, 메모리(140)에는 오브젝트에 대한 이미지, 포인트 클라우드 정보, 복수의 엣지(edge) 포인트에 대한 정보, 복수의 바디(body) 포인트에 대한 정보, 복수의 포즈 값에 대한 정보, 복수의 포즈 값 각각에 대한 평가 정보 등이 저장될 수 있다. 또한, 메모리(140)에는 복수의 포인트 별 ZMS(zero moment shift) 벡터에 대한 정보, 매니퓰레이터(120)의 좌표 계에 대한 정보 등과 같은 다양한 정보가 저장될 수 있다. In particular, in various embodiments according to the present disclosure, the memory 140 includes an image of an object, point cloud information, information about a plurality of edge points, information about a plurality of body points, and information about a plurality of body points. Information on a pause value, evaluation information on each of a plurality of pause values, and the like may be stored. In addition, various types of information such as information on zero moment shift (ZMS) vectors for each of a plurality of points and information on the coordinate system of the manipulator 120 may be stored in the memory 140 .

그 밖에도 본 개시의 목적을 달성하기 위한 범위 내에서 필요한 다양한 정보가 메모리(140)에 저장될 수 있으며, 메모리(140)에 저장된 정보는 서버 또는 외부 장치로부터 수신되거나 사용자에 의해 입력됨에 따라 갱신될 수도 있다.In addition, various information required within the scope of achieving the object of the present disclosure may be stored in the memory 140, and the information stored in the memory 140 may be updated as it is received from a server or an external device or input by a user. may be

프로세서(150)는 로봇(100)의 전반적인 동작을 제어한다. 구체적으로, 프로세서(150)는 카메라(110), 매니퓰레이터(120), 복수의 모터(130) 및 메모리(140)를 포함하는 로봇(100)의 구성과 연결되며, 상술한 바와 같은 메모리(140)에 저장된 적어도 하나의 인스트럭션을 실행함으로써, 로봇(100)의 동작을 전반적으로 제어할 수 있다.The processor 150 controls the overall operation of the robot 100. Specifically, the processor 150 is connected to the configuration of the robot 100 including the camera 110, the manipulator 120, a plurality of motors 130, and the memory 140, and the memory 140 as described above. By executing at least one instruction stored in , it is possible to control the overall operation of the robot 100 .

프로세서(150)는 다양한 방식으로 구현될 수 있다. 예를 들어, 프로세서(150)는 주문형 집적 회로(Application Specific Integrated Circuit, ASIC), 임베디드 프로세서, 마이크로 프로세서, 하드웨어 컨트롤 로직, 하드웨어 유한 상태 기계(hardware Finite State Machine, FSM), 디지털 신호 프로세서(Digital Signal Processor, DSP) 중 적어도 하나로 구현될 수 있다. 한편, 본 개시에서 프로세서(150)라는 용어는 CPU(Central Processing Unit), GPU(Graphic Processing Unit) 및 MPU(Main Processing Unit)등을 포함하는 의미로 사용될 수 있다.Processor 150 may be implemented in a variety of ways. For example, the processor 150 may include an application specific integrated circuit (ASIC), an embedded processor, a microprocessor, hardware control logic, a hardware finite state machine (FSM), a digital signal processor Processor, DSP) may be implemented as at least one. Meanwhile, in the present disclosure, the term processor 150 may be used to include a Central Processing Unit (CPU), a Graphic Processing Unit (GPU), and a Main Processing Unit (MPU).

특히, 본 개시에 따른 다양한 실시 예에 있어서, 프로세서(150)는 오브젝트에 대한 이미지를 기하학적으로 분석하는 것에 기초하여, 오브젝트를 파지하기 위한 매니퓰레이터(120)의 포즈 값을 획득할 수 있다. In particular, in various embodiments according to the present disclosure, the processor 150 may obtain a pose value of the manipulator 120 for gripping the object based on geometrically analyzing an image of the object.

구체적으로, 프로세서(150)는 카메라(110)를 통해 오브젝트에 대한 이미지를 획득할 수 있다. 특히, 본 개시에 있어서 오브젝트에 대한 이미지는 오브젝트에 대한 싱글 뷰(single view) 이미지를 말한다는 것은 전술한 바 있다. Specifically, the processor 150 may acquire an image of an object through the camera 110 . In particular, it has been described above that an image of an object in the present disclosure refers to a single view image of the object.

오브젝트에 대한 이미지가 획득되면, 프로세서(150)는 획득된 이미지에 기초하여 오브젝트를 나타내는 복수의 포인트를 포함하는 포인트 클라우드(point cloud) 정보를 획득할 수 있다. 여기서, 포인트 클라우드란 오브젝트 표면의 점들에 대응되는 복수의 포인트의 집합을 말한다. 구체적으로, 프로세서(150)는 오브젝트에 빛/신호를 전송한 후 빛/신호가 오브젝트의 표면에서 반사되어 카메라(110)에 포함된 이미지 센서에 수신된 시간에 기초하여 오브젝트 표면의 점들에 대한 거리 정보를 산출하고, 그에 기초하여 오브젝트의 표면의 점들에 대응되는 복수의 포인트를 포함하는 포인트 클라우드 정보를 획득할 수 있다. When an image of an object is obtained, the processor 150 may obtain point cloud information including a plurality of points representing the object based on the obtained image. Here, the point cloud refers to a set of a plurality of points corresponding to points on the object surface. Specifically, the processor 150 transmits a light/signal to the object, and then the light/signal is reflected from the surface of the object and is received by the image sensor included in the camera 110, the distance to the points on the surface of the object Information may be calculated, and point cloud information including a plurality of points corresponding to points on the surface of the object may be obtained based on the calculated information.

일 실시 예에 있어서, 프로세서(150)는 포인트 클라우드 정보가 획득되면, 포인트 클라우드 정보에 포함된 노이즈를 제거하기 위한 전처리 과정을 수행하고, 전처리 과정이 수행된 포인트 클라우드 정보에 기초하여 복수의 엣지 포인트 및 복수의 바디 포인트를 식별할 수도 있다. 다만, 전처리 과정은 오브젝트를 파지하기 위한 매니퓰레이터(120)의 포즈 값의 정확도를 높이기 위한 것일 뿐, 본 개시에 있어서 반드시 수행되어야 하는 과정은 아니다. In one embodiment, when the point cloud information is obtained, the processor 150 performs a pre-processing process to remove noise included in the point cloud information, and pluralizes edge points based on the pre-processed point cloud information. and a plurality of body points may be identified. However, the preprocessing process is only for increasing the accuracy of the pose value of the manipulator 120 for gripping the object, and is not a process that must be performed in the present disclosure.

포인트 클라우드 정보가 획득되면, 프로세서(150)는 복수의 포인트 중 오브젝트의 엣지를 나타내는 복수의 엣지 포인트 및 오브젝트의 엣지를 제외한 바디 영역을 나타내는 복수의 바디 포인트를 식별할 수 있다. 즉, 프로세서(150)는 포인트 클라우드 정보에 기초하여 포인트 클라우드 정보에 포함된 복수의 포인트를 복수의 엣지 포인트와 복수의 바디 포인트로 구별할 수 있다. 여기서, 엣지 포인트란 오브젝트의 외곽 영역에 포함되는 포인트를 말하며, 바디 포인트란 물체의 외곽 영역을 제외한 나머지 영역에 포함되는 포인트를 말한다. When the point cloud information is acquired, the processor 150 may identify a plurality of edge points representing the edge of the object and a plurality of body points representing the body area excluding the edge of the object from among the plurality of points. That is, the processor 150 may distinguish a plurality of points included in the point cloud information into a plurality of edge points and a plurality of body points based on the point cloud information. Here, the edge point refers to a point included in the outer area of the object, and the body point refers to a point included in the remaining area excluding the outer area of the object.

일 실시 예에 있어서, 프로세서(150)는 복수의 포인트 별로, 복수의 포인트에서 복수의 포인트를 중심으로 하는 기 설정된 크기의 원 안에 포함된 포인트들의 중심점을 향하는 ZMS(zero moment shift) 벡터를 식별할 수 있다. 복수의 포인트 별로 ZMS 벡터가 식별되면, 프로세서(150)는 복수의 포인트 중 ZMS 벡터의 크기가 기 설정된 임계 값 이상인 벡터들에 대응되는 포인트들을 엣지 포인트로 식별하고, 복수의 포인트 중 ZMS 벡터의 크기가 임계 값 미만인 벡터들에 대응되는 포인트들을 바디 포인트로 식별할 수 있다. 엣지 포인트와 바디 포인트의 식별 과정에 대해서는 도 3 및 도 4를 참조하여 보다 구체적으로 설명한다.In an embodiment, the processor 150 may identify a zero moment shift (ZMS) vector pointing to a center point of points included in a circle having a preset size centered on the plurality of points, for each of the plurality of points. can When ZMS vectors are identified for each of a plurality of points, the processor 150 identifies points corresponding to vectors whose magnitudes of ZMS vectors are equal to or greater than a predetermined threshold among the plurality of points as edge points, and among the plurality of points, the magnitude of ZMS vectors Points corresponding to vectors for which is less than the threshold may be identified as body points. A process of identifying edge points and body points will be described in more detail with reference to FIGS. 3 and 4 .

복수의 엣지 포인트 및 복수의 바디 포인트가 식별되면, 프로세서(150)는 매니퓰레이터(120)가 복수의 엣지 포인트 및 복수의 바디 포인트 중 적어도 일부 포인트들 각각을 파지점으로 하여 오브젝트를 파지하는 경우의 포즈를 나타내는 복수의 포즈 값을 획득할 수 있다. 여기서, 포즈 값이란 매니퓰레이터(120)를 오브젝트의 어떠한 지점에서 어떠한 방향으로 파지할 것인지에 대한 정보를 포함할 수 있다. 그리고, 포즈 값은 파지점에 대한 정보 및 매니퓰레이터(120)의 좌표계를 구성하는 좌표축의 방향에 대한 정보 등을 포함할 수 있다. If the plurality of edge points and the plurality of body points are identified, the processor 150 determines a pose when the manipulator 120 grips the object using at least some of the plurality of edge points and the plurality of body points as gripping points, respectively. It is possible to obtain a plurality of pose values representing . Here, the pose value may include information on which point of the object and in which direction the manipulator 120 is to be held. And, the pose value may include information about the gripping point and information about the direction of the coordinate axes constituting the coordinate system of the manipulator 120, and the like.

구체적으로, 프로세서(150)는 복수의 엣지 포인트와 복수의 바디 포인트 중 적어도 일부 포인트들을 임의로 샘플링하고, 샘플링된 일부 포인트들 각각에 대한 복수의 포즈 값을 획득할 수 있다. 또한, 프로세서(150)는 샘플링 된 일부 포인트가 엣지 포인트인지 아니면 바디 포인트인지에 따라 상이한 방법을 적용하여 복수의 포즈 값을 획득할 수 있다. Specifically, the processor 150 may randomly sample at least some of the plurality of edge points and the plurality of body points, and obtain a plurality of pose values for each of the sampled partial points. Also, the processor 150 may acquire a plurality of pose values by applying different methods depending on whether some of the sampled points are edge points or body points.

일 실시 예에 있어서, 프로세서(150)는 매니퓰레이터(120)의 하박 관절을 향하는 방향과 반대 방향을 향하도록 정의된 매니퓰레이터(120)의 z축이 식별된 엣지 포인트에 대한 ZMS 벡터의 방향에 대응되도록 하고, 매니퓰레이터(120)에 포함된 하나의 핑거에서 반대 방향의 다른 핑거를 향하도록 정의된 매니퓰레이터(120)의 y축이 식별된 엣지 포인트의 표면에 수직인 방향에 대응되도록 하기 위한 매니퓰레이터(120)의 포즈를 식별함으로써, 복수의 포즈 값 중 복수의 엣지 포인트에 대응되는 포즈 값들을 획득할 수 있다. In one embodiment, the processor 150 sets the z-axis of the manipulator 120, which is defined to face in the opposite direction to the direction toward the lower arm joint of the manipulator 120, to correspond to the direction of the ZMS vector for the identified edge point. and the y-axis of the manipulator 120 defined from one finger included in the manipulator 120 to the other finger in the opposite direction corresponds to a direction perpendicular to the surface of the identified edge point. By identifying the pose of , it is possible to obtain pose values corresponding to a plurality of edge points among a plurality of pose values.

일 실시 예에 있어서, 프로세서(150)는 z축이 복수의 포인트의 표면에 수직인 방향에 대응되도록 하고, y축이 복수의 포인트에서 곡률이 가장 큰 방향에 대응되도록 하기 위한 매니퓰레이터(120)의 포즈를 식별함으로써, 복수의 포즈 값 중 복수의 바디 포인트에 대응되는 포즈 값들을 획득할 수 있다. In one embodiment, the processor 150 sets the z-axis to correspond to a direction perpendicular to the surface of the plurality of points, and the y-axis to correspond to the direction of greatest curvature at the plurality of points. By identifying the pose, it is possible to obtain pose values corresponding to a plurality of body points among a plurality of pose values.

복수의 엣지 포인트와 복수의 바디 포인트 중 적어도 일부 포인트들을 샘플링하고 복수의 포즈 값을 획득하는 과정에 대해서는 도 6 내지 8을 참조하여 보다 구체적으로 설명한다. A process of sampling at least some of the plurality of edge points and the plurality of body points and obtaining a plurality of pose values will be described in more detail with reference to FIGS. 6 to 8 .

복수의 포즈 값이 획득되면, 프로세서(150)는 복수의 포즈 값에 따라 매니퓰레이터(120)가 오브젝트를 파지하는 경우의 안정성을 나타내는 평가 정보를 획득할 수 있다. 여기서, 평가 정보는 매니퓰레이터(120)에 포함된 두 개의 핑거의 표면에서 수직인 방향과 두 개의 핑거가 오브젝트와 접촉되는 접촉 영역의 표면에서 수직인 방향 사이의 각도에 따라 산출되는 제1 스코어, 접촉 영역에 포함된 포인트의 개수에 따라 산출되는 제2 스코어, 두 개의 핑거 중 하나의 핑거와 접촉 영역 사이의 거리 및 두 개의 핑거 중 다른 하나의 핑거와 접촉 영역 사이의 거리 사이의 차이에 따라 산출되는 제3 스코어 및 적어도 일부 포인트가 오브젝트의 무게 중심에 가까운지 여부에 따라 산출되는 제4 스코어 중 적어도 하나를 포함할 수 있다. When the plurality of pose values are obtained, the processor 150 may obtain evaluation information indicating stability when the manipulator 120 grips the object according to the plurality of pose values. Here, the evaluation information is a first score calculated according to an angle between a direction perpendicular to the surface of two fingers included in the manipulator 120 and a direction perpendicular to the surface of the contact area where the two fingers contact the object, contact The second score calculated according to the number of points included in the area, the distance between one of the two fingers and the contact area, and the distance between the other one of the two fingers and the contact area Calculated according to the difference It may include at least one of a third score and a fourth score calculated according to whether at least some points are close to the center of gravity of the object.

프로세서(150)는 제1 스코어, 제2 스코어, 제3 스코어 및 제4 스코어의 가중합에 기초하여 최종 스코어를 산출함으로써, 복수의 포즈 값 각각에 대한 평가 정보를 획득할 수 있다. 평가 정보에 포함된 제1 스코어, 제2 스코어, 제3 스코어 및 제4 스코어 각각의 의미에 대해서는 도 9 및 도 10을 참조하여 보다 구체적으로 설명한다. The processor 150 may obtain evaluation information for each of a plurality of pose values by calculating a final score based on a weighted sum of the first score, the second score, the third score, and the fourth score. The meaning of each of the first score, the second score, the third score, and the fourth score included in the evaluation information will be described in more detail with reference to FIGS. 9 and 10 .

평가 정보가 획득되면, 프로세서(150)는 평가 정보에 기초하여 복수의 포즈 값 중 하나의 포즈 값을 식별할 수 있다. 그리고, 복수의 포즈 값 중 하나의 포즈 값이 식별되면, 프로세서(150)는 식별된 하나의 포즈 값에 기초하여 매니퓰레이터(120)가 동작하도록 복수의 모터(130)를 제어할 수 있다. 구체적으로, 프로세서(150)는 복수의 포즈 값 중 평가 정보에 포함된 최종 스코어가 가장 높은 하나의 포즈 값을 식별할 수 있으며, 식별된 하나의 포즈에 기초하여 매니퓰레이터(120)의 동작을 제어함으로써 오브젝트를 파지할 수 있다. When the evaluation information is acquired, the processor 150 may identify one pose value among a plurality of pose values based on the evaluation information. Also, if one of the plurality of pose values is identified, the processor 150 may control the plurality of motors 130 to operate the manipulator 120 based on the identified one pose value. Specifically, the processor 150 may identify one pose value having the highest final score included in the evaluation information among a plurality of pose values, and control the operation of the manipulator 120 based on the identified one pose. Can hold objects.

이상에서 상술한 실시 예, 그리고 이하에서 상세하게 설명할 다양한 실시 예에 따르면, 로봇(100)은 오브젝트에 대한 싱글 뷰 이미지만을 획득하고, 신경망 모델과 딥 러닝 기술을 사용하지 않고 싱글 뷰 이미지를 기하학적으로 분석함으로써, GPU와 같은 고성능의 하드웨어 사용 없이 CPU만을 이용하여 안정적이고도 효율적으로 오브젝트를 파지할 수 있게 된다. 특히, 본 개시에 따르면, 높은 파지율로 오브젝트를 파지할 수 있게 되며, 또한 오브젝트와의 충돌을 최소화하면서 오브젝트의 손상 없이 오브젝트를 파지할 수 있게 된다. According to the embodiments described above and various embodiments to be described in detail below, the robot 100 acquires only a single-view image of an object, and geometrically converts the single-view image without using a neural network model and deep learning technology. By analyzing it, it is possible to stably and efficiently hold an object using only the CPU without using high-performance hardware such as GPU. In particular, according to the present disclosure, an object can be gripped with a high gripping rate, and an object can be gripped without damage to the object while minimizing a collision with the object.

도 3은 본 개시의 일 실시 예에 따른 엣지 포인트와 바디 포인트의 식별 과정에 대해 설명하기 위한 도면이고, 도 4는 본 개시의 일 실시 예에 따른 트루 엣지 포인트와 폴스 엣지 포인트를 구별하는 과정에 대해 설명하기 위한 도면이다. 3 is a diagram for explaining a process of identifying an edge point and a body point according to an embodiment of the present disclosure, and FIG. 4 is a diagram for a process of distinguishing a true edge point from a false edge point according to an embodiment of the present disclosure. It is a drawing for explanation.

도 3의 좌측 도면은 오브젝트를 나타내는 복수의 포인트를 포함하는 포인트 클라우드 정보를 나타내는 도면이다. 그리고, 도 3의 우측 도면은 오브젝트를 나타내는 복수의 포인트 중 두 개의 포인트를 각각 확대하여 나타내는 도면이다.The left view of FIG. 3 is a view showing point cloud information including a plurality of points representing objects. And, the drawing on the right side of FIG. 3 is a drawing showing enlarged two points among a plurality of points representing an object.

전술한 바와 같이, 프로세서(150)는 복수의 포인트 별로 ZMS 벡터를 식별하고, 식별된 ZMS(zero moment shift) 벡터의 크기에 기초하여 복수의 엣지 포인트 및 복수의 바디 포인트를 식별할 수 있다. 구체적으로, 프로세서(150)는 복수의 포인트 별로, 복수의 포인트에서 복수의 포인트를 중심으로 하는 기 설정된 크기의 원 안에 포함된 포인트들의 중심점을 향하는 ZMS 벡터를 식별할 수 있다. 그리고, 프로세서(150)는 복수의 포인트 중 ZMS 벡터의 크기가 기 설정된 임계 값 이상인 벡터들에 대응되는 포인트들을 엣지 포인트로 식별하며, 복수의 포인트 중 ZMS 벡터의 크기가 임계 값 미만인 벡터들에 대응되는 포인트들을 바디 포인트로 식별할 수 있다. As described above, the processor 150 may identify a ZMS vector for each of a plurality of points, and may identify a plurality of edge points and a plurality of body points based on the size of the identified zero moment shift (ZMS) vector. Specifically, the processor 150 may identify, for each plurality of points, a ZMS vector pointing to a center point of points included in a circle having a predetermined size centered on the plurality of points. Then, the processor 150 identifies points corresponding to vectors having a ZMS vector size equal to or greater than a preset threshold among a plurality of points as edge points, and corresponds to vectors having a ZMS vector magnitude less than the threshold value among the plurality of points. Points that become points can be identified as body points.

예를 들어, 프로세서(150)는 도 3에 도시된 바와 같이 포인트 a를 중심으로 하는 기 설정된 원(B) 안에 포함된 포인트들의 중심점을 향하는 ZMS 벡터를 식별할 수 있다. 포인트 a는 오브젝트의 외곽에 대응되는 영역에 포함된 포인트이기 때문에 포인트 a를 중심으로 하는 기 설정된 원(B) 안에 포함된 포인트들의 중심점(예를 들어, 무게 중심을 나타내는 점)은 포인트 a를 기준으로 특정한 방향을 향해 치우쳐 있을 수 있다. 따라서, 포인트 a에 대응되는 ZMS 벡터의 크기(m), 즉 놈(norm)은 0보다 큰 소정의 값을 가질 수 있다. 프로세서(150)는 포인트 a에 대응되는 ZMS 벡터(m)의 크기가 기 설정된 임계 값 이상이면, 포인트 a를 엣지 포인트로 식별할 수 있다. For example, as shown in FIG. 3 , the processor 150 may identify a ZMS vector pointing to a center point of points included in a preset circle B having point a as a center. Since the point a is a point included in the area corresponding to the outer edge of the object, the center points (for example, points representing the center of gravity) of the points included in the preset circle (B) centered on the point a are based on the point a. may be biased in a particular direction. Accordingly, the magnitude (m) of the ZMS vector corresponding to point a, that is, the norm, may have a predetermined value greater than zero. The processor 150 may identify point a as an edge point when the size of the ZMS vector m corresponding to point a is equal to or greater than a predetermined threshold value.

한편, 프로세서(150)는 도 3에 도시된 바와 같이 포인트 b를 중심으로 하는 기 설정된 원(B) 안에 포함된 포인트들의 중심점을 향하는 ZMS 벡터를 식별할 수 있다. 포인트 b는 오브젝트의 외곽을 제외한 나머지 영역에 포함된 포인트이기 때문에 포인트 b를 중심으로 하는 기 설정된 원(B) 안에 포함된 포인트들의 중심점은 포인트 b와 일치하거나 가까운 거리에 위치할 수 있다. 따라서, 포인트 b에 대응되는 ZMS 벡터의 크기(m)는 0에 가까운 값을 가질 수 있다. 프로세서(150)는 포인트 b에 대응되는 ZMS 벡터의 크기가 기 설정된 임계 값 미만이면, 포인트 b를 바디 포인트로 식별할 수 있다. Meanwhile, as shown in FIG. 3 , the processor 150 may identify a ZMS vector pointing to the center point of points included in a preset circle B centered at point b. Since the point b is a point included in the area other than the outer periphery of the object, the center points of the points included in the preset circle B having the point b as the center may coincide with the point b or may be located at a close distance. Accordingly, the magnitude (m) of the ZMS vector corresponding to the point b may have a value close to 0. The processor 150 may identify point b as the body point when the magnitude of the ZMS vector corresponding to point b is less than a predetermined threshold value.

이상에서 엣지 포인트에 대응되는 ZMS 벡터를 식별하기 위한 임계 값과 바디 포인트에 대응되는 ZMS 벡터를 식별하기 위한 임계 값은 서로 동일할 수 있으며, 상이할 수도 있다. 그리고, 엣지 포인트에 대응되는 ZMS 벡터를 식별하기 위한 임계 값과 바디 포인트에 대응되는 ZMS 벡터를 식별하기 위한 임계 값은 사용자 또는 개발자의 설정에 따라 변경될 수 있음은 물론이다. As described above, the threshold value for identifying the ZMS vector corresponding to the edge point and the threshold value for identifying the ZMS vector corresponding to the body point may be the same or different. Further, it is needless to say that the threshold value for identifying the ZMS vector corresponding to the edge point and the threshold value for identifying the ZMS vector corresponding to the body point may be changed according to the settings of the user or developer.

한편, 전술한 바와 같이 본 개시에 있어서 오브젝트에 대한 이미지는 오브젝트에 대한 한 장의 싱글 뷰 이미지를 의미하기 때문에, 오브젝트에 대한 이미지에는 싱글 뷰 이미지만으로는 관측할 수 없는 영역, 즉 비관측 영역(unobservable area)이 포함될 수 있다. 따라서, 상술한 바와 같은 방법으로 엣지 포인트를 식별하는 경우, 실제 오브젝트의 외곽 영역에 포함되는 포인트들이 아닌 비관측 영역의 외곽 영역에 포함되는 포인트들이 엣지 포인트로 식별되는 문제가 발생할 수 있다. On the other hand, as described above, since the image of an object in the present disclosure means one single-view image of the object, the image of the object includes an area that cannot be observed with only a single-view image, that is, an unobservable area. ) may be included. Therefore, when edge points are identified by the above-described method, a problem may arise in that points included in the outer area of the non-observation area are identified as edge points, rather than points included in the outer area of the actual object.

따라서, 프로세서(150)는 상술한 바와 같이 ZMS 벡터의 크기에 기초하여 복수의 엣지 포인트 및 복수의 바디 포인트를 1차적으로 식별한 후, 1차적으로 식별된 복수의 엣지 포인트 중에서 실제 오브젝트의 외곽 영역에 포함되는 트루(true) 엣지 포인트들과 비관측 영역의 외곽 영역에 포함되는 폴스(false) 엣지 포인트들을 구별할 수 있다. Therefore, as described above, the processor 150 primarily identifies the plurality of edge points and the plurality of body points based on the size of the ZMS vector, and then, among the plurality of primarily identified edge points, the outer area of the real object. It is possible to distinguish between true edge points included in and false edge points included in the outer area of the non-observation area.

구체적으로, 프로세서(150)는 엣지 포인트로 식별된 하나의 포인트에 대한 ZMS 벡터와 카메라(110)에서 하나의 포인트를 향하는 레이(ray) 벡터 사이의 각도에 기초하여 트루 엣지 포인트들과 폴스 엣지 포인트들을 식별하고, 식별된 폴스 엣지 포인트들을 바디 포인트들로 취급할 수 있다. 보다 구체적으로, 제1 엣지 포인트에 대한 ZMS 벡터와 카메라(110)에서 제1 엣지 포인트를 향하는 레이 벡터 사이의 각도가 기 설정된 임계 각도 미만이면, 프로세서(150)는 제1 엣지 포인트를 트루 엣지 포인트로 식별할 수 있다. 반면, 제2 엣지 포인트에 대한 ZMS 벡터와 카메라(110)에서 제2 엣지 포인트를 향하는 레이(ray) 벡터 사이의 각도가 기 설정된 임계 각도 이상이면, 프로세서(150)는 제2 엣지 포인트를 폴스 엣지 포인트로 식별할 수 있다. 여기서, 트루 엣지 포인트로 식별된 제1 엣지 포인트는 최종적으로 엣지 포인트로 취급되며, 폴스 엣지 포인트로 식별된 제2 엣지 포인트는 최종적으로 트루 엣지 포인트로 취급될 수 있다. Specifically, the processor 150 determines true edge points and false edge points based on an angle between a ZMS vector for one point identified as an edge point and a ray vector pointing to one point from the camera 110. , and treat the identified false edge points as body points. More specifically, if the angle between the ZMS vector for the first edge point and the ray vector directed from the camera 110 toward the first edge point is less than a preset threshold angle, the processor 150 determines the first edge point as a true edge point. can be identified by On the other hand, if the angle between the ZMS vector for the second edge point and the ray vector directed to the second edge point from the camera 110 is equal to or greater than a preset threshold angle, the processor 150 sets the second edge point as a false edge. points can be identified. Here, the first edge point identified as a true edge point may be finally treated as an edge point, and the second edge point identified as a false edge point may be finally treated as a true edge point.

예를 들어, 도 4를 참조하면, 카메라(110)에서 실제 오브젝트의 외곽 영역에 포함되는 제1 엣지 포인트(

Figure pat00001
)를 향하는 제1 레이 벡터와 제1 엣지 포인트(
Figure pat00002
)의 ZMS 벡터 사이의 각도는 90도 미만이다. 반면, 카메라(110)에서 비관측 영역의 외곽 영역에 포함되는 제2 엣지 포인트(
Figure pat00003
)를 향하는 제2 레이 벡터와 제2 엣지 포인트(
Figure pat00004
)의 ZMS 벡터 사이의 각도는 90도 이상이다. 이 경우, 제1 엣지 포인트는 트루 엣지 포인트로 식별되며 제2 엣지 포인트는 폴스 엣지 포인트로 식별되고, 따라서 제1 엣지 포인트는 최종적으로 엣지 포인트로 취급되는 반면, 제2 엣지 포인트는 최종적으로 바디 포인트로 취급될 수 있다.For example, referring to FIG. 4 , a first edge point included in the outer area of the real object in the camera 110 (
Figure pat00001
) and the first ray vector and the first edge point (
Figure pat00002
) is less than 90 degrees. On the other hand, the second edge point included in the outer area of the non-observation area in the camera 110 (
Figure pat00003
) and the second ray vector and the second edge point (
Figure pat00004
) is greater than 90 degrees. In this case, the first edge point is identified as a true edge point and the second edge point is identified as a false edge point, so the first edge point is finally treated as an edge point, while the second edge point is finally treated as a body point. can be treated as

도 5는 본 개시의 일 실시 예에 따른 비관측 영역의 추정 과정에 대해 설명하기 위한 도면이다. 5 is a diagram for explaining a process of estimating a non-observation area according to an embodiment of the present disclosure.

한편, 전술한 바와 같이 본 개시에 있어서 오브젝트에 대한 이미지에는 싱글 뷰 이미지만으로는 관측할 수 없는 영역, 즉 비관측 영역이 포함될 수 있다. 그리고, 매니퓰레이터(120)를 이용하여 오브젝트를 효과적으로 파지하기 위해서는 비관측 영역을 추정할 필요가 있다. 예를 들어, 도 5의 첫번째 이미지(510)을 참조하면, 카메라(110)를 통해 오브젝트에 대한 이미지를 획득하고 획득된 이미지에 기초하여 포인트 클라우드 정보를 획득하는 경우, 포인트 클라우드 정보는 오브젝트에서 카메라(110)의 반대쪽 표면에 위치한 영역에 대응되는 포인트들에 대한 정보는 포함하지 않게 될 수 있다. Meanwhile, as described above, in the present disclosure, an image of an object may include an area that cannot be observed with only a single view image, that is, a non-observation area. In addition, in order to effectively grip the object using the manipulator 120, it is necessary to estimate the non-observation area. For example, referring to the first image 510 of FIG. 5 , when an image of an object is acquired through the camera 110 and point cloud information is obtained based on the obtained image, the point cloud information is obtained from the object to the camera. Information on points corresponding to areas located on the opposite surface of (110) may not be included.

따라서, 프로세서(150)는 식별된 엣지 포인트에 대한 ZMS 벡터 및 레이 벡터에 기초하여, 이미지에 포함된 비관측 영역에 대응되는 복수의 추정 포인트에 대한 정보를 획득할 수 있다. 여기서, 식별된 엣지 포인트는 비관측 영역과 관측 영역을 구분하는 경계에 대응되는 엣지 포인트이므로, 특히 전술한 바와 같은 폴스 엣지 포인트일 수 있다.Accordingly, the processor 150 may obtain information on a plurality of estimation points corresponding to the non-observation area included in the image, based on the ZMS vector and the ray vector for the identified edge point. Here, since the identified edge point is an edge point corresponding to a boundary dividing the non-observation area and the observation area, it may be a false edge point as described above.

구체적으로, 프로세서(150)는 하나의 엣지 포인트에서부터 그 엣지 포인트에 대한 ZMS 벡터의 반대 방향에 위치하는 기 설정된 길이의 선분을 비관측 영역의 일부로 추정할 수 있다. 여기서, 기 설정된 길이의 선분을 추정하는 것은 폴스 엣지 포인트에서 데이터가 손실될 가능성을 고려하여, 그 손실을 보상하기 위한 것이라고 할 수 있다. 한편, 추정되는 선분의 길이는 사용자 또는 개발자의 설정에 따라 변경될 수 있으며, 오브젝트의 크기에 기초하여 결정될 수도 있다. Specifically, the processor 150 may estimate a line segment of a predetermined length located in the opposite direction of the ZMS vector for the edge point from one edge point as part of the non-observation area. Here, estimating a line segment of a predetermined length may be considered to compensate for the loss in consideration of the possibility of data loss at the false edge point. Meanwhile, the estimated line segment length may be changed according to a setting of a user or developer, and may be determined based on the size of an object.

또한, 프로세서(150)는 추정된 선분에서부터 연장되며, 카메라(110)에서 하나의 엣지 포인트를 향하는 레이 벡터를 벗어나지 않는 곡선을 비관측 영역의 또 다른 일부로 추정할 수 있다. 구체적으로, 비관측 영역의 표면은 레이 벡터와 동일 선상에 위치하거나 레이 벡터에서 오브젝트를 향하는 방향의 안쪽에 위치할 수밖에 없다. 따라서, 프로세서(150)는 앞서 추정된 선분에서부터 지면까지 연장되는 곡선을 레이 벡터를 벗어나지 않는 범위 내에서 추정할 수 있다. 일 실시 예에 있어서, 프로세서(150)는 비관측 영역의 반대쪽 영역과의 대칭성을 고려하여 곡선을 추정할 수도 있으며, 다만 이에 국한되는 것은 아니다.In addition, the processor 150 may estimate a curve that extends from the estimated line segment and does not deviate from a ray vector toward one edge point in the camera 110 as another part of the non-observation area. Specifically, the surface of the non-viewing area cannot but be located on the same line as the ray vector or inside the direction of the ray vector toward the object. Accordingly, the processor 150 may estimate a curve extending from the previously estimated line segment to the ground within a range that does not deviate from the ray vector. In an embodiment, the processor 150 may estimate a curve by considering the symmetry of the non-observed area with the opposite area, but is not limited thereto.

예를 들어, 도 5의 두번째 이미지(520)을 참조하면, 프로세서(150)는 하나의 엣지 포인트(

Figure pat00005
)에서부터 그 엣지 포인트에 대한 ZMS 벡터(m)의 반대 방향에 위치하는 기 설정된 길이의 선분을 추정할 수 있다. 그리고, 프로세서(150)는 추정된 선분에서부터 연장되며, 카메라(110)에서 하나의 엣지 포인트를 향하는 레이 벡터(r)를 벗어나지 않는 곡선을 비관측 영역의 또 다른 일부로 추정할 수 있다. 도 3의 두번째 이미지(520)에서 추정된 비관측 영역을 실선으로 표시하였으며, 도 3의 세번째 이미지(530)에서는 본 개시에 따른 비관측 영역의 추정에 의해 획득된 복수의 추정 포인트들을 나타내었다.For example, referring to the second image 520 of FIG. 5 , the processor 150 has one edge point (
Figure pat00005
), it is possible to estimate a line segment with a preset length located in the opposite direction of the ZMS vector (m) for the edge point. Further, the processor 150 may estimate a curve extending from the estimated line segment and not departing from the ray vector r toward one edge point in the camera 110 as another part of the non-observation area. In the second image 520 of FIG. 3 , the estimated non-observation area is indicated by a solid line, and in the third image 530 of FIG. 3 , a plurality of estimation points obtained by estimating the non-observation area according to the present disclosure are indicated.

상술한 바와 같이 비관측 영역이 추정되면, 프로세서(150)는 비관측 영역에 대응되는 복수의 추정 포인트들을 바디 포인트로 취급하여 복수의 포즈 값을 획득하는데 이용할 수 있다. 또한, 프로세서(150)는 비관측 영역에 대응되는 복수의 추정 포인트들을 후술하는 바와 같은 접촉 영역의 식별에 이용할 수도 있다. 접촉 영역의 식별에 대해서는 도 9를 참조하여 보다 구체적으로 설명한다. As described above, if the non-observation area is estimated, the processor 150 treats a plurality of estimation points corresponding to the non-observation area as body points and uses them to obtain a plurality of pose values. Also, the processor 150 may use a plurality of estimation points corresponding to the non-observation area to identify a contact area as described below. Identification of the contact area will be described in more detail with reference to FIG. 9 .

도 6 내지 도 8은 본 개시의 일 실시 예에 따른 복수의 포즈 값의 획득 과정에 대해 설명하기 위한 도면이다. 6 to 8 are diagrams for explaining a process of obtaining a plurality of pose values according to an embodiment of the present disclosure.

상술한 바와 같은 과정을 통해 복수의 엣지 포인트 및 복수의 바디 포인트가 식별되면, 프로세서(150)는 매니퓰레이터(120)가 복수의 엣지 포인트 및 복수의 바디 포인트 중 적어도 일부 포인트들 각각을 파지점으로 하여 오브젝트를 파지하는 경우의 포즈를 나타내는 복수의 포즈 값을 획득할 수 있다. 여기서, 포즈 값이란 매니퓰레이터(120)를 오브젝트의 어떠한 지점에서 어떠한 방향으로 파지할 것인지를 나타낼 수 있다. 그리고, 포즈 값은 파지점에 대한 정보 및 매니퓰레이터(120)의 좌표계를 구성하는 좌표축의 방향에 대한 정보 등을 포함할 수 있다. When the plurality of edge points and the plurality of body points are identified through the above process, the processor 150 determines that the manipulator 120 uses at least some of the plurality of edge points and the plurality of body points as gripping points, respectively. A plurality of pose values indicating a pose when holding an object may be acquired. Here, the pose value may indicate at which point of the object and in which direction the manipulator 120 is to be gripped. And, the pose value may include information about the gripping point and information about the direction of the coordinate axes constituting the coordinate system of the manipulator 120, and the like.

구체적으로, 프로세서(150)는 복수의 엣지 포인트와 복수의 바디 포인트 중 적어도 일부 포인트들을 임의로 샘플링하고, 샘플링된 일부 포인트들 각각에 대한 복수의 포즈 값을 획득할 수 있다. 또한, 프로세서(150)는 샘플링 된 일부 포인트가 엣지 포인트인지 아니면 바디 포인트인지에 따라 상이한 방법을 적용하여 복수의 포즈 값을 획득할 수 있다. Specifically, the processor 150 may randomly sample at least some of the plurality of edge points and the plurality of body points, and obtain a plurality of pose values for each of the sampled partial points. Also, the processor 150 may acquire a plurality of pose values by applying different methods depending on whether some of the sampled points are edge points or body points.

도 6은 본 개시의 일 실시 예에 따른 매니퓰레이터(120)의 좌표계를 설명하기 위한 도면으로서, 도 6에는 매니퓰레이터(120)의 좌표계에 대응되는 단위 벡터들이 도시되어 있다. 여기서, x축에 대응되는 단위 벡터는

Figure pat00006
, y축에 대응되는 단위 벡터는
Figure pat00007
, 그리고 z축에 대응되는 단위 벡터는
Figure pat00008
로 나타내었다. FIG. 6 is a diagram for explaining the coordinate system of the manipulator 120 according to an embodiment of the present disclosure, and unit vectors corresponding to the coordinate system of the manipulator 120 are shown in FIG. 6 . Here, the unit vector corresponding to the x-axis is
Figure pat00006
, the unit vector corresponding to the y-axis is
Figure pat00007
, and the unit vector corresponding to the z-axis is
Figure pat00008
indicated by

구체적으로, 매니퓰레이터(120) 좌표계의 z축은 매니퓰레이터(120)의 하박 관절을 향하는 방향과 반대 방향을 향하도록 정의될 수 있다. 다시 말해, 매니퓰레이터(120) 좌표계의 z축은 매니퓰레이터(120) 팔의 반대 방향을 향하도록 정의될 수 있다. 그리고, 매니퓰레이터(120) 좌표계의 y축은 매니퓰레이터(120)에 포함된 하나의 핑거에서 반대 방향의 다른 핑거를 향하도록 정의될 수 있다. 다시 말해, 매니퓰레이터(120) 좌표계의 y축은 매니퓰레이터(120)의 핑거가 닫히는 방향과 평행하도록 정의될 수 있다. z축과 y축이 정의되면, 매니퓰레이터(120) 좌표계의 x축은 x축에 대응되는 단위 벡터와 y축에 대응되는 단위 벡터 사이의 외적에 기초하여 결정될 수 있다. Specifically, the z-axis of the coordinate system of the manipulator 120 may be defined to face in a direction opposite to a direction toward the lower arm joint of the manipulator 120 . In other words, the z-axis of the coordinate system of the manipulator 120 may be defined to face the opposite direction of the arm of the manipulator 120 . Also, the y-axis of the coordinate system of the manipulator 120 may be defined from one finger included in the manipulator 120 to another finger in the opposite direction. In other words, the y-axis of the coordinate system of the manipulator 120 may be defined to be parallel to the direction in which the fingers of the manipulator 120 are closed. If the z-axis and the y-axis are defined, the x-axis of the coordinate system of the manipulator 120 may be determined based on a cross product between a unit vector corresponding to the x-axis and a unit vector corresponding to the y-axis.

이하에서는 도 7을 참조하여 본 개시의 일 실시 예에 따른 엣지 포인트에 대한 좌표 값을 획득하는 과정을 설명하고, 도 8을 참조하여 본 개시의 일 실시 예에 따른 바디 포인트에 대한 좌표 값을 획득하는 과정을 설명한다. Hereinafter, a process of obtaining coordinate values for an edge point according to an embodiment of the present disclosure will be described with reference to FIG. 7 , and obtaining coordinate values for a body point according to an embodiment of the present disclosure will be described with reference to FIG. 8 . explain the process of

일 실시 예에 있어서, 프로세서(150)는 매니퓰레이터(120)의 z축이 식별된 엣지 포인트에 대한 ZMS 벡터의 방향에 대응되도록 하고, 매니퓰레이터(120)의 y축이 식별된 엣지 포인트의 표면에 수직인 방향에 대응되도록 하기 매니퓰레이터(120)의 포즈를 식별함으로써, 복수의 포즈 값 중 복수의 엣지 포인트에 대응되는 포즈 값들을 획득할 수 있다. 여기서, 엣지 포인트의 표면에 수직인 방향이란 엣지 포인트에서 지면을 향하는 법선 벡터의 방향을 말한다.In one embodiment, the processor 150 causes the z-axis of the manipulator 120 to correspond to the direction of the ZMS vector for the identified edge point, and the y-axis of the manipulator 120 to be perpendicular to the surface of the identified edge point. Pose values corresponding to a plurality of edge points among a plurality of pose values may be obtained by identifying poses of the manipulator 120 to correspond to the in direction. Here, the direction perpendicular to the surface of the edge point refers to the direction of a normal vector from the edge point toward the ground.

도 7의 예를 참조하면, 매니퓰레이터(120)의 z축이 엣지 포인트(

Figure pat00009
)에 대한 ZMS 벡터의 방향에 대응되도록 하고, 매니퓰레이터(120)의 y축이 엣지 포인트(
Figure pat00010
)의 표면에 수직인 방향에 대응되도록 하기 위한 포즈 값을 획득할 수 있다. 다시 말해, 프로세서(150)는 매니퓰레이터(120) 좌표계의 z축을 해당 엣지 포인트의 ZMS 벡터(
Figure pat00011
) 방향으로 정렬시키고, 매니퓰레이터(120) 좌표계의 y축을 해당 엣지 포인트에서 지면을 향하는 법선 벡터(
Figure pat00012
)의 방향으로 정렬시킴으로써, 각각의 엣지 포인트에 대응되는 포즈 값을 획득할 수 있다.Referring to the example of FIG. 7 , the z-axis of the manipulator 120 is the edge point (
Figure pat00009
), and the y-axis of the manipulator 120 corresponds to the edge point (
Figure pat00010
) It is possible to obtain a pose value to correspond to the direction perpendicular to the surface of the surface. In other words, the processor 150 converts the z-axis of the coordinate system of the manipulator 120 to the ZMS vector of the corresponding edge point (
Figure pat00011
) direction, and the y-axis of the coordinate system of the manipulator 120 is the normal vector pointing to the ground at the corresponding edge point (
Figure pat00012
), it is possible to obtain a pose value corresponding to each edge point.

일 실시 예에 있어서, 프로세서(150)는 매니퓰레이터(120)의 z축이 복수의 포인트의 표면에 수직인 방향에 대응되도록 하고, 매니퓰레이터(120)의 y축이 복수의 포인트에서 곡률(curvature)이 가장 큰 방향에 대응되도록 하기 위한 매니퓰레이터(120)의 포즈를 식별함으로써, 복수의 포즈 값 중 복수의 바디 포인트에 대응되는 포즈 값들을 획득할 수 있다. 여기서, 바디 포인트의 표면에 수직인 방향이란 바디 포인트에서 지면을 향하는 법선 벡터의 방향을 말한다. In one embodiment, the processor 150 causes the z-axis of the manipulator 120 to correspond to a direction perpendicular to the surface of a plurality of points, and the y-axis of the manipulator 120 to have curvature at the plurality of points. By identifying the pose of the manipulator 120 to correspond to the largest direction, it is possible to obtain pose values corresponding to a plurality of body points among a plurality of pose values. Here, the direction perpendicular to the surface of the body point refers to a direction of a normal vector from the body point toward the ground.

도 8의 예를 참조하면, 매니퓰레이터(120)의 z축이 바디 포인트(

Figure pat00013
)의 표면에 수직인 방향에 대응되도록 하고, 매니퓰레이터(120)의 y축이 바디 포인트(
Figure pat00014
)에서 곡률이 가장 큰 방향에 대응되도록 하기 위한 포즈 값을 식별할 수 있다. 다시 말해, 프로세서(150)는 매니퓰레이터(120) 좌표계의 z축을 해당 바디 포인트에서 지면을 향하는 법선 벡터의 방향으로 정렬시키고, 매니퓰레이터(120) 좌표계의 y축은 해당 바디 포인트에서 곡률이 가장 큰 방향, x축은 해당 바디 포인트에서 곡률이 가장 작은 방향으로 정렬시킴으로써, 각각의 바디 포인트에 대응되는 포즈 값을 획득할 수 있다.Referring to the example of FIG. 8 , the z-axis of the manipulator 120 is the body point (
Figure pat00013
), and the y-axis of the manipulator 120 corresponds to the body point (
Figure pat00014
), it is possible to identify a pose value for corresponding to the direction in which the curvature is greatest. In other words, the processor 150 aligns the z axis of the coordinate system of the manipulator 120 with the direction of the normal vector from the body point to the ground, and the y axis of the coordinate system of the manipulator 120 is the direction of greatest curvature at the body point, x A pose value corresponding to each body point may be obtained by aligning the axis in a direction having the smallest curvature at the corresponding body point.

한편, 상술한 바와 같이 임의로 샘플링된 엣지 포인트들과 바디 포인트들에 대응되는 포즈 값들이 획득되면, 프로세서(150)는 획득된 포즈 값들에 기초하여 포즈 값들을 증강시킬 수 있다. 구체적으로, 프로세서(150)는 복수의 엣지 포인트에 대응되는 포즈 값들 및 복수의 바디 포인트에 대응되는 포즈 값들의 일부 좌표축을 변경함으로써, 복수의 포즈 값을 증강시킬 수 있다. Meanwhile, when pose values corresponding to randomly sampled edge points and body points are obtained as described above, the processor 150 may augment the pose values based on the obtained pose values. Specifically, the processor 150 may augment a plurality of pose values by changing some coordinate axes of pose values corresponding to a plurality of edge points and pose values corresponding to a plurality of body points.

다시 말해, 프로세서(150)는 임의로 샘플링된 엣지 포인트들과 바디 포인트들에 대응되는 포즈 값들을 획득하기 위한 과정(소위 coarse 샘플링 과정이라고 지칭될 수 있음)을 수행한 후, 획득된 포즈 값들이 나타내는 x축, y축 또는 z축 중 적어도 하나의 좌표축을 기 설정됨 임계 각도 내에서 변경함으로써, 복수의 포즈 값을 증강시키는 과정(소위 fine 샘플링 과정이라고 지칭될 수 있음)을 수행할 수 있다. 이에 따라, 프로세서는 효율적인 방법으로 많은 개수의 포즈 값을 획득할 수 있게 된다. In other words, the processor 150 performs a process for obtaining pose values corresponding to randomly sampled edge points and body points (which may be referred to as a so-called coarse sampling process), and then the obtained pose values indicate A process of augmenting a plurality of pose values (which may be referred to as a so-called fine sampling process) may be performed by changing at least one coordinate axis among the x-axis, y-axis, and z-axis within a preset threshold angle. Accordingly, the processor can obtain a large number of pose values in an efficient manner.

도 9 및 도 10은 본 개시의 일 실시 예에 따른 평가 정보에 대해 상세하게 설명하기 위한 도면이다. 9 and 10 are diagrams for explaining in detail evaluation information according to an embodiment of the present disclosure.

전술한 바와 같이, 복수의 포즈 값이 획득되면, 프로세서(150)는 복수의 포즈 값에 따라 매니퓰레이터(120)가 오브젝트를 파지하는 경우의 안정성을 나타내는 평가 정보를 획득할 수 있다. 여기서, 평가 정보는 후술하는 바와 같은 제1 스코어, 제2 스코어, 제3 스코어 및 제4 스코어 등을 포함할 수 있다.As described above, when a plurality of pose values are obtained, the processor 150 may obtain evaluation information representing stability when the manipulator 120 grips an object according to the plurality of pose values. Here, the evaluation information may include a first score, a second score, a third score, and a fourth score as described later.

이하에서는 도 9를 참조하여, 매니퓰레이터(120)의 접촉 영역에 대해 정의하고, 도 10을 참조하여 본 개시에 따른 제1 스코어, 제2 스코어, 제3 스코어 및 제4 스코어에 대해 상세하게 설명한다. Hereinafter, the contact area of the manipulator 120 is defined with reference to FIG. 9, and the first score, the second score, the third score, and the fourth score according to the present disclosure are described in detail with reference to FIG. 10. .

매니퓰레이터(120)의 접촉 영역은 도 9에 도시된 바와 같이 정의될 수 있다. 구체적으로, 매니퓰레이터(120)에 포함된 두 개의 핑거의 표면들 사이의 영역은 클로징 영역(closing region)으로 정의될 수 있으며, 클로징 영역에서 두 개의 핑거가 오브젝트와 접촉되는 영역 소정의 두께(tc)를 갖는 영역이 접촉 영역(contact region)으로 정의될 수 있다. 그리고, 접촉 영역은 두 개의 핑거 중 하나의 핑거가 오브젝트와 접촉되는 영역인 좌측 접촉 영역(left contact region) 및 두 개의 핑거 중 다른 하나의 핑거가 오브젝트와 접촉되는 영역인 우측 접촉 영역(right contact region)을 포함할 수 있다.The contact area of the manipulator 120 may be defined as shown in FIG. 9 . Specifically, a region between the surfaces of two fingers included in the manipulator 120 may be defined as a closing region, and a region where the two fingers contact the object in the closing region has a predetermined thickness (t c ) may be defined as a contact region. And, the contact region is a left contact region where one of the two fingers comes into contact with the object and a right contact region where the other one of the two fingers comes into contact with the object. ) may be included.

한편, 전술한 바와 같이 오브젝트에 대한 이미지에는 비관측 영역이 포함될 수 있으며, 프로세서(150)는 비관측 영역에 대응되는 복수의 추정 포인트에 대한 정보를 획득할 수 있다. 그리고, 비관측 영역에 대응되는 복수의 추정 포인트에 대한 정보가 획득되면, 프로세서(150)는 두 개의 핑거의 표면적에 대한 정보, 매니퓰레이터(120)의 복수의 엣지 포인트, 복수의 바디 포인트 및 복수의 추정 포인트에 기초하여 접촉 영역을 식별할 수 있다.Meanwhile, as described above, the image of the object may include a non-observation area, and the processor 150 may obtain information on a plurality of estimation points corresponding to the non-observation area. Then, when information on a plurality of estimated points corresponding to the non-observation area is obtained, the processor 150 obtains information on the surface areas of the two fingers, a plurality of edge points of the manipulator 120, a plurality of body points, and a plurality of A contact area may be identified based on the estimated point.

제1 스코어는 매니퓰레이터(120)에 포함된 두 개의 핑거의 표면에서 수직인 방향과 두 개의 핑거가 오브젝트와 접촉되는 접촉 영역의 표면에서 수직인 방향 사이의 각도에 따라 산출될 수 있다. 구체적으로, 두 개의 핑거의 표면에서 수직인 방향과 두 개의 핑거가 오브젝트와 접촉되는 접촉 영역의 표면에서 수직인 방향이 일치할수록 제1 스코어는 높게 산출될 수 있다. 즉, 매니퓰레이터(120)에 포함된 두 개의 핑거 표면의 법선 벡터의 방향과 접촉 영역의 법선 벡터(

Figure pat00015
,
Figure pat00016
)의 방향이 일치할수록 제1 스코어는 높게 산출될 수 있는바, 이는 두 개의 핑거에서 전달되는 힘이 많이 전달될수록 높은 스코어를 할당하기 위한 것이라고 할 수 있다. 제1 스코어는 소위 antipodal quality를 평가하기 위한 것이라고 할 수 있다. The first score may be calculated according to an angle between a direction perpendicular to the surface of the two fingers included in the manipulator 120 and a direction perpendicular to the surface of the contact area where the two fingers come into contact with an object. Specifically, the first score may be calculated higher as the direction perpendicular to the surface of the two fingers coincides with the direction perpendicular to the surface of the contact area where the two fingers contact the object. That is, the direction of the normal vector of the two finger surfaces included in the manipulator 120 and the normal vector of the contact area (
Figure pat00015
,
Figure pat00016
), the first score can be calculated higher as the directions of the two fingers coincide, which can be said to assign a higher score as more force transmitted from the two fingers is transmitted. The first score can be said to be for evaluating the so-called antipodal quality.

제2 스코어는 접촉 영역에 포함된 포인트의 개수에 따라 산출될 수 있다. 구체적으로, 제2 스코어는 매니퓰레이터(120)에 포함된 두 개의 핑거가 오브젝트와 접촉되는 면적이 넓을수록 높게 산출될 수 있다. 이는 두 개의 핑거와 접촉 면적 사이의 마찰력이 높을수록 높은 스코어를 할당하기 위한 것이라고 할 수 있다. 제2 스코어는 소위 contact quality를 평가하기 위한 것이라고 할 수 있다.The second score may be calculated according to the number of points included in the contact area. Specifically, the second score may be calculated higher as the contact area of the two fingers included in the manipulator 120 with the object is wider. This can be said to assign a higher score as the frictional force between the two fingers and the contact area is higher. The second score can be said to be for evaluating so-called contact quality.

제3 스코어는 두 개의 핑거 중 하나의 핑거와 접촉 영역 사이의 거리 및 두 개의 핑거 중 다른 하나의 핑거와 접촉 영역 사이의 거리 사이의 차이에 따라 산출될 수 있다. 구체적으로, 제3 스코어는 좌측 접촉 면적과 우측 접촉 면적이 오브젝트의 중심을 기준으로 좌우 대칭에 가까울수록 높게 산출될 수 있다. 제3 스코어는 소위 displacement quality를 평가하기 위한 것이라고 할 수 있다.The third score may be calculated according to the difference between the distance between one of the two fingers and the contact area and the distance between the other one of the two fingers and the contact area. Specifically, the third score may be calculated higher as the left contact area and the right contact area are closer to left-right symmetry with respect to the center of the object. The third score may be for evaluating so-called displacement quality.

제4 스코어는 상기 복수의 엣지 포인트 및 상기 복수의 바디 포인트 중 적어도 일부 포인트가 오브젝트의 무게 중심에 가까운지 여부에 따라 산출될 수 있다. 구체적으로, 제4 스코어는 복수의 포즈 값을 획득하는데 이용된 포인트가 오브젝트의 무게 중심에 가까울수록 높게 산출될 수 있다. 제1 스코어는 소위 gravity quality를 평가하기 위한 것이라고 할 수 있다.The fourth score may be calculated according to whether at least some of the plurality of edge points and the plurality of body points are close to the center of gravity of the object. Specifically, the fourth score may be calculated higher as points used to obtain the plurality of pose values are closer to the center of gravity of the object. The first score can be said to be for evaluating the so-called gravity quality.

상술한 바와 같이, 제1 스코어, 제2 스코어, 제3 스코어 및 제4 스코어가 획득되면, 프로세서(150)는 제1 스코어, 제2 스코어, 제3 스코어 및 제4 스코어의 가중합에 기초하여 최종 스코어를 산출함으로써, 복수의 포즈 값 각각에 대한 평가 정보를 획득할 수 있다. As described above, when the first score, the second score, the third score, and the fourth score are obtained, the processor 150 calculates based on the weighted sum of the first score, the second score, the third score, and the fourth score. By calculating the final score, evaluation information for each of a plurality of pose values may be obtained.

복수의 포즈 값 중 하나의 포즈 값이 식별되면, 프로세서(150)는 식별된 하나의 포즈 값에 기초하여 매니퓰레이터(120)가 동작하도록 복수의 모터(130)를 제어할 수 있다. 구체적으로, 프로세서(150)는 복수의 포즈 값 중 평가 정보에 포함된 최종 스코어가 가장 높은 하나의 포즈 값을 식별할 수 있으며, 식별된 하나의 포즈에 기초하여 매니퓰레이터(120)의 동작을 제어함으로써 오브젝트를 파지할 수 있다. If one of the plurality of pose values is identified, the processor 150 may control the plurality of motors 130 to operate the manipulator 120 based on the identified one pose value. Specifically, the processor 150 may identify one pose value having the highest final score included in the evaluation information among a plurality of pose values, and control the operation of the manipulator 120 based on the identified one pose. Can hold objects.

한편, 이상에서는 제1 스코어, 제2 스코어, 제3 스코어 및 제4 스코어에 기초하여 매니퓰레이터(120)가 오브젝트를 파지하는 경우의 안정성을 나타내는 평가 정보를 획득하는 과정에 대해 설명하였으나, 이는 일 실시 예에 불과할 뿐, 매니퓰레이터(120)가 오브젝트를 파지하는 경우의 안정성을 나타낼 수 있는 다양한 방법이 본 개시에 적용될 수 있음은 물론이다. Meanwhile, in the foregoing, a process of obtaining evaluation information representing stability when the manipulator 120 grips an object based on the first score, the second score, the third score, and the fourth score has been described, but this is an exemplary embodiment. It is only an example, and various methods capable of indicating stability when the manipulator 120 grips an object can be applied to the present disclosure, of course.

특히, 본 개시에 있어서는 인공 지능 모델 내지는 신경망 모델을 이용하지 않고, 상술한 바와 같은 제1 스코어, 제2 스코어, 제3 스코어 및 제4 스코어를 이용하여 매니퓰레이터(120)가 오브젝트를 파지하는 경우의 안정성을 나타내는 평가 정보를 획득할 수 있는바, 이에 따라 GPU(graphics processing unit)를 이용하여 높은 리소스를 사용하지 않고도 CPU (central processing unit)만을 이용하여 매니퓰레이터(120)가 오브젝트를 파지하는 경우의 안정성을 평가할 수 있게 된다.In particular, in the present disclosure, the case where the manipulator 120 grips an object using the first score, the second score, the third score, and the fourth score as described above without using an artificial intelligence model or a neural network model. Evaluation information indicating stability may be obtained, and thus stability when the manipulator 120 grips an object using only a central processing unit (CPU) without using high resources using a graphics processing unit (GPU). can be evaluated.

도 11은 본 개시의 일 실시 예에 따른 로봇(100)의 구성을 상세하게 나타내는 블록도이다. 11 is a block diagram showing the configuration of the robot 100 according to an embodiment of the present disclosure in detail.

도 2에 도시된 바와 같이, 본 개시의 일 실시 예에 따른 로봇(100)은 카메라(110), 매니퓰레이터(120), 복수의 모터(130)를 포함한다. 또한, 도 3에 도시된 바와 같이, 본 개시의 일 실시 예에 따른 로봇(100)은 통신 인터페이스(170), 입력 인터페이스(180) 및 출력 인터페이스(190)를 더 포함할 수 있다. 그러나, 도 2 및 도 3에 도시된 바와 같은 구성들은 예시적인 것에 불과할 뿐이며, 본 개시를 실시함에 있어 도 2 및 도 3에 도시된 바와 같은 구성에 더하여 새로운 구성이 추가되거나 일부 구성이 생략될 수 있음은 물론이다.As shown in FIG. 2 , the robot 100 according to an embodiment of the present disclosure includes a camera 110 , a manipulator 120 , and a plurality of motors 130 . In addition, as shown in FIG. 3 , the robot 100 according to an embodiment of the present disclosure may further include a communication interface 170, an input interface 180, and an output interface 190. However, the configurations shown in FIGS. 2 and 3 are merely exemplary, and new configurations may be added or some configurations may be omitted in addition to the configurations shown in FIGS. 2 and 3 in practicing the present disclosure. Of course there is.

센서(160)는 로봇(100) 내부 및 외부의 다양한 정보를 감지할 수 있다. 구체적으로, 센서(160)는 GPS(Global Positioning System) 센서(160), 자이로 센서(160)(gyro sensor, gyroscope), 가속도 센서(160)(acceleration sensor, accelerometer), 라이다 센서(160)(lidar sensor), 관성 센서(160)(Inertial Measurement Unit, IMU) 및 모션 센서(160) 중 적어도 하나를 포함할 수 있다. 뿐만 아니라, 센서(160)는 온도 센서(160), 습도 센서(160), 적외선 센서(160), 바이오 센서(160) 등과 같은 다양한 종류의 센서(160)를 포함할 수도 있다. The sensor 160 may detect various information inside and outside the robot 100 . Specifically, the sensor 160 includes a Global Positioning System (GPS) sensor 160, a gyro sensor 160 (gyro sensor, gyroscope), an acceleration sensor 160 (acceleration sensor, accelerometer), and a lidar sensor 160 ( lidar sensor), an inertial sensor 160 (Inertial Measurement Unit, IMU), and a motion sensor 160. In addition, the sensor 160 may include various types of sensors 160 such as a temperature sensor 160, a humidity sensor 160, an infrared sensor 160, and a biosensor 160.

특히, 본 개시에 따른 다양한 실시 예에 있어서, 프로세서(150)는 센서(160)를 통해 로봇(100)과 오브젝트 사이의 거리, 오브젝트의 움직임 등과 같은 다양한 정보를 획득할 수 있으며, 이와 같이 획득된 정보들은 매니퓰레이터(120)의 동작을 제어하여 오브젝트를 파지함에 있어서 매니퓰레이터(120)의 포즈 값과 함께 이용될 수도 있다.In particular, in various embodiments according to the present disclosure, the processor 150 may acquire various information such as the distance between the robot 100 and an object, the motion of the object, etc. through the sensor 160, The information may be used together with the pose value of the manipulator 120 in gripping an object by controlling the operation of the manipulator 120 .

통신 인터페이스(170)는 회로를 포함하며, 서버 또는 외부 장치와의 통신을 수행할 수 있다. 구체적으로, 프로세서(150)는 통신 인터페이스(170)를 통해 연결된 서버 또는 외부 장치로부터 각종 데이터 또는 정보를 수신할 수 있으며, 서버 또는 외부 장치로 각종 데이터 또는 정보를 전송할 수도 있다.The communication interface 170 includes a circuit and can perform communication with a server or an external device. Specifically, the processor 150 may receive various data or information from a server or an external device connected through the communication interface 170, and may transmit various data or information to the server or external device.

통신 인터페이스(170)는 WiFi 모듈, Bluetooth 모듈, 무선 통신 모듈, NFC 모듈 및 UWB 모듈(Ultra Wide Band) 중 적어도 하나를 포함할 수 있다. 구체적으로, WiFi 모듈과 Bluetooth 모듈 각각은 WiFi 방식, Bluetooth 방식으로 통신을 수행할 수 있다. WiFi 모듈이나 Bluetooth 모듈을 이용하는 경우에는 SSID 등과 같은 각종 연결 정보를 먼저 송수신하여, 이를 이용하여 통신 연결한 후 각종 정보들을 송수신할 수 있다. The communication interface 170 may include at least one of a WiFi module, a Bluetooth module, a wireless communication module, an NFC module, and a UWB module (Ultra Wide Band). Specifically, each of the WiFi module and the Bluetooth module may perform communication using a WiFi method or a Bluetooth method. In the case of using a WiFi module or a Bluetooth module, various connection information such as an SSID is first transmitted and received, and various information can be transmitted and received after communication is connected using this.

또한, 무선 통신 모듈은 IEEE, Zigbee, 3G(3rd Generation), 3GPP(3rd Generation Partnership Project), LTE(Long Term Evolution), 5G(5th Generation) 등과 같은 다양한 통신 규격에 따라 통신을 수행할 수 있다. 그리고, NFC 모듈은 135kHz, 13.56MHz, 433MHz, 860~960MHz, 2.45GHz 등과 같은 다양한 RF-ID 주파수 대역들 중에서 13.56MHz 대역을 사용하는 NFC(Near Field Communication) 방식으로 통신을 수행할 수 있다. 또한, UWB 모듈은 UWB 안테나 간 통신을 통하여, 펄스가 목표물에 도달하는 시간인 ToA(Time of Arrival), 송신 장치에서의 펄스 도래각인 AoA(Ange of Arrival)을 정확히 측정할 수 있고, 이에 따라 실내에서 수십 cm 이내의 오차 범위에서 정밀한 거리 및 위치 인식이 가능하다.In addition, the wireless communication module may perform communication according to various communication standards such as IEEE, Zigbee, 3rd Generation (3G), 3rd Generation Partnership Project (3GPP), Long Term Evolution (LTE), and 5th Generation (5G). In addition, the NFC module may perform communication using a Near Field Communication (NFC) method using a 13.56 MHz band among various RF-ID frequency bands such as 135 kHz, 13.56 MHz, 433 MHz, 860 ~ 960 MHz, and 2.45 GHz. In addition, the UWB module can accurately measure Time of Arrival (ToA), which is the time at which a pulse arrives at a target, and Ange of Arrival (AoA), which is the angle of arrival of a pulse in a transmitting device, through communication between UWB antennas. It is possible to recognize precise distance and location within the error range of several tens of cm.

특히, 본 개시에 따른 다양한 실시 예에 있어서, 프로세서(150)는 오브젝트에 대한 이미지, 포인트 클라우드 정보, 복수의 엣지 포인트에 대한 정보, 복수의 바디 포인트에 대한 정보, 복수의 포즈 값에 대한 정보, 복수의 포즈 값 각각에 대한 평가 정보, 복수의 포인트 별 ZMS(zero moment shift) 벡터에 대한 정보, 매니퓰레이터(120)의 좌표 계에 대한 정보 등을 서버 또는 외부 장치로 전송하도록 통신 인터페이스(170)를 제어할 수 있으며, 통신 인터페이스(170)를 통해 상술한 정보 등을 비롯한 다양한 정보를 수신할 수도 있다. In particular, in various embodiments according to the present disclosure, the processor 150 may include an image of an object, point cloud information, information about a plurality of edge points, information about a plurality of body points, information about a plurality of pose values, The communication interface 170 is used to transmit evaluation information for each of a plurality of pose values, information on zero moment shift (ZMS) vectors for each of a plurality of points, and information on the coordinate system of the manipulator 120 to a server or an external device. It can be controlled, and various information including the above information can be received through the communication interface 170.

입력 인터페이스(180)는 회로를 포함하며, 프로세서(150)는 입력 인터페이스(180)를 통해 로봇(100)의 동작을 제어하기 위한 사용자 명령을 수신할 수 있다. 구체적으로, 입력 인터페이스(180)는 마이크, 카메라(110)(미도시), 및 리모컨 신호 수신부(미도시) 등과 같은 구성으로 이루어 질 수 있다. 그리고, 입력 인터페이스(180)는 터치 스크린으로서 디스플레이에 포함된 형태로 구현될 수도 있다. 특히, 마이크는 음성 신호를 수신하고, 수신된 음성 신호를 전기 신호로 변환할 수 있다.The input interface 180 includes a circuit, and the processor 150 may receive a user command for controlling the operation of the robot 100 through the input interface 180 . Specifically, the input interface 180 may include components such as a microphone, a camera 110 (not shown), and a remote control signal receiver (not shown). Also, the input interface 180 may be implemented as a touch screen included in a display. In particular, the microphone may receive a voice signal and convert the received voice signal into an electrical signal.

특히, 본 개시에 따른 다양한 실시 예에 있어서, 프로세서(150)는 입력 인터페이스(180)를 통해 매니퓰레이터(120)를 이용하여 오브젝트를 파지하기 위한 사용자 명령을 수신할 수 있다. In particular, in various embodiments according to the present disclosure, the processor 150 may receive a user command for gripping an object using the manipulator 120 through the input interface 180 .

출력 인터페이스(190)는 회로를 포함하며, 프로세서(150)는 출력 인터페이스(190)를 통해 로봇(100)이 수행할 수 있는 다양한 기능을 출력할 수 있다. 그리고, 출력 인터페이스(190)는 디스플레이, 스피커 및 인디케이터 중 적어도 하나를 포함할 수 있다.The output interface 190 includes a circuit, and the processor 150 may output various functions that the robot 100 may perform through the output interface 190 . Also, the output interface 190 may include at least one of a display, a speaker, and an indicator.

디스플레이는 프로세서(150)의 제어에 의하여 영상 데이터를 출력할 수 있다. 구체적으로, 디스플레이는 프로세서(150)의 제어에 의하여 메모리(140)에 기 저장된 영상을 출력할 수 있다. 특히, 본 개시의 일 실시 예에 따른 디스플레이는 메모리(140)에 저장된 사용자 인터페이스(User Interface)를 표시할 수도 있다. The display may output image data under the control of the processor 150 . Specifically, the display may output an image pre-stored in the memory 140 under the control of the processor 150 . In particular, the display according to an embodiment of the present disclosure may display a user interface stored in the memory 140 .

디스플레이는 LCD(Liquid Crystal Display Panel), OLED(Organic Light Emitting Diodes) 등으로 구현될 수 있으며, 또한 디스플레이는 경우에 따라 플렉서블 디스플레이, 투명 디스플레이 등으로 구현되는 것도 가능하다. 다만, 본 개시에 따른 디스플레이가 특정한 종류에 한정되는 것은 아니다.The display may be implemented with a liquid crystal display panel (LCD), organic light emitting diodes (OLED), or the like, and the display may also be implemented with a flexible display, a transparent display, or the like, depending on circumstances. However, the display according to the present disclosure is not limited to a specific type.

스피커는 프로세서(150)의 제어에 의하여 오디오 데이터를 출력할 수 있으며, 인디케이터는 프로세서(150)의 제어에 의하여 점등될 수 있다.The speaker may output audio data under the control of the processor 150, and the indicator may be turned on under the control of the processor 150.

특히, 본 개시에 따른 다양한 실시 예에 있어서, 프로세서(150)는 출력 인터페이스(190)를 통해 오브젝트의 파지가 진행 중임을 나타내는 정보, 오브젝트의 파지가 완료되었음을 나타내는 정보 등과 같은 다양한 정보를 출력할 수 있다. In particular, in various embodiments according to the present disclosure, the processor 150 may output various information, such as information indicating that object grasping is in progress, information indicating that object grasping has been completed, and the like, through the output interface 190. there is.

도 12는 본 개시의 일 실시 예에 따른 로봇(100)의 제어 방법을 나타내는 흐름도이다.12 is a flowchart illustrating a control method of the robot 100 according to an embodiment of the present disclosure.

도 12를 참조하면, 로봇(100)은 카메라(110)를 통해 오브젝트에 대한 이미지를 획득할 수 있다(S1210). 특히, 본 개시에 있어서 오브젝트에 대한 이미지는 오브젝트에 대한 싱글 뷰(single view) 이미지를 말한다는 것은 전술한 바 있다. Referring to FIG. 12 , the robot 100 may acquire an image of an object through the camera 110 (S1210). In particular, it has been described above that an image of an object in the present disclosure refers to a single view image of the object.

오브젝트에 대한 이미지가 획득되면, 로봇(100)은 획득된 이미지에 기초하여 오브젝트를 나타내는 복수의 포인트를 포함하는 포인트 클라우드(point cloud) 정보를 획득할 수 있다(S1210).When an image of an object is obtained, the robot 100 may obtain point cloud information including a plurality of points representing the object based on the obtained image (S1210).

일 실시 예에 있어서, 로봇(100)은 포인트 클라우드 정보가 획득되면, 포인트 클라우드 정보에 포함된 노이즈를 제거하기 위한 전처리 과정을 수행하고, 전처리 과정이 수행된 포인트 클라우드 정보에 기초하여 복수의 엣지 포인트 및 복수의 바디 포인트를 식별할 수도 있다.In one embodiment, when point cloud information is acquired, the robot 100 performs a pre-processing process for removing noise included in the point cloud information, and pluralizes edge points based on the pre-processed point cloud information. and a plurality of body points may be identified.

포인트 클라우드 정보가 획득되면, 로봇(100)은 복수의 포인트 중 오브젝트의 엣지를 나타내는 복수의 엣지 포인트 및 오브젝트의 엣지를 제외한 바디 영역을 나타내는 복수의 바디 포인트를 식별할 수 있다(S1230).When the point cloud information is obtained, the robot 100 may identify a plurality of edge points representing the edge of the object and a plurality of body points representing the body area excluding the edge of the object from among the plurality of points (S1230).

일 실시 예에 있어서, 로봇(100)은 복수의 포인트 별로, 복수의 포인트에서 복수의 포인트를 중심으로 하는 기 설정된 크기의 원 안에 포함된 포인트들의 중심점을 향하는 ZMS(zero moment shift) 벡터를 식별할 수 있다. 복수의 포인트 별로 ZMS 벡터가 식별되면, 로봇(100)은 복수의 포인트 중 ZMS 벡터의 크기가 기 설정된 임계 값 이상인 벡터들에 대응되는 포인트들을 엣지 포인트로 식별하며, 복수의 포인트 중 ZMS 벡터의 크기가 임계 값 미만인 벡터들에 대응되는 포인트들을 바디 포인트로 식별할 수 있다.In one embodiment, the robot 100 identifies a zero moment shift (ZMS) vector directed toward the center point of points included in a circle having a preset size centered on the plurality of points, for each of the plurality of points. can When ZMS vectors are identified for each of a plurality of points, the robot 100 identifies points corresponding to vectors whose magnitudes of ZMS vectors are equal to or greater than a predetermined threshold among the plurality of points as edge points, and among the plurality of points, the magnitudes of ZMS vectors Points corresponding to vectors for which is less than the threshold may be identified as body points.

복수의 엣지 포인트 및 복수의 바디 포인트가 식별되면, 로봇(100)은 매니퓰레이터(120)가 복수의 엣지 포인트 및 복수의 바디 포인트 중 적어도 일부 포인트들 각각을 파지점으로 하여 오브젝트를 파지하는 경우의 포즈를 나타내는 복수의 포즈 값을 획득할 수 있다(S1240).If the plurality of edge points and the plurality of body points are identified, the robot 100 poses when the manipulator 120 grips the object by using at least some of the plurality of edge points and the plurality of body points as gripping points, respectively. It is possible to obtain a plurality of pause values representing (S1240).

구체적으로, 로봇(100)은 복수의 엣지 포인트와 복수의 바디 포인트 중 적어도 일부 포인트들을 임의로 샘플링하고, 샘플링된 일부 포인트들 각각에 대한 복수의 포즈 값을 획득할 수 있다. 또한, 로봇(100)은 샘플링 된 일부 포인트가 엣지 포인트인지 아니면 바디 포인트인지에 따라 상이한 방법을 적용하여 복수의 포즈 값을 획득할 수 있다. Specifically, the robot 100 may randomly sample at least some of the plurality of edge points and the plurality of body points, and obtain a plurality of pose values for each of the sampled partial points. In addition, the robot 100 may acquire a plurality of pose values by applying different methods depending on whether some of the sampled points are edge points or body points.

일 실시 예에 있어서, 로봇(100)은 매니퓰레이터(120)의 하박 관절을 향하는 방향과 반대 방향을 향하도록 정의된 z축이 식별된 엣지 포인트에 대한 ZMS 벡터의 방향에 대응되도록 하고, 매니퓰레이터(120)에 포함된 하나의 핑거에서 반대 방향의 다른 핑거를 향하도록 정의된 y축이 식별된 엣지 포인트의 표면에 수직인 방향에 대응되도록 하기 위한 매니퓰레이터(120)의 포즈를 식별함으로써, 복수의 포즈 값 중 복수의 엣지 포인트에 대응되는 포즈 값들을 획득할 수 있다. In one embodiment, the robot 100 makes the z-axis defined to face the direction opposite to the direction toward the lower arm joint of the manipulator 120 correspond to the direction of the ZMS vector for the identified edge point, and the manipulator 120 ) By identifying the pose of the manipulator 120 so that the y-axis defined from one finger to the other finger in the opposite direction corresponds to the direction perpendicular to the surface of the identified edge point, a plurality of pose values Among them, pose values corresponding to a plurality of edge points may be obtained.

일 실시 예에 있어서, 로봇(100)은 z축이 복수의 포인트의 표면에 수직인 방향에 대응되도록 하고, y축이 복수의 포인트에서 곡률이 가장 큰 방향에 대응되도록 하기 위한 매니퓰레이터(120)의 포즈를 식별함으로써, 복수의 포즈 값 중 복수의 바디 포인트에 대응되는 포즈 값들을 획득할 수 있다. In one embodiment, the robot 100 has a z-axis corresponding to a direction perpendicular to the surface of a plurality of points, and a y-axis of the manipulator 120 to correspond to a direction with the greatest curvature at the plurality of points. By identifying the pose, it is possible to obtain pose values corresponding to a plurality of body points among a plurality of pose values.

복수의 포즈 값이 획득되면, 로봇(100)은 복수의 포즈 값에 따라 매니퓰레이터(120)가 오브젝트를 파지하는 경우의 안정성을 나타내는 평가 정보를 획득할 수 있다(S1250).When a plurality of pose values are obtained, the robot 100 may obtain evaluation information representing stability when the manipulator 120 grips an object according to the plurality of pose values (S1250).

여기서, 평가 정보는 매니퓰레이터(120)에 포함된 두 개의 핑거의 표면에서 수직인 방향과 두 개의 핑거가 오브젝트와 접촉되는 접촉 영역의 표면에서 수직인 방향 사이의 각도에 따라 산출되는 제1 스코어, 접촉 영역에 포함된 포인트의 개수에 따라 산출되는 제2 스코어, 두 개의 핑거 중 하나의 핑거와 접촉 영역 사이의 거리 및 두 개의 핑거 중 다른 하나의 핑거와 접촉 영역 사이의 거리 사이의 차이에 따라 산출되는 제3 스코어 및 적어도 일부 포인트가 오브젝트의 무게 중심에 가까운지 여부에 따라 산출되는 제4 스코어 중 적어도 하나를 포함할 수 있다. Here, the evaluation information is a first score calculated according to an angle between a direction perpendicular to the surface of two fingers included in the manipulator 120 and a direction perpendicular to the surface of the contact area where the two fingers contact the object, contact The second score calculated according to the number of points included in the area, the distance between one of the two fingers and the contact area, and the distance between the other one of the two fingers and the contact area Calculated according to the difference It may include at least one of a third score and a fourth score calculated according to whether at least some points are close to the center of gravity of the object.

로봇(100)은 제1 스코어, 제2 스코어, 제3 스코어 및 제4 스코어의 가중합에 기초하여 최종 스코어를 산출함으로써, 복수의 포즈 값 각각에 대한 평가 정보를 획득할 수 있다.The robot 100 may obtain evaluation information for each of a plurality of pose values by calculating a final score based on a weighted sum of the first score, the second score, the third score, and the fourth score.

평가 정보가 획득되면, 로봇(100)은 평가 정보에 기초하여 복수의 포즈 값 중 하나의 포즈 값을 식별할 수 있다(S1260). 복수의 포즈 값 중 하나의 포즈 값이 식별되면, 로봇(100)은 식별된 하나의 포즈 값에 기초하여 매니퓰레이터(120)가 동작하도록 복수의 모터(130)를 제어할 수 있다(S1270). 구체적으로, 로봇(100)은 복수의 포즈 값 중 평가 정보에 포함된 최종 스코어가 가장 높은 하나의 포즈 값을 식별할 수 있으며, 식별된 하나의 포즈에 기초하여 매니퓰레이터(120)의 동작을 제어함으로써 오브젝트를 파지할 수 있다. When the evaluation information is acquired, the robot 100 may identify one pose value among a plurality of pose values based on the evaluation information (S1260). If one of the plurality of pose values is identified, the robot 100 may control the plurality of motors 130 to operate the manipulator 120 based on the identified one pose value (S1270). Specifically, the robot 100 may identify one pose value having the highest final score included in the evaluation information among a plurality of pose values, and control the operation of the manipulator 120 based on the identified one pose. Can hold objects.

한편, 상술한 실시 예에 따른 로봇의 제어 방법은 프로그램으로 구현되어 로봇에 제공될 수 있다. 특히, 로봇의 제어 방법을 포함하는 프로그램은 비일시적 판독 가능 매체(non-transitory computer readable medium)에 저장되어 제공될 수 있다. Meanwhile, the robot control method according to the above-described embodiment may be implemented as a program and provided to the robot. In particular, a program including a method for controlling a robot may be stored and provided in a non-transitory computer readable medium.

구체적으로, 로봇의 제어 방법을 실행하는 프로그램을 포함하는 비일시적 컴퓨터 판독 가능 기록매체에 있어서, 로봇의 제어 방법은 오브젝트에 대한 이미지를 획득하는 단계, 획득된 이미지에 기초하여 오브젝트를 나타내는 복수의 포인트를 포함하는 포인트 클라우드 정보(point cloud information)를 획득하는 단계, 복수의 포인트 중 오브젝트의 엣지(edge)를 나타내는 복수의 엣지 포인트 및 오브젝트의 엣지를 제외한 바디(body) 영역을 나타내는 복수의 바디 포인트를 식별하는 단계, 매니퓰레이터(120)가 복수의 엣지 포인트 및 복수의 바디 포인트 중 적어도 일부 포인트들 각각을 파지점으로 하여 오브젝트를 파지하는 경우의 포즈를 나타내는 복수의 포즈 값을 획득하는 단계, 복수의 포즈 값에 따라 매니퓰레이터(120)가 오브젝트를 파지하는 경우의 안정성을 나타내는 평가 정보를 획득하는 단계, 평가 정보에 기초하여 복수의 포즈 값 중 하나의 포즈 값을 식별하는 단계 및 식별된 하나의 포즈 값에 기초하여 매니퓰레이터(120)가 동작하도록 복수의 모터(130)를 제어하는 단계를 포함할 수 있다. Specifically, in a non-transitory computer-readable recording medium containing a program that executes a method for controlling a robot, the method for controlling a robot includes acquiring an image of an object, a plurality of points indicating the object based on the acquired image. Obtaining point cloud information including a plurality of edge points representing an edge of an object among a plurality of points and a plurality of body points representing a body area excluding the edge of the object Identifying, obtaining a plurality of pose values indicating poses when the manipulator 120 grips an object using at least some of the plurality of edge points and the plurality of body points as gripping points, the plurality of poses Obtaining evaluation information representing stability when the manipulator 120 grips the object according to the values, identifying one pose value among a plurality of pose values based on the evaluation information, and determining the identified one pose value. Based on the method, a step of controlling the plurality of motors 130 to operate the manipulator 120 may be included.

이상에서 로봇의 제어 방법, 그리고 로봇의 제어 방법을 실행하는 프로그램을 포함하는 컴퓨터 판독 가능 기록매체에 대해 간략하게 설명하였으나, 이는 중복 설명을 생략하기 위한 것일 뿐이며, 로봇에 대한 다양한 실시 예는 로봇의 제어 방법, 그리고 로봇의 제어 방법을 실행하는 프로그램을 포함하는 컴퓨터 판독 가능 기록매체에 대해서도 적용될 수 있음은 물론이다.In the above, the control method of the robot and the computer readable recording medium including the program for executing the control method of the robot have been briefly described, but this is only for omitting redundant description, and various embodiments of the robot Of course, it can also be applied to a computer readable recording medium including a control method and a program for executing the control method of the robot.

기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적 저장매체'는 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다. 예로, '비일시적 저장매체'는 데이터가 임시적으로 저장되는 버퍼를 포함할 수 있다.The device-readable storage medium may be provided in the form of a non-transitory storage medium. Here, 'non-temporary storage medium' only means that it is a tangible device and does not contain signals (e.g., electromagnetic waves), and this term refers to the case where data is stored semi-permanently in the storage medium and temporary It does not discriminate if it is saved as . For example, a 'non-temporary storage medium' may include a buffer in which data is temporarily stored.

일 실시 예에 따르면, 본 문서에 개시된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품(예: 다운로더블 앱(downloadable app))의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리(140)와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.According to one embodiment, the method according to various embodiments disclosed in this document may be included and provided in a computer program product. Computer program products may be traded between sellers and buyers as commodities. A computer program product is distributed in the form of a device-readable storage medium (eg compact disc read only memory (CD-ROM)), or through an application store (eg Play Store TM ) or between two user devices ( It can be distributed (eg downloaded or uploaded) online, directly between smartphones. In the case of online distribution, at least a portion of a computer program product (eg, a downloadable app) is a device-readable storage such as a manufacturer's server, an application store's server, or a relay server's memory 140. It can be at least temporarily stored in a medium or temporarily created.

이상에서 상술한 바와 같은 본 개시의 다양한 실시 예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시 예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. Each of the components (eg, modules or programs) according to various embodiments of the present disclosure as described above may be composed of a single object or a plurality of entities, and some of the sub-components described above are omitted. or other sub-elements may be further included in various embodiments. Alternatively or additionally, some components (eg, modules or programs) may be integrated into one entity and perform the same or similar functions performed by each corresponding component prior to integration.

다양한 실시 예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.According to various embodiments, operations performed by modules, programs, or other components may be executed sequentially, in parallel, repetitively, or heuristically, or at least some operations may be executed in a different order, may be omitted, or other operations may be added. can

한편, 본 개시에서 사용된 용어 "부" 또는 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. "부" 또는 "모듈"은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 모듈은 ASIC(application-specific integrated circuit)으로 구성될 수 있다.On the other hand, the term "unit" or "module" used in the present disclosure includes units composed of hardware, software, or firmware, and may be used interchangeably with terms such as logic, logic blocks, parts, or circuits, for example. can A “unit” or “module” may be an integrated component or a minimum unit or part thereof that performs one or more functions. For example, the module may be composed of an application-specific integrated circuit (ASIC).

본 개시의 다양한 실시 예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media에 저장된 명령어를 포함하는 소프트웨어로 구현될 수 있다. 기기는 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 전자 장치(예: 로봇(100))를 포함할 수 있다. Various embodiments of the present disclosure may be implemented as software including commands stored in a storage medium readable by a machine (eg, a computer). The device calls the stored commands 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.

상기 명령이 프로세서에 의해 실행될 경우, 프로세서가 직접 또는 상기 프로세서의 제어 하에 다른 구성요소들을 이용하여 상기 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. When the command is executed by a processor, the processor may directly or use other elements under the control of the processor to perform a function corresponding to the command. An instruction may include code generated or executed by a compiler or interpreter.

이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시가 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안 될 것이다.Although the preferred embodiments of the present disclosure have been shown and described above, the present disclosure is not limited to the specific embodiments described above, and is common in the art to which the disclosure belongs without departing from the gist of the present disclosure claimed in the claims. Of course, various modifications are possible by those with knowledge of, and these modifications should not be individually understood from the technical spirit or perspective of the present disclosure.

100: 로봇 110: 카메라
120: 매니퓰레이터 130: 복수의 모터
140: 메모리
100: robot 110: camera
120: manipulator 130: multiple motors
140: memory

Claims (10)

로봇에 있어서,
카메라;
매니퓰레이터(manipulator);
상기 매니퓰레이터의 동작을 제어하기 위한 복수의 모터;
적어도 하나의 인스트럭션(instructions)을 저장하는 메모리; 및
상기 적어도 하나의 인스트럭션을 실행하는 프로세서; 를 포함하고,
상기 프로세서는,
상기 카메라를 통해 오브젝트에 대한 이미지를 획득하고,
상기 획득된 이미지에 기초하여 상기 오브젝트를 나타내는 복수의 포인트를 포함하는 포인트 클라우드 정보(point cloud information)를 획득하며,
상기 복수의 포인트 중 상기 오브젝트의 엣지(edge)를 나타내는 복수의 엣지 포인트 및 상기 오브젝트의 엣지를 제외한 바디(body) 영역을 나타내는 복수의 바디 포인트를 식별하고,
상기 매니퓰레이터가 상기 복수의 엣지 포인트 및 상기 복수의 바디 포인트 중 적어도 일부 포인트들 각각을 파지점으로 하여 상기 오브젝트를 파지하는 경우의 포즈를 나타내는 복수의 포즈 값을 획득하며,
상기 복수의 포즈 값에 따라 상기 매니퓰레이터가 상기 오브젝트를 파지하는 경우의 안정성을 나타내는 평가 정보를 획득하고,
상기 평가 정보에 기초하여 상기 복수의 포즈 값 중 하나의 포즈 값을 식별하고,
상기 식별된 하나의 포즈 값에 기초하여 상기 매니퓰레이터가 동작하도록 상기 복수의 모터를 제어하는 로봇.
in robots,
camera;
manipulators;
a plurality of motors for controlling the operation of the manipulator;
a memory for storing at least one instruction; and
a processor to execute the at least one instruction; including,
the processor,
Obtaining an image of an object through the camera,
Obtaining point cloud information including a plurality of points representing the object based on the obtained image;
Identifying a plurality of edge points representing an edge of the object and a plurality of body points representing a body area excluding the edge of the object among the plurality of points;
obtaining a plurality of pose values representing a pose when the manipulator grips the object by using at least some of the plurality of edge points and the plurality of body points as gripping points, respectively;
obtaining evaluation information representing stability when the manipulator grips the object according to the plurality of pose values;
Identifying one pose value among the plurality of pose values based on the evaluation information;
A robot that controls the plurality of motors to operate the manipulator based on the identified one pose value.
제1 항에 있어서,
상기 프로세서는,
상기 복수의 포인트 별로, 상기 복수의 포인트에서 상기 복수의 포인트를 중심으로 하는 기 설정된 크기의 원 안에 포함된 포인트들의 중심점을 향하는 ZMS(zero moment shift) 벡터를 식별하고,
상기 복수의 포인트 중 상기 ZMS 벡터의 크기가 기 설정된 임계 값 이상인 벡터들에 대응되는 포인트들을 상기 엣지 포인트로 식별하며,
상기 복수의 포인트 중 상기 ZMS 벡터의 크기가 상기 임계 값 미만인 벡터들에 대응되는 포인트들을 상기 바디 포인트로 식별하는 로봇.
According to claim 1,
the processor,
For each of the plurality of points, a zero moment shift (ZMS) vector directed from the plurality of points to a center point of points included in a circle having a preset size centered on the plurality of points is identified,
Among the plurality of points, points corresponding to vectors having a magnitude of the ZMS vector greater than or equal to a predetermined threshold value are identified as the edge points;
Among the plurality of points, the robot identifies points corresponding to vectors in which the size of the ZMS vector is less than the threshold value as the body point.
제2 항에 있어서,
상기 프로세서는,
상기 엣지 포인트로 식별된 하나의 포인트에 대한 ZMS 벡터와 상기 카메라에서 상기 하나의 포인트를 향하는 레이(ray) 벡터 사이의 각도가 기 설정된 임계 각도 이상이면, 상기 하나의 포인트를 상기 바디 포인트로 식별하는 로봇.
According to claim 2,
the processor,
If the angle between the ZMS vector for the one point identified as the edge point and the ray vector directed from the camera to the one point is equal to or greater than a preset threshold angle, identifying the one point as the body point robot.
제3 항에 있어서,
상기 프로세서는,
상기 매니퓰레이터의 하박 관절을 향하는 방향과 반대 방향을 향하도록 정의된 상기 매니퓰레이터의 z축이 상기 식별된 엣지 포인트에 대한 ZMS 벡터의 방향에 대응되도록 하고, 상기 매니퓰레이터에 포함된 하나의 핑거에서 반대 방향의 다른 핑거를 향하도록 정의된 상기 매니퓰레이터의 y축이 상기 식별된 엣지 포인트의 표면에 수직인 방향에 대응되도록 하기 위한 상기 매니퓰레이터의 포즈를 식별함으로써, 상기 복수의 포즈 값 중 상기 복수의 엣지 포인트에 대응되는 포즈 값들을 획득하는 로봇.
According to claim 3,
the processor,
The z-axis of the manipulator, which is defined to face in a direction opposite to the direction toward the lower arm joint of the manipulator, corresponds to the direction of the ZMS vector for the identified edge point, and in one finger included in the manipulator, in the opposite direction Corresponding to the plurality of edge points among the plurality of pose values by identifying poses of the manipulator so that the y-axis of the manipulator, which is defined to face the other finger, corresponds to a direction perpendicular to the surface of the identified edge points. A robot that obtains the pose values to be.
제4 항에 있어서,
상기 프로세서는,
상기 z축이 상기 복수의 포인트의 표면에 수직인 방향에 대응되도록 하고, 상기 y축이 상기 복수의 포인트에서 곡률이 가장 큰 방향에 대응되도록 하기 위한 상기 매니퓰레이터의 포즈를 식별함으로써, 상기 복수의 포즈 값 중 상기 복수의 바디 포인트에 대응되는 포즈 값들을 획득하는 로봇.
According to claim 4,
the processor,
The plurality of poses by identifying a pose of the manipulator so that the z-axis corresponds to a direction perpendicular to the surface of the plurality of points and the y-axis corresponds to a direction of greatest curvature at the plurality of points A robot that obtains pose values corresponding to the plurality of body points among values.
제5 항에 있어서,
상기 프로세서는,
상기 복수의 엣지 포인트에 대응되는 포즈 값들 및 상기 복수의 바디 포인트에 대응되는 포즈 값들의 일부 좌표축을 변경함으로써, 상기 복수의 포즈 값을 증강시키는 로봇.
According to claim 5,
the processor,
A robot that augments the plurality of pose values by changing some coordinate axes of pose values corresponding to the plurality of edge points and pose values corresponding to the plurality of body points.
제6 항에 있어서,
상기 평가 정보는 상기 매니퓰레이터에 포함된 두 개의 핑거의 표면에서 수직인 방향과 상기 두 개의 핑거가 상기 오브젝트와 접촉되는 접촉 영역의 표면에서 수직인 방향 사이의 각도에 따라 산출되는 제1 스코어, 상기 접촉 영역에 포함된 포인트의 개수에 따라 산출되는 제2 스코어, 상기 두 개의 핑거 중 하나의 핑거와 상기 접촉 영역 사이의 거리 및 상기 두 개의 핑거 중 다른 하나의 핑거와 상기 접촉 영역 사이의 거리 사이의 차이에 따라 산출되는 제3 스코어 및 상기 적어도 일부 포인트가 상기 오브젝트의 무게 중심에 가까운지 여부에 따라 산출되는 제4 스코어 중 적어도 하나를 포함하는 로봇.
According to claim 6,
The evaluation information is a first score calculated according to an angle between a direction perpendicular to the surface of two fingers included in the manipulator and a direction perpendicular to the surface of the contact area where the two fingers contact the object, the contact A second score calculated according to the number of points included in the area, a difference between the distance between one of the two fingers and the contact area and the distance between the other of the two fingers and the contact area A robot including at least one of a third score calculated according to and a fourth score calculated according to whether the at least some points are close to the center of gravity of the object.
제7 항에 있어서,
상기 프로세서는,
상기 제1 스코어, 상기 제2 스코어, 상기 제3 스코어 및 상기 제4 스코어의 가중합에 기초하여 최종 스코어를 산출함으로써, 상기 복수의 포즈 값 각각에 대한 평가 정보를 획득하는 로봇.
According to claim 7,
the processor,
A robot that obtains evaluation information for each of the plurality of pose values by calculating a final score based on a weighted sum of the first score, the second score, the third score, and the fourth score.
제8 항에 있어서,
상기 프로세서는,
상기 식별된 엣지 포인트에 대한 ZMS 벡터 및 상기 레이 벡터에 기초하여, 상기 이미지에 포함된 비관측 영역에 대응되는 복수의 추정 포인트에 대한 정보를 획득하고,
상기 두 개의 핑거의 표면적에 대한 정보, 상기 매니퓰레이터의 복수의 엣지 포인트, 상기 복수의 바디 포인트 및 상기 복수의 추정 포인트에 기초하여 상기 접촉 영역을 식별하는 로봇.
According to claim 8,
the processor,
Obtaining information on a plurality of estimation points corresponding to a non-observation area included in the image based on the ZMS vector and the ray vector for the identified edge point;
and identifying the contact area based on the information on the surface areas of the two fingers, the plurality of edge points of the manipulator, the plurality of body points, and the plurality of estimated points.
매니퓰레이터(manipulator) 및 상기 매니퓰레이터의 동작을 제어하기 위한 복수의 모터를 포함하는 로봇의 제어 방법에 있어서,
오브젝트에 대한 이미지를 획득하는 단계;
상기 획득된 이미지에 기초하여 상기 오브젝트를 나타내는 복수의 포인트를 포함하는 포인트 클라우드 정보(point cloud information)를 획득하는 단계;
상기 복수의 포인트 중 상기 오브젝트의 엣지(edge)를 나타내는 복수의 엣지 포인트 및 상기 오브젝트의 엣지를 제외한 바디(body) 영역을 나타내는 복수의 바디 포인트를 식별하는 단계;
상기 매니퓰레이터가 상기 복수의 엣지 포인트 및 상기 복수의 바디 포인트 중 적어도 일부 포인트들 각각을 파지점으로 하여 상기 오브젝트를 파지하는 경우의 포즈를 나타내는 복수의 포즈 값을 획득하는 단계;
상기 복수의 포즈 값에 따라 상기 매니퓰레이터가 상기 오브젝트를 파지하는 경우의 안정성을 나타내는 평가 정보를 획득하는 단계;
상기 평가 정보에 기초하여 상기 복수의 포즈 값 중 하나의 포즈 값을 식별하는 단계; 및
상기 식별된 하나의 포즈 값에 기초하여 상기 매니퓰레이터가 동작하도록 상기 복수의 모터를 제어하는 단계; 를 포함하는 로봇.
A control method of a robot including a manipulator and a plurality of motors for controlling the operation of the manipulator, comprising:
acquiring an image of the object;
obtaining point cloud information including a plurality of points representing the object based on the obtained image;
identifying a plurality of edge points representing an edge of the object and a plurality of body points representing a body area excluding the edge of the object from among the plurality of points;
obtaining a plurality of pose values representing poses when the manipulator grips the object by using at least some of the plurality of edge points and the plurality of body points as gripping points;
obtaining evaluation information representing stability when the manipulator grips the object according to the plurality of pose values;
identifying one of the plurality of pose values based on the evaluation information; and
controlling the plurality of motors to operate the manipulator based on the identified one pose value; A robot comprising a.
KR1020220062330A 2021-08-30 2022-05-20 Robot and controlling method of robot KR20230032852A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020210114667 2021-08-30
KR20210114667 2021-08-30

Publications (1)

Publication Number Publication Date
KR20230032852A true KR20230032852A (en) 2023-03-07

Family

ID=85513526

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220062330A KR20230032852A (en) 2021-08-30 2022-05-20 Robot and controlling method of robot

Country Status (1)

Country Link
KR (1) KR20230032852A (en)

Similar Documents

Publication Publication Date Title
US10222868B2 (en) Wearable device and control method using gestures
Li Human–robot interaction based on gesture and movement recognition
US9811555B2 (en) Recognition of free-form gestures from orientation tracking of a handheld or wearable device
JP6927938B2 (en) Robot system incorporating cloud service system
US11625841B2 (en) Localization and tracking method and platform, head-mounted display system, and computer-readable storage medium
EP3007030B1 (en) Portable device and control method via gestures
Gośliński et al. Performance comparison of EKF-based algorithms for orientation estimation on Android platform
WO2020190166A1 (en) Method and system for grasping an object by means of a robotic device
US11279036B2 (en) Methods and systems for implementing customized motions based on individual profiles for identified users
CN103529944A (en) Human body movement identification method based on Kinect
CN109955244B (en) Grabbing control method and device based on visual servo and robot
EP3725217A1 (en) Electronic device and method for measuring heart rate
CN113119104B (en) Mechanical arm control method, mechanical arm control device, computing equipment and system
Barber et al. Visual and tactile interfaces for bi-directional human robot communication
KR20230032852A (en) Robot and controlling method of robot
CN111290574A (en) Method and device for controlling unmanned aerial vehicle by using gestures and readable storage medium
WO2023250267A1 (en) Robotic learning of tasks using augmented reality
KR102565444B1 (en) Method and apparatus for identifying object
JP6455869B2 (en) Robot, robot system, control device, and control method
US10678337B2 (en) Context aware movement recognition system
CN114882587A (en) Method, apparatus, electronic device, and medium for generating countermeasure sample
CN116600945A (en) Pixel-level prediction for grab generation
JP2021122868A (en) Robot, control method, information processor, and program
US10902629B2 (en) Information processing device, information processing method, and program
JP7265656B2 (en) Methods and systems for recognizing human activity in industrial environments