KR102423658B1 - 다수 공작물 좌표계 간의 모션 제어 방법, 장치 및 시스템 - Google Patents

다수 공작물 좌표계 간의 모션 제어 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR102423658B1
KR102423658B1 KR1020200165453A KR20200165453A KR102423658B1 KR 102423658 B1 KR102423658 B1 KR 102423658B1 KR 1020200165453 A KR1020200165453 A KR 1020200165453A KR 20200165453 A KR20200165453 A KR 20200165453A KR 102423658 B1 KR102423658 B1 KR 102423658B1
Authority
KR
South Korea
Prior art keywords
path
motion
driving
coordinate system
point
Prior art date
Application number
KR1020200165453A
Other languages
English (en)
Other versions
KR20220076698A (ko
Inventor
서영호
Original Assignee
엘에스일렉트릭(주)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘에스일렉트릭(주) filed Critical 엘에스일렉트릭(주)
Priority to KR1020200165453A priority Critical patent/KR102423658B1/ko
Priority to PCT/KR2021/017362 priority patent/WO2022119222A1/ko
Publication of KR20220076698A publication Critical patent/KR20220076698A/ko
Application granted granted Critical
Publication of KR102423658B1 publication Critical patent/KR102423658B1/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B23MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
    • B23KSOLDERING OR UNSOLDERING; WELDING; CLADDING OR PLATING BY SOLDERING OR WELDING; CUTTING BY APPLYING HEAT LOCALLY, e.g. FLAME CUTTING; WORKING BY LASER BEAM
    • B23K11/00Resistance welding; Severing by resistance heating
    • B23K11/10Spot welding; Stitch welding
    • B23K11/11Spot welding
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B23MACHINE TOOLS; METAL-WORKING NOT OTHERWISE PROVIDED FOR
    • B23QDETAILS, COMPONENTS, OR ACCESSORIES FOR MACHINE TOOLS, e.g. ARRANGEMENTS FOR COPYING OR CONTROLLING; MACHINE TOOLS IN GENERAL CHARACTERISED BY THE CONSTRUCTION OF PARTICULAR DETAILS OR COMPONENTS; COMBINATIONS OR ASSOCIATIONS OF METAL-WORKING MACHINES, NOT DIRECTED TO A PARTICULAR RESULT
    • B23Q15/00Automatic control or regulation of feed movement, cutting velocity or position of tool or work
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • 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
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • 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/1687Assembly, peg and hole, palletising, straight line, weaving pattern movement
    • 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/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • 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/19Numerical 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 characterised by positioning or contouring control systems, e.g. to control position from one programmed point to another or to control movement along a programmed continuous path
    • 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/39219Trajectory tracking

Landscapes

  • Engineering & Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Robotics (AREA)
  • Human Computer Interaction (AREA)
  • Manufacturing & Machinery (AREA)
  • Numerical Control (AREA)
  • Selective Calling Equipment (AREA)

Abstract

본 발명은 다수 공작물 좌표계 간의 모션 제어 방법, 장치 및 시스템에 관한 것이다. 본 발명의 일 실시예에 따른 모션 제어 방법은 다수의 공작물 좌표계(product coordinate system; PCS) 간의 모션 제어를 위한 모션 제어기를 포함한 시스템에서 수행되는 방법으로서, 다수의 지점을 포함하는 운전 경로를 설정하는 제1 설정 단계; 운전 경로의 각 지점들의 공작물 좌표계에 대해, 그 운전 경로의 마지막 지점에 위치하는 기계 장치의 기계 좌표계(machine coordinate system; MCS)를 기준으로 하는 공작물 좌표계로 설정하는 제2 설정 단계; 및 설정된 공작물 좌표계 및 운전 경로에 따라 모션의 운전을 수행하는 운전 단계;를 포함한다.

Description

다수 공작물 좌표계 간의 모션 제어 방법, 장치 및 시스템{METHOD, APPARATUS AND SYSTEM FOR CONTROLLING MOTION BETWEEN MULTIPLE PCS}
본 발명은 모션 제어를 위한 방법, 장치 및 시스템에 관한 것으로서, 더욱 상세하게는 픽 앤 플레이스(pick-and-place) 등과 같이 다수개의 공작물 좌표계(product coordinate system; PCS) 간의 모션을 제어하기 위한 방법, 장치 및 시스템에 관한 것이다.
일반적으로 모션 제어기(motion controller) 등의 산업용 제어기는 특정 메이커 또는 제품으로 한정되지 않고 상호 호환성을 위해 PLCopen 규격을 따르도록 설계된다. 즉, PLCopen 규격은 다양한 명령어의 펑션 블록(function block)에 대해 정의하고 있으며, 특히 기존 PLC의 I/O 시퀀스 제어 외에도 모션 제어 및 Safety 관련 기술에 대한 규격을 가진다. 이때, 모션 제어 관련 기능은 단축 및 다축 제어 기술을 포함하는데, CAM 및 그룹 운전을 위한 동기(synchronize) 제어 기술 등이 다축 제어 기술에서 함께 구현된다.
이러한 PLCopen 규격에서, 다축 제어의 동기 제어 기술은 '단축 대(vs) 단축'에 대한 기술, '단축 대 다축'에 대한 기술, '다축 대 다축'에 대한 기술로 구분된다. 이때, 기계 좌표계(machine coordinate system; MCS) 외에 공작물 좌표계(product coordinate system; PCS)(또는 “사용자 좌표계”라고도 지칭)를 설정하여, 선형/비선형의 프로파일(궤적)을 좌표계가 트래킹(tracking)하면서, 동기(synchronize) 제어가 가능하도록 구현된다.
도 1은 오브젝트(object)의 상태에 따른 모션 제어의 일 예를 나타낸다. 즉, 도 1(a)는 오브젝트가 정지 상태인 경우에 대한 모션 제어의 일 예를 나타내고, 도 1(b)는 오브젝트가 움직이는 상태인 경우에 대한 모션 제어의 일 예를 나타낸다.
즉, 도 1(a)의 경우, 오브젝트인 가공물은 정지 상태이며, 로봇 B가 그 가공물을 잡고 있으면 그 가공물의 위치와 자세에 맞춰서 로봇 A가 점 용접의 작업을 수행한다. 또한, 도 1(b)의 경우, 오브젝트인 쿠키는 움직이는 상태이며, 직교 로봇 A가 컨베이어 벨트 B 위에서 움직이고 있는 쿠키 위에 초콜렛을 묻혀주는 작업을 수행한다.
도 1(a) 및 (b)의 경우 모두, B가 마스터 모션이 되고 A가 그 모션을 따라가는 형태이며, MCS와 PCS 간의 축-그룹 동기(synchronize)가 1:1로 매칭될 수 있는 경우에 해당한다.
이때, “축-그룹”은 다수 축을 포함하는 그룹으로서, 그 중에 어느 한 축(마스터 축)에 대한 좌표계 표현을 통해 나머지 다른 모든 축(슬레이브 축)에 대한 좌표계 표현이 가능한 그룹을 의미한다. 즉, 축-그룹 은 마스터 축에 대해 각 슬레이브 축이 특정 관계(즉, 마스터 축의 위치에 따라 선형 또는 비선형적으로 슬레이브 축의 위치가 결정되는 관계)를 가지며, 이러한 특정 관계에 대한 프로파일이 이미 알려진 상태인 그룹이다.
일반적으로, 로봇(직교 로봇, 스카라 로봇, 수직 다관절 로봇 등)을 활용하는 애플리케이션에서, 로봇은 축-그룹으로 구성되어 단축 또는 다축에 대해 동기 제어가 가능하다. 하지만, 도 1의 단순한 경우(즉, 1:1 동기 제어가 가능한 경우)와 달리, 픽 앤 플레이스(pick-and-place, 이하 “PnP”라고 지칭함) 등과 같이 서로 다른 기계 장치에 대해 다수개의 PCS에 대한 트래킹을 수행해야 하는 복잡한 상황의 경우, 종래 PLCopen 규격의 펑션 블록만으로는 그 모션 제어의 운용이 어려운 문제점이 있었다. 이는 PLCopen 규격의 경우, 1:1 동기 제어가 가능한 단순한 경우에 대한 펑션 블록만을 정의하고 있기 때문이다.
상기한 바와 같은 종래 기술의 문제점을 해결하기 위하여, 본 발명은 다수개 PCS 좌표계 간의 Pick-and-Place(PnP) 등과 같이, 기존 PLCopen 규격에 따른 명령어로는 대응이 되지 않는 복잡한 유형의 운전 상황에 대해 모션 제어가 가능한 기술을 제공하는데 그 목적이 있다.
즉, 본 발명은 특정 축 혹은 축-그룹에 트래킹이 진행 중인 서로 다른 다수 개의 PCS 좌표계 간에 로봇의 PnP 운전이 가능하게 하는 기술을 제공하는데 그 목적이 있다.
또한, 본 발명은 PnP 운전 중에 외부 환경의 이벤트 입력에 동기 가능하고 이벤트의 시그널링이 가능하는 기술을 제공하는데 그 다른 목적이 있다.
또한, 본 발명은 PLCOpen 규격에 정의된 명령어를 기본 빌딩 블록으로 활용하여 라이브러리 형태의 명령어(User defined function block)을 구성하는 기술을 제공하는데 그 또 다른 목적이 있다.
다만, 본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제에 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기와 같은 과제를 해결하기 위한 본 발명의 일 실시예에 따른 모션 제어 방법은 다수의 공작물 좌표계(product coordinate system; PCS) 간의 모션 제어를 위한 모션 제어기를 포함한 시스템에서 수행되는 방법으로서, 다수의 지점을 포함하는 운전 경로를 설정하는 제1 설정 단계; 운전 경로의 각 지점들의 공작물 좌표계에 대해, 그 운전 경로의 마지막 지점에 위치하는 기계 장치의 기계 좌표계(machine coordinate system; MCS)를 기준으로 하는 공작물 좌표계로 설정하는 제2 설정 단계; 및 설정된 공작물 좌표계 및 운전 경로에 따라 모션의 운전을 수행하는 운전 단계;를 포함한다.
상기 운전 경로에서, 그 시작 지점과 그 마지막 지점은 서로 다른 기계 장치에 따른 서로 다른 공작물 좌표계의 지점일 수 있다.
상기 제2 설정 단계는 상기 각 지점들의 공작물 좌표계에 대해 기계 장치의 움직임에 따른 트래킹(tracking)을 반영하는 단계를 포함할 수 있다.
상기 운전 경로는 픽 앤 플레이스(Pick and Place; PnP)의 운전을 위한 아치 형태의 경로일 수 있다.
상기 아치 형태의 경로는 hup 높이의 상향 방향 이동의 제1 모션 경로와, hdown 높이의 하향 방향 이동의 제3 모션 경로와, 제1 및 제3 모션 사이에서 l 너비의 일측 방향 이동의 제2 모션 경로와, 제1 및 제2 모션 경로 사이의 제1 만곡 모션 경로와, 제2 및 제3 모션 경로 사이의 제2 만곡 모션 경로를 포함할 수 있다.
상기 제1 만곡 모션 경로는 hup 및 l에서 각각 d1 만큼의 거리에 대해 특정 곡률의 경로를 가지고, 상기 제2 만곡 모션 경로는 hdown 및 l에서 각각 d2 만큼의 거리에 대해 특정 곡률의 경로를 가지며, d1 및 d1는 하기 식을 이용하여 구할 수 있다.
Figure 112020129736497-pat00001
Figure 112020129736497-pat00002
(단, min(a, b)는 a 및 b 중에 더 작은(최소) 길이 값을 나타내며, ArchBlendRatio는 그 최소 길이 값에 대한 비율 값을 나타냄)
상기 제1 설정 단계는 다수의 운전 경로와, 각 운전 경로에 대한 입출력 이벤트의 인덱스를 설정하는 단계를 포함할 수 있다.
상기 제2 설정 단계는 입출력 이벤트의 인덱스에 매칭하는 운전 경로의 각 지점들에 대한 공작물 좌표계를 설정하는 단계를 포함할 수 있다.
상기 운전 단계는 입출력 이벤트의 인덱스에 매칭하는 운전 경로에 대한 운전을 수행하는 단계를 포함할 수 있다.
상기 설정된 각 운전 경로에 대해 상기 제2 설정 단계 및 상기 운전 단계가 차례로 반복 수행될 수 있다.
본 발명의 일 실시예에 따른 모션 제어 방법은 다수의 PCS 좌표계에 대한 트래킹을 위한 PLCopen 규격의 명령어가 부재한 경우에 적용 가능하되, 상기 제2 설정 단계와 상기 운전 단계는 PLCopen 규격에 따른 명령어를 이용하여 수행될 수 있다.
상기 제1 설정 단계의 수행을 위한 명령어는 각 운전 경로 별로 요구되는 로봇의 그리퍼(end-effector) 구동기의 출력 설정 값과 센서의 보정 값을 입력 받을 수 있다.
상기 운전 단계의 수행을 위한 명령어는 트래킹 중인 오브젝트의 이동/회전량을 보상하기 위한 업데이트하기 위한 입력과, 현재 운전 경로에 대해 설정된 속도를 오버라이드(override)하기 위한 입력을 각각 포함할 수 있다.
본 발명의 일 실시예에 따른 모션 제어기는 다수의 공작물 좌표계(product coordinate system; PCS) 간의 모션 제어를 위한 제어기로서, 다수의 지점을 포함하되 시작 지점과 마지막 지점이 서로 다른 기계 장치에 따른 서로 다른 공작물 좌표계의 지점인 운전 경로를 설정하는 경로 설정부; 운전 경로의 각 지점들의 공작물 좌표계에 대해, 그 운전 경로의 마지막 지점에 위치하는 기계 장치의 기계 좌표계(machine coordinate system; MCS)를 기준으로 하는 공작물 좌표계로 설정하는 좌표계 설정부; 설정된 공작물 좌표계 및 운전 경로에 따라 모션의 운전을 수행하는 운전 제어부;를 포함한다.
상기 좌표계 설정부는 상기 각 지점들의 공작물 좌표계에 대한 설정 시 기계 장치의 움직임에 따른 트래킹(tracking)을 반영할 수 있다.
본 발명의 일 실시예에 따른 모션 제어 시스템은 다수의 공작물 좌표계(product coordinate system; PCS) 간의 모션 제어를 위한 시스템으로서, 드라이브의 운전을 제어하는 모션 제어기와, 모션 제어기로부터 수신한 제어 신호에 따라 모션 장치를 구동하는 드라이브를 포함하며, 상기 모션 제어기는, 다수의 지점을 포함하되 시작 지점과 마지막 지점이 서로 다른 기계 장치에 따른 서로 다른 공작물 좌표계의 지점인 운전 경로를 설정하고, 운전 경로의 각 지점들의 공작물 좌표계에 대해 그 운전 경로의 마지막 지점에 위치하는 기계 장치의 기계 좌표계(machine coordinate system; MCS)를 기준으로 하는 공작물 좌표계로 설정하며, 설정된 공작물 좌표계 및 운전 경로에 따라 모션의 운전을 제어한다.
상기와 같이 구성되는 본 발명은 다수의 PCS 좌표계 간의 Pick-and-Place(PnP) 등과 같이, 기존 PLCopen 규격에 따른 명령어로는 대응이 되지 않는 복잡한 유형의 운전 상황에 대해 모션 제어가 가능한 이점이 있다.
즉, 본 발명은 특정 축 혹은 축-그룹에 트래킹이 진행 중인 서로 다른 다수 개의 PCS 좌표계 간에 로봇의 PnP 운전이 가능하게 하는 이점이 있다.
또한, 본 발명은 PnP 운전 중에 외부 환경의 이벤트 입력에 동기 가능하고 이벤트의 시그널링이 가능한 이점이 있다.
또한, 본 발명은 PLCOpen 규격에 정의된 명령어를 기본 빌딩 블록으로 활용하여 라이브러리 형태의 명령어(User defined function block)의 구현이 가능한 이점이 있다.
또한, 본 발명은 다른 기계 장치에 따른 서로 다른 PCS 좌표계 지점 간의 모션 수행 시, 마지막 지점이 속하는 기계 장치의 PCS 좌표계를 기준으로 그 운전 경로를 업데이트 하면 되기 때문에 메모리가 적게 들고 비용이 적게 들 수 있는 이점이 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 오브젝트(object)의 상태에 따른 모션 제어의 일 예를 나타낸다.
도 2는 본 발명의 일 실시예에 따른 모션 제어 시스템(10)의 블록 구성도를 나타낸다.
도 3는 PLCopen 규격에서 정의한 좌표계 종류를 나타낸다.
도 4는 PLCopen 규격에 따른 마스터(master)와 슬레이브(slave)의 축 대 축 간의 동기화(synchronize)의 프로파일(profile) 및 명령어의 일 예를 나타낸다.
도 5는 PLCopen 규격에 따른 공작물 좌표계(PCS) 설정의 명령어 및 파라미터의 일 예를 나타낸다.
도 6는 축-그룹 대 축-그룹 간의 트래킹(tracking) 및 그 명령어의 일 예를 나타낸다.
도 7은 특정 축에 대해 트래킹 중인 2개의 PCS 간에 Pick-and-Place(PnP)가 요구되는 상황에 대한 일 예를 나타낸다.
도 8은 Pick and Place를 위한 아치 형태의 모션에 대한 정의를 나타낸다.
도 9은 스테이트 머신(state machine)의 구성을 나타낸다.
도 10는 운전 경로 티칭(teaching) 명령어의 인터페이스 구성을 나타낸다.
도 11은 경로 운전 명령어의 인터페이스 구성을 나타낸다.
도 12는 축-그룹 대 축-그룹 간의 일반적 형태의 트래킹(tracking)에 대한 확장된 다른 일 예를 나타낸다.
도 13은 MCS에서 PCS로의 변환 명령어에 대한 다른 일 예를 나타낸다.
본 발명의 상기 목적과 수단 및 그에 따른 효과는 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며, 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 경우에 따라 복수형도 포함한다. 본 명세서에서, "포함하다", “구비하다”, “마련하다” 또는 “가지다” 등의 용어는 언급된 구성요소 외의 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
본 명세서에서, “또는”, “적어도 하나” 등의 용어는 함께 나열된 단어들 중 하나를 나타내거나, 또는 둘 이상의 조합을 나타낼 수 있다. 예를 들어, “또는 B”“및 B 중 적어도 하나”는 A 또는 B 중 하나만을 포함할 수 있고, A와 B를 모두 포함할 수도 있다.
본 명세서에서, “예를 들어” 등에 따르는 설명은 인용된 특성, 변수, 또는 값과 같이 제시한 정보들이 정확하게 일치하지 않을 수 있고, 허용 오차, 측정 오차, 측정 정확도의 한계와 통상적으로 알려진 기타 요인을 비롯한 변형과 같은 효과로 본 발명의 다양한 실시 예에 따른 발명의 실시 형태를 한정하지 않아야 할 것이다.
본 명세서에서, 어떤 구성요소가 다른 구성요소에 '연결되어’ 있다거나 '접속되어' 있다고 기재된 경우, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성 요소에 '직접 연결되어' 있다거나 '직접 접속되어' 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해될 수 있어야 할 것이다.
본 명세서에서, 어떤 구성요소가 다른 구성요소의 '상에' 있다거나 '접하여' 있다고 기재된 경우, 다른 구성요소에 상에 직접 맞닿아 있거나 또는 연결되어 있을 수 있지만, 중간에 또 다른 구성요소가 존재할 수 있다고 이해되어야 할 것이다. 반면, 어떤 구성요소가 다른 구성요소의 '바로 위에' 있다거나 '직접 접하여' 있다고 기재된 경우에는, 중간에 또 다른 구성요소가 존재하지 않은 것으로 이해될 수 있다. 구성요소 간의 관계를 설명하는 다른 표현들, 예를 들면, '~사이에'와 '직접 ~사이에' 등도 마찬가지로 해석될 수 있다.
본 명세서에서, '제1', '제2' 등의 용어는 다양한 구성요소를 설명하는데 사용될 수 있지만, 해당 구성요소는 위 용어에 의해 한정되어서는 안 된다. 또한, 위 용어는 각 구성요소의 순서를 한정하기 위한 것으로 해석되어서는 안되며, 하나의 구성요소와 다른 구성요소를 구별하는 목적으로 사용될 수 있다. 예를 들어, '제1구성요소'는 '제2구성요소'로 명명될 수 있고, 유사하게 '제2구성요소'도 '제1구성요소'로 명명될 수 있다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일 실시예를 상세히 설명하도록 한다.
도 2는 본 발명의 일 실시예에 따른 모션 제어 시스템(10)의 블록 구성도를 나타낸다.
본 발명의 일 실시예에 따른 모션 제어 시스템(10)은 서보 모터, 스텝 모터 등과 같은 다수의 모션 장치(또는 액추에이터)를 제어하기 위한 시스템으로서, 도 2에 도시된 바와 같이, 외부 장치(100), 모션 제어기(200), 드라이브(300), 모션 장치(미도시) 등을 포함한다.
외부 장치(100)는 모션 제어 시스템(10)의 모든 제어 동작을 관리하는 장치이다. 즉, 사용자 또는 관리자 등은 외부 장치(100)를 통해 모션 제어기(200)에 접속하여 각 드라이브(300)의 동작에 대한 제어를 설정 관리할 수 있다. 가령, 외부 장치(100)는 운전 명령, 튜닝 명령 등의 제어 명령을 모션 제어기(200)에 전달할 수 있다.
외부 장치(100)은 컴퓨팅(computing)이 가능한 단말 또는 PLC(Programmable Logic Controller) 등과 같은 전자 장치일 수 있다. 예를 들어, 단말은 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 태블릿 PC(tablet personal computer), 넷북 컴퓨터(netbook computer), 스마트폰(smart phone), 스마트패드(smart pad), 또는 PDA(personal digital assistant) 등일 수 있으나, 이에 한정되는 것은 아니다.
다만, 이러한 외부 장치(100) 외에, 조작 패널 등의 사용자 인터페이스(미도시)를 통해 모션 제어기(200)로 제어 명령을 전달할 수도 있다.
모션 제어기(200)는 각 드라이브(300)와 연결되며, 외부 장치(100) 또는 사용자 인터페이스로부터 수신된 제어 명령에 따라 각 드라이브(300)의 운전을 제어한다. 이때, 모션 제어기(200)는 PLCopen 규격에 따라 각 드라이브(300)의 운전을 제어할 수 있다. 가령, 모션 제어기(200)는 기 저장된 운전용 프로파일 정보, 튜닝 파라미터 정보 등의 데이터에 기초하여, 각 드라이브(300)를 운전할 수 있다.
드라이브(300)는 모션 제어기(200)로부터 수신한 제어 신호에 따라 모션 장치를 구동하는 장치이다. 이러한 드라이브(300)는 복수개(300-1, …300-n)(단, n은 2이상의 자연수)가 구비되며, 각 드라이브(300)가 개별적으로 각 모션 장치를 구동한다. 예를 들어, 드라이브(300)는 스텝 모터 드라이버, 또는 서보 모터 드라이버 등일 수 있으나, 이에 한정되는 것은 아니다.
이러한 복수의 드라이브(300)는 모션 제어기(200)와 다양한 방식의 토폴로지(topology)로 연결될 수 있다. 예를 들어, 이러한 토폴로지는 버스 토폴로지(bus topology), 스타 토폴로지(star topology), 링 토폴로지(ring topology), 트리 토폴로지(tree topology), 또는 메시 토폴로지(mesh topology) 등일 수 있으나, 이에 한정되는 것은 아니다. 또한, 이들 드라이브(300) 중에는 마스터(master)인 드라이브와 슬레이브(slave)인 드라이브를 포함할 수 있다.
한편, 본 발명의 일 실시예에 따른 모션 제어 시스템(10)은 로봇, 컨베이어(conveyor), 로터리 테이블(rotary table) 등과 같은 복수의 기계 장치를 포함할 수 있다. 이때, 하나의 기계 장치에는 적어도 하나의 모션 장치가 구비될 수 있다. 또한, 모션 장치의 구동에 따라 오브젝트(object)의 위치가 달라질 수 있다.
한편, 모션 제어기(200)는, 도 2에 도시된 바와 같이, 경로 설정부(210), 좌표계 설정부(220) 및 운전 제어부(230)를 포함할 수 있으며, 이들 구성은 하드웨어인 프로세서(processor)에 포함되거나, 해당 프로세서에서 수행되는 소프트웨어인 프로세스(process)에 포함될 수 있으나, 이에 한정되는 것은 아니다. 또한, 경로 설정부(210), 좌표계 설정부(220) 및 운전 제어부(230)는 외부 장치(100)의 구성으로 포함될 수도 있다.
도 3는 PLCopen 규격에서 정의한 좌표계 종류를 나타낸다.
도 3을 참조하면, PLCopen 규격에서 정의한 좌표계의 종류로는 축 좌표계(axis coordinate system; ACS), 기계 좌표계(machine coordinate system; MCS), 공작물 좌표계(product coordinate system; PCS) 등이 있다. 이때, ACS로부터 MCS를 얻고 PCS로 동차 변환할 수 있다.
도 4는 PLCopen 규격에 따른 마스터(master)와 슬레이브(slave)의 축 대 축 간의 동기화(synchronize)의 프로파일(profile) 및 명령어의 일 예를 나타낸다. 즉, 도 4(a)는 마스터 축 대 슬레이브 축의 프로파일의 일 예를 나타내고, 도 4(b)는 마스터 축 대 슬레이브 축에 대한 동기화 명령어의 펑션 블록(function block)의 일 예를 나타낸다.
도 4를 참조하면, 축 대 축 간 동기화를 위해, 축 간의 동기화 명령어로 정의된 MC_CamIn을 사용할 수 있다.
도 5는 PLCopen 규격에 따른 공작물 좌표계(PCS) 설정의 명령어 및 파라미터의 일 예를 나타낸다. 즉, 도 5(a)는 PCS 설정 명령어의 펑션 블록의 일 예를 나타내고, 도 5(b)는 변환 파라미터(translation parameters)의 일 예, 즉 translation 및 rotation되어 MCS에서 PCS로 좌표계 변환되는 일 예를 나타내며, 도 5(c)는 회전 파라미터(rotation parameters)의 일 예를 나타낸다.
한편, 도 5를 참조하면, PCS 설정을 위해 다음과 같은 과정을 수행할 수 있다. 즉, A 및 B를 축-그룹으로 구성하면, A 축-그룹의 MCS 좌표계는 MCSA, 그 PCS 좌표계는 PCSA로 표현하고, B 축-그룹의 MCS 좌표계는 MCSB, 그 PCS 좌표계는 PCSB로 표현할 수 있다. 이들 좌표계는 하기 식(1) 내지 식(3)을 이용한 변환이 가능하다.
Figure 112020129736497-pat00003
(1)
Figure 112020129736497-pat00004
(2)
Figure 112020129736497-pat00005
(3)
이때, 식(1)은 MCS 좌표계의 P점에 대해 PCS 좌표계 원점(PPCSORG) 및 회전 행렬(R)로 구성된 동차 변환 행렬(Homogeneous transformation matrix)을 나타내고, 식(2)는 MCS 좌표계와 PCS 좌표계 간의 역행렬을 나타낸다. 또한, 식(3)은 A 축-그룹의 PCS 좌표계와 B 축-그룹의 PCS 좌표계를, A 축-그룹과 B 축-그룹 간의 좌표계 변환으로 매핑하는 것을 나타낸다.
가령, 축-그룹 A 및 B 간(즉, 축-그룹들 간)에 좌표계 변환(
Figure 112020129736497-pat00006
)은 펑션 블록으로 정의된 MC_SetDynCoordTransform의 명령어를 이용할 수 있다. 또한, 축-그룹 B 내에서 좌표계 변환(
Figure 112020129736497-pat00007
)은 펑션 블록으로 정의된 MC_SetCoordinateTransform의 명령어를 이용할 수 있다.
도 6는 축-그룹 대 축-그룹 간의 트래킹(tracking) 및 그 명령어의 일 예를 나타낸다. 즉, 도 6(a)는 컨베이어 벨트(conveyor belt)에 대한 트래킹을 나타내고, 도 6(b)는 컨베이어 벨트의 트래킹을 위한 명령어의 펑션 블록을 나타낸다. 또한, 즉, 도 6(c)는 로터리 테이블(rotary table)에 대한 트래킹을 나타내고, 도 6(d)는 로터리 테이블의 트래킹을 위한 명령어의 펑션 블록을 나타낸다.
축-그룹 대 축-그룹 간 트래킹 명령어는 축-그룹 간의 동기화를 위해 정의될 수 있다. 이때, 동기화된 모션 궤적은 두 독립 모션의 중첩(superposition)으로 볼 수 있다. 이러한 축-그룹 대 축-그룹 간 트래킹 명령어의 구현을 위해, 다차원 기어 운전(좌표 별 선형 중첩) 적용하는 방법(제1 구현 방법)과, 좌표계 변환 행렬을 적용(즉, PLCOpen 규격에 따른 펑션 블록을 채택)하는 방법(제2 구현 방법)이 있을 수 있다.
도 6(a)는 로봇이 컨베이어 벨트 위에 놓인 물체를 트래킹하는 경우를 나타낸다. 이 경우, 컨베이어 벨트 전용으로 파라미터화한 펑션 블록을, 도 6(b)와 같이, MC_TrackConveyorBelt의 명령어를 정의할 수 있는데, 축-그룹들 간에 좌표계 변환의 명령어(MC_SetDynCoordTransform)를 통해 구현하여 그 인터페이스를 구성할 수 있다. 구체적으로, 로봇의 MCS 좌표계를 기준으로, 컨베이어 벨트의 이동량(TransMCS_CB)와 컨베이어 벨트의 회전량(RotMCS_CB)을 구할 수 있다. 또한, 컨베이어 벨트의 MCS 좌표계를 기준으로, PCS 좌표계의 이동량(TransCB_PCS)과 PCS 좌표계의 회전량(RotCB_PCS)을 구할 수 있다. 또한, 컨베이어 벨트의 PCS 좌표계 기준으로, 오브젝트의 위치(PPCS)를 구할 수 있다.
한편, 도 6(b)는 로봇이 로터리 테이블에 놓여 회전하는 물체를 트래킹하는 경우를 나타낸다. 이 경우, 로터리 테이블 전용으로 파라미터화한 펑션 블록을, 도 6(d)와 같이, MC_TrackRotaryTable의 명령어로 정의할 수 있는데, 축-그룹들 간)에 좌표계 변환의 명령어(MC_SetDynCoordTransform)를 통해 구현하여 그 인터페이스 구성할 수 있다. 구체적으로, 로봇의 MCS 좌표계 기준으로, 로터리 테이블의 이동량과 로터리 테이블의 회전량을 구할 수 있다. 또한, 로터리 테이블의 MCS 좌표계 기준으로, 그 PCS 좌표계의 이동량 및 회전량을 구할 수 있다. 또한, 로터리 테이블의 PCS 좌표계를 기준으로, 오브젝트의 위치를 구할 수 있다.
도 7은 특정 축에 대해 트래킹 중인 2개의 PCS 간에 Pick-and-Place(PnP)가 요구되는 상황에 대한 일 예를 나타낸다. 즉, 도 7은 로터리 테이블 및 컨베이어 벨트에서 각각 회전/이동 중인 서로 다른 팔레트(pallet) 간에, 로봇을 이용해 PnP 운전을 수행해야하는 장비를 나타낸다. 이러한 도 7의 경우는 다수개의 PCS를 가지는 복잡한 경우에 해당하며, 종래에 PLCOpen 규격에서 정의된 모션 제어 명령어만으로는 그 구현이 어려운 경우에 해당한다.
구체적으로, 도 7의 경우에 대한 운용 시나리오는 다음과 같다.
<운용 시나리오>
- 컨베이어 벨트 위에는 팔레트가 무작위의 위치와 각도로 놓인 채 컨베이어 벨트를 따라 이동함
- 로터리 테이블 위에는 팔레트가 부착되어 로터리 테이블과 함께 회전함
- 컨베이어에는 기준 위치로부터 컨베이어 벨트의 이송량을 알 수 있는 센서(로터리 엔코더)가 부착됨
- 로터리 테이블에는 기준 위치로부터 로터리 테이블의 회전량을 알 수 있는 센서(엔코더)가 부착됨
- 컨베이어에는 팔레트의 유무를 감지할 수 있는 센서가 있으며, 그 센서가 감지하는 시점에 머신 비전(machine vision)을 통해, 감지 시점 기준의 팔레트 원점 좌표와 틀어진 원점의 틀어진 각도에 대한 측정이 가능함
- 컨베이어 벨트 및 로터리 테이블의 팔레트는 정해진 간격으로 홈이 파여 있고 그 홈에는 오브젝트(가령, 쇠구슬 등)(이하, 오브젝트가 쇠구슬인 것으로 가정)가 들어 있음
- 델타 로봇은 전자석을 그리퍼(gripper)에 장착하고 있고 그 전자석으로 컨베이어 벨트에서 이동 중인 팔레트의 쇠구슬을 차례로 집어서 로터리 테이블에서 회전 중인 팔레트에 쇠구슬을 옮겨 놓아야 함
- 로터리 테이블은 컨베이어 벨트의 이동과 동기화되어 회전함
- 로터리 테이블의 쇠구슬을 모두 옮기고 난 후, 반대로 로터리 테이블로부터 컨베이어 벨트의 빈 팔레트로 쇠구슬을 다시 차례로 옮겨야 함
또한, 도 7의 경우에 따른 운용 시나리오에서, 기구적 제한 조건은 다음과 같다.
<기구적 제한 조건>
- 델타 로봇의 기계 원점에 대해, 컨베이어 벨트와 로터리 테이블 모두 그 기계 원점이 XY 평면 상에서 서로 다른 위치에 존재함. 가령, Z축 기준으로 델타 로봇 기계 원점에 대해 컨베이어 벨트는 20도, 로터리 테이블은 45도 틀어짐(다른 위치나 각도에서는 기구 간섭이 있음)
- 머신 비전은 컨베이어의 특정 위치를 기준으로 정렬됨(제1안: 카메라가 컨베이어에 부착, 제2안: 컨베이어에 간섭이 심할 경우 로봇의 그리퍼에 부착)
- 컨베이어 벨트를 지나는 팔레트의 쇠구슬은 로터리 테이블이 특정 각도 범위에서 모두 옮기거나 담아야 함(이외의 각도는 로터리 테이블 쪽 기구에 간섭이 있음)
- 컨베이어 벨트의 이송 속도가 빨라지면 로터리 테이블의 동기 구간의 속도도 함께 빨라져야 함(물류 충돌 방지 가정)
한편, 상술한 운용 시나리오와 기구적 제한 조건을 모두 만족시키기 위한 방법은 다음과 같다.
<운용 시나리오 및 기구적 제한 조건의 만족을 위한 방법>
- 컨베이어 이송 축의 속도 변화에 따른 로터리 테이블의 동기 회전 :
축 간의 동기화에 관련된 명령어(MC_CamIn)를 이용함으로써, 컨베이어 축(마스터)에 따라 설정된 CAM 프로파일 대로 로터리 테이블 회전 축(슬레이브)에 대한 동기화 운전 가능
- 컨베이어 벨트 위에서 이동하는 팔레트 트래킹(tracking) :
축-그룹 내에서의 좌표계 변환에 관련된 명령어(MC_SetCoordinateTransform)를 이용하여 컨베이어에 놓인 팔레트에 대해 PCS 좌표계를 설정한 후, 로봇이 컨베이어 벨트 위에 놓인 물체를 트래킹하는 명령어(MC_TrackConveyorBelt)를 이용함으로써 컨베이어 이동 축에 대한 트래킹 가능
- 로터리 테이블 위에서 회전하는 팔레트 트래킹(tracking) :
축-그룹 내에서의 좌표계 변환에 관련된 명령어(MC_SetCoordinateTransform)를 이용하여 로터리 테이블에 놓인 팔레트에 대해 PCS 좌표계를 설정 후, 로봇이 로터리 테이블에 놓여 회전하는 물체를 트래킹하는 명령어(MC_TrackRotaryTable)를 이용함으로써 로터리 테이블의 회전 축에 대한 트래킹 가능
- 컨베이어 벨트의 팔레트와 로터리 테이블의 팔레트 간에 Pick and Place(PnP) : 기존의 PLCOpen 규격 상으로는 이러한 PnP를 위한 명령어가 별도로 존재하지 않음(즉, 종래 기술의 문제점이 발생하는 경우에 해당)
즉, 컨베이어 벨트의 팔레트와 로터리 테이블의 팔레트 간에 PnP와 관련하여, 1개의 로봇 MCS에서 2개의 서로 다른 PCS 좌표계를 동시에 운용하는 것은 PLCOpen 규격에서 별도로 정의되지 않았다. 즉, 현재의 PLCOpen 규격 상, 다수의 MCS 좌표계 간에서도 오직 1개의 PCS 좌표계만을 그 타겟으로 트래킹할 수 있을 뿐이다.
이에 따라, 이하에서는 특정 축 혹은 축-그룹에 트래킹이 진행 중인 서로 다른 다수 개의 PCS 좌표계 간에 로봇의 PnP 운전이 가능하게 하는 기술에 대해 제시하고자 한다. 또한, PnP 운전 중에 외부 환경의 이벤트 입력에 동기 가능하고 이벤트의 시그널링이 가능하는 기술에 대해 제시하고자 한다. 또한, PLCOpen 규격에 정의된 명령어를 기본 빌딩 블록으로 활용하여 라이브러리 형태의 명령어(User defined function block)을 구성하는 기술에 대해 제시하고자 한다.
도 8은 Pick and Place를 위한 아치 형태의 모션에 대한 정의를 나타내고, 도 9은 스테이트 머신(state machine)의 구성을 나타낸다. 또한, 도 10는 운전 경로 티칭(teaching) 명령어의 인터페이스 구성을 나타내며, 도 11은 경로 운전 명령어의 인터페이스 구성을 나타낸다.
이러한 도 8 내지 도 11에 따른 제어는 외부 장치(100) 또는 모션 제어기(200)를 통해 수행될 수 있다. 가령, 도 8에 따른 경로 설정 및 도 10의 운전 경로 티칭 명령어에 따른 제어는 경로 설정부(210)에 의해 수행될 수 있고, 도 9의 S101 및 S102에 따른 제어는 좌표계 설정부(220)에 의해 수행될 수 있으며, 도 11의 경로 운전 명령어에 따른 제어와 도 9의 S103 내지 S105에 따른 제어는 운전 제어부(230)에 의해 수행될 수 있다.
도 10의 운전 경로 티칭 명령어는 운전 경로를 설정하기 위한 명령어로서, 그 입력/출력(Input/Output)에 대한 상세 내용은 다음의 표 1과 같다.
Input/Output
LS_TRobotPathCfg PathCfg 모든 구성 데이터(all configuration data)를 펑션 블록에 저장
Input
BOOL Enable 입력 데이터는 높은 수준(high level)에서 지속적으로(continuously) 업데이트됨
LS_TRobotCoordCfg CoordCfg 좌표계 구성 데이터(Coordinate system configuration data)
UINT PathType 지점 간 이동(Point-to-Point movement):간헐적인 속도(intermittent speed)로 경로에 인접 (1: LinearTo, 2: ArchTo, 3: CircularEnd)
지점 대 지점(Point-via-Point) 이동:
가속/감속 속도 프로파일이 없는 경로 (4: LinearBy, 5: CircularMid)
LREAL[0..2] MovePosXYZ 경로(path)를 위한 타켓 [X, Y, Z]의 위치
LREAL[0..2] MovePosABC 경로를 위한 타켓 [A, B, C]의 위치
LREAL MoveVelocity 경로의 속도 설정
UINT TrajLinearType 선형 경로의 속도 프로파일 유형(0: (0: Trapezoid, 1: Sine1, 2: Sine2):저부하(low load) 및 고속용(high speed) Sine1;
고부하(high load) 및 중속용(medium speed) Sine2
LREAL[0..2] TrajCircPar [가속, 감속, 저크(Jerk)] 순으로, 순환 경로의 속도 프로파일 파라미터
LREAL ArchUpHeight 아치 형태(ArchTo) 경로의 상부 거리(hup) 설정
LREAL ArchDownHeight 아치 형태(ArchTo) 경로의 하부 거리(hdown) 설정
LREAL ArchBlendRatio 아치 형태(ArchTo) 경로의 혼합 비율(blending ratio) 설정(0.0 ~ 1.0)
UINT InSignalNum 경로가 시작될 때 신호 보낼 고유 이벤트 번호의 설정(0: 없음, 1~: 이벤트 번호)
UINT OutSignalNum 경로가 완료될 때 신호 보낼 고유 이벤트 번호의 설정(0: 없음, 1~: 이벤트 번호)
UINT InWaitNum 경로가 시작될 때 기다려야할 고유 이벤트 번호의 설정(0: 없음, 1~: 이벤트 번호)
또한, 펑션 블록은 이벤트 번호가 0인지 확인하며, 이 경우 할당된 이벤트가 없음을 의미할 수 있음
UINT OutWaitNum 경로 완료(path is completed) 때 기다려야할 고유 이벤트 번호의 설정(0: 없음, 1~: 이벤트 번호)
또한, 펑션 블록은 이벤트 번호가 0인지 확인하며, 이 경우 할당된 이벤트가 없음을 의미할 수 있음
LREAL EffectorForce 경로 시작 부분의 end-effector에서 액추에이터의 필요한 토크 또는 On/Off 상태를 나타내는 힘을 설정하고, 이러한 설정은 경로 끝까지 유지됨(end of path)
Output
BOOL Valid 유효한 출력을 사용할 수 있으면 참(true)
Busy BOOL 펑션 블록이 완료되지 않았음
Error BOOL 펑션 블록 내에서 오류가 발생했음을 알림
ErrorID WORD 오류 식별자(Error identification)
또한, 도 11의 경로 운전 명령어는 설정된 경로를 따른 운전을 수행하기 위한 명령어로서, 그 입력/출력(Input/Output)에 대한 내용은 다음의 표 2와 같다.
Input/Output
UINT AxesGroup 축 그룹(1 ~ 16)을 참조
UINT NextPathIdx 펑션 블록이 현재 경로를 실행한 후, PathCfg 배열의 현재 경로 인덱스는 StartPathIdx 및 EndPathIdx에 비해 증가 또는 감소할 것임
Input
BOOL Execute StartPathIdx와 EndPathIdx 사이의 PathCfg 배열에 저장된 학습된 경로를 순차적으로 실행함
LS_TRobotPathCfg PathCfg PathCfg 배열에서 인덱싱된 경로 구성 데이터
BOOL EnableWaitNum 경로의 시작 및 완료 세션에서 발생한 이벤트 대기를 활성화함
BOOL EnableSetObj 경로 시작 시의 오브젝트(object) 위치를 업데이트하려면 참(true)으로 설정해야 함
UINT InWaitNum 경로 이동을 시작하기 위해 일치해야 하는 이벤트 번호
UINT OutWaitNum 경로 이동을 완료하기 위한 이벤트 번호
LREAL[0..5] ObjectPosition EnableSetObj가 참(true)이면, 현재의 오브젝트 위치를 새로 측정된 위치인 ObjectPosition[X, Y, Z, A, B, C]로 변경할 수 있음
BOOL EnableTestStep 경로를 단계별로 확인하기 위해, 지점 별(Point-By-Point) 이동을 지점 간(Point-To-Point) 이동으로 변환하려면 참(true)으로 설정해야 함
LREAL VelOverrFactor 현재 운전 경로에 대해 설정된 속도를 오버라이드(override)함(0.0: 제로 속도, 0.5: 절반 속도, 1.0: 동일한 속도)
UINT StartPathIdx 시작 단계를 PathCfg 배열의 인덱스로 설정NextPathIdx는 초기에 StartPathIdx 값을 가져야 함
UINT EndPathIdx 종료 단계를 PathCfg 배열의 인덱스로 설정함펑션 블록은 EndPathIdx 값에 비해 NextPathIdx 값을 증가 또는 감소시킴
BOOL StopPathRun 1: 현재 경로를 중지함0: NextPathIdx로 표시된 경로로부터 펑션 블록을 다시 시작할 때까지 실행 트리거를 기다림
Output
BOOL Done 구성된 전체 경로 단계가 완료됨
BOOL Busy The function block is processing
펑션 블록이 처리 중에 있음
BOOL Active 펑션 블록이 축 그룹을 제어하고 있음을 나타냄
BOOL Error 펑션 블록 내에서 오류가 발생했음을 알림
BOOL CommandAborted Command is aborted by another command명령이 다른 명령에 의해 중단되었음
WORD ErrorID 오류 식별자(Error identification)
UINT SignalNum Signals event number both in the initiation of the path and in the completion of the path경로 시작(initiation of path) 및 경로 완료(completion of path) 시의 모든 경우에 이벤트 번호를 알림
LREAL EffectorForce 경로의 시작 부분에 출력하고 다른 펑션 블록이 이를 0으로 변경할 때까지 유지함
먼저, PnP 모션의 구체적인 경로에 대한 정의가 필요하다. 즉, PnP 모션의 경로는 다수의 지점을 포함할 수 있는데, 그 시작 지점과 그 마지막 지점은 서로 다른 기계 장치(즉, 컨베이어 벨트 및 로터리 테이블)에 따른 서로 다른 공작물 좌표계(즉, 컨베이어 벨트에 따른 PCS 및 로터리 테이블에 따른 PCS)의 지점일 수 있다.도 8를 참조하면, PnP 모션의 경로는 아치 형태로 정의될 수 있는데, 상향 방향으로 이동하는 제1 모션(그 길이는 hup)과, 하향 방향으로 이동하는 제3 모션(그 길이는 hdown)과, 제1 모션과 제3 모션 사이에서 일측 방향으로 이동하는 제2 모션(그 길이는 l)을 각각 포함할 수 있다. 또한, PnP 모션의 경로는, 제1 및 제2 모션의 사이와, 제2 및 제3 모션의 사이에서, 급격한 방향 변경에 따른 충격을 최소화하기 위해, 만곡 형태로 이동하는 모션(이하, 각각 “제1 및 제2 만곡 모션”일 지칭함)이 더 포함하는 것이 바람직할 수 있다.
즉, 제1 및 제2 모션의 사이에서, 제1 만곡 모션은 hup 및 l에서 각각 d1 만큼의 거리(상부 방향 및 일측 방향의 거리)에 대해 특정 곡률의 만곡 형태로 이동할 수 있다. 또한, 제2 및 제3 모션의 사이에서, 제2 만곡 모션은 hdown 및 l에서 각각 d2 만큼의 거리(일측 방향 및 하부 방향의 거리)에 대해 특정 곡률의 만곡 형태로 이동할 수 있다.
즉, 도 8의 PnP의 경로는, 제1 모션의 시작점(hup의 시작점)에 대한 정보인 P0(x0, y0, z0)와, 제1 모션의 마지막점(hup의 마지막점)에 대한 정보인 P1(x0, y0, z0+hup)와, 제1 및 제2 만곡 모션에 대한 정보와, 제3 모션의 시작점(hdown의 시작점)에 대한 정보인 P2(x1, y1, z1+hdown)와, 제3 모션의 마지막점(hdown의 마지막점)에 대한 정보인 P3(x1, y1, z1)를 각각 포함하는 것으로, 파라미터화 할 수 있다. 이때, 제1 모션의 마지막점(hup의 마지막점)에 대한 정보인 P1(x0, y0, z0+hup)는 제2 모션의 시작점(l의 시작점)에 대한 정보에 해당하며, 제3 모션의 시작점(hdown의 시작점)에 대한 정보인 P2(x1, y1, z1+hdown)은 제2 모션의 마지막점(l의 마지막점)에 대한 정보에 해당한다. 즉, 어느 한 PnP 경로에서, P0이 그 경로의 시작 지점에 해당하고, P3이 그 경로의 마지막 지점에 해당한다.
특히, 제1 및 제2 만곡 모션에 대한 정보를 파악하기 위해, 하기의 식(4) 및 식(5)를 이용할 수 있다.
Figure 112020129736497-pat00008
(4)
Figure 112020129736497-pat00009
(5)
이때, min(a, b)는 a 및 b 중에 더 작은(최소) 길이 값을 나타내며, ArchBlendRatio는 그 최소 길이 값에 대한 비율 값(0.0 ~ 1.0)을 나타낸다. 즉, d1 및 d2는 해당 최소 길이 값에서 특정 선택된 비율만큼의 길이를 가진다.
즉, PnP 운전을 위해, 도 8에 따른 모션 경로, 즉 hup, l 및 hdown에 따른 3개의 모션 경로와, 이들의 연결부에서의 식(4)와 식(5)의 곡률 방법에 따른 2개의 만곡 모션 경로에 대해 파라미터화 하여 이를 하나의 경로로 설정할 수 있다. 이러한 파라미터는 도 10의 운전 경로 티칭 명령어에 입력(티칭)될 수 있으며, 그 입력 결과, 도 11의 경로 운전 명령어에 따른 실제 운전 수행 시에 실시간 연산을 통해 해당 경로가 생성될 수 있다.
도 9의 운전 경로 티칭 명령어에서는, InWait 이벤트와, 도 8의 PnP 모션을 위한 복합적 형태의 경로를 포함하는 운전 경로(해당 경로는 Discrete, Continuous, Synchronized 특징을 가질 수 있음)와, OutWait 이벤트 번호를 각각 입력(티칭) 받을 수 있다.
도 9에 따른 스테이트 머신은 InSignal을 출력하면서 초기화를 수행하고(S101), MCS/PCS 좌표계 설정과 특정 축/축-그룹에 동기화되는 트래킹 설정을 함께 수행한 뒤(S102), 정해진 경로(path)의 운전을 수행하며(S103), 이후 OutSignal 이벤트를 출력하면서 하나의 경로에 대한 운전을 끝내면서(S104), 경로 인덱스 값을 업데이트한다(S105). 특히, 스테이트 머신은 S102 수행 후 InWait 이벤트가 수신되는 경우에만 S103를 수행하며, S104 이후에 OutWait 이벤트를 출력한다. 이때, InWait 이벤트는 이전 스테이트 머신, 센서 등의 동작에 따라 발생될 수 있다. 이와 같은 스테이트 머신의 동작은 모든 경로(다수의 아치 형태 경로, 즉 다수의 도 8에 따른 경로)에 대해 그 경로 마다 수행될 수 있다. 즉, 하나의 스테이트 머신의 동작이 끝다면 다음의 스테이트 머신의 동작이 수행될 수 있다. 또한, 오브젝트인 쇠구슬의 개수만큼 다수의 스테이트 머신의 동작(즉, 각 아치 형태 경로의 생성 및 경로 운전)이 수행될 수 있다.
특히, S102는 좌표계 설정(PCS Setting) 단계와 트래킹 설정(Tracking Setting) 단계를 포함한다.
이때, 좌표계 설정 단계는 경로 마지막 지점에 위치하는 기계 장치의 MCS 좌표계를 기준으로, 경로의 처음 지점에서 해당 경로의 각 지점에 대한 PCS 좌표계를 설정하는 단계이다.
구체적으로, 도 8의 아치 형태 경로에 대한 좌표계 설정 단계에 대해 설명하도록 한다. 즉, 좌표계 설정 단계에서, 아치 형태 경로의 시작 지점인 P0은 로봇이 제1 기계 장치에서 쇠구슬을 피킹(picking)하는 지점이며, 그 지점이 로봇의 현재 위치 값으로 설정된다. 또한, 아치 형태 경로의 종료(완료) 지점인 P3은 로봇이 제2 기계 장치로 쇠구슬을 플레이싱(placing)하는 지점이다. 이에 따라, 좌표계 설정 단계에서는 이러한 P3이 위치하는 부분인 제2 기계 장치의 MCS 좌표계를 기준으로, 해당 아치 형태 경로의 각 지점(즉, P0, P3와 제1 및 제2 만곡 모션의 지점)에 대한 PCS 좌표계를 설정한다.
가령, 컨베이어 벨트에서 로터리 테이블로 PnP를 수행할 경우, 로봇이 컨베이어 벨트의 쇠구슬을 피킹하는 순간의 지점이 P0이며, 로봇이 로터리 테이블에 쇠구슬을 플레이싱하는 순간의 지점이 P3이다. 즉, 이러한 P0 및 P3를 시작 지점 및 마지막 지점으로 포함하는 PnP 경로가 하나의 운전 경로(이하, “제1 운전 경로”라 지칭함)로 설정되고, 그 제1 운전 경로에 대해 로터리 테이블의 MCS 좌표계를 기준으로 한 PCS 좌표계가 설정된다. 물론, 컨베이어 벨트의 팔레트에 다수의 쇠구슬이 있는 경우, 다수의 구슬에 대한 PnP를 위한, 제1 운전 경로 및 그 PCS 좌표계가 각각 서로 다른 스테이트 머신의 수행 시에 설정될 수 있다. 이때, 각 쇠구슬의 위치가 다르므로, 이들 제1 운전 경로에서 그 P0 및 P3의 위치도 다를 수 있다.
반대로, 로터리 테이블에서 컨베이어 벨트로 PnP를 수행할 경우, 로봇이 로터리 테이블의 쇠구슬을 피킹하는 순간의 지점이 P0이며, 로봇이 컨베이어 벨트에 쇠구슬을 플레이싱하는 순간의 지점이 P3이다. 즉, 이러한 P0 및 P3를 시작 지점 및 마지막 지점으로 포함하는 PnP 경로가 하나의 운전 경로(이하, “제2 운전 경로”라 지칭함)로 설정되고, 그 제2 운전 경로에 대해 컨베이어 벨트의 MCS 좌표계를 기준으로 한 PCS 좌표계가 설정된다. 물론, 로터리 테이블의 팔레트에 다수의 쇠구슬이 있는 경우, 다수의 구슬에 대한 PnP를 위한, 제2 운전 경로 및 그 PCS 좌표계가 각각 서로 다른 스테이트 머신의 수행 시에 설정될 수 있다. 이때, 각 쇠구슬의 위치가 다르므로, 이들 제2 운전 경로에서 그 P0 및 P3의 위치도 다를 수 있다.
한편, 트래킹 설정 단계는 좌표계 설정 단계에서 설정된 경로의 PCS 좌표계에 대해 기계 장치의 움직임을 반영하도록 설정하는 단계이다.
즉, 도 8의 아치 형태 경로에 대한 좌표계 설정 단계의 경우, P0와 P3 사이의 아치 형태 경로에 대한 PCS 좌표계의 설정에 불과하며, 그 경로에 대한 설정과 실제 운전 간의 시간 동안에 P3에 위치한 제2 기계 장치는 계속 움직일 수 있으므로, 이러한 움직임에 대한 반영이 필요하며, 이를 트래킹 설정 단계에서 수행한다.
가령, 컨베이어 벨트에서 로터리 테이블로 PnP를 수행할 경우, 좌표계 설정 단계에서 그 아치 형태 경로(즉, 어느 한 제1 운전 경로)에 대한 PCS 좌표계가 설정되며, 그 설정된 PCS 좌표계에 대해 트래킹 설정 단계에서 마지막 지점의 기계 장치(로터리 테이블)의 움직임에 대한 반영이 설정된다. 이때, 하나의 스테이트 머신에서는 하나의 제1 운전 경로에 대해, PCS 좌표계 설정 및 트래킹 설정을 수행한다.
즉, 각 제1 운전 경로 설정, 그 PCS 좌표계 설정 및 트래킹 설정은 서로 다른 스테이트 머신의 동작 시에 하나씩 수행될 수 있다. 즉, 컨베이어 벨트의 어느 한 쇠구슬에 대한 PnP를 위해, 하나의 스테이트 머신이 동작하면서, 어느 한 제1 운전 경로 설정, 그 PCS 좌표계 설정 및 트래킹 설정이 차례로 수행된다. 이후, 컨베이어 벨트의 다른 한 쇠구슬에 대한 PnP를 위해, 다른 스테이트 머신이 동작하면서, 다른 한 제1 운전 경로 설정, 그 PCS 좌표계 설정 및 트래킹 설정이 차례로 수행된다. 이러한 설정은 컨베이어 벨트의 쇠구슬들이 로터리 테이블로 모두 PnP 이동될 때까지 반복될 수 있다.
반대로, 로터리 테이블에서 컨베이어 벨트로 PnP를 수행할 경우, 좌표계 설정 단계에서 그 아치 형태 경로(즉, 어느 한 제2 운전 경로)에 대한 PCS 좌표계가 설정되며, 그 설정된 PCS 좌표계에 대해 트래킹 설정 단계에서 마지막 지점의 기계 장치(컨베이터 벨트)의 움직임에 대한 반영이 설정된다. 이때, 하나의 스테이트 머신에서는 하나의 제2 운전 경로에 대해, PCS 좌표계 설정 및 트래킹 설정을 수행한다.
즉, 각 제2 운전 경로 설정, PCS 좌표계 설정 및 트래킹 설정은 서로 다른 스테이트 머신의 동작 시에 하나씩 수행될 수 있다. 즉, 로터리 테이블의 어느 한 쇠구슬에 대한 PnP를 위해, 하나의 스테이트 머신이 동작하면서, 어느 한 제2 운전 경로 설정, 그 PCS 좌표계 설정 및 트래킹 설정이 차례로 수행된다. 이후, 로터리 테이블의 다른 한 쇠구슬에 대한 PnP를 위해, 다른 스테이트 머신이 동작하면서, 다른 한 제2 운전 경로 설정, 그 PCS 좌표계 설정 및 트래킹 설정이 차례로 수행된다. 이러한 설정은 로터리 테이블의 쇠구슬이 컨베이어 벨트로 모두 PnP 이동될 때까지 반복될 수 있다.
상술한 바와 같이, 본 발명은 다른 기계 장치(즉, 컨베이어 벨트 및 로터리 테이블)에 따른 서로 다른 공작물 좌표계(즉, 컨베이어 벨트에 따른 PCS 및 로터리 테이블에 따른 PCS)의 지점 간의 PnP 수행 시, 마지막 지점이 속하는 기계 장치의 PCS 좌표계를 기준으로 그 운전 경로를 업데이트 하면 되기 때문에(즉, 모든 PCS 좌표에 대해 매순간 업데이트하지 않아도 되기 때문에) 메모리가 적게 들고 비용이 적게 들 수 있다.
도 13은 MCS에서 PCS로의 변환 명령어에 대한 다른 일 예를 나타낸다.
특히, 좌표계 설정 단계와 트래킹 설정 단계는 PLCOpen 규격에 따른 명령어를 이용하여 각 설정을 수행할 수 있다. 가령, 좌표계 설정 단계는 MC_SetCoordinateTransfrom, MC_SetCartesianTransfroms 등의 명령어를 이용하여 해당 설정을 수행할 수 있고, 트래킹 설정 단계는 MC_SetDynCoordTransform, MC_TrackConveyorBelt, MC_TrackRotaryTable 등의 명령어를 이용하여 해당 설정을 수행할 수 있으나, 이에 한정되는 것은 아니다.
이때, MC_SetCoordinateTransfrom 및 MC_SetCartesianTransfroms는 좌표계 변환을 하는 명령어이며, 도 13에 도시된 바와 같이, 각 명령어의 인수만 다르다. 즉, 이들 명령어를 이용하면, 도 5(b)에 도시된 바와 같이, 모두 World 좌표계에 해당하는 MCS에서 Local 좌표계에 해당하는 PCS로 좌표계 변황이 가능하다. 다만, MC_SetCoordinateTransform은 더 일반적인 형태로 구성되는데, CoordTransform라는 입력에 TransX, TransY, TransZ, RotAng1, RotAng2 및 RotAng3이 분리되어 입력되는 것이 아닌, 이들이 모두 포함된 matrix를 직접 입력 받도록 사양 정의된다.
도 9의 스테이트 머신은 도 11의 경로 운전 명령어 내부에서 매 경로마다 수행되며, MCS/PCS 좌표계 설정, 트래킹 설정 및 Discrete/Continuous/Synchronized 모션은 PLCOpen 명령어를 그대로 사용한다.
도 10의 운전 경로 티칭 명령어에서는 로봇 그리퍼(end-effector) 액추에이터의 설정 값을 매 경로마다 입력(티칭) 받을 수 있고, 도 9의 스테이트 머신에서 매 경로마다 출력이 가능하다.
도 10의 운전 경로 티칭 명령어는 InSignal 및 OutSignal 이벤트 번호를 입력(티칭) 받을 수 있고, 도 9의 스테이트 머신을 통해 도 11의 경로 운전 명령어가 해당 InSignal 및 OutSignal 이벤트 번호를 출력할 수 있다.
도 11의 경로 운전 명령어에서는 현재 경로의 PCS 좌표계의 초기 오브젝트 위치 값(ObjectPosition)을 받을 수 있고, 도 9의 스테이트 머신에서 트래킹 설정 시에 신규 위치 값으로 업데이트될 수 있다.
특히, 도 8에 해당하는 형태로 운전 경로가 설정되기 때문에, 한 지점의 팔레트에서 다른 지점의 팔레트로의 PnP 모션 수행 시에 충돌 및 속도 불연속점이 생기지 않을 수 있다. 동시에, 식(4)와 식(5)을 통한 PnP 모션 경로의 파라미터화에 따라, 도 11의 경로 운전 명령어는 도 9의 스테이트 머신을 통해 PLCOpen 규격의 모션 명령어로 운전이 가능하다.
이론적으로, 본 발명은 무한 개로 설정(티칭)된 PCS 좌표계 간에 PnP 운전이 가능하다. 이는, 도 9의 스테이트 머신을 도 11의 경로 운전 명령어 블록에서 수행하면서, 도 10의 운전 경로 티칭 명령어에서 입력(티칭) 받은 현재 경로의 PCS 좌표계 번호로 스위칭을 하기 때문에, 그러한 PnP 운전이 가능한 것이다.
한편, 본 발명은 운전 중에 현재 경로의 PCS 좌표계로 스위칭하더라도, 새롭게 인식된 PCS 좌표계의 오브젝트(object)를 정확히 트래킹할 수 있다. 이는, 도 11의 경로 운전 명령어에서는 현재 경로의 PCS 좌표계의 초기 오브젝트 위치 값(ObjectPosition)을 받아서, 도 9의 스테이트 머신에서 트래킹 설정 시에 신규 위치 값으로 업데이트할 수 있기 때문에, 그러한 정확한 트래킹이 가능한 것이다.
또한, 본 발명은 운전 중에 현재 경로의 PCS 좌표계로 스위칭을 하는 정확한 타이밍의 판단이 가능하다. 이는, 도 10의 운전 경로 티칭 명령어에서 입력(티칭) 받은 InWait 및 OutWait 이벤트 번호를 도 11의 경로 운전 명령어에서 입력을 받아 모니터링하다가 그 입력에 동기하여 도 9의 스테이트 머신에서 스테이트를 천이시키기 때문에, 그러한 정확한 타이밍 판단이 가능한 것이다.
InWait 및 OutWait 이벤트 번호는 도 11의 경로 운전 명령어를 호출하는 사용자에 의해 제공될 수 있다. 이는, 도 9의 스테이트 머신이 도 11의 경로 운전 명령어 출력으로 InSignal 및 OutSignal 이벤트 번호를 사용자에게 시그널링을 해 주기 때문에, 사용자는 InWait 및 OutWait 이벤트 번호의 제공 타이밍을 알 수 있다.
도 10의 운전 경로 티칭 명령어를 이용한 전체 운전 경로의 입력(티칭)과, 도 11의 경로 운전 명령어의 호출을 통해, 로봇은 입력된 해당 전체 경로에 대한 운전 외에도 복잡한 주변 환경과의 상호 협응이 가능하다. 이는, InWait, OutWait, InSignal 및 OutSignal과 같은 이벤트를 주변 환경 변화에 대해 시퀀스 코딩함으로써 인터랙션(interaction)이 가능해지고, 도 10의 운전 경로 티칭 명령어가 각 경로의 티칭 시 로봇 그리퍼(end-effector)의 액추에이터의 설정 값, 필요 센서 보정 값 및 속도 오버라이드 값을 포함하기 때문에, 그러한 상호 협응이 가능한 것이다. 즉, 도 10의 운전 경로 티칭 명령어는 각 운전 경로 별로 요구되는 로봇의 그리퍼(end-effector) 구동기의 출력 설정 값과 센서의 보정 값의 입력을 포함할 있으며, 도 11의 경로 운전 명령어는 트래킹 중인 오브젝트의 이동/회전량을 보상하기 위한 업데이트하기 위한 입력과, 현재 운전 경로에 대해 설정된 속도를 오버라이드(override)하기 위한 입력을 포함할 수 있다.
도 12는 축-그룹 대 축-그룹 간의 일반적 형태의 트래킹(tracking)에 대한 확장된 다른 일 예를 나타낸다.
즉, 도 7을 참조하여, 컨베이어와 로터리 테이블의 이동/회전량을 트래킹하는 PCS 좌표계 간의 PnP에 대해 상술하였지만, 이러한 서로 다른 PCS 좌표계들 간의 트래킹 원리는 도 12와 같은 구성에서도 마찬가지로 적용될 수 있다.
구체적으로, 도 12는 두 대의 로봇이 철판을 준비하면 다른 한 대의 로봇이 그 두 철판을 트래킹하면서 차례로 점 용접을 하는 경우에 해당한다. 즉, 상술한 컨베이어 벨트와 로터리 테이블의 경우에 그 이동축과 회전축을 해당 PCS 좌표계가 트래킹하는 경우에 해당하며, 도 12의 경우는 로봇이라는 축-그룹을 PCS 좌표계가 트래킹하는 경우에 해당한다. 이러한 도 12의 경우, 도 9의 스테이트 머신에서는 축-그룹들 간의 트래킹을 위해, 축-그룹들 간의 좌표계 변환 명령어(MC_SetDynCoordTransform)를 호출하도록 확장할 수 있다.
예를 들어, 로봇의 동작을 위해, 제1 운전 경로, 제2 운전 경로 및 제3 운전 경로에 따른 모션의 운전이 필요할 수 있다. 즉, 1지점->2지점->3지점->1지점의 경로 순서에 따라 로봇 팔의 모션이 수행되어야 한다. 이때, 1지점은 제1 경로의 시작 지점이자 제3 경로의 마지막 지점, 2지점은 제1 경로의 마지막 지점이자 제2 경로의 시작 지점, 3지점은 제2 경로의 마지막 지점이다. 즉, 1지점과 2지점은 서로 다른 PCS 좌표계의 지점이고, 2지점과 3지점도 서로 다른 PCS 좌표계의 지점이며, 3지점과 1지점도 서로 다른 PCS 좌표계의 지점이다.
이 경우, 로봇 팔이 1지점에 위치하면, 제1 스테이트 머신이 동작하면서, 제1 설정이 수행된다. 즉, 제1 설정은 제1 운전 경로의 설정, 다음 지점인 2지점의 MCS를 기준으로 한 PCS 좌표계의 설정 및 트래킹 설정을 각각 포함한다. 이러한 제1 설정에 따라 제1 스테이트 머신에서는 해당 운전 경로에 따른 모션 운전이 수행된다.
이후, 로봇 팔이 2지점에 위치함에 따라, 제2 스테이트 머신이 동작하면서, 제2 설정이 수행된다. 즉, 제2 설정은 제2 운전 경로의 설정, 다음 지점인 3지점의 MCS를 기준으로 한 PCS 좌표계의 설정 및 트래킹 설정을 각각 포함한다. 이러한 제2 설정에 따라 제2 스테이트 머신에서는 해당 운전 경로에 따른 모션 운전이 수행된다.
이후, 로봇 팔이 3지점에 위치함에 따라, 제3 스테이트 머신이 동작하면서, 제3 설정이 수행된다. 즉, 제3 설정은 제3 운전 경로의 설정, 다음 지점인 1지점의 MCS를 기준으로 한 PCS 좌표계의 설정 및 트래킹 설정을 각각 포함한다. 이러한 제3 설정에 따라 제3 스테이트 머신에서는 해당 운전 경로에 따른 모션 운전이 수행된다.
상술한 바와 같이 구성되는 본 발명은 다수의 PCS 좌표계 간의 Pick-and-Place(PnP) 등과 같이, 기존 PLCopen 규격에 따른 명령어로는 대응이 되지 않는 복잡한 유형의 운전 상황에 대해 모션 제어가 가능한 이점이 있다. 즉, 본 발명은 특정 축 혹은 축-그룹에 트래킹이 진행 중인 서로 다른 다수 개의 PCS 좌표계 간에 로봇의 PnP 운전이 가능하게 하는 이점이 있다. 또한, 본 발명은 PnP 운전 중에 외부 환경의 이벤트 입력에 동기 가능하고 이벤트의 시그널링이 가능한 이점이 있다. 또한, 본 발명은 PLCOpen 규격에 정의된 명령어를 기본 빌딩 블록으로 활용하여 라이브러리 형태의 명령어(User defined function block)의 구현이 가능한 이점이 있다. 또한, 본 발명은 다른 기계 장치에 따른 서로 다른 PCS 좌표계 지점 간의 모션 수행 시, 마지막 지점이 속하는 기계 장치의 PCS 좌표계를 기준으로 그 운전 경로를 업데이트 하면 되기 때문에 메모리가 적게 들고 비용이 적게 들 수 있는 이점이 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시 예에 국한되지 않으며, 후술되는 청구범위 및 이 청구범위와 균등한 것들에 의해 정해져야 한다.
10: 모션 제어 시스템 100: 외부 장치
200: 모션 제어기 210: 경로 설정부
2220: 좌표계 설정부 230: 운전 제어부
300: 드라이브

Claims (13)

  1. 다수의 공작물 좌표계(product coordinate system; PCS) 간의 모션 제어를 위한 모션 제어기를 포함한 시스템에서 수행되는 방법으로서,
    픽 앤 플레이스(Pick and Place; PnP)의 운전을 위한 아치 형태이고 다수의 지점을 포함하는 운전 경로를 설정하는 제1 설정 단계;
    운전 경로의 각 지점들의 공작물 좌표계에 대해, 운전 경로의 마지막 지점에 위치하는 기계 장치의 기계 좌표계(machine coordinate system; MCS)를 기준으로 하는 공작물 좌표계로 설정하며, 각 지점들의 공작물 좌표계에 대해 기계 장치의 움직임에 따른 트래킹(tracking)을 반영하는 제2 설정 단계; 및
    설정된 공작물 좌표계 및 운전 경로에 따라 모션의 운전을 수행하는 운전 단계;를 포함하며,
    상기 운전 경로에서, 시작 지점과 마지막 지점은 서로 다른 기계 장치에 따른 서로 다른 공작물 좌표계의 지점이고,
    상기 아치 형태의 경로는 hup 높이의 상향 방향 이동의 제1 모션 경로와, hdown 높이의 하향 방향 이동의 제3 모션 경로와, 제1 및 제3 모션 사이에서 l 너비의 일측 방향 이동의 제2 모션 경로와, 제1 및 제2 모션 경로 사이의 제1 만곡 모션 경로와, 제2 및 제3 모션 경로 사이의 제2 만곡 모션 경로를 포함하며,
    상기 제1 만곡 모션 경로는 hup 및 l에서 각각 d1 만큼의 거리에 대해 특정 곡률의 경로를 가지고, 상기 제2 만곡 모션 경로는 hdown 및 l에서 각각 d2 만큼의 거리에 대해 특정 곡률의 경로를 가지며, d1 및 d2는 하기 식을 이용하여 구하는 모션 제어 방법.
    Figure 112022501534231-pat00035

    Figure 112022501534231-pat00036

    (단, min(a, b)는 a 및 b 중에 더 작은 최소 길이 값을 나타내며, ArchBlendRatio는 최소 길이 값에 대한 비율 값을 나타냄)
  2. 다수의 공작물 좌표계(product coordinate system; PCS) 간의 모션 제어를 위한 모션 제어기를 포함한 시스템에서 수행되는 방법으로서,
    다수의 지점을 포함하는 운전 경로를 다수개 설정하며, 각 운전 경로에 대한 입출력 이벤트의 인덱스를 설정하는 제1 설정 단계;
    운전 경로의 각 지점들의 공작물 좌표계에 대해, 운전 경로의 마지막 지점에 위치하는 기계 장치의 기계 좌표계(machine coordinate system; MCS)를 기준으로 하는 공작물 좌표계로 설정하되, 입출력 이벤트의 인덱스에 매칭하는 운전 경로의 각 지점들에 대한 공작물 좌표계를 설정하며, 각 지점들의 공작물 좌표계에 대해 기계 장치의 움직임에 따른 트래킹(tracking)을 반영하는 제2 설정 단계; 및
    설정된 공작물 좌표계 및 운전 경로에 따라 모션의 운전을 수행하되, 입출력 이벤트의 인덱스에 매칭하는 운전 경로에 대한 운전을 수행하는 운전 단계;
    를 포함하는 모션 제어 방법.
  3. 삭제
  4. 제2항에 있어서,
    상기 운전 경로는 픽 앤 플레이스(Pick and Place; PnP)의 운전을 위한 아치 형태의 경로인 모션 제어 방법.
  5. 제4항에 있어서,
    상기 아치 형태의 경로는 hup 높이의 상향 방향 이동의 제1 모션 경로와, hdown 높이의 하향 방향 이동의 제3 모션 경로와, 제1 및 제3 모션 사이에서 l 너비의 일측 방향 이동의 제2 모션 경로와, 제1 및 제2 모션 경로 사이의 제1 만곡 모션 경로와, 제2 및 제3 모션 경로 사이의 제2 만곡 모션 경로를 포함하는 모션 제어 방법.
  6. 제5항에 있어서,
    상기 제1 만곡 모션 경로는 hup 및 l에서 각각 d1 만큼의 거리에 대해 특정 곡률의 경로를 가지고, 상기 제2 만곡 모션 경로는 hdown 및 l에서 각각 d2 만큼의 거리에 대해 특정 곡률의 경로를 가지며, d1 및 d2는 하기 식을 이용하여 구하는 모션 제어 방법.
    Figure 112022501534231-pat00010

    Figure 112022501534231-pat00011

    (단, min(a, b)는 a 및 b 중에 더 작은 최소 길이 값을 나타내며, ArchBlendRatio는 그 최소 길이 값에 대한 비율 값을 나타냄)
  7. 삭제
  8. 제2항에 있어서,
    상기 설정된 각 운전 경로에 대해 상기 제2 설정 단계 및 상기 운전 단계가 차례로 반복 수행되는 모션 제어 방법.
  9. 제1항 또는 제2항에 있어서,
    다수의 PCS 좌표계에 대한 트래킹을 위한 PLCopen 규격의 명령어가 부재한 경우에 적용 가능하되, 상기 제2 설정 단계와 상기 운전 단계는 PLCopen 규격에 따른 명령어를 이용하여 수행되는 모션 제어 방법.
  10. 다수의 공작물 좌표계(product coordinate system; PCS) 간의 모션 제어를 위한 모션 제어기로서,
    픽 앤 플레이스(Pick and Place; PnP)의 운전을 위한 아치 형태이고 다수의 지점을 포함하는 운전 경로를 설정하는 경로 설정부;
    운전 경로의 각 지점들의 공작물 좌표계에 대해, 운전 경로의 마지막 지점에 위치하는 기계 장치의 기계 좌표계(machine coordinate system; MCS)를 기준으로 하는 공작물 좌표계로 설정하며, 각 지점들의 공작물 좌표계에 대한 설정 시 기계 장치의 움직임에 따른 트래킹(tracking)을 반영하는 좌표계 설정부;
    설정된 공작물 좌표계 및 운전 경로에 따라 모션의 운전을 수행하는 운전 제어부;를 포함하며,
    상기 운전 경로에서, 시작 지점과 마지막 지점은 서로 다른 기계 장치에 따른 서로 다른 공작물 좌표계의 지점이고,
    상기 아치 형태의 경로는 hup 높이의 상향 방향 이동의 제1 모션 경로와, hdown 높이의 하향 방향 이동의 제3 모션 경로와, 제1 및 제3 모션 사이에서 l 너비의 일측 방향 이동의 제2 모션 경로와, 제1 및 제2 모션 경로 사이의 제1 만곡 모션 경로와, 제2 및 제3 모션 경로 사이의 제2 만곡 모션 경로를 포함하며,
    상기 제1 만곡 모션 경로는 hup 및 l에서 각각 d1 만큼의 거리에 대해 특정 곡률의 경로를 가지고, 상기 제2 만곡 모션 경로는 hdown 및 l에서 각각 d2 만큼의 거리에 대해 특정 곡률의 경로를 가지며, d1 및 d2는 하기 식을 이용하여 구하는 모션 제어기.
    Figure 112022501534231-pat00037

    Figure 112022501534231-pat00038

    (단, min(a, b)는 a 및 b 중에 더 작은 최소 길이 값을 나타내며, ArchBlendRatio는 최소 길이 값에 대한 비율 값을 나타냄)
  11. 다수의 공작물 좌표계(product coordinate system; PCS) 간의 모션 제어를 위한 모션 제어기로서,
    다수의 지점을 포함하는 운전 경로를 다수개 설정하며, 각 운전 경로에 대한 입출력 이벤트의 인덱스를 설정하는 경로 설정부;
    운전 경로의 각 지점들의 공작물 좌표계에 대해, 운전 경로의 마지막 지점에 위치하는 기계 장치의 기계 좌표계(machine coordinate system; MCS)를 기준으로 하는 공작물 좌표계로 설정하되, 입출력 이벤트의 인덱스에 매칭하는 운전 경로의 각 지점들에 대한 공작물 좌표계를 설정하며, 각 지점들의 공작물 좌표계에 대한 설정 시 기계 장치의 움직임에 따른 트래킹(tracking)을 반영하는 좌표계 설정부;
    설정된 공작물 좌표계 및 운전 경로에 따라 모션의 운전을 수행하되, 입출력 이벤트의 인덱스에 매칭하는 운전 경로에 대한 운전을 수행하는 운전 제어부;
    를 포함하는 모션 제어기.
  12. 다수의 공작물 좌표계(product coordinate system; PCS) 간의 모션 제어를 위한 모션 제어 시스템으로서,
    드라이브의 운전을 제어하는 모션 제어기와, 모션 제어기로부터 수신한 제어 신호에 따라 모션 장치를 구동하는 드라이브를 포함하며,
    상기 모션 제어기는,
    픽 앤 플레이스(Pick and Place; PnP)의 운전을 위한 아치 형태이고 다수의 지점을 포함하는 운전 경로를 설정하고, 운전 경로의 각 지점들의 공작물 좌표계에 대해 운전 경로의 마지막 지점에 위치하는 기계 장치의 기계 좌표계(machine coordinate system; MCS)를 기준으로 하는 공작물 좌표계로 설정하되, 각 지점들의 공작물 좌표계에 대해 기계 장치의 움직임에 따른 트래킹(tracking)을 반영하며, 설정된 공작물 좌표계 및 운전 경로에 따라 모션의 운전을 제어하고,
    상기 운전 경로에서, 시작 지점과 마지막 지점은 서로 다른 기계 장치에 따른 서로 다른 공작물 좌표계의 지점이고,
    상기 아치 형태의 경로는 hup 높이의 상향 방향 이동의 제1 모션 경로와, hdown 높이의 하향 방향 이동의 제3 모션 경로와, 제1 및 제3 모션 사이에서 l 너비의 일측 방향 이동의 제2 모션 경로와, 제1 및 제2 모션 경로 사이의 제1 만곡 모션 경로와, 제2 및 제3 모션 경로 사이의 제2 만곡 모션 경로를 포함하며,
    상기 제1 만곡 모션 경로는 hup 및 l에서 각각 d1 만큼의 거리에 대해 특정 곡률의 경로를 가지고, 상기 제2 만곡 모션 경로는 hdown 및 l에서 각각 d2 만큼의 거리에 대해 특정 곡률의 경로를 가지며, d1 및 d2는 하기 식을 이용하여 구하는 모션 제어 시스템.
    Figure 112022501534231-pat00039

    Figure 112022501534231-pat00040

    (단, min(a, b)는 a 및 b 중에 더 작은 최소 길이 값을 나타내며, ArchBlendRatio는 최소 길이 값에 대한 비율 값을 나타냄)
  13. 다수의 공작물 좌표계(product coordinate system; PCS) 간의 모션 제어를 위한 모션 제어 시스템으로서,
    드라이브의 운전을 제어하는 모션 제어기와, 모션 제어기로부터 수신한 제어 신호에 따라 모션 장치를 구동하는 드라이브를 포함하며,
    상기 모션 제어기는,
    다수의 지점을 포함하는 운전 경로를 다수개 설정하고, 각 운전 경로에 대한 입출력 이벤트의 인덱스를 설정하며,
    운전 경로의 각 지점들의 공작물 좌표계에 대해 운전 경로의 마지막 지점에 위치하는 기계 장치의 기계 좌표계(machine coordinate system; MCS)를 기준으로 하는 공작물 좌표계로 설정하되, 입출력 이벤트의 인덱스에 매칭하는 운전 경로의 각 지점들에 대한 공작물 좌표계를 설정하고, 각 지점들의 공작물 좌표계에 대한 설정 시 기계 장치의 움직임에 따른 트래킹(tracking)을 반영하며,
    설정된 공작물 좌표계 및 운전 경로에 따라 모션의 운전을 제어하되, 입출력 이벤트의 인덱스에 매칭하는 운전 경로에 대한 운전을 수행하는 모션 제어 시스템.
KR1020200165453A 2020-12-01 2020-12-01 다수 공작물 좌표계 간의 모션 제어 방법, 장치 및 시스템 KR102423658B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200165453A KR102423658B1 (ko) 2020-12-01 2020-12-01 다수 공작물 좌표계 간의 모션 제어 방법, 장치 및 시스템
PCT/KR2021/017362 WO2022119222A1 (ko) 2020-12-01 2021-11-24 다수 공작물 좌표계 간의 모션 제어 방법, 장치 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200165453A KR102423658B1 (ko) 2020-12-01 2020-12-01 다수 공작물 좌표계 간의 모션 제어 방법, 장치 및 시스템

Publications (2)

Publication Number Publication Date
KR20220076698A KR20220076698A (ko) 2022-06-08
KR102423658B1 true KR102423658B1 (ko) 2022-07-22

Family

ID=81854171

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200165453A KR102423658B1 (ko) 2020-12-01 2020-12-01 다수 공작물 좌표계 간의 모션 제어 방법, 장치 및 시스템

Country Status (2)

Country Link
KR (1) KR102423658B1 (ko)
WO (1) WO2022119222A1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016209995A (ja) * 2016-06-22 2016-12-15 オムロン株式会社 画像処理装置および画像処理システム、ならびにそれらに向けられたガイダンス装置
JP2017004300A (ja) 2015-06-11 2017-01-05 株式会社Kmc 工作機械の数値制御装置、工作機械、工作機械の制御方法及びプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011096077A (ja) * 2009-10-30 2011-05-12 Makino Milling Mach Co Ltd 工具経路の生成方法及び装置
KR101896291B1 (ko) * 2016-05-03 2018-09-11 화천기공 주식회사 공작 기계의 가공경로 보정방법
KR102180545B1 (ko) * 2018-10-26 2020-11-18 연세대학교 산학협력단 가상 공작 기계를 활용하여 가공 오차를 제한하는 수치 제어 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017004300A (ja) 2015-06-11 2017-01-05 株式会社Kmc 工作機械の数値制御装置、工作機械、工作機械の制御方法及びプログラム
JP2016209995A (ja) * 2016-06-22 2016-12-15 オムロン株式会社 画像処理装置および画像処理システム、ならびにそれらに向けられたガイダンス装置

Also Published As

Publication number Publication date
WO2022119222A1 (ko) 2022-06-09
KR20220076698A (ko) 2022-06-08

Similar Documents

Publication Publication Date Title
US9254567B2 (en) System for commanding a robot
US7282882B2 (en) Robot controller
EP3379355B1 (en) Control system, controller, and control method
EP1704025B1 (en) Control system, method and computer program for sychronizing several robots.
US8843232B2 (en) Control method for a complex consisting of a plurality of multiaxial handling devices arranged in succession and/or side by side, and also data storage medium, control system and complex
US20180250817A1 (en) Control system, controller, control method, and recording medium
EP2665585B1 (en) System for commanding a robot
US20230099602A1 (en) Device control based on execution command and updated environment information
CN108568816B (zh) 用于控制自动化工作单元的方法
KR102423658B1 (ko) 다수 공작물 좌표계 간의 모션 제어 방법, 장치 및 시스템
US9199373B2 (en) Robot control device and control method
CN107735226B (zh) 利用机器人驶过预设的轨迹
US11014237B2 (en) Methods, systems, and apparatuses, for path planning and execution in a robotic system
EP4169672A1 (en) Multi-axis servo control system
US10105849B1 (en) Manufacturing system having robotic apparatus
WO2022207075A1 (en) A method for controlling displacement of a robot
CN112720502A (zh) 一种单多轴机械手的控制方法
JP2003044144A (ja) 多軸同期制御装置、多軸同期制御方法および多軸同期制御プログラム
KR20020030298A (ko) 산업용 퍼스널 컴퓨터를 기반으로 하는 갠트리형로봇시스템 및 그 제어방법
CN111699078A (zh) 机器人的运行
US20220212343A1 (en) Operation command generation device, mechanism control system, non-transitory computer readable storage medium, operation command generation method, and mechanism control method
WO2023138536A1 (zh) 电机控制***、电机控制方法和电机驱动和转发装置
EP4155035A1 (en) Method for controlling multiple execution mechanisms, electronic device, and storage medium
CN115922704A (zh) 机器人和外部轴的联动协同控制方法、设备及存储介质
JPH05297916A (ja) ロボットの軌跡制御方法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant