KR100853426B1 - 인간형 로봇의 장치관리자 및 관리 방법 - Google Patents

인간형 로봇의 장치관리자 및 관리 방법 Download PDF

Info

Publication number
KR100853426B1
KR100853426B1 KR1020060130634A KR20060130634A KR100853426B1 KR 100853426 B1 KR100853426 B1 KR 100853426B1 KR 1020060130634 A KR1020060130634 A KR 1020060130634A KR 20060130634 A KR20060130634 A KR 20060130634A KR 100853426 B1 KR100853426 B1 KR 100853426B1
Authority
KR
South Korea
Prior art keywords
device driver
driver
profile
robot
communication
Prior art date
Application number
KR1020060130634A
Other languages
English (en)
Other versions
KR20080057401A (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 KR1020060130634A priority Critical patent/KR100853426B1/ko
Publication of KR20080057401A publication Critical patent/KR20080057401A/ko
Application granted granted Critical
Publication of KR100853426B1 publication Critical patent/KR100853426B1/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/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/161Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J5/00Manipulators mounted on wheels or on carriages
    • B25J5/007Manipulators mounted on wheels or on carriages mounted on wheels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Robotics (AREA)
  • General Physics & Mathematics (AREA)
  • Mechanical Engineering (AREA)
  • Automation & Control Theory (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Manipulator (AREA)

Abstract

본 발명은, 인간형 로봇의 소프트웨어 구조에 관한 것으로, 상세하게는 로봇에 사용되는 장치의 호환성 확보를 위한 인간형 로봇의 장치관리자 및 관리 방법을 제공한다.
본 발명은, 하드웨어 장치를 구동하기 위한 소프트웨어로서 로봇에 사용되는 장치에 맞게 일반화되는 장치 드라이버; 장치의 다양한 특징들이 기술되어 저장되는 장치 프로파일; 응용 프로그램이 시작되면서 생성한 상기 장치 드라이버를 등록하고 보관하는 장치 컨테이너; 및 통신 매체에 대응하여 생성되어, 통신 매체에 연결된 장치와 응용 프로그램 간의 데이터 전송을 중계하는 동기화 프로세서를 포함하는 인간형 로봇의 장치관리자를 제공한다.
로봇, 장치관리자, 장치 드라이버

Description

인간형 로봇의 장치관리자 및 관리 방법{Device manager and managing method of human type robot}
도 1은 본 발명의 로봇 소프트웨어의 계층구조를 도시한 도면.
도 2는 본 발명의 장치 관리자의 구조를 도시한 도면.
도 3은 본 발명의 장치 드라이버의 추상 인터페이스에 대한 클래스 다이어그램을 도시한 도면.
도 4a는 본 발명의 모터 제어기에서 절대 엔코더(Absolute encoder)를 읽도록 구성한 하드웨어 블럭도.
도 4b는 도 4a의 장치 드라이버 구현에 대한 클래스 다이어그램을 도시한 도면.
도 5는 본 발명의 동기화 프로세서에서 제어명령과 측정값의 흐름을 도시한도면.
도 6은 장치 컨테이너의 추상 클래스인 CDeviceContainer를 상속하여 실제 로봇에 대한 CDeviceImpl을 구현하는 방법에 대한 클래스 다이어그램을 도시한 도면.
도 7은 본 발명의 장치 드라이버의 생성과 등록과정을 도식화한 순서도.
도 8은 본 발명의 동기화 프로세서의 수행과정을 도식화한 순서도.
도 9는 본 발명의 장치 드라이버의 등록해제와 삭제 과정을 도식화한 순서도.
본 발명은 인간형 로봇의 소프트웨어 구조에 관한 것으로, 상세하게는 로봇에 사용되는 장치의 호환성 확보를 위한 인간형 로봇의 장치관리자 및 관리 방법에 관한 것이다. 상기 장치관리자는 계층구조의 소프트웨어에서 로봇의 하드웨어 장치와 응용 프로그램 사이에 존재하며, 상기 장치관리자에서 관리되는 각 장치들은 유사한 기능을 가지는 장치들로 나뉘어 동일한 추상 인터페이스를 제공함으로써 서로 호환하여 사용될 수 있다.
로봇은 산업용, 극한 작업용, 의료용, 오락용 그리고 인간에 가까운 휴머노이드와 같이 다양한 종류가 존재한다. 또한 로봇은 다양한 분야에 여러 형태로 적용 가능하다. 로봇의 활용 분야가 다양해 짐에 따라 로봇의 하드웨어 및 제어 소프트웨어는 점점 복잡해지고 있으며 다양한 센서와 엑츄에이터가 사용되고 있다.
그러나 종래 로봇 및 로봇 소프트웨어는 호환성과 유연성이 부족하다는 단점이 있다. 예를 들자면, 로봇의 기능 향상을 위해 기존의 센서를 새로운 센서로 교체하거나, 새로운 센서를 추가하기가 어렵다. 또한 기존의 로봇에서 개발된 소프트웨어가 새로운 로봇에 적용되기 어렵다. 이러한 로봇 소프트웨어 구조는 이식에 많은 시간을 필요로 하고, 로봇의 소프트웨어 및 하드웨어 개발 양쪽 모두에 있어서 비효율적이다.
따라서 로봇 하드웨어로부터 응용 프로그램을 분리하고 장치관리자를 사용하여 로봇 소프트웨어 구조에 있어서 호환성과 유연성을 향상시킬 수 있는 방안의 개발이 요구된다.
상기 문제점을 해결하기 위하여 안출된 본 발명은, 인간형 로봇의 소프트웨어 구조에 관한 것으로, 상세하게는 로봇에 사용되는 장치의 호환성 확보를 위한 인간형 로봇의 장치관리자 및 관리 방법을 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위한 본 발명은, 하드웨어 장치를 구동하기 위한 소프트웨어로서 로봇에 사용되는 장치에 맞게 일반화되는 장치 드라이버; 장치의 다양한 특징들이 기술되어 저장되는 장치 프로파일; 응용 프로그램이 시작되면서 생성한 상기 장치 드라이버를 등록하고 보관하는 장치 컨테이너; 및 통신 매체에 대응하여 생성되어, 통신 매체에 연결된 장치와 응용 프로그램 간의 데이터 전송을 중계하는 동기화 프로세서를 포함하는 인간형 로봇의 장치관리자를 제공한다.
바람직하게는, 장치 컨테이너는 상기 장치 드라이버의 참조를 가지고, 장치 드라이버는 상기 장치 프로파일의 참조를 가지도록 구성된다.
또한, 장치 컨테이너의 인터페이스는 장치 등록, 장치 제거, 장치 획득, 장 치 프로파일 획득, 장치의 복수 제어를 위한 API(Application Programming Interface)일 수 있다.
또한 본 발명은 로봇 응용 소프트웨어에 장치관리자를 제공하는 방법에 있어서, 장치관리자에 장치를 등록하는 단계; 실세계의 측정값을 주기적으로 읽어와 응용 프로그램에서 이용 가능하도록 동기화하는 단계; 및 장치 관리자에서 장치를 등록 해제하는 단계를 포함하는 인간형 로봇의 장치 관리 방법을 제공한다.
또한 본 발명은 통신장치 드라이버를 생성하는 단계; 동기화 프로세서를 생성하여 상기 통신장치 드라이버에 상기 동기화 프로세서의 참조를 저장하는 단계; 상기 통신장치 드라이버를 맵에 추가하는 단계; 장치 프로파일이 필요한 경우 장치 프로파일을 생성하는 단계; 상기 장치 프로파일과 상기 통신장치 드라이버의 참조를 인자로 장치 드라이버를 생성하고, 상기 장치 드라이버를 장치 컨테이너에 추가하는 단계; 상기 장치 컨테이너에 등록된 장치들을 초기화하는 단계; 및 상기 동기화 프로세서를 분기하는 단계를 포함하는 장치 드라이버의 생성 방법을 제공한다.
또한 본 발명은 통신장치 드라이버의 참조(A)를 얻어오는 단계; 동기 이벤트를 대기하는 단계; 동기화할 장치 드라이버의 참조(B)를 얻어오는 단계; 동기화할 장치 드라이버의 참조(B)가 통신장치 드라이버의 참조(A)와 같을 경우 참조(B)가 활성상태인지 판단하는 단계; 및 참조(B)가 활성상태라면 참조(B)의 동기화를 수행하는 단계를 포함하는 동기화 프로세서의 수행 방범을 제공한다.
또한 본 발명은 통신장치 드라이버인지 판단하는 단계; 통신장치 드라이버가 맞다면 통신장치 드라이버로부터 동기화 프로세서의 참조를 얻어오는 단계; 상기 동기화 프로세서의 중지 요구 및 중지 대기를 수행하는 단계; 상기 동기화 프로세서를 합류하는 단계; 장치 프로파일이 있다고 판단되면 장치 프로파일을 삭제하는 단계; 상기 장치 프로파일을 삭제 후 장치 드라이버를 삭제하는 단계; 및 상기 장치 드라이버를 삭제한 후 장치 컨테이너에서 등록을 해제하는 단계를 포함하는 장치 드라이버의 등록해제와 삭제 방법을 제공한다.
또한 본 발명은 상기 방법을 수행하기 위한 컴퓨터 실행가능 명령을 갖는 컴퓨터 판독가능 매체를 제공한다.
본 발명과 본 발명의 동작성의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 로봇 소프트웨어의 계층구조를 도시한 도면이다.
도 1을 참조하면, 로봇의 소프트웨어는 응용 계층(100), 알고리즘 계층(200), 하드웨어 추상화 계층(HAL; Hardware Abstraction Layer;300)으로 구분할 수 있다. 응용 프로그램(110)은 응용계층(100)에 속하며, 제어 알고리즘(210)은 알고리즘 계층(200)에 속한다. 장치 관리자(310)와 장치 드라이버(320)는 하드웨어 추상화 계층(300)으로 존재하여 상위 응용 프로그램이나 제어 알고리즘에서 하드웨어의 호환성을 가질 수 있도록 한다. 장치 드라이버(320)는 로봇에 사용되는 각종 센서나 모터, 카메라, 통신 매체 등의 각종 하드웨어 장치를 구동하기 위한 소프트웨어다. 장치 관리자(310)는 이들 장치 드라이버(320)의 등록과 삭제, 장치 참조 반환과 같은 기능을 수행한다.
로봇이 가지는 기능은 작업, 이동, 상호작용으로 구분할 수 있다. 이러한 기능은 대부분의 로봇에 공통으로 필요한 기능들로써, 알고리즘 계층(200)은 이러한 다양한 알고리즘을 보유하여 상위 응용 프로그램(110)에서 비헤이비어(behavior) 또는 타스크(task)로서 사용할 수 있도록 한다.
사용자(상위 소프트웨어 개발자)는 알고리즘 계층(200)과 하드웨어 추상화 계층(300)에서 제공하는 기능을 사용하여 로봇의 임무 시나리오를 작성할 수 있다. 타스크 플래너(task planner)가 로봇의 임무에 따라 적절한 타스크를 수행함으로써 임무를 완수할 수 있도록 한다.
도 2는 본 발명의 장치 관리자의 구조를 도시한 도면이다.
도 2를 참조하면, 장치 관리자(310)는 장치 컨테이너(container;311)와 동기화 프로세서(312), 장치 드라이버(313), 장치 프로파일(314)을 포함한다.
상기 장치 드라이버(313)는 하드웨어 장치를 구동하기 위한 소프트웨어로서 특정한 하드웨어에 종속된다. 상기 장치 드라이버(313)는 장치 인터페이스를 기술하는 가상 클래스를 상속하여 하드웨어에 맞게 일반화된다. 장치 드라이버(313)는 C++, Java와 같은 객체지향 언어로 작성될 수 있으며, 작성된 장치 드라이버(313)는 소스코드(Source code)형태로 배포되거나 특정 플랫폼에 맞추어 컴파일한 오브젝트 파일(Object file) 혹은 라이브러리 파일(Library file)로 배포하는 것이 가능하다.
하드웨어가 동일한 장치 드라이버(313)일지라도 서로 다른 특성이 있다. 이는 장치 프로파일(314)로 기술된다. 상기 장치 프로파일(314)에는 장치의 다양한 특징들이 기술될 수 있다. 예를 들자면, 바퀴 직경, 축 길이, 크기와 높이, 무게, 단위 등이 프로파일에 기술된다. 장치 드라이버(313)는 하드웨어의 기능을 수행하기 위한 소프트웨어 코드인 반면, 장치 프로파일(314)은 장치의 특성을 기록하기 위한 저장 공간이다. 장치의 기능과 특성을 분리함으로 얻을 수 있는 이익은 소프트웨어의 변경을 최소화할 수 있다는 것이다. 일 예로, 로봇에 대하여 바퀴 직경의 변경이 이루어질 경우, 장치 프로파일(314)만의 변경으로 동일한 장치 드라이버(313)를 사용하여 로봇을 제어할 수 있다.
장치 컨테이너(311)는 응용 프로그램(110)이 시작되면서 생성한 장치 드라이버(313)를 등록하고 보관한다. 장치 컨테이너(311)는 응용 프로그램(110)의 요청으로 장치 드라이버(313)의 참조를 리턴하며, 응용 프로그램(110)이 종료되기 전에 장치 컨테이너(311)에 등록된 모든 장치 드라이버(313)를 자동으로 삭제한다.
도 3은 본 발명의 장치 드라이버의 추상 인터페이스에 대한 클래스 다이어그램을 도시한 도면이다.
도 3을 참조하면, 로봇에 사용되는 장치는 종류에 따라 통신매체, 센서, 모터, 카메라, 이동체로 구분된다. 데이터의 송수신 기능을 가지는 RS-232, CAN, USB, IEEE1394, Ethernet 등은 통신 매체로 분류하며, 위치 혹은 속도, 힘의 제어가 가능한 장치를 모터로 분류한다. 또한, 거리, 속도, 가속도, 밝기 등 물리량을 읽을 수 있는 장치를 센서로 분류하고, 메트릭스 형태의 화상 정보를 읽을 수 있는 장치를 카메라로 분류한다. 한편, 2개 이상의 자유도로 전진 및 회전이 가능한 이동 장치를 이동체로 분류한다.
각 장치 종류별 클래스는 하기 표 1과 같다.
[표 1]
장치 종류 추상 클래스 프로파일
통신매체 CCommBase (없음)
모터 CMotorBase CMotorProfile
센서 CSensorBase CSensorProfile
카메라 CCameraBase CCameraProfile
이동체 CMobilityBase CMobilityProfile
도 4a는 본 발명의 모터 제어기에서 절대 엔코더(Absolute encoder)를 읽도록 구성한 하드웨어 블럭도이고, 도 4b는 도 4a의 장치 드라이버 구현에 대한 클래스 다이어그램을 도시한 도면이다.
도 4a 및 도 4b를 참조하면, 로봇에는 하나 이상의 복합 장치로 구성된 제어기(400)가 사용될 수 있다. 이러한 제어기(400)에 대한 장치 드라이버(313)는 하나 이상의 인터페이스로 구성되어야 하는데, 도 4a와 도 4b에서 복합 장치 인터페이스를 구성하는 방법을 예시하고 있다. 도 4a에서 엔코더(410), 모터(420), 감속 기(430)는 모터 드라이버에서 제어되고 절대 엔코더(440)는 센서 드라이버에서 제어되어야 하지만, 하나의 제어기(400)에서 모터 인터페이스와 센서 인터페이스를 동시에 가지도록 구성할 수는 없다. 그래서 CMotorA는 엔코더(410), 모터(420), 감속기(430), 절대 엔코더(440)를 제어하도록 구현되고, CSensorB는 절대 엔코더(440)를 제어하기 위하여 CMotorA의 참조를 이용하도록 구현된다.
도 5는 본 발명의 동기화 프로세서에서 제어명령과 측정값의 흐름을 도시한도면이다.
도 5를 참조하면, 로봇의 하드웨어는 한 개 이상의 통신 매체에 한 개 이상의 장치가 연결될 수 있다. 장치가 사용하는 통신 매체의 종류가 다르거나 통신 매체의 허용 전송량을 초과하는 경우, 장치들은 여러 개의 통신 매체로 분리되어 구성되어야 한다. 이러한 경우, 기존의 로봇 소프트웨어에서 응용 프로그램(110)은 장치를 순차적으로 엑세스하도록 구성된다. 하지만, 두 개 이상의 통신 매체에 연결된 장치를 응용 프로그램(110)에서 순차적으로 엑세스하는 것은 시간적인 면에서 비효율적이다.
동기화 프로세서(312)는 통신 매체에 대응하여 생성되어, 통신 매체에 연결된 장치와 응용 프로그램(110) 간의 데이터 전송을 중계한다. 응용 프로그램(110)에서 내린 제어 명령은 장치 프로파일(314)에 임시 보관되었다가 일정 주기로 수행되는 동기화 프로세서(312)에 의해 장치 드라이버(313)를 거쳐 하드웨어로 전달된다. 하드웨어에서 측정한 실세계의 측정값은 동기화 프로세서(312)에 의해 일정 주 기로 읽혀 장치 프로파일(314)에 기록되어 응용 프로그램(110)에서 사용될 수 있도록 한다.
도 6은 장치 컨테이너의 추상 클래스인 CDeviceContainer를 상속하여 실제 로봇에 대한 CDeviceImpl을 구현하는 방법에 대한 클래스 다이어그램을 도시한 도면이다.
도 6을 참조하면, 장치 컨테이너(311)에는 로봇에서 사용되는 다양한 종류의 장치의 드라이버(313)를 연결하여 사용할 수 있어야 하며, 실제로 로봇의 기능에 따라 사용되는 장치의 구성이 달라진다. 장치 컨테이너(311)의 인터페이스는 장치에서 공통으로 제공하여야 할 기능들에 대하여 추상화한다.
장치 컨테이너(311)의 인터페이스는 장치 등록, 장치 제거, 장치 획득, 장치 프로파일 획득, 장치의 복수 제어를 위한 API(Application Programming Interface)를 가진다. 장치 관리자(310)에서 장치들을 제어하기 위하여 상위 프로그램에 제공하는 API는 다음과 같다.
(1) 장치 등록
장치 드라이버를 장치 컨테이너에 등록하기 위하여 RegisterDevice() 메소드를 사용한다.
void RegisterDevice (int device_class, int id, CDeviceBase *device);
여기서, device_class는 장치의 종류를, id는 장치를 구분하기 위한 유일한 ID 값을, device는 생성한 장치 드라이버의 포인터를 의미하며, 리턴은 없다.
(2) 장치 제거
장치 컨테이너에 등록된 장치 드라이버를 제거하기 위하여 RemoveDevice() 메소드를 사용한다.
CDeviceBase *RemoveDevice (int device_class, int id);
여기서, device_class는 장치의 종류를, id는 장치를 구분하기 위한 유일한 ID 값을 의미하며, 리턴은 장치 컨테이너에서 제거되는 장치 드라이버의 포인터이다.
(3) 장치 획득
장치 컨테이너에 등록된 장치 드라이버를 획득하기 위하여 GetDevice(), GetDeviceComm(), GetDeviceMotor(), GetDeviceSensor(), GetDeviceCamera(), GetDeviceMobility() 메소드를 사용한다.
CDeviceBase *GetDevice (int device_class, int id);
CCommBase *GetDeviceComm (int comm_id);
CMotorBase *GetDeviceMotor (int motor_id);
CSensorBase *GetDeviceSensor (int sensor_id);
CCameraBase *GetDeviceCamera (int camera_id);
CMobilityBase *GetDeviceMobility (int mobile_id);
여기서 device_class는 장치의 종류를 id는 장치를 구분하기 위한 유일한 ID 값을, comm_id는 통신메체를 구분하기 위한 유일한 ID 값을, motor_id는 모터를 구분하기 위한 유일한 ID 값을, sensor_id는 센서를 구분하기 위한 유일한 ID 값을, camera_id는 카메라를 구분하기 위한 유일한 ID 값을, mobile_id는 이동체를 구분하기 위한 유일한 ID 값을 의미하며, 리턴은 장치 드라이버의 포인터이다.
(4) 장치 프로파일의 획득
장치 컨테이너에 등록된 장치의 프로파일을 획득하기 위하여 GetProfileMotor(), GetProfileSensor(), GetProfileCamera(), GetProfileMobility() 메소드를 사용한다.
CMotorProfile *GetProfileMotor (int motor_id);
CSensorProfile *GetProfileSensor (int sensor_id);
CCameraProfile *GetProfileCamera (int camera_id);
CMobilityProfile *GetProfileMobility (int mobile_id);
여기서, motor_id는 모터를 구분하기 위한 유일한 ID 값을, sensor_id는 센서를 구분하기 위한 유일한 ID 값을, camera_id는 카메라를 구분하기 위한 유일한 ID 값을, mobile_id는 이동체를 구분하기 위한 유일한 ID 값을 의미하며, 리턴은 장치 프로파일의 포인터이다.
(5) 장치의 복수 제어
장치 컨테이너에 등록된 장치를 일괄 제어하기 위하여 다음의 메소드를 사용한다.
void SyncRequest ();
void Reset ();
void Initialize ();
void FaultRecover ();
int StopAllOperation ();
SyncRequest() 메소드는 장치 프로파일의 데이터와 하드웨어 장치간의 데이터를 동기화시키기 위하여 호출한다. Reset() 메소드는 장치 컨테이너에 등록된 모든 장치에 대하여 전원이 인가된 직후의 상태로 리셋한다. Initialize() 메소드는 장치 컨테이너에 등록된 모든 장치에 대하여 구동 준비 상태로 초기화한다. FaultRecover() 메소드는 장치 컨테이너에 등록된 장치 중에서 에러 상태인 장치에 대하여 에러 복구 기능을 수행한다. StopAllOperation() 메소드는 장치 컨테이너에 등록된 모든 모터에 대하여 동작을 중지하도록 요구한다.
도 7은 본 발명의 장치 드라이버의 생성과 등록과정을 도식화한 순서도이다.
장치의 생성과 등록과정은 로봇의 응용 프로그램(110)이 시작되면서 일괄 수행된다. 통신장치 드라이버는 다른 장치들에 의해 사용되어야 하기 때문에 통신장치를 사용하는 다른 장치들에 앞서 생성된다. 그리고 통신장치 드라이버는 통신버스에 연결된 장치들의 데이터 동기를 위한 동기화 프로세서(312)의 참조를 저장한다. 장치 드라이버(313)는 필요에 따라 한 개 이상 생성되고 등록되어야 하며, 동기화 프로세서(312)의 수는 통신장치 드라이버의 수와 일치한다. 장치 프로파일(314)은 장치 드라이버(313)의 종류에 따른 장치 프로파일(314)이 생성되어야 하며, 통신장치 드라이버는 장치 프로파일(314)을 사용하지 않는다.
장치 드라이버(313)의 생성 과정을 구체적으로 살펴보면, 먼저 통신장치 드 라이버(313)를 생성하고(S100), 동기화 프로세서(312)를 생성하여 통신장치 드라이버에 동기화 프로세서(312)의 참조를 저장한다(S110). 이후 통신장치 드라이버를 맵에 추가하고(S120), 장치 프로파일(314)이 필요한 경우 장치 프로파일(314)을 생성한다(S130). 장치 프로파일(314)과 통신장치 드라이버의 참조를 인자로 장치 드라이버를 생성하고(S140), 장치 드라이버(313)를 장치 컨테이너(311)에 추가한다(S150). 이후 장치 컨테이너(311)에 등록된 장치들을 초기화하고(S160), 동기화 프로세서(312)를 분기한다(S170).
도 8은 본 발명의 동기화 프로세서의 수행과정을 도식화한 순서도이다.
도 8을 참조하면, 동기화 프로세서(312)는 실세계의 측정값을 주기적으로 읽어와 응용 프로그램(110)에서 이용 가능하도록 한다. 동기화 프로세서(312)는 로봇의 장치 관리자(310)에서 쓰레드로 수행된다. 통신장치 드라이버와 동기화 프로세서(312)는 서로의 객체에 대한 포인터를 상호 참조한다. 한 개의 통신장치 드라이버에는 한 개의 동기화 프로세서(312)가 연결되어 물리적으로 중앙처리장치(CPU)와 장치를 연결하는 버스에 연결된 장치의 데이터를 순서대로 읽고 쓰게 된다. 동기 이벤트는 타이머 인터럽트에 의해 주기적으로 발생하게 되는데, 모든 동기화 프로세서(312)는 동기 이벤트를 대기하고 있다가 동기 이벤트의 발생과 함께 동시에 수행된다. 동기화 프로세서(312)는 장치 컨테이너(311)에 등록된 장치 드라이버(313)의 참조를 순차적으로 얻어온 후, 동기화 프로세서(312)의 통신버스와 장치 드라이버(313)의 통신버스가 일치하는지 비교하여 일치하는 경우와 활성상태인 장치의 동 기화를 수행한다. 장치는 응용 프로그램(110)의 수행 중에 활성 혹은 비활성 상태로 설정할 수 있다.
장치 동기화 프로세서(312)의 수행 과정을 구체적으로 살펴보면, 통신장치 드라이버의 참조(A)를 얻어온다(S200). 상기 절차를 계속 수행할 것인지를 판단하고(S210), 계속 수행할 필요가 없다면 절차를 종료한다. 계속 수행을 진행한다면, 동기 이벤트를 대기한다(S220). 이후 동기화할 장치 드라이버(313)의 참조(B)를 얻어온다(S230). 동기화할 장치 드라이버(313)의 참조(B)가 통신장치 드라이버의 참조(A)와 같은지 판단하고(S240), 같지 않다면 S210 단계로 진행하고, 같다면 참조(B)가 활성상태인지 판단한다(S250). 참조(B)가 활성상태가 아니라면 S210 단계로 진행하고, 활성상태라면 참조(B)의 동기화를 수행한다(S260). 이후 S210 단계로 진행한다.
도 9는 본 발명의 장치 드라이버의 등록해제와 삭제 과정을 도식화한 순서도이다.
도 9를 참조하면, 로봇의 응용 프로그램(110)이 종료하기 전에 장치 컨테이너(311)에 등록된 모든 장치를 등록 해제하고 장치 드라이버(313)를 삭제한다. 통신장치 드라이버가 삭제되기 전에 통신장치 드라이버로부터 동기화 프로세서(312)의 참조를 얻어와 동기화 프로세서(312)의 중지를 요구하고, 동기화 프로세서(312)가 중지될 때까지 대기한다. 동기화 프로세서(312)가 중지된 후 동기화 프로세서(312)의 객체를 삭제한다. 통신장치 드라이버는 장치 프로파일(314)을 사용하지 않기 때문에 장치 프로파일(314)의 삭제를 수행하지 않는다. 모든 장치가 삭제된 후에는 장치 컨테이너(311)에 등록된 장치 드라이버(313)를 일괄 등록해제 한다.
장치 드라이버(313)의 등록해제와 삭제 과정을 구체적으로 살펴보면, 먼저 통신장치 드라이버인지 판단한다(S300). 통신장치 드라이버가 맞다면 통신장치 드라이버로부터 동기화 프로세서(312)의 참조를 얻어온다(S310). 이후 동기화 프로세서 중지 요구 및 중지 대기를 수행하고(S320), 동기화 프로세서를 합류한다(S330). 이후 장치 프로파일(314)이 있는지 판단한다(S340). 한편, 상기 S300 단계에서 통신장치 드라이버가 아니라고 판단되면, 상기 S340 단계로 진행하여 장치 프로파일(314)이 있는지 판단한다. 상기 S340 단계에서 장치 프로파일이 있다고 판단되면 장치 프로파일을 삭제하고(S350), 장치 드라이버를 삭제한다(S360). 상기 S340 단계에서 장치 프로파일(314)이 없다고 판단되면 바로 S360 단계로 진행한다. 장치 드라이버를 삭제한 후에는 장치 컨테이너(311)에서 등록을 해제한다(S370).
본 발명은 도면에 도시된 일 실시예를 참고로 설명되었으나, 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명은, 인간형 로봇의 소프트웨어 구조에 관한 것으로, 상세하게는 로봇에 사용되는 장치의 호환성 확보를 위한 인간형 로봇의 장치관리자 및 관리 방법을 제공한다.

Claims (8)

  1. 로봇에 사용되는 하드웨어 장치를 구동하기 위한 소프트웨어인 장치 드라이버;
    바퀴 직경, 축 길이, 크기와 높이, 무게, 또는 단위를 포함한 장치의 특징들이 기술되어 저장되는 장치 프로파일;
    응용 프로그램이 시작되면서 생성한 상기 장치 드라이버를 등록하고 보관하는 장치 컨테이너; 및
    통신 매체에 대응하여 생성되어, 통신 매체에 연결된 장치와 응용 프로그램 간의 데이터 전송을 중계하는 동기화 프로세서를 포함하는 인간형 로봇의 장치관리자.
  2. 제 1항에 있어서,
    장치 컨테이너는 상기 장치 드라이버의 참조를 가지고, 장치 드라이버는 상기 장치 프로파일의 참조를 가지도록 구성된 인간형 로봇의 장치관리자.
  3. 제1항에 있어서,
    장치 컨테이너의 인터페이스는 장치 등록, 장치 제거, 장치 획득, 장치 프로파일 획득, 장치의 복수 제어를 위한 API(Application Programming Interface)인 인간형 로봇의 장치관리자.
  4. 로봇 응용 소프트웨어에 장치관리자를 제공하는 방법에 있어서,
    장치관리자에 장치를 등록하는 단계;
    실세계의 측정값을 주기적으로 읽어와 응용 프로그램에서 이용 가능하도록 동기화하는 단계; 및
    장치 관리자에서 장치를 등록 해제하는 단계를 포함하는 인간형 로봇의 장치 관리 방법.
  5. 통신장치 드라이버를 생성하는 단계;
    동기화 프로세서를 생성하여 상기 통신장치 드라이버에 상기 동기화 프로세서의 참조를 저장하는 단계;
    상기 통신장치 드라이버를 맵에 추가하는 단계;
    장치 프로파일이 필요한 경우 장치 프로파일을 생성하는 단계;
    상기 장치 프로파일과 상기 통신장치 드라이버의 참조를 인자로 장치 드라이버를 생성하고, 상기 장치 드라이버를 장치 컨테이너에 추가하는 단계;
    상기 장치 컨테이너에 등록된 장치들을 초기화하는 단계; 및
    상기 동기화 프로세서를 분기하는 단계를 포함하는 장치 드라이버의 생성 방 법.
  6. 통신장치 드라이버의 참조(A)를 얻어오는 단계;
    동기 이벤트를 대기하는 단계;
    동기화할 장치 드라이버의 참조(B)를 얻어오는 단계;
    동기화할 장치 드라이버의 참조(B)가 통신장치 드라이버의 참조(A)와 같을 경우 참조(B)가 활성상태인지 판단하는 단계; 및
    참조(B)가 활성상태라면 참조(B)의 동기화를 수행하는 단계를 포함하는 동기화 프로세서의 수행 방법.
  7. 통신장치 드라이버인지 판단하는 단계;
    통신장치 드라이버가 맞다면 통신장치 드라이버로부터 동기화 프로세서의 참조를 얻어오는 단계;
    상기 동기화 프로세서의 중지 요구 및 중지 대기를 수행하는 단계;
    상기 동기화 프로세서를 합류하는 단계;
    장치 프로파일이 있다고 판단되면 장치 프로파일을 삭제하는 단계;
    상기 장치 프로파일을 삭제 후 장치 드라이버를 삭제하는 단계; 및
    상기 장치 드라이버를 삭제한 후 장치 컨테이너에서 등록을 해제하는 단계를 포함하는 장치 드라이버의 등록해제와 삭제 방법.
  8. 제 4항 내지 제 7항 중 어느 한 항의 방법을 수행하기 위한 컴퓨터 실행가능 명령을 갖는 컴퓨터 판독가능 매체.
KR1020060130634A 2006-12-20 2006-12-20 인간형 로봇의 장치관리자 및 관리 방법 KR100853426B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060130634A KR100853426B1 (ko) 2006-12-20 2006-12-20 인간형 로봇의 장치관리자 및 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060130634A KR100853426B1 (ko) 2006-12-20 2006-12-20 인간형 로봇의 장치관리자 및 관리 방법

Publications (2)

Publication Number Publication Date
KR20080057401A KR20080057401A (ko) 2008-06-25
KR100853426B1 true KR100853426B1 (ko) 2008-08-21

Family

ID=39803181

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060130634A KR100853426B1 (ko) 2006-12-20 2006-12-20 인간형 로봇의 장치관리자 및 관리 방법

Country Status (1)

Country Link
KR (1) KR100853426B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101251287B1 (ko) * 2010-12-31 2013-04-10 강원대학교산학협력단 명령 적응형 지능형 로봇 장치 및 제어 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002543515A (ja) 1999-04-30 2002-12-17 エラタ(ホールディングス)リミテッド 装置への内容の分配を管理するシステムと方法
KR20040066849A (ko) * 2001-11-28 2004-07-27 에볼루션 로보틱스, 인크. 로봇을 위한 하드웨어 추상화 계층에서의 센서 및액추에이터 추상화 및 집단화
JP2005051625A (ja) 2003-07-30 2005-02-24 Internatl Business Mach Corp <Ibm> コンピュータ装置、無線lanシステム、プロファイルの更新方法、取得方法、およびプログラム
KR20060114280A (ko) * 2003-11-18 2006-11-06 마이크로소프트 코포레이션 적응성 컴퓨팅 환경

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002543515A (ja) 1999-04-30 2002-12-17 エラタ(ホールディングス)リミテッド 装置への内容の分配を管理するシステムと方法
KR20040066849A (ko) * 2001-11-28 2004-07-27 에볼루션 로보틱스, 인크. 로봇을 위한 하드웨어 추상화 계층에서의 센서 및액추에이터 추상화 및 집단화
JP2005051625A (ja) 2003-07-30 2005-02-24 Internatl Business Mach Corp <Ibm> コンピュータ装置、無線lanシステム、プロファイルの更新方法、取得方法、およびプログラム
KR20060114280A (ko) * 2003-11-18 2006-11-06 마이크로소프트 코포레이션 적응성 컴퓨팅 환경

Also Published As

Publication number Publication date
KR20080057401A (ko) 2008-06-25

Similar Documents

Publication Publication Date Title
US7925381B2 (en) Hardware abstraction layer (HAL) for a robot
CN101233489B (zh) 自适应进程分派的方法和系统
US8108880B2 (en) Method and system for enabling state save and debug operations for co-routines in an event-driven environment
EP2341430A1 (en) Multiple computer architecture with synchronization
US20070040834A1 (en) Method and apparatus for supporting universal serial bus devices in a virtualized environment
KR19990064026A (ko) 컴퓨터 시스템 또는 그 프로그램이 중지될 필요가 없는 객체 지향형 메쏘드 유지 보수 메카니즘
US20080133861A1 (en) Silent memory reclamation
JP2010105150A (ja) ロボットコンポーネント管理装置及び方法
CN112579254B (zh) 图形处理器的仿真方法、装置、电子设备和存储介质
CN113641413A (zh) 目标模型加载更新方法及装置、可读介质和电子设备
KR20100073193A (ko) 로봇 응용 프로그램 실행 장치 및 방법
KR100853426B1 (ko) 인간형 로봇의 장치관리자 및 관리 방법
US7228201B2 (en) Information processing device, information processing method, and robot apparatus
US20240054002A1 (en) Vehicle-mounted computer, computer execution method, and computer program
CN112025704B (zh) 基于内存型数据库的实时分布式机器人控制方法及系统
US8918582B2 (en) Simulating EEPROM in virtual distributed switches
US20030220936A1 (en) Software architecture for managing binary objects
Bouraqadi-Saâdani et al. A reflective infrastructure for coarse-grained strong mobility and its tool-based implementation
US8028296B2 (en) Providing a wrapper around native synchronization objects
KR20160071124A (ko) 데이터 처리 아키텍쳐 및 데이터 처리 방법
CN117381778A (zh) 机器人软件架构、控制方法、控制装置和机器人
CN117349047A (zh) 机器人软件架构、控制方法、控制装置和机器人
Bayliss et al. Mobile robotics 1997
AU2005236086B2 (en) Multiple computer architecture with synchronization
CN117873567A (zh) 嵌入式环境下的通用中断处理方法及其系统

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: 20110623

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20120710

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee