KR20070050287A - 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는방법 - Google Patents

로봇 공통 프레임워크상에서 명령 수행여부를 검지하는방법 Download PDF

Info

Publication number
KR20070050287A
KR20070050287A KR1020050107673A KR20050107673A KR20070050287A KR 20070050287 A KR20070050287 A KR 20070050287A KR 1020050107673 A KR1020050107673 A KR 1020050107673A KR 20050107673 A KR20050107673 A KR 20050107673A KR 20070050287 A KR20070050287 A KR 20070050287A
Authority
KR
South Korea
Prior art keywords
robot
command
abstraction layer
application program
interface
Prior art date
Application number
KR1020050107673A
Other languages
English (en)
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 KR1020050107673A priority Critical patent/KR20070050287A/ko
Priority to US11/594,929 priority patent/US20070112462A1/en
Priority to PCT/KR2006/004695 priority patent/WO2007055528A1/en
Publication of KR20070050287A publication Critical patent/KR20070050287A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements

Abstract

본 발명은 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는 방법에 관한 것으로써, 특히 로봇 공통 프레임워크에 있어서, 로봇 응용 프로그램이 로봇 추상화 계층에 동작 명령을 내린 후, 로봇 추상화 계층의 명령 수행 완료 여부를 확인하는 방법에 관한 것이다. 본 발명의 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는 방법은 로봇 응용 프로그램이 로봇 추상화 계층에 로봇의 구동명령을 전송하는 단계; 로봇 응용 프로그램이 로봇 추상화 계층에 명령 완료 여부 확인 명령을 전송하는 단계; 상기 로봇 추상화 계층이 명령 수행 완료 여부를 확인하는 단계; 및 상기 로봇 추상화 계층이 상기 로봇 응용 프로그램으로 명령 수행 완료 여부를 전송하는 단계를 포함한다. 본 발명에 의하면, 로봇 추상화 계층이 수행 명령 완료 여부를 검지하고, 로봇 응용 프로그램에 전송하는 방식을 사용함으로써, 명령 수행 완료 여부 검지 방법의 신뢰성이 높아지고, 로봇 응용 프로그램과 로봇 추상화 계층의 동기 오류에 의한 오동작을 줄일 수 있고, 로봇 응용 프로그램이 단순하고 쉽게 구현되는 효과가 있다.
로봇, 명령수행, 공통 프레임, 인터페이스

Description

