KR20230142999A - 기능 모듈의 추가 및 삭제가 가능하고 타사 제품과의 연동을 지원하는 관리 장치 및 방법 - Google Patents

기능 모듈의 추가 및 삭제가 가능하고 타사 제품과의 연동을 지원하는 관리 장치 및 방법 Download PDF

Info

Publication number
KR20230142999A
KR20230142999A KR1020220041746A KR20220041746A KR20230142999A KR 20230142999 A KR20230142999 A KR 20230142999A KR 1020220041746 A KR1020220041746 A KR 1020220041746A KR 20220041746 A KR20220041746 A KR 20220041746A KR 20230142999 A KR20230142999 A KR 20230142999A
Authority
KR
South Korea
Prior art keywords
module
function
hardware
unit
manager
Prior art date
Application number
KR1020220041746A
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 KR1020220041746A priority Critical patent/KR20230142999A/ko
Priority to EP23160317.6A priority patent/EP4283460A1/en
Priority to CN202310233052.2A priority patent/CN116893631A/zh
Priority to JP2023043292A priority patent/JP2023152831A/ja
Priority to US18/190,639 priority patent/US20230315434A1/en
Publication of KR20230142999A publication Critical patent/KR20230142999A/ko

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0423Input/output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/006Controls for manipulators by means of a wireless system for controlling one or several manipulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04847Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • 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
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25257Microcontroller

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Computer Security & Cryptography (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Automation & Control Theory (AREA)
  • Stored Programmes (AREA)

Abstract

관리 장치가 제공된다. 상기 관리 장치는 하드웨어에 특정 기능을 부여하는 기능 모듈이 등록된 마켓 서버; 상기 마켓 서버로부터 상기 기능 모듈을 다운로드하는 관리기;를 포함하고, 상기 관리기는 상기 제어기에 상기 기능 모듈을 설치하거나 상기 제어기에 설치된 상기 기능 모듈을 삭제할 수 있다.

Description

기능 모듈의 추가 및 삭제가 가능하고 타사 제품과의 연동을 지원하는 관리 장치 및 방법{Apparatus and method for management to support interworking with third-party products while allowing addition and deletion of function modules}
본 발명은 로봇 등의 하드웨어를 관리하는 장치 및 방법에 관한 것이다.
로봇, AMR(Autonomous Mobile Robot, 자율 주행 로봇) 등의 하드웨어는 다양한 분야에서 널리 사용되고 있다.
하지만, 많은 하드웨어가 제조사에게 제공하는 제한된 기능 및 조작법에 의해 구동되고 있다. 따라서, 각종 하드웨어는 제한된 작업 환경에만 적용되고 있으며, 숙련자에 의해서만 관리되고 있다.
이로 인해, 각종 하드웨어의 보급화가 지연되고 있다.
한국공개특허공보 제2015-0074375호에는 식별된 기종별 로봇에 대해 통일된 사용자 인터페이스를 제공하는 로봇 플랫폼 환경을 제공받아 로봇의 기종별 조작법이나 명령을 모르더라도 통일된 사용자 인터페이스를 통해 공통된 사용자 명령으로 로봇을 제어하는 기술이 개시되고 있다.
한국공개특허공보 제2015-0074375호
본 발명은 로봇 등의 하드웨어를 제어하는 제어기 등에 다양한 기능 모듈을 추가하거나 삭제할 수 있으며, 다양한 제조사의 하드웨어와 연동할 수 있는 관리 장치를 제공하기 위한 것이다.
본 발명의 관리 장치는 하드웨어를 제어하는 제어기가 마련될 때, 상기 하드웨어에 특정 기능을 부여하는 기능 모듈이 등록된 마켓 서버; 상기 마켓 서버로부터 상기 기능 모듈을 다운로드하는 관리기;를 포함할 수 있다. 상기 관리기는 상기 제어기에 상기 기능 모듈을 설치하거나 상기 제어기에 설치된 상기 기능 모듈을 삭제할 수 있다.
본 발명의 관리 장치는 하드웨어에 특정 기능을 부여하는 기능 모듈을 등록하는 등록부; 기등록된 기능 모듈의 모듈 정보를 관리기에 제공하는 제공부;를 포함할 수 있다.
상기 제공부는 상기 모듈 정보가 타일드(tiled) 메뉴 구조로 표시되는 표시 메뉴를 상기 관리기에 제공할 수 있다.
상기 제공부는 상기 타일드 메뉴를 형성하는 특정 타일이 선택되면 선택된 특정 타일에 배치된 특정 기능 모듈의 기능 분류 결과 및 상세 정보 중 적어도 하나를 상기 관리기에 추가로 제공할 수 있다.
상기 관리기에 설치된 제2 확장 API(Application Programming Interface)의 정보를 수집하는 수집부가 마련될 수 있다.
상기 제2 확장 API를 사용하는 제2 동적 라이브러리를 갖는 제2 기능 모듈을 기등록된 복수의 기능 모듈 중에서 검색하는 검색부가 마련될 수 있다.
상기 제공부는 상기 검색부에 의해 검색된 상기 제2 기능 모듈의 목록을 상기 관리기에 제공할 수 있다.
상기 관리기에 의해 관리되는 제어기에 설치된 제1 확장 API(Application Programming Interface)의 정보를 수집하는 수집부가 마련될 수 있다.
상기 제1 확장 API를 사용하는 제1 동적 라이브러리를 갖는 제1 기능 모듈을 기등록된 복수의 기능 모듈 중에서 검색하는 검색부가 마련될 수 있다.
상기 제공부는 상기 검색부에 의해 검색된 상기 제1 기능 모듈의 목록을 상기 관리기에 제공할 수 있다.
상기 기능 모듈을 대상으로 하는 고객의 평가 점수, 다운로드 횟수, 공정 편의성 중 적어도 하나를 이용하여 상기 기능 모듈에 점수를 부여하는 평가부가 마련될 수 있다.
상기 제공부는 상기 제어기에 제공되는 상기 모듈 정보가 복수이면, 각 기능 모듈에 부여된 점수에 따라 우선 순위를 결정할 수 있다.
상기 제공부는 상기 우선 순위에 따라 순서대로 정렬된 복수의 상기 모듈 정보를 상기 관리기에 제공할 수 있다.
상기 관리기에 설치된 특정 기능 모듈의 설치 정보를 수집하는 수집부가 마련될 수 있다.
상기 설치 정보와 기등록된 기능 모듈의 모듈 정보 간의 비교를 통해 상기 특정 기능 모듈의 업데이트를 수행하는 업데이트부가 마련될 수 있다.
본 발명의 관리 장치는 하드웨어에 특정 기능을 부여하는 기능 모듈이 탑재되고, 상기 기능 모듈의 실행에 의해 상기 하드웨어를 제어하는 제1 실행부; 상기 제1 실행부에 탑재된 기능 모듈 중에서 변동 가능한 변동 모듈을 관리하는 제1 관리부;를 포함할 수 있다.
상기 제1 실행부에 탑재되는 기능 모듈은 상기 변동 모듈, 상기 제1 실행부에 고정 탑재되는 고정 모듈로 구분될 수 있다.
상기 제1 관리부는 상기 고정 모듈은 그대로 둔 상태에서 상기 변동 모듈을 추가하거나 삭제할 수 있다.
상기 고정 모듈은 관리기 또는 마켓 서버와 통신하는 제1 통신 모듈, 상기 하드웨어의 제어 정보를 해석하는 해석 모듈, 상기 해석 모듈에 의해 해석된 제어 정보를 상기 하드웨어에 호환되게 변환하는 변환 모듈 중 적어도 하나를 포함할 수 있다.
상기 변동 모듈은 상기 제어 정보를 생성하는 제어 모듈, 유저 인터페이스가 포함된 화면 모듈과 상기 제어 모듈을 연결하는 프레임워크 모듈 중 적어도 하나를 포함할 수 있다.
관리기 또는 마켓 서버와 통신하는 제1 통신 모듈, 상기 하드웨어의 제어 정보를 해석하는 해석 모듈, 상기 해석 모듈에 의해 해석된 제어 정보를 상기 하드웨어에 호환되게 변환하는 변환 모듈이 마련될 수 있다.
상기 제1 관리부는 상기 제1 통신 모듈, 상기 해석 모듈 및 상기 변환 모듈을 그대로 둔 상태에서 상기 제1 실행부에 다른 기능 모듈을 추가하거나 상기 제1 실행부에 탑재된 다른 기능 모듈을 삭제할 수 있다.
상기 제1 실행부에는 제1 OS(Operating System, 오퍼레이팅 시스템), 로봇 OS(Operating System, 오퍼레이팅 시스템), 상기 제1 OS 또는 상기 로봇 OS에 실시간성을 제공하는 리얼타임 OS(RTOS, Real Time Operating System) 중 적어도 하나가 추가로 탑재될 수 있다.
상기 기능 모듈의 실행 환경에 해당하는 제1 런타임(runtime) 모듈, 상기 기능 모듈과 상기 제1 런타임 모듈을 연결하는 제1 API(Application Program Interface) 중 적어도 하나가 추가로 탑재될 수 있다.
상기 제1 실행부에는 제1 통신 모듈, 해석 모듈, 변환 모듈, 제어 모듈, 프레임워크 모듈, 제1 런타임(runtime) 모듈, 제1 API(Application Program Interface), 제1 확장 API, 제1 동적 라이브러리가 탑재될 수 있다.
상기 제1 관리부는 상기 제어 모듈 및 상기 프레임워크 모듈과 구분되는 상기 제1 확장 API 또는 상기 제1 동적 라이브러리를 상기 제1 실행부에 추가하거나 상기 제1 실행부에서 삭제할 수 있다.
상기 제1 통신 모듈은 관리기 또는 마켓 서버와 통신할 수 있다.
상기 해석 모듈은 상기 하드웨어의 제어 정보를 해석할 수 있다.
상기 변환 모듈은 상기 해석 모듈에 의해 해석된 제어 정보를 상기 하드웨어에 호환되게 변환할 수 있다.
상기 제어 모듈은 상기 제어 정보를 생성할 수 있다.
상기 프레임워크 모듈은 유저 인터페이스가 포함된 화면 모듈과 상기 제어 모듈을 연결할 수 있다.
상기 제1 런타임 모듈은 상기 기능 모듈의 실행 환경을 제공할 수 있다.
상기 제1 API는 상기 기능 모듈과 상기 제1 런타임 모듈을 연결할 수 있다.
상기 제1 동적 라이브러리는 상기 하드웨어의 제조사에서 상기 하드웨어의 제어를 목적으로 제작한 것일 수 있다.
상기 제1 확장 API는 상기 제1 동적 라이브러리와 상기 제1 런타임 모듈을 연결할 수 있다.
상기 기능 모듈에는 화면 모듈, 프레임워크 모듈, 제어 모듈이 마련될 수 있다.
상기 화면 모듈에는 유저 인터페이스가 포함될 수 있다.
상기 제어 모듈에는 상기 하드웨어가 상기 특정 기능을 갖도록 상기 하드웨어를 제어하는 제어 정보가 포함될 수 있다.
상기 프레임워크 모듈에는 상기 화면 모듈과 상기 제어 모듈을 연동시키는 정보가 포함될 수 있다.
상기 제1 관리부는 상기 화면 모듈, 상기 프레임워크 모듈, 상기 제어 모듈 중에서 상기 프레임워크 모듈과 상기 제어 모듈을 상기 제1 실행부에 탑재할 수 있다.
상기 기능 모듈의 유저 인터페이스가 표시되는 관리기와 통신하는 제1 통신 모듈이 마련될 수 있다.
상기 제1 통신 모듈은 상기 하드웨어가 상기 특정 기능을 갖도록 하는 상기 하드웨어의 제어 정보를 생성하는 제어 모듈, 상기 제어 모듈과 상기 유저 인터페이스를 연동시키는 프레임워크 모듈을 상기 관리기로부터 수신할 수 있다.
상기 제1 관리부는 상기 제1 통신 모듈을 통해 수신된 상기 제어 모듈과 상기 프레임워크 모듈을 상기 제1 실행부에 설치할 수 있다.
상기 관리기에는 제2 실행부 및 제2 관리부가 마련될 수 있다.
상기 제2 관리부는 마켓 서버로부터 다운로드한 기능 모듈에 포함된 화면 모듈, 상기 프레임워크 모듈, 상기 제어 모듈을 구분할 수 있다.
상기 제2 실행부에는 상기 제1 통신 모듈과 통신하는 제2 통신 모듈, 상기 제2 관리부에 의해 추출된 상기 화면 모듈이 탑재될 수 있다.
상기 제2 관리부는 상기 제2 통신 모듈을 통해 상기 제어 모듈 및 상기 프레임워크 모델을 상기 제1 관리부에 전달할 수 있다.
상기 제1 관리부는 상기 제2 관리부로부터 전달받은 상기 제어 모듈 및 상기 프레임워크 모델을 상기 제1 실행부에 설치할 수 있다.
상기 화면 모듈은 상기 프레임워크 모듈에 의해 상기 제어 모듈과 연동되는 상기 유저 인터페이스를 상기 관리기의 표시부에 표시할 수 있다.
상기 제1 통신 모듈과 상기 제2 통신 모듈은 상기 유저 인터페이스와 상기 제어 모듈 간의 연동 정보를 주고받을 수 있다.
상기 제1 통신 모듈과 상기 제2 통신 모듈이 일체로 형성될 수 있다.
상기 제1 실행부와 상기 제2 실행부가 일체로 형성될 수 있다.
상기 제1 관리부와 상기 제2 관리부가 일체로 형성될 수 있다.
본 발명의 관리 장치는 하드웨어에 특정 기능을 부여하는 기능 모듈을 획득하는 제2 관리부; 상기 기능 모듈 중에서 상기 특정 기능을 나타내는 유저 인터페이스를 표시하는 제2 실행부; 상기 유저 인터페이스가 표시되는 표시부;를 포함할 수 있다.
상기 제2 실행부에는 제2 OS(Operating System, 오퍼레이팅 시스템), 상기 기능 모듈의 실행 환경에 해당하는 제2 런타임(runtime) 모듈, 상기 기능 모듈과 상기 제2 런타임 모듈을 연결하는 제2 API(Application Program Interface)가 탑재될 수 있다.
상기 제2 관리부는 상기 유저 인터페이스를 제공하는 화면 모듈을 상기 기능 모듈에서 추출할 수 있다.
상기 제2 관리부는 상기 제2 OS, 상기 제2 런타임 모듈 및 상기 제2 API를 그대로 둔 상태에서 상기 화면 모듈을 상기 제2 실행부에 설치하거나 상기 제2 실행부에서 삭제할 수 있다.
상기 제2 관리부는 상기 기능 모듈을 제1 모듈과 제2 모듈로 구분할 수 있다.
상기 제2 모듈은 상기 유저 인터페이스가 포함된 화면 모듈, 상기 하드웨어의 시뮬레이션 환경을 생성하는 시뮬레이션 모듈, 상기 화면 모듈과 상기 시뮬레이션 모듈을 연결하는 메타 모듈, 상기 하드웨어의 티칭(teaching) 정보를 생성하는 티칭 모듈, 증강 현실을 제공하는 공간 정합 모듈 중 적어도 하나를 포함할 수 있다.
상기 제1 모듈은 상기 하드웨어가 상기 특정 기능을 갖도록 상기 하드웨어를 제어하는 제어 정보를 처리하는 제어 모듈, 상기 화면 모듈과 상기 제어 모듈을 연동시키는 정보가 포함된 프레임워크 모듈 중 적어도 하나를 포함할 수 있다.
상기 제2 관리부는 상기 하드웨어의 제어기에 상기 제1 모듈을 제공할 수 있다.
상기 제2 관리부는 상기 제2 실행부에 상기 제2 모듈을 설치하거나 상기 제2 실행부에 설치된 상기 제2 모듈을 삭제할 수 있다.
상기 제2 관리부는 상기 기능 모듈에서 상기 유저 인터페이스를 갖는 화면 모듈을 추출할 수 있다.
상기 제2 관리부는 상기 제2 실행부에 상기 화면 모듈을 설치할 수 있다.
상기 제2 실행부는 상기 제2 관리부에 의해 탑재된 상기 화면 모듈의 실행을 통해 상기 표시부에 상기 유저 인터페이스를 표시할 수 있다.
상기 제2 실행부에는 상기 하드웨어를 제어하는 제어기와 통신하는 제2 통신 모듈이 탑재될 수 있다.
상기 제2 통신 모듈은 상기 하드웨어와 상기 유저 인터페이스 간의 연동 정보를 상기 제어기와 주고받을 수 있다.
상기 기능 모듈에 화면 모듈, 프레임워크 모듈, 제어 모듈이 포함될 때, 상기 제2 관리부는 상기 기능 모듈에서 상기 화면 모듈을 추출할 수 있다.
상기 제2 관리부는 상기 기능 모듈로부터 추출된 상기 화면 모듈을 상기 제2 실행부에 설치할 수 있다.
상기 제2 관리부는 상기 기능 모듈에서 상기 프레임워크 모듈과 상기 제어 모듈을 추출할 수 있다.
상기 제2 관리부는 상기 하드웨어를 제어하는 제어기에 상기 프레임워크 모듈과 상기 제어 모듈을 제공할 수 있다.
상기 제2 실행부에는 제2 통신 모듈, 화면 모듈, 제2 런타임(runtime) 모듈, 제2 API(Application Program Interface), 제2 확장 API, 제2 동적 라이브러리가 탑재될 수 있다.
상기 제2 관리부는 상기 화면 모듈과 구분되는 상기 제2 확장 API 또는 상기 제2 동적 라이브러리를 상기 제2 실행부에 추가하거나 상기 제2 실행부에서 삭제할 수 있다.
상기 제2 통신 모듈은 제어기 또는 마켓 서버와 통신할 수 있다.
상기 화면 모듈은 상기 제2 실행부에 의해 실행되면 상기 유저 인터페이스를 표시부에 표시할 수 있다.
상기 제2 런타임 모듈은 상기 기능 모듈의 실행 환경을 제공할 수 있다.
상기 제2 API는 상기 기능 모듈과 상기 제2 런타임 모듈을 연결할 수 있다.
상기 제2 동적 라이브러리는 상기 하드웨어의 제조사에서 상기 하드웨어의 제어를 목적으로 제작한 것일 수 있다.
상기 제2 확장 API는 상기 제2 동적 라이브러리와 상기 제2 런타임 모듈을 연결할 수 있다.
본 발명의 관리 장치는 하드웨어 제어용의 유저 인터페이스가 표시되는 관리기;를 포함할 수 있다.
상기 관리기는 마켓 서버로부터 획득된 기능 모듈에서 화면 모듈, 제어 모듈을 추출할 수 있다.
상기 관리기는 자체적으로 구비된 제2 API를 그대로 둔 상태에서 상기 제2 API 상에 상기 화면 모듈을 탑재할 수 있다.
상기 관리기는 상기 하드웨어의 제어기에 기설치된 제1 API 상에 탑재될 상기 제어 모듈을 상기 제어기로 전송할 수 있다.
본 발명의 관리 방법은 마켓 서버로부터 기능 모듈을 획득하는 획득 단계; 상기 기능 모듈에 포함된 화면 모듈, 제어 모듈을 추출하는 추출 단계; 기설치된 제2 API 상에 상기 화면 모듈을 탑재하는 설치 단계; 상기 하드웨어의 제어기에 기설치된 제1 API 상에 탑재될 상기 제어 모듈을 상기 제어기로 전송하는 제공 단계;를 포함할 수 있다.
본 발명의 관리 장치는 하드웨어에 특정 기능을 부여하는 기능 모듈이 입수되면, 기능 모듈에 포함된 화면 모듈, 제어 모듈, 프레임워크 모듈을 구분해서 관리할 수 있다.
예를 들어, 관리 장치는 사용자가 조작하는 관리기에 화면 모듈을 설치하고, 하드웨어의 제어기에 제어 모듈, 프레임워크 모듈을 설치할 수 있다.
관리기에 대한 화면 모듈의 설치는 관리기에 탑재된 OS, API, 런타임 모듈 등을 그대로 둔 유지 상태에서 수행될 수 있다. 제어기에 대한 제어 모듈, 프레임워크 모듈의 설치는 제어기에 탑재된 OS, API, 런타임 모듈 등을 그대로 둔 유지 상태에서 수행될 수 있다.
다시 말해, 본 발명의 관리 장치는 관리기에 기능 모듈의 화면 모듈을 설치하고, 제어기에 기능 모듈의 제어 모듈 및 프레임워크 모듈을 설치하는 것을 통해 하드웨어의 제어기 및 관리기에 특정 기능 모듈을 설치할 수 있다. 또는, 관리 장치는 관리기에서 화면 모듈을 제거하고, 제어기에서 제어 모듈 및 프레임워크 모듈을 삭제하는 것을 통해, 제어기 및 관리기에서 특정 기능 모듈을 삭제할 수 있다.
제어기 및 관리기에 설치된 특정 기능 모듈은 하드웨어가 새로운 기능을 갖도록 로봇을 제어할 수 있다.
본 발명에 따르면, 기능 모듈에 화면 모듈, 제어 모듈, 프레임워크 모듈이 포함된 경우, 기능 모듈의 제작 업체에 상관없이 로봇, AMR 등의 하드웨어에 특정 기능을 부여하거나 해당 하드웨어에서 특정 기능을 삭제할 수 있다.
본 발명에 따르면, 기능 모듈에 화면 모듈, 제어 모듈, 프레임워크 모듈이 포함되는 범위 내에서, 다양한 소프트웨어 개발 플랫폼, SDK(Software Development Kit) 등을 통하여 다양한 기능 모듈이 제작될 있다.
이는 곧, 하드웨어의 제조사, 제어기의 제조사, 관리기의 제조사와 무관한 다양한 주변기기 업체, 소프트웨어 업체에서도 해당 하드웨어에 새로운 기능을 부여하는 기능 모듈의 제작이 가능한 것을 의미할 수 있다.
이와 같은 기능 모듈의 개발 환경에 따르면, 다양한 기능이 신속하게 하드웨어의 사용 고객에게 제공될 수 있다. 또한, 하드웨어의 제조사에 집중된 기능 모듈의 개발 로드(load)가 다양한 하드웨어 제조사, 다양한 제어기 제조사, 다양한 관리기 제조사, 다양한 소프트웨어 업체로 분산될 수 있다.
본 발명에 따르면, 하드웨어의 기능별 문제점이 해당 기능을 갖는 기능 모듈의 제공 업체에 의해 해결되는 환경이 마련될 수 있다. 다시 말해, 하드웨어의 통합적인 문제 대응이 아니라, 하드웨어의 기능별로 문제 대응이 가능한 환경이 마련될 수 있다. 이는 곧, 하드웨어에 부여된 각 기능별로 독립적인 문제점 해결 환경이 제공되는 것을 의미할 수 있다.
기능 모듈의 제공 업체에서는 하드웨어의 다른 문제점을 배제하고, 오직 자신이 제공한 기능 모듈의 문제점 개선에만 집중하면 되므로, 기능 모듈의 안정성 역시 개선될 수 있다. 이를 통해, 하드웨어의 고객은 기존 하드웨어를 대상으로 새롭게 추가되는 특정 기능을 안정적으로 사용할 수 있다.
도 1은 본 발명의 관리 장치를 나타낸 개략도이다.
도 2는 마켓 서버를 나타낸 개략도이다.
도 3은 관리기에 표시되는 표시 메뉴를 나타낸 개략도이다.
도 4는 제어기를 나타낸 개략도이다.
도 5는 제어기에 탑재된 소프트웨어 구조를 나타낸 개략도이다.
도 6은 관리기를 나타낸 개략도이다.
도 7은 관리기에 탑재된 소프트웨어 구조를 나타낸 개략도이다.
도 8은 표시부를 통해 표시되는 유저 인페이스의 일 예를 나타낸 개략도이다.
도 9는 본 발명의 관리 장치의 동작을 나타낸 개략도이다.
도 10은 본 발명의 관리 장치가 적용된 환경에서, 하드웨어의 제조사와 기능 모듈의 제작 업체 간의 업무 영역을 나타낸 개략도이다.
도 11은 비교 실시예의 동작을 나타낸 개략도이다.
도 12는 비교 실시예의 환경에서 하드웨어 제조사의 업무 영역을 나타낸 개략도이다.
도 13은 비교 실시예의 소프트웨어 구조를 나타낸 개략도이다.
도 14는 본 발명의 관리 방법을 나타낸 흐름도이다.
도 15는 기능 모듈을 설치하는 과정을 나타낸 흐름도이다.
도 16은 기능 모듈을 삭제하는 과정을 나타낸 흐름도이다.
도 17은 본 발명의 실시예에 따른, 컴퓨팅 장치를 나타내는 도면이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본 명세서에서, 동일한 구성요소에 대해서 중복된 설명은 생략한다.
또한 본 명세서에서, 어떤 구성요소가 다른 구성요소에 '연결되어' 있다거나 '접속되어' 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에 본 명세서에서, 어떤 구성요소가 다른 구성요소에 '직접 연결되어' 있다거나 '직접 접속되어' 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
또한, 본 명세서에서 사용되는 용어는 단지 특정한 실시예를 설명하기 위해 사용되는 것으로써, 본 발명을 한정하려는 의도로 사용되는 것이 아니다.
또한 본 명세서에서, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다.
또한 본 명세서에서, '포함하다' 또는 '가지다' 등의 용어는 명세서에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품, 또는 이들을 조합한 것이 존재함을 지정하려는 것일 뿐, 하나 또는 그 이상의 다른 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 할 것이다.
또한 본 명세서에서, '및/또는' 이라는 용어는 복수의 기재된 항목들의 조합 또는 복수의 기재된 항목들 중의 어느 항목을 포함한다. 본 명세서에서, 'A 또는 B'는, 'A', 'B', 또는 'A와 B 모두'를 포함할 수 있다.
또한 본 명세서에서, 본 발명의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략될 것이다.
도 1은 본 발명의 관리 장치(100)를 나타낸 개략도이다.
도 1에 도시된 관리 장치(100)는 제어기(110), 관리기(120), 마켓 서버(190)를 포함할 수 있다.
제어기(110)는 하드웨어(90)를 제어할 수 있다. 하드웨어(90)는 제어기(110)로부터 제공된 제어 정보, 제어 신호에 의해 제어되는 로봇, AMR(Autonomous Mobile Robot) 등을 포함할 수 있다.
제어기(110)는 제어 프로그램 등의 소프트웨어와 해당 소프트웨어가 실행되는 처리 장치가 결합된 것일 수 있다. 일 예로, 로봇의 제어 정보를 생성하는 제어 프로그램이 실행 가능하게 탑재된 처리 장치가 제어기(110)에 해당될 수 있다.
마켓 서버(190)에는 하드웨어(90)에 특정 기능을 부여하는 기능 모듈 f(제어 모듈 f1, 프레임워크 모듈 f2 등을 포함)가 등록될 수 있다. 기능 모듈 f는 하드웨어(90)의 동작 방식 및 동작 순서 중 적어도 하나를 결정할 수 있다. 본 명세서에 기재된 '모듈'은 특정 기능을 수행하는 프로그램 자체를 의미하거나, 해당 프로그램이 탑재되고 해당 프로그램의 실행 또는 연산을 통해 특정 기능을 수행하는 프로세서, 연산기, 반도체칩 등을 의미할 수 있다. 기능 모듈 f는 소프트웨어에 의해 제어되는 로봇, AMR 등의 하드웨어(유니트, 전자 기기)에 특정 기능을 부여하는 모듈을 포함하거나 사용자에게 편의 기능을 제공하는 모듈을 포함할 수 있다.
동일한 하드웨어(90)라 하더라도 하드웨어(90)를 제어하는 제어기(110)에 따라 하드웨어(90)는 다양한 기능을 가질 수 있다.
일 예로, 제어기(110)를 통해 물건을 집어 들거나 운반하는 제어 정보가 제공되면, 하드웨어(90)에 해당되는 로봇은 물건을 운반하는 기능을 가질 수 있다. 제어기(110)를 통해 용접에 필요한 정보가 제공되면, 로봇은 물건을 용접하는 기능을 가질 수 있다. 물론, 기능에 따라 하드웨어적으로도 로봇에 설치된 그리퍼(gripper), 매니퓰레이터(manipulator) 등의 하드웨어적 엔드 이펙터가 용접기와 같은 요소로 대체되는 것이 전제될 수 있다.
마켓 서버(190)에는 로봇이 물건의 운반 기능을 갖도록 로봇을 제어하는 기능 모듈이 등록될 수 있다. 또한, 마켓 서버(190)에는 로봇이 물건을 용접하는 기능을 갖도록 로봇을 제어하는 기능 모듈이 등록될 수 있다.
이때, 기능 모듈 f는 로봇 등의 하드웨어(90)가 특정 기능(예를 들어, 운반, 용접 등)을 수행하도록 로봇을 제어하는 프로그램, 소프트웨어 등을 포함할 수 있다. 다른 관점에서 살펴보면, 기능 모듈 f는 하드웨어(90)가 특정 기능을 수행하는데 필요한 제어 정보를 생성할 수 있다.
로봇에 특정 기능을 부여하기 위해서는 로봇으로 하여금 해당 기능을 수행하도록 하는 기능 모듈을 마켓 서버(190)로부터 다운로드하고, 다운로드한 기능 모듈을 제어기(110)에 설치할 필요가 있다. 이를 위해 관리기(120)가 사용될 수 있다. 다운로드한 기능 모듈을 구성하는 화면 모듈은 관리기에 설치될 수 있다. 다운로드한 기능 모듈을 구성하는 프레임워크 모듈과 제어 모듈은 제어기에 설치될 수 있다. 제어 모듈을 통해 하드웨어가 제어될 수 있다.
관리기(120)는 제어기(110)에 기능 모듈을 설치하거나 제어기(110)에 설치된 기능 모듈을 삭제할 수 있다. 관리기(120)는 퍼스널 컴퓨터, 데스크탑 컴퓨터, 스마트폰, 태블릿 PC(Tablet PC), 하드웨어(90) 전용의 컨트롤러 등을 포함할 수 있다.
관리기(120)가 기능 모듈을 설치 또는 삭제하는 등의 기능 모듈 관리가 일견 용이한 것으로 보이지만, 현실적으로 쉽게 달성하기 어렵다는 것을 환기한다.
일반적으로, 하드웨어(90)의 제조사에서는 하드웨어(90)의 제어를 위한 기본 프로그램을 고객에게 제공할 수 있다. 그러나, 해당 기본 프로그램은 기능 모듈의 분리가 어려운 구조를 취하고 있다. 다시 말해, 기본 프로그램에는 기능 모듈 f와 같은 기능을 수행하도록 하는 프로그램 코드가 포함된 것이 분명하다. 하지만 기본 프로그램으로부터 기능 모듈을 삭제하거나 기본 프로그램에 새로운 기능 모듈을 추가하는 것은 매우 어렵다. 왜냐하면, 제조사에서 일반적으로 제공하는 기본 프로그램은 분리 가능한 기능 모듈 자체가 없는 구조, 예를 들어 특정 기능이 기본 프로그램 전체에 융합된 구조를 취하고 있기 때문이다.
따라서, 기존 하드웨어(90)의 고객은 새로운 기능이 필요한 경우, 새로운 기능을 갖는 하드웨어(90)를 새로 구입해야 하는 상황에 처할 수 있다. 또는, 고객은 하드웨어(90)의 제조사에 대하여 새로운 기능의 추가 또는 업데이트를 요청할 수 있다.
제조사 측에서 고객의 요청을 적극적으로 수용한다고 하더라도 새로운 기능의 업데이트에 많은 시간이 소요되는 문제가 있다. 왜냐하면, 새로운 기능의 추가를 위해 기능 관련 코드와 함께 로봇 OS, 런타임(runtime) 등이 포함된 기본 프로그램을 전반적으로 수정하거나 업데이트할 필요가 있기 때문이다. 로봇 OS, 런타임, 기능 관련 코드가 통합된 기본 프로그램이 하드웨어 제어에 사용되는 경우 외부의 다른 업체에서도 해당 하드웨어의 기능 확장을 할 수 있는 방법이 없다. 다른 관점에서 살펴보면, 용접 기능이 없는 로봇에 해당 기능을 추가하는 작업은 로봇의 제조사에 의해서만 수행될 수 있는 것이 현실이다.
또한, 기능 업데이트 과정에서 기본 프로그램이 전반적으로 수정되면, 새롭게 발생하는 각종 버그로 인해 소프트웨어의 에러 통제가 어려울 수 있다.
결국, 하드웨어(90)에 기존 기능과 다른 특정 기능을 새롭게 추가하는 것은 현실적으로 어렵다. 또한, 새로운 기능의 추가가 전제되는 기존 기능의 삭제 역시 현실적으로 어렵다.
각종 하드웨어(90)에 새로운 기능을 추가하기 위해 일단 기본 프로그램으로부터 기능 관련 부분, 코드를 분리시킬 필요가 있다. 해당 목적을 달성하기 위해, 본 발명의 관리 장치(100)는 새로운 구조의 기능 모듈 f를 제안한다.
일 예로, 본 발명에 기재된 기능 모듈 f는 제어 모듈 f1, 프레임워크 모듈 f2, 화면 모듈 f3 중 적어도 하나를 포함할 수 있다. 바람직하게, 기능 모듈 f는 제어 모듈 f1, 프레임워크 모듈 f2, 화면 모듈 f3를 모두 포함하는 것이 좋다. 제어 모듈 f1, 프레임워크 모듈 f2, 화면 모듈 f3는 프로그램 또는 소프트웨어의 형태를 가질 수 있다.
특정 작업을 수행하는 하드웨어(90)의 기능을 구현하기 위해, 제어 모듈 f1은 해당 작업을 수행하도록 하드웨어(90)를 제어할 수 있다. 결과적으로, 제어 모듈 f1은 하드웨어(90)의 제어 정보를 생성하거나 하드웨어(90)를 타겟으로 제어 정보를 출력할 수 있다.
화면 모듈 f3는 하드웨어(90)의 제어 동작을 표시부(125)에 시각적으로 표시할 수 있다. 고객은 표시부(125)를 통해 하드웨어(90)의 동작, 하드웨어(90)의 상태를 인지할 수 있다. 또는, 화면 모듈 f3는 고객의 제어값을 입력받고 제어 모듈에 전달할 수 있다.
프레임워크 모듈 f2는 제어 모듈 f1과 화면 모듈 f3를 연결시킬 수 있다.
프레임워크 모듈 f2는 제어 모듈 f1과 화면 모듈 f3의 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화된 형태로 제공하는 소프트웨어 환경을 포함할 수 있다. 다시 말해, 제어 모듈과 화면 모듈은 동일한 프레임워크 모듈을 이용하여 각자의 기능을 수행할 수 있다.
제어 모듈 f1과 화면 모듈 f3는 프레임워크 모듈 f2를 통해 서로 연동될 수 있다.
일 예로, 고객이 표시부(125)에 표시된 가상의 3차원 공간 상에서 로봇을 움직이면, 해당 움직임에 맞춰 실제의 로봇이 움직이는 것이 유리할 수 있다. 이때, 표시부(125) 상에서 움직인 로봇의 움직임이 실제의 로봇을 움직이는데 필요한 각종 제어값(관절의 각도 변화, 각속도 변화 등)으로 변환되어야 한다. 이때의 변환은 프레임워크 모듈에서 수행되거나, 제어 모듈에서 수행될 수 있다. 해당 변환이 제어 모듈에서 수행되는 경우, 프레임워크 모듈은 화면 모듈로부터 전달된 정보의 형식을 제어 모듈에서 요구하는 형식으로 변환하는 기능을 수행할 수 있다.
이와 반대의 동작 역시 정상적으로 수행되는 것이 좋다. 설정 작업을 수행 중인 로봇의 동작이 표시부(125)에 표시되는 가상의 3차원 공간에 실시간으로 표시되는 것이 좋을 수 있다. 이를 위해, 실제 로봇의 움직임이 가상의 3차원 공간상의 좌표값 등으로 변환될 필요가 있으며, 이때의 변환이 프레임워크 모듈 또는 제어 모듈에 의해 수행될 수 있다. 해당 변환이 제어 모듈에서 수행되는 경우, 프레임워크 모듈은 제어 모듈로부터 전달된 정보의 형식을 화면 모듈에서 요구하는 형식으로 변환하는 기능을 수행할 수 있다.
현실적으로 프레임워크 모듈은 화면 모듈과 제어 모듈에서 공통적으로 사용하는 지원 프로그램, 컴파일러, 인터프리터(interpreter) 라이브러리, 코드 라이브러리, 도구 세트 등과 같이 솔루션 개발을 가능하게 하는 여러 가지 서로 다른 컴포넌트들을 포함할 수 있다. 공통의 컴포넌트를 사용하는 화면 모듈과 제어 모듈은 서로 호환 가능한 정보를 주고받을 수 있다. 따라서, 프레임워크 모듈은 화면 모듈과 제어 모듈 간의 이종 정보를 변환하는 것으로 취급될 수 있다.
이상의 제어 모듈 f1, 프레임워크 모듈 f2, 화면 모듈 f3을 모두 포함하는 기능 모듈 f는 실행 환경에 해당되는 런타임(runtime), OS(Operating System) 등의 기본 요소를 제외하고, 로봇에 특정 기능을 부여하는 모든 요소를 가진 셈이 된다. 특정 기능의 부여는 특정 기능을 달성하는 제어 정보를 하드웨어(90)에 제공하는 것을 의미하거나, 해당 제어 정보를 출력하는 기능 모듈 f를 로봇, AMR, 매니퓰레이터 등의 하드웨어의 관리기 또는 제어기에 설치, 탑재하는 것을 의미할 수 있다.
본 발명에 따르면, 기능 모듈이 제어기(110), 관리기(120)의 OS 등의 기본 요소로부터 분리 가능한 상태가 될 수 있다. 따라서, 하드웨어(90)의 제조사로부터 하드웨어(90)의 특성 정보가 제공된다면, 하드웨어(90)의 제조사뿐만 아니라 다양한 업체에서도 기능 모듈의 제작이 가능하다.
다양한 업체에서 제작된 기능 모듈 f는 마켓 서버(190)에 등록될 수 있다.
고객은 관리기(120)의 표시부(125) 및 입력부를 이용하여 마켓 서버(190)에 접속하고, 마켓 서버(190)에서 필요한 기능을 제공하는 기능 모듈을 다운로드할 수 있다.
표시부(125)는 각종 정보가 시각적으로 표시되는 각종 디스플레이를 포함할 수 있다. 입력부는 고객의 정보를 입력받는 키보드, 마우스, 터치스크린 등을 포함할 수 있다.
관리기(120)는 기능 모듈의 분석을 통해 화면 모듈, 프레임워크 모듈, 제어 모듈을 추출할 수 있다.
관리기(120)는 추출된 화면 모듈 f3를 일단 관리기(120)에 자체 설치할 수 있다. 이를 통해 관리기(120)는 새롭게 다운로드한 기능 모듈의 모니터링 환경을 제공할 수 있다.
한편, 관리기(120)는 추출된 프레임워크 모듈 f2와 제어 모듈 f1을 제어기(110)에 전달할 수 있다. 만약, 제어기(110)에 이미 설치된 상태의 이전 프레임워크 모듈과 이전 제어 모듈이 새로운 프레임워크 모듈 f2, 새로운 제어 모듈 f1과 충돌한다면, 관리기(120)는 이전 프레임워크 모듈과 이전 제어 모듈을 제어기(110)에서 삭제하거나, 해당 삭제 작업을 제어기(110)에 요청할 수 있다. 일반적으로, 새롭게 부가되는 기능은 하드웨어적 요소와 일대일 대응되는 경우가 많으므로, 기존 기능과 충돌할 가능성이 높다. 따라서, 새로운 기능 모듈의 설치 시 기존 기능 모듈은 삭제 처리되는 것이 바람직하다. 하드웨어와 연관되지 않은 기능이 있을 수 있으므로, 새롭게 부가되는 기능이라 하더라도 하드웨어에 꼭 일대일로 대응되지 않을 수 있음을 다시 한번 환기한다.
관리기(120) 또는 제어기(110)는 관리기(120)에 의해 제어기(110)로 전달된 프레임워크 모듈 f2와 제어 모듈 f1을 제어기(110)에 설치할 수 있다.
이상의 과정을 통해, 새로운 기능을 갖는 하드웨어(90)의 작업 환경, 새로운 기능의 관점에서 해당 하드웨어(90)를 모니터링하는 작업 환경이 완비될 수 있다.
한편, 관리기(120)와 제어기(110)는 일체로 형성될 수 있다. 이 경우, 표시부(125) 및 입력부 역시 하드웨어(90)의 제어기(110)에 일체로 형성될 수 있다.
본 발명의 관리 장치(100)에 따르면, 새롭게 부여된 기능에 이상이 발생할 경우, 기능 모듈에 포함된 에러의 수정만으로 해당 문제가 해소될 수 있다. 또한, 각 업체에서는 하드웨어(90) 제어와 관련된 OS, 런타임 등이 포함된 모든 종류의 소프트웨어를 개발할 필요가 없이 기능 모듈만 개발하면 충분하다. 따라서, 각 업체는 기능 모듈의 개발에만 모든 역량을 투입할 수 있으며, 이로 인해 기능 모듈의 품질, 오류 발생률이 개선될 수 있다.
한편, 기능 모듈이 제어기의 OS, 런타임, API 등의 기본 요소로부터 분리 가능한 상태로 제작되면, 새로운 기능의 추가 및 삭제가 가능하며 다양한 업체가 기능 모듈의 제작에 참여할 수 있다.
하지만, 기본 요소로부터 분리되는 기능 모듈에서 표현하는 정보의 종류, 표현 방식이 기본 요소에서 취급하는 정보의 종류, 표현 방식과 달라질 수 있다. 이와 같은 문제를 해소하기 위해, 제어기(110)에는 해석 모듈과 변환 모듈이 추가로 탑재될 수 있다.
예를 들어, 해석 모듈은 제어 모듈로부터 다관절 로봇의 엔드 이펙터를 y축 방향으로 10cm 움직이라는 제어 정보를 입수할 수 있다.
해석 모듈은 엔드 이펙터가 y축 방향으로 10cm만큼 움직이는데 필요한 로봇 암의 회전 각도, 회전 방향 등을 산출할 수 있다. 다시 말해, 해석 모듈은 입수된 제어 정보를 실행하기 위해 필요한 구체적인 로봇의 동작 정보를 산출할 수 있다. 해석 모듈에서 산출된 회전 각도, 움직임 등의 동작 정보는 해석 모듈에 의해 '해석된 제어 정보'로 지칭될 수 있다. 해석된 제어 정보는 변환 모듈로 제공될 수 있다.
변환 모듈은 해석된 제어 정보를 각 제조사의 로봇(하드웨어)이 입력받을 수 있는 데이터 형식으로 변환하고, 해당 로봇에 제공할 수 있다. 해당 로봇은 변환 모듈(15)로부터 입력받은 데이터에 따라 로봇 암을 회전시키고, 해당 회전으로 인해 로봇 암의 단부에 설치된 엔드 이펙터는 y축 방향으로 10cm만큼 움직일 수 있다.
이상의 해석 모듈 및 변환 모듈에 따르면, 기능 모듈의 제조 업체는 엔드 이펙터를 y축 방향으로 10cm만큼 움직이기 위해 로봇 암을 어느 방향으로 어느 각도만큼 회전시켜야 하는지를 알 필요가 없다. 다만, 각 업체는 종국적인 제어 정보, 예를 들어, 엔드 이펙터를 y축 방향으로 10cm만큼 움직이라는 정보를 생성하는 제어 모듈, 이와 관련된 프레임워크 모듈, 화면 모듈을 제작하면 충분하다.
마켓 서버(190), 제어기(110), 관리기(120)에 대해 상세하게 설명한다.
도 2는 마켓 서버(190)를 나타낸 개략도이다.
마켓 서버(190)는 각 업체에서 제작한 기능 모듈을 등록하고 배포하는 관리를 수행하는 면에서 '관리 장치'로 지칭될 수 있다.
마켓 서버(190)는 등록부(191), 제공부(193), 수집부(195), 검색부(197), 평가부(198), 업데이트부(199)를 포함할 수 있다.
등록부(191)는 하드웨어(90)에 특정 기능을 부여하는 기능 모듈 f를 등록할 수 있다.
일 예로, 등록부(191)는 마켓 서버(190)에 로그인한 업체가 기능 모듈 f를 등록할 수 있는 권한을 갖는 사용자인지 확인할 수 있다.
업체의 무결성이 입증되면, 등록부(191)는 업체에게 등록부(191)에 기능 모듈 f를 등록할 수 있는 권한을 제공할 수 있다.
업체는 하드웨어(90)의 제조사에게 공개한 하드웨어(90)의 특성 정보, 해당 제조사에서 제공한 OS, 런타임(runtime) 모듈, API(Application Program Interface) 등을 배경으로 기능 모듈을 제작할 수 있다. 또는, 업체는 하드웨어(90)의 제조자가 제시한 가이드라인에 따라 기능 모듈을 제작할 수 있다. 예를 들어, 업체는 제어 모듈 f1, 프레임워크 모듈 f2, 화면 모듈 f3을 갖는 기능 모듈 f를 제작할 수 있다.
해당 기능 모듈 f는 등록부(191)에 의해 등록되고 하드웨어(90)의 고객에게 공개될 수 있다.
제공부(193)는 기등록된 기능 모듈의 모듈 정보를 관리기(120)에 제공할 수 있다.
등록부(191)에는 복수의 기능 모듈이 등록될 수 있다. 고객은 등록부(191)에 등록된 복수의 기능 모듈 중에서 자신이 원하는 기능을 제공하는 기능 모듈을 취사 선택할 필요가 있다.
제공부(193)는 기능 모듈 자체를 관리기(120)에 제공하는 대신, 고객의 취사 선택이 가능하도록 기능 모듈의 정보에 해당하는 모듈 정보를 관리기(120)에 제공할 수 있다.
모듈 정보는 기능 모듈의 식별 정보, 기능 모듈이 지원하는 하드웨어(90)의 식별 정보, 기능 모듈이 제공하는 기능의 정보, 기능 모듈이 적용 가능한 작업의 정보 중 적어도 하나를 포함할 수 있다.
도 3은 관리기(120)에 표시되는 표시 메뉴를 나타낸 개략도이다.
제공부(193)는 모듈 정보를 다양한 표시 형식으로 제공할 수 있다.
일 예로, 제공부(193)는 모듈 정보가 타일드(tiled) 메뉴 구조로 표시되는 표시 메뉴 tm을 관리기(120)에 제공할 수 있다. 관리는 표시부(125)를 통해 표시 메뉴 tm을 표시할 수 있다.
제공부(193)는 상기 타일드 메뉴를 형성하는 특정 타일이 선택되면 선택된 특정 타일에 배치된 특정 기능 모듈의 기능 분류 결과(기능 모듈이 제공하는 기능의 정보 분류) 및 상세 정보 중 적어도 하나를 관리기(120)에 추가로 제공할 수 있다. 상세 정보는 기능 모듈이 적용 가능한 작업의 정보, 기능 모듈의 세부 작동 방법, 작동 순서 등을 포함할 수 있다.
도 3의 표시 메뉴 tm에는 고객의 검색 결과로서, 7개의 기능 모듈이 표시되고 있다. 7개의 기능 모듈 각각은 썸네일을 가지며 해당 썸네일은 사각형 등 폐곡선 형상의 타일을 포함할 수 있다.
표시 메뉴 tm을 통해 표시되는 7개의 타일 t1, t2, t3, t4, t5, t6, t7 중에서 고객이 제1 타일 t1을 선택하면, 제1 타일 t1의 상세 정보가 표시 메뉴 tm에 표시될 수 있다. 표시 메뉴 tm에는 고객에 의해 선택된 타일이 나타내는 기능 모듈의 상세 정보가 표시되는 상세 메뉴 it가 마련될 수 있다.
수집부(195)는 관리기(120)에 설치된 제2 확장 API(26)(Application Programming Interface)의 정보를 수집할 수 있다.
API는 운영체제(OS)와 응용프로그램 사이의 통신에 사용되는 언어나 메시지 형식을 말한다. API는 프로그램 내에서 실행을 위해 특정 서브루틴에 연결을 제공하는 함수를 호출하는 것으로 구현된다. 그러므로 하나의 API는 함수의 호출에 의해 요청되는 작업을 수행하기 위해 이미 존재하거나 또는 연결되어야 하는 몇 개의 프로그램 모듈이나 루틴을 가질 수 있다.
확장 API는 기본적으로 탑재된 API에 부족한 요소가 추가된 것일 수 있다. 확장 API는 기능 모듈을 제조하는 업체 또는 하드웨어(90)의 제조사에 의해 제작될 수 있다.
검색부(197)는 제2 확장 API(26)를 사용하는 제2 동적 라이브러리(20)를 갖는 제2 기능 모듈을 기등록된 복수의 기능 모듈 중에서 검색할 수 있다.
동적 라이브러리(Dynamic Linking Library)는 운영 체제 본래의 기능으로 소프트웨어의 루틴(컴퓨터가 특정한 기능을 수행할 수 있도록 마련된 일련의 명령군)을 몇 개의 파일로 나누어 디스크에 두고 필요한 것 만을 실행 메모리에 실어서 사용하기 위한 파일일 수 있다.
기능 모듈의 정상 동작을 위해 플랫폼(API, 런타임, 라이브러리)에서 제공하는 것 외의 기능이 필요할 수 있다. 동적 라이브러리와 확장 API를 통해서 기능 모듈이 필요로 하는 소프트웨어적 기능이 제공될 수 있다.
예를 들어, 후술될 변환 모듈(15)의 경우, 변환 동적 라이브러리인 ROS 패키지(package)가 필요하다.
변환 동적 라이브러리는 확장 API를 통해서 변환 모듈(15)이 해석 모듈(13)에서 해석한 제어 연산 내용을 타사의 하드웨어(90) 명령어로 변환할 수 있다. 이를 통해 제조사의 구분없이 다양한 하드웨어(90)가 제어될 수 있다.
제공부(193)는 검색부(197)에 의해 검색된 제2 기능 모듈의 목록을 관리기(120)에 제공할 수 있다.
검색부(197) 및 제공부(193)에 따르면, 제2 확장 API(26)를 사용하는 제2 동적 라이브러리(20)를 갖는 제2 기능 모듈이 검색되고, 검색 결과가 관리기(120)를 통해 고객에게 제공될 수 있다.
본 실시예에 따르면, 복수의 기능 모듈 중에서 적어도 관리기(120)에서 실행 가능한 기능 모듈의 목록이 고객에게 제공될 수 있다.
기능 모듈은 관리기(120)뿐만 아니라 제어기(110)에서도 실행 가능한 것으로 선별 제공되는 것이 좋다.
이를 위해 수집부(195)는 관리기(120)에 의해 관리되는 제어기(110)에 설치된 제1 확장 API(16)(Application Programming Interface)의 정보를 수집할 수 있다. 수집된 제1 확장 API(16)의 정보는 해당 제1 확장 API(16)를 이용하여 실행 가능한 기능 모듈을 찾는데 사용될 수 있다.
구체적으로, 검색부(197)는 제1 확장 API(16)를 사용하는 제1 동적 라이브러리(10)를 갖는 제1 기능 모듈을 기등록된 복수의 기능 모듈 중에서 검색할 수 있다.
제공부(193)는 검색부(197)에 의해 검색된 제1 기능 모듈의 목록을 관리기(120)에 제공할 수 있다.
검색부(197) 및 제공부(193)에 따르면, 제1 확장 API(16)를 사용하는 제1 동적 라이브러리(10)를 갖는 제1 기능 모듈이 검색되고, 검색 결과가 관리기(120)를 통해 고객에게 제공될 수 있다. 제1 기능 모듈은 적어도 제어기(110)에서 실행 가능한 기능 모듈에 해당될 수 있다.
기능 모듈의 구성 요소는 제어기(110)에 설치되는 제어 모듈과 프레임워크 모듈, 관리기(120)에 설치되는 화면 모듈이 한 세트로 구성될 수 있다. 따라서, 기능 모듈이 정상적으로 동작하기 위해서는 대부분의 경우 제1 기능 모듈과 제2 기능 모듈의 요건을 모두 만족할 필요가 있다. 다시 말해, 기능 모듈은 제1 동적 라이브러리(10)와 제2 동적 라이브러리(20)를 함께 갖는 것이 좋다.
마켓 서버(190)에 등록된 복수의 기능 모듈의 성능, 신뢰도, 편의성, 버그(bug) 등을 고객이 일일이 실험해보기는 어렵다. 이러한 현실을 고려하여 평가부(198)가 이용될 수 있다.
평가부(198)는 기능 모듈을 대상으로 하는 고객의 평가 점수, 다운로드 횟수, 공정 편의성 중 적어도 하나를 이용하여 기능 모듈에 점수를 부여할 수 있다.
제공부(193)는 제어기(110)에 제공되는 모듈 정보가 복수이면, 각 기능 모듈에 부여된 점수에 따라 우선 순위를 결정할 수 있다.
제공부(193)는 우선 순위에 따라 순서대로 정렬된 복수의 모듈 정보를 관리기(120)에 제공할 수 있다.
본 실시예에 따르면, 고객은 다른 고객이 만족하게 사용한 기능 모듈의 순위별 정보를 받아볼 수 있다.
수집부(195)는 관리기(120)에 기설치된 특정 기능 모듈의 설치 정보를 수집할 수 있다.
이때, 업데이트부(199)는 설치 정보와 기등록된 기능 모듈의 모듈 정보 간의 비교를 통해 해당 특정 기능 모듈의 업데이트를 수행할 수 있다.
도 4는 제어기(110)를 나타낸 개략도이다.
제어기(110)는 기능 모듈을 설치하고, 설치된 기능 모듈을 삭제하는 면에서 기능 모듈에 대한 관리를 수행하는 '관리 장치'로 지칭될 수 있다.
제어기(110)는 제1 실행부(111) 및 제2 관리부(123)를 포함할 수 있다.
제1 실행부(111)에는 하드웨어(90)에 특정 기능을 부여하는 기능 모듈이 탑재될 수 있다. 제1 실행부(111)는 기능 모듈의 실행에 의해 하드웨어(90)를 제어할 수 있다. 제1 실행부(111)는 기능 모듈이 탑재되고 실행되는 각종 프로세서를 포함할 수 있다.
제1 관리부(113)는 제1 실행부(111)에 탑재된 기능 모듈 중에서 변동 가능한 변동 모듈을 관리할 수 있다. 제1 관리부(113)는 제1 실행부(111)와 별개로 형성될 수 있다. 또는 제1 관리부(113)는 제1 실행부(111)에 탑재되고 실행되는 기능 모듈 중 하나에 해당될 수 있다.
제1 실행부(111)에 탑재되는 기능 모듈은 변동 모듈 b1, 제1 실행부(111)에 고정 탑재되는 고정 모듈 a1으로 구분될 수 있다.
제1 관리부(113)는 고정 모듈 a1을 그대로 둔 상태에서 변동 모듈 b1을 추가하거나 삭제할 수 있다. 고정 모듈 a1은 변동 모듈 b1이 제어기에 추가되거나 삭제될 때, 제어기에 그대로 남아서 동작하는 모듈을 포함할 수 있다. 이때, 고정 모듈 a1의 업데이트는 가능한 점을 환기한다.
이때, 고정 모듈 a1은 관리기(120) 또는 마켓 서버(190)와 통신하는 제1 통신 모듈(11), 제어 모듈에서 생성된 하드웨어(90)의 제어 정보를 해석하는 해석 모듈(13), 해석 모듈(13)에 의해 해석된 제어 정보를 하드웨어(90)에 호환되게 변환하는 변환 모듈(15) 중 적어도 하나를 포함할 수 있다.
변동 모듈 b1은 제어 정보를 생성하는 제어 모듈 f1, 프레임워크 모듈 f2 중 적어도 하나를 포함할 수 있다. 프레임워크 모듈 f2는 도 3의 표시 메뉴 tm과 같은 유저 인터페이스가 포함된 화면 모듈 f3와 제어 모듈 f1을 연결하거나 연동시킬 수 있다.
제1 통신 모듈(11)은 관리기(120) 또는 마켓 서버(190)와 통신할 수 있다. 제1 실행부(111)에는 관리기(120) 또는 마켓 서버(190)와 유무선을 통신하는 통신 장치가 마련될 수 있다. 이때, 제1 통신 모듈(11)은 통신 장치에서 요구하는 통신 형식에 맞춰 각종 정보를 변환하거나 통신 장치를 제어할 수 있다.
제1 통신 모듈(11)은 관리기(120)로부터 수신되거나 마켓 서버(190)로부터 직접 입수한 제어 모듈 f1 또는 프레임워크 모듈 f2를 제1 관리부(113)에 전달할 수 있다. 이때, 제1 관리부(113)는 제어 모듈 f1 또는 프레임워크 모듈 f2를 제1 실행부(111)에 설치할 수 있다. 필요에 따라, 제1 관리부(113)는 해당 제어 모듈 또는 프레임워크 모듈의 설치 전에 기설치된 제어 모듈, 프레임워크 모듈을 삭제할 수 있다.
제1 통신 모듈(11)은 관리기(120)로부터 수신된 제어 명령을 기설치된 제어 모듈에 전달할 수 있다. 제어 모듈은 제어 명령에 따라 하드웨어(90)를 제어하는 제어 정보, 제어 신호를 생성할 수 있다. 해당 제어 정보는 앞에서 설명된 해석 모듈(13)로 전달될 수 있다.
해석 모듈(13)은 하드웨어(90)의 제어 정보를 해석하거나 연산할 수 있다. 제어 모듈에서 생성된 제어 정보는 각 업체에서 지정한 것으로 하드웨어(90)의 제조사에서 요구하는 정보와 차이가 있을 수 있다. 예를 들어, 제어 모듈에서 생성된 제어 정보는 로봇의 엔드 이펙터를 설정 방향을 따라 설정 거리만큼 움직이는 것일 수 있다. 이때의 제어 정보가 현실의 로봇에 적용되기 위해서는 해당 동작을 완료하기 위한 각 관절의 움직임이 정의되어야 한다. 이때, 설정 방향을 따라 엔드 이펙터를 설정 거리만큼 움직이라는 제어 정보는 해석 모듈(13)에 의해 엔드 이펙터가 설치된 관절을 설정 각도만큼 회전시키라는 로봇 친화적이고 현실적인 정보로 해석될 수 있다.
해석 모듈(13)은 현실적으로 하드웨어(90)를 설계한 제조사에 의해 제공되는 것이 가장 좋다. 따라서, 해석 모듈(13)은 업체에 의해 변경할 수 없는 고정 모듈 a1의 지위를 갖는 것이 바람직하다.
변환 모듈(15)은 해석 모듈(13)에 의해 해석된 제어 정보를 하드웨어(90)에 호환되게 변환할 수 있다. 예를 들어, 엔드 이펙터가 설치된 관절을 설정 각도만큼 회전시키라는 제어 정보는 각 제조사의 하드웨어(90)에 따른 다른 형식으로 표현될 수 있다.
만약, 제1 하드웨어(90)에 해당 제어 정보를 전달할 경우, 해당 제어 정보는 제1 하드웨어(90)가 지원하는 제1 형식으로 변환되어야 한다. 마찬가지로, 제2 하드웨어(90)에 해당 제어 정보를 전달할 경우, 해당 제어 정보는 제2 하드웨어(90)가 지원하는 제2 형식으로 변환되어야 한다. 이상의 형식 변환은 변환 모듈(15)에 의해 수행될 수 있다. 이때, 변환 모듈(15)은 앞에서 설명된 '변환 동적 라이브러리'를 이용할 수 있다.
결과적으로, 변환 모듈(15)은 해석 모듈(13)의 제어 연산 결과를 타사 프로그램으로 변환하고 타사의 하드웨어(90)를 제어하는 환경을 제공할 수 있다.
해석 모듈(13) 및 변환 모듈(15)에 따르면, 하드웨어(90)의 제조사가 아닌 다른 업체에서 제작한 제어 모듈이 정상적으로 해당 하드웨어(90)의 제어에 사용될 수 있다. 또는, 해당 하드웨어(90)가 다른 제조사의 것으로 변경되어도 별다른 문제없이 기존의 제어 정보를 사용하여 타 제조사의 하드웨어(90)를 제어하는 환경이 제공될 수 있다.
제1 관리부(113)는 제1 통신 모듈(11), 해석 모듈(13) 및 변환 모듈(15)을 그대로 둔 상태에서 제1 실행부(111)에 다른 기능 모듈을 추가하거나 제1 실행부(111)에 탑재된 다른 기능 모듈을 삭제할 수 있다. 다른 관점에서 살펴보면, 제2 관리부(123)는 제1 통신 모듈(11), 해석 모듈(13), 변환 모듈(15)이 포함된 고정 모듈 a1을 삭제할 수 있는 권한을 갖지 못하는 것으로 해석될 수도 있다.
도 5는 제어기(110)에 탑재된 소프트웨어 구조를 나타낸 개략도이다.
제1 실행부(111)에는 제1 OS(Operating System, 오퍼레이팅 시스템)(17), 로봇 OS(Operating System, 오퍼레이팅 시스템), 제1 OS(17) 또는 로봇 OS에 실시간성을 제공하는 리얼타임 OS(RTOS(19), Real Time Operating System) 중 적어도 하나가 추가로 탑재될 수 있다.
제1 실행부(111)에는 기능 모듈의 실행 환경에 해당하는 제1 런타임(runtime) 모듈, 기능 모듈과 제1 런타임 모듈(12)을 연결하는 제1 API(Application Program Interface)(14) 중 적어도 하나가 추가로 탑재될 수 있다.
이상의 제1 OS(17), 로봇 OS, 리얼타임 OS, 제1 런타임 모듈(12), 제1 API(14)는 일종의 고정 모듈에 해당될 수 있다.
제1 실행부(111)에는 제1 통신 모듈(11), 해석 모듈(13), 변환 모듈(15), 제어 모듈 f1, 프레임워크 모듈 f2, 제1 런타임 모듈(12), 제1 API(14), 제1 확장 API(16), 제1 동적 라이브러리(10)가 탑재될 수 있다. 제어 모듈 f1과 프레임워크 모듈 f2는 제1 확장 API(16) 및 제2 동적 라이브러리(20)를 포함하거나, 제1 확장 API(16) 및 제2 동적 라이브러리(20)와 별개로 형성될 수 있다.
제1 관리부(113)는 제어 모듈 f1 및 프레임워크 모듈 f2와 구분되는 제1 확장 API(16) 또는 제1 동적 라이브러리(10)를 제1 실행부(111)에 추가하거나 제1 실행부(111)에서 삭제할 수 있다.
제1 런타임 모듈(12)은 기능 모듈 f(구체적으로, 기능 모듈 f를 구성하는 프레임워크 모듈 f2, 제어 모듈 f1)의 실행 환경을 제공할 수 있다. 제1 API(14)는 기능 모듈 f(구체적으로, 기능 모듈 f를 구성하는 프레임워크 모듈 f2, 제어 모듈 f1)와 제1 런타임 모듈(12)을 연결하거나 연동시킬 수 있다.
제1 동적 라이브러리(10)는 하드웨어(90)의 제조사에서 하드웨어(90)의 제어를 목적으로 제작한 것일 수 있다. 제1 확장 API(16)는 제1 동적 라이브러리(10)와 제1 런타임 모듈(12)을 연결하거나 연동시킬 수 있다.
제어 모듈 f1에는 하드웨어(90)가 특정 기능을 갖도록 하드웨어(90)를 제어하는 제어 정보가 포함될 수 있다. 프레임워크 모듈 f2에는 화면 모듈과 제어 모듈을 연동시키는 정보가 포함될 수 있다. 이때, 제1 관리부(113)는 화면 모듈 f3, 프레임워크 모듈 f2, 제어 모듈 f1 중에서 프레임워크 모듈 f2와 제어 모듈 f1을 제1 실행부(111)에 탑재할 수 있다.
제1 통신 모듈(11)은 관리기(120)로부터 제어 모듈 f1, 프레임워크 모듈 f2를 수신할 수 있다. 제1 관리부(113)는 제1 통신 모듈(11)을 통해 수신된 제어 모듈 f1과 프레임워크 모듈 f2를 제1 실행부(111)에 설치할 수 있다.
도 6은 관리기(120)를 나타낸 개략도이다. 도 7은 관리기(120)에 탑재된 소프트웨어 구조를 나타낸 개략도이다.
관리기(120)는 기능 모듈에 포함된 세부 모듈을 구분해서 추출하고, 일부는 설치하고 다른 일부는 제어기(110)에 전달하는 관리를 수행하는 면에서 '관리 장치'로 지칭되어도 무방하다.
관리기(120)는 제2 실행부(121), 제2 관리부(123), 표시부(125)를 포함할 수 있다.
제2 관리부(123)는 하드웨어(90)에 특정 기능을 부여하는 기능 모듈 f를 획득할 수 있다.
제2 관리부(123)는 마켓 서버(190)로부터 다운로드한 기능 모듈 f에 포함된 화면 모듈 f3, 프레임워크 모듈 f2, 제어 모듈 f1을 구분할 수 있다.
제2 실행부(121)는 기능 모듈 f 중에서 특정 기능을 나타내는 유저 인터페이스를 표시할 수 있다.
제2 실행부(121)에는 제1 통신 모듈(11)과 통신하는 제2 통신 모듈(21), 제2 관리부(123)에 의해 추출된 화면 모듈 f3가 탑재될 수 있다. 기탑재된 제2 통신 모듈(21)을 통해 관리기(120)는 제어기(110)와 통신할 수 있다. 제2 통신 모듈(21)은 하드웨어(90)와 유저 인터페이스 간의 연동 정보를 제어기(110)와 주고받을 수 있다.
제2 관리부(123)는 제2 통신 모듈(21)을 통해 제어 모듈 f1 및 프레임워크 모델 f2를 제1 관리부(113)에 전달할 수 있다.
제1 관리부(113)는 제2 관리부(123)로부터 전달받은 제어 모듈 f1 및 프레임워크 모델 f2를 제1 실행부(111)에 설치할 수 있다.
화면 모듈 f3는 프레임워크 모듈 f2에 의해 제어 모듈 f1과 연동되는 유저 인터페이스를 관리기(120)의 표시부(125)에 표시할 수 있다. 이에 따라, 디스플레이 등의 표시부(125)에는 유저 인터페이스 UI가 표시될 수 있다.
제1 통신 모듈(11)과 제2 통신 모듈(21)은 유저 인터페이스와 제어 모듈 f1 간의 연동 정보를 주고받을 수 있다.
한편, 제1 통신 모듈(11)과 제2 통신 모듈(21)은 일체로 형성될 수 있다. 또한, 제1 실행부(111)와 제2 실행부(121)가 일체로 형성될 수 있다. 제1 관리부(113)와 제2 관리부(123)가 일체로 형성될 수 있다.
제2 실행부(121)에는 제2 OS(Operating System, 오퍼레이팅 시스템)(27)(예를 들어, iOS, windows, MacOS 등), 기능 모듈 f의 실행 환경에 해당하는 제2 런타임(runtime) 모듈, 기능 모듈 f와 제2 런타임 모듈(22)을 연결하는 제2 API(Application Program Interface)(24)가 탑재될 수 있다.
제2 관리부(123)는 유저 인터페이스를 제공하는 화면 모듈 f3를 기능 모듈 f에서 추출할 수 있다.
제2 관리부(123)는 제2 OS(27), 제2 런타임 모듈(22) 및 제2 API(24)를 그대로 둔 상태에서, 화면 모듈 f3를 제2 실행부(121)에 설치하거나 제2 실행부(121)에서 삭제할 수 있다. 이때, 제2 OS(27), 제2 런타임 모듈(22), 제2 API(24)는 일종의 고정 모듈 a2에 해당될 수 있다. 반면, 화면 모듈 f3는 변동 모듈 b2에 해당될 수 있다.
제2 관리부(123)는 기능 모듈 f를 제1 모듈과 제2 모듈로 구분할 수 있다.
제2 모듈은 유저 인터페이스가 포함된 화면 모듈 f3, 하드웨어(90)의 시뮬레이션 환경을 생성하는 시뮬레이션 모듈 g1, 화면 모듈 f3와 시뮬레이션 모듈 g1을 연결하는 메타 모듈 g2, 하드웨어(90)의 티칭(teaching) 정보를 생성하는 티칭 모듈 g3, 증강 현실을 제공하는 공간 정합 모듈 g4 중 적어도 하나를 포함할 수 있다. 시뮬레이션 모듈 g1, 메타 모듈 g2, 티칭 모듈 g3, 공간 정합 모듈 g4는 변동 모듈 b2에 해당될 수 있다.
제1 모듈은 하드웨어(90)가 특정 기능을 갖도록 하드웨어(90)를 제어하는 제어 정보를 처리하는 제어 모듈 f1, 화면 모듈 f3와 제어 모듈 f1을 연동시키는 정보가 포함된 프레임워크 모듈 f2 중 적어도 하나를 포함할 수 있다.
제2 관리부(123)는 하드웨어(90)의 제어기(110)에 제1 모듈을 제공할 수 있다.
제2 관리부(123)는 제2 실행부(121)에 제2 모듈을 설치하거나 제2 실행부(121)에 설치된 제2 모듈을 삭제할 수 있다. 다시 말해, 제2 관리부(123)는 기능 모듈에 포함된 요소를 제어기(110)로 제공될 제1 모듈, 관리기(120)에 설치될 제2 모듈로 구분할 수 있다.
제2 관리부(123)의 동작을 다시 한번 설명하면, 제2 관리부(123)는 기능 모듈 f에서 유저 인터페이스를 갖는 화면 모듈 f3를 추출할 수 있다.
제2 관리부(123)는 제2 실행부(121)에 화면 모듈 f3를 설치할 수 있다.
제2 실행부(121)는 제2 관리부(123)에 의해 설치 탑재된 화면 모듈 f3의 실행을 통해 표시부(125)에 유저 인터페이스 UI를 표시할 수 있다.
제2 실행부(121)에는 제2 통신 모듈(21), 화면 모듈 f3, 제2 런타임(runtime) 모듈, 제2 API(Application Program Interface)(24), 제2 확장 API(26), 제2 동적 라이브러리(20)가 탑재될 수 있다. 화면 모듈 f3는 제2 확장 API(26), 제2 동적 라이브러리(20)를 포함하거나, 제2 확장 API(26), 제2 동적 라이브러리(20)와 별개로 형성될 수 있다.
제2 관리부(123)는 화면 모듈 f3와 구분되는 제2 확장 API(26) 또는 제2 동적 라이브러리(20)를 제2 실행부(121)에 추가하거나 제2 실행부(121)에서 삭제할 수 있다.
제2 통신 모듈(21)은 제어기(110) 또는 마켓 서버(190)와 유무선으로 통신할 수 있다.
화면 모듈 f3는 제2 실행부(121)에 의해 실행되면, 유저 인터페이스를 표시부(125)에 표시할 수 있다.
제2 런타임 모듈(22)은 기능 모듈 f(구체적으로, 기능 모듈 f를 구성하는 화면 모듈 f3)의 실행 환경을 제공할 수 있다. 런타임(runtime) 모듈은 프로그램을 관리하기 위해 특정한 컴파일러나 가상머신이 사용하는 기본 코드의 라이브러리나 프로그램을 가리킬 수 있다.
제2 API(24)는 기능 모듈 f와 제2 런타임 모듈(22)을 연결할 수 있다.
제2 동적 라이브러리(20)는 하드웨어(90)의 제조사에서 하드웨어(90)의 제어를 목적으로 제작한 프로그램일 수 있다.
제2 확장 API(26)는 제2 동적 라이브러리(20)와 제2 런타임 모듈(22)을 연결할 수 있다.
도 8은 표시부(125)를 통해 표시되는 유저 인페이스의 일 예를 나타낸 개략도이다.
일 예로, 도 3의 표시 메뉴 tm은 'Jog+'라는 기능 모듈 f를 선택한 화면을 나타낼 수 있다.
해당 Jog+ 모듈은 고객이 팝업 화면을 이용하여 편리하게 로봇을 움직일 수 있는 조깅 기능을 제공할 수 있다. 관리기(120)를 통해 마켓 서버(190)에 접속한 고객은 마켓 서버(190)에서 제공하는 타일드 메뉴에서 Jog+ 모듈을 선택하고 인스톨할 수 있다.
인스톨이 실행되면, Jog+ 모듈에 포함된 화면 모듈은 관리기(120)에서 제2 관리부(123)를 통해 관리기(120)에 설치될 수 있다. Jog+ 모듈에 포함된 프레임워크 모듈과 제어 모듈은 제2 통신 모듈(21)을 통해 제어기(110)로 전송되고, 제어기(110)의 제1 관리부(113)를 통해 제어기(110)에 설치될 수 있다. 설치가 완료되면, 표시부(125)의 표시 메뉴에 해당하는 유저 인터페이스에는 'Jog+'의 이름을 갖는 아이콘이 새롭게 표시될 수 있다.
고객이 관리기(120)의 표시부(125)를 통해 표시된 'Jog+'을 선택 실행하면, 도 8과 같이 로봇을 제어할 수 있는 메뉴가 포함된 유저 인터페이스 UI가 표시부(125)에 표시될 수 있다.
해당 UI에 포함된 '+', '-' 등의 선택을 통해 로봇을 구성하는 로봇 암(arm)의 관절의 각도가 조절될 수 있다. '+' 등의 제어 아이콘의 선택 정보는 제2 통신 모듈(21)을 통해 제어기(110)에 설치된 프레임워크 모듈 f2와 제어 모듈 f1과 연동될 수 있다. 해당 제어 모듈 f1을 통해 실제의 로봇을 타겟으로 하는 제어 정보가 생성될 수 있다. 해당 제어 정보는 해석 모듈(13)을 통해 해석되고 변환 모듈(15)을 통해 변환되어 로봇에 제공될 수 있다. 변환 모듈(15)을 통해 변환된 제어 정보를 수신한 실제의 로봇은 해당 제어 정보에 따라 움직일 수 있다.
도 9는 본 발명의 관리 장치(100)의 동작을 나타낸 개략도이다. 도 10은 본 발명의 관리 장치(100)가 적용된 환경에서, 하드웨어(90)의 제조사와 기능 모듈의 제작 업체 간의 업무 영역을 나타낸 개략도이다.
이상에서 살펴본 관리 장치(100)는 하드웨어(90) 제어용의 유저 인터페이스가 표시되는 관리기(120)를 포함할 수 있다.
관리기(120)는 마켓 서버(190)로부터 획득된 기능 모듈 f에서 화면 모듈 f3, 제어 모듈 f1을 추출할 수 있다.
관리기(120)는 자체적으로 구비된 제2 API(24)를 그대로 둔 상태에서 제2 API(24) 상에 화면 모듈 f3를 탑재할 수 있다. 이상의 제2 API(24)는 기능 모듈의 추가, 삭제와 상관없이 고정적으로 유지되는 고정 모듈 a에 해당될 수 있다.
관리기(120)는 하드웨어(90)의 제어기(110)에 기설치된 제1 API(14) 상에 탑재될 제어 모듈 f1을 제어기(110)로 전송할 수 있다.
이상의 관리기(120)에 따르면, 제어 모듈 f1, 프레임워크 모듈 f2, 화면 모듈 f3를 갖는 기능 모듈 f이 관리기(120) 또는 제어기(110)를 대상으로 추가 또는 삭제되는 환경이 마련될 수 있다. 화면 모듈, 프레임워크 모듈, 제어 모듈은 새로운 기능의 부여시 추가, 삭제되는 변동 모듈 b에 해당될 수 있다.
고정 모듈 a는 제어기(110)에 설치되는 것(a1)과 관리기(120)에 설치되는 것(a2)으로 구분될 수 있다. 변동 모듈 b는 제어기(110)에 설치되는 것(b1)과 관리기(120)에 설치되는 것(b2)으로 구분될 수 있다.
로봇의 제조사에 해당하는 '로보틱스'에서 주변기기, 기능 확장 개발 환경(Platform & SDK)을 제공하면, 각종 주변기기 업체는 '로보틱스'에서 제조된 로봇에 새로운 기능을 부여하는 기능 모듈을 개발하고 검증할 수 있다.
'로보틱스'는 각 업체가 개발한 인터페이스(Interface) 기능 UI, 기능 모듈 등을 재검증하고 검증 결과에 문제가 없는 기능 모듈을 인증할 수 있다. 또한, '로보틱스'는 인증된 기능 모듈을 제공한 업체와 협력 관계를 맺을 수 있다(mate 등록).
각 업체는 필드 클레임(Field Claim), 요구 사항과 같은 현장의 이슈에 대응할 수 있다.
이상의 업무 영역을 살펴보면 하드웨어(90)의 제조사는 기능 모듈의 개발 및 검증, 대응을 주변기기 업체, 소프트웨어 업체 등에 일임하는 셈이 될 수 있다. 그 결과, 하드웨어(90)의 제조사는 각종 하드웨어(90)의 개발에 보다 더 집중할 수 있다. 또한, 각 업체는 하드웨어(90)의 개발은 배제하고 자신들이 개발한 기능 모듈의 개선 및 업데이트에만 집중할 수 있다.
도 11은 비교 실시예의 동작을 나타낸 개략도이다. 도 12는 비교 실시예의 환경에서 하드웨어(90) 제조사의 업무 영역을 나타낸 개략도이다. 도 13은 비교 실시예의 소프트웨어 구조를 나타낸 개략도이다.
비교 실시예의 경우, 기본 프로그램과 분리되고, 화면 모듈, 프레임워크 모듈, 제어 모듈이 포함된 기능 모듈 자체가 없으므로 관리 장치(100)의 형성 자체가 불가능하다.
비교 실시예의 경우, 화면 모듈, 프레임워크 모듈, 제어 모듈이 포함된 기능 모듈이라는 개념이 없이, 제조사에서 제공되는 로봇 OS, 런타임 모듈, API에 특정 기능이 융합된 한 덩어리 상태의 기본 프로그램이 하드웨어(90)의 제어 수단(101)에 탑재될 수 있다. 그 결과, 새로운 기능이 추가될 경우, 로봇 OS, 런타임 모듈, API까지 수정되는 작업이 요구된다. 또한, 디스플레이가 마련된 관리 수단(102) 역시 윈도우즈 등의 OS와 자바 가상 머신, 특정 기능이 한 덩어리로 융합된 형태로 구성될 수 있다.
따라서, 로봇에 설치된 기본 프로그램에서 기능 부분만을 추가 삭제할 수 없으므로, 보안, 안정성과 관련된 기본 프로그램의 코드를 알 수 없는 타 업체에서는 기능 모듈의 개발 자체가 불가능하다. 결국, 새로운 기능의 추가는 전적으로 하드웨어(90)의 제조사가 전담해야 하며, 이는 하드웨어(90)의 개발 외에 새로운 기능의 개발에도 자원이 분산되는 것을 의미할 수 있다.
다시 말해, 하드웨어(90)의 제조사에 해당하는 '로보틱스'는 다양한 주변기기, 기능 요구 사항을 파악하고, 해당 주변 기기/요구 사항에 부합되는 기능의 개발 필요성을 검토해야 한다. 또한, 개발 필요성이 인정될 경우, 인터페이스/기능 UI를 직접 개발하고 검증해야 한다. 검증까지 완료된 기능 모듈은 다시 검증되고 인증될 수 있다. 또한, '로보틱스'는 현장의 각종 이슈에 대해서도 직접 대응해야 한다. 결국, 비교 실시예에 따르면, '로보틱스'는 새로운 기능의 추가와 관련하여 사전 조사, 고객 응대, 개발, 검증, 보완 등의 모든 절차를 직접 수행해야 한다. 이로 인해 '로보틱스'는 새로운 기능의 추가를 위해 많은 자원을 소모해야 하며, 새로운 기능 추가에 장기간이 요구된다. 또한, 기능 추가 과정에서 기본 프로그램 전반에 대한 수정이 요구되며, 이에 따라 에러가 산발적으로 발생될 가능성 역시 증가된다. 따라서, 이들 에러의 감지 및 해소에도 많은 시간이 요구된다.
고객의 경우, 기능 추가에 장기간이 걸리므로 시간적 불편함을 감수해야 하며 나아가 새로운 기능 추가로 인해 유발되는 각종 에러로 인해 '로보틱스'에 대한 신뢰도가 저하될 수 있다.
비교 실시예의 기본 프로그램은 상위 제어기(화면 기능 담당)와 하위 제어기(프레임워크, 제어 기능 담당) 두 개의 소프트웨어 프로세스로 구성된다.
기본 프로그램은 상위 제어기(리눅스용)인 '상위제어기(1)'과 하위 제어기의 제1 형태, 혹은 상위 제어기(마이크로소프트사에서 제공하는 윈도우즈용)인 '상위제어기(2)'와 하위 제어기의 제2 형태로 구분되어 고객에게 제공된다.
상위 제어기는 자바 애플리케이션(JAVA App)으로 JVM(Java Virtual Machine, 자바 가상 머신)에서 구동되며, 하위 제어기는 실시간성을 위해 RTOS(19)(Real Time Operating System)에서 구동된다. 제어 라이브러리는 하위 제어기 빌드 시에 포함되도록 정적 라이브러리로 구성되어 있다.
비교 실시예의 경우, 기능이 추가, 변경되는 경우에 상위 제어기만 변경되는 경우(삼각형), 하위 제어기만 변경되는 경우(사각형), 제어 라이브러리만 변경되는 경우(동그라미)로 구분될 수 있다. 현실적으로 구분된 각 경우의 조합(2^3 = 8가지)으로 변경이 일어날 수 있다. 현재는 모든 경우에 대응하여 상위 제어기/하위 제어기 전체를 묶어서 소프트웨어 버전이 배포되고 있다.
기본 프로그램의 한 줄만 변경이 되어도 전체 소프트웨어를 만들어서 배포해야 하며 고객은 이 시간을 기다리고 다양한 기능을 사용할 수 없다.
변경점에 따른 문제점(에러 등) 등도 제조사에서 직접 수정해야 하며 이 또한 앞서 언급한 제조사 부담과 고객의 불편을 증폭시킬 수 있다.
비교 실시예에 따르면, 소스 보안, 버전 관리 등의 문제로 인해 외부의 업체에서 새로운 기능을 개발하여 추가할 수 있는 방법이 없고 하드웨어(90)의 제조사에서 직접 새로운 기능을 추가해야 한다.
도 14는 본 발명의 관리 방법을 나타낸 흐름도이다.
도 14의 관리 방법은 도 1의 관리 장치(100) 또는 도 6의 관리기(120)에 의해 수행될 수 있다.
관리 방법은 획득 단계(S 510), 추출 단계(S 520), 설치 단계(S 530), 제공 단계(S 540)를 포함할 수 있다. 획득 단계(S 510), 추출 단계(S 520), 설치 단계(S 530), 제공 단계(S 540)는 제2 관리부(123)에 의해 수행될 수 있다.
획득 단계(S 510)는 마켓 서버(190)로부터 기능 모듈 f를 획득할 수 있다.
추출 단계(S 520)는 기능 모듈 f에 포함된 화면 모듈 f3, 제어 모듈 f1을 추출할 수 있다.
설치 단계(S 530)는 기설치된 제2 API(24) 상에 화면 모듈을 탑재할 수 있다.
제공 단계(S 540)는 하드웨어(90)의 제어기(110)에 기설치된 제1 API(14) 상에 탑재될 제어 모듈을 제어기(110)로 전송할 수 있다.
도 15는 기능 모듈을 설치하는 과정을 나타낸 흐름도이다.
도면에 기재된 '통신모듈(제어기)'는 제어기(110)에 마련된 통신 모듈, 다시 말해 제1 통신 모듈(11)을 의미할 수 있다. 도면에 기재된 '통신모듈(TP)'는 관리기(120)에 마련된 통신 모듈, 다시 말해 제2 통신 모듈(21)을 의미할 수 있다.
도면에 기재된 '매니저모듈(제어기)'는 제어기(110)에 마련된 매니저 모듈 또는 제1 관리부(113)를 의미할 수 있다. 도면에 기재된 '매니저모듈(TP)'는 관리기(120)에 마련된 매니저 모듈 또는 제2 관리부(123)를 의미할 수 있다.
관리 장치에 따르면, 다양한 업체가 기능 모듈을 개발, 제작하고, 제작된 기능 모듈을 마켓 서버에 업로드할 수 있다. 마켓 서버에 업로드된 기능 모듈은 다양한 로봇 제조사에서 제작한 로봇에 대하여 다운로드 되고 탑재될 수 있다.
각 업체는 제조사에서 제공하는 기능 개발 도구, 예를 들어 SDK를 이용하여 기능 모듈 f를 제작할 수 있다(S 501). SDK는 API와 툴(tool)로 구성된 기능 모듈 제작 키트를 포함할 수 있다.
업체는 제작된 기능 모듈 f를 마켓 서버(190)에 해당하는 'Store')에 업로드할 수 있다(S 502).
고객은 관리기(120)에 해당하는 TP(도 15의 'TP'는 관리기를 의미함)를 통해 Store에 접속하고, 타일드 메뉴에서 기능 모듈 f를 검색할 수 있다(S 511).
고객이 타일드 메뉴에서 특정 기능 모듈을 선택하면, 제2 관리부(123)에 해당하는 '매니저모듈(TP)'에서 기능 모듈을 설치할 수 있다(S 512).
매니저모듈(TP)는 기능 모듈에서 화면 모듈, 제어 모듈, 프레임워크 모듈을 추출할 수 있다(S 521).
매니저모듈(TP)는 기능 모듈에 포함된 화면 모듈을 제어기(110)에 설치할 수 있다(S 531). 매니저모듈(TP)는 제1 확장 API(16)와 제1 동적 라이브러리(10)를 추가로 제어기(110)에 설치할 수 있다. 매니저모듈(TP)는 제2 통신 모듈(21)에 해당하는 통신모듈(TP)에 기능 모듈의 정보, 프레임워크 모듈, 제어 모듈을 전송할 수 있다.
통신모듈(TP)는 기능 모듈의 정보, 프레임워크 모듈, 제어 모듈을 제어기(110)로 전송할 수 있다.
제어기(110)에 마련된 제1 통신 모듈(11)에 해당하는 '통신모듈(제어기)'에서 기능 모듈의 정보, 프레임워크 모듈, 제어 모듈을 수신할 수 있다(S 541).
제1 관리부(113)에 해당하는 '매니저모듈(제어기)'는 관리기(120)로부터 수신된 정보에 프레임워크 모듈과 제어 모듈이 포함된 여부를 판단할 수 있다(S 551).
프레임워크 모듈과 제어 모듈이 포함된 것으로 판단되면, 매니저모듈(제어기)은 제어기(110)에 프레임워크 모듈 및 제어 모듈을 설치할 수 있다(S 552). 매니저모듈(제어기)는 필요에 따라 제1 확장 API(16)와 제1 동적 라이브러리(10)를 추가로 제어기(110)에 설치할 수 있다.
그 후, 매니저모듈(제어기)는 관리기(120)로부터 수신된 기능 모듈의 정보를 저장할 수 있다(S 553).
만약, 판단 단계(S 551)에서, 관리기(120)로부터 수신된 정보에 프레임워크 모듈 및 제어 모듈이 미포함된 것으로 판단되면, 곧바로 기능 모듈의 정보가 저장되는 단계(S 553)가 수행될 수 있다.
제어기(110)에 프레임워크 모듈, 제어 모듈이 설치되고, 기능 모듈의 정보가 제어기(110)에 저장되면 매니저모듈(제어기)는 통신모듈(제어기)에 설치 성공 사실을 전송할 수 있다(S 554). 통신모듈(제어기)는 통신모듈(TP)에 설치 성공 사실을 전송할 수 있다.
통신모듈(TP)는 매니저모듈(TP)에 설치 성공 사실을 전송할 수 있다(S 555). 매니저모듈(TP)는 설치 성공 사실을 관리기(120)의 표시부(125)를 통해 표시할 수 있다.
도 16은 기능 모듈을 삭제하는 과정을 나타낸 흐름도이다.
관리기(120)에 해당하는 TP에 의해 제어기(110)에 설치된 기능 모듈의 타일드 메뉴가 표시되고, 특정 기능 모듈이 선택될 수 있다(S 571).
선택된 기능 모듈의 관련 메뉴에서 '삭제'가 선택되면, 제2 관리부(123)에 해당하는 매니저모듈(TP)는 제2 통신 모듈(21)에 해당하는 통신모듈(TP)에 해당 기능 모듈의 정보를 요청할 수 있다(S 572). 기능 모듈의 정보는 해당 기능 모듈의 식별 정보를 포함할 수 있다. 해당 식별 정보를 이용하면 제어기(110)에 설치된 기능 모듈이 식별되거나 파악될 수 있다.
해당 요청 정보는 통신모듈(TP)에 의해 제1 통신 모듈(11)에 해당하는 통신모듈(제어기)에 전송될 수 있다(S 573).
통신모듈(제어기)를 통해 요청 정보를 접수한 매니저모듈(제어기)는 기저장된 기능 모듈의 정보를 로드해서 통신모듈(TP)에 전송할 수 있다(S 574).
통신모듈(TP)는 매니저모듈(TP)에 기능 모듈의 정보를 전달할 수 있다. 기능 모듈의 정보가 통신모듈(TP)를 통해 매니저모듈(TP)로 전달되었다는 것은 제어기(110)에 해당 기능 모듈이 설치된 상태인 것을 의미할 수 있다. 매니저모듈(TP)는 해당 기능 모듈의 화면 모듈을 관리기(120)에서 삭제할 수 있다(S 575).
매니저모듈(TP)는 삭제 성공 사실을 통신모듈(제어기)로 전달할 수 있다(S 576).
통신모듈(제어기)는 삭제 성공 사실을 수신하면(S 577), 수신된 삭제 성공 사실을 매니저모듈(제어기)로 전달할 수 있다.
매니저모듈(제어기)는 삭제된 화면 모듈을 포함한 기능 모듈 또는 삭제 요청된 기능 모듈에 프레임워크 모듈과 제어 모듈이 포함된 여부를 판단할 수 있다(S 578).
프레임워크 모듈과 제어 모듈이 포함된 것으로 판단되면, 매니저모듈(제어기)는 해당 프레임워크 모듈과 제어 모듈을 삭제할 수 있다(S 579). 매니저모듈(제어기)는 필요에 따라 제1 확장 API(16)와 제1 동적 라이브러리(10)를 삭제할 수 있다.
매니저모듈(제어기)는 프레임워크 모듈과 제어 모듈의 삭제 후에 기저장된 기능 모듈의 정보(식별 정보)를 삭제할 수 있다(S 580).
매니저모듈(제어기)는 통신모듈(제어기)에 프레임워크 모듈, 제어 모듈, 식별 정보의 제거 사실을 전달할 수 있다(S 581).
통신모듈(제어기)는 통신모듈(TP)에 해당 제거 사실을 전달하고, 통신모듈(TP)는 제거 사실을 매니저모듈(TP)에 전달할 수 있다(S 582). 매니저모듈(TP)는 표시부(125)를 통해 기능 모듈의 제거 사실을 표시할 수 있다.
도 17은 본 발명의 실시예에 따른, 컴퓨팅 장치를 나타내는 도면이다. 도 17의 컴퓨팅 장치(TN100)는 본 명세서에서 기술된 장치(예, 관리 장치(100), 마켓 서버(190), 제어기(110), 관리기(120) 등) 일 수 있다.
도 17의 실시예에서, 컴퓨팅 장치(TN100)는 적어도 하나의 프로세서(TN110), 송수신 장치(TN120), 및 메모리(TN130)를 포함할 수 있다. 또한, 컴퓨팅 장치(TN100)는 저장 장치(TN140), 입력 인터페이스 장치(TN150), 출력 인터페이스 장치(TN160) 등을 더 포함할 수 있다. 컴퓨팅 장치(TN100)에 포함된 구성 요소들은 버스(bus)(TN170)에 의해 연결되어 서로 통신을 수행할 수 있다.
프로세서(TN110)는 메모리(TN130) 및 저장 장치(TN140) 중에서 적어도 하나에 저장된 프로그램 명령(program command)을 실행할 수 있다. 프로세서(TN110)는 중앙 처리 장치(CPU: central processing unit), 그래픽 처리 장치(GPU: graphics processing unit), 또는 본 발명의 실시예에 따른 방법들이 수행되는 전용의 프로세서를 의미할 수 있다. 프로세서(TN110)는 본 발명의 실시예와 관련하여 기술된 절차, 기능, 및 방법 등을 구현하도록 구성될 수 있다. 프로세서(TN110)는 컴퓨팅 장치(TN100)의 각 구성 요소를 제어할 수 있다.
메모리(TN130) 및 저장 장치(TN140) 각각은 프로세서(TN110)의 동작과 관련된 다양한 정보를 저장할 수 있다. 메모리(TN130) 및 저장 장치(TN140) 각각은 휘발성 저장 매체 및 비휘발성 저장 매체 중에서 적어도 하나로 구성될 수 있다. 예를 들어, 메모리(TN130)는 읽기 전용 메모리(ROM: read only memory) 및 랜덤 액세스 메모리(RAM: random access memory) 중에서 적어도 하나로 구성될 수 있다.
송수신 장치(TN120)는 유선 신호 또는 무선 신호를 송신 또는 수신할 수 있다. 송수신 장치(TN120)는 네트워크에 연결되어 통신을 수행할 수 있다.
한편, 본 발명의 실시예는 지금까지 설명한 장치 및/또는 방법을 통해서만 구현되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 상술한 실시예의 기재로부터 본 발명이 속하는 기술 분야의 통상의 기술자라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 통상의 기술자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
10...제1 동적 라이브러리 11...제1 통신 모듈
12...제1 런타임 모듈 13...해석 모듈
14...제1 API 15...변환 모듈
16...제1 확장 API 17...제1 OS
18...ROS 19...RTOS
20...제2 동적 라이브러리 21...제2 통신 모듈
22...제2 런타임 모듈 24...제2 API
26...제2 확장 API 27...제2 OS
90...하드웨어 100...관리 장치
110...제어기 111...제1 실행부
113...제1 관리부 120...관리기
121...제2 실행부 123...제2 관리부
125...표시부 190...마켓 서버
191...등록부 193...제공부
195...수집부 197...검색부
198...평가부 199...업데이트부

Claims (26)

  1. 하드웨어를 제어하는 제어기가 마련될 때,
    상기 하드웨어에 특정 기능을 부여하는 기능 모듈이 등록된 마켓 서버;
    상기 마켓 서버로부터 상기 기능 모듈을 다운로드하는 관리기;를 포함하고,
    상기 관리기는 상기 제어기에 상기 기능 모듈을 설치하거나 상기 제어기에 설치된 상기 기능 모듈을 삭제하는
    관리 장치.
  2. 하드웨어에 특정 기능을 부여하는 기능 모듈을 등록하는 등록부;
    기등록된 기능 모듈의 모듈 정보를 관리기에 제공하는 제공부;
    를 포함하는 관리 장치.
  3. 제2항에 있어서,
    상기 제공부는 상기 모듈 정보가 타일드(tiled) 메뉴 구조로 표시되는 표시 메뉴를 상기 관리기에 제공하고,
    상기 제공부는 상기 타일드 메뉴를 형성하는 특정 타일이 선택되면 선택된 특정 타일에 배치된 특정 기능 모듈의 기능 분류 결과 및 상세 정보 중 적어도 하나를 상기 관리기에 추가로 제공하는
    관리 장치.
  4. 제2항에 있어서,
    상기 관리기에 설치된 제2 확장 API(Application Programming Interface)의 정보를 수집하는 수집부가 마련되고,
    상기 제2 확장 API를 사용하는 제2 동적 라이브러리를 갖는 제2 기능 모듈을 기등록된 복수의 기능 모듈 중에서 검색하는 검색부가 마련되며,
    상기 제공부는 상기 검색부에 의해 검색된 상기 제2 기능 모듈의 목록을 상기 관리기에 제공하는
    관리 장치.
  5. 제2항에 있어서,
    상기 관리기에 의해 관리되는 제어기에 설치된 제1 확장 API(Application Programming Interface)의 정보를 수집하는 수집부가 마련되고,
    상기 제1 확장 API를 사용하는 제1 동적 라이브러리를 갖는 제1 기능 모듈을 기등록된 복수의 기능 모듈 중에서 검색하는 검색부가 마련되며,
    상기 제공부는 상기 검색부에 의해 검색된 상기 제1 기능 모듈의 목록을 상기 관리기에 제공하는
    관리 장치.
  6. 제2항에 있어서,
    상기 기능 모듈을 대상으로 하는 고객의 평가 점수, 다운로드 횟수, 공정 편의성 중 적어도 하나를 이용하여 상기 기능 모듈에 점수를 부여하는 평가부가 마련되고,
    상기 제공부는 상기 제어기에 제공되는 상기 모듈 정보가 복수이면, 각 기능 모듈에 부여된 점수에 따라 우선 순위를 결정하며,
    상기 제공부는 상기 우선 순위에 따라 순서대로 정렬된 복수의 상기 모듈 정보를 상기 관리기에 제공하는
    관리 장치.
  7. 제2항에 있어서,
    상기 관리기에 설치된 특정 기능 모듈의 설치 정보를 수집하는 수집부가 마련되고,
    상기 설치 정보와 기등록된 기능 모듈의 모듈 정보 간의 비교를 통해 상기 특정 기능 모듈의 업데이트를 수행하는 업데이트부가 마련된
    관리 장치.
  8. 하드웨어에 특정 기능을 부여하는 기능 모듈이 탑재되고, 상기 기능 모듈의 실행에 의해 상기 하드웨어를 제어하는 제1 실행부;
    상기 제1 실행부에 탑재된 기능 모듈 중에서 변동 가능한 변동 모듈을 관리하는 제1 관리부;
    를 포함하는 관리 장치.
  9. 제8항에 있어서,
    상기 제1 실행부에 탑재되는 기능 모듈은 상기 변동 모듈, 상기 제1 실행부에 고정 탑재되는 고정 모듈로 구분되고,
    상기 제1 관리부는 상기 고정 모듈은 그대로 둔 상태에서 상기 변동 모듈을 추가하거나 삭제하는
    관리 장치.
  10. 제9항에 있어서,
    상기 고정 모듈은 관리기 또는 마켓 서버와 통신하는 제1 통신 모듈, 상기 하드웨어의 제어 정보를 해석하는 해석 모듈, 상기 해석 모듈에 의해 해석된 제어 정보를 상기 하드웨어에 호환되게 변환하는 변환 모듈 중 적어도 하나를 포함하고,
    상기 변동 모듈은 상기 제어 정보를 생성하는 제어 모듈, 유저 인터페이스가 포함된 화면 모듈과 상기 제어 모듈을 연결하는 프레임워크 모듈 중 적어도 하나를 포함하는
    관리 장치.
  11. 제8항에 있어서,
    관리기 또는 마켓 서버와 통신하는 제1 통신 모듈, 상기 하드웨어의 제어 정보를 해석하는 해석 모듈, 상기 해석 모듈에 의해 해석된 제어 정보를 상기 하드웨어에 호환되게 변환하는 변환 모듈이 마련되고,
    상기 제1 관리부는 상기 제1 통신 모듈, 상기 해석 모듈 및 상기 변환 모듈을 그대로 둔 상태에서 상기 제1 실행부에 다른 기능 모듈을 추가하거나 상기 제1 실행부에 탑재된 다른 기능 모듈을 삭제하는
    관리 장치.
  12. 제8항에 있어서,
    상기 제1 실행부에는 제1 OS(Operating System, 오퍼레이팅 시스템), 로봇 OS(Operating System, 오퍼레이팅 시스템), 상기 제1 OS 또는 상기 로봇 OS에 실시간성을 제공하는 리얼타임 OS(RTOS, Real Time Operating System) 중 적어도 하나가 추가로 탑재되고,
    상기 기능 모듈의 실행 환경에 해당하는 제1 런타임(runtime) 모듈, 상기 기능 모듈과 상기 제1 런타임 모듈을 연결하는 제1 API(Application Program Interface) 중 적어도 하나가 추가로 탑재되는
    관리 장치.
  13. 제8항에 있어서,
    상기 제1 실행부에는 제1 통신 모듈, 해석 모듈, 변환 모듈, 제어 모듈, 프레임워크 모듈, 제1 런타임(runtime) 모듈, 제1 API(Application Program Interface), 제1 확장 API, 제1 동적 라이브러리가 탑재되고,
    상기 제1 관리부는 상기 제어 모듈 및 상기 프레임워크 모듈과 구분되는 상기 제1 확장 API 또는 상기 제1 동적 라이브러리를 상기 제1 실행부에 추가하거나 상기 제1 실행부에서 삭제하며,
    상기 제1 통신 모듈은 관리기 또는 마켓 서버와 통신하고,
    상기 해석 모듈은 상기 하드웨어의 제어 정보를 해석하며,
    상기 변환 모듈은 상기 해석 모듈에 의해 해석된 제어 정보를 상기 하드웨어에 호환되게 변환하고,
    상기 제어 모듈은 상기 제어 정보를 생성하며,
    상기 프레임워크 모듈은 유저 인터페이스가 포함된 화면 모듈과 상기 제어 모듈을 연결하고,
    상기 제1 런타임 모듈은 상기 기능 모듈의 실행 환경을 제공하며,
    상기 제1 API는 상기 기능 모듈과 상기 제1 런타임 모듈을 연결하고,
    상기 제1 동적 라이브러리는 상기 하드웨어의 제조사에서 상기 하드웨어의 제어를 목적으로 제작한 것이며,
    상기 제1 확장 API는 상기 제1 동적 라이브러리와 상기 제1 런타임 모듈을 연결하는
    관리 장치.
  14. 제8항에 있어서,
    상기 기능 모듈에는 화면 모듈, 프레임워크 모듈, 제어 모듈이 마련되고,
    상기 화면 모듈에는 유저 인터페이스가 포함되며,
    상기 제어 모듈에는 상기 하드웨어가 상기 특정 기능을 갖도록 상기 하드웨어를 제어하는 제어 정보가 포함되고,
    상기 프레임워크 모듈에는 상기 화면 모듈과 상기 제어 모듈을 연동시키는 정보가 포함되며,
    상기 제1 관리부는 상기 화면 모듈, 상기 프레임워크 모듈, 상기 제어 모듈 중에서 상기 프레임워크 모듈과 상기 제어 모듈을 상기 제1 실행부에 탑재하는
    관리 장치.
  15. 제8항에 있어서,
    상기 기능 모듈의 유저 인터페이스가 표시되는 관리기와 통신하는 제1 통신 모듈이 마련되고,
    상기 제1 통신 모듈은 상기 하드웨어가 상기 특정 기능을 갖도록 하는 상기 하드웨어의 제어 정보를 생성하는 제어 모듈, 상기 제어 모듈과 상기 유저 인터페이스를 연동시키는 프레임워크 모듈을 상기 관리기로부터 수신하며,
    상기 제1 관리부는 상기 제1 통신 모듈을 통해 수신된 상기 제어 모듈과 상기 프레임워크 모듈을 상기 제1 실행부에 설치하는
    관리 장치.
  16. 제15항에 있어서,
    상기 관리기에는 제2 실행부 및 제2 관리부가 마련되고,
    상기 제2 관리부는 마켓 서버로부터 다운로드한 기능 모듈에 포함된 화면 모듈, 상기 프레임워크 모듈, 상기 제어 모듈을 구분하며,
    상기 제2 실행부에는 상기 제1 통신 모듈과 통신하는 제2 통신 모듈, 상기 제2 관리부에 의해 추출된 상기 화면 모듈이 탑재되고,
    상기 제2 관리부는 상기 제2 통신 모듈을 통해 상기 제어 모듈 및 상기 프레임워크 모델을 상기 제1 관리부에 전달하며,
    상기 제1 관리부는 상기 제2 관리부로부터 전달받은 상기 제어 모듈 및 상기 프레임워크 모델을 상기 제1 실행부에 설치하고,
    상기 화면 모듈은 상기 프레임워크 모듈에 의해 상기 제어 모듈과 연동되는 상기 유저 인터페이스를 상기 관리기의 표시부에 표시하며,
    상기 제1 통신 모듈과 상기 제2 통신 모듈은 상기 유저 인터페이스와 상기 제어 모듈 간의 연동 정보를 주고받는
    관리 장치.
  17. 제16항에 있어서,
    상기 제1 통신 모듈과 상기 제2 통신 모듈이 일체로 형성되고,
    상기 제1 실행부와 상기 제2 실행부가 일체로 형성되며,
    상기 제1 관리부와 상기 제2 관리부가 일체로 형성된
    관리 장치.
  18. 하드웨어에 특정 기능을 부여하는 기능 모듈을 획득하는 제2 관리부;
    상기 기능 모듈 중에서 상기 특정 기능을 나타내는 유저 인터페이스를 표시하는 제2 실행부;
    상기 유저 인터페이스가 표시되는 표시부;
    를 포함하는 관리 장치.
  19. 제18항에 있어서,
    상기 제2 실행부에는 제2 OS(Operating System, 오퍼레이팅 시스템), 상기 기능 모듈의 실행 환경에 해당하는 제2 런타임(runtime) 모듈, 상기 기능 모듈과 상기 제2 런타임 모듈을 연결하는 제2 API(Application Program Interface)가 탑재되고,
    상기 제2 관리부는 상기 유저 인터페이스를 제공하는 화면 모듈을 상기 기능 모듈에서 추출하며,
    상기 제2 관리부는 상기 제2 OS, 상기 제2 런타임 모듈 및 상기 제2 API를 그대로 둔 상태에서 상기 화면 모듈을 상기 제2 실행부에 설치하거나 상기 제2 실행부에서 삭제하는
    관리 장치.
  20. 제18항에 있어서,
    상기 제2 관리부는 상기 기능 모듈을 제1 모듈과 제2 모듈로 구분하고,
    상기 제2 모듈은 상기 유저 인터페이스가 포함된 화면 모듈, 상기 하드웨어의 시뮬레이션 환경을 생성하는 시뮬레이션 모듈, 상기 화면 모듈과 상기 시뮬레이션 모듈을 연결하는 메타 모듈, 상기 하드웨어의 티칭(teaching) 정보를 생성하는 티칭 모듈, 증강 현실을 제공하는 공간 정합 모듈 중 적어도 하나를 포함하며,
    상기 제1 모듈은 상기 하드웨어가 상기 특정 기능을 갖도록 상기 하드웨어를 제어하는 제어 정보를 처리하는 제어 모듈, 상기 화면 모듈과 상기 제어 모듈을 연동시키는 정보가 포함된 프레임워크 모듈 중 적어도 하나를 포함하고,
    상기 제2 관리부는 상기 하드웨어의 제어기에 상기 제1 모듈을 제공하며,
    상기 제2 관리부는 상기 제2 실행부에 상기 제2 모듈을 설치하거나 상기 제2 실행부에 설치된 상기 제2 모듈을 삭제하는
    관리 장치.
  21. 제18항에 있어서,
    상기 제2 관리부는 상기 기능 모듈에서 상기 유저 인터페이스를 갖는 화면 모듈을 추출하고,
    상기 제2 관리부는 상기 제2 실행부에 상기 화면 모듈을 설치하며,
    상기 제2 실행부는 상기 제2 관리부에 의해 탑재된 상기 화면 모듈의 실행을 통해 상기 표시부에 상기 유저 인터페이스를 표시하는
    관리 장치.
  22. 제21항에 있어서,
    상기 제2 실행부에는 상기 하드웨어를 제어하는 제어기와 통신하는 제2 통신 모듈이 탑재되고,
    상기 제2 통신 모듈은 상기 하드웨어와 상기 유저 인터페이스 간의 연동 정보를 상기 제어기와 주고받는
    관리 장치.
  23. 제18항에 있어서,
    상기 기능 모듈에 화면 모듈, 프레임워크 모듈, 제어 모듈이 포함될 때,
    상기 제2 관리부는 상기 기능 모듈에서 상기 화면 모듈을 추출하고,
    상기 제2 관리부는 상기 기능 모듈로부터 추출된 상기 화면 모듈을 상기 제2 실행부에 설치하며,
    상기 제2 관리부는 상기 기능 모듈에서 상기 프레임워크 모듈과 상기 제어 모듈을 추출하고,
    상기 제2 관리부는 상기 하드웨어를 제어하는 제어기에 상기 프레임워크 모듈과 상기 제어 모듈을 제공하는
    관리 장치.
  24. 제18항에 있어서,
    상기 제2 실행부에는 제2 통신 모듈, 화면 모듈, 제2 런타임(runtime) 모듈, 제2 API(Application Program Interface), 제2 확장 API, 제2 동적 라이브러리가 탑재되고,
    상기 제2 관리부는 상기 화면 모듈과 구분되는 상기 제2 확장 API 또는 상기 제2 동적 라이브러리를 상기 제2 실행부에 추가하거나 상기 제2 실행부에서 삭제하며,
    상기 제2 통신 모듈은 제어기 또는 마켓 서버와 통신하고,
    상기 화면 모듈은 상기 제2 실행부에 의해 실행되면 상기 유저 인터페이스를 표시부에 표시하며,
    상기 제2 런타임 모듈은 상기 기능 모듈의 실행 환경을 제공하고,
    상기 제2 API는 상기 기능 모듈과 상기 제2 런타임 모듈을 연결하며,
    상기 제2 동적 라이브러리는 상기 하드웨어의 제조사에서 상기 하드웨어의 제어를 목적으로 제작한 것이고,
    상기 제2 확장 API는 상기 제2 동적 라이브러리와 상기 제2 런타임 모듈을 연결하는
    관리 장치.
  25. 하드웨어 제어용의 유저 인터페이스가 표시되는 관리기;를 포함하고,
    상기 관리기는 마켓 서버로부터 획득된 기능 모듈에서 화면 모듈, 제어 모듈을 추출하며,
    상기 관리기는 자체적으로 구비된 제2 API를 그대로 둔 상태에서 상기 제2 API 상에 상기 화면 모듈을 탑재하고,
    상기 관리기는 상기 하드웨어의 제어기에 기설치된 제1 API 상에 탑재될 상기 제어 모듈을 상기 제어기로 전송하는
    관리 장치.
  26. 관리 장치에 의해 수행되는 관리 방법에 있어서,
    마켓 서버로부터 기능 모듈을 획득하는 획득 단계;
    상기 기능 모듈에 포함된 화면 모듈, 제어 모듈을 추출하는 추출 단계;
    기설치된 제2 API 상에 상기 화면 모듈을 탑재하는 설치 단계;
    하드웨어의 제어기에 기설치된 제1 API 상에 탑재될 상기 제어 모듈을 상기 제어기로 전송하는 제공 단계;
    를 포함하는 관리 방법.
