상술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되어 있는 상세한 설명을 통하여 보다 명확해 질 것이며, 그에 따라 본 발명이 속하는 기 술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하기로 한다.
도 1은 본 발명에 따른 로봇 스크립트를 이용한 로봇 행동 제어 기능이 구비된 로봇에 대한 일실시예 구성도이고, 도 2a는 본 발명에서 제시하는 로봇 동작 서비스에 관한 단위 행동 명령에 대한 일실시예 설명도이고, 도 2b는 본 발명에서 제시하는 로봇 스크립트에 대한 일실시예 구성도이고, 도 3은 본 발명에 따른 로봇 스크립트를 이용한 로봇 행동 제어 방법에 대한 일실시예 흐름도이다.
도 1에 도시된 바와 같이, 본 발명에 따른 로봇 스크립트를 이용한 로봇 행동 제어 기능이 구비된 로봇[이하 "로봇"이라 통칭함]은, 행동 명령 처리부(10), 로봇 스크립트 저장소(20), 행동 제어부(30) 및 로봇에 구비된 각종 하드웨어(40) 등을 포함한다. 한편, 상기 로봇은 네트워크(예; 인터넷 등)를 통해 서비스 에이전트(Service Agent)(90)가 탑재된 단말기(또는 서버)[미도시]에 연결된다.
도 1에서, 사용자는 서비스 에이전트(90)를 통해 로봇에게 특정 동작 서비스 수행을 명령한다. 즉, 상기 서비스 에이전트(90)가 사용자로부터 요구받은 로봇 동작 서비스에 관한 제어 정보를 로봇에게 전송하고, 이에 상기 로봇이 서비스 에이전트(90)로부터 수신받은 제어 정보에 따라 자신의 행동을 제어한다. 다른 예로서, 상기 서비스 에이전트는 원격지가 아닌 로봇 내부에 탑재될 수 있으며, 이러한 경우에 서비스 에이전트는 로봇 UI(예; 화면, 키 버튼, 마이크 등)를 통해 사용자로부터 특정 동작 서비스 수행을 명령받는다.
상기 로봇에 구비된 각종 하드웨어(40)는 마이크, 스피커, LCD, LED 등과 같은 각종 입출력 인터페이스와, 카메라, 터치센서, 위치 센서, 방향 센서 등과 같은 각종 센서와, 음성 인식기, 영상 판별기 등과 같은 각종 신호 처리기와, 로봇의 안면부, 팔, 손가락, 다리(휠) 등의 구동(모션)을 관장하는 각종 피스톤, 모터(motor) 등을 포함한다. 이러한 하드웨어 각각에 대해서 통상적으로 액츄에이터(actuator)라는 용어를 사용하기도 한다.
한편, 상기 로봇은 내부에 탑재된 프로그램(S/W), 장치(H/W)를 사용해 자신의 현재 상황(예; 어느 곳에 위치해 있는지 등) 및 외부 상황(예; 주위에 위치한 사람이 누구인지 등)을 인지할 수 있으며, 이러한 로봇이 인지한 상황 정보가 서비스 에이전트(90)로 제공되며, 이에 상기 서비스 에이전트(90)가 로봇의 현재 상황 및 외부 상황을 실시간으로 파악(획득)하고 있음을 전제로 본 발명을 설명하기로 한다. 또한, 본 발명에서는 로봇이 자신의 하드웨어를 제어해 해당 행동을 수행하는 기술은 어떠한 공지 기술을 사용해도 무방하기에 이에 대한 설명도 하기에서 생략하기로 한다.
본 발명에서는 상기 서비스 에이전트(90)가 사용자로부터 요구받은 로봇 동작 서비스에 관한 단위 행동 명령을 로봇에게 전송하고, 상기 로봇이 서비스 에이전트(90)로부터 수신받은 단위 행동 명령에 해당되는 로봇 스크립트의 내용에 따라 자신의 행동을 제어하는 기법을 제시한다. 또한, 본 발명에서는 로봇 동작 서비스에 관한 단위 행동 명령과, 로봇 스크립트를 제시한다. 그럼, 이하 도 1, 도 2a, 도 2b를 함께 참조하여 본 발명에 관해 구체적으로 설명하기로 한다.
도 2a에 도시된 바와 같이, 본 발명에서 제시하는 로봇 동작 서비스에 관한 단위 행동 명령은 행동번호 및 파라미터로 구성되며, 서비스 에이전트(90)로부터 로봇으로 전송된다.
본 발명에서는 상기 서비스 에이전트(90)가 사용자로부터 요구받은 하나의 로봇 동작 서비스에 관해 다수의 단위 행동 명령을 생성해 로봇으로 전송한다. 예컨대, 본 발명에서는 서비스 에이전트(90)가 로봇에게 특정 동작 서비스 수행 명령을 내리는데 있어 각각의 행동번호 및 파라미터로 구성된 다수의 단위 행동 명령을 순차적으로 로봇에게 전송하는 것이다.
도 2b에 도시된 바와 같이, 본 발명에서 제시하는 로봇 스크립트는 행동번호, 행동이름, 하드웨어, 동작변수 및 동작시간으로 구성되며, 로봇 스크립트 저장소(20)에 저장되어 있다.
본 발명에서는 상기 로봇이 서비스 에이전트(90)로부터 순차적으로 수신받은 각 단위 행동 명령의 행동번호 및 파라미터를 토대로 로봇 스크립트에서 해당 행동번호의 스크립트 내용 중 해당 파라미터에 부합한 하드웨어, 동작변수 및 동작시간을 사용해 자신의 행동을 순서대로 제어[즉 사용자로부터 요구받은 로봇 동작 서비스에 따른 시나리오 내용을 순서대로 수행]한다.
즉, 로봇이 수행해야 될 동작 서비스는 쓰레기 버리기, 심부름, 청소하기 등 을 의미하는데, 이러한 하나의 동작 서비스, 예를 들어 쓰레기 버리기가 사용자로부터 쓰레기 받기, 휴지통으로 이동 및 휴지통에 쓰레기 넣기 등과 같은 다수의 단위 행동 조합으로 이루어짐을 확인할 수 있다. 이러한 점에 착안해 본 발명에서는 서비스 에이전트(90)가 하나의 로봇 동작 서비스에 관한 다수의 단위 행동 명령을 로봇으로 순차적으로 전송하며, 이에 상기 로봇이 각각의 단위 행동 명령에 해당되는 로봇 스크립트 내용에 따라 해당 행동을 순서대로 수행한다.
그렇다면, 상기 로봇 스크립트에 대해 구체적으로 설명하기로 한다.
상기 로봇 스크립트의 행동번호는 서비스 에이전트(90)의 단위 행동 명령이 어떠한 행동을 로봇이 수행해야 되는지를 나타낸다.
상기 로봇 스크립트의 행동이름은 서비스 에이전트(90)의 단위 행동 명령에 따라 로봇이 현재 수행 중인 행동이 무엇인지를 사용자에게 알리는데 사용된다. 예컨대, 로봇은 서비스 에이전트로부터 수신받은 단위 행동 명령에 해당되는 로봇 스크립트의 내용에 따라 자신의 행동을 제어하면서 LCD, 스피커 등을 통해 해당 행동이름을 출력해 사용자에게 자신[로봇]이 무엇을 하는지를 통보할 수 있다.
상기 로봇 스크립트의 하드웨어는 해당 로봇 단위 행동 수행에 사용되는 하드웨어 식별정보[고유번호] 등을 의미한다.
상기 로봇 스크립트의 동작변수는 해당 하드웨어에 대한 동작변수를 의미하는데, 하드웨어가 모터인 경우에는 이 모터의 회전 속도 또는 회전 각도가, 하드웨어가 피스톤인 경우에는 이 피스톤의 변위가, 하드웨어가 LED인 경우에는 이 LED의 색깔 또는 밝기가, 하드웨어가 스피커인 경우에는 이 스피커의 출력소리가 해당 동 작변수가 된다. 물론, 로봇에 구비된 하드웨어의 종류에 따라 동작변수가 없을 수도 있다.
상기 로봇 스크립트의 동작시간은 해당 하드웨어에 대한 동작시간을 의미하는데, 하드웨어가 모터이고 그 동작변수가 속도인 경우에는 해당 동작시간에 따라 그 모터의 회전 각도가 제어되며, 하드웨어가 LED인 경우에는 해당 동작시간에 따라 그 LED의 발광시간이 제어된다.
그럼, 도 3을 참조해 본 발명에 따른 로봇 스크립트를 이용한 로봇 행동 제어 방법에 대한 처리 플로우 중에서, 서비스 에이전트(90)에서 이루어지는 과정을 먼저 설명하기로 한다.
상기 서비스 에이전트(90)는 사용자로부터 특정 로봇 동작 서비스를 요구받은 경우에 로봇으로부터 실시간 또는 사전에 획득한 로봇의 현재 상황 정보 및 외부 상황 정보를 참조해 상기 로봇 동작 서비스에 관한 다수의 단위 행동 명령, 즉 각각의 행동번호 및 파라미터로 구성된 다수의 단위 행동 명령을 생성한다(301, 302). 여기서, 서비스 에이전트(90)는 해당 로봇 동작 서비스를 수행할 대상 로봇의 하드웨어 스펙 등에 대해서는 전혀 모른 상태에서 단위 행동 명령을 생성하는데, 특히 단위 행동 명령 중 파라미터는 어떠한 로봇에도 공통적으로 적용될 수 있는 값(예; 목표위치(거리, 각도), 움직임 속도 등)을 갖는다.
그런 후, 상기 서비스 에이전트(90)는 상기 생성한 각 행동번호 및 파라미터로 구성된 다수의 단위 행동 명령을 순차적으로 상기 로봇으로 전송한다(303).
다음으로, 상기 로봇에서 이루어지는 과정을 설명하기로 한다.
상기 로봇의 행동 명령 처리부(10)는 서비스 에이전트(90)로부터 순차적으로 수신받은 각 단위 행동 명령의 행동번호 및 파라미터에 대해 로봇 스크립트 저장소(20)를 조회해 로봇 스크립트에서 상기 행동번호에 매칭된 다수의 스크립트 내용 중 상기 파라미터에 부합한 하드웨어, 동작변수 및 동작시간을 추출한다(311, 312, 313). 앞서 언급한 바와 같이 서비스 에이전트(90)가 보낸 단위 행동 명령 중 파라미터는 로봇에 공통적으로 적용될 수 있는 값(예; 목표위치(거리, 각도), 움직임 속도 등)을 갖으며, 이러한 점을 토대로 본 발명에서의 단위 행동 명령의 파라미터는 로봇 스크립트의 동작변수 및 동작시간과 반드시 일치하는 것은 아니다. 즉, 로봇의 이기종 스펙에 따라 로봇에 구비된 하드웨어는 서로 상이하며, 특히 그 하드웨어 동작 방식 등도 상이함을 알 수 있다. 따라서 본 발명에서는 상기 행동 명령 처리부(10)가 서비스 에이전트(90)로부터 수신받은 단위 행동 명령의 파라미터에 대해 자신[로봇]의 행동 제어가 가능한 로봇 스크립트의 동작변수 및 동작시간을 추출하는 것이다.
그런 후, 상기 행동 명령 처리부(10)는 로봇 스크립트에서 추출한 하드웨어, 동작변수 및 동작시간을 로봇 내부적으로 인식 가능한 하드웨어 제어신호로 처리해 행동 제어부(30)로 전달한다(314).
그러면, 상기 로봇의 행동 제어부(30)는 행동 명령 처리부(10)로부터 수신받은 각각의 하드웨어 제어신호를 사용해 해당 하드웨어의 동작을 순서대로 제어한다(315). 이렇게 함으로써, 서비스 에이전트(90)를 통해 사용자로부터 요구받은 로봇 동작 서비스에 따른 시나리오 내용이 로봇에 의해 순서대로 수행되는 것이다.
이하, 본 발명에 대한 구체적인 예시를 소개하기로 한다.
첫 번째 예시로서 특정인에게 메시지를 전달하는 로봇 동작 서비스를 설명한다. 첫 번째 예시에서는 서비스 에이전트가 사용자의 음성 명령을 인식할 수 있고, 로봇의 위치와 방향을 알 수 있고, 로봇의 카메라를 통해 사람을 식별할 수 있다고 하자.
먼저, 서비스 에이전트에서는 사용자로부터 "로봇에게 홍길동을 찾아서 XXX 메시지를 전달하라고 해라"와 같은 음성 명령을 인식한다. 그런 후, 서비스 에이전트에서는 이와 같은 로봇 동작 서비스 수행 명령을 로봇에게 내리기 위해 해당 단위 행동 명령을 생성해 로봇에게 전송한다.
즉, 서비스 에이전트에서는 지도 정보(map)와 카메라를 사용해 "홍길동 찾기"를 로봇에게 수행시키기 위한 다음의 [표 1]과 같은 탐색 행동 명령을 생성해 로봇에게 전송한다.
상기 [표 1]에서, "1"은 단위 행동 명령의 행동번호로서 로봇 스크립트의 행동이름 "이동"에 매칭되며, "목표 위치(거리, 방향)"은 단위 행동 명령의 파라미터로서 현재 로봇의 위치를 기준으로 이동할 목표점의 상대적인 위치를 나타낸다. 여기서, "(거리, 방향)"은 극좌표계로 표현되고, 그 예로서 좌측 전방을 향해 로봇 이동을 위한 (0.5m, 45°), 현재 위치에서 오른쪽으로 로봇 회전을 위한 (0.0m, -90°) 등을 들 수 있다.
그러면, 상기 로봇은 서비스 에이전트로부터 수신받은 [표 1]과 같은 단위 행동 명령을 토대로 다음의 [표 2] 또는 [표 3]과 같은 로봇 스크립트의 내용에 따라 해당 행동을 제어(수행)한다.
다음의 [표 2]는 로봇이 "휠 타입(wheel type)"인 경우의 로봇 스크립트를, 다음의 [표 3]은 로봇이 "휴머노이드(humanoid)"인 경우의 로봇 스크립트를 각각 나타낸다.
상기 [표 2]와 [표 3]을 통해 확인할 수 있듯이, 본 발명에서는 로봇의 스펙이 이기종이더라도 그 로봇에 탑재되는 로봇 스크립트가 서로 동일함을 알 수 있다. 이는 서로 다른 로봇들이 동일한 로봇 스크립트를 사용해 서비스 에이전트로부터 받은 단위 행동 명령이 무엇인지를 인식하는 것이며, 실제로 각 로봇에서는 자신의 하드웨어 스펙 등에 따라 해당 행동을 서로 다른 방식으로 제어하는 것이다.
다음으로, 서비스 에이전트에서는 로봇의 카메라를 통해 홍길동이 포착됨에 따라 사전에 녹음된 XXX 메시지를 이 홍길동에게 전달하라고 로봇에게 수행시키기 위한 메시지 전달 행동 명령을 생성해 로봇에게 전송한다.
그러면, 상기 로봇은 서비스 에이전트로부터 수신받은 메시지 전달 행동 명령을 토대로 로봇 스크립트의 해당 내용에 따라 해당 행동, 예컨대 사전에 녹음된 XXX 메시지를 홍길동 앞에서 재생하게 된다.
두 번째 예시로서 쓰레기 버리기를 시키는 로봇 동작 서비스를 설명한다. 두 번째 예시에서는 서비스 에이전트가 사용자의 음성 명령을 인식할 수 있고, 로봇의 위치와 방향을 알 수 있고, 로봇을 통해 휴지통의 위치를 알 수 있다고 하자.
먼저, 서비스 에이전트에서는 사용자로부터 "로봇에게 이 쓰레기를 휴지통에 버리라고 해라"와 같은 음성 명령을 인식한다. 그런 후, 서비스 에이전트에서는 이와 같은 로봇 동작 서비스 수행 명령을 로봇에게 내리기 위해 해당 단위 행동 명령을 생성해 로봇에게 전송한다.
즉, 서비스 에이전트에서는 하나의 쓰레기 버리기 로봇 동작 서비스 수행 명령을 위한 단위 행동 명령으로서 쓰레기 잡기 단위 행동 명령, 휴지통으로 이동 단위 행동 명령 및 쓰레기 휴지통 넣기 단위 행동 명령을 다음의 [표 4] 내지 [표 6]과 같이 각각 생성해 로봇에게 전송한다.
상기 [표 4]에서, "3"은 단위 행동 명령의 행동번호로서 로봇 스크립트의 행동이름 "잡기"에 매칭되며, "물체 위치(거리, 방향)"은 단위 행동 명령의 파라미터로서 현재 로봇의 위치를 기준으로 잡을 쓰레기의 상대적인 위치를 나타낸다. 예컨대, 쓰레기 잡기 단위 행동 명령은 로봇에게 사용자가 주는 쓰레기를 잡으라는 명령이다.
상기 [표 5]에서, "1"은 단위 행동 명령의 행동번호로서 로봇 스크립트의 행동이름 "이동"에 매칭되며, "목표 위치(거리, 방향)"은 단위 행동 명령의 파라미터로서 현재 로봇의 위치를 기준으로 이동할 휴지통의 상대적인 위치를 나타낸다. 예컨대, 휴지통으로 이동 단위 행동 명령은 로봇에게 휴지통으로 이동하라는 명령이다.
상기 [표 6]에서, "2"는 단위 행동 명령의 행동번호로서 로봇 스크립트의 행동이름 "놓기"에 매칭되며, "놓을 위치(거리, 방향)"은 단위 행동 명령의 파라미터로서 현재 로봇의 위치를 기준으로 쓰레기를 놓을 상대적인 위치를 나타낸다. 예컨대, 쓰레기 휴지통 넣기 단위 행동 명령은 로봇에게 쓰레기를 휴지통에 넣으라는 명령이다.
그러면, 상기 로봇은 서비스 에이전트로부터 순차적으로 수신받은 [표 4] 내지 [표 6]과 같은 단위 행동 명령을 토대로 다음의 [표 7] 또는 [표 8]과 같은 로봇 스크립트의 내용에 따라 해당 행동을 제어(수행)한다.
다음의 [표 7]은 로봇이 "바스켓 타입(basket type)"인 경우의 로봇 스크립트를, 다음의 [표 8]은 로봇이 "메뉴퓰레이터 타입(manipulator type)"인 경우의 로봇 스크립트를 각각 나타낸다. 여기서, 바스켓 타입 로봇은 사용자가 로봇에게 쓰레기를 쥐어주고서 휴지통에 넣어줘야 되는 타입의 로봇을 의미하며, 메뉴퓰레이터 타입 로봇은 로봇이 집게 형태의 팔로 스스로 쓰레기를 잡고서 휴지통에 넣는 타입의 로봇을 의미한다.
한편, 전술한 바와 같은 본 발명의 방법은 컴퓨터 프로그램으로 작성이 가능하다. 그리고 상기 프로그램을 구성하는 코드 및 코드 세그먼트는 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 또한, 상기 작성된 프로그램은 컴퓨터가 읽을 수 있는 기록매체(정보저장매체)에 저장되고, 컴퓨터에 의하여 판독되고 실행됨으로써 본 발명의 방법을 구현한다. 그리고 상기 기록매체는 컴퓨터가 판독할 수 있는 모든 형태의 기록매체를 포함한다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.