KR102543212B1 - 로봇 제어 시스템 및 방법 - Google Patents
로봇 제어 시스템 및 방법 Download PDFInfo
- Publication number
- KR102543212B1 KR102543212B1 KR1020160130827A KR20160130827A KR102543212B1 KR 102543212 B1 KR102543212 B1 KR 102543212B1 KR 1020160130827 A KR1020160130827 A KR 1020160130827A KR 20160130827 A KR20160130827 A KR 20160130827A KR 102543212 B1 KR102543212 B1 KR 102543212B1
- Authority
- KR
- South Korea
- Prior art keywords
- motion command
- controller
- hardware
- class
- motion
- Prior art date
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1602—Programme controls characterised by the control system, structure, architecture
- B25J9/161—Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/18—Numerical 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/414—Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller
- G05B19/4141—Structure 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
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1679—Programme controls characterised by the tasks executed
- B25J9/1682—Dual arm manipulator; Coordination of several manipulators
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1602—Programme controls characterised by the control system, structure, architecture
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J13/00—Controls for manipulators
- B25J13/06—Control stands, e.g. consoles, switchboards
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1628—Programme controls characterised by the control loop
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1679—Programme controls characterised by the tasks executed
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/31—From computer integrated manufacturing till monitoring
- G05B2219/31112—Interface, SIOMS standard I-O for mechatronic systems, device drivers
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/39—Robotics, robotics to robotics hand
- G05B2219/39376—Hierarchical, learning, recognition and skill level and adaptation servo level
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/39—Robotics, robotics to robotics hand
- G05B2219/39382—Level, organization and coordination or distribution of tasks and execution level
Landscapes
- Engineering & Computer Science (AREA)
- Mechanical Engineering (AREA)
- Robotics (AREA)
- Automation & Control Theory (AREA)
- Physics & Mathematics (AREA)
- Manufacturing & Machinery (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (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
본 발명은 로봇 제어 시스템 및 방법에 관한 것이다.
로봇 제어 애플리케이션 아키텍처는 로봇을 제어하는 컨트롤 계층, 복수의 로봇들을 제어하는 계획 관리 계층, 및 복수의 로봇들을 포함하는 공장의 궁극적인 목표를 결정하는 최상위의 목표 관리 계층을 포함할 수 있다.
일반적으로 계획 관리 계층에서 로봇을 제어하는 방법이 연구되어 왔으나, 마이크로컨트롤러의 기능이 풍부해짐에 따라 컨트롤 계층에서 로봇을 제어하는 다양한 방법의 연구가 요구되고 있다.
본 발명이 해결하고자 하는 과제는 컨트롤 계층에서 로봇의 동작을 제어하는 로봇 제어 시스템 및 방법을 제공하는데 있다.
본 발명이 해결하고자 하는 과제를 해결하기 위한 일 실시예에 따른 로봇 제어 시스템은 사용자 입력을 수신하는 인터페이스, 상기 사용자 입력에 대응하는 모션커맨드 및 상기 모션커맨드를 포함하는 모션커맨드그룹을 각각 생성하고, 상기 모션커맨드를 분석하여 하드웨어에 의해 해석 가능한 데이터를 생성하는 컨트롤러, 및 상기 데이터에 따라 적어도 하나의 하드웨어의 동작을 구동하는 드라이버;를 포함한다.
본 실시예에서, 상기 컨트롤러는 상기 모션커맨드 및 상기 모션커맨드그룹을 비실시간으로 생성하고, 상기 하드웨어에 의해 해석 가능한 데이터를 실시간으로 생성할 수 있다.
본 실시예에서, 상기 모션커맨드는 상기 적어도 하나의 하드웨어의 동작에 따른 최종 결과값을 포함할 수 있다.
본 실시예에서, 상기 적어도 하나의 하드웨어는 하나의 로봇을 구성할 수 있다.
본 실시예에서, 상기 모션커맨드그룹은 복수의 모션커맨드들을 포함하고, 상기 컨트롤러는 상기 모션커맨드그룹에 포함된 상기 복수의 모션커맨드들을 동시에 실행하고, 상기 드라이버는 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동할 수 있다.
본 실시예에서, 상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하고, 상기 하드웨어에 의해 해석 가능한 데이터를 주기적으로 생성할 수 있다.
본 실시예에서, 상기 모션커맨드는 상기 적어도 하나의 하드웨어의 동작에 따른 최종 결과값을 포함할 수 있다.
본 실시예에서, 상기 적어도 하나의 하드웨어는 하나의 로봇을 구성할 수 있다.
본 실시예에서, 상기 모션커맨드그룹은 복수의 모션커맨드들을 포함하고, 상기 컨트롤러는 상기 모션커맨드그룹에 포함된 상기 복수의 모션커맨드들을 동시에 실행하고, 상기 드라이버는 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동할 수 있다.
본 실시예에서, 상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하기 위하여, 쓰레드매니저 클래스로부터 비동기 실행 인터럽트 함수를 호출할 수 있다.
본 실시예에서, 상기 컨트롤러는 상기 비동기 실행 인터럽트 함수에 대응하여, 상기 모션커맨드를 쓰레드안전큐 클래스에 설정할 수 있다.
본 실시예에서, 상기 컨트롤러는, 상기 하드웨어에 의해 해석 가능한 데이터를 주기적으로 생성하기 위하여, 상기 쓰레드매니저 클래스로부터 동기 실행 인터럽트 함수를 호출하고, 상기 동기 실행 인터럽트 함수에 대응하여, 상기 쓰레드안전큐 클래스로부터 상기 모션커맨드를 얻을 수 있다.
본 발명이 해결하고자 하는 과제를 해결하기 위한 일 실시예에 따른 로봇 제어 방법은 인터페이스, 컨트롤러, 및 드라이버를 포함하는 로봇 제어 시스템에 의하여 로봇을 제어하는 방법에 있어서, 상기 인터페이스에 의하여 사용자 입력을 수신하는 단계, 상기 컨트롤러에 의하여 상기 사용자 입력에 대응하는 모션커맨드 및 상기 모션커맨드를 포함하는 모션커맨드그룹을 생성하는 단계, 상기 컨트롤러에 의하여 상기 모션커맨드를 분석하여 하드웨어에 의해 해석 가능한 데이터를 생성하는 단계, 및 상기 드라이버에 의하여 상기 데이터에 따라 적어도 하나의 하드웨어의 동작을 구동하는 단계를 포함한다.
본 실시예에서, 상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하고, 상기 데이터를 주기적으로 생성할 수 있다.
본 실시예에서, 상기 컨트롤러에 의하여 상기 모션커맨드그룹에 포함된 복수의 모션커맨드들을 동시에 실행하는 단계, 및 상기 드라이버에 의하여 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동하는 단계를 더 포함할 수 있다.
본 실시예에서, 상기 모션커맨드는 상기 적어도 하나의 하드웨어의 동작에 따른 최종 결과값을 포함할 수 있다.
본 실시예에서, 상기 모션커맨드를 분석하여 상기 데이터를 생성하는 단계는, 상기 컨트롤러에 의하여 쓰레드매니저 클래스의 컨트롤매니저 클래스에 대한 비동기 실행 인터럽트 함수를 호출하는 단계, 및 상기 컨트롤러에 의하여 상기 비동기 실행 인터럽트 함수에 대응하여 상기 모션커맨드를 쓰레드안전큐 클래스에 설정하는 단계를 포함할 수 있다.
본 실시예에서, 상기 모션커맨드를 분석하여 상기 데이터를 생성하는 단계는, 상기 컨트롤러에 의하여 상기 쓰레드매니저 클래스의 하드웨어매니저 클래스에 대한 동기 실행 인터럽트 함수를 호출하는 단계, 및 상기 컨트롤러에 의하여 상기 동기 실행 인터럽트 함수에 대응하여, 상기 쓰레드안전큐 클래스로부터 상기 모션커맨드를 얻는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 따르면, 컨트롤 계층에서 로봇의 동작을 제어할 수 있다.
특히, 컨트롤 계층에서 하나의 로봇을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 제어하거나, 또는 복수의 로봇을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 제어할 수 있다.
또한, 본 발명의 실시예들에 따르면, 로봇 제어를 위한 비실시간 태스크와 실시간 태스크를 독립적으로 처리할 수 있다.
또한, 본 발명의 실시예들에 따르면, 로봇 제어를 위한 비동기 태스크와 동기 태스크를 함께 처리할 수 있다.
또한, 본 발명의 실시예들에 따르면, 연산량을 줄이면서도 네트워크의 안정성을 높여, 결과적으로 로봇의 반복정밀도와 같은 성능 향상을 이끌어낼 수 있다.
또한, 하나의 하드웨어에서 복수의 로봇을 제어할 수 있게끔 함으로서, 기존 복수 개의 하드웨어를 사용하는 것 보다 저발열, 하드웨어적 저비용, 저전력 사용의 효과를 기대할 수 있다.
도 1은 일 실시예에 따른 로봇 제어 시스템을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 비실시간 로봇 제어 방법을 설명하기 위한 흐름도이다.
도 3은 일 실시예에 따른 실시간 로봇 제어 방법을 설명하기 위한 흐름도이다.
도 4는 일 실시예에 따른 혼합형 로봇 제어 방법을 설명하기 위한 흐름도이다.
도 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: 복수의 액추에이터들
110: 인터페이스
120: 컨트롤러
130: 드라이버
200: 로봇
210: 본체
220: 액추에이터
221, 222, 223: 복수의 액추에이터들
Claims (19)
- 사용자 입력을 수신하는 인터페이스;
상기 사용자 입력에 대응하는 모션커맨드 및 상기 모션커맨드를 포함하는 모션커맨드그룹을 각각 생성하고, 상기 모션커맨드를 분석하여 하드웨어에 의해 해석 가능한 데이터를 생성하는 컨트롤러; 및
상기 데이터에 따라 적어도 하나의 하드웨어의 동작을 구동하는 드라이버;를 포함하고,
상기 컨트롤러는 상기 모션커맨드 및 상기 모션커맨드그룹을 비실시간으로 생성하고, 상기 하드웨어에 의해 해석 가능한 데이터를 실시간으로 생성하고,
상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하고, 상기 하드웨어에 의해 해석 가능한 데이터를 주기적으로 생성하고,
상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하기 위하여, 쓰레드매니저 클래스로부터 비동기 실행 인터럽트 함수를 호출하는, 로봇 제어 시스템. - 삭제
- 제1항에 있어서,
상기 모션커맨드는 상기 적어도 하나의 하드웨어의 동작에 따른 최종 결과값을 포함하는, 로봇 제어 시스템. - 제1항에 있어서,
상기 적어도 하나의 하드웨어는 하나의 로봇을 구성하는, 로봇 제어 시스템. - 제1항에 있어서,
상기 모션커맨드그룹은 복수의 모션커맨드들을 포함하고,
상기 컨트롤러는 상기 모션커맨드그룹에 포함된 상기 복수의 모션커맨드들을 동시에 실행하고,
상기 드라이버는 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동하는, 로봇 제어 시스템. - 삭제
- 제1항에 있어서,
상기 모션커맨드는 상기 적어도 하나의 하드웨어의 동작에 따른 최종 결과값을 포함하는, 로봇 제어 시스템. - 제1항에 있어서,
상기 적어도 하나의 하드웨어는 하나의 로봇을 구성하는, 로봇 제어 시스템. - 제1항에 있어서,
상기 모션커맨드그룹은 복수의 모션커맨드들을 포함하고,
상기 컨트롤러는 상기 모션커맨드그룹에 포함된 상기 복수의 모션커맨드들을 동시에 실행하고,
상기 드라이버는 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동하는, 로봇 제어 시스템. - 삭제
- 제1항에 있어서,
상기 컨트롤러는 상기 비동기 실행 인터럽트 함수에 대응하여, 상기 모션커맨드를 쓰레드안전큐 클래스에 설정하는, 로봇 제어 시스템. - 제11항에 있어서,
상기 컨트롤러는, 상기 하드웨어에 의해 해석 가능한 데이터를 주기적으로 생성하기 위하여, 상기 쓰레드매니저 클래스로부터 동기 실행 인터럽트 함수를 호출하고, 상기 동기 실행 인터럽트 함수에 대응하여, 상기 쓰레드안전큐 클래스로부터 상기 모션커맨드를 얻는, 로봇 제어 시스템. - 인터페이스, 컨트롤러, 및 드라이버를 포함하는 로봇 제어 시스템에 의하여 로봇을 제어하는 방법에 있어서,
상기 인터페이스에 의하여, 사용자 입력을 수신하는 단계;
상기 컨트롤러에 의하여, 상기 사용자 입력에 대응하는 모션커맨드 및 상기 모션커맨드를 포함하는 모션커맨드그룹을 생성하는 단계;
상기 컨트롤러에 의하여, 상기 모션커맨드를 분석하여 하드웨어에 의해 해석 가능한 데이터를 생성하는 단계; 및
상기 드라이버에 의하여, 상기 데이터에 따라 적어도 하나의 하드웨어의 동작을 구동하는 단계;를 포함고,
상기 컨트롤러는 상기 모션커맨드 및 상기 모션커맨드그룹을 비실시간으로 생성하고, 상기 하드웨어에 의해 해석 가능한 데이터를 실시간으로 생성하고,
상기 모션커맨드를 분석하여 상기 데이터를 생성하는 단계는,
상기 컨트롤러에 의하여, 쓰레드매니저 클래스의 컨트롤매니저 클래스에 대한 비동기 실행 인터럽트 함수를 호출하는 단계; 및
상기 컨트롤러에 의하여, 상기 비동기 실행 인터럽트 함수에 대응하여 상기 모션커맨드를 쓰레드안전큐 클래스에 설정하는 단계;를 포함하는, 로봇 제어 방법. - 제13항에 있어서,
상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하고, 상기 데이터를 주기적으로 생성하는, 로봇 제어 방법. - 제13항에 있어서,
상기 컨트롤러에 의하여, 상기 모션커맨드그룹에 포함된 복수의 모션커맨드들을 동시에 실행하는 단계; 및
상기 드라이버에 의하여, 복수의 로봇들 각각을 구성하는 적어도 하나의 하드웨어의 동작을 동시에 구동하는 단계;를 더 포함하는, 로봇 제어 방법. - 제13항에 있어서,
상기 모션커맨드는 상기 적어도 하나의 하드웨어의 동작에 따른 최종 결과값을 포함하는, 로봇 제어 방법. - 삭제
- 제13항에 있어서,
상기 모션커맨드를 분석하여 상기 데이터를 생성하는 단계는,
상기 컨트롤러에 의하여, 상기 쓰레드매니저 클래스의 하드웨어매니저 클래스에 대한 동기 실행 인터럽트 함수를 호출하는 단계; 및
상기 컨트롤러에 의하여, 상기 동기 실행 인터럽트 함수에 대응하여, 상기 쓰레드안전큐 클래스로부터 상기 모션커맨드를 얻는 단계;를 더 포함하는, 로봇 제어 방법. - 사용자 입력을 수신하는 인터페이스;
상기 사용자 입력에 대응하는 모션커맨드 및 상기 모션커맨드를 포함하는 모션커맨드그룹을 각각 생성하고, 상기 모션커맨드를 분석하여 하드웨어에 의해 해석 가능한 데이터를 생성하는 컨트롤러; 및
상기 데이터에 따라 적어도 하나의 하드웨어의 동작을 구동하는 드라이버;를 포함하고,
상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하고, 상기 하드웨어에 의해 해석 가능한 데이터를 주기적으로 생성하고,
상기 컨트롤러는 상기 모션커맨드를 비주기적으로 분석하기 위하여, 쓰레드매니저 클래스로부터 비동기 실행 인터럽트 함수를 호출하는, 로봇 제어 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150148831 | 2015-10-26 | ||
KR20150148831 | 2015-10-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170048164A KR20170048164A (ko) | 2017-05-08 |
KR102543212B1 true 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)
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 (3)
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 | 制御システム |
US20120130400A1 (en) | 1998-02-24 | 2012-05-24 | Hansen Medical, Inc. | Flexible instrument |
Family Cites Families (24)
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 | 株式会社神戸製鋼所 | 溶接設定装置、溶接ロボットシステムおよび溶接設定プログラム |
KR101691940B1 (ko) | 2009-10-30 | 2017-01-02 | 삼성전자주식회사 | 로봇 및 그 제어방법 |
KR101220428B1 (ko) * | 2010-09-10 | 2013-01-10 | 한국과학기술원 | 분산 실시간 제어 소프트웨어가 구비된 지능 로봇용 다중 프로세서 |
CN102540973B (zh) | 2010-12-09 | 2013-06-26 | 中国科学院沈阳计算技术研究所有限公司 | 一种用于数控系统的命令多发机制的实现方法 |
KR101809973B1 (ko) * | 2011-01-24 | 2017-12-19 | 삼성전자주식회사 | 로봇 제어 시스템 및 로봇 제어 방법 |
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 |
WO2014146090A1 (en) * | 2013-03-15 | 2014-09-18 | Intuitive Surgical Operations, Inc. | Inter-operative switching of tools in a robotic surgical system |
KR101420852B1 (ko) | 2013-10-02 | 2014-07-18 | 한국기계연구원 | 중공형 모듈을 적용한 다수개의 팔을 가진 로봇의 신호 전달 장치 |
KR101644219B1 (ko) | 2013-11-29 | 2016-08-01 | 주식회사 포스코아이씨티 | 공장 관리 시스템 및 방법 |
US9987749B2 (en) * | 2014-08-15 | 2018-06-05 | 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 |
-
2016
- 2016-10-10 KR KR1020160130827A patent/KR102543212B1/ko active IP Right Grant
- 2016-10-26 US US15/334,441 patent/US10780583B2/en active Active
- 2016-10-26 CN CN201610948726.7A patent/CN106610632A/zh active Pending
Patent Citations (3)
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 | 制御システム |
Also Published As
Publication number | Publication date |
---|---|
KR20170048164A (ko) | 2017-05-08 |
CN106610632A (zh) | 2017-05-03 |
US10780583B2 (en) | 2020-09-22 |
US20170113350A1 (en) | 2017-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102543212B1 (ko) | 로봇 제어 시스템 및 방법 | |
Guzmán et al. | PELEA: a domain-independent architecture for planning, execution and learning | |
JP2014108515A5 (ko) | ||
CN103870324A (zh) | 异构多处理器环境中人机接口应用的有效执行 | |
CN110377065B (zh) | 速度控制方法、装置及计算机可读存储介质 | |
JP2018173883A (ja) | 制御装置、制御プログラム、制御システム、および制御方法 | |
JP2019061467A (ja) | サポート装置およびサポートプログラム | |
Gu et al. | Towards a two-layer framework for verifying autonomous vehicles | |
US11491653B2 (en) | Method and apparatus for robotic machining | |
Brecher et al. | Towards anthropomorphic movements for industrial robots | |
CN111360813B (zh) | 一种基于边缘云服务的多机器人控制器 | |
Liacu et al. | Optimizing low-order controllers for haptic systems under delayed feedback | |
CN106843121A (zh) | 对plc定位系统中的各轴的独立控制周期分配的方法 | |
Bai et al. | Performance optimization of autonomous driving control under end-to-end deadlines | |
Årzén et al. | Resource-constrained embedded control systems: Possibilities and research issues | |
CN102156448B (zh) | 控制操纵器的方法和装置 | |
CN110948489B (zh) | 一种带电作业机器人安全工作空间限定方法及系统 | |
Ziebinski et al. | Soft real-time systems for low-cost unmanned ground vehicle | |
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 | |
KR20130088595A (ko) | 모션 프로파일 생성방법 | |
US11880175B2 (en) | Method for controlling an automation process in real time | |
WO2022264424A1 (ja) | 制御装置及び制御方法 | |
Chakraborty et al. | Guest Editors’ Introduction: Cross-Layer Design of Cyber–Physical Systems | |
CN109145479A (zh) | 云端部署的两轴机械臂网宇实体自动进化系统 |
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) |