KR1020220041746A 2022-04-04 2022-04-04 기능 모듈의 추가 및 삭제가 가능하고 타사 제품과의 연동을 지원하는 관리 장치 및 방법 KR20230142999A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020220041746A KR20230142999A (ko) 2022-04-04 2022-04-04 기능 모듈의 추가 및 삭제가 가능하고 타사 제품과의 연동을 지원하는 관리 장치 및 방법
EP23160317.6A EP4283460A1 (en) 2022-04-04 2023-03-07 Management system and method to support interworking with third-party products while allowing addition and deletion of function modules
CN202310233052.2A CN116893631A (zh) 2022-04-04 2023-03-07 可添加以及删除功能模块并支持与第三方产品的联动的管理装置以及方法
JP2023043292A JP2023152831A (ja) 2022-04-04 2023-03-17 機能モジュールの追加および削除が可能で他社製品との連動を支援する管理装置および方法
US18/190,639 US20230315434A1 (en) 2022-04-04 2023-03-27 Management system and method to support interworking with third party products while allowing addition and deletion of function modules

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220041746A KR20230142999A (ko) 2022-04-04 2022-04-04 기능 모듈의 추가 및 삭제가 가능하고 타사 제품과의 연동을 지원하는 관리 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20230142999A true KR20230142999A (ko) 2023-10-11