로봇 공통 프레임워크상에서 명령 수행여부를 검지하는 방법{Method to check excuting command in Robot common Framework}
도 1은 로봇 하드웨어의 추상화 방법.
도 2는 로봇 가상 모델 및 클라이언트-서버 환경에서의 가상 모델 접근방법을 나타낸 도면.
도 3a는 전역과 지역 좌표 시스템을 나타낸 도면.
도 3b는 센서 위치를 위한 지역 좌표계.
도 4a는 CRIF-Framework의 구조.
도 4b는 CRIF-Framework의 처리흐름.
도 5는 명령 수행 완료 체크 과정을 나타낸 블록도
도 6은 본 발명의 다른 실시예에 따른 명령 수행 완료 체크 과정을 나타낸 블록도.
도 7은 본 발명의 일 실시예에 따른 명령 수행 완료 여부 패킷의 구조
{도면의 주요 부분의 부호에 대한 설명}
501 : 로봇 응용 프로그램 502 : 로봇 추상화 계층
503 : 휠
본 발명은 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는 방법에 관한 것으로써, 특히 로봇 공통 프레임워크에 있어서, 로봇 응용 프로그램이 로봇 추상화 계층에 동작 명령을 내린 후, 로봇 추상화 계층의 명령 수행 완료 여부를 확인하는 방법에 관한 것이다.
1980년대부터 시작된 산업용 로봇 시장은 자동차와 전자산업 등 노동집약적 산업의 발달을 배경으로 하여 급속도로 성장하였고, 로봇이 생산현장에 투입되면서 산업용 로봇 시장은 본격적으로 확대된 바 있다. 그러나 1990년대 들어와 산업용 로봇 시장이 성숙기에 들어서면서 시장의 정체가 새로운 분야의 산업 형성과 기술 발전을 모색하게 되는 계기로 작용하였다. 이 새로운 분야의 로봇은, 최근에 들어와서 가사노동이나 기타 생활지원에 대한 사회적 요구가 확대되고 고령화 사회의 진전이 이루어지면서, 기존의 고정된 환경에 단순반복 작업을 위주로 하는 산업용 로봇에서 탈피하여 변화하는 환경에 능동적으로 대처하며 인간과 밀착된 서비스를 제공하는 서비스 로봇의 형태로 발전되어 가고 있다. 특히, 반도체와 컴퓨터 및 통신 기술의 획기적인 발전과 더불어 로봇 분야는 정보통신기술을 기반으로 한 지능형 서비스 로봇이라는 신규 로봇 시장을 형성해 가고 있다. 예로서 S사의 애완용 로봇 A에서 비롯된 지능형 서비스 로봇의 상업화는 로봇이 단순히 인간 노동을 대체하는 분야에서만 이용된다는 개념에서 탈피하여, 엔터테인먼트 및 사람의 동반자로서의 역할에 대한 인식이 확대되는 계기가 되었다.
국내 지능형 서비스 로봇산업은 20여 개의 벤처기업을 중심으로 엔터테인먼트 로봇, 홈로봇 등의 초보적인 지능로봇 제품을 출시하고 있으며, 대기업에서는 지능형 가전 기술개발과 맞물려 독자적인 지능로봇 기술개발을 시도하고 있다. S사는 토이 로봇 앤토와 가정용 로봇 아이꼬마, 그 후속 모델인 아이마로를 개발하여 1~2년 내 사업화를 준비중이며, L사는 청소용 로봇인 로봇킹을 출시한 바 있다.
특히, 대기업들은 상대적으로 다양한 사업 분야에 대한 기술과 풍부한 연구인력 및 자본을 앞세워 기존 소규모 선발 업체들과의 기술 수준 차이를 빠르게 극복하고 이 분야를 선도할 것으로 예상된다.
국내 산업용 로봇은 생산 규모로 볼 때 세계 4위 수준으로, 반도체, 자동차 등 제조업의 경쟁력 강화에 일조를 하고 있으나 국내 산업용 로봇은, 기술력 및 로봇 핵심 부품의 대외 의존도가 높아 선진국에 비해서 경쟁력이 낮고, 최근의 산업 침체로 인해서 기존 업계는 활력을 상실하고 있는 상황이다. 2000년 이후 많은 중소 벤처 기업이 로봇 산업의 세계적인 추세에 따라 가정용, 오락용, 교육용, 서비스 로봇 등을 상용화 개발하고 있으며, 세계 로봇축구 대회, 국제 지능로봇 전시회 등이 국내에서 개최되어 점차 국내 지능로봇에 대한 산업화 가능성이 높아지고 있다. D 사에서는 저가의 RC서보 모터를 이용하여 16관절의 인간형 로봇 루시 및 다수의 교육, 연구로봇을 출시하였고, R사에서는 생쥐의 모습을 가진 성장형 토이로 봇 디디와 티티 및 전투용 글래디에이터 로봇을 출시한 바 있다. 마이크로로봇은 교육용 로봇 키트와 경기용 로봇을 사업화하고 있으며, 또한 차세대 로봇 기술 개발과제로 모듈형 로봇을 개발 중이다. 우리 기술은 KIST와 공동으로 가정용 안내 및 청소 로봇 아이작을 개발하여 전시하였고, 청소 로봇을 출시하였으며, 공공 전시 로봇을 차세대 과제로 개발중에 있다. Y사는 축구 로봇 빅토를 상용화하였고, 가정용 교육 로봇 페가수스 및 아이로비를 개발하여 상용화를 준비중에 있다. H사는 연구용 로봇, 축구 로봇을 상용화하였고, 국방용 로봇과 청소로봇 오토로를 개발하였으며, 그 외 다수의 기업들이 교육 및 완구 로봇을 중심으로 산업화에 기여하고 있다.
IT 신성장동력 기획보고서에 따르면 지능형 서비스 로봇을 유비쿼터스 로보틱 컴패니온(Ubiquitous Robotic Companion, 이하 'URC')으로 명명하고 비즈니스 모델에 입각한 산업 활성화와 기술개발을 추진하도록 되어 있다. 여기서, URC란 “언제 어디서나 나와 함께하며 나에게 필요한 서비스를 제공하는 로봇”으로 정의되는바, 기존의 로봇 개념에 네트워크를 부가한 URC 개념을 도입함으로써 다양한 고도의 기능이나 서비스 제공이 가능하고 전이와 휴먼 인터페이스가 획기적으로 향상되어, 사용자 측면에서는 보다 저렴한 가격으로 다양한 서비스와 즐거움을 제공받을 수 있는 가능성이 크게 확대될 것으로 기대된다. URC의 범위에는, 네트워크 인프라에 연결되어 있고 지능을 갖추고 있어야 하되 이동성 측면에서 기구적 이동(Hardware mobility)뿐 아니라 소프트웨어 전이(Software mobility)까지도 포함하는 것을 고려하고 있다.
로봇과 네트워크가 결합된 URC는 각각이 지니는 제약성을 극복, 로봇 산업의 성장을 도모할 수 있는 새로운 가능성을 제시하고 있다. 기존에는 필요한 모든 기능 및 기술적 부담을 로봇 자체에서 해결토록 함으로써 기술적 제약성 및 비용상의 문제를 안고 있었으나, 네트워크를 통해 기능을 외부에서 분담함으로써 비용을 절감하고 유용성을 증대시킬 수 있게 된다. 즉, IT기술의 발전이 가져온 기능적 가능성에 로봇이 합쳐짐으로써 더욱 자유로운 형태와 광범위한 이동성을 갖추고, 인간친화적인 휴먼 인터페이스를 확보함으로써 인간중심 기술을 바탕으로 한 로봇산업으로 발전 가능하게 됐다.
현재와 같이 표준화 된 로봇이 존재하지 않는 상황에서는, 로봇의 기능은 물론 그 구조나 제어방법, 제어를 위한 프로토콜 등 로봇의 구현과 관련된 거의 모든 측면이 제작자나 설계자의 의도에 따라 매우 다양해 질 수 밖에 없다. 특정한 로봇 플랫폼을 대상으로 개발된 응용 프로그램은 다른 플랫폼에서는 동작하지 않을 가능성이 높다. 더구나, 하드웨어 의존적인 부분이 프로그램 곳곳에 산재되어 있기 때문에 이식작업 또한 매우 곤란한 것이 현실이다. 이는 결과적으로 로봇기능 및 응용프로그램 등의 중복개발을 초래할 수 밖에 없어 로봇기술의 발전을 저해하는 중요한 요인 중 하나로 여겨진다.
이와 같은 문제의 해결방법으로 가장 대표적인 것은 로봇 플랫폼에 따라 달라지는 하드웨어 의존적인 부분을 추상화하는 것이다. 즉, 도 1에서 보이는 바와 같이 응용 프로그램은 추상화된 하드웨어 계층을 통하여 제공되는 로봇의 하드웨어적인 기능 및 서비스 만을 이용함으로써 특정 로봇의 하드웨어에 대한 의존성을 감 소할 수 있다.
한편 로봇 장치를 구성하는 각종 센서, 액츄에이터, 그리고 제어보드 등의 성능이 향상되고 모듈화되어 감에 따라, 최근의 로봇들에는 다수의 제어보드들이 탑재되고 이 보드들간에 통신을 통하여 전체적으로 로봇을 제어하는 형태의 플랫폼이 확산되어 가고 있는 추세이다. 로봇 내부의 모듈화, 분산화 경향과 더불어, 심지어는 네트워크를 통하여 원격지에서 로봇을 제어하고 서비스를 제공하는 형태의 분산화도 진척되고 있다.
본 발명의 목적은 URC용 로봇 장치에 대한 공통의 인터페이스 및 클라이언트-서버 구조상의 인터페이스를 이용가능하게 하는 프레임워크상에서 로봇 추상화 계층의 명령 수행 완료 여부를 확인하는 방법을 제공하는 데 있다.
본 발명의 다른 목적은 프레임워크상에서 로봇 추상화 계층의 명령 수행 완료 여부를 확인하는 방법을 제공함으로서, 명령 수행 완료 여부 검지방법의 신뢰성이 높아지고 오동작을 줄일 수 있는 검지방법을 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여 본 발명의 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는 방법은 로봇 응용 프로그램이 로봇 추상화 계층에 로봇의 구동명령을 전송하는 단계; 로봇 응용 프로그램이 로봇 추상화 계층에 명령 완 료 여부 확인 명령을 전송하는 단계; 상기 로봇 추상화 계층이 명령 수행 완료 여부를 확인하는 단계; 및 상기 로봇 추상화 계층이 상기 로봇 응용 프로그램으로 명령 수행 완료 여부를 전송하는 단계를 포함한다.
본 발명에서 상기 로봇 추상화 계층이 상기 로봇 응용 프로그램으로 명령 수행 완료 여부를 나타내는 데이터에는 수행명령번호 및 명령 수행 완료여부 플래그 데이터를 포함하는 것이 바람직하다.
본 발명에서 상기 로봇 추상화 계층이 명령 수행 완료 여부를 확인하는 방법은 상기 로봇 추상화 계층이 해당 명령이 수행된 이후 엔코더를 분석하여 판단하는 것이 바람직하다.
이하, 본 발명의 바람직한 실시예를 첨부한 도면을 참조하여 설명하기로 한다. 하기의 각 도면의 구성 요소들에 참조 부호를 부가함에 있어서, 동일한 구성 요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하며, 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 공지 기능 및 구성에 대한 상세한 설명은 생략한다.
본 발명에서는 공통 로봇 인터페이스 프레임워크(Common Robot Interface Framework, CRIF)를 정의한다. CRIF는 응용 프로그램의 하드웨어 플랫폼 의존성을 줄이고, 이식성을 향상시키기 위하여 하드웨어 추상화를 목적으로 하는 일종의 가상로봇을 이용한 공통적인 인터페이스(CRIF Interface)와 이를 클라이언트-서버 환 경에서 지원하기 위한 프레임워크(CRIF-Framework)에 대한 규격이다.
도 2는 로봇 가상 모델 및 클라이언트-서버 환경에서의 가상 모델 접근방법을 보여준다. 로봇 응용 프로그램은 본 발명이 정의하는 규격에 따르는 공통 인터페이스를 이용하여 로봇의 하드웨어 자원에 접근하거나 로봇을 제어한다.
본 발명에서는 도 2에서 보이듯이 일종의 가상 로봇에 대한 모델을 정립하고 이에 대한 공통 인터페이스를 제공한다. 이 가상 로봇은 디퍼런셜 타입의 바퀴 구동장치와, 카메라가 부착된 팬-틸트가 가능한 헤드, 로봇외부 객체와의 거리를 측정할 수 있는 거리센서 장치, 충돌감지용 범퍼 센서, 소리를 입력받는 마이크 장치, 소리를 출력하는 스피커 장치, 로봇 외부의 이미지를 획득하기 위한 영상 장치, 그리고 배터리 전압 감지 장치를 가지는 로봇으로 정의되는 것이 바람직하다.
본 발명에서 정의하는 공통인터페이스는 도 2에서 보이는 바와 같이 로봇의 부속장치에 접근하기 위한 인터페이스를 제공하며, 그 외의 장치에 접근하기 위한 인터페이스는 정의하지 않는다. 본 발명에서 정의하는 인터페이스 프레임워크는 본 표준에서 정의하는 공통 인터페이스를 클라이언트-서버 환경에서 이용 가능하게 확장하는 구조이다. 이때, 로봇 응용 프로그램과 로봇 장치가 클라이언트-서버 구조를 이룬다는 것은 주로 로봇 응용 프로그램이 로봇 내부에 존재하기는 하나 로봇 부속 장치와는 서로 다른 컴퓨팅 노드에서 동작하는 환경을 의미한다. 그러나 로봇 응용 프로그램이 로봇 장치 외부의 프로세서에서 동작하는 원격 환경에도 적용 가능하다.
본 발명에서 정의하는 공통 인터페이스는 로봇 부속 장치 중 하나 또는 그 이상의 장치를 지닌 로봇에 적용 가능하다. 또한, 본 표준에서 정의하는 공통 인터페이스 프레임워크는 로봇과 로봇 장치와의 통신에 있어서 원격 함수 호출 방법을 지원하는 경우에 적용 가능하다.
본 발명의 공통 인터페이스 규격으로 인하여 직접적인 영향을 받는 대상은 크게 로봇 응용 프로그램 개발자와 로봇 개발자이다. 로봇 응용 프로그램 개발자는 본 표준에서 규정하는 공통 인터페이스 규격에 따라서 로봇 응용 프로그램을 개발하게 되며, 로봇 개발자는 본 표준에서 규정하는 공통 인터페이스 규격을 지원할 수 있도록 실제 로봇 하드웨어 의존적인 구현을 담당하게 된다.
본 발명의 인터페이스 프레임워크 규격으로 인하여 직접적인 영향을 받는 대상은 프레임워크개발자이다. 프레임워크 개발자는 본 발명에서 정의한 규격대로 프레임워크를 개발하여야 한다. 로봇 응용 프로그램 개발자나 로봇 개발자는 본 표준의 프레임워크에 대하여 영향을 받지 아니한다.
로봇 응용 프로그램과 로봇 간의 클라이언트-서버 통신은 프레임워크가 담당하기 때문에 로봇 응용 프로그램 개발자나 로봇 개발자는 공통된 인터페이스만 준수하면 된다.
로봇을 구성하는 장치 하드웨어는 플랫폼별 또는 장치별로 그 특성 및 종류가 다양하기 때문에, 로봇 장치에 접근하는 인터페이스의 표준화를 위해서는 우선 로봇 플랫폼에 대한 일종의 모델을 세우고 이를 기반으로 공통된 인터페이스를 정의하는 것이 바람직하다. 본 발명에서는 특정한 로봇 장치에 대한 의존성을 줄이기 위하여 추상적인 로봇 모델을 제시하고 로봇의 기능 및 서비스에 접근하기 위한 표 준화 된 인터페이스인 API를 정의한다.
로봇은 본 발명에서 정의하는 공통 인터페이스 규격을 지원하는 개체로서 공통 인터페이스의 구현은 로봇이 지닌 장치 특성에 맞게 공통 인터페이스 규격을 구현한다. 본 발명에서는 로봇 응용 프로그램에 공통된 인터페이스를 제공하기 위하여, 일종의 가상 로봇에 대한 모델을 정립하고 이에 대한 공통 인터페이스를 제공한다.
CRIF-Interface에서 모든 응용 프로그램은 일종의 가상 로봇을 대상으로 동작을 명령한다. 이러한 가상 로봇 모델을 통하여 특정 로봇을 제어할 경우 응용 프로그램은 특정 로봇의 하드웨어에 대한 의존성을 해소할 수 있다는 장점이 있다.
하지만, 특정한 로봇 플랫폼이 가상 로봇 모델에 정의되어 있지 않은 특수한 기능 혹은 기구가 있다면 CRIF-Interface를 통하여는 그 특수기능 혹은 기구에 대한 사용을 불가하므로, 가능한 한 다양한 로봇이 가진 기능을 최대한 포함하는 유연한 인터페이스 집합을 정의할 필요가 있다.
그러나 반면에 실질적으로 거의 사용되지 않는 기능까지를 포함하는 경우, CRIF-Interface는 필요 이상으로 복잡해지게 되며, 당연히 하드웨어 세부 사양에 따른 구현도 복잡해진다.
따라서, 본 발명에서 정의하는 가상 로봇 모델은 상술한 바와 같이 디퍼런셜 타입의 바퀴 구동장치와, 카메라가 부착된 팬-틸트가 가능한 헤드, 로봇외부 객체와의 거리를 측정할 수 있는 거리센서 장치, 충돌감지용 범퍼 센서, 소리를 입력받는 마이크 장치, 소리를 출력하는 스피커 장치, 로봇 외부의 이미지를 획득하기 위 한 영상 장치, 그리고 배터리 전압 감지 장치로 구성된다.
표 1은 본 발명에서 정의하는 로봇이 구비하는 장치를 나타낸 것이다.
분류 규격
이동장치 2개의 주 구동 모터를 가지는 디퍼런셜 드라이브 방식의 휠
헤드부 1개의 팬-틸트 가능한 머리 제어부
거리센서 장치 N개의 소나 또는 적외선 거리센서 배열
범퍼센서 N개의 범퍼 센서 배열
소리 입력 장치 N개의 마이크
소리 출력 장치 1개의 스피커
영상 입력 장치 N개의 카메라
배터리 모니터 1개의 배터리 전압 감지장치
로봇의 이동을 위한 인터페이스를 위한 파라미터별 단위는 표 2와 같다.
파라미터 단위
거리 M
시간
각도 라디안
선속도 m/s
각속도 Rad/s
선가속도 m/s2
각가속도 Rad/s2
좌표계는 도 3a에 도시된 바와 같이 x, y, z로 구성되는 3차원 직각 좌표계를 사용하며, 지역 좌표 시스템에서는 로봇의 전방이 x, 왼쪽 측면이 y, 위쪽으로 수직 방향이 z 축을 이룬다. θ는 x축과 y축이 이루는 각도인데, 로봇의 전방이 0도, 로봇의 왼쪽 측면이 90도가 된다. γ는 xy평면과 z축이 이루는 각도이다(도 3b참조).
이하 로봇 구동을 위한 인터페이스에 대해서 정의하면 다음과 같다.
로봇 매니저는 로봇 전체의 초기화 및 종료 그리고 로봇 플랫폼의 장치 정보를 제공한다.
이동 인터페이스는 로봇에 장착된 휠의 구동, 정지 등의 명령을 수행하며, 로봇의 최대속도, 가속도 등을 설정하며, 현재 속도와 위치 등의 상태를 알 수 있다. 내부적으로 엔코더 정보를 이용하여, 속도 및 위치제어를 수행한다.
속도제어 명령에는 양 바퀴의 속도를 직접 제어하는 SetWheelVel()함수와, 로봇의 선속도와 각속도를 설정하는 SetVel() 함수가 있으며, 위치제어 명령에는 전방 또는 후방으로 이동하는 Move()함수와, 정해진 상대각도만큼 회전하는 Turn()함수 그리고 주어진 상대 각도와 회전반경을 가지고 회전하는 Rotate()함수가 있다.
그 외에 현재 속도와 위치를 얻어올 수 있는 함수와, 선가속도와 각가속도, 최대 선속도와 최대 각속도를 설정할 수 있는 함수들이 있으며, 마지막으로 로봇을 정지시키는 Stop(), 비상상황에서 빠르게 정지할 수 있는 EmergencyStop()이 있다.
휠 구현(Wheel Implementation)에서의 위치제어는 로봇의 현재 위치를 기준으로 한 로봇 로컬 좌표계만을 사용한다. 즉, Move()나 Turn()함수가 호출이 되면 그 시점의 로봇 위치를 기준으로 일정 거리를 이동하거나 일정 각도만큼 회전하게 된다.
머리부 제어는 로봇 헤드부에 관한 정보, 머리부의 현재 각도, 로봇 헤드 팬과 틸트의 포화속도를 설정 및 지정된 회전속도로 정해진 각도로 머리를 회전하라는 명령에 대한 정보를 포함한다.
카메라 제어는 카메라 해상도 정보, 카메라에 장착된 줌 구동부의 정보, 지정된 카메라의 지원가능한 해상도의 리스트, 카메라 아이디, 지정된 카메라의 현재 해상도, 지정된 카메라의 해상도 설정, 지정된 카메라의 현재 프레임 레이트, 지정된 카메라의 프레임 레이트를 설정, 지정된 영상정보 획득 및 중지, 획득한 영상을 버퍼에 저장하거나 반환, 지정된 카메라의 줌에 관한 정보 및 줌팩터, 줌 동작 수행에 관한 정보를 포함한다.
근접(proximity)센서 인터페이스는 로봇에 장착된 소나 센서나 적외선 거리센서 등 장애물과의 거리를 알아올 수 있는 센서배열에 대한 인터페이스이다. 특성이 같은 센서들의 집합을 센서배열이라고 한다. 특성이 동일한 소나센서가 여러 개 배치된 경우 이들이 하나의 센서배열을 이룬다. 이와 같은 센서배열이 여러 개 존재할 수 있으며 각각 아이디로 구분된다.
범퍼 센서 인터페이스는 로봇이 외부 장애물과 충돌했을 경우 이를 알려줄 수 있는 범퍼 센서들에 대한 인터페이스로써, 로봇에 장착된 범퍼나, 매우 짧은 거리를 인지하는 적외선 센서들의 배열이 이에 해당한다. 장애물과의 충돌 유무를 알려준다. 특성이 같은 센서들의 집합을 센서배열이라고 한다. 특성이 동일한 소나 센서가 여러 개 배치된 경우 이들이 하나의 센서배열을 이룬다. 이와 같은 센서배열이 여러 개 존재할 수 있으며 각각 아이디로 구분된다.
배터리 모니터는 주전원에 대한 배터리 전압을 체크한다.
스피커는 음성데이터를 스피커를 통해 출력하고, 마이크 컨트롤은 오픈된 마이크 채널로부터 음성 데이터를 획득한다.
이하 상기와 같은 인터페이스를 통하여 통신하기 위한 CRIF-Framework를 정의하면 다음과 같다.
도 4는 본 발명에서 정의하는 CRIF-Framework의 구조이다.
CRIF-Framework는 CRIF-Interface를 클라이언트-서버환경으로 확장하기 위한 프레임워크를 규정한다. CRIF-Framework를 구성하는 요소는 클라이언트 측의 응용 프로그램 개발자들이 로봇구동을 위하여 이용하는 CRIF-Interface가 존재하는 계층, 서버 측의 로봇 플랫폼 개발자들이 CRIF-Interface에 정의된 API를 실제 로봇 구동을 위하여 구현하는 계층, 그리고 이 두 계층을 통신을 담당하는 계층이 존재한다.
CRIF-Framework는 언급한 바와 같이 응용 프로그램 개발자 혹은 로봇 하드웨어 개발자들이 각각의 시스템을 개발하는 데 이용하는 공통의 프레임워크를 제공한다. 클라이언트 측의 응용 프로그램 개발자는 CRIF-Framework에서 제공하는 인터페이스를 이용하여 로봇 하드웨어에 대한 제어 및 접근을 할 수 있으며, 서버 측의 로봇 하드웨어 플랫폼 개발자는 CRIF-Framework에서 정의하는 API의 정의에 맞게 로봇이 구동할 수 있도록 API의 내용을 각 플랫폼에 맞게 구현하여 클라이언트 측에서 요구한 실제 하드웨어의 제어 및 접근을 실행할 수 있도록 한다.
그림 4에 나타낸 바와 같이 CRIF-Framework는 클라이언트 측과 서버 측에 동시에 위치하고 있으며, Robot API Layer(RAL), API Sync Layer(ASL), Robot API Presentation Layer(RAPL)로 구성되어 있다. 또한, 클라이언트 측에는 RAL과 ASL의 일부가 위치하고 있으며, 서버 측에는 ASL의 일부와 RAPL이 위치하고 있다. 즉, 클라이언트 측의 개발자는 RAL에 접근하여 CRIF-Framework이 지원하는 인터페이스를 이용하며, 서버 측에서는 RAPL에 접근하여 CRIF-Framework에서 지원하는 인터페이스를 이용할 수 있다.
Robot API Layer(RAL)은 응용 프로그램 개발자들이 이용할 수 있는 인터페이스를 제공한다. 로봇의 각 장치에 대한 접근은 오직 RAL에서 제공되는 인터페이스만을 이용함으로써 가능하며, 그 외의 다른 방법에 의한 접근은 불가능하다. 즉, RAL에서는 추상화된 로봇 모델에 대한 접근 및 동작을 위한 접근지점을 제공하는 것으로, 실제 CRIF-Interface에서 정의하고 있는 API의 구현은 RAL에서 이루어지지 않는다. RAL은 응용 프로그램에서 호출된 CRIF-Interface 함수를 ASL로 전달하는 역할만을 담당하며, 실제 CRIF-Interface의 구현은 서버 측의 H/W Dependent API Implementation(HDAI)에서 이루어진다.
API Sync Layer (ASL)에서 제공되는 인터페이스는 ASL을 통하여 서버 측에 실제 기능 구현을 위해 마련된 Robot API Presentation Layer에 전달된다. 즉, ASL은 RAL과 RAPL을 연결해 주는 역할을 담당한다. ASL은 2개의 부 계층으로 이루어져 있으며, 각각 클라이언트 측의 RAL과 연결된 계층과 서버 측의 RAPL과 연결된 계층으로 구성된다. 각 부 계층의 역할은 동일하나 그 세부적 기능은 차이가 있다.
클라이언트 측의 RAL에서 호출된 API 함수를 API Encoder를 통하여 서버 측의 API Decoder에 전송하며, 전송된 API 함수에 의해 하드웨어가 동작하고 난 뒤의 반환 값 혹은 로봇 하드웨어의 상태를 나타내는 데이터 값은 서버 측의 Data Encoder에 의해 클라이언트 측의 Data Decoder로 전송된다. 결국, ASL의 기능은 응용 프로그램에서 호출되는 API 함수의 Encode/Decode 기능과 로봇 하드웨어에서 전송되는 데이터의 Encode/Decode 기능을 수행한다.
Robot API Presentation Layer(RAPL)은 RAL에서 정의된 API의 실제 구현을 위하여 서버 측의 하드웨어 개발자들이 작성할 하드웨어 Dependent API Implementation(HDAI)과의 연결을 담당한다. 실제적으로는 RAL의 counterpart로의 역할을 하게 되어 구성은 RAL과 동일하다. 차이점은 RAL의 경우 응용 프로그램에서 RAL의 API를 호출하게 되나, RAPL에서는 HDAI에서 구현할 API를 지정해 주는 reference point의 역할을 하게 되어, 실제 API 동작을 위한 코딩 작업은 HDAI에서 이루어진다. 즉, RAPL은 HDAI의 access point로서 역할을 담당하게 된다. 결국, 응용 프로그램 개발측면에서는 RAL을 통하여 CRIF-Interface에 접근할 수 있으며, 하드웨어 개발측면에서는 RAPL을 통하여 CRIF-Interface에 접근할 수 있다. ASL은 RAL과 RAPL를 연결해 주는 역할을 담당하며, 응용 프로그램/Hardware 개발측면에서는 직접 접근이 불가능하다.
CRIF-Framework에서 클라이언트와 서버의 연결은 ASL을 통하여 이루어진다. ASL은 API Encoder/Data Decoder로 이루어진 ASL Client와 API Decoder/Data Encoder로 우리어진 ASL Server의 2개의 부 계층으로 구성된다. 클라이언트와 서버의 연결은 API Encoder ↔ API Decoder, Data Encoder ↔ Data Decoder와같이 서로 상응하는 요소에 의하여 이루어진다. 클라이언트 측에서 특정 API를 호출하면 이는 곧 API Encoder를 통하여 서버 측의 API Decoder로 전송되며, 그 API 동작 결과에 따른 반환 값은 서버 측의 Data Encoder를 통하여 클라이언트 측의 Data Decoder로 전송되어 응용 프로그램에 전달된다.
실제적인 구현에 있어, 2개의 부 계층의 연결은 여러 방식으로 이루어질 수 있다. 각 Encoder/Decoder의 연결은 Socket, COM, CORBA와 같은 방식을 이용할 수 있으며, 클라이언트 또는 서버 측의 운영체제에 따라 표 3의 예와 같이 연결 방식 선정이 이루어질 수 있다. 표 3의 예에서 알 수 있듯이 클라이언트 또는 서버 측의 운영체제에 따라 선택할 수 있는 연결 방식이 결정되며, 운영체제에 의존적인 가능한 연결 방법을 모두 지원해야 한다.
운영체제 연결방식
클라이언트 서버 Socket COM CORBA
MS Windows MS Windows O O O
MS Windows Linux O X O
Linux MS Windows O X O
Linux Linux O X O
도 4b를 참조하여, CRIF를 이용한 클라이언트/서버 구조상의 응용프로그램과 로봇간의 처리순서를 살펴보면 다음과 같다.
우선, 응용 프로그램에서 로봇을 동작시키기 위하여 RAL에 정의된 API를 호출한다(1). 호출된 API에 대한 정보(함수명, 파라미터 등)를 API Encoder에 전달한다(2). 전달된 API의 정보를 ASL의 연결상태에 따른 규약에 따라 API Decoder로 전달한다. TCP/IP로 연결되었을 경우는 미리 정의된 패킷의 형태로 전달되며, DCOM 혹은 CORBA의 경우 인터페이스의 접근에 따라 이루어진다(3). API Decoder에 전달된 API의 정보에 따라(1)에서 호출된 API와 동일한 API를 RAPL상에서 호출한다(4). RAPL상의 API가 실제 구현되어 있는 HDAI의 API를 호출한다(5). 호출된 HDAI API는 내부적으로 로봇 장치가 이해할 수 있는 명령으로 전환하여 로봇 장치에 전달한다(6). 실행된 결과를 호출된 API의 반환 값으로 연속적으로 전달한다. 이는 (1)에서 호출된 API가 실제로 하드웨어를 동작한 후의 그 결과값을 전달하는 과정에 지나지 않는다. 예로서, 초음파 센서의 값을 읽어오는 API가 호출되어 실제 동작을 한 후, 각 센서로부터 얻어진 거리 값이 이 과정에 의해 응용 프로그램에 전달된다(7).
상기와 같이 정의된 로봇공통 인터페이스 및 로봇 공통 프레임워크는 다음과 같은 방법에 의하여 명령 수행여부를 판단하게 된다.
도 5는 명령 수행 완료 체크 과정을 나타낸 블록도이다.
로봇의 표준으로 채택되고 있는 로봇 공통 프레임워크는 로봇 응용 프로그램(501)과 로봇 추상화 계층(502)으로 구성되는데, 이 들은 로봇 공통 인터페이스를 통하여 서로 정보를 주고 받는다. 로봇 응용 프로그램(501)은 고부하의 계산을 수행하고, 로봇 추상화 계층(502)이 수행할 명령을 생성하고 전송한다. 로봇 추상화 계층(502)은 로봇 응용 프로그램(501)이 전송한 수행 명령을 수신하고 그 명령을 수행하며, 로봇의 상태 정보를 전송한다. 이러한 로봇 응용 프로그램(501)의 명령과 로봇 추상화 계층(502)의 로봇 상태 정보는 로봇 공통 인터페이스를 통하여 표준화된 형태로 전송된다. 이때 로봇 공통 인터페이스는 지역적인 호출에 의하여 수행될 수도 있고, 네트워크를 통한 원격 호출에 의해 수행될 수도 있다.
여기서 로봇 응용 프로그램(501)은 로봇 추상화 계층(502)이 명령을 수행 완료하였는지 그 여부를 알아야 한다. 도 5를 참조하면, 로봇 추상화 계층(502)이 명령을 수행했는지 여부를 판단하는 방법은 모터 인코더 데이터와 같은 상태 정보를 이용하여 로봇 추상화 계층의 명령 수행 완료 여부를 검지한다.
즉, 로봇 응용 프로그램(501)이 로봇의 소정 부분의 구동 명령을 로봇 추상화 계층(502)에 전송한다(1). 상기 구동 명령을 전송 받은 로봇 추상화 계층(502)은 상기 구동 명령에 따라 해당 장치를 구동한다. 도 5에서는 로봇의 휠(503)을 구동하는 명령이 전송된 경우이다. 로봇이 휠(503)을 구동한 후 이에 대한 엔코더 데이터를 생성한다. 이후 로봇 응용 프로그램(501)은 상기 엔코더 데이터를 상기 로봇 추상화 계층(502)에 요청을 하고(2), 상기 요청받은 로봇 추상화 계층(502)은 상기 로봇 응용 프로그램(501)에 엔코더 데이터를 전송한다(3). 상기 엔코더 데이터를 전송받은 로봇 응용 프로그램(501)은 상기 엔코더 데이터를 분석하여 로봇에 전송한 구동 명령에 따라 정확한 명령을 수행하였는지 여부를 판단한다. 상기와 같은 구동 방법은 많은 양의 데이터가 로봇 응용 프로그램으로 전송되므로 통신 데이터 이상 또는 로봇 추상화 계층(502)과 로봇 응용 프로그램(501)의 동기가 이상해 지는 경우 명령 수행 여부 검지방법에 약간의 문제가 발생할 가능성도 있다. 따라서, 다음과 같은 검지방법을 이용하는 것도 바람직하다.
도 6은 본 발명의 일 실시예에 따른 명령 수행 완료를 체크하는 과정을 나타낸 블록도이다.
도 6을 참조하면, 로봇 응용프로그램(501)은 소정의 구동명령을 로봇 추상화 계층(502)에 전송한다(1). 상기 구동명령은 구동의 원하는 장치에 따라 다양하게 구현되는 것이 바람직하나 본 발명에서는 로봇 바퀴 휠을 구동시키는 것으로 예시한다. 상기 구동명령을 전송한 로봇 응용 프로그램(501)은 명령 완료 여부 확인 명령을 재차 전송한다(2). 상기 명령 완료 확인 명령은 도 7의 패킷형태로 전송되는데, 도 7을 참조하면, 가장 첫 단에는 수행명령번호 프레임(701)이 위치하고, 다음에는 명령 수행 완료 여부 플래그 프레임(702)이 위치한다. 상기와 같이 휠 구동 명령 및 명령 완료 여부 확인 명령을 전송받은 로봇 추상화 계층(502)은 로봇의 휠을 구동한다. 상기 휠을 구동한 로봇은 휠의 구동이 종료한 후 엔코더 정보를 획득하고 상기 정보를 이용하여 명령 수행 완료 여부를 확인한다(3). 상기 명령 수행 완료를 확인한 로봇 추상화 계층(502)은 명령 수행 완료 여부를 로봇 응용 프로그램으로 전송한다. 이후 상기 명령 수행 완료 여부를 전송받은 로봇 응용 프로그램은 자신이 전송한 구동명령이 정확하게 수행되었음을 확인한다(4).
상기와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야의 숙련된 당업자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
상술한 바와 같이 본 발명에 의하면, 로봇 추상화 계층이 수행 명령 완료 여부를 검지하고, 로봇 응용 프로그램에 전송하는 방식을 사용함으로써, 명령 수행 완료 여부 검지 방법의 신뢰성이 높아지고, 로봇 응용 프로그램과 로봇 추상화 계층의 동기 오류에 의한 오동작을 줄일 수 있고, 로봇 응용 프로그램이 단순하고 쉽게 구현되는 효과가 있다.

