KR102260751B1 - Electronic device and control method thereof - Google Patents

Electronic device and control method thereof Download PDF

Info

Publication number
KR102260751B1
KR102260751B1 KR1020200129248A KR20200129248A KR102260751B1 KR 102260751 B1 KR102260751 B1 KR 102260751B1 KR 1020200129248 A KR1020200129248 A KR 1020200129248A KR 20200129248 A KR20200129248 A KR 20200129248A KR 102260751 B1 KR102260751 B1 KR 102260751B1
Authority
KR
South Korea
Prior art keywords
coding robot
information
control
coding
obtaining
Prior art date
Application number
KR1020200129248A
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 주식회사 로보그램인공지능로봇연구소
Priority to KR1020200129248A priority Critical patent/KR102260751B1/en
Priority to PCT/KR2020/018083 priority patent/WO2022075529A1/en
Application granted granted Critical
Publication of KR102260751B1 publication Critical patent/KR102260751B1/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/1694Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
    • B25J9/1697Vision controlled systems
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J11/00Manipulators not otherwise provided for
    • B25J11/0005Manipulators having means for high-level communication with users, e.g. speech generator, face recognition means
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/003Controls for manipulators by means of an audio-responsive input
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1628Programme controls characterised by the control loop
    • B25J9/1653Programme controls characterised by the control loop parameters identification, estimation, stiffness, accuracy, error analysis
    • 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/1679Programme controls characterised by the tasks executed
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B19/00Teaching not covered by other main groups of this subclass
    • G09B19/0053Computers, e.g. programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Robotics (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Educational Administration (AREA)
  • Educational Technology (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Manipulator (AREA)

Abstract

Disclosed is a control method of a coding robot. According to the present invention, the control method of the coding robot comprises: a step in which the coding robot acquires information of a subject to be recognized; a step in which the coding robot acquires control data based on the acquired information of the subject to be recognized; a step in which the coding robot determines whether the control data matches preset control information; a step in which the coding robot performs an operation corresponding to the preset control command when the control data matches the preset control information; and a step in which the coding robot analyzes the control data and matches one of the preset control commands when the control data do not match the preset control information. The control data are at least one of emotion data and speech data of the subject to be recognized. The present invention aims to provide an electronic device and a control method thereof, which are able to determine the emotion or speech of a subject to be recognized.

Description

전자 장치 및 그의 제어 방법{Electronic device and control method thereof}Electronic device and control method thereof

본 발명은 전자 장치 및 그의 제어 방법에 관한 것이다. The present invention relates to an electronic device and a method for controlling the same.

최근에는 코딩 교육이 의무화가 되면서 어린 시절부터 소프트웨어와 친해질 수 있도록, 각종 IT(Information Technology) 기술이 접목된 스마트 토이(Smart Toy)가 관심을 끌고 있고, 그 중 하나가 상기 코딩 로봇이다.Recently, as coding education becomes compulsory, smart toys incorporating various information technology (IT) technologies are attracting attention, and one of them is the coding robot.

그러나, 종래 코딩 로봇은, 코딩 작업에 의해서만 코딩 로봇이 작동됨으로써, 상기 코딩 로봇을 작동시키기 위해서는 코딩 교육이 꼭 선행되어야 하고, 그러한 코딩 교육이 선행되었더라도 만들어진 코딩에 오류가 있거나 코딩 실력이 부족하면 상기 코딩 로봇이 작동되지 않음에 따라, 상기 코딩 로봇에 대한 흥미가 급격히 감소되는 문제가 있었다.However, in the conventional coding robot, since the coding robot is operated only by the coding task, coding education must be preceded in order to operate the coding robot, and even if such coding education is preceded, if there is an error in the coding made or lack of coding skills, As the coding robot is not operated, there is a problem that interest in the coding robot is rapidly reduced.

나아가, 종래의 코딩 로봇은 단순한 코딩 명령에 대한 단순한 동작만을 수행할 수 있어, 코딩 로봇의 사용자와의 다양한 인터랙션이 불가능하다는 한계가 존재하였다.Furthermore, since the conventional coding robot can only perform simple operations for simple coding commands, there is a limitation in that various interactions with the user of the coding robot are impossible.

이에 따라 쉽게 동작하되 사용자의 감정 등과 같은 다양한 입력에 따라 다양한 동작을 구현할 수 있는 코딩 로봇의 필요성이 대두되고 있다.Accordingly, the need for a coding robot that can operate easily but can implement various operations according to various inputs such as user's emotions is emerging.

공개특허공보 제10-2020-0093933호, 2020.08.06Laid-open Patent Publication No. 10-2020-0093933, 2020.08.06

본 발명이 해결하고자 하는 과제는 전자 장치 및 그의 제어 방법을 제공하는 것이다.An object of the present invention is to provide an electronic device and a method for controlling the same.

본 발명이 해결하고자 하는 과제들은 이상에서 언급된 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The problems to be solved by the present invention are not limited to the problems mentioned above, and other problems not mentioned will be clearly understood by those skilled in the art from the following description.

상술한 과제를 해결하기 위한 본 발명의 일 면에 따른 코딩 로봇의 제어 방법은, 상기 코딩 로봇이, 인식 대상자의 정보를 획득하는 단계; 상기 코딩 로봇이, 상기 획득된 인식 대상자의 정보를 바탕으로 제어 데이터를 획득하는 단계; 상기 코딩 로봇이, 상기 제어 데이터가 기 설정된 제어 정보와 일치하는지 여부를 판단하는 단계; 상기 코딩 로봇이, 상기 제어 데이터가 기 설정된 제어 정보와 일치하는 경우, 상기 기 설정된 제어 명령에 대응되는 동작을 수행하는 단계; 및 상기 코딩 로봇이, 상기 제어 데이터가 기 설정된 제어 정보와 일치하지 않는 경우, 상기 제어 데이터를 분석하여, 기 설정된 제어 명령 중 어느 하나와 매칭 시키는 단계;를 포함하고, 상기 제어 데이터는, 상기 인식 대상자의 감정 데이터 및 음성 데이터 중 적어도 하나의 데이터인 것을 특징으로 한다.A control method of a coding robot according to an aspect of the present invention for solving the above-described problems, the coding robot, the steps of obtaining information of the subject to be recognized; obtaining, by the coding robot, control data based on the acquired information of the subject to be recognized; determining, by the coding robot, whether the control data matches preset control information; performing, by the coding robot, an operation corresponding to the preset control command when the control data matches preset control information; and analyzing, by the coding robot, when the control data does not match preset control information, and matching the control data with any one of preset control commands. It is characterized in that the data is at least one of emotional data and voice data of the subject.

이때, 상기 제어 데이터가 상기 인식 대상자의 감정 데이터인 경우, 상기 제어 데이터를 획득하는 단계는, 상기 코딩 로봇이, 상기 인식 대상자의 얼굴 촬영 이미지를 획득하는 단계; 상기 코딩 로봇이, 상기 얼굴 촬영 이미지를 바탕으로 모델 변수를 획득하는 단계; 상기 코딩 로봇이, 상기 획득된 모델 변수를 바탕으로 상기 인식 대상자가 기 등록된 사용자의 얼굴과 일치하는지 판단하는 단계; 상기 인식 대상자가, 상기 기 등록된 사용자와 일치하는 경우, 상기 코딩 로봇이, 상기 얼굴 촬영 이미지를 바탕으로 상기 얼굴 촬영 이미지에 대응되는 특징값을 획득하는 단계; 상기 코딩 로봇이, 상기 획득된 특징값을 바탕으로 상기 인식 대상자의 눈, 코, 입을 포함하는 얼굴 부위를 판단하는 단계; 상기 코딩 로봇이, 상기 판단된 얼굴 부위를 바탕으로 상기 인식 대상자의 감정을 판단하는 단계; 및 상기 코딩 로봇이, 상기 판단된 감정을 바탕으로 상기 제어 데이터를 획득하는 단계;를 포함할 수 있다.In this case, when the control data is the emotional data of the recognition target, obtaining the control data may include, by the coding robot, obtaining a face photographed image of the recognition target; obtaining, by the coding robot, a model variable based on the face photographed image; determining, by the coding robot, whether the recognition target matches the face of a pre-registered user based on the acquired model variables; obtaining, by the coding robot, a feature value corresponding to the photographed face image based on the photographed face image, when the recognition target matches the previously registered user; determining, by the coding robot, a face part including the eyes, nose, and mouth of the recognition target based on the acquired feature values; determining, by the coding robot, the emotion of the person to be recognized based on the determined face part; and obtaining, by the coding robot, the control data based on the determined emotion.

이때, 상기 제어 명령에 대응되는 동작을 수행하는 단계는, 상기 코딩 로봇이, 상기 판단된 감정에 대응되는 2차원 벡터 공간상의 좌표 정보를 획득하는 단계; 상기 벡터 공간상의 좌표 정보에 대응되는 제어 명령을 획득하는 단계; 및 상기 제어 명령에 대응되는 동작을 수행하는 단계; 를 포함할 수 있다.In this case, the step of performing the operation corresponding to the control command may include: obtaining, by the coding robot, coordinate information on a two-dimensional vector space corresponding to the determined emotion; obtaining a control command corresponding to coordinate information on the vector space; and performing an operation corresponding to the control command. may include.

이때, 상기 제어 명령에 대응되는 동작을 수행하는 단계는, 상기 코딩 로봇이, 상기 인식 대상자의 얼굴 촬영 이미지를 바탕으로 상기 인식 대상자의 감정 변화 정보를 획득하는 단계; 상기 코딩 로봇이, 상기 인식 대상자의 감정이 제1 감정에서 제2 감정으로 변경된 경우, 상기 제1 감정에 대응되는 제1 좌표 정보 및 상기 제2 감정에 대응되는 제2 좌표 정보를 획득하는 단계; 및 상기 코딩 로봇이, 상기 제1 좌표 및 상기 제2 좌표에 대응되는 벡터값에 대응되는 이동 명령을 상기 제어 명령으로 획득하는 단계;를 포함할 수 있다.In this case, the performing of the operation corresponding to the control command may include, by the coding robot, obtaining, by the coding robot, emotion change information of the recognition subject based on the photographed face image of the recognition subject; obtaining, by the coding robot, first coordinate information corresponding to the first emotion and second coordinate information corresponding to the second emotion when the emotion of the person to be recognized is changed from the first emotion to the second emotion; and obtaining, by the coding robot, a movement command corresponding to a vector value corresponding to the first coordinate and the second coordinate as the control command.

이때, 상기 제어 명령이, 상기 코딩 로봇을 이동시키기 위한 제어 명령인 경우, 상기 제어 방법은, 상기 코딩 로봇이, 상기 코딩 로봇 주변의 물체를 인식하는 단계; 상기 코딩 로봇이, 상기 인식된 물체가 기 저장된 표지판과 일치하는 경우, 상기 기 저장된 표지판데 대응되는 제어 정보를 획득하는 단계; 상기 코딩 로봇이, 상기 코딩 로봇 주변의 차선을 인식하는 단계; 및 상기 코딩 로봇이, 상기 인식된 차선을 따라 이동하되, 상기 제어 정보에 대응되게 이동하는 단계; 를 포함하고, 상기 차선을 인식하는 단계는, 상기 코딩 로봇으로 입력되는 영상을 바탕으로 연속된 두개의 선분 정보를 획득하고, 획득된 선분 정보를 바탕으로 차선 영역을 획득하는 단계; 상기 획득된 선분과 상기 코딩 로봇의 거리 정보를 획득하는 단계; 및 상기 차선 영역 및 상기 거리 정보를 바탕으로 상기 코딩 로봇을 제어하는 단계; 를 포함할 수 있다.In this case, when the control command is a control command for moving the coding robot, the control method may include: recognizing, by the coding robot, an object around the coding robot; obtaining, by the coding robot, control information corresponding to the pre-stored sign when the recognized object matches a pre-stored sign; recognizing, by the coding robot, a lane around the coding robot; and moving, by the coding robot, along the recognized lane, and moving corresponding to the control information. The step of recognizing the lane may include: acquiring information on two consecutive line segments based on an image input to the coding robot, and acquiring a lane area based on the obtained line segment information; obtaining distance information between the obtained line segment and the coding robot; and controlling the coding robot based on the lane area and the distance information. may include.

이때, 상기 제어 데이터가 상기 인식 대상자의 음성 데이터인 경우, 상기 제어 방법은, 상기 코딩 로봇이, 상기 음성 데이터를 바탕으로 상기 코딩 로봇에 대한 동작 속도 제어 명령 및 동작 반복수 제어 명령을 포함하는 동작 제어 블록을 생성하는 단계; 상기 코딩 로봇이, 상기 음성 데이터를 바탕으로 동작 속도 정보 및 동작 반복수 정보 중 적어도 하나를 획득하는 단계; 및 상기 코딩 로봇이, 동작 속도 정보 및 동작 반복수 정보 중 적어도 하나를 바탕으로 상기 코딩 로봇의 동작 속도 및 동작 반복수 중 적어도 하나에 대응되는 제어 명령을 획득하는 단계; 를 포함할 수 있다.In this case, when the control data is the voice data of the recognition target, the control method includes, in the coding robot, an operation speed control command and an operation repetition number control command for the coding robot based on the voice data generating a control block; obtaining, by the coding robot, at least one of motion speed information and motion repetition number information based on the voice data; and obtaining, by the coding robot, a control command corresponding to at least one of the operation speed and the number of repetitions of the coding robot based on at least one of the operation speed information and the operation repetition number information. may include.

이때, 상기 코딩 로봇의 동작 속도 및 동작 반복수 중 적어도 하나에 대응되는 제어 명령을 획득하는 단계는, 상기 코딩 로봇이, 상기 음성 데이터가 기 설정된 제어 정보와 일치하는 경우, 상기 기 설정된 제어 정보에 대응되는 동작 속도 정보 또는 동작 반복수 정보를 바탕으로 상기 코딩 로봇의 동작 속도 또는 동작 반복수를 상기 제어 명령으로 획득하는 단계; 상기 코딩 로봇이, 상기 음성 데이터가 기 설정된 제어 정보와 일치하지 않는 경우, 상기 음성 데이터를 바탕으로 음절 간격 정보를 생성하고, 상기 음절 간격 정보에 대응하여 상기 동작 속도 정보를 생성하는 단계; 상기 코딩 로봇이, 상기 음성 데이터가 기 설정된 제어 정보와 일치하지 않는 경우, 상기 음성 데이터를 바탕으로 신호 세기 정보를 생성하고, 상기 신호 세기 정보에 대응하여 상기 동작 반복수 정보를 생성하는 단계; 및 상기 생성된 동작 속도 정보 또는 동작 반복수를 바탕으로 상기 코딩 로봇의 동작 속도 또는 동작 반복수를 상기 제어 명령으로 획득하는 단계;를 포함할 수 있다.In this case, the step of obtaining a control command corresponding to at least one of the operation speed and the number of operation repetitions of the coding robot may include, when the voice data matches the preset control information, by the coding robot, the preset control information obtaining the operation speed or the number of repetitions of the coding robot as the control command based on the corresponding operation speed information or operation repetition number information; generating, by the coding robot, syllable spacing information based on the voice data when the voice data does not match preset control information, and generating the motion speed information in response to the syllable spacing information; generating, by the coding robot, signal strength information based on the voice data when the voice data does not match preset control information, and generating the operation repetition number information in response to the signal strength information; and acquiring the operation speed or the number of repetitions of the coding robot as the control command based on the generated operation speed information or the number of repetitions.

본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.Other specific details of the invention are included in the detailed description and drawings.

상술한 본 발명의 다양한 실시예에 따라, 코딩 로봇은 인식 대상자의 감정 또는 음성을 판단하고, 판단된 감정 또는 음성에 대응되는 코딩 블록을 바탕으로 제어될 수 있다.According to various embodiments of the present invention described above, the coding robot may determine the emotion or voice of the recognition target, and may be controlled based on a coding block corresponding to the determined emotion or voice.

본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.Effects of the present invention are not limited to the effects mentioned above, and other effects not mentioned will be clearly understood by those skilled in the art from the following description.

도 1은 본 발명의 일 실시예에 따른 코딩 로봇을 설명하기 위한 예시도이다.
도 2는 본 발명의 일 실시예에 따른 코딩 로봇의 구성을 나타낸 블록도이다.
도 3은 본 발명의 일 실시예에 따른 코딩 로봇의 제어 방법을 설명하기 위한 흐름도이다.
도 4 및 도 5는 본 발명의 일 실시예에 따른 인식된 사용자의 감정을 판단하는 방법을 설명하기 위한 예시도이다.
1 is an exemplary diagram for explaining a coding robot according to an embodiment of the present invention.
2 is a block diagram showing the configuration of a coding robot according to an embodiment of the present invention.
3 is a flowchart illustrating a control method of a coding robot according to an embodiment of the present invention.
4 and 5 are exemplary views for explaining a method of determining a recognized user's emotion according to an embodiment of the present invention.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 제한되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야의 통상의 기술자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. Advantages and features of the present invention and methods of achieving them will become apparent with reference to the embodiments described below in detail in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but may be implemented in various different forms, and only the present embodiments allow the disclosure of the present invention to be complete, and those of ordinary skill in the art to which the present invention pertains. It is provided to fully understand the scope of the present invention to those skilled in the art, and the present invention is only defined by the scope of the claims.

본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다. 명세서 전체에 걸쳐 동일한 도면 부호는 동일한 구성 요소를 지칭하며, "및/또는"은 언급된 구성요소들의 각각 및 하나 이상의 모든 조합을 포함한다. 비록 "제1", "제2" 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있음은 물론이다.The terminology used herein is for the purpose of describing the embodiments and is not intended to limit the present invention. As used herein, the singular also includes the plural unless specifically stated otherwise in the phrase. As used herein, “comprises” and/or “comprising” does not exclude the presence or addition of one or more other components in addition to the stated components. Like reference numerals refer to like elements throughout, and "and/or" includes each and every combination of one or more of the recited elements. Although "first", "second", etc. are used to describe various elements, these elements are not limited by these terms, of course. These terms are only used to distinguish one component from another. Accordingly, it goes without saying that the first component mentioned below may be the second component within the spirit of the present invention.

다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야의 통상의 기술자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.Unless otherwise defined, all terms (including technical and scientific terms) used herein will have the meaning commonly understood by those of ordinary skill in the art to which this invention belongs. In addition, terms defined in a commonly used dictionary are not to be interpreted ideally or excessively unless specifically defined explicitly.

명세서에서 사용되는 "부" 또는 “모듈”이라는 용어는 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, "부" 또는 “모듈”은 어떤 역할들을 수행한다. 그렇지만 "부" 또는 “모듈”은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. "부" 또는 “모듈”은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 "부" 또는 “모듈”은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 "부" 또는 “모듈”들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 "부" 또는 “모듈”들로 결합되거나 추가적인 구성요소들과 "부" 또는 “모듈”들로 더 분리될 수 있다.As used herein, the term “unit” or “module” refers to a hardware component such as software, FPGA, or ASIC, and “unit” or “module” performs certain roles. However, “part” or “module” is not meant to be limited to software or hardware. A “unit” or “module” may be configured to reside on an addressable storage medium or to reproduce one or more processors. Thus, by way of example, “part” or “module” refers to components such as software components, object-oriented software components, class components and task components, processes, functions, properties, Includes procedures, subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays and variables. Components and functionality provided within “parts” or “modules” may be combined into a smaller number of components and “parts” or “modules” or as additional components and “parts” or “modules”. can be further separated.

공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 구성요소와 다른 구성요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 구성요소들의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들어, 도면에 도시되어 있는 구성요소를 뒤집을 경우, 다른 구성요소의 "아래(below)"또는 "아래(beneath)"로 기술된 구성요소는 다른 구성요소의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 구성요소는 다른 방향으로도 배향될 수 있으며, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.Spatially relative terms "below", "beneath", "lower", "above", "upper", etc. It can be used to easily describe the correlation between a component and other components. A spatially relative term should be understood as a term that includes different directions of components during use or operation in addition to the directions shown in the drawings. For example, when a component shown in the drawing is turned over, a component described as “beneath” or “beneath” of another component may be placed “above” of the other component. can Accordingly, the exemplary term “below” may include both directions below and above. Components may also be oriented in other orientations, and thus spatially relative terms may be interpreted according to orientation.

본 명세서에서, 컴퓨터는 적어도 하나의 프로세서를 포함하는 모든 종류의 하드웨어 장치를 의미하는 것이고, 실시 예에 따라 해당 하드웨어 장치에서 동작하는 소프트웨어적 구성도 포괄하는 의미로서 이해될 수 있다. 예를 들어, 컴퓨터는 스마트폰, 태블릿 PC, 데스크톱, 노트북 및 각 장치에서 구동되는 사용자 클라이언트 및 애플리케이션을 모두 포함하는 의미로서 이해될 수 있으며, 또한 이에 제한되는 것은 아니다.In this specification, a computer means all types of hardware devices including at least one processor, and may be understood as encompassing software configurations operating in the corresponding hardware device according to embodiments. For example, a computer may be understood to include, but is not limited to, smart phones, tablet PCs, desktops, notebooks, and user clients and applications running on each device.

이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다. Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

본 명세서에서 설명되는 각 단계들은 컴퓨터에 의하여 수행되는 것으로 설명되나, 각 단계의 주체는 이에 제한되는 것은 아니며, 실시 예에 따라 각 단계들의 적어도 일부가 서로 다른 장치에서 수행될 수도 있다.Each step described in this specification is described as being performed by a computer, but the subject of each step is not limited thereto, and at least a portion of each step may be performed in different devices according to embodiments.

도 1은 본 발명의 일 실시예에 따른 코딩 로봇을 설명하기 위한 예시도이다.1 is an exemplary diagram for explaining a coding robot according to an embodiment of the present invention.

본 발명에 따른 코딩 로봇(100)은 컴퓨터 언어로 프로그래밍된 코딩 언어 또는 프로그래밍된 코딩 블록에 의해 동작할 수 있다. 이때, 코딩이란 C언어 등의 컴퓨터 언어를 이용하여 순차적이고 논리적인 흐름을 프로그래밍(programming)하는 작업이고, 코딩 블록이란 특정 명령어를 수행하기 위하여 완성된 코딩 명령을 포함하는 블록을 의미할 수 있다. 즉, 코딩 로봇(100)은 작성된 코딩 또는 선택된 코딩 블록이 전달하는 명령에 따라 작동할 수 있다.The coding robot 100 according to the present invention may be operated by a coding language programmed in a computer language or a coding block programmed in a computer language. At this time, the coding is the operation of programming a sequential and logical flow using a computer language such as C language, and the coding block may mean a block including a coding instruction completed in order to perform a specific instruction. That is, the coding robot 100 may operate according to the command transmitted by the written coding or the selected coding block.

본 발명에 따른 코딩 로봇(100)은, 카메라, 마이크, 메모리, 프로세서 및 구동부를 포함할 수 있다.The coding robot 100 according to the present invention may include a camera, a microphone, a memory, a processor, and a driving unit.

도 2는 본 발명의 일 실시예에 따른 코딩 로봇의 구성을 상세히 나타내는 블록도이다.2 is a block diagram showing in detail the configuration of a coding robot according to an embodiment of the present invention.

구체적으로, 코딩 로봇(100)은 입력부(110), 출력부(120), 프로세서(130)외에 통신부(140), 메모리(150) 및 감지부(160)를 더 포함할 수 있다.Specifically, the coding robot 100 may further include a communication unit 140 , a memory 150 , and a sensing unit 160 in addition to the input unit 110 , the output unit 120 , and the processor 130 .

입력부(110)는 다양한 외부 입력을 획득하기 위하여 카메라(111), 마이크(112), 터치 패널(113) 등을 포함할 수 있다. The input unit 110 may include a camera 111 , a microphone 112 , a touch panel 113 , and the like to obtain various external inputs.

카메라(111)는 코딩 로봇(100)주변의 영상 데이터를 획득하기 위한 구성이다. 카메라(111)는 정지 영상 및 동영상을 촬영할 수 있다. 예로, 카메라(111)는 하나 이상의 이미지 센서, 렌즈, 이미지 시그널 프로세서(ISP), 또는 플래시(예: LED 또는 xenon lamp 등)를 포함할 수 있으며, 복수의 카메라(111)로 구성될 수 있다. 이때, 불필요한 전력 소모를 막기 위해 카메라(111)는 특정 조건을 만족하는 경우에만 활성화될 수 있다. 예를 들어, 카메라(111)는 코딩 로봇(100) 주변에 사용자가 감지된 경우에만 활성화될 수 있다. 또는 코딩 로봇(100)이 IoT 시스템의 일부인 경우, 카메라(111)는 현관문이 열리거나, 실내 조명이 점등되는 조건을 만족하는 경우 활성화될 수 있다. 다만, 상술한 실시예에 한정되는 것은 아니고, 카메라(111)는 로봇에 전원이 인가되면 항상 활성화될 수도 있다. 카메라(111)가 항상 활성화된 경우, 카메라(111)는 특정 조건을 만족하는 경우에만, 영상을 저장하거나, 영상 처리를 수행할 수 있다. 특정 조건이란, 코딩 로봇(100) 주변에 사용자가 감지된 경우에 대한 조건, 코딩 로봇(100)이 IoT 시스템의 일부인 경우, 카메라(111)는 현관문이 열리거나, 실내 조명이 점등되는 조건일 수 있다.The camera 111 is a configuration for acquiring image data around the coding robot 100 . The camera 111 may capture still images and moving images. For example, the camera 111 may include one or more image sensors, lenses, an image signal processor (ISP), or a flash (eg, an LED or a xenon lamp, etc.), and may include a plurality of cameras 111 . In this case, in order to prevent unnecessary power consumption, the camera 111 may be activated only when a specific condition is satisfied. For example, the camera 111 may be activated only when a user is detected around the coding robot 100 . Alternatively, when the coding robot 100 is a part of the IoT system, the camera 111 may be activated when the front door is opened or the condition that the indoor lighting is turned on is satisfied. However, it is not limited to the above-described embodiment, and the camera 111 may be always activated when power is applied to the robot. When the camera 111 is always activated, the camera 111 may store an image or perform image processing only when a specific condition is satisfied. The specific condition is a condition when a user is detected around the coding robot 100, when the coding robot 100 is a part of an IoT system, the camera 111 is a condition in which the front door is opened or the indoor lighting is turned on can

마이크(112)는 코딩 로봇(100) 주변의 소리를 획득하기 위한 구성이다. 마이크(112)는 외부의 음향 신호를 입력 받아 전기적인 음성 정보를 생성할 수 있으며, 코딩 로봇(100)은 복수개의 마이크(112)를 구비할 수 있다. 코딩 로봇(100)은 복수개의 마이크 각각에 입력되는 음향신호의 도착 시간 차이를 이용하여 음향 신호를 발생시키는 음원(Sound Source)의 방향을 추정할 수 있다. 마이크(112)는 외부의 음향 신호를 입력 받는 과정에서 발생되는 잡음(noise)를 제거하기 위한 다양한 잡음 제거 알고리즘을 이용할 수 있다. 카메라(111)의 경우와 같이, 마이크(112)는 불필요한 전력 소모를 막기 위해 특정 조건을 만족하는 경우에만 활성화될 수 있다. 즉, 마이크(112)는 코딩 로봇(100) 주변에 사용자가 감지된 경우에만 활성화될 수 있다. 또는 코딩 로봇(100)이 IoT 시스템의 일부인 경우, 마이크(112)는 현관문이 열리거나, 실내 조명이 점등되는 조건을 만족하는 경우 활성화될 수 있다. 다만, 상술한 실시예에 한정되는 것은 아니고, 카메라(111)의 경우와 같이 마이크(112)는 항상 활성화되어 있을 수도 있음은 물론이다.The microphone 112 is a component for acquiring a sound around the coding robot 100 . The microphone 112 may receive an external sound signal to generate electrical voice information, and the coding robot 100 may include a plurality of microphones 112 . The coding robot 100 may estimate the direction of a sound source generating a sound signal by using a difference in arrival time of the sound signal input to each of the plurality of microphones. The microphone 112 may use various noise removal algorithms for removing noise generated in the process of receiving an external sound signal. As in the case of the camera 111 , the microphone 112 may be activated only when a specific condition is satisfied in order to prevent unnecessary power consumption. That is, the microphone 112 may be activated only when a user is detected around the coding robot 100 . Alternatively, when the coding robot 100 is a part of the IoT system, the microphone 112 may be activated when the front door is opened or the condition that the indoor lighting is turned on is satisfied. However, the present invention is not limited to the above-described embodiment, and as in the case of the camera 111 , the microphone 112 may be always activated.

터치패널(113)은 다양한 사용자 입력을 입력 받을 수 있는 구성이다. 터치 패널(113)는 사용자 조작에 의한 사용자 데이터를 입력 받을 수 있다. 터치 패널 또한 불필요한 전력 소모를 막기 위해 상기와 같은 조건하에서 활성화될 수 있다. 또는 터치 패널(113)은 사용자의 터치가 감지된 경우에 한하여 활성화될 수도 있다. 터치 패널(113)은 후술하는 디스플레이와 결합하여 구성될 수도 있다. The touch panel 113 is configured to receive various user inputs. The touch panel 113 may receive user data by a user manipulation. The touch panel may also be activated under the above conditions to prevent unnecessary power consumption. Alternatively, the touch panel 113 may be activated only when a user's touch is sensed. The touch panel 113 may be configured in combination with a display to be described later.

입력부(110)는 상술한 카메라(111), 마이크(112), 터치 패널(113) 외에도 다양한 사용자 데이터를 입력 받기 위한 다양한 구성일 수 있음은 물론이다.It goes without saying that the input unit 110 may have various configurations for receiving various user data in addition to the camera 111 , the microphone 112 , and the touch panel 113 described above.

출력부(112)는 구동부(121), 오디오 출력부(122) 및 디스플레이(123)로 구성될 수 있다. The output unit 112 may include a driving unit 121 , an audio output unit 122 , and a display 123 .

구동부(121)는 입력부(110)를 통해 획득한 사용자 데이터에 대한 반응으로 다양한 모션을 출력하기 위한 구성이다. 본 발명의 일 실시예에 따른 코딩 로봇(100)이 인간형 코딩 로봇(100)인 경우, 구동부(121)는 인간의 관절에 대응되는 적어도 하나의 관절부를 구동할 수 있는 모터 또는 액추에이터(Actuator)를 포함할 수 있다. 또 다른 실시예로, 본 발명의 일 실시예에 따른 코딩 로봇(100)이 바퀴형 로봇인 경우, 구동부(121)은 바퀴를 구동할 수 있는 모터 또는 액추에이터를 포함할 수 있다.The driving unit 121 is configured to output various motions in response to user data acquired through the input unit 110 . When the coding robot 100 according to an embodiment of the present invention is the humanoid coding robot 100, the driving unit 121 is a motor or actuator capable of driving at least one joint corresponding to a human joint. may include As another embodiment, when the coding robot 100 according to an embodiment of the present invention is a wheel-type robot, the driving unit 121 may include a motor or an actuator capable of driving the wheel.

오디오 출력부(122)는 입력부(110)를 통해 획득한 사용자 데이터에 대한 반응으로, 다양한 오디오 신호를 출력하기 위한 구성이다. 오디오 출력부(122)는 오디오 처리부(미도시)에 의해 디코딩이나 증폭, 노이즈 필터링과 같은 다양한 처리 작업이 수행된 각종 오디오 데이터뿐만 아니라 각종 알림 음이나 음성 메시지를 출력할 수 있다. 특히, 오디오 출력부(122)는 스피커로 구현될 수 있으나, 이는 일 실시 예에 불과할 뿐, 오디오 데이터를 출력할 수 있는 출력 단자로 구현될 수 있다. The audio output unit 122 is configured to output various audio signals in response to user data acquired through the input unit 110 . The audio output unit 122 may output various types of audio data for which various processing operations such as decoding, amplification, and noise filtering have been performed by the audio processing unit (not shown), as well as various notification sounds or voice messages. In particular, the audio output unit 122 may be implemented as a speaker, but this is only an exemplary embodiment and may be implemented as an output terminal capable of outputting audio data.

디스플레이(123)는 입력부(110)를 통해 획득한 사용자 데이터에 대한 다양한 반응으로, 영상을 출력하기 위한 구성이다. 일 실시예로, 디스플레이(123)는 감정을 표현하기 위한 아바타(Avartar) 영상을 출력할 수 있다. 즉, 코딩 로봇(100)이 입력부(110)를 통해 획득된 사용자 데이터에 대한 반응으로 기뻐하는 감정을 출력하고자 하는 경우, 디스플레이(123)에 표시되는 아바타 영상을 통해 기뻐하는 감정을 출력할 수 있다. 한편, 다양한 영상을 제공하기 위한 디스플레이(123)는 다양한 형태의 디스플레이 패널로 구현될 수 있다. 예를 들어, 디스플레이 패널은 LCD(Liquid Crystal Display), OLED(Organic Light Emitting Diodes), AM-OLED(Active-Matrix Organic Light-Emitting Diode), LcoS(Liquid Crystal on Silicon) 또는 DLP(Digital Light Processing) 등과 같은 다양한 디스플레이 기술로 구현될 수 있다. 또한, 디스플레이(123)는 플렉서블 디스플레이(flexible display)의 형태로 코딩 로봇(100)의 전면 영역 및, 측면 영역 및 후면 영역 중 적어도 하나에 결합될 수도 있다.The display 123 is configured to output an image in various responses to user data acquired through the input unit 110 . As an embodiment, the display 123 may output an avatar image for expressing emotions. That is, when the coding robot 100 wants to output a happy emotion in response to the user data obtained through the input unit 110 , it can output the happy emotion through the avatar image displayed on the display 123 . . Meanwhile, the display 123 for providing various images may be implemented with various types of display panels. For example, the display panel is a Liquid Crystal Display (LCD), Organic Light Emitting Diodes (OLED), Active-Matrix Organic Light-Emitting Diode (AM-OLED), Liquid Crystal on Silicon (LcoS), or Digital Light Processing (DLP). It may be implemented with various display technologies, such as. In addition, the display 123 may be coupled to at least one of a front area and a side area and a rear area of the coding robot 100 in the form of a flexible display.

통신부(140)는 외부 장치와 통신을 수행할 수 있다. 특히, 통신부(140)는 와이파이 칩(141), 블루투스 칩(142), NFC 칩(143) 및 이동 통신 칩(144) 등과 같은 무선 통신을 수행하기 위한 다양한 통신 칩 또는 회로를 포함할 수 있다. 이때, 와이파이 칩(141), 블루투스 칩(142), NFC 칩(143)은 각각 LAN 방식, WiFi 방식, 블루투스 방식, NFC 방식으로 통신을 수행한다. 와이파이 칩(141)이나 블루투스칩(142)을 이용하는 경우에는 SSID 및 세션 키 등과 같은 각종 연결 정보를 먼저 송수신한 후, 이를 이용하여 통신을 연결하여 각종 정보들을 송수신할 수 있다. 이동 통신칩(144)은 3G(3rd Generation), 3GPP(3rd Generation Partnership Project), LTE(Long Term Evolution) 등과 같은 다양한 통신 규격에 따라 통신을 수행하는 칩을 의미한다. 한편, 통신부(140)는 USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard232), 전력선 통신, 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함하는 유선 통신 방식으로 통신을 수행할 수도 있음은 물론이다. 특히 통신부는 외부 장치들과 통신을 수행하여 사용자 상태를 판단하기 위한 다양한 데이터를 송수신할 수 있다. 또는 사용자 상태 분석이 외부 서버에서 수행되는 경우, 통신부(140)는 수집한 학습 데이터를 외부 서버로 전송하고, 학습 데이터의 분석 결과를 수신할 수 있다.The communication unit 140 may communicate with an external device. In particular, the communication unit 140 may include various communication chips or circuits for performing wireless communication, such as a Wi-Fi chip 141 , a Bluetooth chip 142 , an NFC chip 143 , and a mobile communication chip 144 . At this time, the Wi-Fi chip 141, the Bluetooth chip 142, and the NFC chip 143 perform communication in a LAN method, a WiFi method, a Bluetooth method, and an NFC method, respectively. In the case of using the Wi-Fi chip 141 or the Bluetooth chip 142, various types of connection information such as an SSID and a session key are first transmitted and received, and then various types of information can be transmitted and received by using this to connect communication. The mobile communication chip 144 refers to a chip that performs communication according to various communication standards such as 3rd Generation (3G), 3rd Generation Partnership Project (3GPP), and Long Term Evolution (LTE). On the other hand, the communication unit 140 is a USB (universal serial bus), HDMI (high definition multimedia interface), RS-232 (recommended standard232), power line communication, wired communication including at least one of POTS (plain old telephone service), etc. It goes without saying that communication may be performed in this way. In particular, the communication unit may transmit/receive various data for determining a user state by performing communication with external devices. Alternatively, when the user state analysis is performed in the external server, the communication unit 140 may transmit the collected learning data to the external server and receive the analysis result of the learning data.

메모리(150)는, 예를 들면, 코딩 로봇(100)의 적어도 하나의 구성요소를 제어하기 위한 명령 또는 데이터를 저장할 수 있다. 일 실시예에 따르면, 메모리(150)는 소프트웨어 및/또는 프로그램을 저장할 수 있다. 프로그램은, 예를 들면, 커널(Kernel), 미들웨어(Middle-ware), 어플리케이션 프로그래밍 인터페이스(Application Programing Interface: API) 및/또는 어플리케이션 프로그램(또는 "어플리케이션") 등을 포함할 수 있다. 커널, 미들웨어 또는 API의 적어도 일부는, 운영 시스템(Operating System: OS)으로 지칭될 수 있다. 커널은, 예를 들면, 다른 프로그램들에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들을 제어 또는 관리할 수 있다. 또한, 커널은 미들웨어, API, 또는 어플리케이션 프로그램에서 코딩 로봇(100)의 개별 구성요소에 접근할 때, 시스템 리소스들을 제어 또는 관리할 수 있는 인터페이스를 제공할 수 있다. The memory 150 may store, for example, a command or data for controlling at least one component of the coding robot 100 . According to an embodiment, the memory 150 may store software and/or a program. The program may include, for example, a kernel, middle-ware, an application programming interface (API) and/or an application program (or "application"). At least a part of the kernel, middleware, or API may be referred to as an operating system (OS). The kernel may, for example, control or manage system resources used to execute operations or functions implemented in other programs. In addition, the kernel may provide an interface capable of controlling or managing system resources when accessing individual components of the coding robot 100 from middleware, API, or application programs.

미들웨어는, 예를 들면, API 또는 어플리케이션 프로그램이 커널과 통신하여 데이터를 주고받을 수 있도록 중개 역할을 수행할 수 있다. 또한, 미들웨어는 어플리케이션 프로그램으로부터 수신된 하나 이상의 작업 요청들을 우선 순위에 따라 처리할 수 있다. 예를 들면, 미들웨어는 어플리케이션 프로그램 중 적어도 하나에 코딩 로봇(100)의 시스템 리소스를 사용할 수 있는 우선 순위를 부여하고, 상기 하나 이상의 작업 요청들을 처리할 수 있다. API는 어플리케이션 프로그램이 커널 또는 미들웨어에서 제공되는 기능을 제어하기 위한 인터페이스로, 예를 들면, 파일 제어, 창 제어, 영상 처리, 또는 문자 제어 등을 위한 적어도 하나의 인터페이스 또는 함수(예: 명령어)를 포함할 수 있다. The middleware may, for example, play an intermediary role so that an API or an application program can communicate with the kernel to exchange data. Also, the middleware may process one or more work requests received from the application program according to priority. For example, the middleware may give priority to use the system resource of the coding robot 100 to at least one of the application programs, and process the one or more work requests. API is an interface for an application program to control functions provided by the kernel or middleware. For example, at least one interface or function (eg, command) for file control, window control, image processing, or character control. may include

또한, 메모리(150)는, 내장 메모리 및 외장 메모리 중 적어도 하나를 포함할 수 있다. 내장 메모리는, 예를 들면, 휘발성 메모리(예: DRAM, SRAM, 또는 SDRAM 등), 비휘발성 메모리(예: OTPROM(one time programmable ROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, 플래시 메모리, 하드 드라이브, 또는 솔리드 스테이트 드라이브(Solid State Drive: SSD) 중 적어도 하나를 포함할 수 있다. 외장 메모리는 플래시 드라이브(flash drive), 예를 들면, CF(compact flash), SD(secure digital), Micro-SD, Mini-SD, xD(extreme digital), MMC(multi-media card) 또는 메모리 스틱 등을 포함할 수 있다. 외장 메모리는 다양한 인터페이스를 통하여 코딩 로봇(100)과 기능적으로 또는 물리적으로 연결될 수 있다.Also, the memory 150 may include at least one of an internal memory and an external memory. Built-in memory includes, for example, volatile memory (such as DRAM, SRAM, or SDRAM), non-volatile memory (such as one time programmable ROM (OTPROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, flash memory) , a hard drive, or a solid state drive (SSD), the external memory may include a flash drive, for example, a compact flash (CF), a secure digital (SD), It may include Micro-SD, Mini-SD, xD (extreme digital), MMC (multi-media card), memory stick, etc. The external memory may be functionally or physically connected to the coding robot 100 through various interfaces. can

감지부(160)는 코딩 로봇(100)의 주변 정보를 획득하기 위한 구성이다. 상술한 바와 같이, 감지부(160)는 다양한 센서로 구성될 수 있으며, 센서에 의해 감지된 정보를 사용자 데이터로 획득할 수 있다. . 감지부(160)는 적외선 센서, 압력 센서, 조도 센서, 습도 센서, 자이로 센서 등 다양한 센서를 포함할 수 있다. 예를 들어, 감지부(160)가 적외선 센서를 포함하는 경우, 적외선 센서를 통해 사용자의 존재 유무에 대한 데이터를 사용자 데이터로 획득하거나, 사용자의 체온 등에 대한 데이터를 획득할 수 있다. 또는, 감지부(160)가 압력 센서를 포함하는 경우, 사용자와의 물리적인 접촉에 대한 데이터를 사용자 데이터로 획득할 수 있다. 또는, 코딩 로봇(100)이 조도 센서, 습도 센서 등을 포함하는 경우, 사용자의 주변 환경과 관련된 습도 및 조도에 대한 정보를 사용자 데이터로 획득할 수 있다. The sensing unit 160 is configured to obtain information about the surroundings of the coding robot 100 . As described above, the sensing unit 160 may include various sensors, and may acquire information sensed by the sensors as user data. . The sensing unit 160 may include various sensors such as an infrared sensor, a pressure sensor, an illuminance sensor, a humidity sensor, and a gyro sensor. For example, when the sensing unit 160 includes an infrared sensor, data on the presence or absence of the user may be acquired as user data or data on the user's body temperature may be acquired through the infrared sensor. Alternatively, when the sensing unit 160 includes a pressure sensor, data on physical contact with the user may be acquired as user data. Alternatively, when the coding robot 100 includes an illuminance sensor, a humidity sensor, and the like, information on humidity and illuminance related to the user's surrounding environment may be acquired as user data.

프로세서(130)는 메모리(150)에 저장된 각종 프로그램을 이용하여 코딩 로봇(100)의 전반적인 동작을 제어할 수 있다.The processor 130 may control the overall operation of the coding robot 100 by using various programs stored in the memory 150 .

프로세서(130)는 RAM(131), ROM(132), 그래픽 처리부(133), 메인 CPU(134), 및 제1 내지 n 인터페이스(135-1~135-n) 및 버스(136)로 구성될 수 있다. 이때, RAM(131), ROM(132), 그래픽 처리부(133), 메인 CPU(134) 제1 내지 n 인터페이스(135-1 ~ 135-n) 등은 버스(136)를 통해 서로 연결될 수 있다. The processor 130 may be composed of a RAM 131 , a ROM 132 , a graphic processing unit 133 , a main CPU 134 , and first to n interfaces 135-1 to 135-n and a bus 136 . can In this case, the RAM 131 , the ROM 132 , the graphic processing unit 133 , the main CPU 134 , the first to n interfaces 135 - 1 to 135 -n, etc. may be connected to each other through the bus 136 .

RAM(131)은 OS 및 어플리케이션 프로그램을 저장한다. 구체적으로, 코딩 로봇(100)이 부팅되면 OS가 RAM(131)에 로딩(loading)되고, 사용자가 선택한 각종 어플리케이션 데이터가 RAM(131)에 로딩될 수 있다. The RAM 131 stores OS and application programs. Specifically, when the coding robot 100 is booted, the OS may be loaded into the RAM 131 , and various application data selected by the user may be loaded into the RAM 131 .

ROM(132)에는 시스템 부팅을 위한 명령어 세트 등이 저장된다. 턴 온(Turn-On) 명령이 입력되어 전원이 공급되면, 메인 CPU(134)는 ROM(132)에 저장된 명령어에 따라 메모리(150)에 저장된 OS를 RAM(131)에 복사하고, OS를 실행시켜 시스템을 부팅시킨다. 부팅이 완료되면, 메인 CPU(134)는 메모리(150)에 저장된 각종 어플리케이션 프로그램을 RAM(131)에 복사하고, RAM(131)에 복사된 어플리케이션 프로그램을 실행시켜 각종 동작을 수행한다. The ROM 132 stores an instruction set for system booting, and the like. When a turn-on command is input and power is supplied, the main CPU 134 copies the OS stored in the memory 150 to the RAM 131 according to the command stored in the ROM 132, and executes the OS. to boot the system. When booting is completed, the main CPU 134 copies various application programs stored in the memory 150 to the RAM 131 , and executes the application programs copied to the RAM 131 to perform various operations.

그래픽 처리부(133)는 연산부(미도시) 및 렌더링부(미도시)를 이용하여 GUI(Graphical User Interface) 아이템, 이미지, 텍스트 등과 같은 다양한 객체를 포함하는 화면을 생성한다. 여기서, 연산부는 입력부(140)로부터 수신된 제어 명령을 이용하여 화면의 레이아웃에 따라 각 객체들이 표시될 좌표값, 형태, 크기, 컬러 등과 같은 속성값을 연산하는 구성일 수 있다. 그리고, 렌더링부는 연산부에서 연산한 속성값에 기초하여 객체를 포함하는 다양한 레이아웃의 화면을 생성하는 구성이 일 수 있다. 이러한 렌더링부에서 생성된 화면은 디스플레이(130)의 디스플레이 영역 내에 표시될 수 있다. The graphic processing unit 133 generates a screen including various objects, such as a graphical user interface (GUI) item, an image, text, and the like, by using a calculation unit (not shown) and a rendering unit (not shown). Here, the calculation unit may be configured to calculate attribute values such as coordinate values, shape, size, color, etc. of each object to be displayed according to the layout of the screen using the control command received from the input unit 140 . In addition, the rendering unit may be configured to generate screens of various layouts including objects based on the attribute values calculated by the operation unit. The screen generated by the rendering unit may be displayed in the display area of the display 130 .

메인 CPU(134)는 메모리(150)에 액세스하여, 메모리(150)에 저장된 OS를 이용하여 부팅을 수행한다. 그리고, 메인 CPU(134)는 메모리(150)에 저장된 각종 프로그램, 컨텐츠, 데이터 등을 이용하여 다양한 동작을 수행한다.The main CPU 134 accesses the memory 150 and performs booting using the OS stored in the memory 150 . In addition, the main CPU 134 performs various operations using various programs, contents, data, etc. stored in the memory 150 .

제1 내지 n 인터페이스(135-1 내지 135-n)는 상술한 각종 구성요소들과 연결된다. 제1 내지 n 인터페이스(135-1 내지 135-n) 중 하나는 네트워크를 통해 외부 장치와 연결되는 네트워크 인터페이스가 될 수도 있다.The first to n-th interfaces 135-1 to 135-n are connected to the various components described above. One of the first to n interfaces 135 - 1 to 135 - n may be a network interface connected to an external device through a network.

이하에서는, 도 3 내지 도 5를 이용하여 본 발명에 따른 다양한 실시예를 설명한다.Hereinafter, various embodiments according to the present invention will be described with reference to FIGS. 3 to 5 .

도 3은 본 발명의 일 실시예에 따른 코딩 로봇의 제어 방법을 설명하기 위한 흐름도이다.3 is a flowchart illustrating a control method of a coding robot according to an embodiment of the present invention.

단계 S110에서, 코딩 로봇(100)은, 인식 대상자의 정보를 획득할 수 있다.In step S110, the coding robot 100 may obtain information of the recognition target.

일 실시예로, 인식 대상자의 정보는 상술한 입력부(110) 또는 감지부(160)에 의해 획득될 수 있다.In an embodiment, the information of the recognition target may be acquired by the above-described input unit 110 or sensing unit 160 .

단계 S120에서, 코딩 로봇(100)은, 획득된 인식 대상자의 정보를 바탕으로 제어 데이터를 획득할 수 있다.In step S120 , the coding robot 100 may acquire control data based on the acquired information of the subject to be recognized.

단계 S130에서, 코딩 로봇(100)은, 제어 데이터가 기 설정된 제어 정보와 일치하는지 여부를 판단할 수 있다.In step S130 , the coding robot 100 may determine whether the control data matches preset control information.

일 실시예로, 코딩 로봇(100)은, 제어 데이터와 매칭된 제어 정보를 메모리(150)에 미리 저장하고 있을 수 있다. 예를 들어, 제어 데이터가 화난 감정인 경우, 메모리(150)는 화난 감정에 대응되는 코딩 로봇(100)의 동작 정보를 제어 명령으로 저장하고 있을 수 있다.As an embodiment, the coding robot 100 may store control information matched with the control data in advance in the memory 150 . For example, when the control data is an angry emotion, the memory 150 may store operation information of the coding robot 100 corresponding to the angry emotion as a control command.

단계 S140에서, 코딩 로봇(100)은, 제어 데이터가 기 설정된 제어 정보와 일치하는 경우, 기 설정된 제어 명령에 대응되는 동작을 수행할 수 있다.In step S140 , the coding robot 100 may perform an operation corresponding to a preset control command when the control data matches preset control information.

단계 S150에서, 코딩 로봇(100)은, 제어 데이터가 기 설정된 제어 정보와 일치하지 않는 경우, 제어 데이터를 분석하여, 기 설정된 제어 명령 중 어느 하나와 매칭 시킬 수 있다.In step S150, the coding robot 100, when the control data does not match the preset control information, may analyze the control data to match any one of the preset control commands.

즉, 인식 대상자의 정보를 바탕으로 획득된 제어 데이터에 매칭된 제어 명령이 존재하지 않는 경우라도, 코딩 로봇(100)은 제어 데이터를 분석하여 기 저장된 제어 명령 중 적어도 하나의 제어 명령에 매칭시킬 수 있다.That is, even if there is no control command matched to the control data acquired based on the information of the person to be recognized, the coding robot 100 analyzes the control data and matches it with at least one control command among the pre-stored control commands. have.

한편, 본 발명에서 제어 데이터는, 인식 대상자의 감정 데이터 및 음성 데이터 중 적어도 하나의 데이터를 의미할 수 있다.Meanwhile, in the present invention, the control data may refer to at least one of emotion data and voice data of a subject to be recognized.

한편, 본 발명의 다양한 실시예에 따라, 제어 데이터가 인식 대상자의 감정 데이터인 경우, 코딩 로봇(100)은 다양한 방법을 통해 제어 데이터를 획득할 수 있다.On the other hand, according to various embodiments of the present invention, when the control data is the emotion data of the subject to be recognized, the coding robot 100 may obtain the control data through various methods.

구체적으로, 코딩 로봇(100)은, 인식 대상자의 얼굴 촬영 이미지를 획득할 수 있다. 이후, 코딩 로봇(100)은, 얼굴 촬영 이미지를 바탕으로 모델 변수를 획득할 수 있다. 이후, 코딩 로봇(100)은, 획득된 모델 변수를 바탕으로 인식 대상자가 기 등록된 사용자의 얼굴과 일치하는지 판단할 수 있다. 이후, 인식 대상자가, 기 등록된 사용자와 일치하는 경우, 코딩 로봇(100)은, 얼굴 촬영 이미지를 바탕으로 얼굴 촬영 이미지에 대응되는 특징값을 획득할 수 있다. 이후, 코딩 로봇(100)은, 획득된 특징값을 바탕으로 인식 대상자의 눈, 코, 입을 포함하는 얼굴 부위를 판단할 수 있다. 이후, 코딩 로봇(100)은, 판단된 얼굴 부위를 바탕으로 인식 대상자의 감정을 판단할 수 있다.Specifically, the coding robot 100 may obtain a photographed image of the face of the recognition target. Thereafter, the coding robot 100 may acquire model variables based on the face photographed image. Thereafter, the coding robot 100 may determine whether the recognition target matches the pre-registered user's face based on the acquired model variables. Thereafter, when the recognition target matches the pre-registered user, the coding robot 100 may acquire a feature value corresponding to the photographed face image based on the photographed face image. Thereafter, the coding robot 100 may determine a face part including the eyes, nose, and mouth of the recognition target based on the acquired feature values. Thereafter, the coding robot 100 may determine the emotion of the subject to be recognized based on the determined face part.

일 실시예로, 코딩 로봇(100)은 OpenCV, Tensorflow, Dlib라는 라이브러리를 바탕으로 코딩로봇의 사용자를 인식하고, 인식 대상자의 감정을 판단할 수 있다. In one embodiment, the coding robot 100 may recognize the user of the coding robot based on libraries such as OpenCV, Tensorflow, and Dlib, and determine the emotion of the recognition target.

이때, OpenCV는 실시간 컴퓨터 비전을 목적으로 한 프로그래밍 라이브러리로, 로보미는 카메라를 다루고 카메라 영상을 처리할 수 있으며, TensorFlow는 다양한 작업에 대해 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리로 심볼릭 수학 라이브러리이자, 뉴럴 네트워크같은 기계학습 응용프로그램에도 사용되며 얼굴 인식 및 물체 인식에 사용될 수 있으며, Dlib는 프로그래밍 언어 C++로 작성된 범용 크로스 플랫폼 소프트웨어 라이브러리로, 코딩 로봇(100)은 Dlib중 얼굴 랜드마크(눈, 코, 입 등 영역) 인식 기능을 이용해 감정 인식을 수행할 수 있다.At this time, OpenCV is a programming library for real-time computer vision, Robomi can handle cameras and process camera images, and TensorFlow is an open source software library for data flow programming for various tasks. It is also used in machine learning applications such as networks and can be used for face recognition and object recognition. Dlib is a general-purpose cross-platform software library written in the programming language C++, and the coding robot 100 is one of Dlib's facial landmarks (eyes, nose, mouth). back area) recognition function to perform emotion recognition.

구체적으로, 코딩 로봇(100)은 상술한 다양한 라이브러리를 바탕으로 얼굴 인식을 수행할 수 있다. 이를 위해, 코딩 로봇(100)은 기 작성된 코딩 블록을 포함할 수 있다.Specifically, the coding robot 100 may perform face recognition based on the various libraries described above. To this end, the coding robot 100 may include a pre-written coding block.

구체적으로, 얼굴 저장 블록은 인식된 얼굴을 OpenCV를 이용해 이미지 파일로 저장할 수 있다.Specifically, the face storage block may store the recognized face as an image file using OpenCV.

또한, 얼굴 모델 생성 블록은 저장된 얼굴 사진을 기반으로, Tensorflow 라이브러리를 이용해 모델 변수를 생성할 수 있다. 생성된 모델 변수는 얼굴 인지 블록에서 사용될 수 있다.In addition, the face model generation block can create model variables using the Tensorflow library based on the stored face photos. The generated model variables can be used in the face recognition block.

또한, 얼굴 인지 블록은 모델 변수를 이용해서, 얼굴이 등록된 얼굴과 얼마나 일치하는지 계산할수 있다.Also, the face recognition block can calculate how much the face matches the registered face by using the model variable.

또한, 얼굴 감정 인식 블록은 Dlib를 이용해, 도 4에 도시된 바와 같이, 얼굴의 꼭짓점 등을 점으로 나타냅니다. 이 점들의 위치값을 이용하여 눈의 크기나 눈썹 각도, 입의 크기 등을 계산해 감정을 추론할수 있다. 이외에도 얼굴 감정 인식 모델은 눈, 코, 입의 위치를 계산할수 있으므로, 눈코입 위치에 이미지를 덧그릴 수 있음은 물론이다.In addition, the facial emotion recognition block uses Dlib to indicate the vertices of the face as dots, as shown in FIG. 4 . Using the position values of these points, emotions can be inferred by calculating the size of the eyes, the angle of the eyebrows, and the size of the mouth. In addition, since the facial emotion recognition model can calculate the positions of the eyes, nose, and mouth, it goes without saying that an image can be overlaid on the positions of the eyes, nose, and mouth.

일 실시예에 따라, 코딩 로봇(100)은 하기 코드를 활용하여 인식 대상자의 얼굴 표정을 판단할 수 있다.According to an embodiment, the coding robot 100 may determine the facial expression of the recognition target by using the following code.

[알고리즘 1][Algorithm 1]

def detect_face_elem(o_frame):def detect_face_elem(o_frame):

global detector global detector

global predictor global predictor

if detector is None or predictor is None: if detector is None or predictor is None:

if "dlib" not in sys.modules: if "dlib" not in sys.modules:

import dlib import dlib

detector = dlib.get_frontal_face_detector() detector = dlib.get_frontal_face_detector()

predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat') predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat')

frame = copy.deepcopy(o_frame) frame = copy. deepcopy(o_frame)

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

line_brow_x = [] line_brow_x = []

line_brow_y = [] line_brow_y = []

faces = detector(gray) faces = detector(gray)

for face in faces: for face in faces:

#200107 #200107

x1 = face.left() x1 = face.left()

y1 = face.top() y1 = face.top()

x2 = face.right() x2 = face.right()

y2 = face.bottom() y2 = face.bottom()

cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 1) cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 1)

landmarks = predictor(gray, face) landmarks = predictor(gray, face)

## "Jaw" ## "Jaw"

for n in range(0, 17): for n in range(0, 17):

x = landmarks.part(n).x x = landmarks.part(n).x

y = landmarks.part(n).y y = landmarks.part(n).y

cv2.circle(frame, (x, y), 1, (19, 199, 109), -1) cv2.circle(frame, (x, y), 1, (19, 199, 109), -1)

## "Nose" ## "Nose"

for n in range(27, 35): for n in range(27, 35):

x = landmarks.part(n).x x = landmarks.part(n).x

y = landmarks.part(n).y y = landmarks.part(n).y

cv2.circle(frame, (x, y), 1, (180, 42, 220), -1) cv2.circle(frame, (x, y), 1, (180, 42, 220), -1)

#cv2.putText(frame, str(n), (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.35, (0, 255, 255), 2, 4) #cv2.putText(frame, str(n), (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.35, (0, 255, 255), 2, 4)

#31-34, 27-33 #31-34, 27-33

## "Left Eye" ## "Left Eye"

for n in range(42, 48): for n in range(42, 48):

x = landmarks.part(n).x x = landmarks.part(n).x

y = landmarks.part(n).y y = landmarks.part(n).y

cv2.circle(frame, (x, y), 1, (163, 38, 32), -1) cv2.circle(frame, (x, y), 1, (163, 38, 32), -1)

## "Right Eye" ## "Right Eye"

for n in range(36, 42): for n in range(36, 42):

x = landmarks.part(n).x x = landmarks.part(n).x

y = landmarks.part(n).y y = landmarks.part(n).y

cv2.circle(frame, (x, y), 1, (158, 163, 32), -1) cv2.circle(frame, (x, y), 1, (158, 163, 32), -1)

#cv2.putText(frame, str(n), (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.4, (0, 0, 255), 2, 4) #cv2.putText(frame, str(n), (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.4, (0, 0, 255), 2, 4)

## "Left Eyebrow" ## "Left Eyebrow"

for n in range(22, 27): for n in range(22, 27):

x = landmarks.part(n).x x = landmarks.part(n).x

y = landmarks.part(n).y y = landmarks.part(n).y

cv2.circle(frame, (x, y), 1, (168, 100, 168), -1) cv2.circle(frame, (x, y), 1, (168, 100, 168), -1)

## "Right Eyebrow" ## "Right Eyebrow"

for n in range(17, 22): for n in range(17, 22):

x = landmarks.part(n).x x = landmarks.part(n).x

y = landmarks.part(n).y y = landmarks.part(n).y

cv2.circle(frame, (x, y), 1, (230, 159, 23), -1) cv2.circle(frame, (x, y), 1, (230, 159, 23), -1)

## "Mouth" ## "Mouth"

for n in range(48, 68): for n in range(48, 68):

x = landmarks.part(n).x x = landmarks.part(n).x

y = landmarks.part(n).y y = landmarks.part(n).y

cv2.circle(frame, (x, y), 1, (79, 76, 240), -1) cv2.circle(frame, (x, y), 1, (79, 76, 240), -1)

#cv2.putText(frame, str(n), (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.35, (0, 0, 255), 2, 4) #cv2.putText(frame, str(n), (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.35, (0, 0, 255), 2, 4)

face_width = x2 - x1 face_width = x2 - x1

face_height = y2 - y1 face_height = y2 - y1

# 표정인식의 근거로 임의 n포인트의 위치관계 분석 # Analysis of positional relationship of arbitrary n points as the basis for facial recognition

mouth_width = (landmarks.part(54).x - landmarks.part(48).x) / face_width # 입을 벌린 정도 mouth_width = (landmarks.part(54).x - landmarks.part(48).x) / face_width # The amount of mouth open

mouth_height = (landmarks.part(66).y - landmarks.part(62).y) / face_width # 입을 벌린 정도 mouth_height = (landmarks.part(66).y - landmarks.part(62).y) / face_width # The amount of mouth open

# calc center pos # calc center pos

face_x = face_width / 2 + x1 face_x = face_width / 2 + x1

face_y = face_height / 2 + y1 face_y = face_height / 2 + y1

face_pos = [face_x, face_y, face_width, face_height, x1, y1] face_pos = [face_x, face_y, face_width, face_height, x1, y1]

mouth_x = (landmarks.part(54).x - landmarks.part(48).x) / 2 + landmarks.part(48).x mouth_x = (landmarks.part(54).x - landmarks.part(48).x) / 2 + landmarks.part(48).x

mouth_y = (landmarks.part(66).y - landmarks.part(62).y) / 2 + landmarks.part(62).y mouth_y = (landmarks.part(66).y - landmarks.part(62).y) / 2 + landmarks.part(62).y

mouth_pos = [mouth_x, mouth_y, landmarks.part(54).x - landmarks.part(48).x, landmarks.part(66).y - landmarks.part(62).y, landmarks.part(48).x, landmarks.part(50).y] mouth_pos = [mouth_x, mouth_y, landmarks.part(54).x - landmarks.part(48).x, landmarks.part(66).y - landmarks.part(62).y, landmarks.part(48). x, landmarks.part(50).y]

nose_x = (landmarks.part(34).x - landmarks.part(31).x) / 2 + landmarks.part(31).x nose_x = (landmarks.part(34).x - landmarks.part(31).x) / 2 + landmarks.part(31).x

nose_y = (landmarks.part(33).y - landmarks.part(27).y) / 2 + landmarks.part(27).y nose_y = (landmarks.part(33).y - landmarks.part(27).y) / 2 + landmarks.part(27).y

nose_pos = [mouth_x, mouth_y, landmarks.part(34).x - landmarks.part(31).x, landmarks.part(33).y - landmarks.part(27).y, landmarks.part(31).x, landmarks.part(27).y] nose_pos = [mouth_x, mouth_y, landmarks.part(34).x - landmarks.part(31).x, landmarks.part(33).y - landmarks.part(27).y, landmarks.part(31). x, landmarks.part(27).y]

eye_x1 = (landmarks.part(39).x - landmarks.part(36).x) / 2 + landmarks.part(36).x eye_x1 = (landmarks.part(39).x - landmarks.part(36).x) / 2 + landmarks.part(36).x

eye_y1 = (landmarks.part(41).y - landmarks.part(37).y) / 2 + landmarks.part(37).y eye_y1 = (landmarks.part(41).y - landmarks.part(37).y) / 2 + landmarks.part(37).y

eye_pos1 = [eye_x1, eye_y1, landmarks.part(39).x - landmarks.part(36).x, landmarks.part(41).y - landmarks.part(37).y, landmarks.part(36).x, landmarks.part(37).y] eye_pos1 = [eye_x1, eye_y1, landmarks.part(39).x - landmarks.part(36).x, landmarks.part(41).y - landmarks.part(37).y, landmarks.part(36). x, landmarks.part(37).y]

eye_x2 = (landmarks.part(45).x - landmarks.part(42).x) / 2 + landmarks.part(42).x eye_x2 = (landmarks.part(45).x - landmarks.part(42).x) / 2 + landmarks.part(42).x

eye_y2 = (landmarks.part(47).y - landmarks.part(43).y) / 2 + landmarks.part(43).y eye_y2 = (landmarks.part(47).y - landmarks.part(43).y) / 2 + landmarks.part(43).y

eye_pos2 = [eye_x2, eye_y2, landmarks.part(45).x - landmarks.part(42).x, landmarks.part(47).y - landmarks.part(43).y, landmarks.part(42).x, landmarks.part(43).y] eye_pos2 = [eye_x2, eye_y2, landmarks.part(45).x - landmarks.part(42).x, landmarks.part(47).y - landmarks.part(43).y, landmarks.part(42). x, landmarks.part(43).y]

# 눈썹 위의 10가지 특징으로 눈썹을 고르는 정도와 눈살을 찌푸리는 정도를 분석 # Analyze the degree of choosing eyebrows and the degree of frown with the 10 characteristics above the eyebrows

brow_sum = 0 # 높이의 합 brow_sum = 0 # sum of heights

frown_sum = 0 # 양쪽 눈썹 거리의 합 frown_sum = 0 # sum of both eyebrow distances

for j in range(17, 21): for j in range(17, 21):

brow_sum += (landmarks.part(j).y - y1) + (landmarks.part(j + 5).y - y1) brow_sum += (landmarks.part(j).y - y1) + (landmarks.part(j + 5).y - y1)

frown_sum += landmarks.part(j + 5).x - landmarks.part(j).x frown_sum += landmarks.part(j + 5).x - landmarks.part(j).x

line_brow_x.append(landmarks.part(j).x) line_brow_x.append(landmarks.part(j).x)

line_brow_y.append(landmarks.part(j).y) line_brow_y.append(landmarks.part(j).y)

tempx = np.array(line_brow_x) tempx = np.array(line_brow_x)

tempy = np.array(line_brow_y) tempy = np.array(line_brow_y)

z1 = np.polyfit(tempx, tempy, 1) # 일차직선 합성 z1 = np.polyfit(tempx, tempy, 1) # first-order straight line synthesis

brow_k = -round(z1[0], 3) # 합 곡선의 기울기와 실제 눈썹의 기울기 방향은 반대 brow_k = -round(z1[0], 3) # The slope of the sum curve and the slope of the actual eyebrow are opposite

eye_sum = (landmarks.part(41).y - landmarks.part(37).y + landmarks.part(40).y - landmarks.part(38).y + eye_sum = (landmarks.part(41).y - landmarks.part(37).y + landmarks.part(40).y - landmarks.part(38).y +

landmarks.part(47).y - landmarks.part(43).y + landmarks.part(46).y - landmarks.part(44).y) landmarks.part(47).y - landmarks.part(43).y + landmarks.part(46).y - landmarks.part(44).y)

eye_height = (eye_sum / 4) / face_width eye_height = (eye_sum / 4) / face_width

return frame, face_pos, eye_pos1, eye_pos2, nose_pos, mouth_pos, mouth_width, mouth_height, eye_height, brow_k return frame, face_pos, eye_pos1, eye_pos2, nose_pos, mouth_pos, mouth_width, mouth_height, eye_height, brow_k

return frame, [], [], [], [], [], -1, -1, -1, -1 return frame, [], [], [], [], [], -1, -1, -1, -1

상술한 다양한 코딩 블록 이외에도, 코딩 로봇(100)은 다양한 코딩 블록을 포함할 수 있다. 예를 들어, 물체 인식 블록은 약 32개의 물체를 인식할수 있는 코딩 명령어가 저장된 것으로 Tensorflow 기반으로 동작할 수 있다. 또는, 표지판 인식 블록은 사용자가 직접 표지판을 학습시키기 위한 코딩 블록 및 학습한 데이터를 기반으로 표지판을 인식하는 블록으로 구성될 수 있다. 또는, 차선 인식 블록은 화면에서 연속되는 두개의 선을 인식후, 선과 자동차 사이 거리를 측정해 한쪽으로 치우처져 있다면 차선 한가운데로 이동하여 이탈을 막기 위한 코딩 블록이다. 또는, 이외 0에서 9까지의 숫자를 인식하는 숫자 인식 블록, 영어 알파벳을 인식하는 글자 인식 블록이 본 발명의 다양한 실시예에 따라 응용될 수 있음은 물론이다.In addition to the above-described various coding blocks, the coding robot 100 may include various coding blocks. For example, the object recognition block stores coding instructions that can recognize about 32 objects and can be operated based on Tensorflow. Alternatively, the sign recognition block may be composed of a coding block for a user to directly learn a sign and a block for recognizing a sign based on the learned data. Alternatively, the lane recognition block is a coding block for recognizing two consecutive lines on the screen, measuring the distance between the line and the car, and moving to the middle of the lane if it is biased to one side to prevent departure. Alternatively, it goes without saying that a number recognition block for recognizing numbers 0 to 9 and a letter recognition block for recognizing English alphabets may be applied according to various embodiments of the present invention.

이후, 코딩 로봇(100)은, 판단된 감정을 바탕으로 제어 데이터를 획득할 수 있다.Thereafter, the coding robot 100 may acquire control data based on the determined emotion.

한편, 코딩 로봇(100)은 상술한 실시예에 의해 판단된 감정에 대응되는 제어 명령에 따라 제어될 수 있다.On the other hand, the coding robot 100 may be controlled according to a control command corresponding to the emotion determined by the above-described embodiment.

일 실시예로, 코딩 로봇(100)은, 판단된 감정에 대응되는 2차원 벡터 공간상의 좌표 정보를 획득할 수 있다. 이후, 코딩 로봇(100)은, 벡터 공간상의 좌표 정보에 대응되는 제어 명령을 획득할 수 있다.As an embodiment, the coding robot 100 may acquire coordinate information on a two-dimensional vector space corresponding to the determined emotion. Thereafter, the coding robot 100 may obtain a control command corresponding to coordinate information on a vector space.

예를 들어, 2차원 벡터 공간은 도 5에 도시된 2차원 공간일 수 있다. 이때, 2차원 공간은 J. Russel의 원형 감정 모델 상에 표시될 수 있음은 물론이다. J. Russel의 원형 감정 모델의 가로축은 감정이 긍정적인지 부정적인지 여부를 나타내며, 세로축은 활동성을 나타낸다. 즉, 코딩 로봇(100)이 판단한 인식 대상자의 감정은 도 5에 도시된 J. Russel의 원형 감정 모델 상의 하나의 좌표 정보로 획득될 수 있다.For example, the 2D vector space may be the 2D space shown in FIG. 5 . In this case, of course, the two-dimensional space may be displayed on the original emotion model of J. Russel. The horizontal axis of J. Russel's prototype emotion model indicates whether emotions are positive or negative, and the vertical axis indicates activity. That is, the emotion of the recognition target determined by the coding robot 100 may be obtained as one piece of coordinate information on the circular emotion model of J. Russel shown in FIG. 5 .

코딩 로봇(100)는 J. Russel의 원형 감정 모델 상의 각각의 좌표 정보에 대응되는 제어 명령을 저장할 수 있다. 일 실시예에 따라, 획득된 좌표 정보가 제1 사분면에 존재하면, 코딩 로봇(100)은 제1 제어 명령을 수행하고, 제2사분면에 존재하면, 코딩 로봇(100)은 제2 제어 명령을 수행하고, 제3사분면에 존재하면, 코딩 로봇(100)은 제3 제어 명령을 수행하고, 제4사분면에 존재하면, 코딩 로봇(100)은 제4 제어 명령을 수행할 수 있다.The coding robot 100 may store a control command corresponding to each coordinate information on the circular emotion model of J. Russel. According to an embodiment, if the obtained coordinate information exists in the first quadrant, the coding robot 100 performs a first control command, and if it exists in the second quadrant, the coding robot 100 performs a second control command and, if present in the third quadrant, the coding robot 100 may execute the third control command, and if present in the fourth quadrant, the coding robot 100 may perform the fourth control command.

일 실시예로, 제1 제어 명령 내지 제4 제어 명령은 코딩 로봇(100)의 이동과 관련된 명령일 수 있다. In one embodiment, the first to fourth control commands may be commands related to movement of the coding robot 100 .

한편, 본 발명의 또 다른 실시예에 따라, 코딩 로봇(100)은, 인식 대상자의 얼굴 촬영 이미지를 바탕으로 인식 대상자의 감정 변화 정보를 획득할 수 있다.On the other hand, according to another embodiment of the present invention, the coding robot 100 may obtain information about the change in emotion of the recognition subject based on the photographed image of the subject's face.

이후, 코딩 로봇(100)은, 인식 대상자의 감정이 제1 감정에서 제2 감정으로 변경된 경우, 제1 감정에 대응되는 제1 좌표 정보 및 제2 감정에 대응되는 제2 좌표 정보를 획득할 수 있다.Thereafter, the coding robot 100 may obtain first coordinate information corresponding to the first emotion and second coordinate information corresponding to the second emotion when the emotion of the subject to be recognized is changed from the first emotion to the second emotion. have.

이후, 코딩 로봇(100)은, 제1 좌표 및 제2 좌표에 대응되는 벡터값에 대응되는 이동 명령을 제어 명령으로 획득할 수 있다.Thereafter, the coding robot 100 may obtain a movement command corresponding to a vector value corresponding to the first coordinate and the second coordinate as a control command.

예를 들어, 도 5에 도시된 바와 같이, 인식 대상자의 감정이 제1 좌표(510)에서 제2 좌표(520)으로 변경된 경우, 코딩 로봇(100)은 제1 좌표(510)를 시작점으로 하고 제2 좌표(520)를 종점으로 하는 벡터 방향으로 이동할 수 있다.For example, as shown in FIG. 5 , when the emotion of the recognition target is changed from the first coordinates 510 to the second coordinates 520 , the coding robot 100 uses the first coordinates 510 as a starting point and The second coordinate 520 may be moved in a vector direction as an end point.

일 실시예에 따라, 코딩 로봇(100)의 초기 이동 속도는 원점부터 제1 좌표(510)까지의 거리에 비례하고, 코딩 로봇(100)의 이동 가속도는 제1 좌표(510)에서 제2 좌표(520)까지의 거리에 비례할 수 있다. 예를 들어, 제1 좌표(510)이 (a,b)이고, 제2 좌표가 (c,d)인 경우, 초기 이동 속도 V 및 이동 가속도 A는 하기 수학식과 같이 표시될 수 있다.According to an embodiment, the initial movement speed of the coding robot 100 is proportional to the distance from the origin to the first coordinate 510 , and the movement acceleration of the coding robot 100 is the second coordinate from the first coordinate 510 . It may be proportional to the distance to 520 . For example, when the first coordinate 510 is (a,b) and the second coordinate is (c,d), the initial movement speed V and the movement acceleration A may be expressed by the following equations.

Figure 112020105891022-pat00001
Figure 112020105891022-pat00001

Figure 112020105891022-pat00002
Figure 112020105891022-pat00002

이때, k 및 l은 임의의 양의 상수일 수 있다.In this case, k and l may be arbitrary positive constants.

한편, 본 발명의 또 다른 실시예에 따라, 제어 데이터가 인식 대상자의 음성 데이터인 경우, 코딩 로봇(100)은 다양한 방법을 통해 제어 데이터를 획득할 수 있다.Meanwhile, according to another embodiment of the present invention, when the control data is the voice data of the recognition target, the coding robot 100 may acquire the control data through various methods.

구체적으로, 코딩 로봇(100)은, 음성 데이터를 바탕으로 코딩 로봇에 대한 동작 속도 제어 명령 및 동작 반복수 제어 명령을 포함하는 동작 제어 블록을 생성할 수 있다.Specifically, the coding robot 100 may generate a motion control block including a motion speed control command and a motion repetition number control command for the coding robot based on voice data.

이후, 코딩 로봇(100)은, 음성 데이터를 바탕으로 동작 속도 정보 및 동작 반복수 정보 중 적어도 하나를 획득할 수 있다.Thereafter, the coding robot 100 may acquire at least one of motion speed information and motion repetition number information based on the voice data.

이후, 코딩 로봇(100)은, 동작 속도 정보 및 동작 반복수 정보 중 적어도 하나를 바탕으로 코딩 로봇의 동작 속도 및 동작 반복수 중 적어도 하나에 대응되는 제어 명령을 획득할 수 있다.Thereafter, the coding robot 100 may acquire a control command corresponding to at least one of the motion speed and the number of repetitions of the coding robot based on at least one of the motion speed information and the motion repetition number information.

이때, 코딩 로봇(100)은, 음성 데이터가 기 설정된 제어 정보와 일치하는 경우, 기 설정된 제어 정보에 대응되는 동작 속도 정보 또는 동작 반복수 정보를 바탕으로 코딩 로봇의 동작 속도 또는 동작 반복수를 제어 명령으로 획득할 수 있다.At this time, when the voice data matches the preset control information, the coding robot 100 controls the motion speed or the number of repetitions of the coding robot based on the motion speed information or motion repetition number information corresponding to the preset control information. It can be obtained by command.

예를 들어, 음성 데이터가 "오른쪽으로 빠르게 움직여"이고, 이에 대응되는 기 저장된 제어 명령(예를 들어, 오른쪽으로 3단계 속도만큼 이동)이 존재하면, 코딩 로봇(100)은 기 저장된 제어 명령에 따라 제어 될 수 있다.For example, if the voice data is "moving quickly to the right" and there is a pre-stored control command corresponding to it (for example, moving at a speed of 3 steps to the right), the coding robot 100 responds to the pre-stored control command. can be controlled accordingly.

그러나, 코딩 로봇(100)은, 음성 데이터가 기 설정된 제어 정보와 일치하지 않는 경우, 음성 데이터를 바탕으로 음절 간격 정보를 생성하고, 음절 간격 정보에 대응하여 동작 속도 정보를 생성할 수 있다.However, when the voice data does not match the preset control information, the coding robot 100 may generate syllable spacing information based on the voice data and generate motion speed information in response to the syllable spacing information.

예를 들어, 음성 데이터가 "오른쪽으로 빠르게 움직여"이고, "빠르게"에 대응되는 기 설정된 제어 정보가 존재하지 않는 경우, 코딩 로봇(100)은, 음성 데이터에 기초하여 음절 간격 정보를 생성하고, 음절 간격 정보에 대응하여 동작 속도 정보를 생성하고, 생성된 동작 속도 정보에 대응하는 이동 속도 제어 명령문을 생성할 수 있다. For example, if the voice data is "moving quickly to the right" and there is no preset control information corresponding to "quickly", the coding robot 100 generates syllable spacing information based on the voice data, Motion speed information may be generated in response to the syllable interval information, and a movement speed control command corresponding to the generated motion speed information may be generated.

구체적으로, 코딩 로봇(100)는 음성 데이터에서 동작 속도 정보가 검색되지 않으면, 음성 데이터에 기초하여 음절 간격 정보를 생성하고, 음절 간격 정보에 대응하여 동작 속도 정보를 생성하고, 생성된 동작 속도 정보에 대응하는 이동 속도 제어 명령문을 생성할 수 있다.Specifically, if the motion speed information is not found in the voice data, the coding robot 100 generates syllable interval information based on the voice data, generates motion speed information in response to the syllable interval information, and generates motion speed information It is possible to generate a movement speed control statement corresponding to .

구체적으로, 코딩 로봇(100)는 음성 데이터에 포함된 음절 중에서 어느 하나의 음절의 종료 시점과 어느 하나의 음절의 다음 음절의 시작 시점 간에 제1 시간차를 산출하고, 복수의 제1 시간차의 평균 시간차를 음절 간격 정보로 생성할 수 있다.Specifically, the coding robot 100 calculates the first time difference between the end time of one syllable and the start time of the next syllable of any one syllable among the syllables included in the voice data, and the average time difference of the plurality of first time differences can be generated as syllable spacing information.

이후, 코딩 로봇(100)는 기준 시간차 대비 음절 간격 정보가 나타내는 평균 시간차의 시간차 비율을 산출하고, 기본 이동 속도에 시간차 비율을 적용하여 동작 속도 정보로 생성할 수 있다.Thereafter, the coding robot 100 may calculate the time difference ratio of the average time difference indicated by the syllable interval information compared to the reference time difference, and apply the time difference ratio to the basic movement speed to generate the motion speed information.

예를 들어, 코딩 로봇(100)는 평균 시간차가 "12msec"이고, 기준 시간차가 "10msec"이며, 기본 이동 속도가 "1배속"인 경우, 시간차 비율을 "120%"로 산출하고, 기본 이동 속도 "1배속"에 시간차 비율 "120%"를 적용하여 동작 속도 정보를 "1.2배속"으로 생성할 수 있다.For example, the coding robot 100 calculates the time difference ratio as "120%" when the average time difference is "12 msec", the reference time difference is "10 msec", and the basic movement speed is "1x speed", and the basic movement By applying the time difference ratio "120%" to the speed "1x speed", it is possible to generate the operating speed information at "1.2x speed".

한편, 코딩 로봇(100)은, 음성 데이터가 기 설정된 제어 정보와 일치하지 않는 경우, 음성 데이터를 바탕으로 신호 세기 정보를 생성하고, 신호 세기 정보에 대응하여 동작 반복수 정보를 생성할 수 있다.Meanwhile, when the voice data does not match the preset control information, the coding robot 100 may generate signal strength information based on the voice data and generate motion repetition number information in response to the signal strength information.

구체적으로, 음성 데이터에 동작 반복수 정보가 포함되지 않은 경우, 코딩 로봇(100)는 음성 신호에 기초하여 신호 세기 정보를 생성하고, 신호 세기 정보에 대응하여 동작 반복수 정보를 생성하고, 생성된 동작 반복수 정보에 대응하는 동작 반복수 제어 명령문을 생성할 수 있다.Specifically, when the motion repetition number information is not included in the voice data, the coding robot 100 generates signal strength information based on the voice signal, generates motion repetition number information in response to the signal strength information, and generates the generated An operation repetition number control statement corresponding to the operation repetition number information may be generated.

예를 들어, 코딩 로봇(100)는 음성 데이터에서 동작 반복수 정보 검색되지 않으면, 음성 신호에 기초하여 신호 세기 정보를 생성하고, 신호 세기 정보에 대응하여 동작 반복수 정보를 생성하고, 생성된 동작 반복수 정보에 대응하는 동작 반복수 제어 명령문을 생성할 수 있다.For example, the coding robot 100 generates signal strength information based on the voice signal if the motion repetition number information is not retrieved from the voice data, generates motion repetition number information in response to the signal strength information, and generates the generated motion An operation repetition number control statement corresponding to the repetition number information may be generated.

구체적으로, 코딩 로봇(100)는 음성 신호의 시간에 따른 신호 세기 중에서 최대 신호 세기를 신호 세기 정보로 생성할 수 있다.Specifically, the coding robot 100 may generate the maximum signal strength among the signal strengths according to time of the voice signal as signal strength information.

이후, 코딩 로봇(100)는 기준 신호 세기 대비 신호 세기 정보가 나타내는 최대 신호 세기의 신호 세기 비율을 산출하고, 기본 동작 반복수에 신호 세기 비율을 적용하여 동작 반복수 정보로 생성할 수 있다.Thereafter, the coding robot 100 may calculate the signal strength ratio of the maximum signal strength indicated by the signal strength information to the reference signal strength, and apply the signal strength ratio to the basic motion repetition number to generate the motion repetition number information.

예를 들어, 코딩 로봇(100)는 최대 신호 세기가 "200DB"이고, 기준 신호 세기가 "100DB"이며, 기본 동작 반복수가 "1회"인 경우, 신호 세기 비율을 "200%"로 산출하고, 기본 동작 반복수 "1회"에 신호 세기 비율 "200%"를 적용하여 동작 반복수 정보를 "2회"로 생성할 수 있다. 이때, 동작 반복수 정보는 반올림되어 자연수로 생성될 수 있다.For example, the coding robot 100 calculates the signal strength ratio as "200%" when the maximum signal strength is "200DB", the reference signal strength is "100DB", and the basic operation repetition number is "1 time", , by applying a signal strength ratio of “200%” to the basic number of repetitions of motion “1 time”, information on the number of repetitions of motion may be generated as “2 times”. In this case, the operation repetition number information may be rounded to generate a natural number.

생성된 동작 속도 정보 또는 동작 반복수를 바탕으로 코딩 로봇의 동작 속도 또는 동작 반복수를 제어 명령으로 획득할 수 있다.Based on the generated motion speed information or the number of motion repetitions, the motion speed or motion repetition number of the coding robot may be acquired as a control command.

한편, 본 발명의 또 다른 실시예에 따라, 제어 명령이, 코딩 로봇을 이동시키기 위한 제어 명령인 경우, 코딩 로봇(100)은, 코딩 로봇 주변의 물체를 인식할 수 있다. 이후, 코딩 로봇(100)은, 인식된 물체가 기 저장된 표지판과 일치하는 경우, 기 저장된 표지판데 대응되는 제어 정보를 획득할 수 있다. 코딩 로봇(100)은, 코딩 로봇 주변의 차선을 인식할 수 있다. 코딩 로봇(100)은, 인식된 차선을 따라 이동하되, 제어 정보에 대응되게 이동할 수 있다.Meanwhile, according to another embodiment of the present invention, when the control command is a control command for moving the coding robot, the coding robot 100 may recognize an object around the coding robot. Thereafter, when the recognized object matches the pre-stored sign, the coding robot 100 may acquire control information corresponding to the pre-stored sign. The coding robot 100 may recognize a lane around the coding robot. The coding robot 100 moves along the recognized lane, but may move corresponding to the control information.

이때, 코딩 로봇(100)은, 코딩 로봇(100)으로 입력되는 영상을 바탕으로 연속된 두개의 선분 정보를 획득하고, 획득된 선분 정보를 바탕으로 차선 영역을 획득할 수 있다.In this case, the coding robot 100 may obtain information on two consecutive line segments based on an image input to the coding robot 100 , and may obtain a lane area based on the obtained line segment information.

이후, 코딩 로봇(100)은, 획득된 선분과 코딩 로봇의 거리 정보를 획득할 수 있다. 이후, 코딩 로봇(100)은, 차선 영역 및 거리 정보를 바탕으로 코딩 로봇을 제어할 수 있다.Thereafter, the coding robot 100 may obtain distance information between the obtained line segment and the coding robot. Thereafter, the coding robot 100 may control the coding robot based on lane area and distance information.

이를 위해, 상술한 물체 인식 블록, 표지판 인식 블록, 차선 인식 블록, 숫자 인식 블록 및 글자 인식 블록 중 적어도 하나의 블록을 이용할 수 있음은 물론이다.For this purpose, it goes without saying that at least one of the above-described object recognition block, sign recognition block, lane recognition block, number recognition block, and letter recognition block may be used.

한편, 본 발명의 구성 요소들은 하드웨어인 컴퓨터와 결합되어 실행되기 위해 프로그램(또는 애플리케이션)으로 구현되어 매체에 저장될 수 있다. 본 발명의 구성 요소들은 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있으며, 이와 유사하게, 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다.On the other hand, the components of the present invention may be implemented as a program (or application) to be executed in combination with a computer, which is hardware, and stored in a medium. Components of the present invention may be implemented as software programming or software components, and similarly, embodiments may include various algorithms implemented as data structures, processes, routines, or combinations of other programming constructs, including C, C++ , Java, assembler, etc. may be implemented in a programming or scripting language. Functional aspects may be implemented in an algorithm running on one or more processors.

이상, 첨부된 도면을 참조로 하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며, 제한적이 아닌 것으로 이해해야만 한다. As mentioned above, although embodiments of the present invention have been described with reference to the accompanying drawings, those skilled in the art to which the present invention pertains can realize that the present invention can be embodied in other specific forms without changing its technical spirit or essential features. you will be able to understand Therefore, it should be understood that the embodiments described above are illustrative in all respects and not restrictive.

100 : 코딩 로봇100: coding robot

Claims (7)

코딩 로봇의 제어 방법에 있어서,
상기 코딩 로봇이, 인식 대상자의 정보를 획득하는 단계;
상기 코딩 로봇이, 상기 획득된 인식 대상자의 정보를 바탕으로 제어 데이터를 획득하는 단계;
상기 코딩 로봇이, 상기 제어 데이터가 기 설정된 제어 정보와 일치하는지 여부를 판단하는 단계;
상기 코딩 로봇이, 상기 제어 데이터가 기 설정된 제어 정보와 일치하는 경우, 상기 기 설정된 제어 명령에 대응되는 동작을 수행하는 단계; 및
상기 코딩 로봇이, 상기 제어 데이터가 기 설정된 제어 정보와 일치하지 않는 경우, 상기 제어 데이터를 분석하여, 기 설정된 제어 명령 중 어느 하나와 매칭 시키는 단계;를 포함하고,
상기 제어 데이터는, 상기 인식 대상자의 감정 데이터 및 음성 데이터 중 적어도 하나의 데이터이며,
상기 제어 명령이, 상기 코딩 로봇을 이동시키기 위한 제어 명령인 경우,
상기 제어 방법은,
상기 코딩 로봇이, 상기 코딩 로봇 주변의 물체를 인식하는 단계;
상기 코딩 로봇이, 상기 인식된 물체가 기 저장된 표지판과 일치하는 경우, 상기 기 저장된 표지판에 대응되는 제어 정보를 획득하는 단계;
상기 코딩 로봇이, 상기 코딩 로봇 주변의 차선을 인식하는 단계; 및
상기 코딩 로봇이, 상기 인식된 차선을 따라 이동하되, 상기 제어 정보에 대응되게 이동하는 단계; 를 포함하고,
상기 차선을 인식하는 단계는,
상기 코딩 로봇으로 입력되는 영상을 바탕으로 연속된 두개의 선분 정보를 획득하고, 획득된 선분 정보를 바탕으로 차선 영역을 획득하는 단계;
상기 획득된 선분과 상기 코딩 로봇의 거리 정보를 획득하는 단계; 및
상기 차선 영역 및 상기 거리 정보를 바탕으로 상기 코딩 로봇을 제어하는 단계; 를 포함하는 제어 방법.
In the control method of the coding robot,
obtaining, by the coding robot, information of a subject to be recognized;
obtaining, by the coding robot, control data based on the acquired information of the subject to be recognized;
determining, by the coding robot, whether the control data matches preset control information;
performing, by the coding robot, an operation corresponding to the preset control command when the control data matches preset control information; and
Including, by the coding robot, when the control data does not match the preset control information, analyzing the control data and matching any one of the preset control commands;
The control data is at least one of emotional data and voice data of the subject to be recognized,
When the control command is a control command for moving the coding robot,
The control method is
recognizing, by the coding robot, an object around the coding robot;
obtaining, by the coding robot, control information corresponding to the pre-stored sign when the recognized object matches a pre-stored sign;
recognizing, by the coding robot, a lane around the coding robot; and
moving the coding robot along the recognized lane, moving in response to the control information; including,
Recognizing the lane comprises:
obtaining information on two consecutive line segments based on the image input to the coding robot, and obtaining a lane area based on the obtained line segment information;
obtaining distance information between the obtained line segment and the coding robot; and
controlling the coding robot based on the lane area and the distance information; A control method comprising a.
제1항에 있어서,
상기 제어 데이터가 상기 인식 대상자의 감정 데이터인 경우,
상기 제어 데이터를 획득하는 단계는,
상기 코딩 로봇이, 상기 인식 대상자의 얼굴 촬영 이미지를 획득하는 단계;
상기 코딩 로봇이, 상기 얼굴 촬영 이미지를 바탕으로 모델 변수를 획득하는 단계;
상기 코딩 로봇이, 상기 획득된 모델 변수를 바탕으로 상기 인식 대상자가 기 등록된 사용자의 얼굴과 일치하는지 판단하는 단계;
상기 인식 대상자가, 상기 기 등록된 사용자와 일치하는 경우, 상기 코딩 로봇이, 상기 얼굴 촬영 이미지를 바탕으로 상기 얼굴 촬영 이미지에 대응되는 특징값을 획득하는 단계;
상기 코딩 로봇이, 상기 획득된 특징값을 바탕으로 상기 인식 대상자의 눈, 코, 입을 포함하는 얼굴 부위를 판단하는 단계;
상기 코딩 로봇이, 상기 판단된 얼굴 부위를 바탕으로 상기 인식 대상자의 감정을 판단하는 단계; 및
상기 코딩 로봇이, 상기 판단된 감정을 바탕으로 상기 제어 데이터를 획득하는 단계;를 포함하는 제어 방법.
According to claim 1,
When the control data is the emotional data of the recognition target,
Obtaining the control data includes:
obtaining, by the coding robot, a photographed image of the face of the recognition target;
obtaining, by the coding robot, a model variable based on the face photographed image;
determining, by the coding robot, whether the recognition target matches the face of a pre-registered user based on the acquired model variables;
obtaining, by the coding robot, a feature value corresponding to the photographed face image based on the photographed face image, when the recognition target matches the previously registered user;
determining, by the coding robot, a face part including the eyes, nose, and mouth of the recognition target based on the acquired feature values;
determining, by the coding robot, the emotion of the person to be recognized based on the determined face part; and
A control method comprising a; obtaining, by the coding robot, the control data based on the determined emotion.
제2항에 있어서,
상기 제어 명령에 대응되는 동작을 수행하는 단계는,
상기 코딩 로봇이, 상기 판단된 감정에 대응되는 2차원 벡터 공간상의 좌표 정보를 획득하는 단계;
상기 벡터 공간상의 좌표 정보에 대응되는 제어 명령을 획득하는 단계; 및
상기 제어 명령에 대응되는 동작을 수행하는 단계; 를 포함하는 제어 방법.
3. The method of claim 2,
The step of performing an operation corresponding to the control command includes:
obtaining, by the coding robot, coordinate information on a two-dimensional vector space corresponding to the determined emotion;
obtaining a control command corresponding to coordinate information on the vector space; and
performing an operation corresponding to the control command; A control method comprising a.
제2항에 있어서,
상기 제어 명령에 대응되는 동작을 수행하는 단계는,
상기 코딩 로봇이, 상기 인식 대상자의 얼굴 촬영 이미지를 바탕으로 상기 인식 대상자의 감정 변화 정보를 획득하는 단계;
상기 코딩 로봇이, 상기 인식 대상자의 감정이 제1 감정에서 제2 감정으로 변경된 경우, 상기 제1 감정에 대응되는 제1 좌표 정보 및 상기 제2 감정에 대응되는 제2 좌표 정보를 획득하는 단계; 및
상기 코딩 로봇이, 상기 제1 좌표 및 상기 제2 좌표에 대응되는 벡터값에 대응되는 이동 명령을 상기 제어 명령으로 획득하는 단계;를 포함하는 제어 방법.
3. The method of claim 2,
The step of performing an operation corresponding to the control command includes:
obtaining, by the coding robot, emotion change information of the subject to be recognized based on a photographed image of the subject's face;
obtaining, by the coding robot, first coordinate information corresponding to the first emotion and second coordinate information corresponding to the second emotion when the emotion of the person to be recognized is changed from a first emotion to a second emotion; and
and obtaining, by the coding robot, a movement command corresponding to a vector value corresponding to the first coordinate and the second coordinate as the control command.
삭제delete 제1항에 있어서,
상기 제어 데이터가 상기 인식 대상자의 음성 데이터인 경우, 상기 제어 방법은,
상기 코딩 로봇이, 상기 음성 데이터를 바탕으로 상기 코딩 로봇에 대한 동작 속도 제어 명령 및 동작 반복수 제어 명령을 포함하는 동작 제어 블록을 생성하는 단계;
상기 코딩 로봇이, 상기 음성 데이터를 바탕으로 동작 속도 정보 및 동작 반복수 정보 중 적어도 하나를 획득하는 단계; 및
상기 코딩 로봇이, 동작 속도 정보 및 동작 반복수 정보 중 적어도 하나를 바탕으로 상기 코딩 로봇의 동작 속도 및 동작 반복수 중 적어도 하나에 대응되는 제어 명령을 획득하는 단계; 를 포함하는 제어 방법.
According to claim 1,
When the control data is the voice data of the recognition target, the control method,
generating, by the coding robot, a motion control block including a motion speed control command and a motion repetition number control command for the coding robot based on the voice data;
obtaining, by the coding robot, at least one of motion speed information and motion repetition number information based on the voice data; and
obtaining, by the coding robot, a control command corresponding to at least one of the operation speed and the number of repetitions of the coding robot based on at least one of the operation speed information and the operation repetition number information; A control method comprising a.
제6항에 있어서,
상기 코딩 로봇의 동작 속도 및 동작 반복수 중 적어도 하나에 대응되는 제어 명령을 획득하는 단계는,
상기 코딩 로봇이, 상기 음성 데이터가 기 설정된 제어 정보와 일치하는 경우, 상기 기 설정된 제어 정보에 대응되는 동작 속도 정보 또는 동작 반복수 정보를 바탕으로 상기 코딩 로봇의 동작 속도 또는 동작 반복수를 상기 제어 명령으로 획득하는 단계;
상기 코딩 로봇이, 상기 음성 데이터가 기 설정된 제어 정보와 일치하지 않는 경우, 상기 음성 데이터를 바탕으로 음절 간격 정보를 생성하고, 상기 음절 간격 정보에 대응하여 상기 동작 속도 정보를 생성하는 단계;
상기 코딩 로봇이, 상기 음성 데이터가 기 설정된 제어 정보와 일치하지 않는 경우, 상기 음성 데이터를 바탕으로 신호 세기 정보를 생성하고, 상기 신호 세기 정보에 대응하여 상기 동작 반복수 정보를 생성하는 단계; 및
상기 생성된 동작 속도 정보 또는 동작 반복수를 바탕으로 상기 코딩 로봇의 동작 속도 또는 동작 반복수를 상기 제어 명령으로 획득하는 단계;를 포함하는 제어 방법.
7. The method of claim 6,
The step of obtaining a control command corresponding to at least one of the operation speed and the number of repetitions of the coding robot comprises:
When the voice data matches the preset control information, the coding robot controls the motion speed or the number of repetitions of the coding robot based on the motion speed information or motion repetition number information corresponding to the preset control information. obtaining with a command;
generating, by the coding robot, syllable spacing information based on the voice data when the voice data does not match preset control information, and generating the motion speed information in response to the syllable spacing information;
generating, by the coding robot, signal strength information based on the voice data when the voice data does not match preset control information, and generating the operation repetition number information in response to the signal strength information; and
Acquiring the operation speed or the number of repetitions of the coding robot as the control command based on the generated operation speed information or the number of repetitions.
KR1020200129248A 2020-10-07 2020-10-07 Electronic device and control method thereof KR102260751B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200129248A KR102260751B1 (en) 2020-10-07 2020-10-07 Electronic device and control method thereof
PCT/KR2020/018083 WO2022075529A1 (en) 2020-10-07 2020-12-10 Electronic device and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200129248A KR102260751B1 (en) 2020-10-07 2020-10-07 Electronic device and control method thereof

Publications (1)

Publication Number Publication Date
KR102260751B1 true KR102260751B1 (en) 2021-06-07

Family

ID=76374666

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200129248A KR102260751B1 (en) 2020-10-07 2020-10-07 Electronic device and control method thereof

Country Status (2)

Country Link
KR (1) KR102260751B1 (en)
WO (1) WO2022075529A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100714535B1 (en) * 2000-09-13 2007-05-07 가부시키가이샤 에이.지.아이 Emotion recognizing method, sensibility creating method, device, and software
JP2008168375A (en) * 2007-01-10 2008-07-24 Sky Kk Body language robot, its controlling method and controlling program
KR20180094461A (en) * 2017-02-15 2018-08-23 이상준 Coding training devices and systems
KR20190098781A (en) * 2018-01-29 2019-08-23 삼성전자주식회사 Robot acting on user behavior and its control method
KR20200093933A (en) 2019-01-29 2020-08-06 성창경 Coding robot operation control unit and control method of the coding robot operation control unit

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102131097B1 (en) * 2018-10-15 2020-07-07 호남대학교 산학협력단 Robot control system and robot control method using the same

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100714535B1 (en) * 2000-09-13 2007-05-07 가부시키가이샤 에이.지.아이 Emotion recognizing method, sensibility creating method, device, and software
JP2008168375A (en) * 2007-01-10 2008-07-24 Sky Kk Body language robot, its controlling method and controlling program
KR20180094461A (en) * 2017-02-15 2018-08-23 이상준 Coding training devices and systems
KR20190098781A (en) * 2018-01-29 2019-08-23 삼성전자주식회사 Robot acting on user behavior and its control method
KR20200093933A (en) 2019-01-29 2020-08-06 성창경 Coding robot operation control unit and control method of the coding robot operation control unit

Also Published As

Publication number Publication date
WO2022075529A1 (en) 2022-04-14

Similar Documents

Publication Publication Date Title
US10445917B2 (en) Method for communication via virtual space, non-transitory computer readable medium for storing instructions for executing the method on a computer, and information processing system for executing the method
US10318011B2 (en) Gesture-controlled augmented reality experience using a mobile communications device
KR102616850B1 (en) An external device capable of being combined with an electronic device, and a display method thereof.
JP2021522564A (en) Systems and methods for detecting human gaze and gestures in an unconstrained environment
CN109521927B (en) Robot interaction method and equipment
WO2019100932A1 (en) Motion control method and device thereof, and storage medium and terminal
KR102636243B1 (en) Method for processing image and electronic device thereof
US11407106B2 (en) Electronic device capable of moving and operating method thereof
KR20150012274A (en) Operating a computing device by detecting rounded objects in image
US20200412864A1 (en) Modular camera interface
CN110737335B (en) Interaction method and device of robot, electronic equipment and storage medium
US20190302880A1 (en) Device for influencing virtual objects of augmented reality
KR20230093337A (en) Video processing method, apparatus, electronic device and computer readable storage medium
US11989843B2 (en) Robotic learning of assembly tasks using augmented reality
JP6498802B1 (en) Biological information analysis apparatus and face type simulation method thereof
KR20230135550A (en) Electronic apparatus and controlling method thereof
KR102260751B1 (en) Electronic device and control method thereof
KR20190014895A (en) The deceased remembrance system based on virtual reality
US20230060596A1 (en) Method and Device for Sketch-Based Placement of Virtual Objects
KR20200084395A (en) Electronic device and operating method for recognizing an object in a image
US11468611B1 (en) Method and device for supplementing a virtual environment
US9131107B2 (en) Telepresence device communication and control system
WO2020166373A1 (en) Information processing device and information processing method
KR20220111821A (en) Control method of electronic device based on augmented reality display
US20240137436A1 (en) Phone case for tracking and localization

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant