KR20170048164A - 로봇 제어 시스템 및 방법 - Google Patents

로봇 제어 시스템 및 방법 Download PDF

Info

Publication number
KR20170048164A
KR20170048164A KR1020160130827A KR20160130827A KR20170048164A KR 20170048164 A KR20170048164 A KR 20170048164A KR 1020160130827 A KR1020160130827 A KR 1020160130827A KR 20160130827 A KR20160130827 A KR 20160130827A KR 20170048164 A KR20170048164 A KR 20170048164A
Authority
KR
South Korea
Prior art keywords
motion command
controller
class
hardware
motion
Prior art date
Application number
KR1020160130827A
Other languages
English (en)
Other versions
KR102543212B1 (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 한화테크윈 주식회사
Publication of KR20170048164A publication Critical patent/KR20170048164A/ko
Application granted granted Critical
Publication of KR102543212B1 publication Critical patent/KR102543212B1/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
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • 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/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/414Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller
    • G05B19/4141Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller characterised by a controller or microprocessor per axis
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1679Programme controls characterised by the tasks executed
    • B25J9/1682Dual arm manipulator; Coordination of several manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/06Control stands, e.g. consoles, switchboards
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1628Programme controls characterised by the control loop
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1679Programme controls characterised by the tasks executed
    • 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/30Nc systems
    • G05B2219/31From computer integrated manufacturing till monitoring
    • G05B2219/31112Interface, SIOMS standard I-O for mechatronic systems, device drivers
    • 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/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39376Hierarchical, learning, recognition and skill level and adaptation servo level
    • 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/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39382Level, organization and coordination or distribution of tasks and execution level

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Automation & Control Theory (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Manipulator (AREA)
  • Feedback Control In General (AREA)

Abstract

본 발명이 해결하고자 하는 과제를 해결하기 위한 일 실시예에 따른 로봇 제어 시스템은 사용자 입력을 수신하는 인터페이스, 상기 사용자 입력에 대응하는 모션커맨드 및 상기 모션커맨드를 포함하는 모션커맨드그룹을 각각 생성하고, 상기 모션커맨드를 분석하여 하드웨어에 의해 해석 가능한 데이터를 생성하는 컨트롤러, 및 상기 데이터에 따라 적어도 하나의 하드웨어의 동작을 구동하는 드라이버를 포함한다.

Description

로봇 제어 시스템 및 방법{System and method for controlling robot}
본 발명은 로봇 제어 시스템 및 방법에 관한 것이다.
로봇 제어 애플리케이션 아키텍처는 로봇을 제어하는 컨트롤 계층, 복수의 로봇들을 제어하는 계획 관리 계층, 및 복수의 로봇들을 포함하는 공장의 궁극적인 목표를 결정하는 최상위의 목표 관리 계층을 포함할 수 있다.
일반적으로 계획 관리 계층에서 로봇을 제어하는 방법이 연구되어 왔으나, 마이크로컨트롤러의 기능이 풍부해짐에 따라 컨트롤 계층에서 로봇을 제어하는 다양한 방법의 연구가 요구되고 있다.
국내 공개특허공보 제2011-0047842호
본 발명이 해결하고자 하는 과제는 컨트롤 계층에서 로봇의 동작을 제어하는 로봇 제어 시스템 및 방법을 제공하는데 있다.
본 발명이 해결하고자 하는 과제를 해결하기 위한 일 실시예에 따른 로봇 제어 시스템은 사용자 입력을 수신하는 인터페이스, 상기 사용자 입력에 대응하는 모션커맨드 및 상기 모션커맨드를 포함하는 모션커맨드그룹을 각각 생성하고, 상기 모션커맨드를 분석하여 하드웨어에 의해 해석 가능한 데이터를 생성하는 컨트롤러, 및 상기 데이터에 따라 적어도 하나의 하드웨어의 동작을 구동하는 드라이버;를 포함한다.
본 실시예에서, 상기 컨트롤러는 상기 모션커맨드 및 상기 모션커맨드그룹을 비실시간으로 생성하고, 상기 하드웨어에 의해 해석 가능한 데이터를 실시간으로 생성할 수 있다.
본 실시예에서, 상기 모션커맨드는 상기 적어도 하나의 하드웨어의 동작에 따른 최종 결과값을 포함할 수 있다.
본 실시예에서, 상기 적어도 하나의 하드웨어는 하나의 로봇을 구성할 수 있다.
본 실시예에서, 상기 모션커맨드그룹은 복수의 모션커맨드들을 포함하고, 상기 컨트롤러는 상기 모션커맨드그룹에 포함된 상기 복수의 모션커맨드들을 동시에 실행하고, 상기 드라이버는 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동할 수 있다.
본 실시예에서, 상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하고, 상기 하드웨어에 의해 해석 가능한 데이터를 주기적으로 생성할 수 있다.
본 실시예에서, 상기 모션커맨드는 상기 적어도 하나의 하드웨어의 동작에 따른 최종 결과값을 포함할 수 있다.
본 실시예에서, 상기 적어도 하나의 하드웨어는 하나의 로봇을 구성할 수 있다.
본 실시예에서, 상기 모션커맨드그룹은 복수의 모션커맨드들을 포함하고, 상기 컨트롤러는 상기 모션커맨드그룹에 포함된 상기 복수의 모션커맨드들을 동시에 실행하고, 상기 드라이버는 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동할 수 있다.
본 실시예에서, 상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하기 위하여, 쓰레드매니저 클래스로부터 비동기 실행 인터럽트 함수를 호출할 수 있다.
본 실시예에서, 상기 컨트롤러는 상기 비동기 실행 인터럽트 함수에 대응하여, 상기 모션커맨드를 쓰레드안전큐 클래스에 설정할 수 있다.
본 실시예에서, 상기 컨트롤러는, 상기 하드웨어에 의해 해석 가능한 데이터를 주기적으로 생성하기 위하여, 상기 쓰레드매니저 클래스로부터 동기 실행 인터럽트 함수를 호출하고, 상기 동기 실행 인터럽트 함수에 대응하여, 상기 쓰레드안전큐 클래스로부터 상기 모션커맨드를 얻을 수 있다.
본 발명이 해결하고자 하는 과제를 해결하기 위한 일 실시예에 따른 로봇 제어 방법은 인터페이스, 컨트롤러, 및 드라이버를 포함하는 로봇 제어 시스템에 의하여 로봇을 제어하는 방법에 있어서, 상기 인터페이스에 의하여 사용자 입력을 수신하는 단계, 상기 컨트롤러에 의하여 상기 사용자 입력에 대응하는 모션커맨드 및 상기 모션커맨드를 포함하는 모션커맨드그룹을 생성하는 단계, 상기 컨트롤러에 의하여 상기 모션커맨드를 분석하여 하드웨어에 의해 해석 가능한 데이터를 생성하는 단계, 및 상기 드라이버에 의하여 상기 데이터에 따라 적어도 하나의 하드웨어의 동작을 구동하는 단계를 포함한다.
본 실시예에서, 상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하고, 상기 데이터를 주기적으로 생성할 수 있다.
본 실시예에서, 상기 컨트롤러에 의하여 상기 모션커맨드그룹에 포함된 복수의 모션커맨드들을 동시에 실행하는 단계, 및 상기 드라이버에 의하여 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동하는 단계를 더 포함할 수 있다.
본 실시예에서, 상기 모션커맨드는 상기 적어도 하나의 하드웨어의 동작에 따른 최종 결과값을 포함할 수 있다.
본 실시예에서, 상기 모션커맨드를 분석하여 상기 데이터를 생성하는 단계는, 상기 컨트롤러에 의하여 쓰레드매니저 클래스의 컨트롤매니저 클래스에 대한 비동기 실행 인터럽트 함수를 호출하는 단계, 및 상기 컨트롤러에 의하여 상기 비동기 실행 인터럽트 함수에 대응하여 상기 모션커맨드를 쓰레드안전큐 클래스에 설정하는 단계를 포함할 수 있다.
본 실시예에서, 상기 모션커맨드를 분석하여 상기 데이터를 생성하는 단계는, 상기 컨트롤러에 의하여 상기 쓰레드매니저 클래스의 하드웨어매니저 클래스에 대한 동기 실행 인터럽트 함수를 호출하는 단계, 및 상기 컨트롤러에 의하여 상기 동기 실행 인터럽트 함수에 대응하여, 상기 쓰레드안전큐 클래스로부터 상기 모션커맨드를 얻는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 따르면, 컨트롤 계층에서 로봇의 동작을 제어할 수 있다.
특히, 컨트롤 계층에서 하나의 로봇을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 제어하거나, 또는 복수의 로봇을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 제어할 수 있다.
또한, 본 발명의 실시예들에 따르면, 로봇 제어를 위한 비실시간 태스크와 실시간 태스크를 독립적으로 처리할 수 있다.
또한, 본 발명의 실시예들에 따르면, 로봇 제어를 위한 비동기 태스크와 동기 태스크를 함께 처리할 수 있다.
또한, 본 발명의 실시예들에 따르면, 연산량을 줄이면서도 네트워크의 안정성을 높여, 결과적으로 로봇의 반복정밀도와 같은 성능 향상을 이끌어낼 수 있다.
또한, 하나의 하드웨어에서 복수의 로봇을 제어할 수 있게끔 함으로서, 기존 복수 개의 하드웨어를 사용하는 것 보다 저발열, 하드웨어적 저비용, 저전력 사용의 효과를 기대할 수 있다.
도 1은 일 실시예에 따른 로봇 제어 시스템을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 비실시간 로봇 제어 방법을 설명하기 위한 흐름도이다.
도 3은 일 실시예에 따른 실시간 로봇 제어 방법을 설명하기 위한 흐름도이다.
도 4는 일 실시예에 따른 혼합형 로봇 제어 방법을 설명하기 위한 흐름도이다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
이하, 본 발명에 따른 실시 예들을 첨부 도면을 참조하여 상세히 설명하기로 하며, 첨부 도면을 참조하여 설명함에 있어, 동일하거나 대응하는 구성 요소는 동일한 도면번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 로봇 제어 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 일 실시예에 따른 로봇 제어 시스템(100)은 인터페이스(110), 컨트롤러(120), 및 드라이버(130)를 포함한다. 로봇 제어 시스템(100)은 본체(210) 및 액추에이터(220)를 포함하는 로봇(200)의 동작을 결정할 수 있다.
인터페이스(110)는 사용자 입력을 수신한다. 사용자 입력은 로봇(200)의 동작에 따른 최종 결과값을 포함할 수 있다.
컨트롤러(120)는 사용자 입력에 대응하는 모션커맨드 및 모션커맨드그룹을 각각 생성한다.
일 실시예에 따른 컨트롤러(120)는 모션커맨드 생성 루틴 및 모션커맨드그룹 생성 루틴을 비실시간 태스크로 할당할 수 있다.
모션커맨드는 적어도 하나의 하드웨어의 동작에 따른 최종 결과값을 포함할 수 있다. 적어도 하나의 하드웨어는 하나의 로봇을 구성할 수 있다. 예를 들어, 모션커맨드는 하나의 로봇을 구성하는 3개의 로봇암들의 동작 시작 지점, 동작 종료 지점, 동작 수행 속도, 및 저크 퍼센트(jerk percent) 중 적어도 하나를 포함할 수 있다.
모션커맨드그룹은 복수의 모션커맨드들을 포함할 수 있다. 예를 들어, 모션커맨드그룹은 2개의 로봇들과 관련된 2개의 모션커맨드들을 포함할 수 있다. 컨트롤러(120)는 모션커맨드를 모션커맨드그룹에 추가할 수 있다.
컨트롤러(120)는 모션커맨드그룹에 포함된 복수의 모션커맨드들을 동시에 실행할 수 있다. 즉, 컨트롤러(120)는 하나의 모션커맨드그룹에 기초하여 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 제어할 수 있다. 이때, 상기 하나의 모션커맨드그룹과 관련된 복수의 로봇들 각각의 동작은 서로 동일할 수도 있고, 상이할 수도 있다.
컨트롤러(120)는 모션커맨드를 분석하여 하드웨어에 의해 해석 가능한 데이터를 생성한다.
일 실시예에 따른 컨트롤러(120)는 모션커맨드 분석 루틴 및 하드웨어에 의해 해석 가능한 데이터 생성 루틴을 실시간 태스크로 할당할 수 있다.
다른 실시예에 따른 컨트롤러(120)는 모션커맨드 분석 루틴을 비동기 태스크로 할당하고, 하드웨어에 의해 해석 가능한 데이터 생성 루틴을 동기 태스크로 할당할 수 있다.
한편, 컨트롤러(120)는 동작 프로파일링 알고리즘을 이용하여, 모션커맨드로부터 하드웨어에 의해 해석 가능한 데이터를 생성할 수 있다. 동작 프로파일링 알고리즘은 예컨대, 액추에이터(220)가 모션커맨드에 따른 최종 위치까지 움직이기 위한, 액추에이터(220)의 위치 또는 속도에 따른 데이터를 생성하는 알고리즘일 수 있다.
드라이버(130)는 컨트롤러(120)에 의해 생성된 데이터에 따라 적어도 하나의 하드웨어의 동작을 구동한다.
컨트롤러(120)가 하나의 모션커맨드를 실행하는 경우, 드라이버(130)는 하나의 로봇을 구성하는 적어도 하나의 하드웨어의 동작을 구동할 수 있다.
컨트롤러(120)가 모션커맨드그룹에 포함된 복수의 모션커맨드들을 동시에 실행하는 경우, 드라이버(130)는 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동할 수 있다.
로봇(200)은 복수의 액추에이터들(221, 222, 223)을 포함할 수 있다. 예를 들어, 복수의 액추에이터들(221, 222, 223)은 로봇암의 복수의 관절들을 구성할 수 있다. 이하에서, 모터는 액추에이터(220)의 일종이다.
컨트롤러(120)는 비실시간 태스크(non-realtime task)와 실시간 태스크(realtime task)를 각각 독립적으로 처리할 수 있다. 상세하게는, 컨트롤러(120)는 제한 시간 내에 실행되지 않아도 되는 루틴들을 비실시간 태스크로 할당하고, 제한 시간 내에 실행되어야 하는 루틴들을 실시간 태스크로 할당할 수 있다.
한편, 컨트롤러(120)는 비실시간 태스크(non-realtime task)를 실행하는 비동기 태스크 쓰레드(asynchronous task thread)와 실시간 태스크(realtime task)를 실행하는 동기 태스크 쓰레드(synchronous task thread)를 함께 실행할 수 있다.
이하에서, 도 2 및 도 3을 각각 참조하여 비실시간 로봇 제어 방법 및 실시간 로봇 제어 방법에 대하여 상세하게 설명한다.
도 2는 일 실시예에 따른 비실시간 로봇 제어 방법을 설명하기 위한 흐름도이다.
도 1 및 도 2를 참조하면, 컨트롤러(120)는 로봇이 비실시간 태스크를 수행하도록 서비스매니저(ServiceManager) 클래스(1), 컨트롤매니저(ControlManager) 클래스(2), 모션그룹컨트롤(MotionGroupControl) 클래스(3), 모션커맨드그룹(MotionCommandGroup) 클래스(4), 및 모션커맨드(MotionCommand) 클래스(5)로부터 각각 함수를 호출할 수 있다.
서비스매니저 클래스(1)는 외부 시스템과 통신하기 위해 할당된 클래스이다. 서비스매니저 클래스(1)는 컨트롤매니저 클래스(2)와 통신하기 위한 함수들을 포함할 수 있다. 로봇 제어 시스템(100, 도 1)이 개발되면, 서비스매니저 클래스(1)는 외부 시스템과 통신하기 위한 로직들을 포함하도록 특성화될 필요가 있다.
컨트롤매니저 클래스(2)는 서비스매니저 클래스(1) 또는 하드웨어매니저 클래스(7, 도 3)와 통신하기 위해 할당된 클래스이다.
모션그룹컨트롤 클래스(3)는 모션커맨드그룹 클래스(4)를 관리하고 실행하기 위해 할당된 클래스이다.
모션커맨드그룹 클래스(4)는 복수의 모션커맨드들을 관리하고 실행하기 위해 할당된 클래스이다.
모션커맨드 클래스(5)는 모션커맨드를 관리하고 실행하기 위해 할당된 클래스이다. 모션커맨드는 로봇의 동작을 기술하는 최소의 단위로서, 로봇의 동작을 완수하기 위한 적어도 하나의 파라미터를 포함할 수 있다. 동작을 완수하기 위한 적어도 하나의 파라미터는 예컨대, 하나의 로봇에 포함된 적어도 하나의 로봇암의 동작 시작 지점, 동작 종료 지점, 동작 수행 속도, 및 저크 퍼센트(jerk percent) 등일 수 있다.
먼저, 인터페이스(110)는 사용자 입력을 수신한다. 인터페이스(110)를 통해 사용자 입력이 수신되면, 컨트롤러(120)는 서비스매니저 클래스(1)의 AcceptCommand() 함수를 호출한다(S111).
이어서, 컨트롤러(120)는 사용자 입력에 대응하는 모션커맨드를 생성한다. 이를 위해, 컨트롤러(120)는 서비스매니저 클래스(1)의 Create() 함수를 호출하여 모션커맨드 클래스(5)에 의해 관리 및 실행되는 모션커맨드를 생성한다(S113).
그리고, 컨트롤러(120)는 사용자 입력에 대응하는 모션커맨드그룹을 생성한다. 이를 위해, 컨트롤러(120)는 서비스매니저 클래스(1)의 Create() 함수를 호출하여 모션커맨드그룹 클래스(4)에 의해 관리 및 실행되는 모션커맨드그룹을 생성한다(S115).
이어서, 컨트롤러(120)는 모션커맨드를 모션커맨드그룹에 추가한다. 이때, 컨트롤러(120)는 서비스매니저 클래스(1)의 AddCommand() 함수를 호출하여 모션커맨드 클래스(5)의 모션커맨드를 모션커맨드그룹 클래스(4)에 추가한다(S117).
이어서, 컨트롤러(120)는 서비스매니저 클래스(1)의 AddCommandGroup() 함수를 호출하여 모션커맨드그룹 클래스(4)의 모션커맨드그룹을 모션그룹컨트롤 클래스(3)로 보낸다(S119).
이어서, 컨트롤러(120)는 모션그룹컨트롤 클래스(3)의 Initialize() 함수를 호출하여 모션커맨드그룹 클래스(4)를 초기화하고(S121), 모션커맨드그룹 클래스(4)의 Initialize() 함수를 호출하여 모션커맨드 클래스(5)를 초기화한다(S123).
도 2에 도시된 루틴들은 시간이 많이 소요되고, 소요되는 시간을 추정하기 어려우며, 실시간으로 실행될 필요가 없으므로, 비실시간 태스크로 할당될 수 있다.
이하에서는, 앞서 설명한 부분과 동일한 부분에 대한 설명은 간략히 하거나 생략한다.
도 3은 일 실시예에 따른 실시간 로봇 제어 방법을 설명하기 위한 흐름도이다.
도 1 및 도 3을 참조하면, 컨트롤러(120)는 로봇이 실시간 태스크를 수행하도록 컨트롤매니저 클래스(2), 모션그룹컨트롤 클래스(3), 모션커맨드그룹 클래스(4), 모션커맨드 클래스(5), 모션프로파일러(MotionProfiler) 클래스(6), 하드웨어매니저(HardwareManager) 클래스(7), 드라이브매니저(DriveManager) 클래스(8), 드라이브(Drive) 클래스(9), 및 모터(Motor) 클래스(10)로부터 각각 함수를 호출할 수 있다.
모션프로파일러 클래스(6)는 모션커맨드에 포함된 적어도 하나의 파라미터를 분석하는 알고리즘에 관한 클래스이다.
하드웨어매니저 클래스(7)는 컨트롤매니저 클래스(2)와 통신하기 위해 할당된 클래스이다.
드라이브매니저 클래스(8)는 드라이브간의 논리적 관계를 나타내기 위해 할당된 클래스이다. 드라이브간의 논리적 관계는 예컨대, 네트워크를 통해 어떤 드라이브가 얼마나 많이 연결되어 있는지 여부에 관한 것일 수 있다.
드라이브 클래스(9)는 드라이브에 연결된 모터들을 관리하기 위해 할당된 클래스이다. 예를 들어, 하나의 드라이브가 하나의 모터를 관리할 수도 있고, 하나의 드라이브가 복수의 모터를 관리할 수도 있다.
모터 클래스(10)는 모터를 일반화하기 위해 할당된 클래스이다. 다시 말해, 모터 클래스(10)는 일반적인 모터의 상태를 나타낼 수 있다. 일반적인 모터의 상태는 모터의 위치, 속도, 가속도, 및 오류 상태 등을 의미할 수 있다.
이하의 동작 프로파일링 및 네트워크 패킷 교환과 같은 루틴들은 실시간 태크스로 처리될 수 있다.
일 실시예에 따르면, 컨트롤러(120)는 모션커맨드그룹에 포함된 복수의 모션커맨드를 각각 분석하여 하드웨어에 의해 해석 가능한 데이터를 생성한다.
이를 위해, 먼저, 컨트롤러(120)는 컨트롤매니저 클래스(2)의 모션그룹컨트롤 클래스(3)에 대한 Run() 함수를 호출하고(S211), 모션그룹컨트롤 클래스(3)의 모션커맨드그룹 클래스(4)에 대한 Run() 함수를 호출하고(S213), 모션커맨드그룹 클래스(4)의 모션커맨드 클래스(5)에 대한 Run() 함수를 호출한다(S215).
이어서, 컨트롤러(120)는 모션커맨드 클래스(5)의 모션프로파일러 클래스(6)에 대한 Profile() 함수를 호출한다(S217). 그 결과, 컨트롤러(120)는 모션커맨드에 포함된 적어도 하나의 파라미터를 계산할 수 있다.
그리고, 컨트롤러(120)는 모션커맨드 클래스(5)의 모터 클래스(10)에 대한 SetCommnadValues() 함수를 호출한다(S219). 그 결과, 컨트롤러(120)는 모터 클래스(10)에 모션커맨드를 저장할 수 있다.
한편, 컨트롤러(120)는 컨트롤매니저 클래스(2)의 하드웨어매니저 클래스(7)에 대한 Run() 함수를 호출하고(S221), 하드웨어매니저 클래스(7)의 드라이브매니저 클래스(8)에 대한 Run() 함수를 호출하고(S223), 드라이브매니저 클래스(8)의 드라이브 클래스(9)에 대한 Run() 함수를 호출한다(S225).
이어서, 컨트롤러(120)는 드라이브 클래스(9)의 모터 클래스(10)에 대한 GenerateTxPacket() 함수를 호출한다(S227). 그 결과, 컨트롤러(120)는 모터 클래스(10)로부터 모션커맨드를 얻어서 패킷을 생성할 수 있다.
이어서, 컨트롤러(120)는 하드웨어매니저 클래스(7)의 드라이브매니저 클래스(8)에 대한 DoTxRx() 함수를 호출한다(S229). 그 결과, 컨트롤러(120)는 네트워크를 통해 패킷을 교환할 수 있다.
이어서, 컨트롤러(120)는 드라이브매니저 클래스(8)의 드라이브 클래스(9)에 대한 AnalyzeRxPacket() 함수를 호출하고(S231), 드라이브 클래스(9)의 모터 클래스(10)에 대한 SetActualValues() 함수를 호출한다(S233). 그 결과, 컨트롤러(120)는 수신된 패킷을 분석하고, 수신된 패킷에서 제공되는 모터의 상태에 대한 실제 값을 모터 클래스(10)에 저장할 수 있다.
이에 따라, 컨트롤러(120)는 모터 클래스(10)에 저장된 데이터에 따라 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어 예컨대, 모터의 동작을 동시에 구동할 수 있다. 이때, 컨트롤러(120)가 제어하는 복수의 로봇들 각각의 동작은 서로 동일할 수도 있고, 상이할 수도 있다.
도 3에 도시된 루틴들은 실시간으로 실행될 필요가 있으므로, 실시간 태스크로 할당될 수 있다.
이하에서, 도 4를 참조하여 비주기적 로봇 제어 방법 및 주기적 로봇 제어 방법에 대하여 상세하게 설명한다.
도 4는 일 실시예에 따른 혼합형 로봇 제어 방법을 설명하기 위한 흐름도이다.
도 1 및 도 4를 참조하면, 컨트롤러(120)는 로봇이 비동기 태스크 및 동기 태스크를 수행하도록 쓰레드매니저(ThreadManager) 클래스(11), 컨트롤매니저 클래스(2), 모션그룹컨트롤 클래스(3), 모션커맨드그룹 클래스(4), 모션커맨드 클래스(5), 모션프로파일러 클래스(6), 하드웨어매니저 클래스(7), 드라이브매니저 클래스(8), 드라이브 클래스(9), 모터 클래스(10), 및 쓰레드안전큐(ThreadSafeQueue) 클래스(12)로부터 각각 함수를 호출할 수 있다.
쓰레드매니저 클래스(11)는 비동기 태스크 쓰레드 및 동기 태스크 쓰레드를 관리하기 위해 할당된 클래스이다.
쓰레드안전큐 클래스(12)는 비동기 데이터를 저장하기 위해 할당된 클래스이다.
일 실시예에 따른 컨트롤러(120)는 모션커맨드를 비주기적으로 분석하기 위하여, 쓰레드매니저 클래스(11)로부터 비동기 실행 인터럽트 함수를 호출할 수 있다. 그 결과, 컨트롤러(120)는 이하의 S311 단계 내지 S319 단계의 동작을 비동기 태스크 쓰레드(Asynchronous Task Thread)로 관리할 수 있다.
상세하게는, 컨트롤러(120)는 쓰레드매니저 클래스(11)의 컨트롤매니저 클래스(2)에 대한 AsyncRunInterrupt() 함수를 호출한다(S310). 즉, 컨트롤러(120)는 쓰레드매니저 클래스(11)의 컨트롤매니저 클래스(2)에 대한 비동기 실행 인터럽트 함수를 호출할 수 있다.
이어서, 컨트롤러(120)는 컨트롤매니저 클래스(2)의 모션그룹컨트롤 클래스(3)에 대한 AsyncRun() 함수를 호출하고(S311), 모션그룹컨트롤 클래스(3)의 모션커맨드그룹 클래스(4)에 대한 AsyncRun() 함수를 호출하고(S313), 모션커맨드그룹 클래스(4)의 모션커맨드 클래스(5)에 대한 AsyncRun() 함수를 호출한다(S315).
이어서, 컨트롤러(120)는 모션커맨드 클래스(5)의 모션프로파일러 클래스(6)에 대한 Profile() 함수를 호출한다(S317). 모션커맨드 클래스(5)의 Profile() 함수는, 모션커맨드그룹 클래스(4)의 AsyncRun() 함수에 대한 응답이므로, 임의의 시점에 호출될 수 있다.
그리고, 컨트롤러(120)는 모션프로파일러 클래스(6)의 쓰레드안전큐 클래스(12)에 대한 SetCommnadValues() 함수를 호출한다(S319). 즉, 컨트롤러(120)는 비동기 실행 인터럽트 함수에 대응하여 모션커맨드를 쓰레드 안전큐 클래스(12)에 설정할 수 있다.
다시 말해, 컨트롤러(120)는 모션커맨드를 비주기적으로 분석하고, 임의의 시점에 모션커맨드를 모터 클래스(10)에 저장할 수 있다.
본 실시예에 따르면, S311 단계 내지 S319 단계의 동작이 비동기로 수행됨으로써, S311 단계 내지 S319 단계의 연산이 동기 태스트 쓰레드(synchrous task thread)의 주기성에 미치는 영향을 최소화할 수 있다.
일 실시예에 따른 컨트롤러(120)는 하드웨어에 의해 해석 가능한 데이터를 주기적으로 생성하기 위하여, 쓰레드매니저 클래스(11)로부터 동기 실행 인터럽트 함수를 호출할 수 있다. 그 결과, 컨트롤러(120)는 S323 단계 내지 S333 단계의 동작을 동기 태스크 쓰레드(Synchronous Task Thread)로 관리할 수 있다.
상세하게는, 컨트롤러(120)는 쓰레드매니저 클래스(11)의 하드웨어매니저 클래스(7)에 대한 SyncRunInterrupt() 함수를 호출한다(S320). 즉, 컨트롤러(120)는 쓰레드매니저 클래스(11)의 하드웨어매니저 클래스(7)에 대한 동기 실행 인터럽트 함수를 호출할 수 있다.
이어서, 컨트롤러(120)는 하드웨어매니저 클래스(7)의 드라이브매니저 클래스(8)에 대한 SyncRun() 함수를 호출하고(S323), 드라이브매니저 클래스(8)의 드라이브 클래스(9)에 대한 SyncRun() 함수를 호출한다(S325).
이어서, 컨트롤러(120)는 드라이브 클래스(9)의 쓰레드안전큐 클래스(12)에 대한 GetCommandValues() 함수를 호출한다(S326). 즉, 컨트롤러(120)는 동기 실행 인터럽트 함수에 대응하여 쓰레드안전큐 클래스(12)로부터 모션커맨드를 얻을 수 있다. 즉, 컨트롤러(120)는 동기 실행 인터럽트 함수에 대응하여 쓰레드안전큐 클래스(12)로부터 모션커맨드를 얻을 수 있다.
드라이브 클래스(9)의 GetCommandValues() 함수는, 드라이브매니저 클래스(8)의 SyncRun() 함수에 대한 응답이므로, 소정의 시점에 호출될 수 있다. 소정의 시점은 소정의 주기를 의미할 수 있고, 드라이브 클래스(9)의 GetCommandValues() 함수는 예를 들어, 500μm(micrometer)마다 호출될 수 있다.
그 결과, 컨트롤러(120)는 소정의 주기로 쓰레드안전큐 클래스(12)에 저장된 모션커맨드를 얻을 수 있다.
이어서, 컨트롤러(120)는 드라이브 클래스(9)의 모터 클래스(10)에 대한 GenerateTxPacket() 함수를 호출한다(S327).
이어서, 컨트롤러(120)는 하드웨어매니저 클래스(7)의 드라이브매니저 클래스(8)에 대한 DoTxRx() 함수를 호출하고(S329), 드라이브매니저 클래스(8)의 드라이브 클래스(9)에 대한 AnalyzeRxPacket() 함수를 호출하고(S331), 드라이브 클래스(9)의 모터 클래스(10)에 대한 SetActualValue() 함수를 호출한다(S333).
그 결과, 컨트롤러(120)는 모터 클래스(10)에 소정의 주기로 모터의 상태에 대한 실제 값을 저장할 수 있다. 다시 말해, 컨트롤러(120)는 모션커맨드에 기초하여 하드웨어에 의해 해석 가능한 데이터를 주기적으로 전송할 수 있다.
이어서, 드라이버(130)는 하드웨어에 의해 해석 가능한 데이터에 따라 적어도 하나의 하드웨어의 동작을 구동한다. 이때, 드라이버(130)는 주기적으로 생성되는 데이터에 따라 적어도 하나의 하드웨어의 동작을 주기적으로 구동할 수 있다.
한편, 컨트롤러(120)는 모션커맨드그룹에 포함된 복수의 모션커맨드들을 동시에 실행할 수 있다. 이때, 드라이버(130)는 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동할 수 있다.
본 실시예에 따르면, S323 단계 내지 S333 단계의 동작이 동기로 수행됨으로써 네트워크의 안전성을 높이고, 결과적으로 jitter를 줄여 반복정밀도(repeatability)와 같은 성능 향상을 기대할 수 있다.
한편, 본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이제까지 본 발명에 대하여 실시 예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 본 발명을 구현할 수 있음을 이해할 것이다. 그러므로 상기 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 한다.
100: 로봇 제어 시스템
110: 인터페이스
120: 컨트롤러
130: 드라이버
200: 로봇
210: 본체
220: 액추에이터
221, 222, 223: 복수의 액추에이터들

Claims (18)

  1. 사용자 입력을 수신하는 인터페이스;
    상기 사용자 입력에 대응하는 모션커맨드 및 상기 모션커맨드를 포함하는 모션커맨드그룹을 각각 생성하고, 상기 모션커맨드를 분석하여 하드웨어에 의해 해석 가능한 데이터를 생성하는 컨트롤러; 및
    상기 데이터에 따라 적어도 하나의 하드웨어의 동작을 구동하는 드라이버;를 포함하는, 로봇 제어 시스템.
  2. 제1항에 있어서,
    상기 컨트롤러는 상기 모션커맨드 및 상기 모션커맨드그룹을 비실시간으로 생성하고, 상기 하드웨어에 의해 해석 가능한 데이터를 실시간으로 생성하는, 로봇 제어 시스템.
  3. 제1항에 있어서,
    상기 모션커맨드는 상기 적어도 하나의 하드웨어의 동작에 따른 최종 결과값을 포함하는, 로봇 제어 시스템.
  4. 제1항에 있어서,
    상기 적어도 하나의 하드웨어는 하나의 로봇을 구성하는, 로봇 제어 시스템.
  5. 제1항에 있어서,
    상기 모션커맨드그룹은 복수의 모션커맨드들을 포함하고,
    상기 컨트롤러는 상기 모션커맨드그룹에 포함된 상기 복수의 모션커맨드들을 동시에 실행하고,
    상기 드라이버는 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동하는, 로봇 제어 시스템.
  6. 제1항에 있어서,
    상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하고, 상기 하드웨어에 의해 해석 가능한 데이터를 주기적으로 생성하는, 로봇 제어 시스템.
  7. 제6항에 있어서,
    상기 모션커맨드는 상기 적어도 하나의 하드웨어의 동작에 따른 최종 결과값을 포함하는, 로봇 제어 시스템.
  8. 제6항에 있어서,
    상기 적어도 하나의 하드웨어는 하나의 로봇을 구성하는, 로봇 제어 시스템.
  9. 제6항에 있어서,
    상기 모션커맨드그룹은 복수의 모션커맨드들을 포함하고,
    상기 컨트롤러는 상기 모션커맨드그룹에 포함된 상기 복수의 모션커맨드들을 동시에 실행하고,
    상기 드라이버는 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동하는, 로봇 제어 시스템.
  10. 제6항에 있어서,
    상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하기 위하여, 쓰레드매니저 클래스로부터 비동기 실행 인터럽트 함수를 호출하는, 로봇 제어 시스템.
  11. 제10항에 있어서,
    상기 컨트롤러는 상기 비동기 실행 인터럽트 함수에 대응하여, 상기 모션커맨드를 쓰레드안전큐 클래스에 설정하는, 로봇 제어 시스템.
  12. 제11항에 있어서,
    상기 컨트롤러는, 상기 하드웨어에 의해 해석 가능한 데이터를 주기적으로 생성하기 위하여, 상기 쓰레드매니저 클래스로부터 동기 실행 인터럽트 함수를 호출하고, 상기 동기 실행 인터럽트 함수에 대응하여, 상기 쓰레드안전큐 클래스로부터 상기 모션커맨드를 얻는, 로봇 제어 시스템.
  13. 인터페이스, 컨트롤러, 및 드라이버를 포함하는 로봇 제어 시스템에 의하여 로봇을 제어하는 방법에 있어서,
    상기 인터페이스에 의하여, 사용자 입력을 수신하는 단계;
    상기 컨트롤러에 의하여, 상기 사용자 입력에 대응하는 모션커맨드 및 상기 모션커맨드를 포함하는 모션커맨드그룹을 생성하는 단계;
    상기 컨트롤러에 의하여, 상기 모션커맨드를 분석하여 하드웨어에 의해 해석 가능한 데이터를 생성하는 단계; 및
    상기 드라이버에 의하여, 상기 데이터에 따라 적어도 하나의 하드웨어의 동작을 구동하는 단계;를 포함하는, 로봇 제어 방법.
  14. 제13항에 있어서,
    상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하고, 상기 데이터를 주기적으로 생성하는, 로봇 제어 방법.
  15. 제13항에 있어서,
    상기 컨트롤러에 의하여, 상기 모션커맨드그룹에 포함된 복수의 모션커맨드들을 동시에 실행하는 단계; 및
    상기 드라이버에 의하여, 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동하는 단계;를 더 포함하는, 로봇 제어 방법.
  16. 제13항에 있어서,
    상기 모션커맨드는 상기 적어도 하나의 하드웨어의 동작에 따른 최종 결과값을 포함하는, 로봇 제어 방법.
  17. 제13항에 있어서,
    상기 모션커맨드를 분석하여 상기 데이터를 생성하는 단계는,
    상기 컨트롤러에 의하여, 쓰레드매니저 클래스의 컨트롤매니저 클래스에 대한 비동기 실행 인터럽트 함수를 호출하는 단계; 및
    상기 컨트롤러에 의하여, 상기 비동기 실행 인터럽트 함수에 대응하여 상기 모션커맨드를 쓰레드안전큐 클래스에 설정하는 단계;를 포함하는, 로봇 제어 방법.
  18. 제17항에 있어서,
    상기 모션커맨드를 분석하여 상기 데이터를 생성하는 단계는,
    상기 컨트롤러에 의하여, 상기 쓰레드매니저 클래스의 하드웨어매니저 클래스에 대한 동기 실행 인터럽트 함수를 호출하는 단계; 및
    상기 컨트롤러에 의하여, 상기 동기 실행 인터럽트 함수에 대응하여, 상기 쓰레드안전큐 클래스로부터 상기 모션커맨드를 얻는 단계;를 더 포함하는, 로봇 제어 방법.
KR1020160130827A 2015-10-26 2016-10-10 로봇 제어 시스템 및 방법 KR102543212B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20150148831 2015-10-26
KR1020150148831 2015-10-26

Publications (2)

Publication Number Publication Date
KR20170048164A true KR20170048164A (ko) 2017-05-08
KR102543212B1 KR102543212B1 (ko) 2023-06-14

Family

ID=58562224

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160130827A KR102543212B1 (ko) 2015-10-26 2016-10-10 로봇 제어 시스템 및 방법

Country Status (3)

Country Link
US (1) US10780583B2 (ko)
KR (1) KR102543212B1 (ko)
CN (1) CN106610632A (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7124389B2 (ja) * 2018-03-30 2022-08-24 セイコーエプソン株式会社 制御装置、ロボット、およびロボットシステム
CN111745636B (zh) * 2019-05-15 2022-01-07 北京京东乾石科技有限公司 机器人控制方法及控制系统、存储介质及电子设备
CN110549334A (zh) * 2019-08-15 2019-12-10 大连大华中天科技有限公司 一种四自由度机械手臂的控制方法
CN112091978A (zh) * 2020-09-24 2020-12-18 哈尔滨工业大学 机械臂实时控制系统
CN114227689B (zh) * 2021-12-30 2023-11-17 深圳市优必选科技股份有限公司 机器人动作控制系统及其动作控制方法
CN115771148B (zh) * 2023-02-10 2023-05-05 辰星(天津)自动化设备有限公司 一种基于zynq平台的驱控一体机器人系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100221491B1 (ko) * 1992-09-16 1999-09-15 윤종용 다수의 로보트 제어방법
JP2007219642A (ja) * 2006-02-14 2007-08-30 Fanuc Ltd 制御システム
KR20110047842A (ko) 2009-10-30 2011-05-09 삼성전자주식회사 로봇 및 그 제어방법
KR20120026744A (ko) * 2010-09-10 2012-03-20 한국과학기술원 분산 실시간 제어 소프트웨어가 구비된 지능 로봇용 다중 프로세서
US20120130400A1 (en) * 1998-02-24 2012-05-24 Hansen Medical, Inc. Flexible instrument
KR20120085404A (ko) * 2011-01-24 2012-08-01 삼성전자주식회사 로봇 제어 시스템 및 로봇 제어 방법

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4868474A (en) * 1986-11-20 1989-09-19 Westinghouse Electric Corp. Multiprocessor position/velocity servo control for multiaxis digital robot control system
US5737500A (en) * 1992-03-11 1998-04-07 California Institute Of Technology Mobile dexterous siren degree of freedom robot arm with real-time control system
JP2001277163A (ja) * 2000-04-03 2001-10-09 Sony Corp ロボットの制御装置及び制御方法
US20040240981A1 (en) * 2003-05-29 2004-12-02 I-Scan Robotics Robot stacking system for flat glass
US8398541B2 (en) * 2006-06-06 2013-03-19 Intuitive Surgical Operations, Inc. Interactive user interfaces for robotic minimally invasive surgical systems
KR20070075957A (ko) 2006-01-17 2007-07-24 주식회사 로보스타 멀티 타스킹을 위한 타스크 기반 로봇 제어시스템
JP2008302449A (ja) 2007-06-06 2008-12-18 Fanuc Ltd ロボット制御装置
JP5190023B2 (ja) * 2009-05-20 2013-04-24 株式会社神戸製鋼所 溶接設定装置、溶接ロボットシステムおよび溶接設定プログラム
CN102540973B (zh) 2010-12-09 2013-06-26 中国科学院沈阳计算技术研究所有限公司 一种用于数控系统的命令多发机制的实现方法
US8879748B2 (en) * 2011-03-15 2014-11-04 Microsoft Corporation Multi-protocol wireless audio client device
KR101237471B1 (ko) 2011-03-31 2013-02-27 경북대학교 산학협력단 모바일 디바이스 및 로봇 암 제어 방법
US9789603B2 (en) * 2011-04-29 2017-10-17 Sarcos Lc Teleoperated robotic system
CN102279766B (zh) 2011-08-30 2014-05-07 华为技术有限公司 并行模拟多个处理器的方法及系统、调度器
US9770828B2 (en) * 2011-09-28 2017-09-26 The Johns Hopkins University Teleoperative-cooperative robotic system
US8868241B2 (en) * 2013-03-14 2014-10-21 GM Global Technology Operations LLC Robot task commander with extensible programming environment
KR102283176B1 (ko) * 2013-03-15 2021-07-29 인튜어티브 서지컬 오퍼레이션즈 인코포레이티드 로봇 수술 시스템에서의 수술 중 도구의 교환
KR101420852B1 (ko) 2013-10-02 2014-07-18 한국기계연구원 중공형 모듈을 적용한 다수개의 팔을 가진 로봇의 신호 전달 장치
KR101644219B1 (ko) 2013-11-29 2016-08-01 주식회사 포스코아이씨티 공장 관리 시스템 및 방법
WO2016025941A1 (en) * 2014-08-15 2016-02-18 University Of Central Florida Research Foundation, Inc. Control interface for robotic humanoid avatar system and related methods
GB2549072B (en) * 2016-03-24 2020-07-29 Cmr Surgical Ltd Robot control
US10857347B2 (en) * 2017-09-19 2020-12-08 Pulse Biosciences, Inc. Treatment instrument and high-voltage connectors for robotic surgical system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100221491B1 (ko) * 1992-09-16 1999-09-15 윤종용 다수의 로보트 제어방법
US20120130400A1 (en) * 1998-02-24 2012-05-24 Hansen Medical, Inc. Flexible instrument
JP2007219642A (ja) * 2006-02-14 2007-08-30 Fanuc Ltd 制御システム
KR20110047842A (ko) 2009-10-30 2011-05-09 삼성전자주식회사 로봇 및 그 제어방법
KR20120026744A (ko) * 2010-09-10 2012-03-20 한국과학기술원 분산 실시간 제어 소프트웨어가 구비된 지능 로봇용 다중 프로세서
KR20120085404A (ko) * 2011-01-24 2012-08-01 삼성전자주식회사 로봇 제어 시스템 및 로봇 제어 방법

Also Published As

Publication number Publication date
KR102543212B1 (ko) 2023-06-14
CN106610632A (zh) 2017-05-03
US20170113350A1 (en) 2017-04-27
US10780583B2 (en) 2020-09-22

Similar Documents

Publication Publication Date Title
KR20170048164A (ko) 로봇 제어 시스템 및 방법
CN109388107B (zh) 控制装置
JP2019061466A (ja) 制御装置
JP7310465B2 (ja) 同期制御装置、同期制御システム、同期制御方法、及びシミュレーション装置
JP2019061467A (ja) サポート装置およびサポートプログラム
JP2018173883A (ja) 制御装置、制御プログラム、制御システム、および制御方法
US20190079499A1 (en) Control device and control method
US11491653B2 (en) Method and apparatus for robotic machining
CN111360813B (zh) 一种基于边缘云服务的多机器人控制器
WO2021181799A1 (ja) ロボット制御システムおよび制御方法
KR101994441B1 (ko) 관성항법장치를 포함한 비행체 유도조종 hwil 시뮬레이션 시스템 및 그 구성 방법
KR100249821B1 (ko) 압연공정 자동 판 두께 제어기의 실시간 시뮬레이터 및 시뮬레이션 모델링 방법
Ziebinski et al. Soft real-time systems for low-cost unmanned ground vehicle
WO2009141006A1 (en) A method and a system for controlling an industrial robot in accordance with a set of motion control parameters
Deng et al. A real-time walking robot control system based on Linux RTAI
CN102156448B (zh) 控制操纵器的方法和装置
JP2021077219A (ja) 制御装置
Dai et al. A PLCopen-Based Approach for Utilizing Powerful Industrial Robot Functions in PLC-Controlled Applications
KR20040060825A (ko) 모션 제어의 실시간 응답을 위한 궤적발생방법 및 시스템
EP4155035A1 (en) Method for controlling multiple execution mechanisms, electronic device, and storage medium
WO2022264424A1 (ja) 制御装置及び制御方法
JP7455239B2 (ja) 数値制御システム、タスク割り当て変更装置及び数値制御方法
Vistein et al. Instantaneous switching between real-time commands for continuous execution of complex robotic tasks
Gobillot et al. Periodic state-machine aware real-time analysis
EP4067016A1 (en) Control device

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)