Family

ID=85511016

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220041746A KR20230142999A (ko) 2022-04-04 2022-04-04 기능 모듈의 추가 및 삭제가 가능하고 타사 제품과의 연동을 지원하는 관리 장치 및 방법

Country Status (5)

Country Link
US (1) US20230315434A1 (ko)
EP (1) EP4283460A1 (ko)
JP (1) JP2023152831A (ko)
KR (1) KR20230142999A (ko)
CN (1) CN116893631A (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150074375A (ko) 2013-12-24 2015-07-02 주식회사 케이티 로봇 플랫폼 환경에서 다양한 기종의 로봇을 제어하는 스마트 기기 및 로봇 제어 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10678975B2 (en) * 2017-11-07 2020-06-09 Amazon Tecnnologies, Inc. Code module selection for device design

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150074375A (ko) 2013-12-24 2015-07-02 주식회사 케이티 로봇 플랫폼 환경에서 다양한 기종의 로봇을 제어하는 스마트 기기 및 로봇 제어 방법

Also Published As

Publication number Publication date
CN116893631A (zh) 2023-10-17
JP2023152831A (ja) 2023-10-17
US20230315434A1 (en) 2023-10-05
EP4283460A1 (en) 2023-11-29

Similar Documents

Publication Publication Date Title
JP6083244B2 (ja) リモートデスクトップセッションにおいて複数のマウス入力を提供する方法
US7966427B2 (en) Proxy object configuration of industrial component
US7962659B2 (en) Interoperably configurable HMI system and method
WO2013190714A1 (ja) 自動操作システム及び操作自動化方法
EP3761127B1 (en) Display device, screen generation method, and screen generation program
CN112732677A (zh) 区块链节点部署方法、装置、设备及存储介质
KR20230142999A (ko) 기능 모듈의 추가 및 삭제가 가능하고 타사 제품과의 연동을 지원하는 관리 장치 및 방법
KR20230143003A (ko) 클라우드를 이용한 로봇의 업데이트 장치 및 방법
KR20230143002A (ko) 로봇의 기능 모듈의 개발 환경 제공 장치 및 방법
CN113934618A (zh) 接口测试用例生成方法、装置、生成器及可读存储介质
US20240078101A1 (en) Automated application deployment
KR20230143000A (ko) 혼합 현실을 이용하여 로봇의 이동 경로를 생성하는 티칭 장치 및 티칭 방법
KR20230143004A (ko) 운동 센서가 마련된 단말기를 이용한 로봇 티칭 장치 및 방법
Nakakaze et al. Adaptive retrofitting for industrial machines: utilizing webassembly and peer-to-peer connectivity on the edge
KR20230015626A (ko) 이종 타입의 멀티 rpa 통합 운영관리 시스템 및 방법
KR20230133600A (ko) 멀티 클라우드 관리 방법 및 전자 장치
JP2023111376A (ja) ロボット制御システムおよび制御装置
Wu et al. Interactive Touchscreen Directory
Peng et al. Connecting the Robot to ROS
KR20220139076A (ko) 클라우드 서버 및 클라우드 서버에서 로봇의 소프트웨어 이미지를 변환하는 방법
CN117047781A (zh) 机器人控制方法及设备
KR20230143001A (ko) 휴대 단말기를 이용한 로봇 사용자 인증 장치 및 방법
CN117032845A (zh) 机器人应用生态系统
KR20230133601A (ko) 멀티 클라우드 관리 방법 및 전자 장치
US20090198771A1 (en) Client device and server device