Claims (3)

  1. 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는 방법에 있어서,
    로봇 응용 프로그램이 로봇 추상화 계층에 로봇의 구동명령을 전송하는 단계;
    로봇 응용 프로그램이 로봇 추상화 계층에 명령 완료 여부 확인 명령을 전송하는 단계;
    상기 로봇 추상화 계층이 명령 수행 완료 여부를 확인하는 단계; 및
    상기 로봇 추상화 계층이 상기 로봇 응용 프로그램으로 명령 수행 완료 여부를 전송하는 단계를 포함하는 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는 방법.
  2. 제 1항에 있어서, 상기 로봇 추상화 계층이 상기 로봇 응용 프로그램으로 명령 수행 완료 여부를 나타내는 데이터에는 수행명령번호 및 명령 수행 완료여부 플래그 데이터를 포함하는 것을 특징으로 하는 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는 방법.
  3. 제 1항에 있어서, 상기 로봇 추상화 계층이 명령 수행 완료 여부를 확인하는 방법은 상기 로봇 추상화 계층이 해당 명령이 수행된 이후 엔코더를 분석하여 판단하는 것을 특징으로 하는 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는 방법.
KR1020050107673A 2005-11-10 2005-11-10 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는방법 KR20070050287A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020050107673A KR20070050287A (ko) 2005-11-10 2005-11-10 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는방법
US11/594,929 US20070112462A1 (en) 2005-11-10 2006-11-09 Method for detecting if command implementation was completed on robot common framework, method for transmitting and receiving signals and device thereof
PCT/KR2006/004695 WO2007055528A1 (en) 2005-11-10 2006-11-10 Method for detecting if command implementation was completed on robot common framework, method for transmitting and receiving signals and device thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050107673A KR20070050287A (ko) 2005-11-10 2005-11-10 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는방법

