KR101231771B1 - 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법 - Google Patents

로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법 Download PDF

Info

Publication number
KR101231771B1
KR101231771B1 KR1020100140095A KR20100140095A KR101231771B1 KR 101231771 B1 KR101231771 B1 KR 101231771B1 KR 1020100140095 A KR1020100140095 A KR 1020100140095A KR 20100140095 A KR20100140095 A KR 20100140095A KR 101231771 B1 KR101231771 B1 KR 101231771B1
Authority
KR
South Korea
Prior art keywords
robot
component
software
environment
software component
Prior art date
Application number
KR1020100140095A
Other languages
English (en)
Other versions
KR20120077955A (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 KR1020100140095A priority Critical patent/KR101231771B1/ko
Publication of KR20120077955A publication Critical patent/KR20120077955A/ko
Application granted granted Critical
Publication of KR101231771B1 publication Critical patent/KR101231771B1/ko

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/1656Programme controls characterised by programming, planning systems for manipulators
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Manipulator (AREA)

Abstract

본 발명은 로봇이 이동 또는 내부 고장 등의 의해 변경되는 외부 또는 내부의 환경 변화 및 상황 조건들에 적합한 반응 및 적절한 동작을 자율적으로 수행가능하도록 하기 위해 로봇 내부에 구비된 소프트웨어 컴포넌트 또는 외부의 서버로부터 다운받아 동적으로 재구성하는 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법을 제공하고자 한다.

Description

로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법{Apparatus and method for dynamically reconfiguring robot's software components}
본 발명은 로봇의 내부에 구비된 소프트웨어 컴포넌트를 동적으로 재구성하는 것에 관한 것으로, 더욱 상세하게는 로봇이 이동 또는 내부 고장 등의 의해 변경되는 외부 또는 내부의 환경 변화 및 상황 조건들에 적합한 반응 및 적절한 동작을 자율적으로 수행가능하도록 하기 위해 로봇 내부에 구비된 소프트웨어 컴포넌트 또는 외부의 서버로부터 다운받아 동적으로 재구성하는 것에 관한 것이다.
최근 다양한 산업 및 생활 분야에 응용됨에 따라 로봇에 관한 연구가 활발해지고 있다. 최근에는 로봇의 구동 자체에 대한 기술뿐만 아니라 로봇의 구동 특성을 이용하여 일정한 기능을 수행하게 하는 기술에 대한 연구가 증가하고 있다.
특히 종래의 산업용 로봇과는 다르게 지능형 로봇은 사용자에게 보다 다양한 서비스를 제공하기 위해 주행, 센싱 및 프로세싱 등의 다양한 기능들을 능동적으로 수행해야 한다. 만일 여기서 센싱 기능이 보완되는 경우 정확한 상황 인지를 바탕으로 보다 능동적으로 행동할 수 있으며 프로세싱의 제약이 극복됨으로써 로봇의 기능이 확장되고 다양한 서비스를 가능하게 함으로써 로봇의 지능은 더 높아질 수 있게 된다.
따라서 로봇이 사물이나 사람을 인식하거나 로봇의 위치인식을 위해서는 다양한 센서 및 영상장비들뿐만 아니라, 로봇이 상황에 적합한 행동을 취하기 위 수많은 액츄에이터들로 구성될 수 있다. 이처럼 다양한 센서, 액츄에이터 및 영상장비들이 물리적으로 분산된 시스템 구조를 갖는 지능형 로봇은 하나의 프로세서를 통해 연결될 수 있는 I/O 포트의 수가 제한되기 때문에 하드웨어 부품처럼 특정 기능을 제공하는 목적으로 구성되는 하드웨어 시스템 단위를 의미하는 여러 개의 모듈로 구성될 수 있다. 실제로 모듈 기반의 지능형로봇시스템은 영상정보를 전달하기 위한 IEEE 1394A/B, 외부망과 연동을 위한 이더넷(Ethernet), 로봇의 실시간 제어 및 센서들의 센싱 정보를 위한 CAN 2.0 A/B, 대용량 데이터를 전송하기 위한 USB 1.1/2.0 및 센서들을 위한 RS232C 등과 같은 다양한 이종 네트워크 인터페이스들을 수용할 수 있으며 각 모듈들은 이러한 인터페이스들을 통해 다양한 형태로 연결될 수 있다.
한편 상기에서 설명한 바와 같이 지능형 로봇은 사용자에게 보다 다양한 서비스를 제공하기 위해 주행, 센싱 및 프로세싱 등의 다양한 기능들을 능동적으로 수행해야 하는데 일 예로 센싱 기능이 보완되는 경우 정확한 상황 인지를 바탕으로 보다 능동적으로 행동할 수 있음이 예측된다.
한편 지능형 로봇이 보다 다양한 범위로 사용됨에 따라 로봇의 형태 또한 다양하게 개발되고 있다.
그런데 로봇이 사용되는 분야에 따라 서로 다른 로봇을 제작하여 사용하는 것은 효율적이지 못하여 표준화되어 제작된 로봇이 다양한 액츄에이터, 센싱 및 프로세싱 기능들을 보유하도록 하고 상황에 따라 액츄에이터, 센싱 및 프로세싱 기능들을 사용되는 상황에 최적화되도록 하는 방안이 연구되고 있으나 아직까지는 충분한 개발이 이루어지지 않은 실정이다.
일 예로 실내에서 사용되는 로봇이 이동하여 실외에서 사용된다고 할 때, 종래의 로봇은 실내의 환경과 실외의 환경이 전혀 달라 실내용으로 제작된 로봇을 실외에서 사용하는 것은 바람직하지 않은 것으로 인식되고 있으며, 실외에서 사용하기 위해서는 실외 환경에 최적화된 로봇을 별도로 제작하거나 실내용으로 제작된 로봇을 실외 환경에 맞도록 그 내부 부품을 교체할 뿐만 아니라 이에 따른 응용프로그램이나 환경 변수를 사용자 등이 별도로 설정하여야만 하는 문제점이 있다.
다른 예로 동일한 환경에서 사용되는 로봇이라 하더라도 로봇을 구성하는 컴포넌트 예를 들어 모터 등의 구동 장치 내지는 센서(레이저, 초음파 등)의 일부에 고장이 발생하여 로봇이 정상적으로 동작될 수 없는 상황에서도 로봇은 고장이 발생된 컴포넌트를 비활성하고 동작 가능한 컴포넌트만으로도 주어진 명령을 수행하는 것이 요구되고 있다.
그러나 아직까지는 이러한 상황이 발생되면 로봇은 사용자 또는 관리자에게 고장이 발생하였을 알려서 사용자가 로봇의 동작을 중지한 다음 발생된 고장을 조치한 다음 다시 로봇을 동작하는 것으로, 고장 조치가 완료되기 전까지는 로봇의 동작이 중지되는 문제점이 있다.
유사하게 로봇 내부의 컴포넌트의 일부인 센서에 고장이 발생하는 경우에도 상기와 동일한 과정에 의해 고장이 조치되기 전까지는 로봇이 동작이 중지되는 문제점이 있다.
이에 따라 로봇 내부의 일부 컴포넌트의 고장 등과 같이 로봇 내부의 컴포넌트의 환경 즉 내부 환경이 동적으로 변하더라도 로봇의 구동이 중지되지 않고 고장이 발생한 컴포넌트를 배제한 상태에서도 주어진 명령에 작동 가능한 컴포넌트만으로 명령을 최적화하여 수행하는 것이 가능한 것이 요구되고 있다.
본 발명은 상기와 같은 문제점을 해결하기 위해 제안된 것으로, 로봇이 이동 또는 내부 고장 등의 의해 변경되는 외부 또는 내부의 환경 변화 및 상황 조건들에 적합한 반응 및 적절한 동작을 자율적으로 수행가능하도록 하기 위해 로봇 내부에 구비된 소프트웨어 컴포넌트 또는 외부의 서버로부터 다운받아 동적으로 재구성하는 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법을 제공하고자 한다.
상기와 같은 과제를 해결하기 위한 본 발명에 따른 로봇 소프트웨어 컴포넌트 동적 재구성 방법은,
환경 변화를 동적으로 감지하는 단계; 및
상기 동적으로 감지된 환경 변화에 기초하여 로봇에 구비된 소프트웨어 컴포넌트를 재구성하기 위한 환경 변화 정보를 추출하는 단계를 포함하며,
상기 추출된 환경 변화 정보로부터 상기 환경 변화에 대응하는 소프트웨어 컴포넌트 재구성 계획을 생성하는 단계를 더 포함할 수 있으며,
상기 환경 변화에 대응하는 소프트웨어 컴포넌트 재구성 계획은 로봇에 구비된 하드웨어 컴포넌트의 구동 계획에 기초하여 생성되는 것이며,
상기 생성된 소프트웨어 컴포넌트 재구성 계획을 기반으로 상기 로봇의 소프트웨어 컴포넌트 구성을 재구성하고,
상기 재구성 소프웨어 컴포넌트에 따라 하드웨어 컴포넌트를 재구성하여 로봇을 구동하는 것을 특징으로 한다.
한편 상기에서 상기 소프트웨어 컴포넌트 재구성 계획에 요구되는 정보는 로봇의 위치, 로봇 주위의 이동중인 객체의 수, 로봇 이동 경로상의 장애물의 수, 온도, 습도 및 조도 중 적어도 하나인 것을 특징으로 한다.
상기와 같은 구성을 가지는 본 발명에 따른 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법은 로봇이 이동 또는 내부 고장 등의 의해 변경되는 외부 또는 내부의 환경 변화 및 상황 조건들에 적합한 반응 및 적절한 동작을 자율적으로 수행가능하도록 하기 위해 로봇 내부에 구비된 소프트웨어 컴포넌트 또는 외부의 서버로부터 다운받아 동적으로 재구성하는 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법을 제공하고자 한다.
도 1은 지능형 로봇 시스템의 전체 구성도이다.
도 2는 지능형 로봇 시스템 구성 요소간의 데이터 흐름도이다.
도 3은 지능형 로봇 시스템의 컴포넌트의 모델이다.
도 4는 로봇 장치를 구성하는 복합 컴포넌트의 구성 예이다.
도 5는 지능형 로봇 시스템의 컴포넌트 실행엔진의 데이터 흐름도이다.
도 6은 로봇 시스템용 응용 컨텐츠 개발 모델의 개략적인 구성도이다.
도 7은 로봇 시스템용 컨텐츠 및 컴포넌트 수용 개발 모델의 개략적인 구성도이다.
도 8은 로봇 시스템용 컴포넌트 및 컨텐츠 기반 로봇 시스템 개발 흐름도이다.
도 9는 로봇 시스템용 따른 소프트웨어 컴포넌트 개발 개념도이다.
도 10은 로봇 시스템에서 환경의 변화에 대응하여 동적으로 로봇의 구성인 소프트웨어 컴포넌트를 동적으로 재구성하는 장치의 개략적인 구성도이다.
도 11은 로봇 시스템에서 환경의 변화에 대응하여 동적으로 로봇의 구성인 소프트웨어 컴포넌트를 동적으로 재구성하는 장치의 제어과정에 대한 개략적인 흐름도이다.
도 1은 지능형 로봇 시스템의 전체 구성도로, 최근의 로봇 시스템은 개방형 시스템으로 설계되고 있는 것을 보여주고 있다. 즉, 표준화된 단말장치와 HTML과 HTTP와 같은 컨텐츠 기술 및 전송표준이 있어 누구나 쉽게 로봇용 컨텐츠를 작성하여 로봇 시스템의 서버에 제공할 수 있으며, 제공된 컨텐츠는 서비스 공급자에 의해 사용자에게 배포될 수 있다.
이에 따라 다양한 서비스 사업자와 로봇들을 연동할 수 있으며 로봇 및 서비스 개발에 대한 비용을 최소화할 수 있고 기존의 다양한 소프트웨어 기술을 로봇에 적합한 형태로 최적화, 계층화 및 모듈화한 로봇 소프트웨어 기술과 로봇과 연동되는 외부 소프트웨어에 대한 구조 규격을 정의할 수 있게 된다.
상기와 같이 개방형 시스템에서 개발된 컨텐츠는 현재 사용중인 로봇 장치들에 적합한지 또는 안정성 등의 요구조건을 만족하는지에 대하여 테스트 센터에서 시험을 거쳐 승인된 후 네트워크망을 통해 각 로컬 환경에 배포된다.
각 로컬 환경에는 실제로 구동되는 로봇 장치와 상기 로봇 장치에 연동하여 상기 온라인 마켓과 통신하여 컨텐츠 등을 관리하는 로컬 서비스 공급자와 로컬 서비스 저장소가 구비되어 있다.
상기에서 로컬 서비스 공급자는 필요에 따라 사용자가 직접 로봇 컨텐츠를 개발할 수 있는 환경인 로컬 통합 개발 환경(Integrated Development Environment, IDE)를 제공할 수 있으며, 상기 로컬 통합 개발 환경에서 개발된 컨텐츠는 로컬 서비스 저장소에 저장된다.
한편 상기 로컬 통합 개발 환경에서 개발된 컨텐츠는 필요에 따라 온라인 마켓에 제공될 수 있으며, 제공된 컨텐츠는 글로벌 서비스 저장소에 저장되며, 다른 사용자들은 이를 검색하여 글로벌 서비스 공급자를 통해 제공받을 수 있다.
또한 앞서도 설명한 바와 같이 로컬 서비스 공급자로부터 전송된 로컬 사용자에 의해 개발된 컨텐츠는 테스트 센터에서 검사를 받아 평가 항목에 대하여 통과되어야만 정식으로 글로벌 서비스 저장소에 저장된다.
한편 상기에서 지능형 로봇 시스템에서 서버는 중앙 집중형으로 운영될 수 있으며, 클라우딩 컴퓨팅 형태로 즉, 복수의 로컬 서비스 공급자와 로컬 서비스 저장소를 서버로서 운영할 수 있음에 주의하여야 한다.
도 2는 지능형 로봇 시스템 구성 요소간의 데이터 흐름도이다.
도 1에서 설명한 바와 같이 본 발명의 지능형 로봇 시스템은 개방형 시스템으로 기존에 개발된 컨텐츠와 새로이 개발되는 컨텐츠를 모두 이용할 수 있다.
구체적으로 컴포넌트/컨텐츠 서버는 클라이언트 관리 및 제어부, 클라이언트/서버 통신부, 클라이언트 응용 관리부, 원격 로봇 응용 플랫폼부, 서버 가용화부 등을 포함할 수 있다.
먼저 클라이언트 관리 및 제어부는 서버에 연결되는 다양한 로봇 클라이언트에 대하여 각각의 로봇에 어떠한 기능이 있고 어떻게 관리에 요구되는 정보를 획득할 수 있는지에 대하여 미리 알고 있어야 한다.
이를 위해서 로봇 클라이언트가 자기 자신에 대한 정보(이를 프로파일이라 함)를 서버에 미리 알려주어야 하며 이를 프로파일링이라 한다. 컴포넌트/컨텐츠 서버는 로봇 클라이언트가 등록한 프로파일 정보를 이용하여 다양한 종류의 로봇 클라이언트를 식별하고 임의의 로봇 클라이언트의 이벤트 획득 및 구동을 위한 인터페이스들과 이들을 모니터링 하는데 필요한 인터페이스 정보를 얻을 수 있으며 이를 바탕으로 로봇 클라이언트를 관리하게 된다.
로봇 클라이언트에 대한 프로파일은 컴포넌트/컨텐츠 서버에서 확장될 수 있으며, 프로파일의 확장은 로봇 클라이언트의 기능 확장을 의미한다. 로봇 클라이언트에서 수행되는 응용 또는 컨텐츠들은 로봇 클라이언트의 기능적 한계에 의존되기 때문에 로봇 클라이언트의 기능이 다양할수록 수행 가능한 응용과 컨텐츠 종류도 증가하게 되는데 로봇 클라이언트의 기능적 한계는 컴포넌트/컨텐츠 서버를 통해 어느 정도 극복될 수 있다.
일 예로 하나의 로봇 클라이언트의 구비된 컴포넌트 중 음성 합성/인식 및 얼굴 인식을 가능하게 하는 컴포넌트가 구비되어 있지 않다 하더라도 스피커, 마이크, 카메라 등의 컴포넌트가 있는 경우 이를 이용하여 로봇은 정보를 획득하여 컴포넌트/컨텐츠 서버에 전송하면 컴포넌트/컨텐츠 서버는 기존 프로파일 정보를 음성 합성/인식 및 얼굴 인식이 가능하도록 로봇의 컴포넌트를 재조정하여 로봇에 전송하고 로봇은 컴포넌트/컨텐츠 서버로부터 전송된 프로파일 정보에 기초하여 컴포넌트를 재조정하여 음성 합성/인식 및 얼굴 인식이 가능하게 된다.
한편 확장된 프로파일을 컴포넌트/컨텐츠 서버로부터 다시 얻어와서 로봇 클라이언트의 응용을 작성할 때 확장된 기능을 이용하여 더 다양한 응용을 작성하는 것도 가능하다. 이러한 프로파일 확장은 단순히 음성 합성과 같은 단일 기능이 아니라 보다 다양한 기능으로도 확대될 수 있기 때문에 단순한 기능만을 가지는 로봇 클라이언트라 하더라도 다양한 복잡한 응용으로 변경되는 것이 가능하다.
컴포넌트/컨텐츠 서버의 다른 기능으로는 로봇 클라이언트에 대한 접속 관리, 진단 그리고 모니터링 하는 것이다. 특히 로봇 클라이언트에 대한 진단 및 관리적인 측면을 고려한다면 로봇 클라이언트는 이동통신단말과 같은 것으로 간주될 수 있으며 이에 이동통신단말 장치와 관련된 표준인 OMA(Open Mobile Alliance)의 DM(Device Management)의 관리 객체 정의 방법을 이용하여 로봇 클라이언트 관리를 정의할 수 있으며 하기의 표는 이러한 방법 중 최상위 관리 객체 각각의 의미를 예시한 것이다.
분류항목 관리노드 절대경로 설명

단말관리
DMAcc ./DMAcc/OO/ 단말이 관리 서버와 접속을 위해 설정하는 인증 정보 노드
Devinfo ./Devinfo/ 단말 기본 정보 노드
DevDetail ./DevDetail/ 단말 상세 정보 노드
AddDevDetail ./AddDevDetail/ 단말의 추가적 상세 정보 노드
진단, 제어 모니터링 관리 Evt ./OPROS/Evt 이벤트 관리 노드
Performance ./OPROS/Performance 단말의 성능분석 노드
Control ./OPROS/Control 단말을 제어하기 위한 노드
소프트웨어 배포 관리 Fumo ./OPROS/Fumo 단말의 펌웨어를 업데이트 하기 위한 노드
Scomo ./OPROS/Scomo 단말의 소프트웨어 컴포넌트를 관리(업데이트/설치/제거)하기 위한 노드
로봇 클라이언트/서버 통신부는 지능형 로봇 시스템에서 다양한 플랫폼이나 환경 내 장치들이 컴포넌트/컨텐츠 서버와 표준화된 방법으로 안정되게 네트워크 통신을 할 수 있도록 지원하는 것으로 컴포넌트/컨텐츠 서버와 로봇 클라이언트 간의 연결 및 상호 작동은 원격 객체 호출 방식 프로토콜로 로봇 클라이언트가 서버에서 제공하는 응용 객체에 대한 참조를 얻고 그 객체가 클라이언트 자신의 객체인 것처럼 함수 호출할 수 있는 기능이 제공될 수 있다.
로봇 클라이언트 응용 관리부는 상기에서 설명한 바와 같이 프로파일링을 통하여 로봇 클라이언트의 기능이 컴포넌트/컨텐츠 서버를 통해 확장되는 것을 위한 것으로, 구체적으로 로봇 클라이언트의 물리적 기능이 확장되는 것이 아니라 서버가 확장된 기능을 수행하고 로봇 클라이언트는 이를 이용하는 것이다.
즉, 서버가 특정 기능을 수행할 수 있으면 서버는 로봇 클라이언트에게 다양한 기능을 제공하고 이를 로봇 클라이언트가 원격으로 사용할 수 있는 기능을 갖추도록 하는 것에 의해 로봇에서 수행하기 어려운 응용 서비스를 로봇 클라이언트를 대신하여 적재하고 관리하며 로봇에서 원격으로 사용할 수 있도록 하는 것이다.
상기 로봇 클라이언트에게 제공되는 서비스는 일 예로, 음성 인식/합성, 영상 인식/합성 또는 날씨/뉴스와 같은 콘텐츠 서비스뿐만 아니라 로봇 자체에서 수행하기 어려운 상황인식 서비스를 포함하는 것이다
이를 위해 컴포넌트/컨텐츠 서버가 로봇 클라이언트에게 원격 호출 가능한 응용을 제공하기 위해서 먼저 서버/클라이언트 플랫폼을 사용하여 원격 응용 서비스의 API(Application Program Interface)들을 구현한 뒤에 이를 패키징한 SSA(Server Service Agent)를 컴포넌트/컨텐츠 서버에 설치한다.
또한 로봇 클라이언트에서는 SSA를 마치 자신의 내부 컴포넌트처럼 사용가능하도록 SSA에 대한 프락시(Proxy)컴포넌트가 포함되어 있다.
로봇 클라이언트 응용이 올바른 동작을 하기 위하여 컴포넌트/컨텐츠 서버는 원격 호출 응용의 시작, 중지, 종료, 설치 그리고 삭제 등을 포함하는 생명주기 관리기능을 제공한다. 또한 로봇 클라이언트 오류에 의한 자원 고갈 현상을 막기 위해서 응용에 대한 자동 세션 소멸 기능도 제공한다.
원격 로봇 응용 플랫폼부는 상기 로봇 클라이언트 응용 관리부가 하나의 원격 응용 전체가 컴포넌트/컨텐츠 서버에서 완전히 실행되는 것에 비해 로봇 클라이언트 응용 관리부는 클라이언트가 자신의 기능인 것처럼 인식하고 있다는 것에 차이가 있다. 즉, 원격 로봇 응용 플랫폼부는 로봇 클라이언트가 원격 로봇 응용 실행을 컴포넌트/컨텐츠 서버에 요청하면 로봇 클라이언트는 컴포넌트/컨텐츠 서버로부터 원격 로봇 응용의 실행에 필요한 제어 명령을 받기 때문에 제어의 주체가 컴포넌트/컨텐츠 서버가 되는 데 반해, 원격 로봇 응용 플랫폼부는 자신의 응용을 스스로 제어하면서 필요한 때에 컴포넌트/컨텐츠 서버의 응용을 이용하기 때문에 제어의 주체가 로봇 클라이언트가 된다.
로봇 원격 플랫폼부는 이벤트 처리부, 응용관리부 및 상황정보 관리부 등을 포함할 수 있는데 클라이언트처럼 단일 응용 서비스 구현에는 반드시 필요한 것이 아니나 제어구조가 포함되는 원격 로봇 응용을 구현하는 경우에는 필수적으로 포함되어 있어야 한다.
먼저, 이벤트 처리부는 로봇 클라이언트 또는 다양한 물리 공간에 설치된 센서들로부터 이벤트(예: 음성, 영상, 온도/습도, 일정 등의 정보)를 입력받아 이들을 필터링하거나 조합하여 상황정보 관리부나 응용관리부에 전달한다. 로봇 클라이언트로부터 발생되는 이벤트 정보는 통신 플랫폼을 통해서 입력받기 때문에 로봇 클라이언트는 이벤트 처리부에 대한 프락시 컴포넌트가 포함되어야 한다.
다음으로 상황정보 관리부는 이벤트 처리부로부터 입력된 데이터를 이용하여 위치, 사용자, 로봇 클라이언트 및 서비스에 대한 상황 정보들을 유지하고 관리한다. 원격 로봇 응용은 상황 변화에 따라 로봇의 행위가 계속 변경되기 때문에 상황 정보 변화를 감지할 수 있는 기능이 제공되어야 한다. 또한 사용자 정보를 이용한 개인화 서비스를 제공할 수도 있다. 예를 들어 가정에서 온도 조절과 정보 컨텐츠 제공에 대한 원격 로봇 응용이 수행된다고 할 때 사용자가 선호하는 온도와 컨텐츠를 사용자 정보로부터 획득하여 지능적인 능동서비스를 제공할 수 있게 된다.
응용관리부는 컴포넌트/컨텐츠 서버에서 수행되는 원격 로봇 응용들을 수행, 관리 및 제어하는 역할을 하는 것으로, 현재 수행되고 있는 원격 로봇의 상태, 각 원격 로봇 응용의 소유자, 원격 로봇 응용의 생명 주기 등을 관리한다. 또한 서로 충돌되거나 영향을 주는 원격 로봇 응용들의 실행 순서를 조절하는 조정자 역할도 한다. 사용자는 응용관리부를 통해서 임의의 로봇 응용을 새롭게 실행시킬 수 있으며, 실행중인 로봇 응용을 종료할 수 있다.
컴포넌트/컨텐츠 서버 가용부는 로봇 클라이언트들이 요청하는 서비스들의 품질을 높이고 컴포넌트/컨텐츠 서버의 안정적인 동작을 위해 요구되는 기능들에 대한 것이다. 서비스의 빠른 응답과 고가용성을 보장하기 위해 서버의 가상화 기술과 능동적인 부하 관리기술이 이용될 수 있다.
가상화 기술은 논리적인 컴포넌트/컨텐츠 서버를 구성하는데 포함되는 모든 물리적 자원들 즉, 응용서버, 소프트웨어 컴포넌트, 네트워크 및 스토리지 등을 동적으로 할당하고 회수 가능하도록 하기 위하여 서버를 구성하는 최하위 물리적 자원들과 로봇 클라이언트에게 제공하는 최상위 서비스들 사이의 추상화 개념을 이용하여 계층화한다.
컴포넌트/컨텐츠 서버를 동적으로 자원을 할당하고 회수하는 이유는 능동적인 서비스의 부하관리를 하기 위한 것으로, 능동적인 부하 관리는 로봇 클라이언트로부터 요청되는 서비스들 중에 컴포넌트/컨텐츠 서버에 부담되는 부하를 감시하여 부하 관리 정책에 따라 능동적으로 서비스에 필요한 자원을 재할당 분배하는 기능을 수행한다. 컴포넌트/컨텐츠 서버에서 제공하는 여러 서비스들 중에서 특정 서비스에 대한 서버의 작업부하가 증가하면 부하분산 정책에 의해서 작업부하가 적은 가상 서버의 수를 줄이고 작업부하가 증가하는 서비스를 위한 가상 서비스를 많이 할당함으로써 부하의 균형을 맞추게 된다.
도 3은 지능형 로봇 시스템의 컴포넌트의 모델이다.
지능형 로봇 시스템에서 컴포넌트는 기계의 부품처럼 소프트웨어로서의 구성 요소로 재사용과 교환이 용이하도록 설계된 소프트웨어 모듈이며, 하드웨어 모듈일 수 있다. 재사용과 교환이 용이하도록 설계되는 컴포넌트는 최소 단위 하드웨어적인 부품이거나 로봇의 몸체와 같은 비교적 큰 단위의 하드웨어 일 수 있으며 또한 프로그램을 구성하는 함수이거나 프로그램 자체일 수 있다.
구체적인 예로 하드웨어 장치와 연결된 단위 컴포넌트는 모터 또는 초음파 센서가 될 수 있으며, 여러 하드웨어가 결합된 복합 컴포넌트는 팔 또는 다리일 수 있다.
소프트웨어 컴포넌트로서 알고리즘을 실행하는 컴포넌트는 최단 경로를 찾는 알고리즘일 수 있으며, 기능을 가지는 컴포넌트로는 모니터링 함수가 될 수 있으며 태스크를 수행하는 컴포넌트는 인사를 하는 것일 수 있으나 이에 한정되지는 않으며 그 속성에 따라 다양하게 분류될 수 있음에 주의하여야 한다.
지능형 로봇 시스템에서 컴포넌트는 그 상태에 따라 6개의 상태로 분류된다. 즉, 생성/준비/활성/비활성/오류/파괴 상태이다. 한편 컴포넌트는 데이터 성격에 따라 3개의 포트를 가진다. 즉, 서비스/데이터/이벤트 포트이다.
도 4는 로봇 장치를 구성하는 복합 컴포넌트의 구성 예이다.
도 4는 도 3의 컴포넌트들에 의해 네비게이션 태스크를 수행하는 컴포넌트를 구성함에 있어 요구되는 컴포넌트를 예시한 것이다.
먼저 하드웨어 컴포넌트로는 주행 경로상의 장애물 등을 검출하는 레이저 센서 또는 적외선 센서 및 휠 제어기 및 모터 컴포넌트가 포함된다. 한편 알고리즘 즉, 소프트웨어 컴포넌트로는 고정 장애물에 대한 전역 맵 정보를 제어하는 전역맵 컴포넌트, 장애물에 대하여 어떻게 회피할 것인가를 결정하는 장애물 회피 알고리즘 컴포넌트, 레이저 센서 또는 적외선 센서와 파티클 필터를 이용하여 로봇의 위치를 추정하는 지역화 컴포넌트, 현재 위치와 목적지를 구분하여 경로를 생성하는 경로계획 컴포넌트 등을 포함한다.
상기에서 컴포넌트 간에 데이터 등을 교환할 수 있는데, 일 예로 전역맵 컴포넌트에서 생성된 데이터는 경로계획 및 지역화 컴포넌트에서 사용된다. 또한 지역화 컴포넌트는 전역맵 컴포넌트와 레이저 센서의 컴포넌트에서 생성된 데이터를 이용할 수 있으며, 장애물 회피 알고리즘 컴포넌트는 레이저 센서의 데이터를 이용하여 장애물 회피 알고리즘을 구동하여 장애물 회피 계획을 수립한다.
상기와 같은 컴포넌트 들에 의해 네비게이션 컴포넌트는 로봇의 주행을 처리하는 하나의 새로운 컴포넌트로 생성된다.
도 5는 지능형 로봇 시스템의 컴포넌트 실행엔진의 데이터 흐름도이다.
먼저 컴포넌트 실행엔진은 애플리케이션의 자원에 해당하는 컴포넌트의 존재여부를 확인하고 주기적으로 실행되어야 할 부분을 메모리에 올리며, 컴포넌트들 사이에 데이터전송을 위한 포트를 연결하고, 컴포넌트의 프로파일에 명시된 주기에 따라 실행시키는 실행기를 가진다. 또한 프레임워크안의 다른 매니저들과 연동이 가능하도록 미들웨어를 통하여 동작한다.
컴포넌트/컨텐츠 서버는 컴포넌트의 공유 저장소인 글로벌 저장소를 가지고 있으며, 만일 로봇의 리소스가 부족하거나 로봇에 태스크를 처리하는 응용이나 컴포넌트가 존재하지 않는 경우 컴포넌트/컨텐츠 서버에서 컴포넌트를 직접 실행하여 그 결과를 로봇에게 전달하여 로봇이 처리하도록 할 수 있다.
커뮤니케이션 관리기(커뮤니케이션 미들웨어)는 로봇의 미들웨어와 로봇 외부 즉, 컴포넌트/컨텐츠 서버의 리소스에 연결하는 지원하는 기능과 로봇 미들웨어와 개발환경에 연결을 지원하는 기능을 한다.
구체적으로 로보 프레임워크와 서버간 로봇 프레임워크와 개발환경(IDE, 모니터링 프로그램 등)간 통신을 초기화하고 관리하고 컴포넌트 관리기를 비롯한 로봇 프레임워크 내의 다른 일반 관리기들에게 컴포넌트/컨텐츠 서버의 글로벌 저장소의 리소스에 접근할 수 있는 환경을 제공한다.
컴포넌트 관리기는 전체 태스크의 수행을 관장하는 실행 엔진이 컴포넌트 관리기에게 태스크의 수행에 요구되는 컴포넌트의 적재를 요청하는 경우에 컴포넌트 관리기는 컴포넌트간의 기본 설정을 구성하며 이때 컴포넌트를 로드하거나 컴포넌트를 언로드할 수 있다.
도 6은 종래의 로봇 시스템용 응용 컨텐츠 개발 모델의 개략적인 구성도이다.
종래의 로봇 시스템용 응용 컨텐츠 개발에 있어서, 각 컨텐츠는 다양한 로봇에 적용될 수 있는 것이 아니라 개별 로봇에 맞추어 설계되고 각 하드웨어 컴포넌트를 구동한다.
즉, 도 6에서 보는 바와 같이 컨텐츠1은 하드웨어1, 2 및 하드웨어3 컴포넌트를 이용하여 로봇1에 최적화되도록 설계되며, 동일한 방식으로 컨텐츠2는 하드웨어1과 하드웨어4 컴포넌트를 이용하여 로봇 3에 최적화되도록 설계된다.
그러나 컨텐츠1은 다른 로봇에 적용될 수 없으며 컨텐츠1에서 구현하고자 하는 응용을 다른 로봇에 구현하고자 하는 경우에는 다른 로봇에 포함되어있는 하드웨어 컴포넌트 등을 고려하여 재설계하여야 한다.
도 7은 본 발명에 따른 로봇 시스템용 컨텐츠 및 컴포넌트 수용 개발 모델의 개략적인 구성도이다.
본 발명에 따른 로봇 시스템은 임의의 사용자에 의해 개발된 응용 컨텐츠나 소프트웨어 컴포넌트를 로봇에 응용에 따라 선택적으로 수용하여 결합할 수 있는 것으로, 복수의 응용 컨텐츠나 소프트웨어 컴포넌트를 실행하기 위하여 응용 컨텐츠나 소프트웨어 컴포넌트의 내용을 해석하는 멀티미디어 컨텐츠 플레이어와 스크립트 해석기가 구비된다.
한편 응용 컨텐츠나 소프트웨어 컴포넌트는 미리 개발되어 서버에 저장되어 있을 수 있으며, 통합 개발 환경(IDE)에 의하여 사용자에 의해 개발될 수 있다.
상기의 응용 컨텐츠나 소프트웨어 컴포넌트를 실행하기 위해 요구되는 하드웨어 컴포넌트들은 멀티미디어 컨텐츠 플레이어와 스크립트 해석기에 의해 해석된 내용을 바탕으로 선정되고 상기 하드웨어 컴포넌트들을 구동하기 위한 구동 프로그램이나 설정 환경 등이 선정된다.
이후 상기 응용 컨텐츠나 소프트웨어 컴포넌트를 실행하기 위해 요구되는 컴포넌트들이 선정되는데 일례로, 레이저 센서, 모빌리티, 비전 등의 컴포넌트들이 선정되고 결합되어 네비게이션 응용 컨텐츠 또는 소프트웨어 컴포넌트를 실행되며 이러한 네비게이션 응용 컨텐츠 또는 소프트웨어 컴포넌트는 상기의 레이저 센서, 모빌리티, 비전 등의 컴포넌트들이 로봇에 포함되어 있는지에 무관하게 실행될 수 있다.
즉, 도 2에서 설명한 바와 같이 로봇에 해당 컴포넌트들이 없는 경우 로봇에 구비되어 있는 컴포넌트들과 서버의 리소스를 커뮤니케이터를 이용하여 요구되는 응용 컨텐츠 또는 소프트웨어 컴포넌트가 실행될 수 있다.
도 8은 로봇 시스템용 컴포넌트 및 컨텐츠 기반 로봇 시스템 개발 흐름도이다.
근래의 지능형 로봇 시스템은 모듈 기반의 시스템으로 로봇 시스템에 이용되는 컴포넌트와 응용 컨텐츠를 개별적으로 개발하며 이를 일정한 평가 항목에 따라 검증하고 평가한 다음 서버 또는 로봇 장치에 저장되어 응용에 따라 다른 컴포넌트와 결합되어 사용자 등에 의해 요청되는 태스크를 수행하는데 사용된다.
이러한 컴포넌트의 개발 과정을 살펴보면,
먼저 요청되는 태스크를 수행하기 위한 로봇의 동작 시나리오를 설계한다.
일례로, 요청되는 로봇의 태스크에 따른 동작 시나리오를 다음과 같다고 한다.
- Robot은 기본적으로 1m 직진 후 90 회전을 반복한다.
- LaserScanner를 통해서 장애물의 유무를 확인하고 장애물이 있을 시 멈추고 말을 한다.
- 키보드 0 번을 누를 시 말을 하고 음악을 재생한다.
- 키보드 1 번을 누르면 다시 나머지 거리를 이동한다.
- 직진을 할 경우 외부의 영향으로 일정이상 방향이 틀려지면 멈춘다.
- USB 카메라 내용을 화면에 뿌린다.
설계된 동작 시나리오에 따라 요청되는 컴포넌트들과 응용 프로파일 등을 설계하는 알고리즘 개발단계를 수행한다.
예를 들어 네비게이션 동작을 수행한다고 할 때, 요구되는 컴포넌들은 바퀴, 레이저 센서, 카메라, 음성합성, 음성인식, 실행, 키보드 컴포넌트 등이 될 수 있다.
설계된 알로리즘에 따라 각 컴포넌들을 설계한다. 컴포넌트의 설계에는 하드웨어 컴포넌트에 대한 설계와 소프트웨어 컴포넌트에 대한 설계가 있다.
컴포넌트에 대한 설명은 도 2 및 도 3에서 설명되었으므로 생략한다.
컴포넌트의 설계가 완료되면 개발된 컴포넌트에 지능형 로봇 시스템 환경에 적합성을 검증한다.
검증 항목은 컴포넌트 단위 검증, 상태 검증 및 서비스 포트 검증을 수행한다.
로봇의 컴포넌트를 구성하는 가장 기본적인 단위는 컴포넌트 내부함수들이다. 각 로봇의 컴포넌트는 컴포넌트 기능을 수행하기 위해 제공되어야 하는 필수적인 기능을 내부함수의 형태로 컴포넌트 내부에 포함하고 있다. 상기 내부함수는 컴포넌트를 구성하는 가장 기본적인 요소로 단위 검증 레벨에서의 테스팅 대상이 된다.
상기 단위 검증은 테스트 대상을 테스트 가능한(최소)단위로 분리된 소프트웨어(모듈, 프로그램, 객체, 클래스 등) 내에서 결함을 찾고 그 기능을 검증하는 것이다. 단위 검증은 개발 수명주기와 시스템에 의존적이면서도 시스템의 다른 부분에서 격리하여 독립적으로 수행할 수 있다.
상기 결정 테이블 테스팅 방법은 시스템 요구 사항 명세를 분석하고 시스템의 조건과 동작을 식별하여 입력조건과 동작을 유발시키는 조건 또는 상황, 그리고 각 해당 조합에 대한 예상 결과까지 포함하여 결정 테이블을 도출하고 이를 바탕으로 테스트 케이스를 만드는 테스팅 방법이다.
서비스 포트 검증은 각 컴포넌트 내부함수의 조합을 통해 구성되는 컴포넌트의 콜백함수에 대한 테스트를 수행하는 것이다. 콜백함수는 컴포넌트간의 인터페이스와 각기 다른 부분과 상호 연동하는 동작을 수행하기 때문에 서비스 포트 즉 컴포넌트간의 인터페이스에 대한 테스팅 대상이 된다. 상기 서비스 포트 검증은 컴포넌트 단위 사이의 상호작용을 테스트하면서 단위 검증 이후에 수행된다.
서비스 포트 검증은 시스템 요구사항 분석하고 시스템의 조건과 동작을 식별하여 입력조건과 동작을 유발시키는 조건 또는 상황, 그리고 각 해당 조합에 대한 예상 결과까지 포함하여 결정 테이블을 도출하고 이를 바탕으로 테스트 케이스를 만드는 방법에 의해 수행될 수 있다.
상태 검증은 컴포넌트 자체를 테스팅 대상으로 한다. 로봇 소프트웨어 컴포넌트는 로봇을 구성하는 하나의 구성 요소이지만, 컴포넌트 자체는 하드웨어 장치나 알고리즘을 대표하는 하나의 시스템이기 때문에 시스템으로 간주하여 컴포넌트 테스트를 수행한다. 로봇 소프트웨어 컴포넌트는 상태전이 테스팅을 통하여 각 컴포넌트의 동작에 필수 요구 조건인 컴포넌트 상태전이를 테스트한다.
한편 화이트박스 테스트를 통하여 로봇 소프트웨어 컴포넌트 수행 시 발생 가능한 메모리 누수 및 실행속도 CPU 점유율 들을 테스트한다. 상기에서 화이트박스 테스트는 프로그램 코드 안에 테스트 코드를 삽입하여 프로그램 구조를 테스트하는 방법이다.
상기 상태 검증은 요구사항 명세서 및 기타 비즈니스 레벨의 시스템 동작 명세, OS 및 시스템 리소스와의 상호 작용 등의 테스트 대상을 바탕으로 전체 시스템의 동작과 관련된 시스템 요구사항을 테스트한다. 또한 상기 상태 검증은 시스템의 현재 상황이나 이전의 이력을 반영하는 상태 및 그 상태 전이에 따라 다르게 동작하는 측면을 상태전이 다이어그램으로 표현한다. 이를 통해 시스템 상태 사이의 관계 즉, 상태 간의 전이, 상태를 변화시키는 이벤트와 입력값, 상태의 변화로 유발되는 동작들을 테스트한다.
상기와 같은 절차와 방법에 따라 로봇 소프트웨어 컴포넌트의 테스트가 수행된다.
상기와 같은 컴포넌트 개발 절차와 병행하여 동작 시나리오에 따라 요구되는 적절한 하드웨어 컴포넌트들을 선정한다.
선정된 하드웨어 컴포넌트와 소프트웨어 컴포넌트를 동작 시나리오에 따라 배열하거나 로봇에 이미 포함된 컴포넌트들을 재구성하는 과정을 수행한다.
상기와 같은 과정을 걸쳐 설계된 컴포넌트 이용하거나 별도의 과정에 따라 상기 태스크를 수행하기 위한 응용 소프트웨어를 개발하며, 개발된 응용 소프트웨어를 시뮬레이션에 기반한 검증 및 평가 과정을 수행할 수 있다.
이와 같은 과정에 의하여 소프트웨어 컴포넌트의 개발이 완료되고 선정된 하드웨어를 조립하여 로봇 장치를 구성하고 설계된 소프트웨어 컴포넌트 및 응용 프로그램을 인터페이스를 통하여 로봇 장치에 다운로드한 다음 실제 로봇 장치를 구동하여 태스크를 수행하도록 한다.
도 9는 로봇 시스템용 따른 소프트웨어 컴포넌트 개발 개념도이다.
로봇에 구비되는 하드웨어 컴포넌트가 구동되기 위해서는 하드웨어를 제어하는 구동 프로그램과 하드웨어의 특성에 관련된 파라미터들의 집합인 환경 설정 파일이 필요하다.
종래 하드웨어를 구동하는 소프트웨어 컴포넌트를 설계하는 경우에 구동 프로그램과 환경 설정을 동시에 설계하므로 하나의 로봇이 구동되는 환경에 최적화되어 설계될 수 있는 장점은 있으나 로봇이 구동되는 환경이 변경되는 경우에 최적화하기 위하여 재설계하여야하는 문제점이 발생하였다.
도 9는 이러한 문제점을 해결하기 위한 로봇 소프트웨어 컴포넌트를 환경 변화에 대하여 동적으로 재구성하는 장치에 관한 것이다.
구체적으로 소프트웨어 컴포넌트 설계 시 구동 프로그램과 환경 설정을 별도로 설계하여 하드웨어 특성이나 로봇이 구동되는 환경에 따라 다양한 조합으로 결합하는 것이 가능하도록 하는 것이다.
즉, 로봇이 구동되는 환경에 최적화된 하드웨어(예: 모터)의 컴포넌트가 존재한다고 할 때, 모터 컴포넌트를 구성하는 방법으로 모터1을 이용하는 것이 가능하며, 모터2를 이용하는 것도 가능하다고 하자.
만일 모터1을 이용한다고 할 때, 모터1에 적합한 컴포넌트인 구동 프로그램1과 환경 설정 파일1을 로봇에 구비된 저장부로부터 읽어와서 컴포넌트를 재구성하며, 만일 모터2를 이용한다고 하면, 모터2에 적합한 컴포넌트인 구동 프로그램2와 환경 설정 파일2를 저장부로부터 읽어와서 컴포넌트를 재구성한다.
한편 상기에서 저장부에 모터1에 대한 구동 프로그램1과 환경 설정 파일1이 존재하지 않는 경우, 통신부 즉, 외부 인터페이스부를 통해 서버에 상기 구동 프로그램1과 환경 설정 파일1을 요청한다.
서버는 내부 저장소에서 로봇으로부터 요청된 구동 프로그램1과 환경 설정 파일1을 검색하여 검색되는 경우 로봇에 전송한다.
로봇은 전송된 구동 프로그램1과 환경 설정 파일1을 모터1에 소프트웨어 컴포넌트로 재구성하고 또한 저장부에 저장한다.
한편 서버에서 검색한 결과 구동 프로그램1과 환경 설정 파일1이 존재하지 않는 경우도 존재할 수 있으며 이에 대해서는 도 10에서 자세히 설명되므로 여기에서는 이에 대한 구체적인 설명은 생략하도록 한다.
도 10은 로봇 시스템에서 로봇 소프트웨어 컴포넌트를 동적으로 재구성하는 로봇 장치의 개략적인 구성도이다.
상기에서 설명한 바와 같이 지능형 로봇 시스템은 컴포넌트에 기반하여 운용되는 시스템으로 로봇의 설정을 변경하는 경우에 로봇을 별도로 재조립하거나 또는 컴포넌트를 재설계하는 과정이 필요 없도록 하는 것이 요구된다.
또한 로봇이 구동되는 환경이 변환되는 것을 동적으로 인지하여 로봇의 설정을 변환된 환경에 대응하여 동적으로 변경하는 것이 동시에 요구된다.
이러한 것이 가능하도록 하기 위해서는 변환된 환경을 동적으로 인지하고 인지된 환경변화에 대응하여 컴포넌트를 동적으로 재구성할 수 있도록 하는 것이 필용하다.
도 10은 이와 같이 환경의 변화를 동적으로 인지하고 인지된 환경 변화에 대응하여 동적으로 로봇의 구성인 소프트웨어 컴포넌트를 동적으로 재구성하는 것이 가능하도록 하는 간략화된 구성이다.
먼저 환경 인지부를 통해 환경 변화를 동적으로 인지한다. 환경 인지부는 로봇 외적인 환경의 변화를 인지하는 것과 로봇 내적인 환경의 변화를 모두 인지할 수 있다.
외적인 환경의 변화는 주로 로봇에 구비된 센서에 의해 인지되거나 전역맵 등과 같은 위치를 인식하는 컴포넌트가 변경되는 것에 의해 인지되며 로봇 내적인 환경 변화는 로봇 내부의 구비된 하드웨어 또는 소프트웨어 컴포넌트의 동작 상태를 모니터링하는 컴포넌트 관리기에 의해 인지된다.
외적인 환경 변화의 일 예로 로봇이 실내에서 동작하는 중에 실외로 이동될 수 있으며 이에 따라 로봇이 태스크를 수행함에 있어 장애가 되는 장애물 등의 환경이 변화되고 날씨 등과 같이 기후적인 변화도 외적 환경 변화가 될 수 있다. 또한 외적인 환경 변화의 다른 일 예로, 로봇의 위치, 로봇 주위의 이동중인 객체의 수, 로봇 이동 경로상의 장애물의 수, 온도, 습도 및 조도 등의 변화가 될 수 있다.
내적인 환경 변화의 일 예로는 로봇에 구비된 하드웨어 또는 소프트웨어 컴포넌트에 고장이 발생한 것이 될 것이다.
이러한 환경 변환가 발생한 경우, 로봇은 주어진 태스크를 최적으로 수행하기 위하여 로봇의 컴포넌트를 재구성하게 되는데 환경 변화를 계량화하기 위하여 환경 변화 정도를 파라미터화할 수 있다.
상기 파라미터의 일 예로 외부 환경의 변화는 로봇 주위의 이동중인 객체 수를 나타내는 값이나 로봇 이동 경로상의 장애물의 수를 나타내는 값 또는 센서(온도, 습도 또는 조도 등)에 의해 측정되는 값의 변화일 수 있으며, 내부 환경의 변화는 로봇 장치에 구비된 하드웨어 또는 소프트웨어 컴포넌트의 정상 동작 여부를 나타내는 값이거나 배터리의 적정 수준 유지 여부를 나타내는 값일 수 있다.
인지된 환경 변화에 따라 로봇은 태스크를 수행하기 위하여 주어진 하드웨어 컴포넌트를 최적으로 구동하기 위한 소프트웨어 컴포넌트를 결정하게 된다.
상기에서 소프트웨어 컴포넌트는 하드웨어 컴포넌트를 구동하기 위한 구동 프로그램이나 환경 설정 파일이 될 수 있다.
이후 결정된 소프트웨어 컴포넌트는 하드웨어 컴포넌트에 연결되어 로봇이 주어진 태스크나 명령을 실행하는데 사용된다.
한편 결정된 소프트웨어 컴포넌트는 로봇 장치의 내부의 저장부에 저장되어 있거나 저장되어 있지 않을 수 있다.
먼저 로봇 장치의 내부에 저장되어 있는 경우에는, 제어부는 저장부로부터 해당 하드웨어의 구동 프로그램과 환경 설정 파일 컴포넌트를 읽어와서 컴포넌트 관리기에 의해 컴포넌트를 재구성하고 이를 하드웨어 컴포넌트에 다운로드하여 구동 시나리오에 따라 하드웨어를 구동하여 로봇에게 입력된 태스크를 수행한다.
그러나 로봇 장치의 내부에 저장되어 있지 않은 경우에는, 제어부는 외부 인터페이스부를 통하여 서버에 해당 구동 프로그램 및 환경 설정 파일을 전송하여야 줄 것을 요청한다.
서버는 요청된 구동 프로그램 및 환경 설정 파일 컴포넌트가 내부에 구비된 컴포넌트 저장소에 저장되어 있는지 검색하여 저장되어 있는 경우, 외부 인터페이스부를 통하여 로봇에게 전송한다.
로봇은 서버로부터 전송된 하드웨어 구동 프로그램 및 환경 설정 파일을 저장부에 저장함과 동시에 하드웨어에 다운로드하여 구동 시나리오에 따라 하드웨어를 구동하여 로봇에게 입력된 태스크를 수행한다.
그러나 서버 저장소에도 해당 구동 프로그램과 환경 설정 파일이 존재하지 않는 경우, 로봇은 임시적으로 태스크를 수행하기 위한 동작을 취하여야 하는데, 하드웨어 구동을 최적화된 구동 프로그램이나 설정 환경 파일에 의한 것이 아니라 기본적인 구동 프로그램과 설정 환경 파일에 의하여 구동하되 로봇이 구동중에 발생되는 상황에 대한 처리 등을 서버의 자원을 이용하도록 한다.
상기와 같이 서버에서 처리하도록 하는 이유는 로봇에 구비된 자원은 한정되어 발생된 상황에 대하여 실시간으로 처리할 수 있는 능력이 부족하기 때문에 보다 많은 자원을 가진 서버에서 상황에 대한 처리를 하도록 하고 로봇은 서버에서 수행된 처리 명령을 입력받아 이를 따르도록 하는 것이 보다 바람직하기 때문이다.
이를 위해 로봇은 서버에 현재 상태와 수행하여야 할 명령 즉 태스크를 전송한다. 서버는 전송된 현재 상태와 수행하여야 할 명령에 따라 생성된 기초하여 현재 상태에서 이후에 로봇에서 처리하여야 할 명령을 생성하여 로봇에 전송한다. 상기에서 처리하여야 할 명령은 하드웨어 컴포넌트의 구동과 소프웨어 컴포넌트의 구동 알고리즘을 포함하고 있다.
로봇은 서버로부터 전송된 처리 명령에 따라 하드웨어 및 소프트웨어 컴포넌트를 구동하여 입력된 명령 즉, 태스크를 수행한다.
한편 서버로부터 전송된 처리 명령은 내부의 저장부에 저장되는데, 상기 처리 명령은 소프트웨어 컴포넌트를 구성하는 최소 단위인 내부함수의 형태 내지는 내부함수의 결합으로 이루어져서 소정 개수 이상 저장되어 구동 프로그램 또는 환경 설정 파일을 구성하는 모든 내부 함수들이 저장되며 새로운 구동 프로그램 또는 환경 설정 파일로 변환되고 내부의 저장부에 저장되어 이후의 동일한 명령 또는 태스크의 처리에 활용될 수도 있다.
상기에서 변화된 환경에 대응하여 소프트웨어 컴포넌트를 결정하는 방법에 대해 설명하면, 먼저 변화된 환경을 인지하기 위한 정보를 센서 등으로부터 입력된 정보에서 추출한다.
추출된 환경 변화 정보는 주어진 태스크 또는 명령에 대한 구동 시나리오 설계 후 태스크 구동 시나리오를 최적으로 수행하는 하드웨어 컴포넌트를 최적으로 구동하기 위한 소프트웨어 컴포넌트를 선정하는데에 이용된다.
도 11은 로봇 시스템에서 환경의 변화에 대응하여 동적으로 로봇의 구성인 소프트웨어 컴포넌트를 동적으로 재구성하는 장치의 제어과정에 대한 개략적인 흐름도이다.
도 10에서 설명한 바와 같이 본 발명은 로봇의 외부 또는 내부의 환경 변화를 동적으로 인지하고 환경변화에 대응하여 로봇 내부의 컴포넌트 즉, 소프트웨어 컴포넌트를 주어진 태스크 또는 명령을 구동하기 위한 하드웨어 구동 계획에 따라 동적으로 재구성하는 것에 관한 것으로,
먼저 로봇이 구동된 후, 외부의 환경 또는 내부의 환경의 변화를 동적으로 인지한다.
상기에서 환경의 변화는 로봇 주위의 이동중인 객체 수를 나타내는 값이나 로봇 이동 경로상의 장애물의 수를 나타내는 값 또는 센서(온도, 습도 또는 조도 등)에 의해 측정되는 값의 변화일 수 있으며, 로봇 장치에 구비된 하드웨어 또는 소프트웨어 컴포넌트의 정상 동작 여부를 나타내는 값이거나 배터리의 적정 수준 유지 여부를 나타내는 값일 수 있다.
상기에서 예시한 환경 변화의 정보로부터 주어진 태스크 또는 명령을 최적으로 수행하기 위한 하드웨어 구동 계획을 수립하고, 수립된 하드웨어 구동 계획에 따라 소프트웨어 컴포넌트를 재구성할 계획을 수립한다.
수립된 소프트웨어 재구성 계획에 따라 로봇의 내부에 포함된 저장부로부터 소프트웨어 컴포넌트를 추출하여 소프트웨어 컴포넌트를 재구성하고 이를 하드웨어 컴포넌트에 다운로드한다.
이후 주어진 태스크 또는 명령으로부터 설계된 하드웨어 구동 시나리오에 따라 로봇은 구동된다.
상기에서 소프트웨어 컴포넌트는 하드웨어 컴포넌트에 대한 구동 프로그램이나 환경 설정 파일이 될 수 있으며, 저장부에 해당 하드웨어 컴포넌트에 대한 구동 프로그램 또는 환경 설정 파일이 존재하지 않는 경우에 대해서는 도 10에서 자세히 설명되었으므로 구체적인 설명은 생략한다.
110: 온라인 마켓 111: 글로벌 서비스 저장소
112: 글로벌 서비스 공급자 120: 테스트 센터
130, 140, 150, 160: 로컬 로봇 서비스
131: 로컬 서비스 공급자 132: 로컬 서비스 저장소
133: 로봇 장치
210: 컴포넌트/컨텐츠 서버 220: 테스트 서버
230: 로봇 장치 240: 통합 개발 환경 서버
250: 기개발 컴포넌트 260: 사용자개발 컴포넌트
310: 컴포넌트 320: 컴포넌트 포트
410: 통합 컴포넌트 420: 네비게이션 컴포넌트
430: 지역화 컴포넌트 440: 레이저 컴포넌트
450: 제1센서 컴포넌트 460: 제2센서 컴포넌트
470: 휠 제어기 컴포넌트 480: 제1모터 컴포넌트
490: 제2모터 컴포넌트
510: 컴포넌트/컨텐츠 서버 511: 컴포넌트 저장소
512: 컴포넌트 관리 서버 512: 컴포넌트 배포 서버
520: 로봇 장치 521: 컴포넌트 모니터링부
522: 컴포넌트 관리부 523: 컴포넌트 저장부
524: 통신부 525: 자원 관리부
530: 로봇 하드웨어 컴포넌트 610: 컴포넌트/컨텐츠 서버
620: 로컬 로봇 630: 하드웨어 컴포넌트
710: 컴포넌트/컨텐츠 서버 720: 로봇 시스템 프레임워크
721: 멀티미디어 콘테츠 플레이어 722: 스크립트 해석기
723: 컴포넌트 저장부
731, 732, 733: 하드웨어 컴포넌트 740: 로봇 장치
750: 통합 개발 환경 서버 910: 제1모터 컴포넌트
921: 제1 구동 프로그램 922: 제1 환경 설정 파일
930: 제2모터 컴포넌트 941: 제2 구동 프로그램
942: 제2 환경 설정 파일 950: 모터 소프트웨어 컴포넌트
960: 제1모터 소프트웨어 컴포넌트
970: 제2모터 소프트웨어 컴포넌트
1010: 제어부 1020: 환경 인지부
1030: 저장부 1040: 디바이스부
1050: 외부인터페이스부 1060: 환경정보 추출부
1070: 컴포넌트 재구성 계획부 1080: 컴포넌트 재구성부

Claims (5)

  1. 로봇 소프트웨어 컴포넌트 동적 재구성 방법에 있어서,
    환경 변화를 동적으로 감지하는 단계; 및
    상기 동적으로 감지된 환경 변화에 기초하여 로봇에 구비된 소프트웨어 컴포넌트를 재구성하기 위한 환경 변화 정보를 추출하는 단계를 포함하며,
    상기 추출된 환경 변화 정보로부터 상기 환경 변화에 대응하는 소프트웨어 컴포넌트 재구성 계획을 생성하는 단계를 포함하는 것을 특징으로 하는 로봇 소프트웨어 컴포넌트 동적 재구성 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 환경 변화에 대응하는 소프트웨어 컴포넌트 재구성 계획은 로봇에 구비된 하드웨어 컴포넌트의 구동 계획에 기초하여 생성되는 것임을 특징으로 하는 로봇 소프트웨어 컴포넌트 동적 재구성 방법.
  4. 제3항에 있어서,
    상기 생성된 소프트웨어 컴포넌트 재구성 계획을 기반으로 상기 로봇의 소프트웨어 컴포넌트 구성을 재구성하고,
    상기 재구성 소프트웨어 컴포넌트에 따라 하드웨어 컴포넌트를 재구성하여 로봇을 구동하는 것을 특징으로 하는 로봇 소프트웨어 컴포넌트 동적 재구성 방법.
  5. 제1항, 제3항 또는 제4항 중 어느 한 항에 있어서,
    상기 소프트웨어 컴포넌트 재구성 계획에 요구되는 정보는 로봇의 위치, 로봇 주위의 이동중인 객체의 수, 로봇 이동 경로상의 장애물의 수, 온도, 습도 및 조도 중 적어도 하나인 것을 특징으로 하는 로봇 소프트웨어 컴포넌트 동적 재구성 방법.
KR1020100140095A 2010-12-31 2010-12-31 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법 KR101231771B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100140095A KR101231771B1 (ko) 2010-12-31 2010-12-31 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100140095A KR101231771B1 (ko) 2010-12-31 2010-12-31 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20120077955A KR20120077955A (ko) 2012-07-10
KR101231771B1 true KR101231771B1 (ko) 2013-02-08

Family

ID=46711366

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100140095A KR101231771B1 (ko) 2010-12-31 2010-12-31 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101231771B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101951908B1 (ko) * 2012-10-18 2019-04-25 한국전자통신연구원 로봇 소프트웨어 컴포넌트를 위한 디바이스 공유 장치 및 방법
KR101437483B1 (ko) 2012-11-20 2014-09-04 한국과학기술연구원 로봇 컴포넌트의 동적 재구성 장치 및 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090092128A (ko) * 2008-02-26 2009-08-31 한국과학기술연구원 컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리방법
KR20100048857A (ko) * 2008-10-31 2010-05-11 한국전자통신연구원 지능형 로봇 시스템에서의 로봇 소프트웨어 컴포넌트 관리 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090092128A (ko) * 2008-02-26 2009-08-31 한국과학기술연구원 컴퓨팅 자원에 기반한 동적 로봇 소프트웨어 아키텍처 관리방법
KR20100048857A (ko) * 2008-10-31 2010-05-11 한국전자통신연구원 지능형 로봇 시스템에서의 로봇 소프트웨어 컴포넌트 관리 장치 및 방법

Also Published As

Publication number Publication date
KR20120077955A (ko) 2012-07-10

Similar Documents

Publication Publication Date Title
US8924011B2 (en) Intelligent robot apparatus responsive to environmental change and method of controlling and reconfiguring intelligent robot apparatus
CN112585919B (zh) 利用基于云的应用管理技术来管理应用配置状态的方法
US10114618B2 (en) Autonomous mobile sensor movement path simulation with an integrated developer environment
Guth et al. A detailed analysis of IoT platform architectures: concepts, similarities, and differences
US20200387804A1 (en) Constructing and utilizing a knowledge graph for information technology infrastructure
US10904099B2 (en) Formal model checking based approaches to optimized realizations of network functions in multi-cloud environments
EP3479218B1 (en) Dynamic user interface in machine-to-machine systems
US8078357B1 (en) Application-independent and component-isolated system and system of systems framework
AU2018365860B2 (en) Code module selection for device design
US20070294662A1 (en) Integrated Service Method of Distribution Software for Robot Development Based on Open Internet Network
JP2020536321A (ja) 環境要件に基づくコンテナのデプロイメント
US8818757B2 (en) Modular object and host matching
US20160357522A1 (en) Physical space map overlay and interaction for an internet of things integrated developer environment
US20100082127A1 (en) Modular object dynamic hosting
CN110502217B (zh) 一种基于ros的机器人云平台设计方法
US11397620B2 (en) Deployment of event-driven application in an IoT environment
US20140142750A1 (en) Device and method for dynamic reconfiguration of robot components
Shen et al. Beam: Ending monolithic applications for connected devices
Natale et al. The iCub software architecture: evolution and lessons learned
JP2024508473A (ja) コンテナフレームワークのネットワークポリシーを検証するための技術
KR101384242B1 (ko) 내부 환경을 동적으로 재구성하는 로봇 장치 및 재구성 방법
Jansen et al. The SPEC-RG reference architecture for the compute continuum
KR101231771B1 (ko) 로봇 소프트웨어 컴포넌트 동적 재구성 장치 및 방법
KR101251287B1 (ko) 명령 적응형 지능형 로봇 장치 및 제어 방법
Kato et al. Multiagent based autonomic and resilient service provisioning architecture for the Internet of Things

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151224

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161226

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180130

Year of fee payment: 6