KR20230012057A - 로봇 데모 학습을 위한 스킬 템플릿들 - Google Patents
로봇 데모 학습을 위한 스킬 템플릿들 Download PDFInfo
- Publication number
- KR20230012057A KR20230012057A KR1020227044777A KR20227044777A KR20230012057A KR 20230012057 A KR20230012057 A KR 20230012057A KR 1020227044777 A KR1020227044777 A KR 1020227044777A KR 20227044777 A KR20227044777 A KR 20227044777A KR 20230012057 A KR20230012057 A KR 20230012057A
- Authority
- KR
- South Korea
- Prior art keywords
- demo
- robot
- subtask
- skill
- template
- 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/1628—Programme controls characterised by the control loop
- B25J9/163—Programme controls characterised by the control loop learning, adaptive, model based, rule based expert control
-
- 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
-
- 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/1656—Programme controls characterised by programming, planning systems for manipulators
- B25J9/1661—Programme controls characterised by programming, planning systems for manipulators characterised by task planning, object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/40—Robotics, robotics mapping to robotics vision
- G05B2219/40116—Learn by operator observation, symbiosis, show, watch
-
- 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/40—Robotics, robotics mapping to robotics vision
- G05B2219/40391—Human to robot skill transfer
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Robotics (AREA)
- Mechanical Engineering (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Automation & Control Theory (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Fuzzy Systems (AREA)
- Manipulator (AREA)
- Feedback Control In General (AREA)
- Stored Programmes (AREA)
- Toys (AREA)
Abstract
컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램들을 포함하는, 로봇 데모 학습을 위해 스킬 템플릿들을 이용하기 위한 방법들, 시스템들, 및 장치. 이러한 방법들 중 하나는 로봇에 의해 수행될 작업에 대한 스킬 템플릿을 수신하는 단계를 포함하고, 스킬 템플릿은 복수의 하위작업들을 갖는 상태 기계, 및 하위작업들 중 하나 이상 사이의 하나 이상의 각각의 전이 조건을 정의한다. 스킬 템플릿의 데모 하위작업에 대한 로컬 데모 데이터가 수신되고, 로봇에 의해 데모 하위작업을 수행하는 방법을 데모하는 로컬 데모 데이터가 사용자로부터 생성된다. 기계 학습 모델이 데모 하위작업에 대해 정밀화되고, 스킬 템플릿이 로봇 상에서 실행됨으로써, 로봇이 스킬 템플릿에 의해 정의된 상태 기계를 통해 전이하여 작업을 수행하게 한다.
Description
본 명세서는 로봇(robotics)에 관한 것으로, 더 구체적으로는 로봇 이동들을 계획하는 것에 관한 것이다.
로봇 제어는 작업들을 수행하기 위해 로봇들의 물리적 이동들을 제어하는 것을 지칭한다. 예를 들어, 자동차들을 제작하는 산업용 로봇은 먼저 자동차 부품을 집은 다음 그 자동차 부품을 자동차의 프레임에 용접하도록 프로그래밍될 수 있다. 이러한 액션들 각각은 로봇 모터들 및 액추에이터들에 의한 수십 또는 수백의 개별 이동들을 자체적으로 포함할 수 있다.
로봇 계획은 전통적으로 특정 작업을 달성하기 위해 로봇 구성요소들이 어떻게 이동해야 하는지를 세심하게 지시하기 위해 막대한 양의 수동 프로그래밍을 요구해 왔다. 수동 프로그래밍은 지루하고, 시간이 걸리며, 오류가 발생하기 쉽다. 또한, 하나의 작업셀에 대해 수동으로 생성되는 스케줄은 일반적으로 다른 작업셀들에 대해 이용될 수 없다. 본 명세서에서, 작업셀은 로봇이 동작할 물리적 환경이다. 작업셀들은 로봇들이 작업셀 내에서 어떻게 이동할 수 있는지에 대한 제약들을 부과하는 특정 물리적 특성들, 예를 들어, 물리적 치수들을 갖는다. 따라서, 하나의 작업셀에 대한 수동으로 프로그래밍된 스케줄은 상이한 로봇들, 상이한 수의 로봇들, 또는 상이한 물리적 치수들을 갖는 작업셀과 호환되지 않을 수 있다.
특정 작업들을 수행하도록 로봇들을 제어하기 위해 기계 학습 제어 알고리즘들, 예를 들어, 강화 학습을 이용하는 것에 대한 일부 연구가 수행되었다. 그러나, 로봇들은 전통적인 학습 접근법들을 일반적으로 만족스럽지 않게 하는 다수의 단점을 갖는다.
첫째, 로봇들은 당연히 매우 복잡하고, 고차원이며, 연속적인 액션 공간을 갖는다. 따라서, 모든 가능한 후보 액션들을 생성하고 이들을 평가하는 것은 계산적으로 비용이 많이 든다. 둘째, 로봇 제어는 극도로 희소한 보상들을 갖는 환경인데, 그 이유는 대부분의 가능한 액션들이 특정 작업을 완료하지 못하기 때문이다. 보상 정형(reward shaping)이라고 알려진 기술이 희소 보상 문제를 완화시키기 위해 이용되었지만, 이것은 일반적으로 수동 설계 보상 함수들에 대해 확장가능하지 않다.
추가적인 문제는 로봇 제어를 위해 로봇 학습을 이용하기 위한 전통적인 기술들이 매우 취약하다는 것이다. 이것은, 작업가능한 모델이 성공적으로 훈련되더라도, 작업, 로봇, 또는 환경에 대한 매우 작은 변화들조차도 전체 모델을 완전히 이용불가능하게 할 수 있다는 것을 의미한다.
이러한 문제들 모두는 로봇 제어를 위한 강화 학습과 같은 기술들을 이용하는 전통적인 방식들이, 잘 확장되지 않고 다른 상황들로 일반화되지 않는, 전혀 작업하기 어려운 계산 비용이 많이 드는 프로세스를 낳는다는 것을 의미한다.
본 명세서는 데모 기반 로봇 학습(demonstration-based robotic learning)에 관한 기술들을 설명한다. 특히, 본 명세서는 로봇이 데모 데이터를 이용하여 학습된 맞춤형 제어 정책들을 가지는 하나 이상의 하위작업(subtask)을 갖는 스킬 템플릿(skill template)을 실행할 수 있는 방법을 설명한다.
본 명세서에서, 작업은 하나 이상의 하위작업을 수행하는 것을 수반하는 특정 로봇의 능력을 지칭한다. 예를 들어, 커넥터 삽입 작업은 로봇이 와이어 커넥터를 소켓에 삽입할 수 있게 하는 능력이다. 이 작업은 전형적으로 2개의 하위작업, 즉 1) 로봇의 도구를 소켓의 위치로 이동시키는 것, 및 2) 커넥터를 특정 위치에서 소켓 내에 삽입하는 것을 포함한다.
본 명세서에서, 하위작업은 도구를 이용하여 로봇에 의해 수행될 동작이다. 간결성을 위해, 로봇이 하나의 도구만을 가질 때, 하위작업은 전체로서 로봇에 의해 수행될 동작으로서 설명될 수 있다. 예시적인 하위작업들은, 몇 가지 예를 들자면, 용접, 접착제 분배, 부품 배치, 및 표면 샌딩을 포함한다. 하위작업들은 일반적으로 하위작업을 수행하는데 필요한 도구를 표시하는 유형은 물론, 하위작업이 수행될 작업셀의 좌표계 내의 위치와 연관된다.
본 명세서에서, 스킬 템플릿, 또는 간결성을 위해, 템플릿은, 로봇이 특정한 작업을 수행하도록 조율되는 것을 허용하는 데이터 및 소프트웨어의 모음이다. 스킬 템플릿 데이터는 작업을 수행하는데 필요한 하나 이상의 하위작업은 물론, 스킬의 어느 하위작업들이 로컬 데모 학습을 필요로 하는지 그리고 성공 또는 실패를 결정하는데 어느 지각 스트림들이 필요할지를 설명하는 정보를 나타낸다. 따라서, 스킬 템플릿은 로컬 데모 학습을 요구하는 데모 하위작업들, 로컬 데모 학습을 요구하지 않는 비-데모 하위작업들, 또는 둘 다를 정의할 수 있다.
이러한 기술들은 기계 학습, 예를 들어, 강화 학습을 이용하여 제어하기가 전통적으로 어려운 로봇 작업들에 대해 특히 유리하다. 이들 작업들은, 몇 가지 예를 들자면, 작업 공간 내의 물체들과의 물리적 접촉, 예를 들어, 샌딩, 연결 및 삽입 작업들, 및 와이어 라우팅을 수반하는 것들을 포함한다.
본 명세서에 설명된 주제의 특정 실시예들은 다음의 이점들 중 하나 이상을 실현하도록 구현될 수 있다. 본 명세서에 설명된 바와 같은 데모 데이터를 이용하는 학습은 전통적인 강화 학습 방법들의 문제들을 일반화할 수 없는 것과 희소 보상을 해결한다.
시스템은 시각적, 고유수용적(관절) 데이터, 촉각적 데이터, 및 임의의 다른 피처들을 이용하여 작업들을 수행할 수 있으며, 이는 시스템이 특정 로봇 모델들에 고정밀도로 빠르게 적응할 수 있게 한다. 로봇에서의 최소한의 감지라는 고전적인 견해와는 달리, "센서가 풍부한 로봇 조작"에 중점을 둔다. 이것은 일반적으로 더 저렴한 로봇들이 더 적은 셋업 시간으로 동일한 작업들을 수행하는데 이용될 수 있다는 것을 의미한다.
아래에 설명되는 기술들은 기계 학습 기술들이 적절히 설치된 하드웨어 추상화들을 갖는 임의의 적절한 로봇에 빠르게 적응되는 것을 가능하게 한다. 전형적인 시나리오에서, 한 명의 비전문가가 1일 미만의 셋업 시간에 스킬 템플릿을 실행하도록 로봇을 훈련할 수 있다. 이것은, 전문가들의 팀들이 보상 함수를 설계하는데 수주 동안 그 문제에 대해 작업할 것을 요구할 수 있고 매우 큰 데이터 센터들에서의 수주의 훈련 시간을 요구하는 전통적인 방법들에 비해 엄청난 개선이다. 이것은 기계 학습 로봇 제어가 많은 유형들의 로봇들 및 심지어 시스템이 이전에 결코 보지 못한 로봇들에 널리 배포되는 것을 효과적으로 가능하게 한다.
이러한 기술들은 로봇 학습을 서비스로서 효과적으로 구현할 수 있고, 이는 이러한 기술에 대한 더 많은 액세스를 낳는다. 이것은 차례로 전체 로봇 산업을 보다 안전하고 전체적으로 보다 효율적으로 만든다.
강화 학습, 기계 학습과의 지각적 데이터 처리, 및 진보된 임피던스/어드미턴스 제어의 조합은, 작업 복잡성에도 불구하고, 산업 응용들에서 요구되는 바와 같이, 매우 높은 성공률로 수행할 로봇 스킬을 가능하게 할 것이다.
본 명세서의 주제의 하나 이상의 실시예의 상세들이 첨부 도면들과 이하의 설명에서 개시된다. 본 주제의 다른 피처들, 양태들 및 이점들은 설명, 도면들 및 청구항들로부터 명백해질 것이다.
도 1은 예시적인 데모 학습 시스템의 도면이다.
도 2a는 로컬 데모 데이터에 기반한 맞춤형 제어 정책을 이용하여 하위작업을 실행하기 위한 예시적인 시스템의 도면이다.
도 2b는 로컬 데모 데이터를 이용하여 하위작업을 실행하기 위한 다른 예시적인 시스템의 도면이다.
도 2c는 잔차 강화 학습을 이용하여 하위작업을 실행하기 위한 다른 예시적인 시스템의 도면이다.
도 3a는 다수의 상이한 센서 스트림으로부터의 센서 데이터를 조합하기 위한 예시적인 프로세스의 흐름도이다.
도 3b는 카메라 손목 밴드의 도면이다.
도 3c는 카메라 손목 밴드의 다른 예시적인 뷰이다.
도 3d는 카메라 손목 밴드의 다른 예시적인 뷰이다.
도 4는 예시적인 스킬 템플릿을 예시한다.
도 5는 스킬 템플릿을 이용하여 스킬을 수행하도록 로봇을 구성하기 위한 예시적인 프로세스의 흐름도이다.
도 6a는 힘을 가이드로서 이용하는 작업에 대한 스킬 템플릿을 이용하기 위한 예시적인 프로세스의 흐름도이다.
도 6b는 클라우드 기반 훈련 시스템을 이용하여 스킬 템플릿을 훈련시키기 위한 예시적인 프로세스의 흐름도이다.
다양한 도면들에서의 유사한 참조 번호들 및 명칭들은 유사한 요소들을 표시한다.
도 2a는 로컬 데모 데이터에 기반한 맞춤형 제어 정책을 이용하여 하위작업을 실행하기 위한 예시적인 시스템의 도면이다.
도 2b는 로컬 데모 데이터를 이용하여 하위작업을 실행하기 위한 다른 예시적인 시스템의 도면이다.
도 2c는 잔차 강화 학습을 이용하여 하위작업을 실행하기 위한 다른 예시적인 시스템의 도면이다.
도 3a는 다수의 상이한 센서 스트림으로부터의 센서 데이터를 조합하기 위한 예시적인 프로세스의 흐름도이다.
도 3b는 카메라 손목 밴드의 도면이다.
도 3c는 카메라 손목 밴드의 다른 예시적인 뷰이다.
도 3d는 카메라 손목 밴드의 다른 예시적인 뷰이다.
도 4는 예시적인 스킬 템플릿을 예시한다.
도 5는 스킬 템플릿을 이용하여 스킬을 수행하도록 로봇을 구성하기 위한 예시적인 프로세스의 흐름도이다.
도 6a는 힘을 가이드로서 이용하는 작업에 대한 스킬 템플릿을 이용하기 위한 예시적인 프로세스의 흐름도이다.
도 6b는 클라우드 기반 훈련 시스템을 이용하여 스킬 템플릿을 훈련시키기 위한 예시적인 프로세스의 흐름도이다.
다양한 도면들에서의 유사한 참조 번호들 및 명칭들은 유사한 요소들을 표시한다.
도 1은 예시적인 데모 학습 시스템의 도면이다. 시스템(100)은 본 명세서에 설명된 데모 기반 학습 기술들을 구현할 수 있는 시스템의 예이다.
시스템(100)은 온라인 실행 시스템(110), 훈련 시스템(120), 및 로봇 인터페이스 서브시스템(160)을 포함하는 다수의 기능적 구성요소를 포함한다. 이들 구성요소들 각각은 임의의 적절한 통신 네트워크, 예를 들어, 인트라넷 또는 인터넷, 또는 네트워크들의 조합을 통해 서로 결합되는, 하나 이상의 위치에서 하나 이상의 컴퓨터 상에 설치되는 컴퓨터 프로그램들로서 구현될 수 있다.
시스템(100)은 2개의 기본 모드, 즉 데모 모드 및 실행 모드에서 로봇들(170a-n)을 제어하도록 동작한다.
데모 모드에서, 사용자는 특정 작업 또는 하위작업을 수행하도록 하나 이상의 로봇(170a-n)을 제어할 수 있다. 그렇게 하는 동안, 온라인 실행 시스템(110)은 상태 메시지들(135) 및 온라인 관찰들(145)을 모아서 로컬 데모 데이터를 생성한다. 데모 데이터 모음기(150)는 상태 메시지들(135) 및 온라인 관찰들(145)로부터 로컬 데모 데이터(115)를 생성할 수 있는 모듈이며, 그 후 온라인 실행 시스템(110)은 이를 훈련 시스템(120)에 제공할 수 있다. 그 다음, 훈련 시스템은 작업 및 작업을 수행하는 로봇 양쪽 모두의 특정한 특성들에 특정적인 맞춤형 제어 정책(125)을 생성할 수 있다.
본 명세서에서, 제어 정책은 로봇이 주어진 관찰 입력에 대해 수행할 하나 이상의 다음 액션을 생성하는 모듈 또는 서브시스템이다. 제어 정책의 출력은, 정책에 의해 직접 출력되는 커맨드들로서, 또는 로봇 제어 스택의 메커니즘들을 통해 다수의 로봇 구성요소들에 의해 각각 소비되는 더 높은 레벨 커맨드들로서, 하나 이상의 로봇 구성요소, 예를 들어, 모터들 또는 액추에이터들로의 이동들에 영향을 미칠 수 있다. 따라서, 제어 정책은 환경 관찰을 하나 이상의 액션으로 변환하는 하나 이상의 기계 학습 모델을 포함할 수 있다.
본 명세서에서, 로컬 데모 데이터는 로봇이 물리적 이동들을 수행하게 함으로써 로봇이 특정 작업을 어떻게 수행할 수 있는지를 데모하기 위해 사용자가 로봇을 제어하는 동안 수집된 데이터이다. 로컬 데모 데이터는 운동학적 데이터, 예를 들어, 관절 위치들, 배향들, 및 각도들을 포함할 수 있다. 로컬 데모 데이터는 또한 센서 데이터, 예를 들어, 하나 이상의 센서로부터 수집된 데이터를 포함할 수 있다. 센서들은 몇 가지 예를 들자면, 힘 센서들; 시각적 센서들, 예를 들어, 카메라, 깊이 카메라들, 및 라이더; 전기 연결 센서들; 가속도 센서들; 오디오 센서들; 자이로들; 접촉 센서들; 레이더 센서들; 및 근접 센서들, 예를 들어, 적외선 근접 센서들, 용량성 근접 센서들, 또는 유도성 근접 센서들을 포함할 수 있다.
전형적으로, 로컬 데모 데이터는 데모 모드에서 로봇을 제어하는 사용자에 매우 근접한 하나 이상의 로봇으로부터 획득된다. 그러나, 사용자와 로봇 사이의 가까운 물리적 근접성은 로컬 데모 데이터를 획득하기 위한 요건이 아니다. 예를 들어, 사용자는 원격 사용자 인터페이스를 통해 특정 로봇으로부터 원격으로 로컬 데모 데이터를 획득할 수 있다.
훈련 시스템(120)은 로컬 데모 데이터(115)로부터 맞춤형 제어 정책(125)을 생성하기 위해 기계 학습 기술들을 이용할 수 있는 컴퓨터 시스템이다. 훈련 시스템(120)은 전형적으로 온라인 실행 시스템(110)보다 훨씬 더 많은 컴퓨팅 리소스들을 갖는다. 예를 들어, 훈련 시스템(120)은 수백 또는 수천 개의 컴퓨팅 노드들을 갖는 클라우드 기반 컴퓨팅 시스템일 수 있다.
맞춤형 제어 정책(125)을 생성하기 위해, 훈련 시스템(120)은 먼저 작업에 대한 기본 제어 정책(base control policy)을 획득하거나 미리 생성할 수 있다. 기본 제어 정책은 임의의 충분히 유사한 로봇이 작업을 수행할 수 있는 것에 비교적 가깝게 되도록 특정 작업에 대해 충분히 잘 작동할 것으로 예상되는 제어 정책이다. 대다수의 작업들에 대해, 기본 제어 정책만으로는 충분히 신뢰성 있는 성공으로 작업을 달성하기에 충분히 정밀할 것으로 예상되지는 않는다. 예를 들어, 연결 및 삽입 작업들은 전형적으로 밀리미터 미만의 정밀도를 요구하는데, 이는 특정 로봇에 대한 로컬 데모 데이터에 의해 제공되는 세부 사항 없이는 획득될 수 없는 정밀도이다.
특정 작업에 대한 기본 제어 정책은 다양한 방식들로 생성될 수 있다. 예를 들어, 기본 제어 정책은 수동으로 프로그래밍될 수 있거나, 전통적인 강화 학습 기술들을 이용하여, 또는 본 명세서에서 설명된 데모 기반 학습 기술들을 이용하여 훈련될 수 있다. 이러한 기술들 모두는 작업에 대한 로컬 데모 데이터를 수신하기 전에 기본 제어 정책을 미리 생성하는데 적합할 수 있는데, 그 이유는 기본 제어 정책을 생성할 때 시간이 덜 고려되기 때문이다.
일부 구현들에서, 훈련 시스템은 일반화된 훈련 데이터(165)로부터 기본 제어 정책을 생성한다. 온라인 실행 시스템(110)에 의해 모아진 로컬 데모 데이터(115)가 전형적으로 하나의 특정 로봇 또는 하나의 특정 로봇 모델에 특정적이지만, 일반화된 훈련 데이터(165)는 대조적으로, 동일한 모델일 필요가 없거나, 동일한 사이트에 위치되거나 동일한 제조자에 의해 구축될 필요가 없는 하나 이상의 다른 로봇으로부터 생성될 수 있다. 예를 들어, 일반화된 훈련 데이터(165)는 상이한 특성들을 갖고 상이한 모델들인 수십 또는 수백 또는 수천 개의 상이한 로봇들로부터 오프사이트에서 생성될 수 있다. 또한, 일반화된 훈련 데이터(165)는 물리적 로봇들로부터 생성될 필요조차 없다. 예를 들어, 일반화된 훈련 데이터는 물리적 로봇들의 시뮬레이션들로부터 생성된 데이터를 포함할 수 있다.
따라서, 로컬 데모 데이터(115)는 사용자가 액세스하고 조작할 수 있는 특정 로봇에 특정적이라는 점에서 로컬이다. 따라서, 로컬 데모 데이터(115)는 특정 로봇에 특정적인 데이터를 나타내지만, 또한 로컬 변수들, 예를 들어 특정 작업의 특정한 특성들뿐만 아니라 특정 작업 환경의 특정한 특성들을 나타낼 수 있다.
기본 제어 정책은 또한 스킬 템플릿을 개발하는 프로세스 동안 수집되는 시스템 데모 데이터를 이용하여 정의될 수 있다. 예를 들어, 스킬 템플릿들을 생성하는 엔티티와 연관된 엔지니어들의 팀은 시스템(100)으로부터 원격에 있고/있거나 시스템과 연관되지 않은 설비에 있는 하나 이상의 로봇을 이용하여 데모들을 수행할 수 있다. 시스템 데모 데이터를 생성하는데 이용되는 로봇들은 또한 작업셀(170) 내의 로봇들(170a-n)과 동일한 로봇들 또는 동일한 로봇 모델들일 필요는 없다. 이 경우, 시스템 데모 데이터는 기본 제어 정책의 액션들을 부트스트래핑하는데 이용될 수 있다. 그 후, 기본 제어 정책은 더 계산적으로 비싸고 정교한 학습 방법들을 이용하여 맞춤형 제어 정책에 적응될 수 있다.
로컬 데모 데이터를 이용하여 기본 제어 정책을 적응시키는 것은, 예를 들어, 시스템 데모 데이터를 수집함으로써 또는 일반화된 훈련 데이터(165)를 이용하여 훈련함으로써, 기본 제어 정책을 생성하는 것에 비해 비교적 빠르다는 매우 바람직한 효과를 갖는다. 예를 들어, 특정 작업에 대한 일반화된 훈련 데이터(165)의 크기는 로컬 데모 데이터(115)보다 수십배 더 큰 경향이 있고, 따라서 기본 제어 정책을 훈련하는 것은 특정 로봇에 대해 이를 적응시키는 것보다 훨씬 더 오래 걸릴 것으로 예상된다. 예를 들어, 기본 제어 정책을 훈련하는 것은 방대한 컴퓨팅 리소스들, 일부 경우들에서는, 일반화된 훈련 데이터로부터 기본 제어 정책을 훈련하기 위해 수일 또는 수주 동안 작업하는 수백 또는 수천 개의 기계들을 갖는 데이터센터를 요구할 수 있다. 대조적으로, 로컬 데모 데이터(115)를 이용하여 기본 제어 정책을 적응시키는 것은 단지 몇 시간이 걸릴 수 있다.
유사하게, 기본 제어 정책을 정의하기 위해 시스템 데모 데이터를 수집하는 것은 로컬 데모 데이터에 대해 요구되는 것보다 더 많은 반복들을 요구할 수 있다. 예를 들어, 기본 제어 정책을 정의하기 위해, 엔지니어들의 팀은 1000개의 성공적인 작업 및 1000개의 실패한 작업의 데모를 가질 수 있다. 대조적으로, 결과적인 기본 제어 정책을 충분히 적응시키는 것은 50개의 성공적인 데모 및 50개의 실패한 데모만을 요구할 수 있다.
따라서, 훈련 시스템(120)은 데모 데이터를 생성하는데 이용되었던, 특정 로봇에 대한 맞춤형 제어 정책(125)을 생성하기 위해 로컬 데모 데이터(115)를 이용하여 기본 제어 정책을 정밀화할 수 있다. 맞춤형 제어 정책(125)은 특정 로봇의 특성들뿐만 아니라 작업에 대한 로컬 변수들을 고려하기 위해 기본 제어 정책을 조정한다. 로컬 데모 데이터를 이용하여 맞춤형 제어 정책(125)을 훈련하는 것은 기본 제어 정책을 훈련하는 것보다 훨씬 적은 시간이 걸릴 수 있다. 예를 들어, 기본 제어 정책을 훈련하는 것은 수일 또는 수주가 걸릴 수 있지만, 사용자는 로봇을 이용하여 단지 1-2시간을 소비하여 로컬 데모 데이터(115)를 생성할 수 있고, 이는 이후 훈련 시스템(120)에 업로드될 수 있다. 그 다음, 훈련 시스템(120)은 기본 제어 정책을 훈련하는데 걸리는 시간보다 훨씬 적은 시간, 예를 들어, 아마도 단지 1시간 또는 2시간 내에 맞춤형 제어 정책(125)을 생성할 수 있다.
실행 모드에서, 실행 엔진(130)은 어떠한 사용자 개입도 없이 작업을 자동으로 수행하기 위해 맞춤형 제어 정책(125)을 이용할 수 있다. 온라인 실행 시스템(110)은 맞춤형 제어 정책(125)을 이용하여, 작업셀(170) 내의 하나 이상의 로봇, 예를 들어 로봇들(170a-n)을 구동하는 로봇 인터페이스 서브시스템(160)에 제공될 커맨드들(155)을 생성할 수 있다. 온라인 실행 시스템(110)은 로봇들(170a-n)에 의해 생성된 상태 메시지들(135) 및 작업셀(170) 내에서 관찰들을 하는 하나 이상의 센서(171a-n)에 의해 이루어진 온라인 관찰들(145)을 소비할 수 있다. 도 1에 도시된 바와 같이, 각각의 센서(171)는 각각의 로봇(170)에 결합된다. 그러나, 센서들은 로봇들과 일대일 대응을 가질 필요가 없고 로봇들에 결합될 필요도 없다. 실제로, 각각의 로봇은 다수의 센서를 가질 수 있고, 센서들은 작업셀(170) 내의 고정식 또는 이동식 표면들 상에 탑재될 수 있다.
실행 엔진(130)은 상태 메시지들(135) 및 온라인 관찰들(145)을 훈련 시스템(120)으로부터 수신된 맞춤형 제어 정책(125)에 대한 입력으로서 이용할 수 있다. 따라서, 로봇들(170a-n)은 그 특정 특성들 및 작업의 특정 특성들에 따라 작업을 완료하기 위해 실시간으로 반응할 수 있다.
따라서, 로컬 데모 데이터를 이용하여 제어 정책을 조정하는 것은 매우 상이한 사용자 경험을 낳는다. 사용자의 관점에서, 로컬 데모 데이터를 생성하고 맞춤형 제어 정책이 생성되기를 기다리는 것을 포함하여, 맞춤형 제어 정책으로 매우 정밀하게 작업을 수행하도록 로봇을 훈련하는 것은 하루 미만의 셋업 시간이 걸릴 수 있는 매우 빠른 프로세스이다. 그 속도는 미리 계산된 기본 제어 정책을 활용하는 것으로부터 비롯된다.
이러한 배열은, 일반적으로 수주의 테스트 및 수동으로 설계된 보상 함수들을 생성하는 것, 수주의 적절한 훈련 데이터를 생성하는 것, 및 수주의 더 많은 훈련, 테스트 및 모델들을 정밀화하여 이들이 산업 생산에 적합하게 되는 것을 요구하는 기존의 로봇 학습 방법들에 비해 방대한 기술적 개선을 도입한다.
또한, 전통적인 로봇 강화 학습과 달리, 로컬 데모 데이터를 이용하는 것은 로봇, 작업, 및 환경의 특성들에서의 작은 변화들에 대해 매우 견고하다. 회사가 새로운 로봇 모델을 구매하는 경우, 사용자는 단지 새로운 맞춤형 제어 정책에 대한 새로운 로컬 데모 데이터를 생성하는데 하루만 소비하면 된다. 이것은 로봇, 작업, 또는 환경의 물리적 특성들에 대한 임의의 변경이 수주에 걸친 전체 프로세스를 처음부터 다시 시작하는 것을 요구할 수 있는 기존의 강화 학습 방법들과 대조적이다.
데모 기반 학습 프로세스를 개시하기 위해, 온라인 실행 시스템은 훈련 시스템(120)으로부터 스킬 템플릿(105)을 수신할 수 있다. 전술한 바와 같이, 스킬 템플릿(105)은 스킬을 수행하는데 필요한 하나 이상의 하위작업의 시퀀스, 하위작업들 중 어느 것이 로컬 데모 학습을 필요로 하는지, 그리고 어느 하위작업들에 대해 어느 지각적 스트림들이 필요할지뿐만 아니라, 스킬 템플릿의 하나의 하위작업을 수행하는 것으로부터 다음 하위작업으로 언제 전이할지를 지정하는 전이 조건들을 지정할 수 있다.
전술한 바와 같이, 스킬 템플릿은 로컬 데모 학습을 요구하는 데모 하위작업들, 로컬 데모 학습을 요구하지 않는 비-데모 하위작업들, 또는 둘 다를 정의할 수 있다.
데모 하위작업들은, 전술한 바와 같이, 일반화된 훈련 데이터 또는 시스템 데모 데이터로부터 미리 계산될 수 있는 기본 제어 정책에 암시적으로 또는 명시적으로 결부되어 있다. 따라서, 스킬 템플릿은, 템플릿에서의 각각의 데모 하위작업에 대해, 별도의 기본 제어 정책, 또는 기본 제어 정책의 식별자를 포함할 수 있다.
스킬 템플릿은 또한, 각각의 데모 하위작업에 대해, 로컬 데모 데이터를 이용하여 데모 하위작업을 조율하도록 요구되는 소프트웨어 모듈들을 포함할 수 있다. 각각의 데모 하위작업은 상이한 유형의 기계 학습 모델에 의존할 수 있고, 조율을 위해 상이한 기술들을 이용할 수 있다. 예를 들어, 이동 데모 하위작업은 특정 작업 목표를 찾기 위해 로컬 작업셀 환경의 카메라 이미지들에 크게 의존할 수 있다. 따라서, 이동 데모 하위작업에 대한 조율 절차는 로컬 데모 데이터에서 캡처된 카메라 이미지들에서 피처들을 인식하기 위해 기계 학습 모델들을 더 많이 조율할 수 있다. 이와 달리, 삽입 데모 하위작업은 연결 소켓의 에지들을 감지하고 적절히 완만한 힘을 이용하여 커넥터를 소켓 내에 삽입하기 위한 힘 피드백 데이터에 크게 의존할 수 있다. 따라서, 삽입 데모 하위작업에 대한 조율 절차는 힘 지각 및 대응하는 피드백을 다루는 기계 학습 모델들을 더 많이 조율할 수 있다. 즉, 스킬 템플릿에서의 하위작업들에 대한 기반적인 모델들이 동일할 때에도, 각각의 하위작업은 상이한 방식들로 로컬 데모 데이터를 통합하기 위한 그 자신의 각각의 조율 절차들을 가질 수 있다.
비-데모 하위작업들은 기본 제어 정책과 연관되거나 연관되지 않을 수 있다. 예를 들어, 비-데모 하위작업은 단순히 특정 좌표 위치로 이동하는 것을 지정할 수 있다. 대안적으로, 비-데모 하위작업은, 예를 들어, 다른 로봇들로부터 계산되는 바와 같이, 센서 데이터를 이용하여 관절들이 특정 좌표 위치로 어떻게 이동해야 하는지를 지정하는 기본 제어 정책과 연관될 수 있다.
스킬 템플릿의 목적은 특정한 작업 능력을 갖도록 로봇을 프로그래밍하기 위한 일반화된 프레임워크를 제공하는 것이다. 특히, 스킬 템플릿은 비교적 적은 노력으로 유사한 작업들을 수행하도록 로봇을 적응시키는데 이용될 수 있다. 따라서, 특정 로봇 및 특정 환경에 대해 스킬 템플릿을 적응시키는 것은 스킬 템플릿에서의 각각의 데모 하위작업에 대한 훈련 프로세스를 수행하는 것을 수반한다. 간결성을 위해, 다수의 별개로 훈련된 모델들이 수반될 수 있더라도, 이 프로세스는 스킬 템플릿을 훈련하는 것으로 지칭될 수 있다.
예를 들어, 사용자는 커넥터 삽입 하위작업이 뒤따르는 제1 이동 하위작업을 수행하는 것을 지정하는 커넥터 삽입 스킬 템플릿을 다운로드할 수 있다. 커넥터 삽입 스킬 템플릿은 또한 제1 하위작업이 예를 들어 카메라로부터의 시각적 지각 스트림에 의존하지만, 제2 하위작업이 예를 들어 힘 센서로부터의 힘 지각 스트림에 의존한다는 것을 지정할 수 있다. 커넥터 삽입 스킬 템플릿은 또한 제2 하위작업만이 로컬 데모 학습을 요구한다는 것을 지정할 수 있다. 이것은 로봇을 특정 위치로 이동시키는 것이 일반적으로 수작업의 상황들 또는 작업 환경에 크게 의존하지 않기 때문일 수 있다. 그러나, 작업 환경이 엄격한 공간 요건들을 갖는 경우, 템플릿은 또한 로봇이 작업 환경의 엄격한 공간 요건들을 통해 내비게이팅하는 것을 빠르게 학습할 수 있도록 제1 하위작업이 로컬 데모 학습을 요구한다는 것을 지정할 수 있다.
로봇에 커넥터 삽입 스킬을 장착하기 위해, 사용자는 단지 로컬 데모 데이터를 요구하는 것으로서 스킬 템플릿에 의해 표시되는 하위작업들을 수행함에 있어서 로봇을 안내할 필요가 있다. 로봇은 훈련 시스템이 커넥터 삽입 하위작업과 연관된 기본 제어 정책을 정밀화하는데 이용할 수 있는 로컬 데모 데이터를 자동으로 캡처할 것이다. 맞춤형 제어 정책의 훈련이 완료될 때, 로봇은 단지 하위작업을 수행하도록 장착되기 위해 최종 훈련된 맞춤형 제어 정책을 다운로드하기만 하면 된다.
특히, 동일한 스킬 템플릿이 많은 상이한 종류들의 작업들에 대해 이용될 수 있다. 예를 들어, 동일한 커넥터 삽입 스킬 템플릿이 HDMI 케이블 삽입들 또는 USB 케이블 삽입들 또는 둘 다를 수행하도록 로봇을 장착하는데 이용될 수 있다. 필요한 것은 학습되는 데모 하위작업에 대한 기본 제어 정책을 정밀화하기 위해 사용자가 이러한 상이한 삽입 하위작업들을 데모하는 것일 뿐이다. 전술한 바와 같이, 통상적으로 이 프로세스는 처음부터 완전한 제어 정책을 개발하거나 학습하는 것보다 훨씬 적은 계산 능력 및 훨씬 적은 시간을 필요로 한다.
또한, 스킬 템플릿 접근법은 하드웨어에 무관(agnostic)할 수 있다. 이것은, 훈련 시스템이 그 특정한 로봇 모델에 대한 제어 정책을 결코 훈련시키지 않았을 때에도 스킬 템플릿이 로봇이 작업을 수행하도록 장착하는데 이용될 수 있다는 것을 의미한다. 따라서, 이 기술은 로봇들을 제어하기 위해 강화 학습을 이용하는 것의 많은 문제들을 해결한다. 특히, 이 기술은 매우 작은 하드웨어 변경들조차도 비용이 많이 들고 중복 노력인, 제어 정책을 처음부터 재학습하는 것을 필요로 하는 취약성 문제를 해결한다.
로컬 데모 데이터를 수집하는 것을 지원하기 위해, 시스템(100)은 또한 하나 이상의 UI 디바이스(180) 및 하나 이상의 데모 디바이스(190)를 포함할 수 있다. UI 디바이스들(180)은 맞춤형 제어 정책(125)을 생성함에 있어서 가장 유익할 로컬 데모 데이터를 획득함에 있어서 사용자를 안내하는 것을 도울 수 있다. UI 디바이스들(180)은 어떤 종류의 액션들을 수행하거나 반복할지에 관해 사용자에게 지시하는 사용자 인터페이스들뿐만 아니라, 사용자가 로봇 옆에 물리적으로 있지 않고도 로봇을 제어할 수 있게 하는 증강 현실 디바이스들을 포함할 수 있다.
데모 디바이스들(190)은 시스템(100)의 주요 동작에 대해 보조적인 디바이스들이다. 일반적으로, 데모 디바이스들(190)은 사용자가 로컬 데모 데이터에 관련없는 힘 데이터를 도입하지 않고도 로봇에 대해 스킬을 데모할 수 있게 하는 디바이스들이다. 즉, 데모 디바이스들(190)은 사용자의 데모 액션이 힘 센서들이 실행 동안 실제로 판독할 것에 영향을 미칠 가능성을 감소시킬 수 있다.
동작 시에, 로봇 인터페이스 서브시스템(160) 및 온라인 실행 시스템(110)은 상이한 타이밍 제약들에 따라 동작할 수 있다. 일부 구현들에서, 로봇 인터페이스 서브시스템(160)은 어려운 실시간 요건들을 갖는 실시간 소프트웨어 제어 시스템이다. 실시간 소프트웨어 제어 시스템들은 정상 동작을 달성하기 위해 엄격한 타이밍 요건들 내에서 실행하도록 요구되는 소프트웨어 시스템들이다. 타이밍 요건들은 종종 시스템이 고장 상태에 진입하는 것을 피하기 위해 특정 액션들이 실행되어야 하거나 출력들이 특정 시간 윈도우 내에 생성되어야 하는 것을 지정한다. 고장 상태에서, 시스템은 실행을 중지하거나 정상 동작을 중단시키는 어떤 다른 액션을 취할 수 있다.
한편, 온라인 실행 시스템(110)은 통상적으로 동작에서 더 많은 유연성을 갖는다. 즉, 온라인 실행 시스템(110)은 로봇 인터페이스 서브시스템(160)이 동작하는 모든 실시간 시간 윈도우 내에서 커맨드(155)를 제공할 수 있지만, 반드시 그럴 필요는 없다. 그러나, 센서 기반 반응들을 행하는 능력을 제공하기 위해, 온라인 실행 시스템(110)은 여전히 엄격한 타이밍 요건들 하에서 동작할 수 있다. 전형적인 시스템에서, 로봇 인터페이스 서브시스템(160)의 실시간 요건들은 로봇들이 5 밀리초마다 커맨드를 제공할 것을 요구하는 반면, 온라인 실행 시스템(110)의 온라인 요건들은 온라인 실행 시스템(110)이 20 밀리초마다 로봇 인터페이스 서브시스템(160)에 커맨드(155)를 제공해야 한다는 것을 지정한다. 그러나, 이러한 커맨드가 온라인 시간 윈도우 내에 수신되지 않더라도, 로봇 인터페이스 서브시스템(160)은 반드시 고장 상태에 진입할 필요는 없다.
따라서, 본 명세서에서, 온라인이라는 용어는 동작을 위한 시간 및 엄격성 파라미터들 둘 다를 지칭한다. 시간 윈도우들은 실시간 로봇 인터페이스 서브시스템(160)에 대한 시간 윈도우들보다 크며, 타이밍 제약들이 충족되지 않을 때 통상적으로 더 많은 유연성이 존재한다. 일부 구현들에서, 로봇 인터페이스 서브시스템(160)은 온사이트 실행 엔진(150)에 의해 발행된 커맨드들(155)이 로봇들의 다수의 상이한 버전과 호환가능하도록 하드웨어 무관 인터페이스를 제공한다. 실행 동안, 로봇 인터페이스 서브시스템(160)은 상태 메시지들(135)을 온라인 실행 시스템(110)에 다시 보고하여, 온라인 실행 시스템(150)이 예를 들어, 로컬 고장들 또는 다른 예상치 못한 조건들로 인한 로봇 이동들에 대한 온라인 조정들을 행할 수 있게 한다. 로봇들은 실시간 로봇들일 수 있으며, 이는 로봇들이 고도로 제약된 타임라인에 따라 그 커맨드들을 계속 실행하도록 프로그래밍된다는 것을 의미한다. 예를 들어, 각각의 로봇은 특정 주파수, 예를 들어 100 Hz 또는 1 kHz에서 로봇 인터페이스 서브시스템(160)으로부터의 커맨드를 예상할 수 있다. 로봇이 예상되는 커맨드를 수신하지 않으면, 로봇은 고장 모드에 진입하고 동작을 중지할 수 있다.
도 2a는 로컬 데모 데이터에 기반한 맞춤형 제어 정책을 이용하여 하위작업을 실행하기 위한 예시적인 시스템(200)의 도면이다. 일반적으로, 다수의 센서들(260)로부터의 데이터는 다수의 별도로 훈련된 신경망들을 통해 공급되고, 단일의 저차원 작업 상태 표현(205)으로 조합된다. 이어서, 저차원 표현(205)은 로봇(270)에 의해 실행될 로봇 커맨드(235)를 생성하도록 구성되는 조율된 제어 정책(210)에 대한 입력으로서 이용된다. 따라서, 시스템(200)은 수정 서브시스템(280)을 통해 기본 제어 정책의 수정들을 실행함으로써 로컬 데모 데이터에 기반하여 맞춤형 제어 정책을 구현할 수 있다.
센서들(260)은 로봇 또는 로봇의 작업셀 내의 타겟의 시각적 특성들을 나타내는 지각 데이터 스트림들을 생성하는 지각 센서들을 포함할 수 있다. 예를 들어, 더 나은 비전 능력을 달성하기 위해, 로봇 도구에는, 몇 가지 예를 들자면, 다수의 카메라들, 예를 들어, 가시광 카메라들, 적외선 카메라들, 및 깊이 카메라들이 장착될 수 있다.
상이한 지각 데이터 스트림들(202)은 각각의 컨볼루션 신경망(220a-n)에 의해 독립적으로 처리될 수 있다. 각각의 지각 데이터 스트림(202)은 상이한 지각 센서, 예를 들어, 상이한 카메라 또는 상이한 유형의 카메라에 대응할 수 있다. 각각의 카메라로부터의 데이터는 상이한 각각의 컨볼루션 신경망에 의해 처리될 수 있다.
센서들(260)은 또한 로봇 또는 로봇의 구성요소의 물리적 특성들을 나타내는 로봇 상태 데이터 스트림들(204)을 생성하는 하나 이상의 로봇 상태 센서를 포함한다. 예를 들어, 로봇 상태 데이터 스트림들(204)은, 몇 가지 예를 들자면, 로봇 또는 로봇의 각각의 구성요소들의 힘, 토크, 각도들, 위치들, 속도들, 및 가속도들을 나타낼 수 있다. 로봇 상태 데이터 스트림들(204) 각각은 각각의 심층 신경망(230a-m)에 의해 처리될 수 있다.
수정 서브시스템(280)은 센서 데이터를 병렬로 처리하는 임의의 수의 신경망 서브시스템을 가질 수 있다. 일부 구현들에서, 시스템은 하나의 지각 스트림 및 하나의 로봇 상태 데이터 스트림만을 포함한다.
신경망 서브시스템들의 출력들은 로봇(270)에 의해 수행되는 하위작업의 상태를 누적적으로 표현하는 작업 상태 표현(205)의 각각의 부분들이다. 일부 구현들에서, 작업 상태 표현(205)은 100개 미만의 피처, 예를 들어 10개, 30개, 또는 50개의 피처를 갖는 저차원 표현이다. 저차원 작업 상태 표현을 갖는 것은 학습할 모델 파라미터들이 더 적다는 것을 의미하며, 이는 로컬 데모 데이터가 특정 하위작업을 적응시키는데 이용될 수 있는 속도를 추가로 증가시킨다.
그 후, 작업 상태 표현(205)은 조율된 제어 정책(210)에 대한 입력으로서 이용된다. 실행 동안, 조율된 제어 정책(210)은, 입력 작업 상태 표현(205)으로부터, 로봇(270)에 의해 이후 실행되는 로봇 커맨드(235)를 생성한다.
훈련 동안, 훈련 엔진(240)은 조율된 제어 정책(210)에 의해 생성된 제안된 커맨드(245)뿐만 아니라 로컬 데모 액션(275)의 표현을 이용함으로써 파라미터 정정들(255)을 생성한다. 그 후, 훈련 엔진은 조율된 제어 정책(210)을 정밀화하기 위해 파라미터 정정들(255)을 이용할 수 있어서, 미래의 반복들에서 조율된 제어 정책(210)에 의해 생성된 커맨드가 로컬 데모 액션(275)과 더 가깝게 일치하게 할 것이다.
훈련 프로세스에서, 조율된 제어 정책(210)은 훈련되는 데모 하위작업과 연관된 기본 제어 정책으로 초기화될 수 있다. 조율된 제어 정책(210)은 로컬 데모 액션들(275)을 이용하여 반복적으로 업데이트될 수 있다. 훈련 엔진(240)은 조율된 제어 정책(210)을 조정하기 위한 임의의 적절한 기계 학습 기술, 예를 들어, 감독된 학습, 회귀, 또는 강화 학습을 이용할 수 있다. 조율된 제어 정책(210)이 신경망들을 이용하여 구현될 때, 파라미터 정정들(235)은 출력 제안 커맨드(245)가 미래의 반복들에서 로컬 데모 액션(275)에 더 가깝도록 네트워크들을 통해 역전파될 수 있다.
앞서 언급된 바와 같이, 스킬 템플릿의 각각의 하위작업은, 그 기반적인 모델들의 아키텍처가 동일하거나 유사할 때에도, 상이한 훈련 우선순위들을 가질 수 있다. 따라서, 일부 구현들에서, 훈련 엔진(240)은 조율된 제어 정책(210)을 업데이트하는 방법을 지정하는 하위작업 하이퍼파라미터들(275)을 입력으로서 선택적으로 취할 수 있다. 예를 들어, 하위작업 하이퍼파라미터는 비전 감지가 매우 중요하다는 것을 나타낼 수 있다. 따라서, 훈련 엔진(240)은 로컬 데모 액션(275)으로 캡처된 카메라 데이터와 정렬하도록 조율된 제어 정책(210)을 더 적극적으로 정정할 수 있다. 일부 구현들에서, 하위작업 하이퍼파라미터들(275)은 각각의 상이한 하위작업에 대해 이용될 별도의 훈련 모듈들을 식별한다.
도 2b는 로컬 데모 데이터를 이용하여 하위작업을 실행하기 위한 다른 예시적인 시스템의 도면이다. 이 예에서, 단일의 조율된 제어 정책만을 갖는 대신에, 시스템은 다수의 독립적인 제어 정책(210a-n)을 포함한다. 각각의 제어 정책(210a-n)은 작업 상태 표현(205)을 이용하여 각각의 로봇 서브커맨드(234a-n)를 생성할 수 있다. 이어서, 시스템은 서브커맨드들을 조합하여, 로봇(270)에 의해 실행될 단일 로봇 커맨드(235)를 생성할 수 있다.
다수의 별도로 조율가능한 제어 정책들을 갖는 것은 예를 들어 상이한 업데이트 레이트들을 갖는 다수의 센서로부터의 데이터를 이용할 수 있는 센서가 풍부한 환경에서 유리할 수 있다. 예를 들어, 상이한 제어 정책들(210a-n)은 상이한 업데이트 레이트들에서 실행될 수 있으며, 이는 시스템이 간단한 그리고 더 정교한 제어 알고리즘들 양자를 동일 시스템 내에 통합하는 것을 가능하게 한다. 예를 들어, 하나의 제어 정책은 이미지 데이터보다 훨씬 더 빠른 레이트로 업데이트될 수 있는 현재 힘 데이터를 이용하는 로봇 커맨드들에 집중할 수 있다. 한편, 다른 제어 정책은 비결정론적 실행 시간들을 가질 수 있는 더 정교한 이미지 인식 알고리즘들을 필요로 할 수 있는 현재 이미지 데이터를 이용하는 로봇 커맨드들에 집중할 수 있다. 그 결과는 힘 데이터에 빠르게 적응할 뿐만 아니라 힘 데이터에 대한 그 적응들을 느리게 하지 않고 이미지 데이터에 적응할 수 있는 시스템이다. 훈련 동안, 하위작업 하이퍼파라미터들은 별도로 조율가능한 제어 정책들(210-an) 각각에 대한 별도의 훈련 절차들을 식별할 수 있다.
도 2c는 잔차 강화 학습을 이용하여 하위작업을 실행하기 위한 다른 예시적인 시스템의 도면이다. 이 예에서, 로봇 커맨드를 생성하는 단일의 조율된 제어 정책을 갖는 대신에, 시스템은 잔차 강화 학습 서브시스템(212)을 이용하여, 기본 제어 정책(250)에 의해 생성된 기본 액션(215)을 수정하는 정정 액션(225)을 생성한다.
이 예에서, 기본 제어 정책(250)은 하나 이상의 센서(260)로부터의 센서 데이터(245)를 입력으로서 취하고 기본 액션(215)을 생성한다. 전술한 바와 같이, 기본 제어 정책(250)의 출력은 로봇(270)의 각각의 구성요소들에 의해 소비되는 하나 이상의 커맨드일 수 있다.
실행 동안, 강화 학습 서브시스템(212)은, 입력 작업 상태 표현(205)으로부터, 기본 액션(215)과 조합될 정정 액션(225)을 생성한다. 정정 액션(225)은 기본 제어 정책(250)으로부터의 기본 액션(215)을 수정한다는 점에서 정정적이다. 그 다음, 결과적인 로봇 커맨드(235)는 로봇(270)에 의해 실행될 수 있다.
전통적인 강화 학습 프로세스들은 2개의 스테이지, 즉 (1) 시스템이 새로운 후보 액션들을 생성하는 작동 스테이지 및 (2) 모델의 가중치들이 각각의 후보 액션의 누적 보상을 최대화하도록 조정되는 훈련 스테이지를 이용하였다. 위의 배경기술란에서 설명된 바와 같이, 로봇에 대한 강화 학습을 이용하는 전통적인 접근법들은 심각한 희소 보상 문제를 겪으며, 이는 작동 스테이지 동안 랜덤하게 생성되는 액션들이 작업에 대한 보상 함수에 의해 임의의 유형의 보상을 받을 가능성이 극도로 낮다는 것을 의미한다.
그러나, 전통적인 강화 학습과 달리, 로컬 데모 데이터를 이용하는 것은 작동 스테이지 동안 어느 액션을 선택할지에 관한 모든 정보를 제공할 수 있다. 즉, 로컬 데모 데이터는 액션들의 시퀀스를 제공할 수 있으며, 따라서 액션들은 랜덤하게 생성될 필요가 없다. 이 기술은 문제 공간을 크게 제약하고 모델들의 수렴을 훨씬 더 빠르게 만든다.
훈련 동안, 로컬 데모 데이터는 로봇(270)을 구동하는데 이용된다. 즉, 정정 액션(225) 및 기본 액션(215)으로부터 생성된 로봇 커맨드(235)는 로봇(270)을 구동하는데 이용될 필요가 있다. 각각의 시간 단계에서, 강화 학습 서브시스템(210)은 로봇(270)을 물리적으로 이동시키는데 이용되었던 데모 액션의 표현을 수신한다. 강화 학습 서브시스템(210)은 또한 기본 제어 정책(250)에 의해 생성된 기본 액션(215)을 수신한다.
강화 학습 서브시스템(210)은 그 후 데모 액션을 기본 액션(215)과 비교함으로써 재구성된 정정 액션을 생성할 수 있다. 강화 학습 서브시스템(210)은 또한 보상 함수를 이용하여 재구성된 정정 액션에 대한 실제 보상 값을 생성할 수 있다.
강화 학습 서브시스템(210)은 또한 강화 학습 모델의 현재 상태에 의해 생성된 예측된 정정 액션뿐만 아니라 예측된 정정 액션을 이용하여 생성되었을 예측된 보상 값을 생성할 수 있다. 예측된 정정 액션은 현재 작업 상태 표현(205)에 대해 강화 학습 서브시스템(210)에 의해 생성되었을 정정 액션이다.
강화 학습 서브시스템(210)은 이어서 강화 모델에 대한 가중치 업데이트들을 계산하기 위해 예측된 정정 액션, 예측된 보상 값, 재구성된 정정 액션, 및 실제 보상 값을 이용할 수 있다. 훈련 데이터의 반복들에 걸쳐, 가중치 업데이트들은 예측된 정정 액션을 데모 액션들에 의해 반영된 재구성된 정정 액션으로 조정하는 역할을 한다. 강화 학습 서브시스템(210)은 임의의 적절한 보상 최대화 절차에 따라 가중치 업데이트들을 계산할 수 있다.
도 2a 내지 도 2c에 예시된 아키텍처들에 의해 제공되는 하나의 능력은 상이한 업데이트 레이트들을 갖는 센서 스트림들에 대한 다수의 상이한 모델들을 조합할 수 있는 능력이다. 일부 실시간 로봇들은 매우 엄격한 제어-루프 요건들을 가지며, 따라서 이들은 예를 들어, 100, 1000, 또는 10,000 Hz에서 고주파수 업데이트들을 생성하는 힘 및 토크 센서들을 장착할 수 있다. 이와 달리, 소수의 카메라들 또는 깊이 카메라들은 60 Hz 초과에서 동작한다.
다수의 병렬 및 독립 센서 스트림, 및 선택적으로 다수의 상이한 제어 정책을 갖는 도 2a 내지 도 2c에 예시된 아키텍처는 이러한 상이한 데이터 레이트들이 조합되는 것을 가능하게 한다.
도 3a는 다수의 상이한 센서 스트림으로부터의 센서 데이터를 조합하기 위한 예시적인 프로세스의 흐름도이다. 이 프로세스는 하나 이상의 위치에 하나 이상의 컴퓨터를 갖는 컴퓨터 시스템, 예를 들어 도 1의 시스템(100)에 의해 수행될 수 있다. 이 프로세스는 하나 이상의 컴퓨터의 시스템에 의해 수행되는 것으로 설명될 것이다.
시스템은 기본 업데이트 레이트를 선택한다(302). 기본 업데이트 레이트는 학습 서브시스템, 예를 들어, 조율된 제어 정책(210)이 로봇을 구동하기 위한 커맨드들을 생성할 레이트를 지시할 것이다. 일부 구현들에서, 시스템은 로봇의 최소 실시간 업데이트 레이트에 기반하여 기본 업데이트 레이트를 선택한다. 대안적으로, 시스템은 가장 빠른 레이트로 데이터를 생성하는 센서에 기반하여 기본 업데이트 레이트를 선택할 수 있다.
시스템은 각각의 업데이트 레이트들로 작업 상태 표현의 각각의 부분들을 생성한다(304). 신경망 서브시스템들이 독립적으로 그리고 병렬로 동작할 수 있기 때문에, 신경망 서브시스템들은 작업 상태 표현의 각각의 부분들을 그 각각의 센서들의 레이트에 의해 지시되는 레이트로 반복적으로 생성할 수 있다.
시스템의 독립적이고 병렬적인 속성을 높이기 위해, 일부 구현들에서, 시스템은 작업 상태 표현의 상이한 부분들이 기입될 다수의 별도의 메모리 디바이스들 또는 메모리 파티션들을 유지한다. 이는 상이한 신경망 서브시스템들이 고주파수에서 그 출력들을 생성하는 동안 메모리 액세스를 위해 경쟁하는 것을 방지할 수 있다.
시스템은 기본 업데이트 레이트로 작업 상태 표현을 반복적으로 생성한다(306). 기본 업데이트 레이트에 의해 정의되는 각각의 시간 기간 동안, 시스템은 복수의 신경망 서브시스템들에 의해 출력되는 가장 최근에 업데이트된 센서 데이터로부터 판독함으로써 작업 상태 표현의 새로운 버전을 생성할 수 있다. 예를 들어, 시스템은 완전한 작업 상태 표현을 생성하기 위해 다수의 별도의 메모리 디바이스들 또는 메모리 파티션들로부터 판독할 수 있다. 특히, 이는 일부 신경망 서브시스템들에 의해 생성된 데이터가 소비되는 것과는 상이한 레이트로 생성된다는 것을 의미한다. 예를 들어, 더 느린 업데이트 레이트들을 갖는 센서들의 경우, 데이터는 생성되는 것보다 훨씬 빠른 레이트로 소비될 수 있다.
시스템은 작업 상태 표현들을 반복적으로 이용하여 기본 업데이트 레이트로 로봇에 대한 커맨드들을 생성한다(308). 독립적이고 병렬적인 신경망 서브시스템들을 이용함으로써, 시스템은 어려운 실시간 제약들을 갖는 로봇들에도 전력을 공급하기 위해 커맨드들이 충분히 빠른 업데이트 레이트로 생성되는 것을 보장할 수 있다.
이러한 배열은 또한 시스템이 상이한 업데이트 빈도들을 갖는 다수의 독립적인 제어 알고리즘을 동시에 공급할 수 있다는 것을 의미한다. 예를 들어, 도 2b와 관련하여 전술한 바와 같이, 시스템이 단일 커맨드를 생성하는 것이 아니라, 시스템은 서브커맨드를 각각 생성하는 다수의 독립적인 제어 정책을 포함할 수 있다. 이어서, 시스템은 서브커맨드들을 다수의 상이한 제어 알고리즘의 출력을 나타내는 최종 하이브리드 로봇 커맨드로 조합함으로써 최종 커맨드를 생성할 수 있다.
예를 들어, 시각적 제어 알고리즘은 로봇이 인식된 물체를 향해 더 빠르게 이동하게 할 수 있다. 한편, 힘 제어 알고리즘은 로봇이 자신과 접촉한 표면을 따라 추적하게 할 수 있다. 시각적 제어 알고리즘이 전형적으로 힘 제어 알고리즘보다 훨씬 더 느린 레이트로 업데이트되더라도, 시스템은 도 2a 내지 도 2c에 도시된 아키텍처를 이용하여 기본 업데이트 레이트로 여전히 동시에 양쪽 모두에 전력을 공급할 수 있다.
도 2a 내지 도 2c에 예시된 아키텍처는 주요 리엔지니어링 없이 시스템의 능력들을 확장하기 위한 많은 기회들을 제공한다. 다수의 병렬 및 독립적인 데이터 스트림들은 로컬 데모 학습에 유리한 기계 학습 기능들을 구현하는 것을 가능하게 한다.
예를 들어, 특정 환경에서 수행하도록 로봇을 더 철저히 적응시키기 위해, 로컬 환경 데이터를 고려하는 센서들을 통합하는 것이 매우 유리할 수 있다.
로컬 환경 데이터를 이용하는 하나의 예는 전기 연결을 고려하는 기능이다. 전기 연결은 2개의 구성요소 사이에 전류를 확립하는 것을 수반하는 다양한 도전적인 로봇 작업들에 대한 보상 인자로서 유용할 수 있다. 이러한 작업들은 몇 가지 예를 들자면, 케이블들을 잭들 내에 삽입하는 것, 전력 플러그들을 전력 소켓들 내에 삽입하는 것 및 전구들에서 나사를 조이는 것을 포함한다.
전기 연결을 수정 서브시스템(280)에 통합하기 위해, 예를 들어, 센서들(260) 중 하나일 수 있는 전기 센서가 작업셀에서 구성되어 전류가 확립되었을 때를 검출할 수 있다. 그 다음, 전기 센서의 출력은 별도의 신경망 서브시스템에 의해 처리될 수 있고, 그 결과는 작업 상태 표현(205)에 추가될 수 있다. 대안적으로, 전기 센서의 출력은 조율된 제어 정책 또는 강화 학습 서브시스템을 구현하는 시스템에 대한 입력으로서 직접 제공될 수 있다.
로컬 환경 데이터를 이용하는 다른 예는 특정 유형들의 오디오 데이터를 고려하는 기능이다. 예를 들어, 많은 커넥터 삽입 작업들은 그 작업이 성공적으로 완료될 때 매우 독특한 사운드들을 갖는다. 따라서, 시스템은 마이크로폰을 이용하여 오디오를 캡처할 수 있고, 오디오 처리 신경망의 출력은 작업 상태 표현에 추가될 수 있다. 그 후, 시스템은 커넥터 삽입의 사운드의 특정 음향 특성들을 고려하는 기능을 이용할 수 있으며, 이는 학습 서브시스템으로 하여금 성공적인 커넥터 삽입 사운드들이 무엇과 같은지를 학습하게 한다.
도 3b는 카메라 손목 밴드의 도면이다. 카메라 손목 밴드는 전술한 아키텍처로 고정밀 데모 학습을 수행하는데 이용될 수 있는 다채로운 계기 장비의 유형의 예이다. 도 3b는 로봇 아암의 끝에 있는 도구가 뷰어에 가장 가까운 사시도이다.
이 예에서, 카메라 손목 밴드는 로봇 아암(335)의 맨 끝에 위치하는 도구(345) 바로 전에 로봇 아암(335) 상에 탑재된다. 카메라 손목 밴드는 칼라(collar)(345)를 이용하여 로봇 아암(335) 상에 탑재되며, 4개의 방사상으로 탑재된 카메라(310a-d)를 갖는다.
칼라(345)는 칼라(345)가 로봇 아암의 끝에 고정 탑재되게 하는 임의의 적절한 볼록 형상을 가질 수 있다. 칼라(345)는 제3자 제조자에 의해 구축된 로봇에 추가되도록 설계될 수 있다. 예를 들어, 스킬 템플릿들을 분산시키는 시스템은 또한 비전문 사용자들이 모델들을 빠르게 수렴시키는데 도움을 주기 위해 카메라 손목 밴드들을 분산시킬 수 있다. 대안적으로 또는 추가적으로, 칼라(345)는 제조자에 의한 제조 프로세스 동안 로봇 아암에 통합될 수 있다.
칼라(345)는 타원형 형상, 예를 들어 원형 또는 난형, 또는 직사각형 형상을 가질 수 있다. 칼라(345)는 도구(345)가 고정되기 전에 로봇 아암의 끝에 고정되는 단일 솔리드 볼륨으로부터 형성될 수 있다. 또는, 칼라(345)는 고정 메커니즘, 예를 들어 걸쇠 또는 래치에 의해 열리고 단단히 닫힐 수 있다. 칼라(345)는 로봇 아암에 대한 단단한 연결을 제공하는 임의의 적절한 재료, 예로서 경질 플라스틱; 유리 섬유; 직물; 또는 금속, 예로서 알루미늄 또는 강철로 구성될 수 있다.
각각의 카메라(310a-d)는 센서, 다른 전자 기기 및 각각의 렌즈(315a-d)를 칼라(345)에 고정하는 각각의 마운트(325a-d)를 구비한다. 칼라(345)는 또한 카메라들(310a-d)에 의해 캡처된 볼륨을 조명하기 위한 하나 이상의 라이트(355a-b)를 포함할 수 있다. 일반적으로, 카메라들(310a-d)은 도구(345) 또는 도구(345) 바로 너머의 작업 볼륨의 상이한 각각의 뷰들을 캡처하도록 배열된다.
예시적인 카메라 손목 밴드는 4개의 방사상으로 탑재된 카메라를 갖지만, 임의의 적절한 수의 카메라들, 예를 들어, 2개, 5개, 또는 10개의 카메라가 이용될 수 있다. 위에서 설명된 바와 같이, 수정 서브시스템(280)의 아키텍처는 임의의 수의 센서 스트림들이 작업 상태 표현 내에 포함되는 것을 허용한다. 예를 들어, 로봇과 연관된 컴퓨터 시스템은 카메라들(310a-d) 각각에 의해 생성된 센서 데이터를 병렬로 처리하기 위해 상이한 각각의 컨볼루션 신경망을 구현할 수 있다. 처리된 카메라 출력들은 이후, 전술된 바와 같이 상이한 주파수들에서 실행되는 다수의 제어 알고리즘들에 전력을 공급하는데 이용될 수 있는, 작업 상태 표현을 생성하도록 조합될 수 있다. 전술된 바와 같이, 처리된 카메라 출력들은, 힘 센서들, 토크 센서들, 위치 센서들, 속도 센서들, 또는 촉각적 센서들, 또는 이들 센서들의 임의의 적절한 조합의 출력들을 독립적으로 처리하는 다른 네트워크들로부터의 출력들과 조합될 수 있다.
일반적으로, 데모 학습 프로세스에서 카메라 손목 밴드를 이용하는 것은 모델들의 더 빠른 수렴을 낳는데, 그 이유는 시스템이 더 많은 위치들 및 배향들에서 보상 조건들을 인식할 수 있을 것이기 때문이다. 따라서, 카메라 손목 밴드를 이용하는 것은 로컬 데모 데이터로 기본 제어 정책을 적응시키는데 요구되는 훈련 시간의 양을 추가로 감소시키는 효과를 갖는다.
도 3c는 카메라 손목 밴드의 다른 예시적인 뷰이다. 도 3c는 카메라들의 출력들을 각각의 컨볼루션 신경망들에 공급하는데 이용될 수 있는 케이블링(385a-d)을 포함하는, 카메라 손목 밴드를 구현하는데 이용될 수 있는 추가적인 계기 장비를 예시한다. 도 3c는 또한 추가적인 깊이 카메라(375)가 또한 칼라(345) 상에 탑재될 수 있는 방법을 예시한다. 위에서 설명된 바와 같이, 시스템의 아키텍처는 임의의 다른 센서들이 지각 시스템 내로 통합되는 것을 허용하고, 따라서, 예를 들어, 별도로 훈련된 컨볼루션 신경망은 깊이 카메라(375)의 출력들을 처리하여 작업 상태 표현의 다른 부분을 생성할 수 있다.
도 3d는 카메라 손목 밴드의 다른 예시적인 뷰이다. 도 3d는 금속 칼라 및 4개의 방사상으로 탑재된 카메라(317a-d)를 갖는 카메라 손목 밴드의 사시도이다.
제어 정책들을 정밀화하기 위해 로컬 데모 데이터를 이용하는 이러한 기본 메커니즘들에 의해, 사용자들은 하드웨어 무관 스킬 템플릿들을 구축하기 위한 작업들을 구성할 수 있으며, 하드웨어 무관 스킬 템플릿들은 다운로드되어 많은 상이한 종류들의 로봇들 상에서 그리고 많은 상이한 종류들의 환경들에서 작업을 신속하게 배치하는데 이용될 수 있다.
도 4는 예시적인 스킬 템플릿(400)을 예시한다. 일반적으로, 스킬 템플릿은 작업을 수행하기 위해 요구되는 복수의 하위작업들에 대한 상태 기계를 정의한다. 특히, 스킬 템플릿들은 계층적으로 구성가능하며, 이는 각각의 하위작업이 독립형 작업 또는 다른 스킬 템플릿일 수 있음을 의미한다.
스킬 템플릿의 각각의 하위작업은 하위작업 id를 가지며, 하위작업이 데모 하위작업 또는 비-데모 하위작업인지, 또는 하위작업이 별도로 훈련되어야 하는 다른 스킬 템플릿을 참조하는지를 포함하는 하위작업 메타데이터를 포함한다. 하위작업 메타데이터는 또한 하위작업을 수행하기 위해 어느 센서 스트림들이 이용될 것인지를 나타낼 수 있다. 데모 하위작업들인 하위작업들은 로컬 데모 데이터로부터 학습을 통해 학습하는 정정 액션들과 조합될 기본 정책을 식별하는 기본 정책 id를 추가로 포함할 것이다. 각각의 데모 하위작업은 또한 하위작업에 대한 훈련 프로세스를 제어하는 하나 이상의 소프트웨어 모듈과 명시적으로 또는 암시적으로 연관될 것이다.
스킬 템플릿의 각각의 하위작업은 또한 스킬 템플릿에서의 다른 작업으로의 전이가 이루어져야 하는 조건들을 지정하는 하나 이상의 전이 조건을 갖는다. 전이 조건들은 또한 하위작업의 하위작업 목표들로서 지칭될 수 있다.
도 4의 예는, 전통적인 로봇 학습 기술들로 달성하기 매우 어려웠던 작업을 수행하기 위한 스킬 템플릿을 나타낸다. 작업은 파지 및 연결 삽입 작업이며, 이는 로봇이 작업셀 내에서 와이어를 찾고 와이어의 한 쪽 단부 상의 커넥터를 작업셀 내에 또한 있는 소켓 내에 삽입할 것을 요구한다. 와이어들이 많은 상이한 텍스처들, 직경들, 및 컬러들로 되어 있기 때문에, 이 문제는 전통적인 강화 학습 기술들로 일반화하기 어렵다. 그에 부가하여, 스킬의 파지 하위작업이 성공적이지 않은 경우, 전통적인 강화 학습 기술들은 다음에 무엇을 해야 하는지 또는 로봇이 어떻게 진행할 수 있는지를 로봇에게 통보하지 못한다.
스킬 템플릿(400)은 상태 기계를 정의하는 그래프의 노드들로서 도 4에 표현되는 4개의 하위작업을 포함한다. 실제로, 도 4에서의 모든 정보는 임의의 적절한 포맷으로, 예를 들어, 순수 텍스트 구성 파일 또는 관계형 데이터베이스 내의 기록들로서 표현될 수 있다. 대안적으로 또는 추가적으로, 사용자 인터페이스 디바이스는 사용자가 그래픽 사용자 인터페이스를 통해 스킬 템플릿을 정의할 수 있게 하는 그래픽 스킬 템플릿 편집기를 생성할 수 있다.
스킬 템플릿(400)에서의 제1 하위작업은 이동 하위작업(410)이다. 이동 하위작업(410)은 작업셀 내에 와이어를 위치시키도록 설계되며, 이는 예를 들어, 조립 라인에서 이전 로봇에 의해 배치된 바와 같이, 로봇을 와이어의 초기 위치로부터 예상된 위치로 이동시키는 것을 요구한다. 하나의 위치로부터 다음 위치로 이동하는 것은 전형적으로 로봇의 로컬 특성들에 그다지 의존하지 않고, 따라서 이동 하위작업(410)의 메타데이터는 하위작업이 비-데모 하위작업임을 지정한다. 이동 하위작업(410)의 메타데이터는 또한 와이어를 위치시키기 위해 카메라 스트림이 필요하다는 것을 지정한다.
이동 하위작업(410)은 또한 로봇이 스킬 템플릿에서의 다음 하위작업으로 언제 전이해야 하는지를 나타내는 "와이어 시각적 취득(acquired wire visual)" 전이 조건(405)을 지정한다.
스킬 템플릿(400)에서의 다음 하위작업은 파지 하위작업(420)이다. 파지 하위작업(420)은 작업셀 내의 와이어를 파지하도록 설계된다. 이러한 하위작업은 와이어의 특성들 및 로봇의 특성들, 특히 와이어를 파지하는데 이용되는 도구에 크게 의존한다. 따라서, 파지 하위작업(420)은 로컬 데모 데이터를 이용한 정밀화를 요구하는 데모 하위작업으로서 지정된다. 따라서, 파지 하위작업(420)은 또한 일반적으로 와이어들을 파지하기 위한 이전에 생성된 기본 제어 정책을 식별하는 기본 정책 id와 연관된다.
파지 하위작업(420)은 또한 하위작업을 수행하기 위해 카메라 스트림들 및 힘 센서 스트림들 둘 다가 요구된다는 것을 지정한다.
파지 하위작업(420)은 3개의 전이 조건을 또한 포함한다. 제1 전이 조건인 "와이어 시각적 상실(lost wire visual)" 전이 조건(415)은 로봇이 와이어와의 시각적 접촉을 상실할 때 트리거링된다. 이것은, 예를 들어, 와이어가 예컨대 사람 또는 다른 로봇에 의해, 예기치 않게 작업셀에서 이동될 때 일어날 수 있다. 그 경우, 로봇은 이동 하위작업(410)으로 다시 전이한다.
파지 하위작업(420)의 제2 전이 조건인 "파지 실패" 전이 조건(425)은 로봇이 와이어를 파지하려고 시도하지만 실패할 때 트리거링된다. 그 시나리오에서, 로봇은 단순히 루프백하여 파지 하위작업(420)을 다시 시도할 수 있다.
파지 하위작업(420)의 제3 전이 조건인 "파지 성공" 전이 조건(435)은 로봇이 와이어를 파지하려고 시도하여 성공할 때 트리거링된다.
데모 하위작업은 또한 어느 전이 조건들이 로컬 데모 데이터를 필요로 하는지를 나타낼 수 있다. 예를 들어, 특정 하위작업은 모든 3개의 전이 조건에 대해 로컬 데모 데이터가 필요하다는 것을 나타낼 수 있다. 따라서, 사용자는 파지가 어떻게 성공하는지를 데모하고, 실패한 파지를 데모하고, 와이어에 대한 시각을 상실한 로봇을 데모할 수 있다.
스킬 템플릿(400)에서의 다음 하위작업은 제2 이동 하위작업(430)이다. 이동 하위작업(430)은 파지된 와이어를 소켓 근처에 있는 작업셀 내의 위치로 이동시키도록 설계된다. 사용자들이 로봇들이 수행할 수 있기를 원하는 많은 연결 및 삽입 상황들에서, 소켓은 예를 들어 식기 세척기, 텔레비전 또는 조립 중인 전자레인지의 내부의 매우 제약된 공간에 있다. 이러한 고도로 제약된 공간에서의 이동이 하위작업 및 작업셀에 크게 의존하기 때문에, 제2 이동 작업(430)은 그것이 단지 작업셀 내의 하나의 위치로부터 다른 위치로 이동하는 것을 수반하더라도, 데모 하위작업으로서 지정된다. 따라서, 이동 하위작업들은 스킬의 요건들에 따라, 데모 하위작업들 또는 비-데모 하위작업들일 수 있다.
제2 이동 하위작업(430)이 데모 하위작업인 것으로 표시되지만, 제2 이동 하위작업(430)은 어떠한 기본 정책 id도 지정하지 않는다. 이것은 일부 하위작업들이 로컬 작업셀에 너무 크게 의존하여, 기본 정책을 포함하는 것이 단지 모델들의 수렴을 방해할 것이기 때문이다. 예를 들어, 제2 이동 작업(430)이 기기 내부의 매우 특정한 배향으로 로봇을 이동시키는 것을 요구하면, 이동을 위한 일반화된 기본 정책은 도움이 되지 않을 것이다. 따라서, 사용자는 로봇이 기기 내부의 특정한 배향을 달성하기 위해 작업셀을 통해 어떻게 이동해야 하는지를 데모하는 로컬 데모 데이터를 생성하기 위해 정밀화 프로세스를 수행할 수 있다.
제2 이동 하위작업(430)은 2개의 전이 조건(445 및 485)을 포함한다. 제1 "소켓 시각적 취득" 전이 조건(445)은 카메라 스트림이 소켓과 시각적 접촉을 할 때 트리거링된다.
로봇이 소켓을 향해 이동하면서 와이어를 드롭해야 하는 경우 제2 "와이어 드롭" 전이 조건(485)이 트리거링된다. 그 경우, 스킬 템플릿(400)은 스킬을 다시 시작하기 위해 로봇이 이동 하위작업 1로 돌아갈 필요가 있음을 지정한다. 스킬 템플릿 내에서의 이러한 종류의 전이 조건들은 전통적인 강화 학습 기술들이 간단히 제공할 수 없는 로봇들에 대한 내장된 견고성 및 동적 반응의 레벨을 제공한다.
스킬 템플릿(400)에서의 마지막 하위작업은 삽입 하위작업(440)이다. 삽입 하위작업(440)은 파지된 와이어의 커넥터를 소켓 내에 삽입하도록 설계된다. 삽입 하위작업(440)은 와이어의 유형 및 소켓의 유형에 크게 의존하며, 따라서, 스킬 템플릿(400)은 삽입 하위작업(440)이 일반적으로 삽입 하위작업들에 관련된 기본 정책 id와 연관되는 데모 하위작업임을 나타낸다. 삽입 하위작업(440)은 또한 하위작업이 카메라 스트림들 및 힘 센서 스트림들 둘 다를 필요로 한다는 것을 나타낸다.
삽입 하위작업(440)은 3개의 전이 조건을 포함한다. 제1 "삽입 실패" 전이 조건(465)은 삽입이 어떤 이유로 실패할 때 트리거링되고 삽입을 다시 시도하는 것을 지정한다. 소켓이 카메라의 시야 밖으로 이동해야 할 때 제2 "소켓 시각적 상실" 전이 조건(455)이 트리거링되고, 매우 제약된 공간 내의 와이어를 소켓의 위치로 다시 이동시키는 것을 지정한다. 마지막으로, "와이어 드롭" 전이 조건(475)은 삽입 작업을 수행하는 동안 와이어가 드롭될 때 트리거링된다. 그 경우, 스킬 템플릿(400)은 제1 이동 하위작업(410)으로 완전히 되돌아가는 것을 지정한다.
도 4에 도시된 스킬 템플릿의 주요 이점들 중 하나는 개발자들에 의한 그 구성가능성이다. 이것은 새로운 스킬 템플릿들이 이미 개발된 하위작업들로부터 구성될 수 있다는 것을 의미한다. 이 기능성은 또한, 특정한 스킬 템플릿 내의 각각의 하위작업이 다른 스킬 템플릿을 참조할 수 있다는 것을 의미하는 계층적 구성가능성을 포함한다.
예를 들어, 대안적인 구현에서, 삽입 하위작업(440)은 다수의 미세하게 제어된 이동들의 상태 기계를 정의하는 삽입 스킬 템플릿을 실제로 참조할 수 있다. 예를 들어, 삽입 스킬 템플릿은 커넥터를 소켓과 가능한 정밀하게 정렬하는 목표를 갖는 제1 이동 하위작업, 커넥터와 소켓의 측면 사이의 접촉을 달성하는 목표를 갖는 제2 이동 하위작업, 및 소켓의 측면을 힘 가이드로서 이용함으로써 완전한 연결을 달성하는 목표를 갖는 제3 이동 하위작업을 포함할 수 있다.
또한, 더 추가의 스킬 템플릿들이 스킬 템플릿(400)으로부터 계층적으로 구성될 수 있다. 예를 들어, 스킬 템플릿(400)은 전자 기기를 조립하는데 필요한 보다 복잡한 하위작업 세트의 하나의 작은 부분일 수 있다. 전체 스킬 템플릿은 하위작업을 달성하기 위한 스킬 템플릿, 예를 들어, 스킬 템플릿(400)을 각각 참조하는 다수의 커넥터 삽입 하위작업들을 가질 수 있다.
도 5는 스킬 템플릿을 이용하여 스킬을 수행하도록 로봇을 구성하기 위한 예시적인 프로세스의 흐름도이다. 이 프로세스는 하나 이상의 위치에 하나 이상의 컴퓨터를 갖는 컴퓨터 시스템, 예를 들어 도 1의 시스템(100)에 의해 수행될 수 있다. 이 프로세스는 하나 이상의 컴퓨터의 시스템에 의해 수행되는 것으로 설명될 것이다.
시스템은 스킬 템플릿을 수신한다(510). 위에서 설명된 바와 같이, 스킬 템플릿은 로봇이 하나의 작업을 수행하는 것으로부터 다음 작업으로 언제 전이해야 하는지를 정의하는 전이 조건들뿐만 아니라 복수의 하위작업을 갖는 상태 기계를 정의한다. 그에 부가하여, 스킬 템플릿은 작업들 중 어느 것이 로컬 데모 데이터를 이용하는 정밀화를 필요로 하는 데모 하위작업들인지를 정의할 수 있다.
시스템은 스킬 템플릿의 데모 하위작업에 대한 기본 제어 정책을 획득한다(520). 기본 제어 정책은 다수의 상이한 로봇 모델들로부터 생성되는 일반화된 제어 정책일 수 있다.
시스템은 데모 하위작업에 대한 로컬 데모 데이터를 수신한다(530). 사용자는 입력 디바이스 또는 사용자 인터페이스를 이용하여 로봇이 다수의 반복에 걸쳐 데모 하위작업을 수행하게 할 수 있다. 이 프로세스 동안, 시스템은 하위작업을 수행하기 위한 로컬 데모 데이터를 자동으로 생성한다.
시스템은 데모 하위작업에 대한 기계 학습 모델을 훈련한다(540). 위에서 설명된 바와 같이, 기계 학습 모델은 하나 이상의 입력 센서 스트림에 대해 로봇에 의해 실행될 커맨드를 생성하도록 구성될 수 있고, 기계 학습 모델은 로컬 데모 데이터를 이용하여 조율될 수 있다. 일부 구현들에서, 기계 학습 모델은 기본 제어 정책에 의해 생성된 기본 액션과 조합될 정정 액션을 생성하는 잔차 강화 학습 모델이다.
시스템은 로봇 상에서 스킬 템플릿을 실행한다(550). 모든 데모 하위작업들을 훈련한 후에, 시스템은 스킬 템플릿을 이용하여 로봇으로 하여금 작업을 완전히 수행하게 할 수 있다. 이 프로세스 동안, 로봇은 로컬 데모 데이터를 이용하여 로봇의 하드웨어 및 작업 환경에 대해 구체적으로 맞춤화되는 정밀화된 데모 하위작업들을 이용할 것이다.
도 6a는 힘을 가이드로서 이용하는 작업에 대한 스킬 템플릿을 이용하기 위한 예시적인 프로세스의 흐름도이다. 위에서 설명된 스킬 템플릿 배열은 다수의 매우 복잡한 하위작업들로 구성되는 매우 정교한 작업들을 생성하는 비교적 용이한 방식을 제공한다. 이러한 작업의 하나의 예가 힘 데이터를 가이드로서 고려하는 작업을 이용하는 커넥터 삽입 작업이다. 이것은 로봇이 다른 방식으로 달성할 수 있는 것보다 훨씬 더 높은 정밀도를 달성할 수 있게 한다. 이 프로세스는 하나 이상의 위치에 하나 이상의 컴퓨터를 갖는 컴퓨터 시스템, 예를 들어 도 1의 시스템(100)에 의해 수행될 수 있다. 이 프로세스는 하나 이상의 컴퓨터의 시스템에 의해 수행되는 것으로 설명될 것이다.
시스템은 로봇에 의해 유지되는 물체와 로봇의 환경 내의 표면 사이의 물리적 접촉력의 확립을 요구하는 전이 조건을 갖는 스킬 템플릿을 수신한다(602). 위에서 설명된 바와 같이, 스킬 템플릿은 복수의 작업들을 갖는 상태 기계를 정의할 수 있다. 전이 조건은 상태 기계의 제1 하위작업과 제2 하위작업 간의 전이를 정의할 수 있다.
예를 들어, 제1 하위작업은 이동 하위작업일 수 있고, 제2 하위작업은 삽입 하위작업일 수 있다. 전이 조건은 로봇에 의해 유지되고 소켓 내에 삽입될 커넥터가 소켓의 에지와 물리적 접촉력을 만들 필요가 있음을 지정할 수 있다.
시스템은 전이에 대한 로컬 데모 데이터를 수신한다(604). 즉, 시스템은 사용자에게 제1 하위작업과 제2 하위작업 간의 전이를 데모하도록 요구할 수 있다. 시스템은 또한 사용자에게 실패 시나리오들을 데모하도록 요구할 수 있다. 하나의 이러한 실패 시나리오는 소켓의 에지와의 물리적 접촉력을 상실하는 것일 수 있다. 이것이 발생하면, 스킬 템플릿은 로봇이 전이 조건에 의해 지정된 바와 같은 물리적 접촉력을 재확립할 수 있도록 템플릿의 제1 이동 하위작업으로의 복귀를 지정할 수 있다.
시스템은 로컬 데모 데이터를 이용하여 기계 학습 모델을 훈련한다(606). 위에서 설명된 바와 같이, 훈련을 통해, 시스템은 물리적 접촉력의 상실을 야기하는 액션들을 피하도록 학습하고 제2 작업 전체에 걸쳐 물리적 접촉력을 유지할 가능성이 있는 액션들을 선택하도록 학습한다.
시스템은 로봇 상에서 훈련된 스킬 템플릿을 실행한다(608). 이것은 로봇이 스킬 템플릿에 의해 정의되는 하위작업들 및 전이들을 자동으로 수행하게 한다. 연결 및 삽입 작업들의 경우, 예를 들어, 로컬 데모 데이터는 로봇이 하나의 특정 종류의 커넥터를 삽입하는 것에 고도로 적응되게 할 수 있다.
도 6b는 클라우드 기반 훈련 시스템을 이용하여 스킬 템플릿을 훈련하기 위한 예시적인 프로세스의 흐름도이다. 일반적으로, 시스템은 모든 데모 데이터를 로컬로 생성한 다음, 스킬 템플릿의 모든 데모 하위작업들을 훈련하기 위해 클라우드 기반 훈련 시스템에 데모 데이터를 업로드할 수 있다. 이 프로세스는 하나 이상의 위치에 하나 이상의 컴퓨터를 갖는 컴퓨터 시스템, 예를 들어 도 1의 시스템(100)에 의해 수행될 수 있다. 이 프로세스는 하나 이상의 컴퓨터의 시스템에 의해 수행되는 것으로 설명될 것이다.
시스템은 스킬 템플릿을 수신한다(610). 예를 들어, 온라인 실행 시스템은 스킬 템플릿의 데모 하위작업들을 훈련할 클라우드 기반 훈련 시스템으로부터 또는 다른 컴퓨터 시스템으로부터 스킬 템플릿을 다운로드할 수 있다.
시스템은 스킬 템플릿에 의해 정의되는 하나 이상의 데모 하위작업을 식별한다(620). 전술한 바와 같이, 스킬 템플릿에서 정의되는 각각의 하위작업은 하위작업이 데모 하위작업 또는 비-데모 하위작업인지를 나타내는 메타데이터와 연관될 수 있다.
시스템은 하나 이상의 데모 하위작업 각각에 대한 로컬 데모 데이터의 각각의 세트들을 생성한다(630). 전술한 바와 같이, 시스템은 사용자가 로컬 작업셀에서 하위작업을 수행하도록 로봇을 조작하고 있는 동안 로컬 데모 데이터를 각각 생성하는 별도의 작업 시스템들을 인스턴스화하고 배치할 수 있다. 업데이트 레이트가 작업 상태 표현에 데이터를 기여하는 센서들에 대한 것인지에 관계없이, 작업 상태 표현들은 하위작업의 기본 레이트로 생성될 수 있다. 이것은, 나중에 모두 어떻게든 조정되어야 하는 많은 상이한 센서 데이터 세트들을 생성하기보다는, 로컬 데모 데이터를 저장하고 조직화하는 편리한 방식을 제공한다.
시스템은 로컬 데모 데이터의 세트들을 클라우드 기반 훈련 시스템에 업로드한다(640). 실세계 작업들을 위해 로봇들을 이용하는 대부분의 설비들은 정교한 기계 학습 모델들을 훈련하는데 적합할 온사이트 데이터센터들을 갖지 않는다. 따라서, 로컬 데모 데이터가 작업을 수행할 로봇과 함께 배치된 시스템에 의해 현장에서 수집될 수 있지만, 실제 모델 파라미터들은 인터넷 또는 다른 컴퓨터 네트워크를 통해서만 액세스가능한 클라우드 기반 훈련 시스템에 의해 생성될 수 있다.
전술한 바와 같이, 로컬 데모 데이터의 크기는 기본 제어 정책들을 훈련하는데 이용되는 데이터의 크기보다 수십배 더 작을 것으로 예상된다. 따라서, 로컬 데모 데이터가 클 수 있지만, 업로드 부담은 합리적인 시간량, 예를 들어, 몇 분 내지 한 시간의 업로드 시간 내에 관리가능하다.
클라우드 기반 훈련 시스템은 로컬 데모 데이터의 각각의 세트에 대한 각각의 훈련된 모델 파라미터들을 생성한다(650). 위에서 설명된 바와 같이, 훈련 시스템은, 예를 들어, 기본 제어 정책에 의해 생성된 기본 액션들을 정정하는 정정 액션들로부터 구성될 수 있는 로봇 커맨드들을 생성하도록 학습 시스템을 훈련할 수 있다. 이 프로세스의 일부로서, 훈련 시스템은, 로컬로 또는 작업 또는 스킬 템플릿을 게시하는 제3자 컴퓨터 시스템일 수 있는 다른 컴퓨터 시스템으로부터, 각각의 데모 하위작업에 대한 각각의 기본 제어 정책을 획득할 수 있다.
클라우드 기반 훈련 시스템은 전형적으로 온라인 실행 시스템보다 훨씬 더 많은 컴퓨팅 능력을 가질 것이다. 따라서, 각각의 데모 하위작업을 훈련하는데 수반되는 큰 계산 부담이 있지만, 이러한 동작들은 클라우드 기반 훈련 시스템 상에서 대규모로 병렬화될 수 있다. 따라서, 전형적인 시나리오에서, 클라우드 기반 훈련 시스템 상에서 로컬 데모 데이터로부터 스킬 템플릿을 훈련하는데 요구되는 시간은 몇 시간 이하이다.
시스템은 클라우드 기반 훈련 시스템에 의해 생성된 훈련된 모델 파라미터들을 수신한다(660). 훈련된 모델 파라미터들의 크기는 통상적으로 특정 하위작업에 대한 로컬 데모 데이터의 크기보다 훨씬 더 작고, 따라서, 모델들이 훈련된 이후, 훈련된 파라미터들의 다운로드는 무시할만한 양의 시간이 걸린다.
시스템은 클라우드 기반 훈련 시스템에 의해 생성된 훈련된 모델 파라미터들을 이용하여 스킬 템플릿을 실행한다(670). 이 프로세스의 일부로서, 시스템은 또한 데모 하위작업들에 대한 기본 제어 정책들을, 예를 들어, 훈련 시스템으로부터, 그 원래의 소스로부터, 또는 다른 소스로부터 다운로드할 수 있다. 그 다음, 훈련된 모델 파라미터들은 로봇이 실행할 커맨드들을 생성하는데 이용될 수 있다. 데모 하위작업에 대한 강화 학습 시스템에서, 파라미터들은 기본 제어 정책들에 의해 생성된 기본 액션들을 수정하는 정정 액션들을 생성하는데 이용될 수 있다. 그 다음, 온라인 실행 시스템은 특정한 작업을 수행하도록 로봇을 구동하기 위해 결과적인 로봇 커맨드들을 반복적으로 발행할 수 있다.
도 6b에 설명된 프로세스는 로봇이 그 환경에 맞춤화되는 방식으로 매우 정밀한 스킬들을 수행하게 하기 위해 하루 동안 한 사람의 팀에 의해 수행될 수 있다. 이것은, 많은 엔지니어들의 팀들이 다른 시나리오들에 잘 일반화되지 않는 설계, 테스트, 및 훈련 모델들에 대해 많은 주들 또는 개월들 동안 작업할 것을 요구하는, 수동 프로그래밍의 전통적인 방법들 또는 심지어 강화 학습의 전통적인 방법들에 비해 방대한 개선이다.
본 명세서에서, 로봇은, 하나의 좌표계, 예를 들어, 데카르트 좌표들에서의 원하는 위치들, 자세들, 또는 양쪽 모두를, 하나 이상의 이동가능한 구성요소를 원하는 위치들 또는 자세들로 물리적으로 이동시키기 위한 커맨드들에 매핑하는데 이용될 수 있는 기본 위치, 하나 이상의 이동가능한 구성요소, 및 운동학적 모델을 갖는 기계이다. 본 명세서에서, 도구는 로봇의 하나 이상의 이동가능한 구성요소의 운동학적 체인의 일부이고 그 단부에 부착되는 디바이스이다. 예시적인 도구들은 파지기들, 용접 디바이스들 및 샌딩 디바이스들을 포함한다.
본 명세서에서, 작업은 도구에 의해 수행될 동작이다. 간결성을 위해, 로봇이 하나의 도구만을 가질 때, 작업은 로봇 전체에 의해 수행될 동작으로서 설명될 수 있다. 예시적인 작업들은, 몇 가지 예를 들자면, 용접, 접착제 분배, 부품 배치, 및 표면 샌딩을 포함한다. 작업들은 일반적으로 작업을 수행하기 위해 요구되는 도구를 나타내는 유형뿐만 아니라, 작업이 수행될 작업셀 내의 위치와 연관된다.
본 명세서에서, 모션 계획은 작업, 작업 클러스터 또는 전이일 수 있는 액션을 실행하기 위한 정보를 제공하는 데이터 구조이다. 모션 계획들은, 로봇에 대한 모든 제어가능한 자유도들에 대한 모든 값들이 명시적으로 또는 암시적으로 표현된다는 것을 의미하는 완전히 제약되거나; 또는 제어가능한 자유도들에 대한 일부 값들이 지정되지 않는다는 것을 의미하는 과소제약될 수 있다. 일부 구현들에서, 모션 계획에 대응하는 액션을 실제로 수행하기 위해, 모션 계획은 로봇에 대한 모든 제어가능한 자유도들에 대한 모든 필요한 값들을 포함하도록 완전히 제약되어야 한다. 따라서, 본 명세서에서 설명되는 계획 프로세스들에서의 일부 지점들에서, 일부 모션 계획들은 과소제약될 수 있지만, 모션 계획이 로봇 상에서 실제로 실행될 때까지는, 모션 계획이 완전히 제약될 수 있다. 일부 구현들에서, 모션 계획들은 단일 로봇에 대한 2개의 구성 상태 사이의 작업 그래프에서의 에지들을 나타낸다. 따라서, 일반적으로 로봇마다 하나의 작업 그래프가 있다.
본 명세서에서, 모션 스웹 볼륨(motion swept volume)은 모션 계획의 전체 실행 동안 로봇 또는 도구의 적어도 일부분에 의해 점유되는 공간의 영역이다. 모션 스웹 볼륨은 로봇-도구 시스템과 연관된 충돌 지오메트리에 의해 생성될 수 있다.
본 명세서에서, 전이는 시작 지점과 종료 지점 사이에서 수행될 이동을 설명하는 모션 계획이다. 시작 지점 및 종료 지점은 자세들, 좌표계에서의 위치들, 또는 수행될 작업들에 의해 표현될 수 있다. 전이들은 로봇에 대한 하나 이상의 각각의 제어가능한 자유도(DOF)의 하나 이상의 값이 없음으로써 과소제약될 수 있다. 일부 전이들은 자유 모션들을 나타낸다. 본 명세서에서, 자유 모션은 자유도들 중 어느 것도 제약되지 않는 전이이다. 예를 들어, 단순히 자세 A로부터 자세 B로 이동하는 로봇 모션은 이들 2개의 자세 사이에서 어떻게 이동할지에 대한 어떠한 제한도 없는 자유 모션이다. 계획 프로세스 동안, 자유 모션에 대한 DOF 변수들은 결국 값들을 할당받고, 경로 계획자들은 작업셀의 물리적 제약들과 충돌하지 않는 모션에 대한 임의의 적절한 값들을 이용할 수 있다.
본 명세서에서 설명된 로봇 기능성들은 하드웨어 무관 소프트웨어 스택, 또는 간결함을 위해, 적어도 부분적으로 하드웨어 무관인 단지 소프트웨어 스택에 의해 구현될 수 있다. 즉, 소프트웨어 스택은 로봇의 특정한 모델 또는 특정한 로봇 구성요소에 구체적으로 관련시키기 위한 커맨드들을 요구하지 않으면서, 위에서 설명된 계획 프로세스들에 의해 생성된 커맨드들을 입력으로서 받아들일 수 있다. 예를 들어, 소프트웨어 스택은 도 1의 온사이트 실행 엔진(150) 및 로봇 인터페이스 서브시스템(160)에 의해 적어도 부분적으로 구현될 수 있다.
소프트웨어 스택은 하나의 방향에서의 증가하는 하드웨어 특이성(specificity) 및 다른 방향에서의 증가하는 소프트웨어 추상화(abstraction)의 다수의 레벨들을 포함할 수 있다. 소프트웨어 스택의 최저 레벨에는, 낮은 레벨 액션들을 수행하는 디바이스들, 및 낮은 레벨 상태들을 보고하는 센서들을 포함하는 로봇 구성요소들이 있다. 예를 들어, 로봇들은 모터들, 인코더들, 카메라들, 구동기들, 파지기들, 애플리케이션 특정 센서들, 선형 또는 회전식 위치 센서들, 및 다른 주변 디바이스들을 포함하는 다양한 낮은 레벨 구성요소들을 포함할 수 있다. 하나의 예로서, 모터는 인가되어야 하는 토크의 양을 표시하는 커맨드를 수신할 수 있다. 커맨드를 수신하는 것에 응답하여, 모터는 예컨대, 인코더를 이용하여 로봇의 관절의 현재의 위치를 소프트웨어 스택의 더 높은 레벨에 보고할 수 있다.
소프트웨어 스택에서의 각각의 다음 최고 레벨은 다수의 상이한 기반적인 구현들을 지원하는 인터페이스를 구현할 수 있다. 일반적으로, 레벨들 사이의 각각의 인터페이스는 상태 메시지들을 더 낮은 레벨로부터 더 높은 레벨로 제공하고, 커맨드들을 더 높은 레벨로부터 더 낮은 레벨로 제공한다.
전형적으로, 커맨드들 및 상태 메시지들은 각각의 제어 사이클 동안에 순환적으로, 예컨대, 제어 사이클마다 하나의 상태 메시지 및 하나의 커맨드씩 생성된다. 소프트웨어 스택의 더 낮은 레벨들은 일반적으로, 소프트웨어 스택의 더 높은 레벨들보다 더 엄격한 실시간 요건들을 가진다. 예를 들어, 소프트웨어 스택의 최저 레벨들에서, 제어 사이클은 실제 실시간 요건들을 가질 수 있다. 본 명세서에서, 실시간은 소프트웨어 스택의 하나의 레벨에서 수신된 커맨드가 실행되어야 한다는 것과, 선택적으로, 상태 메시지가 특정한 제어 사이클 시간 내에 소프트웨어 스택의 더 높은 레벨로 다시 제공되어야 한다는 것을 의미한다. 이 실시간 요건이 충족되지 않을 경우에, 로봇은 예컨대, 모든 동작을 동결시킴으로써 고장 상태에 진입하도록 구성될 수 있다.
다음-최고 레벨에서, 소프트웨어 스택은 모터 피드백 제어기들로 지칭될 특정한 구성요소들의 소프트웨어 추상화들을 포함할 수 있다. 모터 피드백 제어기는 단지 문언적 모터가 아니라, 임의의 적절한 더 낮은 레벨 구성요소들의 소프트웨어 추상화일 수 있다. 따라서, 모터 피드백 제어기는 더 낮은 레벨 하드웨어 구성요소에 대한 인터페이스를 통해 상태를 수신하고, 스택에서의 더 높은 레벨들로부터 수신된 더 높은 레벨 커맨드들에 기반하여 커맨드들을 다시 아래로 인터페이스를 통해 더 낮은 레벨 하드웨어 구성요소로 전송한다. 모터 피드백 제어기는 더 높은 레벨 커맨드들이 어떻게 해석되어야 하고 더 낮은 레벨 커맨드들로 변환되어야 하는지를 결정하는 임의의 적절한 제어 규칙들을 가질 수 있다. 예를 들어, 모터 피드백 제어기는 더 높은 레벨 커맨드들을 더 낮은 레벨 커맨드들로 변환하기 위해 간단한 논리적 규칙들로부터 더 진보된 기계 학습 기술들까지의 어떤 것도 이용할 수 있다. 유사하게, 모터 피드백 제어기는 고장 상태에 언제 도달하였는지를 결정하기 위해 임의의 적절한 고장 규칙들을 이용할 수 있다. 예를 들어, 모터 피드백 제어기가 더 높은 레벨 커맨드를 수신하지만, 제어 사이클의 특정한 부분 내에서 더 낮은 레벨 상태를 수신하지 않을 경우에, 모터 피드백 제어기는 로봇으로 하여금, 모든 동작들을 중단시키는 고장 상태에 진입하게 할 수 있다.
다음-최고 레벨에서, 소프트웨어 스택은 액추에이터 피드백 제어기들을 포함할 수 있다. 액추에이터 피드백 제어기는 그 개개의 모터 피드백 제어기들을 통해 다수의 로봇 구성요소들을 제어하기 위한 제어 로직을 포함할 수 있다. 예를 들어, 일부 로봇 구성요소들, 예컨대, 관절 아암은 다수의 모터들에 의해 실제로 제어될 수 있다. 따라서, 액추에이터 피드백 제어기는 커맨드들을 복수의 모터들의 모터 피드백 제어기들로 전송하기 위해 그 제어 로직을 이용함으로써, 관절 아암의 소프트웨어 추상화를 제공할 수 있다.
다음-최고 레벨에서, 소프트웨어 스택은 관절 피드백 제어기들을 포함할 수 있다. 관절 피드백 제어기는 로봇에서의 논리적 자유도로 매핑하는 관절을 표현할 수 있다. 따라서, 예를 들어, 로봇의 손목은 액추에이터들의 복잡한 네트워크에 의해 제어될 수 있지만, 관절 피드백 제어기는 그 복잡도를 추상화할 수 있고, 그 자유도를 단일 관절로서 노출시킨다. 따라서, 각각의 관절 피드백 제어기는 액추에이터 피드백 제어기들의 임의의 복잡한 네트워크를 제어할 수 있다. 예로서, 6 자유도 로봇은 실제 피드백 제어기들의 별도의 네트워크를 각각 제어하는 6개의 상이한 관절 피드백 제어기에 의해 제어될 수 있다.
소프트웨어 스택의 각각의 레벨은 또한, 레벨-특정적 제약들의 시행을 수행할 수 있다. 예를 들어, 액추에이터 피드백 제어기에 의해 수신된 특정한 토크 값이 수용가능한 범위의 밖에 있을 경우에, 액추에이터 피드백 제어기는 이를 범위 내에 있도록 수정할 수 있거나 고장 상태에 진입할 수 있다.
관절 피드백 제어기들로의 입력을 구동하기 위해, 소프트웨어 스택은 더 낮은 레벨들에서의 각각의 구성요소를 위한 커맨드 파라미터들, 예컨대, 시스템에서의 각각의 모터를 위한 포지티브, 토크, 및 속도를 포함하는 커맨드 벡터를 이용할 수 있다. 관절 피드백 제어기들로부터의 상태를 노출시키기 위해, 소프트웨어 스택은 더 낮은 레벨들에서의 각각의 구성요소를 위한 상태 정보, 예컨대, 시스템에서의 각각의 모터를 위한 위치, 속도, 및 토크를 포함하는 상태 벡터를 이용할 수 있다. 일부 구현들에서, 커맨드 벡터들은 또한, 더 낮은 레벨들에서의 제어기들에 의해 시행되어야 할 제약들에 관한 일부 한계 정보를 포함한다.
다음-최고 레벨에서, 소프트웨어 스택은 관절 모음 제어기들을 포함할 수 있다. 관절 모음 제어기는 파트 추상화(part abstraction)들의 세트로서 노출되는 커맨드 및 상태 벡터들의 발행을 취급할 수 있다. 각각의 파트는 예컨대, 역 운동학적 계산(inverse kinematic calculation)들을 수행하기 위한 운동학적 모델, 한계 정보뿐만 아니라 관절 상태 벡터 및 관절 커맨드 벡터를 포함할 수 있다. 예를 들어, 단일 관절 모음 제어기는 정책들의 상이한 세트들을 더 낮은 레벨들에서의 상이한 서브시스템들에 적용하는데 이용될 수 있다. 관절 모음 제어기는 모터들이 어떻게 물리적으로 표현되는지와 제어 정책들이 어떻게 그 파트들과 연관되는지 사이의 관계를 효과적으로 분리할 수 있다. 따라서, 예를 들어, 로봇 아암이 이동가능한 기저부(base)를 가질 경우에, 관절 모음 제어기는 아암이 어떻게 이동하는지에 대한 한계 정책들의 세트를 시행하고 이동가능한 기저부가 어떻게 이동할 수 있는지에 대한 한계 정책들의 상이한 세트를 시행하는데 이용될 수 있다.
다음-최고 레벨에서, 소프트웨어 스택은 관절 선택 제어기들을 포함할 수 있다. 관절 선택 제어기는 상이한 소스들로부터 발행되는 커맨드들 사이를 동적으로 선택하는 것을 담당할 수 있다. 즉, 관절 선택 제어기는 제어 사이클 동안에 다수의 커맨드들을 수신할 수 있고, 제어 사이클 동안에 실행되어야 할 다수의 커맨드들 중의 하나를 선택할 수 있다. 실시간 제어 사이클 동안에 다수의 커맨드들로부터 동적으로 선택하기 위한 능력은 기존의 로봇 제어 시스템들에 비해 제어에 있어서의 대폭 증가된 유연성을 허용한다.
다음-최고 레벨에서, 소프트웨어 스택은 관절 위치 제어기들을 포함할 수 있다. 관절 위치 제어기는 목표 파라미터들을 수신할 수 있고, 목표 파라미터들을 달성하기 위해 요구된 커맨드들을 동적으로 계산할 수 있다. 예를 들어, 관절 위치 제어기는 위치 목표를 수신할 수 있고, 목표를 달성하기 위한 설정 포인트를 계산할 수 있다.
다음-최고 레벨에서, 소프트웨어 스택은 데카르트 위치 제어기(Cartesian position controller)들 및 데카르트 선택 제어기(Cartesian selection controller)들을 포함할 수 있다. 데카르트 위치 제어기는 데카르트 공간에서의 목표들을 입력으로서 수신할 수 있고, 관절 위치 공간에서의 출력을 계산하기 위해 역 운동학 솔버(inverse kinematics solver)들을 이용할 수 있다. 데카르트 선택 제어기는 그 다음으로, 관절 위치 공간에서의 계산된 결과들을 스택의 다음 최저 레벨에서의 관절 위치 제어기로 전달하기 전에, 데카르트 위치 제어기들에 의해 계산된 결과들에 대한 한계 정책들을 시행할 수 있다. 예를 들어, 데카르트 위치 제어기는 데카르트 좌표들 x, y, 및 z에서 3개의 별도의 목표 상태를 부여받을 수 있다. 일부 정도들에 대하여, 목표 상태는 위치일 수 있는 반면, 다른 정도들에 대하여, 목표 상태는 원하는 속도일 수 있다.
따라서, 소프트웨어 스택에 의해 제공된 이러한 기능성들은 위에서 설명된 더 높은 레벨 계획 기술들과 당연히 맞물리는 방식으로 목표 상태들로 용이하게 표현되어야 할 제어 지시들에 대한 폭넓은 유연성을 제공한다. 즉, 계획 프로세스가 취해져야 할 구체적인 액션들을 생성하기 위해 프로세스 정의 그래프를 이용할 때, 액션들은 개별적인 로봇 구성요소들을 위한 낮은 레벨 커맨드들에서 지정될 필요가 없다. 오히려, 이들은 최종적으로 낮은 레벨 커맨드들로 될 때까지 다양한 레벨들을 통해 변환되는, 소프트웨어 스택에 의해 수용되는 높은 레벨 목표들로서 표현될 수 있다. 또한, 계획 프로세스를 통해 생성된 액션들은 인간 조작자들을 위해 액션들이 이해가능하게 하는 방식으로 데카르트 공간에서 지정될 수 있고, 이것은 스케줄들을 디버깅하고 분석하는 것을 더 용이하고, 더 신속하며, 그리고 더 직관적으로 되게 한다. 추가적으로, 계획 프로세스를 통해 생성된 액션들은 임의의 특정한 로봇 모델 또는 낮은 레벨 커맨드 포맷에 엄격하게 결합될 필요가 없다. 그 대신에, 계획 프로세스 동안에 생성된 동일한 액션들은, 이들이 동일한 자유도들을 지원하고 적절한 제어 레벨들이 소프트웨어 스택에서 구현되었기만 하면, 상이한 로봇 모델들에 의해 실제로 실행될 수 있다.
본 명세서에서 설명된 주제 및 기능적 동작들의 실시예들은 디지털 전자 회로로, 유형적으로 구현된 컴퓨터 소프트웨어 또는 펌웨어로, 본 명세서에서 개시된 구조들 및 그 구조적 등가물들을 포함하는 컴퓨터 하드웨어로, 또는 이들 중의 하나 이상의 조합으로 구현될 수 있다. 본 명세서에서 설명된 주제의 실시예들은 하나 이상의 컴퓨터 프로그램, 즉, 데이터 처리 장치에 의한 실행을 위해, 또는 데이터 처리 장치의 동작을 제어하기 위해, 유형의 비일시적 저장 매체 상에서 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 저장 매체는 기계 판독가능한 저장 디바이스, 기계 판독가능한 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중의 하나 이상의 조합일 수 있다. 대안적으로 또는 추가적으로, 프로그램 명령어들은 인공적으로 생성된 전파 신호, 예컨대, 데이터 처리 장치에 의한 실행을 위해 적절한 수신기 장치로의 전송을 위한 정보를 인코딩하기 위해 생성되는 기계 생성된 전기, 광학, 또는 전자기 신호 상에서 인코딩될 수 있다.
용어 "데이터 처리 장치"는 데이터 처리 하드웨어를 지칭하고, 프로그래밍가능한 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 예로서 포함하는, 데이터를 처리하기 위한 모든 종류들의 장치, 디바이스들, 및 기계들을 망라한다. 이러한 장치는 또한, 특수 목적 로직 회로, 예컨대, FPGA(field programmable gate array) 또는 ASIC(application-specific integrated circuit)일 수 있거나 이들을 추가로 포함할 수 있다. 이러한 장치는 선택적으로, 하드웨어에 추가적으로, 컴퓨터 프로그램들을 위한 실행 환경을 생성하는 코드, 예컨대, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중의 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱(app), 모듈, 소프트웨어 모듈, 스크립트(script), 또는 코드로서 또한 지칭될 수 있거나 설명될 수 있는 컴퓨터 프로그램은, 컴파일링되거나 해석된 언어들, 또는 선언적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기입될 수 있고, 컴퓨터 프로그램은 단독형 프로그램으로서 또는 모듈로서, 구성요소, 서브루틴, 또는 컴퓨팅 환경에서의 이용을 위해 적절한 다른 유닛을 포함하는 임의의 형태로 전개될 수 있다. 프로그램은 파일 시스템에서의 파일에 대응할 수 있지만, 반드시 그런 것은 아니다. 프로그램은 다른 프로그램들 또는 데이터, 예컨대, 마크업 언어 문서에서 저장된 하나 이상의 스크립트를 유지하는 파일의 부분에서, 논의 중인 프로그램에 전용인 단일 파일에서, 또는 다수의 조정된 파일들, 예컨대, 하나 이상의 모듈, 서브-프로그램, 또는 코드의 부분을 저장하는 파일들에서 저장될 수 있다. 컴퓨터 프로그램은, 하나의 사이트에서 위치되거나 다수의 사이트들에 걸쳐 분산되고, 데이터 통신 네트워크에 의해 상호접속되는 하나의 컴퓨터 상에서 또는 다수의 컴퓨터들 상에서 실행되도록 전개될 수 있다.
하나 이상의 컴퓨터의 시스템이 특정한 동작들 또는 액션들을 수행하도록 구성되는 것은, 시스템이 동작 시에, 시스템으로 하여금, 동작들 또는 액션들을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 컴퓨터 상에서 설치한 것을 의미한다. 하나 이상의 컴퓨터 프로그램이 특정한 동작들 또는 액션들을 수행하도록 구성되는 것은, 하나 이상의 프로그램이, 데이터 처리 장치에 의해 실행될 때, 장치로 하여금, 동작들 또는 액션들을 수행하게 하는 명령어들을 포함한다는 것을 의미한다.
본 명세서에서 사용되는 바와 같이, "엔진" 또는 "소프트웨어 엔진"은 입력과는 상이한 출력을 제공하는 소프트웨어 구현된 입력/출력 시스템을 지칭한다. 엔진은 라이브러리, 플랫폼, 소프트웨어 개발 키트(software development kit)("SDK"), 또는 객체와 같은, 기능성의 인코딩된 블록일 수 있다. 각각의 엔진은 임의의 적절한 유형의 컴퓨팅 디바이스, 예컨대, 하나 이상의 프로세서 및 컴퓨터 판독가능한 매체들을 포함하는 서버들, 모바일 폰들, 태블릿 컴퓨터들, 노트북 컴퓨터들, 음악 플레이어들, 전자-책 판독기(e-book reader)들, 랩톱 또는 데스크톱 컴퓨터들, PDA들, 스마트 폰들, 또는 다른 고정식 또는 휴대용 디바이스들 상에서 구현될 수 있다. 추가적으로, 엔진들 중의 2개 이상은 동일한 컴퓨팅 디바이스 상에서, 또는 상이한 컴퓨팅 디바이스들 상에서 구현될 수 있다.
본 명세서에서 설명된 프로세스들 및 로직 흐름들은 입력 데이터에 대해 동작함으로써, 그리고 출력을 생성함으로써, 기능들을 수행하기 위한 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍가능한 컴퓨터에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한, 특수 목적 로직 회로, 예컨대, FPGA 또는 ASIC에 의해, 또는 특수 목적 로직 회로 및 하나 이상의 프로그래밍된 컴퓨터의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램의 실행을 위해 적절한 컴퓨터들은 일반 또는 특수 목적 마이크로프로세서들 또는 둘 모두, 또는 임의의 다른 종류의 중앙 처리 유닛에 기반할 수 있다. 일반적으로, 중앙 처리 유닛은 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수적인 요소들은 명령어들을 수행하거나 실행하기 위한 중앙 처리 유닛, 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 중앙 처리 유닛 및 메모리는 특수 목적 로직 회로에 의해 보충될 수 있거나, 특수 목적 로직 회로 내에 통합될 수 있다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예컨대, 자기, 자기-광학 디스크들, 또는 광학 디스크들을 포함할 것이거나, 이들로부터 데이터를 수신하거나 이들로 데이터를 전송하기 위해 동작가능하게 결합될 것이거나, 이들 양자일 것이다. 그러나, 컴퓨터는 이러한 디바이스들을 가질 필요가 없다. 또한, 컴퓨터는 또 다른 디바이스, 예컨대, 몇 가지 예를 들자면, 모바일 전화기, 개인 휴대 정보 단말기(personal digital assistant)(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 글로벌 위치결정 시스템(Global Positioning System)(GPS) 수신기, 또는 휴대용 저장 디바이스, 예컨대, 범용 직렬 버스(universal serial bus)(USB) 플래시 드라이브(flash drive) 내에 내장될 수 있다.
컴퓨터 프로그램 명령어들 및 데이터를 저장하기 위해 적절한 컴퓨터 판독가능한 매체들은, 예로서, 반도체 메모리 디바이스들, 예컨대, EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예컨대, 내부 하드 디스크들 또는 이동식 디스크들; 자기-광학 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는, 모든 형태들의 비휘발성 메모리, 매체들, 및 메모리 디바이스들을 포함한다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에서 설명된 주제의 실시예들은, 정보를 사용자에게 표시하기 위한 디스플레이 디바이스, 예컨대, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터, 및 사용자가 입력을 컴퓨터에 제공할 수 있게 하는 키보드 및 포인팅 디바이스, 예컨대, 마우스, 트랙볼, 또는 존재 감지 디스플레이 또는 다른 표면을 가지는 컴퓨터 상에서 구현될 수 있다. 다른 종류들의 디바이스들은 마찬가지로 사용자와의 상호작용을 제공하기 위해 이용될 수 있고; 예를 들어, 사용자에게 제공된 피드백은 임의의 형태의 감각 피드백, 예컨대, 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백일 수 있고; 사용자로부터의 입력은 음향, 음성, 또는 촉각적 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가적으로, 컴퓨터는 문서들을 사용자에 의해 이용되는 디바이스로 전송함으로써 그리고 이러한 디바이스로부터 문서들을 수신함으로써; 예를 들어, 웹 브라우저로부터 수신된 요청들에 응답하여 웹 페이지들을 사용자의 디바이스 상의 웹 브라우저로 전송함으로써 사용자와 상호작용할 수 있다. 또한, 컴퓨터는 텍스트 메시지들 또는 다른 형태들의 메시지들을 개인용 디바이스, 예컨대, 메시징 애플리케이션을 동작시키는 스마트폰으로 전송함으로써, 그리고 반환 시에 사용자로부터 응답 메시지들을 수신함으로써 사용자와 상호작용할 수 있다.
본 명세서에서 설명된 주제의 실시예들은, 예컨대, 데이터 서버로서, 백-엔드 구성요소를 포함하거나, 미들웨어 구성요소, 예컨대, 애플리케이션 서버를 포함하거나, 프론트-엔드 구성요소, 예컨대, 사용자가 본 명세서에서 설명된 주제의 구현와 상호작용할 수 있게 하는 그래픽 사용자 인터페이스, 웹 브라우저, 또는 앱을 가지는 클라이언트 컴퓨터를 포함하는 컴퓨팅 시스템에서, 또는 하나 이상의 이러한 백-엔드, 미들웨어, 또는 프론트-엔드 구성요소의 임의의 조합으로 구현될 수 있다. 시스템의 구성요소들은 디지털 데이터 통신의 임의의 형태 또는 매체, 예컨대, 통신 네트워크에 의해 상호접속될 수 있다. 통신 네트워크들의 예들은 로컬 영역 네트워크(local area network)(LAN) 및 광역 네트워크(wide area network)(WAN), 예컨대, 인터넷을 포함한다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로로부터 원격이고, 전형적으로, 통신 네트워크를 통해 상호작용한다. 클라이언트 및 서버의 관계는 각각의 컴퓨터들 상에서 동작되고 서로에 대한 클라이언트-서버 관계를 가지는 컴퓨터 프로그램들에 의해 발생한다. 일부 실시예들에서, 서버는 예컨대, 데이터를 클라이언트로서 동작하는 디바이스로 표시하고 클라이언트로서 동작하는 디바이스와 상호작용하는 사용자로부터 사용자 입력을 수신하는 목적들을 위해, 데이터, 예컨대, HTML 페이지를 사용자 디바이스로 전송한다. 사용자 디바이스에서 생성된 데이터, 예컨대, 사용자 상호작용의 결과는 서버에서 디바이스로부터 수신될 수 있다.
위에서 설명된 실시예들에 더하여, 다음의 실시예들이 또한 혁신적이다:
실시예 1은 방법이며, 이 방법은,
로봇에 의해 수행될 작업에 대한 스킬 템플릿을 수신하는 단계 - 스킬 템플릿은 복수의 하위작업들을 갖는 상태 기계, 및 하위작업들 중 하나 이상 사이의 하나 이상의 각각의 전이 조건을 정의하고, 스킬 템플릿은 하위작업들 중 어느 것이 로컬 데모 데이터를 이용하여 정밀화될 데모 하위작업들인지를 표시함 -;
스킬 템플릿의 데모 하위작업에 대한 기본 제어 정책을 획득하는 단계;
스킬 템플릿의 데모 하위작업에 대해, 로봇에 의해 데모 하위작업을 수행하는 방법을 데모하는, 사용자로부터 생성된 로컬 데모 데이터를 수신하는 단계;
데모 하위작업에 대한 기계 학습 모델을 정밀화하는 단계 - 데모 하위작업에 대한 기계 학습 모델은, 하나 이상의 입력 센서 스트림을 이용하여, 로봇에 의해 실행될 커맨드를 생성하도록 구성됨 -; 및
로봇 상에서 스킬 템플릿을 실행함으로써, 로봇이 기계 학습 모델에 의해 생성된 커맨드들을 수행하는 것을 포함하여, 스킬 템플릿에 의해 정의된 상태 기계를 통해 전이하여 작업을 수행하게 하는 단계
를 포함한다.
실시예 2는 실시예 1의 방법이며, 로컬 데모 데이터를 수신하는 단계는 스킬 템플릿의 데모 하위작업에 대한 복수의 전이 조건 각각에 대한 로컬 데모 데이터를 수신하는 단계를 포함한다.
실시예 3은 실시예 1 또는 실시예 2의 방법이며, 스킬 템플릿은 데모 하위작업의 모든 전이 조건들보다 적은 수의 전이 조건들이 로컬 데모 데이터를 요구한다는 것을 지정한다.
실시예 4는 실시예 1 내지 실시예 3 중 어느 하나의 방법이며, 스킬 템플릿은 하드웨어 무관이다.
실시예 5는 실시예 4의 방법이며, 복수의 상이한 로봇 모델에 의해 각각의 로컬 데모 데이터를 생성하는 것을 포함하여, 복수의 상이한 로봇 모델에 대해 스킬 템플릿을 적응시키는 단계를 더 포함한다.
실시예 6은 실시예 1 내지 실시예 5 중 어느 하나의 방법이며, 스킬 템플릿은, 복수의 하위작업들의 각각의 하위작업에 대해, 하위작업을 완료하기 위해 어느 입력 센서 스트림들이 요구되는지를 지정한다.
실시예 7은 실시예 6의 방법이며, 기본 제어 정책은 복수의 상이한 로봇 모델에 대한 데모들로부터 생성되었던 것이다.
실시예 8은 실시예 1 내지 실시예 7 중 어느 하나의 방법이며, 스킬 템플릿의 제1 하위작업은 복수의 제2 하위작업들을 갖는 상이한 제2 스킬 템플릿을 참조한다.
실시예 9는 시스템이며, 이 시스템은, 하나 이상의 컴퓨터, 및 하나 이상의 컴퓨터에 의해 실행될 때, 하나 이상의 컴퓨터로 하여금, 실시예 1 내지 실시예 8 중 어느 하나의 방법을 수행하게 하도록 동작가능한 명령어들을 저장하는 하나 이상의 저장 디바이스를 포함한다.
실시예 10은 컴퓨터 프로그램으로 인코딩된 컴퓨터 저장 매체이며, 이 프로그램은, 데이터 처리 장치에 의해 실행될 때, 데이터 처리 장치로 하여금, 실시예 1 내지 실시예 8 중 어느 하나의 방법을 수행하게 하도록 동작가능한 명령어들을 포함한다.
본 명세서는 많은 특정 구현 상세들을 포함하지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 것의 범위에 대한 제한들이 아니라, 오히려, 특정한 발명들의 특정한 실시예들에 대해 특정적일 수 있는 피처들의 설명들로서 해석되어야 한다. 별도의 실시예들의 맥락에서 본 명세서에서 설명되는 특정 피처들은 또한, 단일 실시예에서 조합으로 구현될 수 있다. 반대로, 단일 실시예의 맥락에서 설명되는 다양한 피처들은 또한, 다수의 실시예들에서 별도로 또는 임의의 적절한 하위조합으로 구현될 수 있다. 또한, 피처들은 특정 조합들로 동작하는 것으로서 설명될 수 있고 심지어 이와 같이 초기에 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 피처는 일부 경우들에는, 조합으로부터 삭제될 수 있고, 청구된 조합은 하위조합 또는 하위조합의 변형에 관한 것일 수 있다.
유사하게, 동작들은 특정한 순서로 도면들에서 도시되지만, 이것은 바람직한 결과들을 달성하기 위해, 이러한 동작들이 도시된 특정한 순서로 또는 순차적인 순서로 수행되거나 모든 예시된 동작들이 수행될 것을 요구하는 것으로서 이해되어야 하는 것은 아니다. 특정 상황들에서는, 다중작업 및 병렬 처리가 유리할 수 있다. 또한, 위에서 설명된 실시예들에서의 다양한 시스템 모듈들 및 구성요소들의 분리는 모든 실시예들에서 이러한 분리를 요구하는 것으로서 이해되지 않아야 하고, 설명된 프로그램 구성요소들 및 시스템들은 단일 소프트웨어 제품에서 일반적으로 함께 통합될 수 있거나 다수의 소프트웨어 제품들로 패키징될 수 있다는 것이 이해되어야 한다.
본 주제의 특정한 실시예들이 설명되었다. 다른 실시예들은 다음의 청구항들의 범위 내에 있다. 예를 들어, 청구항들에서 기재된 액션들은 상이한 순서로 수행될 수 있고, 바람직한 결과들을 여전히 달성할 수 있다. 하나의 예로서, 첨부 도면들에서 도시된 프로세스들은 바람직한 결과들을 달성하기 위해 도시된 특정한 순서 또는 순차적인 순서를 반드시 요구하지는 않는다. 특정 일부 경우들에서는, 다중작업 및 병렬 처리가 유리할 수 있다.
Claims (20)
- 하나 이상의 컴퓨터에 의해 수행되는 방법으로서,
로봇에 의해 수행될 작업에 대한 스킬 템플릿(skill template)을 수신하는 단계 - 상기 스킬 템플릿은 복수의 하위작업들(subtasks)을 갖는 상태 기계, 및 상기 하위작업들 중 하나 이상 사이의 하나 이상의 각각의 전이 조건을 정의하고, 상기 스킬 템플릿은 상기 하위작업들 중 어느 것이 로컬 데모 데이터를 이용하여 정밀화될 데모 하위작업들인지를 표시함 -;
상기 스킬 템플릿의 데모 하위작업에 대한 기본 제어 정책을 획득하는 단계;
상기 스킬 템플릿의 데모 하위작업에 대해, 상기 로봇에 의해 상기 데모 하위작업을 수행하는 방법을 데모하는, 사용자로부터 생성된 로컬 데모 데이터를 수신하는 단계;
상기 데모 하위작업에 대한 기계 학습 모델을 정밀화하는 단계 - 상기 데모 하위작업에 대한 기계 학습 모델은, 하나 이상의 입력 센서 스트림을 이용하여, 상기 로봇에 의해 실행될 커맨드를 생성하도록 구성됨 -; 및
상기 로봇 상에서 상기 스킬 템플릿을 실행함으로써, 상기 로봇이 상기 기계 학습 모델에 의해 생성된 커맨드들을 수행하는 것을 포함하여, 상기 스킬 템플릿에 의해 정의된 상기 상태 기계를 통해 전이하여 상기 작업을 수행하게 하는 단계
를 포함하는, 방법. - 제1항에 있어서,
로컬 데모 데이터를 수신하는 단계는 상기 스킬 템플릿의 데모 하위작업에 대한 복수의 전이 조건 각각에 대한 로컬 데모 데이터를 수신하는 단계를 포함하는, 방법. - 제1항에 있어서,
상기 스킬 템플릿은 상기 데모 하위작업의 모든 전이 조건들보다 적은 수의 전이 조건들이 로컬 데모 데이터를 요구한다는 것을 지정하는, 방법. - 제1항에 있어서,
상기 스킬 템플릿은 하드웨어 무관(hardware-agnostic)인, 방법. - 제4항에 있어서,
복수의 상이한 로봇 모델에 의해 각각의 로컬 데모 데이터를 생성하는 것을 포함하여, 상기 복수의 상이한 로봇 모델에 대해 상기 스킬 템플릿을 적응시키는 단계를 더 포함하는, 방법. - 제1항에 있어서,
상기 스킬 템플릿은, 상기 복수의 하위작업들의 각각의 하위작업에 대해, 상기 하위작업을 완료하기 위해 어느 입력 센서 스트림들이 요구되는지를 지정하는, 방법. - 제6항에 있어서,
상기 기본 제어 정책은 복수의 상이한 로봇 모델에 대한 데모들로부터 생성되었던 것인, 방법. - 제1항에 있어서,
상기 스킬 템플릿의 제1 하위작업은 복수의 제2 하위작업들을 갖는 상이한 제2 스킬 템플릿을 참조하는, 방법. - 시스템으로서,
하나 이상의 컴퓨터, 및 상기 하나 이상의 컴퓨터에 의해 실행될 때, 상기 하나 이상의 컴퓨터로 하여금 동작들을 수행하게 하도록 동작가능한 명령어들을 저장하는 하나 이상의 저장 디바이스를 포함하며, 상기 동작들은,
로봇에 의해 수행될 작업에 대한 스킬 템플릿을 수신하는 것 - 상기 스킬 템플릿은 복수의 하위작업들을 갖는 상태 기계, 및 상기 하위작업들 중 하나 이상 사이의 하나 이상의 각각의 전이 조건을 정의하고, 상기 스킬 템플릿은 상기 하위작업들 중 어느 것이 로컬 데모 데이터를 이용하여 정밀화될 데모 하위작업들인지를 표시함 -;
상기 스킬 템플릿의 데모 하위작업에 대한 기본 제어 정책을 획득하는 것;
상기 스킬 템플릿의 데모 하위작업에 대해, 상기 로봇에 의해 상기 데모 하위작업을 수행하는 방법을 데모하는, 사용자로부터 생성된 로컬 데모 데이터를 수신하는 것;
상기 데모 하위작업에 대한 기계 학습 모델을 정밀화하는 것 - 상기 데모 하위작업에 대한 기계 학습 모델은, 하나 이상의 입력 센서 스트림을 이용하여, 상기 로봇에 의해 실행될 커맨드를 생성하도록 구성됨 -; 및
상기 로봇 상에서 상기 스킬 템플릿을 실행함으로써, 상기 로봇이 상기 기계 학습 모델에 의해 생성된 커맨드들을 수행하는 것을 포함하여, 상기 스킬 템플릿에 의해 정의된 상기 상태 기계를 통해 전이하여 상기 작업을 수행하게 하는 것
을 포함하는, 시스템. - 제9항에 있어서,
로컬 데모 데이터를 수신하는 것은 상기 스킬 템플릿의 데모 하위작업에 대한 복수의 전이 조건 각각에 대한 로컬 데모 데이터를 수신하는 것을 포함하는, 시스템. - 제9항에 있어서,
상기 스킬 템플릿은 상기 데모 하위작업의 모든 전이 조건들보다 적은 수의 전이 조건들이 로컬 데모 데이터를 요구한다는 것을 지정하는, 시스템. - 제9항에 있어서,
상기 스킬 템플릿은 하드웨어 무관인, 시스템. - 제12항에 있어서,
상기 동작들은, 복수의 상이한 로봇 모델에 의해 각각의 로컬 데모 데이터를 생성하는 것을 포함하여, 상기 복수의 상이한 로봇 모델에 대해 상기 스킬 템플릿을 적응시키는 것을 더 포함하는, 시스템. - 제9항에 있어서,
상기 스킬 템플릿은, 상기 복수의 하위작업들의 각각의 하위작업에 대해, 상기 하위작업을 완료하기 위해 어느 입력 센서 스트림들이 요구되는지를 지정하는, 시스템. - 제14항에 있어서,
상기 기본 제어 정책은 복수의 상이한 로봇 모델에 대한 데모들로부터 생성되었던 것인, 시스템. - 제9항에 있어서,
상기 스킬 템플릿의 제1 하위작업은 복수의 제2 하위작업들을 갖는 상이한 제2 스킬 템플릿을 참조하는, 시스템. - 하나 이상의 컴퓨터에 의해 실행될 때, 상기 하나 이상의 컴퓨터로 하여금 동작들을 수행하게 하는 컴퓨터 프로그램 명령어들로 인코딩된 하나 이상의 비일시적 컴퓨터 저장 매체로서, 상기 동작들은,
로봇에 의해 수행될 작업에 대한 스킬 템플릿을 수신하는 것 - 상기 스킬 템플릿은 복수의 하위작업들을 갖는 상태 기계, 및 상기 하위작업들 중 하나 이상 사이의 하나 이상의 각각의 전이 조건을 정의하고, 상기 스킬 템플릿은 상기 하위작업들 중 어느 것이 로컬 데모 데이터를 이용하여 정밀화될 데모 하위작업들인지를 표시함 -;
상기 스킬 템플릿의 데모 하위작업에 대한 기본 제어 정책을 획득하는 것;
상기 스킬 템플릿의 데모 하위작업에 대해, 상기 로봇에 의해 상기 데모 하위작업을 수행하는 방법을 데모하는, 사용자로부터 생성된 로컬 데모 데이터를 수신하는 것;
상기 데모 하위작업에 대한 기계 학습 모델을 정밀화하는 것 - 상기 데모 하위작업에 대한 기계 학습 모델은, 하나 이상의 입력 센서 스트림을 이용하여, 상기 로봇에 의해 실행될 커맨드를 생성하도록 구성됨 -; 및
상기 로봇 상에서 상기 스킬 템플릿을 실행함으로써, 상기 로봇이 상기 기계 학습 모델에 의해 생성된 커맨드들을 수행하는 것을 포함하여, 상기 스킬 템플릿에 의해 정의된 상기 상태 기계를 통해 전이하여 상기 작업을 수행하게 하는 것
을 포함하는, 하나 이상의 비일시적 컴퓨터 저장 매체. - 제17항에 있어서,
로컬 데모 데이터를 수신하는 것은 상기 스킬 템플릿의 데모 하위작업에 대한 복수의 전이 조건 각각에 대한 로컬 데모 데이터를 수신하는 것을 포함하는, 하나 이상의 비일시적 컴퓨터 저장 매체. - 제17항에 있어서,
상기 스킬 템플릿은 상기 데모 하위작업의 모든 전이 조건들보다 적은 수의 전이 조건들이 로컬 데모 데이터를 요구한다는 것을 지정하는, 하나 이상의 비일시적 컴퓨터 저장 매체. - 제17항에 있어서,
상기 스킬 템플릿은 하드웨어 무관인, 하나 이상의 비일시적 컴퓨터 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/880,862 | 2020-05-21 | ||
US16/880,862 US11986958B2 (en) | 2020-05-21 | 2020-05-21 | Skill templates for robotic demonstration learning |
PCT/US2021/031482 WO2021236365A1 (en) | 2020-05-21 | 2021-05-10 | Skill templates for robotic demonstration learning |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230012057A true KR20230012057A (ko) | 2023-01-25 |
Family
ID=76197627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227044777A KR20230012057A (ko) | 2020-05-21 | 2021-05-10 | 로봇 데모 학습을 위한 스킬 템플릿들 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11986958B2 (ko) |
EP (1) | EP4139098A1 (ko) |
JP (1) | JP7427113B2 (ko) |
KR (1) | KR20230012057A (ko) |
CN (1) | CN116133800A (ko) |
WO (1) | WO2021236365A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230390928A1 (en) * | 2022-06-02 | 2023-12-07 | Intrinsic Innovation Llc | Robot planning for concurrent execution of actions |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11534913B2 (en) | 2020-05-21 | 2022-12-27 | Intrinsic Innovation Llc | Integrating sensor streams for robotic demonstration learning |
US11679497B2 (en) | 2020-05-21 | 2023-06-20 | Intrinsic Innovation Llc | Distributed robotic demonstration learning |
US11524402B2 (en) | 2020-05-21 | 2022-12-13 | Intrinsic Innovation Llc | User feedback for robotic demonstration learning |
US11685047B2 (en) * | 2020-05-21 | 2023-06-27 | Intrinsic Innovation Llc | Skill template distribution for robotic demonstration learning |
DE102021109332B4 (de) * | 2021-04-14 | 2023-07-06 | Robert Bosch Gesellschaft mit beschränkter Haftung | Vorrichtung und Verfahren zum Steuern eines Roboters zum Einsetzen eines Objekts in eine Einsetzstelle |
US20230182295A1 (en) * | 2021-12-15 | 2023-06-15 | Intrinsic Innovation Llc | Sampling for robotic skill adaptation |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014110682A1 (en) | 2013-01-18 | 2014-07-24 | Robotiq Inc. | Force/torque sensor, apparatus and method for robot teaching and operation |
US9008840B1 (en) | 2013-04-19 | 2015-04-14 | Brain Corporation | Apparatus and methods for reinforcement-guided supervised learning |
US9314924B1 (en) | 2013-06-14 | 2016-04-19 | Brain Corporation | Predictive robotic controller apparatus and methods |
US9384443B2 (en) | 2013-06-14 | 2016-07-05 | Brain Corporation | Robotic training apparatus and methods |
US9296101B2 (en) * | 2013-09-27 | 2016-03-29 | Brain Corporation | Robotic control arbitration apparatus and methods |
DE102015204641B4 (de) | 2014-06-03 | 2021-03-25 | ArtiMinds Robotics GmbH | Verfahren und System zur Programmierung eines Roboters |
US9272418B1 (en) | 2014-09-02 | 2016-03-01 | The Johns Hopkins University | System and method for flexible human-machine collaboration |
JP6494331B2 (ja) | 2015-03-03 | 2019-04-03 | キヤノン株式会社 | ロボット制御装置およびロボット制御方法 |
JP6240689B2 (ja) | 2015-07-31 | 2017-11-29 | ファナック株式会社 | 人の行動パターンを学習する機械学習装置、ロボット制御装置、ロボットシステム、および機械学習方法 |
US11927965B2 (en) * | 2016-02-29 | 2024-03-12 | AI Incorporated | Obstacle recognition method for autonomous robots |
ITUA20164814A1 (it) | 2016-06-30 | 2017-12-30 | Octo Telematics Spa | Sistema e procedimento per il bilanciamento dell'elaborazione di dati e segnali di sensori in un veicolo. |
KR102645817B1 (ko) | 2016-12-06 | 2024-03-08 | 한화로보틱스 주식회사 | 로봇의 비헤이비어 관리 방법 및 장치 |
WO2020047120A1 (en) | 2018-08-28 | 2020-03-05 | Diligent Robotics, Inc. | Systems, apparatus, and methods for robotic learning and execution of skills |
WO2018211140A1 (en) | 2017-05-19 | 2018-11-22 | Deepmind Technologies Limited | Data efficient imitation of diverse behaviors |
JP6542839B2 (ja) | 2017-06-07 | 2019-07-10 | ファナック株式会社 | 制御装置及び機械学習装置 |
JP2019079227A (ja) | 2017-10-24 | 2019-05-23 | 日本電信電話株式会社 | 状態遷移規則獲得装置、行動選択学習装置、行動選択装置、状態遷移規則獲得方法、行動選択方法、およびプログラム |
JP6737764B2 (ja) | 2017-11-24 | 2020-08-12 | ファナック株式会社 | ロボットに対して教示操作を行う教示装置 |
CN109968352B (zh) | 2017-12-28 | 2021-06-04 | 深圳市优必选科技有限公司 | 一种机器人控制方法及机器人、具有存储功能的装置 |
US10913154B2 (en) | 2018-01-02 | 2021-02-09 | General Electric Company | Systems and method for robotic learning of industrial tasks based on human demonstration |
US11568236B2 (en) | 2018-01-25 | 2023-01-31 | The Research Foundation For The State University Of New York | Framework and methods of diverse exploration for fast and safe policy improvement |
US11614733B2 (en) | 2018-04-30 | 2023-03-28 | Aspentech Corporation | Computer system and method for automated batch data alignment in batch process modeling, monitoring and control |
US20220187847A1 (en) * | 2019-11-05 | 2022-06-16 | Strong Force Vcn Portfolio 2019, Llc | Robot Fleet Management for Value Chain Networks |
US20210252698A1 (en) | 2020-02-14 | 2021-08-19 | Nvidia Corporation | Robotic control using deep learning |
US11524402B2 (en) | 2020-05-21 | 2022-12-13 | Intrinsic Innovation Llc | User feedback for robotic demonstration learning |
US11534913B2 (en) | 2020-05-21 | 2022-12-27 | Intrinsic Innovation Llc | Integrating sensor streams for robotic demonstration learning |
-
2020
- 2020-05-21 US US16/880,862 patent/US11986958B2/en active Active
-
2021
- 2021-05-10 WO PCT/US2021/031482 patent/WO2021236365A1/en unknown
- 2021-05-10 CN CN202180060808.7A patent/CN116133800A/zh active Pending
- 2021-05-10 EP EP21729151.7A patent/EP4139098A1/en active Pending
- 2021-05-10 KR KR1020227044777A patent/KR20230012057A/ko unknown
- 2021-05-10 JP JP2022571197A patent/JP7427113B2/ja active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230390928A1 (en) * | 2022-06-02 | 2023-12-07 | Intrinsic Innovation Llc | Robot planning for concurrent execution of actions |
Also Published As
Publication number | Publication date |
---|---|
US20210362331A1 (en) | 2021-11-25 |
US11986958B2 (en) | 2024-05-21 |
CN116133800A (zh) | 2023-05-16 |
EP4139098A1 (en) | 2023-03-01 |
JP7427113B2 (ja) | 2024-02-02 |
WO2021236365A1 (en) | 2021-11-25 |
JP2023526962A (ja) | 2023-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20230012057A (ko) | 로봇 데모 학습을 위한 스킬 템플릿들 | |
KR20230002942A (ko) | 로봇 데모 학습을 위한 스킬 템플릿 배포 | |
US11534913B2 (en) | Integrating sensor streams for robotic demonstration learning | |
US11820014B2 (en) | Simulated local demonstration data for robotic demonstration learning | |
US11780086B2 (en) | Robotic demonstration learning device | |
US12005585B2 (en) | Offline robot planning with online adaptation | |
US11654552B2 (en) | Backup control based continuous training of robots | |
JP7487338B2 (ja) | 分散型ロボット実証学習 | |
US20210349444A1 (en) | Accelerating robotic planning for operating on deformable objects | |
US11904473B2 (en) | Transformation mode switching for a real-time robotic control system | |
US11524402B2 (en) | User feedback for robotic demonstration learning | |
US20230046520A1 (en) | Machine-learnable robotic control plans | |
US20230050174A1 (en) | Template robotic control plans | |
Solberg et al. | Utilizing Reinforcement Learning and Computer Vision in a Pick-And-Place Operation for Sorting Objects in Motion | |
US20240208059A1 (en) | Robotic control with real-time switching between trajectories | |
Wang et al. | Reinforcement Learning based End-to-End Control of Bimanual Robotic Coordination | |
Šafarič et al. | From Telerobotic towards Nanorobotic Applications |