Publications (1)

Publication Number Publication Date
KR20070050287A true KR20070050287A (ko) 2007-05-15

Family

ID=38273934

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050107673A KR20070050287A (ko) 2005-11-10 2005-11-10 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는방법

Country Status (1)

Country Link
KR (1) KR20070050287A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100957550B1 (ko) * 2007-12-03 2010-05-11 한국전자통신연구원 네트워크 로봇의 공통 인터페이스 제공 방법 및 장치
CN112328474A (zh) * 2020-10-28 2021-02-05 太仓市同维电子有限公司 基于Web Socket远程给Robot Framework下发参数方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100957550B1 (ko) * 2007-12-03 2010-05-11 한국전자통신연구원 네트워크 로봇의 공통 인터페이스 제공 방법 및 장치
CN112328474A (zh) * 2020-10-28 2021-02-05 太仓市同维电子有限公司 基于Web Socket远程给Robot Framework下发参数方法

Similar Documents

Publication Publication Date Title
US6889118B2 (en) Hardware abstraction layer for a robot
Araújo et al. Integrating Arduino-based educational mobile robots in ROS
Johnson et al. Mobile emulab: A robotic wireless and sensor network testbed
US20070112462A1 (en) Method for detecting if command implementation was completed on robot common framework, method for transmitting and receiving signals and device thereof
Yu et al. A portable, 3D-printing enabled multi-vehicle platform for robotics research and education
KR20070050287A (ko) 로봇 공통 프레임워크상에서 명령 수행여부를 검지하는방법
WO2008069366A1 (en) Robot simulation system using the network
WO2023213510A1 (en) Modular robotic system
KR101253561B1 (ko) 다기종 로봇 진단 관리 서버
KR20070050285A (ko) 로봇 공통 프레임워크에서 카메라 영상 송수신 방법
Newman et al. Embedded mobile ros platform for slam application with rgb-d cameras
Maeyama et al. Remote viewing on the Web using multiple mobile robotic avatars
Nasri et al. ROS-based autonomous navigation wheelchair using omnidirectional sensor
KR20070050281A (ko) 로봇 공통 프레임워크에서 카메라 영상 송수신 방법
KR20070050286A (ko) 로봇 공통 프레임워크상에서 음향신호를 처리하는 방법
Miller et al. LIDAR for Scribbler 2
Elkady et al. A plug and play middleware for sensory modules, actuation platforms and task descriptions in robotic manipulation platforms
Preston The definitive guide to building Java robots
Chen et al. A simulation environment for OpenRTM-aist
Farinelli et al. SPQR-RDK: a modular framework for programming mobile robots
Xiao et al. A mobile robot platform with DSP-based controller and omnidirectional vision system
Bananga Telepresence Robot
Usov Vision based mobile robot navigation
Rubia Estruch Model and build robot in ROS environment
Chandak et al. Wall-E Surveyor Robot Using Wireless Networks

Legal Events

Date Code Title Description
A201 Request for examination
E601 Decision to refuse application