KR102214868B1 - 로봇 시스템의 노드들을 동기화시키기 위한 시스템 및 방법 - Google Patents

로봇 시스템의 노드들을 동기화시키기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102214868B1
KR102214868B1 KR1020157021386A KR20157021386A KR102214868B1 KR 102214868 B1 KR102214868 B1 KR 102214868B1 KR 1020157021386 A KR1020157021386 A KR 1020157021386A KR 20157021386 A KR20157021386 A KR 20157021386A KR 102214868 B1 KR102214868 B1 KR 102214868B1
Authority
KR
South Korea
Prior art keywords
node
attributes
database
publishing
synchronization
Prior art date
Application number
KR1020157021386A
Other languages
English (en)
Other versions
KR20150118130A (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 KR1020217003451A priority Critical patent/KR102264615B1/ko
Publication of KR20150118130A publication Critical patent/KR20150118130A/ko
Application granted granted Critical
Publication of KR102214868B1 publication Critical patent/KR102214868B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61BDIAGNOSIS; SURGERY; IDENTIFICATION
    • A61B34/00Computer-aided surgery; Manipulators or robots specially adapted for use in surgery
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61BDIAGNOSIS; SURGERY; IDENTIFICATION
    • A61B34/00Computer-aided surgery; Manipulators or robots specially adapted for use in surgery
    • A61B34/30Surgical robots
    • A61B34/37Master-slave robots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Surgery (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Robotics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Heart & Thoracic Surgery (AREA)
  • Biomedical Technology (AREA)
  • Public Health (AREA)
  • General Health & Medical Sciences (AREA)
  • Animal Behavior & Ethology (AREA)
  • Molecular Biology (AREA)
  • Medical Informatics (AREA)
  • Veterinary Medicine (AREA)
  • Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Manipulator (AREA)
  • Small-Scale Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

로봇 시스템이 제공된다. 상기 로봇 시스템(100)은 적어도 하나의 제1 동기화 데이터베이스(104)를 구비하는 퍼블리싱 노드(102-1)를 포함하고 있고, 상기 적어도 하나의 제1 동기화 데이터베이스(104)는 각각이 속성 및 데이터를 식별하는 태그(110)를 구비하고 있는 복수의 속성(108), 각각의 속성과 연계된 플래그(114), 및 서브스크라이버 리스트(116)를 포함하고 있다. 상기 로봇 시스템은 또한 적어도 하나의 제2 동기화 데이터베이스(106)를 구비하는 서브스크라이버 노드(102-2)를 포함하고 있다. 상기 퍼블리싱 노드는, 속성들이 상기 적어도 하나의 제1 동기화 데이터베이스 내에 기록될 때 또는 속성들에 포함된 데이터가 수정될 때, 속성들과 연계된 플래그를 설정하고, 플래그가 설정된 속성들을 상기 서브스크라이버 노드로 퍼블리싱하도록 구성되어 있다.

Description

로봇 시스템의 노드들을 동기화시키기 위한 시스템 및 방법{SYSTEMS AND METHODS FOR SYNCHRONIZING NODES OF A ROBOTIC SYSTEM}
본 발명은 로봇 시스템의 노드들을 동기화시키기 위한 시스템 및 방법에 관한 것이다. 보다 상세하게는, 본 발명은 로봇 시스템의 각각의 노드에서 실행될 수 있는 동기화 데이터베이스로서, 로봇 시스템의 노드들 사이에서의 업데이트된 속성들의 서브스크립션(subscription) 및 퍼블리싱(publishing)을 허용하는 동기화 데이터베이스에 관한 것이다.
어떤 애플리케이션들은 통신을 위해 고 대역폭 요건들과, 엄격한 동기화, 지연성(latency) 및 신뢰성 요건들을 가진다. 예를 들어, 로봇 보조 수술은 제어 신호 및 피드백 신호를 실시간으로 전송하기 위해 저 지연성을 필요로 한다. 이러한 애플리케이션의 동기화 및 지연성 요건들은, 이상적으로는 마스터 입력장치를 제어하는 외과의의 운동과 마스터 입력장치에 종속되는 로봇의 운동 사이에 가능한 한 적은 지연이 존재해야 하기 때문에, 엄격하다.
로봇 보조 수술 시스템을 포함한 복합 시스템들은 이러한 시스템 내에서 함께 작동하여 동기화되어 유지될 수 있는 것이 필요한, 일반적으로 "노드(node)"라고 불리는, 수많은 구성요소들을 포함한다. 이러한 결합된 노드들의 각각에 대해, 동기화는 흔히 제1 노드가 제2 노드에 데이터 요청을 전송하고, 이 요청에 제2 노드가 요청된 데이터를 제1 노드에 제공하는 것에 의해 응답하게 됨으로써 실행된다. 경우에 따라서는, 제1 노드가 제2 노드 및 제3 노드의 존재를 확인하고, 제2 및 제3 노드가 존재하는 것으로 밝혀지면, 제1 노드가 데이터를 제2 및 제3 노드로 푸시한다. 제2 또는 제3 노드가 제1 노드로부터 연결해제되어 재연결되면, 제1 노드가 제2 또는 제3 노드가 연결해제되었던 것을 통지받지 못할 수 있어, 그 결과 재연결된 노드는 연결해제 중에 제1 노드가 전송한 데이터를 놓쳐버릴 수 있다. 또한, 새로운 노드가 제1 노드에 연결되는 경우, 제1 노드는 새로운 노드의 존재를 확인할 수 없고, 따라서 새로운 노드에 어떠한 데이터도 제공할 수 없어, 새로운 노드의 데이터가 제1 노드와 동기화되지 않는다. 결국, 노드들의 존재를 끊임없이 확인하고, 노드들의 각각에 동기화된 상태를 유지하도록 데이터를 전송하는 시스템에 대한 요구는 시스템을 느리게 만들거나 메시지 큐(message queue)를 오버플로우(overflow)시킬 수 있는 불필요한 시스템 트래픽(traffic)을 발생시킬 수 있다.
최소의 시스템 트래픽을 가지면서 시스템 내의 노드들의 자동 동기화를 가능하게 해주고, 시스템에 새로운 노드들의 고속 동기화를 허용하는 시스템 및 방법이 필요하다.
몇몇의 실시형태에 따라, 로봇 시스템이 제공된다. 상기 로봇 시스템은 적어도 하나의 제1 동기화 데이터베이스를 구비하는 퍼블리싱 노드를 포함하고 있고, 상기 적어도 하나의 제1 동기화 데이터베이스는 각각이 속성 및 데이터를 식별하는 태그를 구비하고 있는 복수의 속성, 각각의 속성과 연계된 플래그, 및 서브스크라이버 리스트를 포함하고 있다. 상기 로봇 시스템은 또한 적어도 하나의 제2 동기화 데이터베이스를 구비하는 서브스크라이버 노드를 포함하고 있다. 상기 퍼블리싱 노드는, 속성들이 상기 적어도 하나의 제1 동기화 데이터베이스 내에 기록될 때 또는 속성들에 포함된 데이터가 수정될 때, 속성들과 연계된 플래그를 설정하고, 플래그가 설정된 속성들을 상기 서브스크라이버 노드로 퍼블리싱하도록 구성되어 있다.
몇몇의 실시형태에 따라, 로봇 시스템의 노드들에 걸쳐 데이터를 동기화시키기 위한 방법이 제공된다. 상기 방법은 퍼블리싱 노드로부터, 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내에 저장된 속성들을 광고하는 광고 메시지를 전송하는 단계, 상기 퍼블리싱 노드에 연결된 서브스크라이빙 노드에 의해, 상기 광고 메시지를 수신하는 단계, 및 상기 서브스크라이빙 노드에 의해, 적어도 하나의 서브스크라이빙 노드가 서브스크라이빙하기를 원하는 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내에 저장된 속성들을 지시하는 서브스크립션 메시지를 전송하는 단계를 포함하고 있다. 상기 방법은 또한 상기 퍼블리싱 노드에 의해, 상기 서브스크라이빙 노드를 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내에 유지된 서브스크립션 리스트에 추가하는 단계, 상기 퍼블리싱 노드에 의해, 서브스크라이빙되는 속성들의 각각에 대해 플래그를 설정하는 단계, 상기 퍼블리싱 노드에 의해, 플래그가 설정된 속성들의 각각을 포함하고 있는 동기화 패킷을 상기 서브스크라이빙 노드에 전송하는 단계, 및 전송된 속성들의 각각에 대해 플래그를 해제하는 단계를 포함하고 있다.
또 다른 몇몇의 실시형태에 따라, 로봇 시스템의 하나 이상의 프로세서에 의해 실행되는 명령어로서, 실행되었을 때, 상기 로봇 시스템의 하나 이상의 프로세서가 로봇 시스템의 노드들을 동기화시키기 위한 방법을 실행하게 만드는 명령어를 가지는 비일시성 컴퓨터 판독가능 매체가 또한 제공된다. 상기 로봇 시스템의 노드들을 동기화시키기 위한 방법은 퍼블리싱 노드로부터, 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내에 저장된 속성들을 광고하는 광고 메시지를 전송하는 단계, 상기 퍼블리싱 노드에 연결된 서브스크라이빙 노드에 의해, 상기 광고 메시지를 수신하는 단계, 및 상기 서브스크라이빙 노드로부터 상기 퍼블리싱 노드로, 적어도 하나의 서브스크라이빙 노드가 서브스크라이빙하기를 원하는 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내에 저장된 속성들을 지시하는 서브스크립션 메시지를 전송하는 단계를 포함하고 있다. 상기 방법은 또한 상기 서브스크라이빙 노드를 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내에 유지된 서브스크립션 리스트에 추가하는 단계, 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내의 서브스크라이빙되는 속성들의 각각에 대해 플래그를 설정하는 단계, 상기 퍼블리싱 노드로부터 상기 서브스크라이빙 노드로, 플래그가 설정된 속성들의 각각을 포함하고 있는 동기화 패킷을 전송하는 단계, 및 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내의 전송된 속성들의 각각에 대해 플래그를 해제하는 단계;를 포함하고 있다.
이들 실시형태 및 다른 실시형태들이 첨부도면과 관련하여 이하에 상세히 설명될 것이다.
도 1은 몇몇의 실시형태에 따른, 동기화 데이터베이스의 인스턴스들을 이용하여 시스템 내의 노드들을 동기화시키기 위한 시스템을 설명하는 다이어그램이다.
도 2는 몇몇의 실시형태에 따른, 동기화 패킷을 설명하는 다이어그램이다.
도 3은 몇몇의 실시형태에 따른, 다수의 동기화 데이터베이스 인스턴스가 노드들에서 실행되는 시스템을 설명하는 다이어그램이다.
도 4a 및 4b는 몇몇의 실시형태에 따른, 서버 데이터베이스와 클라이언트 데이터베이스 사이에서 속성들을 동기화시키는 방법을 설명하는 플로우차트이다.
도 5는 몇몇의 실시형태에 따른, 오류 검출 방법을 설명하는 플로우차트이다.
도 6은 몇몇의 실시형태에 따른, 로봇 시스템에서 사용되고 있는 도 1의 시스템의 한 예이다.
도 7은 몇몇의 실시형태에 따른, 로봇 시스템에서 사용되고 있는 도 1의 시스템의 또 다른 예이다.
도 8은 몇몇의 실시형태에 따른, 로봇 시스템에서 사용되고 있는 도 1의 시스템의 또 다른 예이다.
도 9는 몇몇의 실시형태에 따른, 로봇 수술 보조 시스템에서 사용되고 있는 도 1의 시스템의 한 예이다.
도면들에서 동일한 도면부호를 가지는 요소들은 동일하거나 유사한 기능을 가진다.
이하의 설명의 특정적인 세부사항들은 특정 실시형태를 설명하는 것으로 기재된다. 하지만, 당업자는 개시되는 실시형태들이 이러한 특정적인 세부사항들 중의 일부 또는 전부가 없이 실시될 수 있다는 것을 이해할 것이다. 제공되는 특정 실시형태들은 예시적인 것으로 한정적인 것이 아니다. 당업자는, 여기서는 특정적으로 기재되어 있더라도, 개시사항의 범위와 범주 내에 있는 다른 재료를 인지할 수 있을 것이다. 다양한 기계적, 조성적, 구조적, 전기적 및 작동적 변경이 이러한 설명 및 청구범위의 사상 및 범위를 벗어나는 일없이 이루어질 수 있다. 경우에 따라서는, 잘 알려진 회로, 구조 및 기술들은 본 발명의 설명을 불명료하게 하지 않기 위해 상세히 도시하지 않는다. 또한, "하나의" 및 "그 하나의"와 같은 단수 형태의 표현은 문장에서 달리 지시하고 있지 않은 한은 복수 형태도 포함하는 것을 의도한다. 또한, "포함하다", "구비하다" 및 이에 준하는 표현의 용어는 언급되는 피처(feature), 단계, 동작 또는 작동, 요소 및/또는 구성요소의 존재를 특정하지만, 하나 이상의 다른 피처, 단계, 동작 또는 작동, 요소, 구성요소 및/또는 이들의 그룹의 존재나 추가를 배제하는 것은 아니다. 결합되는 것으로 설명되는 구성요소들은 전기적으로 또는 기계적으로 직접적으로 결합될 수 있으며, 또는 하나 이상의 중간 구성요소를 통해 간접적으로 결합될 수 있다.
도 1은 몇몇의 실시형태에 따른, 동기화 데이터베이스의 인스턴스(instance)들을 이용하여 시스템 내의 노드들을 동기화시키기 위한 시스템(100)을 설명하는 다이어그램이다. 도 1에 도시된 바와 같이, 시스템(100)은 상호연결된 복수의 노드(102-1 내지 102-N)(통칭하여 "노드(102)"라고 함)를 포함하고 있다. 몇몇의 실시형태에 따라, 각각의 노드(102)는 하나의 장치, 로봇 시스템의 하나의 구성요소, 하나 이상의 프로세서, 하나 이상의 프로세서에 의해 실행되는 개별 태스크일 수 있다. 노드(102)는 하나 이상의 프로세서를 가지고 있고, 하나 이상의 프로세서에 의한 실행을 위해 비일시성 기계 판독가능 매체에 저장된 명령어를 판독할 수 있는, 하드웨어 및/또는 소프트웨어의 임의의 적합한 조합을 포함할 수 있다. 그와 같은 명령어는 여기에 설명되는 바와 같은, 동기화 데이터베이스의 하나 이상의 인스턴스를 발생시키기 위한 명령어를 포함할 수 있다.
다시 도 1을 참조하면, 노드(102)는 제2 노드(102-2)에 연결된 제1 노드(102-1)를 포함하고 있고, 제2 노드(102-2)는 다시 복수의 노드(102-3 내지 102-N)에 연결되어 있다. 도 1에는 도시되지 않았지만, 노드(102-1)는 노드(102-2)에 대한 연결과 동일한 방식으로 추가적인 노드에 직접적으로 연결될 수 있다. 몇몇의 실시형태에 따라, 메모리(도시 안됨)가 각각의 노드(102)와 연계된다. 또한, 하나 이상의 프로세서도 각각의 노드(102)와 연계될 수 있다. 하나의 동기화 데이터베이스의 하나의 인스턴스를 발생시키기 위한 명령어가 메모리 내에 저장될 수 있고, 하나 이상의 프로세서가 이 명령어를 실행하여, 각각의 노드(102)에서 동기화 데이터베이스의 하나 이상의 인스턴스를 발생시킬 수 있다. 몇몇의 실시형태에 따라, 동기화 데이터베이스는 (i) 상태 또는 이벤트와 같은 데이터 속성을 저장하고, (ii) 퍼블리싱 노드(publishing node)라고 불리는 하나의 노드에서의 데이터 변경의 집계를 지원하고, (iii) 그 변경된 데이터의 하나 이상의 서브스크라이버 노드(subscriber node)로의 퍼블리케이션(publication)을 지원하는 소프트웨어 컨테이너 객체이다. 동기화 데이터베이스는 퍼블리싱 노드를 서브스크라이빙하여 데이터 변경을 수신하거나 하나 이상의 서브스크라이빙 노드에 데이터 변경을 퍼블리싱하는 데 필요한 함수를 실행하기 위해 각각의 노드에서 실행되는 하나 이상의 동기화 애플리케이션의 실행을 통해 이를 성취할 수 있다. 동기화 애플리케이션들은 퍼블리싱 노드용 퍼블리싱 애플리케이션 및 서브스크라이빙 노드용 서브스크라이빙 애플리케이션으로 불려질 수 있다.
도 1에 도시된 바와 같이, 노드(102-1)는 동기화 데이터베이스(104)의 서버 인스턴스(server instance)를 실행하고 있고 퍼블리싱 노드로서 기능하며, 노드(102-2)는 동기화 데이터베이스(106)의 클라이언트 인스턴스(client instance)를 실행하고 있고 서브스크라이빙 노드로서 기능한다. 동기화 데이터베이스, 즉 서버 인스턴스 및 클라이언트 인스턴스의 양자 모두는 속성(108)이라 불리는 데이터 세트-벡터, 서브스크라이빙 노드의 리스트(116) 및 동기화를 관리하는 데 이용될 수 있는 추가적인 상태(도시 안됨)를 저장할 수 있다. 속성(108)은 시스템(100) 내에서의 상태들 또는 이벤트들을 포함하고 있는 데이터를 의미할 수 있으며, 또한 카운터(counter) 및 타임 스탬프(time stamp)를 포함할 수 있다. 속성(108)은 또한 시스템(100)의 동작을 설명하는 데 이용되는 동작 요소인 데이터를 의미할 수도 있다. 몇몇의 실시형태에 따라, 속성(108)은 하나의 노드에서 발생하는 상태 또는 이벤트의 시각적 표식일 수 있는 사용자 인터페이스(UI) 상태 또는 이벤트를 의미할 수 있으며, 하나의 노드에서 발생하는 상태 또는 이벤트의 시각적 표식은 추가적인 노드로 퍼블리싱되어, 추가적인 노드의 이벤트의 업데이트 및/또는 추가적인 노드에서의 이러한 상태 또는 이벤트의 시각적 표식의 복제를 행할 수 있다. 속성(108)은 또한 도 1에 도시된 노드(102-1)와 연계된 데이터베이스(104) 및 노드(102-2)와 연계된 데이터베이스(106)와 같은 하나 이상의 데이터베이스 내에 저장될 수도 있다.
도 1에 도시된 바와 같이, 속성(108)은 태그(110), 데이터(112) 및 설정 또는 해제될 수 있는 연계 플래그(114)를 구비하고 있다. 노드(102-1)와 연계된 데이터베이스(104) 및 노드(102-2)와 연계된 데이터베이스(106)는 단지 3개 또는 4개의 속성만을 갖는 것으로 도시되어 있지만, 속성의 개수는 각각의 노드(102) 상의 동기화 데이터인터페이스에 할당되는 메모리에 의해서만 제한된다. 몇몇의 실시형태에 따라, 데이터베이스(104) 또는 데이터베이스(106) 내에 저장된 속성(108)은, 데이터베이스(104) 또는 데이터베이스(106)와 연계된 노드가 요청 노드로부터 쿼리(query)를 수신했을 때, 요청 노드로 전송된다.
동기화 데이터베이스 내에 저장된 각각의 속성(108)은 태그(110)에 의해 고유하게 식별된다. 몇몇의 실시형태에 따라, 태그(110)는 32 비트 태그일 수 있으며, 해시 테이블 룩업 함수(hash-table lookup function)를 사용함으로써 효율적인 데이터베이스 작동을 지원할 수 있다. 플래그(114)는 속성(108)이 서브스크라이빙 클라이언트 데이터베이스(106)와 속성(108)을 동기화시키기 위한 퍼블리싱을 필요로 하고 있는지를 지시한다. 데이터베이스(106)에 의해 저장되는 대응하는 속성(108)이 다를 수 있도록, 속성(108)이 데이터베이스(104)에 기록되거나 데이테베이스(104) 내에서 수정될 때, 플래그(114)가 설정된다. 노드(102-1)는 하나 이상의 속성(108)을 수정할 수 있어, 각각의 수정되는 속성(108)에 대해 플래그(114)를 설정한다. 그런 다음, 노드(102-1)는 그것의 연계된 데이터베이스(104)에 "퍼블리시(publish)" 메서드를 호출하여, 플래그(114)가 설정된 데이터베이스(104) 내에 저장된 모든 속성(108)을 노드(102-2)와 같은 서브스크라이빙 노드(102)로 퍼블리싱할 수 있다. 속성(108)이 퍼블리싱된 후에, 플래그(114)는 데이터베이스(104)에서 해제된다. 플래그(114)는 각각의 서브스크라이빙 노드(102)에 1 비트를 구비하는 필드(field)일 수 있다.
도 1에 도시된 바와 같이, 데이터베이스(104)는 또한 당해 데이터베이스(104) 내에 저장된 하나 이상의 속성(108)을 서브스크라이빙한 노드(102) 및 그에 연계된 데이터베이스들의 목록인 서브스크라이버 리스트(116)를 포함하고 있다. 몇몇의 실시형태에 따라, 데이터베이스(104)는 그것의 저장 속성(108)을 광고한다. 이러한 실시형태에서는, 데이터베이스(104)는 모든 연결된 노드(102)에 속성(108) 및 그것이 저장하고 있는 데이터를 나타내는 신호를 주기적으로 전송하여, 노드(102-2)와 같은 다른 노드들이 데이터베이스(04)에 저장된 하나 이상의 속성(108)에 완전히 또는 부분적으로 서브스크라이빙해야 하는 지를 결정할 수 있다. 예를 들어, 데이터베이스(104)는 서브스크라이빙 노드(102)와의 초기 연결 시에 또는 당해 데이터베이스(104)가 기동할 때 광고 메시지를 전송할 수 있다. 그와 동시에, 데이터베이스(106)는 당해 데이터베이스(106)가 필요로 하는 데이터를 저장하고 있는 연계된 데이터베이스를 가진 노드를 식별하려고 시도하는 탐색 메시지를 주기적으로 전송한다. 예를 들어, 데이터베이스(106)는 데이터베이스(104)를 가진 퍼블리싱 노드(102-1)와의 초기 연결 시에 또는 당해 데이터베이스(106)가 기동할 때 탐색 메시지를 전송할 수 있다. 데이터베이스(104)가 탐색 메시지를 수신하거나, 데이터베이스(106)가 광고 신호를 수신할 때, 데이터베이스(104)와 데이터베이스(106)는 접속을 형성할 것이다. 탐색 메시지를 수신했을 때, 데이터베이스(104)는 데이터베이스(106)에 탐색 응답 신호를 전송할 것이다. 광고 신호 또는 탐색 응답 신호를 수신했을 때, 데이터베이스(106)는 데이터베이스(104)에 서브스크라입 메시지를 전송하여, 2개의 노드의 접속과, 노드(102-1)와 연계된 데이터베이스(104) 내에 저장된 하나 이상의 속성(108)에 대한 노드(102-2)와 연계된 데이터베이스(106)의 서브스크립션을 형성할 것이다. 그 후, 노드(102-2)가 서브스크라이버 리스트(116)에 추가된다.
노드(102-2) 및 그것의 연계된 데이터베이스(106)는 데이터베이스(104) 내에 저장된 모든 속성(108)을 서브스크라이빙하거나 특정 속성만 서브스크라이빙할 수 있다. 각각의 노드(102)는 서브스크라이빙되는 노드를 고유하게 식별하기 위해 서브스크라이버 리스트(116) 내에 저장된 고유 식별자를 가질 수 있다. 어떤 노드(102)가 데이터베이스(104) 내에 저장된 속성(108)을 서브스크라이빙할 때, 그 노드는 각각의 서브스크라이빙된 속성(108)에 대한 플래그를 할당받게 되어, 서브스크라이빙된 속성이 수정될 때 플래그(114)가 설정될 것이다. 노드(102)가 처음으로 서버 데이터베이스(104)를 서브스크라이빙할 때, 서브스크라이빙되는 모든 속성(108)은 플래그(114)를 설정시킬 것이다. 그러면, 노드(102-2)와 같은 서브스크라이빙 노드 및 그것의 연계된 데이터베이스(106)는 플래그(114)를 설정한 모든 속성(108)을 수신할 준비가 되었다는 것을 지시하는 응답 메시지를 데이터베이스(104)에 전송할 수 있다. 데이터베이스(104)가 노드(102-2)와 같은 서브스크라이빙 노드 및 그것의 연계된 데이터베이스(106)로부터 응답 메시지를 기다리는 동안, 데이터베이스(104)는 서브스크라이빙되는 속성(108)에 대한 임의의 추가적인 변경이나 수정을 집계하고, 그에 따라 플래그(114)를 설정할 것이다. 응답 메시지를 수신한 후, 데이터베이스(104)는 플래그(114)를 설정한 속성들을 퍼블리싱한 다음 플래그(114)를 해제할 것이다. 속성(108)이 수신된 후, 속성들은 오류가 확인되고, 오류가 없다면, 서브스크라이빙 노드의 데이터베이스는 데이터베이스(104)에 확인응답 메시지를 전송한다. 데이터베이스(104)가 확인응답 메시지를 기다리는 동안 수정되는 임의의 서브스크라이빙되는 속성(108)은 확인응답 메시지를 수신한 후에 서브스크라이빙 노드의 데이터베이스로 퍼블리싱될 것이다. 수신 노드의 데이터베이스가 수신된 속성(108)이 오류를 포함하고 있다고 판정하면, 그 데이터베이스는 오류 상태를 입력하고, 데이터베이스(104)가 서브스크라이빙되는 속성들을 재전송하도록 요청할 것이다. 이하에 속성(108)을 퍼블리싱하는 방법을 도 4와 관련하여 진술한다.
노드(102-2)가 노드(102-1)에 위치한 데이터베이스(104) 내에 저장된 속성(108)을 서브스크라이빙하기 위한 동기화 데이터베이스의 클라이언트 인스턴스를 실행시키는 것과 마찬가지로, 노드(102-3 내지 102-N)도 노드(102-2)에 위치한 동기화 데이터베이스 내의 속성들을 서브스크라이빙하기 위한 동기화 데이터베이스의 클라이언트 인스턴스를 실행시킬 수 있다.
몇몇의 실시형태에 따라, 동기화 데이터베이스 인스턴스는 수신된 속성들을 다운스트림 노드들로 리퍼블리싱하기 위해 클라이언트와 서버의 양자 모두로서 기능할 수 있도록 더블 버퍼링(double buffering)될 수 있다. 예를 들어, 노드(102-2)는 노드(102-1)의 데이터베이스(104) 내에 저장된 속성들을 서브스크라이빙하기 위한 동기화 데이터베이스의 클라이언트 인스턴스를 실행시킬 수 있다. 다수의 동기화 패킷(도 2를 참조하여 이하에 설명됨)을 스패닝할 수 있는, 데이터베이스(104)로부터 수신된 속성들(업데이트된 상태)은 노드(102-2)에서 제1 인액티브/"백그라운드" 버퍼(inactive/"background" buffer)에 저장된다. 그와 동시에, 노드(102-2)에서 제2 액티브/"포그라운드" 버퍼(active/"foreground" buffer)에 저장된 동일한 속성들(현 상태)이 서브스크라이빙 노드(102-3 내지 102-N)로 퍼블리싱될 수 있다. 노드(102-1, 102-2) 사이의 동기화 업데이트가 완료될 때, 백그라운드 버퍼 및 포그라운드 버퍼는 새로운 포그라운드 버퍼가 노드(102-1)로부터 수신된 가장 최근의 속성들을 가지도록 스와핑된다. 그런 다음, 노드(102-2)에서 업데이트된 포그라운드 버퍼 내에 유지된 속성(108)이 다운스트림 노드(102-3 내지 102-N)를 업데이트하는 데 이용된다. 노드(102-2)는 노드(102-1)로부터 백그라운드 퍼버프로 수신되어 포그라운드 버퍼에 스와핑된 속성(108)을, 노드(102-2)로부터 속성들을 수신하도록 서브스크라이빙한 임의의 노드(102-3 내지 102-N)로 리퍼블리싱한다. 설명되는 예에서는, 클라이언트 인스턴스가 설명한 바와 같이 속성(108)을 리퍼블리싱할 수 있기 때문에, 노드(102-2)는 노드(102-1)로부터 수신된 속성을 노드(102-3 내지 102-N)로 퍼블리싱하기 위한 서버 인스턴스를 실행할 필요는 없다. 하지만, 노드(102-2)는 도 3을 참조하여 이하에 설명되는 바와 같이, 동기화 데이터베이스의 서버 인스턴스와 클라이언트 인스턴스의 양자 모두를 실행시킬 수 있다.
또한, 노드(102-2)가 수신된 속성들을 다운스트림 노드들로 리퍼블리싱하기 위해 더블 버퍼링되는 것으로서 설명되고 있지만, 임의의 노드(102)는, 설령 당해 노드가 수신된 속성들을 다운스트림 노드들로 리퍼블리싱하지 않더라도, 더블 버퍼링되는 것으로부터의 이점을 가질 수 있다. 예를 들어, 노드(102-3)와 같은 서브스크라이빙 노드는 노드(102-2)와 같은 퍼블리싱 노드로부터 도 2를 참조하여 이하에 더 설명될 동기화 패킷으로 수정된 속성들을 수신할 수 있다. 이러한 동기화 패킷들은 노드(102-3)에 수신되어, 수신될 때 백그라운드 버퍼에 저장될 것이다. 일단 노드(102-3)가 특정 동기화 작업을 위한 동기화 패킷들을 수신하면, 백그라운드 버퍼는 포그라운드 버퍼와 스와핑하여, 노드(102-3)에 집계된 트랜잭션(transaction)의 아토믹 뷰(atomic view)를 제공하고, 노드(102-3)가 막 스와핑을 마친 포그라운드 버퍼 내에 저장될 추가적인 동기화 패킷을 수신하는 것을 가능하게 해줄 것이며, 막 스와핑을 마친 포그라운드 버퍼는 이제 백그라운드 버프로서 기능한다.
몇몇의 실시형태에 따라, 데이터베이스(104)를 가진 노드(102-1)와 같은 퍼블리싱 노드는 그것의 속성(108)을 서브스크라이빙하는, 데이터베이스(106)를 가진 노드(102-2)와 같은 노드(102)에 하트비트 신호(heartbeat signal)를 전송할 수 있다. 하트비트 신호는 속성이 없는 동기화 패킷들을 가진 동기화 업데이트 신호일 수 있다. 몇몇의 실시형태에 따라, 하트비트 신호는 속성 동기화 후에 퍼블리싱 노드(102-1)로부터 주기적으로 전송될 수 있고, 이 주기적 전송은 각각의 속성 동기화 후에 재설정된다. 하트비트 신호를 수신할 때, 데이터베이스(106)는 이 하트비트 신호를 동기화 신호로 보고, 그 신호가 마치 업데이트되는 속성들에 포함되는 것처럼 응답 메시지를 전송할 것이다. 클라이언트 데이터베이스(106)를 가진 노드(102-2)와 같은 서브스크라이빙 노드는 이러한 하트비트 신호를 주기적으로 수신하여, 데이터베이스(104)가 온라인 상태인지를 인식할 것이며, 데이터베이스(106)는 서브스크라이빙한 속성들의 업데이트된 속성들을 수신할 것이다. 서브스크라이빙 노드가 주기적인 하트비트 신호 수신을 중지하면, 노드(102-1)의 데이터베이스(104)가 오프라인 상태이고 업데이트된 속성들을 제공하고 있지 않다는 것을 인식할 것이다. 그런 다음, 데이터베이스(106)는 퍼블리싱 노드로부터 전송된 광고 메시지를 분석하기 시작할 수 있고, 서버 노드에 탐색 메시지를 발부할 수 있고, 소정의 속성들을 가진 퍼블리싱 노드를 서브스크라이빙할 수 있다. 몇몇의 실시형태들에 있어서, 예를 들어 퍼블리싱 노드와 서브스크라이빙 노드 사이의 통신 단절 후에, 노드(102-2)의 데이터베이스(106)는 소정의 속성들을 수신하도록 노드(102-1)의 데이터베이스(104)를 리서브스크라이빙할 수 있다.
수신되는 응답 메시지의 결여로 인해, 퍼브리싱 노드가 서브스크라이빙 노드 및/또는 그것의 연계된 데이터베이스를 "데드(dead)" 상태인 것으로 간주하기에 충분한 소정의 기간 동안, 서브스크라이빙 노드(102)의 데이터베이스가 오프라인 상태가 되면, 퍼블리싱 노드의 데이터베이스는 그것의 서브스크라이버 리스트에서 그 서브스크라이빙 노드 및 그것의 연계된 데이터베이스를 제거할 수 있다. 일단 그 서브스크라이빙 노드가 온라인 상태로 복귀하면, 그 서브스트라이빙 노드는 그것이 이전에 했던 것과 동일한 방식으로 퍼블리싱 노드의 데이터베이스 내에 저장된 하나 이상의 속성을 리서브스크라이빙할 수 있다. 다시 말해, 리서브스크라이빙하는 노드(102)는 그것의 연계된 데이터베이스에서 가용한 속성(108) 및 데이터를 지시하는, 퍼블리싱 노드로부터 전송된 광고 메시지를 수신하거나 또는 그것이 서브스크라이빙하기를 원하는 속성들을 지시하는 탐색 메시지를 전송할 것이며, 그런 다음 퍼블리싱 노드의 데이터베이스 내에 저장된 하나 이상의 속성(108)을 서브스크라이빙할 것이다. 그러면, 퍼벌리싱 노드의 데이터베이스는 당해 리서브스크라이빙 노드를 다시 그것의 서브스크라이버 리스트(116)에 추가할 것이며, 지시된 속성(108)의 각각에 대해 플래그(114)를 설정할 것이다. 리서브스크라이빙 노드의 데이터베이스로부터 발부된 초기 "동기화 응답(sync-reply)"을 수신했을 때, 퍼블리싱 노드의 데이터베이스는 플래그(114)가 설정된 속성들을 퍼블리싱할 것이다. 그런 다음, 리서브스크라이빙되는 노드(102)의 데이터베이스는 그것의 서브스크라이빙되는 속성(108)에 대한 임의의 장차의 수정을 수신할 것이다.
도 2는 몇몇의 실시형태에 따른, 동기화 패킷을 설명하는 다이어그램이다. 퍼블리싱 노드의 데이터베이스가 서브스크라이빙 노드(102)로 속성(108)을 퍼블리싱할 때, 속성(108)은 동기화 패킷(200)으로서 전송된다. 동기화 패킷(200)은 패킷 헤더(202) 및 패킷 바디(204)를 포함하고 있다. 패킷 바디(204)는 동기화 헤더(206) 및 동기화 페이로드(payload)(208)에 동기화될 속성(108)을 포함하고 있다. 동기화될 각각의 속성(108)은 속성 헤더(210) 및 속성 페이로드(212)를 포함할 수 있다. 몇몇의 실시형태에 따라, 동기화 헤더(206)는 동기화 상태(재설정, 시작, 계속 및 종료), 동일한 퍼블리싱 이벤트에서 퍼블리싱되는 속성들의 그룹과 연계된 일련 번호 및 패킷 카운트를 포함할 수 있다. 속성 헤더(210)는 속성 태그(110), 속성의 최종 수정의 타임 스탬프 및 속성 헤더(210)에 후속하는 속성 페이로드(212)의 길이를 포함할 수 있다. 몇몇의 실시형태에 따라, 속성 헤더(210)는 또한 속성 페이로드가 다수의 동기화 패킷(200)에 걸쳐 분리되고 전달될 수 있게 해주는 오프셋(offset)을 포함할 수도 있다.
몇몇의 실시형태에 따라, 도 1에 도시된 데이터베이스(104)와 같은 퍼블리싱 노드의 데이터베이스는 플래그(114)를 설정한 속성(108)을 식별하고, 이러한 속성들을 데이터베이스(106)와 같은 서브스크라이빙 노드의 데이터베이스로 퍼블리싱하기 위해 준비할 것이다. 그런 다음, 퍼블리싱 노드의 데이터베이스는 속성(108)을 동기화 패킷(200)으로 구성할 수 있으며, 여기서 제1 패킷은 동기화 헤더(206)에서 "시작(start)"으로 지시될 것이고, 후속하는 패킷들은 동기화 헤더(206)에서 "계속(continue)"으로 지시될 것이며, 최종 패킷은 동기화 헤더(206)에서 "종료(end)"로 지시될 것이다. 몇몇의 실시형태에 따라, 단지 2개의 동기화 패킷이 구성될 경우에는, 2개의 동기화 패킷은 각각 동기화 헤더(206)에 "시작(start)" 및 "종료(end)"로 지시될 것이다. 단지 하나의 동기화 패킷(200)이 구성될 경우에는, 하나의 동기화 패킷은 동기화 헤더(206)에 "종료(end)"로 지시될 것이다. 일단, 동기화 패킷(200)이 구성되면, 동기화 패킷은 다음으로 퍼블리싱 노드의 데이터베이스에 의해 전송되고, 서브스크라이빙 노드의 데이터베이스에 의해 수신된다. 각각의 동기화 패킷(200)이 서브스크라이빙 노드의 데이터베이스에 의해 수신될 때, 속성(108)은 언패킹되어 데이터베이스 내에 기록될 것이다. 일단 서브스크라이빙 노드의 데이터베이스가 "종료(end)" 지정을 가진 동기화 헤더(206)를 처리하면, 확인응답 메시지가 퍼블리싱 노드로 전송된다. 그런 다음, 몇몇의 실시형태에 따라, 서브스크라이빙 노드는 퍼블리싱 노드로서 기능하여, 그것의 서브스크라이빙되는 노드(102)로 속성들을 퍼블리싱한다.
도 3은 몇몇의 실시형태에 따른, 다수의 동기화 데이터베이스 인스턴스가 노드(102)에서 실행되는 시스템을 설명하는 다이어그램이다. 도 3에 도시된 바와 같이, 각각의 노드(102)는 다수의 동기화 데이터베이스 인스턴스를 실행할 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 노드(102-1)는 (i) 서브스크라이빙 노드(102-2) 및 연계된 데이터베이스(106)에 속성들을 퍼블리싱하는 동기화 데이터베이스(104)의 서버 인스턴스, 및 (ii) 노드(304) 및 그것의 연계된 데이터베이스(306)를 서브스크라이빙하는 동기화 데이터베이스(302)의 클라이언트 인스턴스의 양자 모두를 실행하고 있다. 결론적으로, 데이터베이스(302)는 서브스크라이버 리스트(316)에 기재된 것으로서, 데이터베이스(306) 내의 속성(308)을 서브스크라이빙하고, 데이터베이스(302)는 속성(308)이 데이터베이스(306) 내에 기록되거나 수정될 때 속성(308)을 수신할 것이다. 그와 동시에, 데이터베이스(104)는 기록되거나 수정된 속성(108)을 서브스크라이빙하는 노드(102-2)의 데이터베이스(106)에 그리고 그와 같이 서브스크라이빙되는 경우에 추가적으로 연결되는 노드(310-1 내지 310-N)에 퍼블리싱할 것이다. 각각의 노드(102, 304, 및 310)는 서브스크라이빙 노드와 퍼블리싱 노드의 양자 모두가 될 수 있도록 동기화 데이터베이스의 다수의 인스턴스들을 운영할 수 있다. 그리고, 몇몇의 실시형태에 따라, 단일의 노드에서 실행되는 데이터베이스들 중의 하나 이상은 상술한 바와 같이 더블 버퍼링될 수 있다.
따라서, 단일의 노드가 퍼블리싱 노드와 서브스크라이빙 노드의 양자 모두일 수 있으며, 이러한 퍼블리싱 기능과 서브스크라이빙 기능은 단일의 속성 데이터 동기화 데이터베이스와 함께 또는 다수의 속성 데이터 동기화 데이터베이스와 함께 실행될 수 있다. 단일의 노드가 제1 세트의 속성들을 대응하는 제1 세트의 하나 이상의 서브스크라이빙 노드들에 그리고 제2 세트의 속성들을 대응하는 제2 세트의 하나 이상의 서브스크라이빙 노드들에 퍼블리싱할 수 있다. 마찬가지로, 단일의 노드가 제1 퍼블리싱 노드로부터 제1 세트의 속성들을 그리고 제2 퍼블리싱 노드로부터 제2 세트의 속성들을 서브스크라이빙할 수 있다. 그리고, 하트비트 신호와 같은 상술한 다양한 특징들이 다양한 동기화 데이터베이스들의 하나 이상의 특징일 수 있다. 또한, 몇몇의 실시형태에 따라, 한 세트의 상호연결된 노드들은 속성 업데이트를 단지 단일의 "다운스트림" 방향으로가 아닌 양방향으로 실행할 수 있다는 것을 알 수 있다.
도 4a 및 4b는 몇몇의 실시형태에 따른, 퍼블리싱 노드와 서브스크라이빙 노드 사이에서 속성들을 동기화시키기 위한 방법을 설명하는 플로우차트이다. 구체적으로, 도 4a는 노드(102-1)의 데이터베이스(104)에 의해 실행되는 동작들을 설명하고 있고, 도 4b는 노드(102-2)의 데이터베이스(106)에 의해 실행되는 동작들을 설명하고 있다. 설명을 위해, 도 4a 및 4b에 도시된 방법은 도 1-3을 참조하여 설명될 것이다. 도 4a 및 4b에 도시된 방법은 로봇 시스템의 메모리나 노드(102)와 연계된 메모리 내에 포함된 명령어에 포함될 수 있으며, 로봇 시스템에 포함되거나 노드(102)와 연계된 하나 이상의 프로세서에 의해 실행될 수 있다.
도 4a 및 4b에 도시된 바와 같이, 동기화 데이터베이스(104)의 서버 인스턴스를 가진 퍼블리싱 노드(102-1)가 광고 메시지를 주기적으로 전송하고(401), 당해 노드에서 실행되는 동기화 데이터베이스(106)의 클라이언트 인스턴스를 가진 노드(102-2)와 같은 서브스크라이빙 노드(102)가 탐색 메시지를 주기적으로 전송한다(402). 예를 들어, 데이터베이스(104) 및 클라이언트 데이터베이스(106)는 각각, 데이터베이스(104)를 가진 퍼블리싱 노드(102-1)와 데이터베이스(106)를 가진 서브스크라이빙 노드(102) 사이의 초기 연결 시에 또는 데이터베이스(104 및 106)가 기동할 때, 광고 메시지 및 탐색 메시지를 전송한달 수 있다. 몇몇의 실시형태에 따라, 광고 메시지는 데이터베이스(104) 내에 저장된 속성(108)에 관한 정보를 포함할 수 있다. 탐색 메시지는 서브스크라이빙 노드(102-2)의 데이터베이스(106)가 필요로 하는 속성(108)을 지시할 수 있다. 노드(102-1)의 데이터베이스(104)가 노드(102-2)로부터 탐색 메시지를 수신할 때, 노드(102-1)의 데이터베이스(104)는 서브스크라이빙 노드에 탐색 응답 메시지를 전송할 것이다(404). 서브스크라이빙 노드(102-2)가 퍼블리싱 노드로부터 광고 메시지를 수신하거나(405), 퍼블리싱 노드로부터 탐색 응답 메시지를 수신(406)할 때, 서버 탐색완료 콜백(callback)(407)이 서브스크라이빙 노드(102-2)의 데이터베이스(106)에 의해 발생되어, 퍼블리싱 노드(102-1)가 탐색되었다는 것을 서브스크라이빙 노드에 알릴 것이다. 그런 다음, 서브스크라이빙 노드(102-2)는 서브스크라이버 추가 메시지를 퍼블리싱 노드(102-1)에 전송할 것이다(408). 몇몇의 실시형태에 따라, 서브스크라이버 추가 메시지는 서브스크라이빙 노드(102-2)가 어느 속성을 서브스크라이빙하기를 원하는 지를 지시할 수 있다. 퍼블리싱 노드(102-1)가 서브스크라이빙 노드(102-2)로부터 서브스크라이버 추가 메시지를 수신할 때, 퍼블리싱 노드(102-1)의 데이터베이스(104)는 노드(102-2)를 서브스크라이버로서 추가하고(409), 그것을 서브스크라이버 리스트(116)에 추가할 것이다. 서브스크라이빙 노드(102-2)를 서브스크라이버로서 추가하는 것은 또한 서브스크라이버가 추가되었음을 퍼블리싱 노드(102-1)에 알리는 서브스크라이버 추가완료 콜백(410)을 발생시킬 것이다. 일단 서브스크라이빙 노드(102-2)가 서브스크라이버로서 퍼블리싱 노드(102-1)의 데이터베이스(104)에 추가되면, 데이터베이스(104)는 모든 서브스크라이빙되는 속성에 대해 플래그(114)를 설정하고(411), 서브스크라이빙 노드(102-2)로부터 동기화 응답 메시지를 기다릴 것이다(412). 데이터베이스(104)가 서브스크라이빙 노드(102-2)로부터 동기화 응답 메시지를 기다리는 동안, 동기화 응답 메시지가 수신될 때까지, 속성(108)에 대한 수정들이 데이터베이스(104)에서 집계된다. 따라서, 데이터베이스(106)가 그것이 수용할 수 있는 일정 양의 정보만을 수신하도록, 서브스크라이빙 노드(102-2)의 데이터베이스(106)에 전송되는 정보의 빌트인 스로틀링(built-in throttling)이 존재한다.
다시 도 4a 및 4b를 참조하면, 서브스크라이빙 노드(102-2)는 동기화 응답 메시지를 전송(413)한 후, 서브스크라이빙 노드(102-2)는 퍼브리싱 노드(102-1)에 의해 전송될 동기화 패킷을 기다릴 것이다(414). 일단 퍼블리싱 노드(102-1)가 서브스크라이빙 노드(102-2)로부터 동기화 응답 메시지를 수신하면, 퍼블리싱 노드(102-1)의 데이터베이스(104)는 서브스크라이빙 노드(102-2)에 서브스크라이빙되는 임의의 속성이 플래그(114)를 설정하였는지를 판정할 것이다. 퍼블리싱 노드(102-1)의 데이터베이스(104)가 하나 이상의 속성에 대해 클라이언트 데이터베이스(106)를 서브스크라이버로서 막 추가하였다면, 모든 속성(108)에 대한 플래그(114)가 설정될 것이다. 퍼블리싱 노드(102-1)의 데이터베이스(104)가 하나 이상의 속성에 대해 클라이언트 데이터베이스(106)를 서브스크라이버로서 추가하지 못했다면, 속성(108)에 대한 플래그(114)는 속성(108)이 수정될 때 설정될 것이며, 이를 데이터베이스(104)는 속성 수정 콜(modify-attribute call)이 퍼블리싱 애플리케이션으로부터 수신될 때 처리할 것이다(416). 어떠한 속성(108)도 플래그(114)를 설정하지 않았다면, 데이터베이스(104)는 아이들 상태(idle state)를 입력하고, 서버 애플리케이션으로부터 퍼블리싱 콜을 기다릴 것이다(417). 데이터베이스(104)가 플래그(114)를 설정한 속성(108)이 여전히 존재한다고 판정할 경우에 및/또는 데이터베이스(104)가 퍼블리싱 콜을 수신할 때는, 퍼블리싱 노드(102-1)의 데이터베이스(104)는 플래그(114)를 설정한 속성(108)을 포함한 하나 이상의 동기화 패킷(200)을 퍼블리싱하고(419), 모든 퍼블리싱된 속성(108)에 대해 플래그(114)를 해제하고(420), 그런 다음 서브스크라이빙 노드(102-2)로부터 동기화 응답 신호를 기다리도록 진행한다(412). 서브스크라이빙 노드(102-2)의 데이터베이스(106)가 퍼블리싱 노드(102-1)로부터 하나 이상의 동기화 패킷(200)을 수신할 때(421), 데이터베이스(106)는 그 내부에 저장된 속성(108)을 업데이트하고(422), 수신된 매 동기화 패킷마다에 대해 수신된 패킷이 동기화 헤더(206)에 "종료(end)"로 지시된 최종 패킷인지를 확인한다(423). 서브스크라이빙 노드(102-2)의 데이터베이스(106)가 수신된 동기화 패킷(200)이 최종 패킷이 아니라고 판정하면, 계속해서 퍼블리싱 노드(102-1)의 데이터베이스(104)로부터 추가적인 동기화 패킷(200)을 기다린다(414). 수신된 동기화 패킷(200)이 최종 패킷이면, 서브스크라이빙 노드(102-2)의 데이터베이스(106)는 클라이언트 업데이트 콜백을 발생시키고(424), 이는 퍼블리싱 노드(102-1)에 동기화 응답 메시지를 전송하고(413), 노드(102- 3 내지 102-N)와 같은 임의의 다운스트림 서브스크라이버에 업데이트된 속성(108)을 리퍼블리싱할 것이다(425). 도 4a 및 4b에 도시되진 않았지만, 단계 421과 422 사이에서, 클라이언트 데이터베이스는 수신된 동기화 패킷(200)에 대한 오류 검출을 실행할 수 있다. 이하에, 오류 검출 방법의 한 예가 도 5와 관련하여 설명된다.
도 5는 몇몇의 실시형태에 따른, 오류 검출 방법을 설명하는 플로우차트이다. 설명을 위해, 도 5에 도시된 방법은 도 1-3을 참조하여 설명될 것이다. 도 5에 도시된 방법은 로봇 시스템의 메모리나 노드(102)와 연계된 메모리 내에 포함된 명령어 내에 포함될 수 있으며, 로봇 시스템에 포함되거나 노드(102)와 연계된 하나 이상의 프로세서에 의해 실행될 수 있다.
도 5에 도시된 바와 같이, 노드(102-1)와 같은 퍼블리싱 노드로부터 동기화 패킷(200)을 수신한 후, 노드(102-2)와 같은 서브스크라이빙 노드는 오류에 대해 동기화 패킷(200)을 스캔할 것이다(502). 어떠한 오류도 동기화 패킷(200)에서 발견되지 않으면, 서브스크라이빙 노드(102-2)의 데이터베이스(106)는 속성들이 언패킹되어 데이터베이스(106) 내에 기록되도록 동기화 패킷(200)을 통상적으로 처리할 것이다(504). 오류가 검출되면, 오류 신호가 서브스크라이빙 노드(102-2)에 의해 퍼블리싱 노드(102-1)로 전송될 것이다(506). 그런 다음, 서브스크라이빙 노드(102-2)는 오류 상태로 돌입할 것이며, 이 오류 상태에서는 "시작(start)", "계속(continue)" 또는 "종료(end)" 지시를 갖는 동기화 헤더(206)를 가진 임의의 추가적으로 수신된 동기화 패킷(200)은 폐기될 것이다(508). 일단 퍼블리싱 노드(102-1)가 오류 신호를 수신하면, 데이터베이스(104)는 서브스크라이빙 노드(102-2)가 서브스크라이빙하는 모든 속성들에 대해 플래그(114)를 설정할 것이다(510). 그런 다음, 퍼블리싱 노드(102-1)는 "재설정(reset)" 지시를 갖는 동기화 헤더(206)를 가진 동기화 패킷(200)일 수 있는 재설정 메시지를 서브스크라이빙 노드(102-2)로 전송한다(512). 몇몇의 실시형태에 따라, 재설정 메시지는 어떠한 페이로드도 포함하지 않을 수 있으며, 서브스크라이빙 노드(102-2)의 데이터베이스(106)에 의해 수신되는 속성들의 예상 시퀀스를 재설정하도록 기능할 것이다. 그런 다음, 퍼블리싱 노드(102-1)는 플래그가 설정된 속성들을 포함한 동기화 패킷(200)을 서브스크라이빙 노드(102-2)로 전송하고(514), 서브스크라이빙 노드(102-2)의 데이터베이스(106)는 다시 오류에 대해 동기화 패킷(220)을 스캔할 것이다(502). 몇몇의 실시형태에 따라, 또 다른 오류가 발견되면, 또 다른 오류 신호가 전송될 것이고, 단계 506-514가 다시 실행될 것이다. 추가적인 몇몇의 실시형태에 따라, 퍼블리싱 노드(102-1)의 데이터베이스(104)는 동기화 패킷(200)을 서브스크라이빙 노드(102-2)로 성공적으로 전송하기 위한 시도의 횟수를 계수하는 카운터를 포함할 수 있으며, 카운터가 소정의 횟수에 도달하면 전송을 중단할 것이다. 그런 다음, 데이터베이스(104)는 오류가 발생하였다는 것을 기록하고, 데이터베이스(104)가 안전을 위한 동작을 취하거나 타임아웃 콜백(timeout callback) 시에 오류를 정정하게 해주는 타임아웃을 발생시킬 수 있다. 카운터는 퍼블리싱 노드(102-1)가 서브스크라이빙 노드(102-2)로부터 성공적인 전송을 지시하는 확인응답 메시지를 수신할 때 재설정될 수 있다.
도 1-5에 설명되는 실시형태들은 로봇 시스템에서 최소의 시스템 트랙픽 및 지연을 가지면서 로봇 시스템의 노드들을 동기화시키는 데 사용될 수 있다. 몇몇의 실시형태는 또한 로봇 보조 수술 시스템에서 최소의 시스템 트래픽 및 지연을 가지면서 노드들을 동기화시켜, 시스템을 신뢰성 있게 만들고, 외과의의 동작에 대해 거의 실시간 응답성(예컨대, 외과의가 시스템 구성요소를 운동 또는 작용시키도록 명령하는 것과 실제 모션 또는 작용 사이에 어떠한 지연도 가지지 않는 응답성)을 제공하기 위해 로봇 보조 수술 시스템의 노드들을 동기화시키는 데 사용될 수 있다. 이하에 시스템(100)의 사용의 예들이 도 6-9를 참조하여 설명된다.
도 6은 로봇 시스템에 사용되는 시스템(100)의 한 예이다. 도 6에 도시된 바와 같이, 로봇 시스템(600)은 제2 유닛 컨트롤러(604)에 연결된 제1 유닛 컨트롤러(602)를 포함하고 있다. 각각의 유닛 컨트롤러(602, 604)는 도시된 바와 같이 서브시스템 수퍼바이저(subsystem supervisor)(606, 608)에 각각 연결되어 있다. 서브시스템 수퍼바이저(606)는 복수의 기계식 매니퓰레이터(612-1 내지 612-N)에 연결된 디스패처(dispatcher)(610)를 포함하고 있다. 서브시스템 수퍼바이저(608)는 복수의 기계식 매니퓰레이터(616-1 내지 616-N)에 연결된 디스패처(614)를 포함하고 있다. 몇몇의 실시형태에 따라, 각각의 유닛 컨트롤러, 디스패처 및 매니퓰레이터는 도 1 및 3과 관련하여 상술한 노드(102-1 내지 102-N)에 대응될 수 있다. 또한, 각각의 매니퓰레이터는 로봇 시스템(600)의 각종 기계 부품(예컨대, 일련의 기구학적 체인 내의 각종 링크, 각종 액추에이터, 각종 센서, 각종 시스템 서브그룹 등)에 대응될 수 있다.
몇몇의 실시형태에 따라, 디스패처(610)는 각각의 매니퓰레이터(612-1 내지 612-N)에 대해 그리고 유닛 컨트롤러(602)에 대해 서브스크라이빙 노드로서 기능한다. 즉, 디스패처(610)는 각각의 매니퓰레이터(612-1 내지 612-N) 및 유닛 컨트롤러(602)에 대해 동기화 데이터베이스의 클라이언트 인스턴스를 실행하여, 디스패처(610)는 유닛 컨트롤러(602)로부터 가용한 특정 속성들을 서브스크라이빙하고 각각의 매니퓰레이터(612-1 내지 612-N)로부터 가용한 특정 속성들을 서브스크라이빙하며, 유닛 컨트롤러(602)와 각각의 매니퓰레이터(612-1 내지 612-N)의 양자 모두가 당해 디스패처(610)에 대해 퍼블리싱 노드로서 기능한다. 그런 다음, 디스패처(610)는 유닛 컨트롤러(602)로부터의 속성들을 매니퓰레이터(612-1 내지 612-N)로 리퍼블리싱하고, 매니퓰레이터(612-1 내지 612-N)로부터의 속성들을 유닛 컨트롤러(602)로 리퍼블리싱할 수 있다. 유사한 기능성을 사용하여, 디스패처(610)는 다른 매니퓰레이터(612-1 내지 612-N) 사이에서 퍼블리셔/서브스크라이버로서 기능할 수 있어, 디스패처(610)는 매니퓰레이터(612-1 내지 612-N) 사이에서 속성들을 동기화시킬 수 있다. 또한, 새로운 매니퓰레이터(612)가 추가될 때, 그것이 서브스크라이빙 노드로서 기능하도록 동기화 데이터베이스의 클라이언트 인스턴스를 실행시킬 수 있을 것이고, 그것이 즉각적으로 소정의 속성들을 서브스크라이빙할 것이며, 그런 다음 소정의 속성들이 디스패처(610)에 의해 추가된 매니퓰레이터로 퍼블리싱될 것이므로, 새로운 매니퓰레이터에 가장 최신 상태의 소정의 속성들을 제공하기 때문에, 매니퓰레이터(612-1 내지 612-N)는 시스템(600)에 물리적으로 제거 및 추가되거나 "핫 스와핑(hot-swapping)"될 수 있다. 디스패처(614)는 유닛 컨트롤러(604) 및 매니퓰레이터(616-1 내지 616-N)에 대해 유사한 기능성을 제공한다.
도 7은 몇몇의 실시형태에 따른, 로봇 시스템에 사용되는 시스템(100)의 또 다른 예이다. 도 7에 도시된 바와 같이, 시스템(700)은 하나 이상의 동기화 데이터베이스(704)에 연결된 수퍼바이저 노드(702)를 포함하고 있다. 몇몇의 실시형태에 따라, 수퍼바이저 노드(702)는 수퍼바이저 노드(702)의 상태들을 하나 이상의 동기화 데이터베이스(704)에 전송하고, 하나 이상의 동기화 데이터베이스(704)는 수신된 상태들을 사용자 인터페이스(UI) 노드(706) 및 비디오 서브시스템 노드(708)에 퍼블리싱한다. 이러한 구성에서, 수퍼바이저 노드(702)는 동기화 데이터베이스의 서버 인스턴스를 실행하여 퍼블리싱 노드로서 기능하고, 하나 이상의 동기화 데이터베이스(704)는 동기화 데이터베이스의 클라이언트 인스턴스를 실행하여 수퍼바이저 노드(702)에 대한 서브스크라이빙 노드로서 기능한다. 그런 다음, 하나 이상의 동기화 데이터베이스(704)는 수퍼바이저 노드(702)의 속성들 및 상태들을 UI 노드(706) 및 비디오 서브시스템 노드(708)로 리퍼블리싱한다.
몇몇의 실시형태에 따라, UI 노드(706)는 다음으로 수퍼바이저 노드(702)의 상태들을 UI 노드(706)에 연결된 하나 이상의 컨트롤러(712)에 의해 실행되는 동작(710)으로 해석할 수 있다. 유사하게, 비디오 서브시스템 노드(708)은 수퍼바이저 노드(702)의 상태들을 비디오를 표시하기 위한 명령들로 해석할 수 있다. 도 7에 도시된 바와 같이, 수퍼바이저 노드(702)는 또한 비디오 서브시스템 노드(708)로부터 사용자 인터페이스 이벤트(714)를 수신하기 위해 비디오 서브시스템 노드(708)에 연결되어 있다. 몇몇의 실시형태에 따라, 사용자 인터페이스 이벤트(714)는 수퍼바이저 노드(702)의 상태의 변경을 일으킬 수 있고, 변경된 상태는 플래그가 설정된 다음 상술한 실시형태들에 따라 하나 이상의 동기화 데이터베이스(704)로 퍼블리싱될 것이다. 시스템(700) 내의 상태를 전파하기 위한 동기화 데이터베이스들의 사용은 UI 노드(706) 및 비디오 서브시스템 노드(708)의 양자 모두가 수퍼바이저 노드(702)에 의해 보유되는 상태와 일치하도록 업데이트할 것임을 확실히 해준다. 비디오 서브시스템 노드(708)는 다수의 디스플레이를 추가적으로 구동시킬 수 있으며, 여기서 각각의 디스플레이의 내용이 동기화 데이터베이스를 통해 전파된 상태에 의해 판정된다.
도 8은 몇몇의 실시형태에 따른, 로봇 시스템(800)에 사용되는 시스템(100)의 한 예이다. 로봇 시스템(800)은 트리 구조로 함께 연결된 복수의 노드를 포함하고 있다. 로봇 시스템(800)은 비디오 파이프라인 노드(804) 및 추가적인 컨트롤러 노드(806)에 연결되어 있는 디스플레이 컨트롤러 노드(802)를 포함하고 있다. 비디오 파이프라인 노드(804)는 또 다른 추가적인 컨트롤러 노드(808-1 내지 808-N)에 연결되어 있다. 몇몇의 실시형태에 따라, 로봇 시스템(800)은 시스템(100)과 유사한 시스템을 이용하여 노드들에 걸쳐 데이터를 동기화시킨다. 예를 들어, 비디오 파이프라인 노드(804)는 동기화 데이터베이스의 클라이언트 인스턴스를 실행하여, 각각이 동기화 데이터베이스의 서버 인스턴스를 실행하여 속성들을 퍼블리싱하는 또 다른 추가적인 컨트롤러(808-1 내지 808-N)를 서브스크라이빙한다. 또한, 디스플레이 컨트롤러 노드(802)는 동기화 데이터베이스의 클라이언트 인스턴스를 실행하여, 각각이 동기화 데이터베이스의 서버 인스턴스를 실행하여 속성들을 퍼블리싱하는 비디오 파이프라인 노드(804) 및 추가적인 컨트롤러 노드(806-1 내지 806-N)를 서브스크라이빙한다. 결론적으로, 또 다른 추가적인 컨트롤러 노드(808) 내의 임의의 속성 변경들이 비디오 프로세서 노드(804)로 퍼블리싱될 것이고, 비디오 프로세서 노드(804) 내의 임의의 속성 변경들(또 다른 추가적인 컨트롤러 노드(808)로부터 수신된 속성 변경들 포함) 및 추가적인 컨트롤러 노드(806-1 내지 806-N) 내의 임의의 속성 변경들이 디스플레이 컨트롤러 노드(802)로 퍼블리싱될 것이다. 디스플레이 컨트롤러 노드(802)는 다음으로 하위 노드(804, 806-1 내지 806-N)(또한 804를 통한 808-1 내지 808-N)로부터 수집한 하나 이상의 중요한 "전체적으로 가시적인(globally visible)" 상태를 리퍼블리싱하기 위해 "루트(root)" 서버 데이터베이스를 실행시킨다. 하위 노드(804 및 806-1 내지 806-N)는 이 루트 데이터베이스를 서브스크라이빙하고; 노드(808-1 내지 808-N)는 루트 데이터베이스 컨텐트(content)를 위해 노드(804)를 서브스크라이빙한다. 또한, 트리 구조에 새롭게 추가된 임의의 노드가, 앞서의 실시형태들에서 설명된 바와 같이, 동기화 데이터베이스의 클라이언트 인스턴스를 실행하고, 소정의 속성들을 서브스크라이빙하여, 소정의 속성들의 가장 최근의 상태를 퍼블리싱받을 수 있을 것이다.
도 9는 몇몇의 실시형태에 따른, 로봇 보조 수술 시스템(900)에 사용되는 시스템(100)의 한 예이다. 도 9에 도시된 바와 같이, 시스템(900)은 코어 시스템(904)에 연결된 환자 카트(902)를 포함하고 있고, 코어 시스템(904)은 외과의 콘솔(906)에 연결되어 있다. 몇몇의 실시형태에 따라, 시스템(900)은 미국 캘리포니아주 서니베일 소재의 인튜어티브 서지컬 인코포레이티드(Intuitive Surgical, Inc.)에 의해 상용화된 da VINCI® 수술 시스템에 상당할 수 있어, 환자 카트(902)는 슬레이브 매니퓰레이터 제어 수술용 기구(카메라 기구 포함)를 포함하고 있고, 외과의 콘솔(906)은 슬레이브 매니퓰레이터들을 위한 마스트 제어 장치들을 포함하고 있고, 코어 시스템(904)은 다른 시스템 데이터 처리 구성요소들에 더하여 카메라 및 비젼 시스템 처리 구성요소들을 포함하고 있다. 또한, 환자 카트(902), 코어 시스템(904) 및 외과의 콘솔(906)의 각각은 상술한 실시형태들과 일치하는 하나 이상의 동기화 데이터베이스를 실행할 수 있으며, 시스템(900)의 노드들로서 불려질 수 있다. 또한, 시스템(900)의 노드들의 각각은 추가적인 노드들을 포함할 수 있다. 예를 들어, 환자 카트(902)는 각각이 동기화 데이터베이스의 클라이언트 인스턴스를 실행할 수 있는 하나 이상의 프로세서를 포함할 수 있고, 이러한 하나 이상의 프로세서는, 각각이 동기화 데이터베이스의 서버 인스턴스를 실행하는 연계된 프로세서를 구비하는, 셋업 조인트(910) 및 매니퓰레이터(912)와 같은, 환자 카트(902) 내의 개별 노드들에 의해 퍼블리싱된 속성들을 서브스크라이빙하는 노드(908)로서 불려질 수 있다. 동기화 데이터베이스의 클라이언트 인스턴스를 실행하는 노드(908)는 셋업 조인트(910) 및 매니퓰레이터(912)로부터 퍼블리싱된 속성들을 수신하여, 이 속성들을 동기화 데이터베이스의 클라이언트 인스턴스에 저장한다. 이 속성들은 다음으로 노드(908)에 의해 코어 시스템(904)으로 퍼블리싱될 수 있으며, 여기서 노드(908)는 동기화 데이터베이스의 서버 인스턴스를 실행하고, 코어 시스템(904)은 동기화 데이터베이스의 클라이언트 인스턴스를 실행하게 된다. 마찬가지로, 노드(908)는 코어(904)의 서버 인스턴스로부터 퍼블리싱된 속성들을 서브스크라이빙하기 위해 동기화 데이터베이스의 클라이언트 인스턴스를 실행할 수 있다. 속성들이 시스템(900) 전체에 걸쳐 동기화될 수 있도록, 유사한 구성이 코어(904)와 외과의 콘솔(906) 사이에 제공될 수 있다.
몇몇의 실시형태에 따라, 환자 카트(902)가 시스템(900)의 나머지 부분과 연결해제되면, 환자 카트(902)는 동기화 데이터베이스의 클라이언트 인스턴스를 실행하는 노드(908)가 로봇 매니퓰레이터 셋업 암 조인트(910) 및 매니퓰레이터 클러치(912)로부터 퍼블리싱된 속성들을 수신한 다음 이 속성들을 동기화 데이터베이스의 클라이언트 인스턴스에 저장하게 되는 독립 환경에서 작동할 수 있다. 시스템(900)과의 재연결 시에, 노드(908)는 그것의 저장된 값들을 코어(904)로 퍼블리싱하고, 다음으로 코어(904)는 그것의 저장된 값들을 노드(908)로 퍼블리싱하여, 시스템(900) 전체에 걸친 데이터 속성들이 동기화될 것이다. 시스템의 동기화는 외과의 콘솔(906) 또는 속성 데이터베이스 동기화 기능이 실행되는 임의의 다른 시스템 구성요소의 연결해제 및 이후의 재연결에 대해서도 마찬가지로 작동할 것이다.
적용가능한 곳에서, 본 발명에 의해 제공되는 다양한 실시형태들은 하드웨어, 소프트웨어 또는 하드웨어 및 소프트웨어의 조합을 이용하여 구현될 수 있을 것이다. 또한, 적용가능한 곳에서, 여기에 설명된 다양한 하드웨어 구성요소들 및/또는 소프트웨어 구성요소들은 본 발명의 기술사상에서 벗어남이 없이 소프트웨어, 하드웨어 및/또는 양자 모두를 포함하는 복합 구성요소들에 결합될 수 있을 것이다. 적용가능한 곳에서, 여기에 설명된 다양한 하드웨어 구성요소들 및/또는 소프트웨어 구성요소들은 본 발명의 기술사상에서 벗어남이 없이 소프트웨어, 하드웨어 및/또는 양자 모두를 포함하는 하위 구성요소로 분리될 수 있을 것이다. 또한, 적용가능한 곳에서, 소프트웨어 구성요소들이 하드웨어 구성요소들로 구현될 수 있고 그 반대도 성립할 수 있을 것으로 생각된다.
본 발명에 따라, 프로그램 코드 및/또는 데이터와 같은 소프트웨어는 하나 이상의 컴퓨터 판독가능 매체에 저장될 수 있을 것이다. 또한, 여기서 알아본 소프트웨어는 네트워크 연결된 및/또는 다른 방식의 하나 이상의 다목적 또는 특수 목적 컴퓨터 및/또는 컴퓨터 시스템을 이용하여 구현될 수 있을 것이다. 적용가능한 곳에서, 여기서 설명된 여러 가지 단계들의 순서는 여기에 설명된 특징들을 제공하도록 변경, 복합 단계들로의 결합 및/또는 하위 단계들로의 분할이 이루어질 수 있을 것이다.
여기에 개시된 실시형태들은 최소의 시스템 트래픽 및 최소의 충돌과 간섭을 가지면서 시스템 내의 노드들을 동기화시키기 위한 시스템 및 방법을 제공할 수 있을 것이다. 여기에 개시된 실시형태들은 또한 최소의 지연을 가지면서 노드가 시스템에 대해 용이하게 연결, 연결해제 및 재연결되는 것을 가능하게 해주는 시스템 내의 노드들을 동기화시키기 위한 시스템 및 방법을 제공할 수 있을 것이다. 또한, 여기에 개시된 실시형태들은 또한 최소의 지연을 가지면서 하나의 노드에 위치한 디스플레이가 또 다른 노드에서 복제되는 것을 가능하게 해주는 시스템 내의 노드들을 동기화시키기 위한 시스템 및 방법을 제공할 수 있을 것이다. 상기 제공된 예들은 예시들일 뿐이며, 본 발명을 한정하고자 하는 것은 아니다. 당업자는 본 발명의 범위 내에 속하는 개시된 실시형태들과 궤를 같이하는 다른 시스템들을 용이하게 창안할 수 있을 것이다. 때문에, 본 발명은 후속하는 청구범위에 의해서만 한정된다.

Claims (30)

  1. 로봇 시스템에 있어서,
    상기 로봇 시스템은:
    적어도 하나의 제1 동기화 데이터베이스를 구비하는 퍼블리싱 노드; 및
    적어도 하나의 제2 동기화 데이터베이스를 구비하는 서브스크라이빙 노드;를 포함하고 있고,
    상기 적어도 하나의 제1 동기화 데이터베이스는:
    각각이 속성을 식별하는 태그 및 데이터를 구비하고 있는 복수의 속성들;
    각각의 상기 속성들과 연계된 플래그; 및
    서브스크라이버 리스트;를 포함하고 있고,
    상기 퍼블리싱 노드는, 상기 속성들이 상기 적어도 하나의 제1 동기화 데이터베이스 내에 기록될 때 또는 상기 속성들에 포함된 데이터가 수정될 때, 상기 속성들과 연계된 플래그를 설정하고, 플래그가 설정된 상기 속성들을 상기 서브스크라이빙 노드로 퍼블리싱하도록 구성되어 있고,
    상기 퍼블리싱 노드는 상기 적어도 하나의 제1 동기화 데이터베이스 내에 저장된 상기 속성들을 광고하는 광고 메시지를 전송하도록 구성되어 있고,
    상기 서브스크라이빙 노드는 탐색 메시지를 전송하도록 구성되어 있고,
    상기 서브스크라이빙 노드는 상기 광고 메시지를 수신하고, 상기 서브스크라이빙 노드가 상기 서브스크라이빙 노드에 의해 서브스크라이빙되어야 한다고 판정하는, 상기 적어도 하나의 제1 동기화 데이터베이스 내에 저장된 상기 속성들을 지시하는 서브스크립션 메시지를 전송하도록 구성되어 있고,
    상기 퍼블리싱 노드는, 상기 퍼블리싱 노드가 상기 서브스크립션 메시지를 수신했을 때, 상기 서브스크립션 메시지에 지시된 상기 속성들과 연계된 플래그를 설정하도록 추가로 구성되어 있는 것을 특징으로 하는 로봇 시스템.
  2. 제 1 항에 있어서, 상기 서브스크라이빙 노드는 상기 서브스크라이빙 노드에 추가적으로 연결된 이차적인 서브스크라이빙 노드들을 위한 이차적인 퍼블리싱 노드로서의 역할을 수행하도록 구성되어 있고, 상기 이차적인 퍼블리싱 노드는 상기 이차적인 서브스크라이빙 노드들에 새로운 또는 수정된 속성들을 퍼블리싱하도록 구성되어 있는 것을 특징으로 하는 로봇 시스템.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 제 1 항에 있어서, 상기 퍼블리싱 노드는, 동기화 응답 신호가 상기 서브스크라이빙 노드로부터 수신될 때까지, 상기 서브스크립션 메시지에 지시된 상기 속성들에 대한 수정들을 종합하도록 추가로 구성되어 있는 것을 특징으로 하는 로봇 시스템.
  8. 제 1 항에 있어서, 상기 퍼블리싱 노드는 상기 서브스크라이빙 노드에 하트비트 신호를 전송하도록 추가로 구성되어 있는 것을 특징으로 하는 로봇 시스템.
  9. 제 8 항에 있어서, 상기 퍼블리싱 노드는, 상기 서브스크라이빙 노드가 더이상 상기 퍼블리싱 노드에 연결되어 있지 않다고 판정한 경우, 상기 서브스크라이빙 노드를 상기 서브스크라이버 리스트로부터 제거하도록 추가로 구성되어 있는 것을 특징으로 하는 로봇 시스템.
  10. 제 1 항에 있어서, 상기 퍼블리싱 노드 및 상기 서브스크라이빙 노드는, 로봇 시스템 내의 하나 이상의 프로세서 또는 상기 하나 이상의 프로세서에 의해 실행되는 개별 태스크 중 적어도 하나를 포함하는 것을 특징으로 하는 로봇 시스템.
  11. 삭제
  12. 삭제
  13. 로봇 시스템의 노드들에 걸쳐 데이터를 동기화시키기 위한 방법에 있어서,
    퍼블리싱 노드로부터, 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내에 저장된 속성들을 광고하는 광고 메시지를 전송하는 단계;
    상기 퍼블리싱 노드에 연결된 서브스크라이빙 노드에 의해, 상기 광고 메시지를 수신하는 단계;
    상기 서브스크라이빙 노드에 의해, 상기 서브스크라이빙 노드가 상기 서브스크라이빙 노드에 의해 서브스크라이빙되어야 한다고 판정하는, 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내에 저장된 상기 속성들을 지시하는 서브스크립션 메시지를 전송하는 단계;
    상기 퍼블리싱 노드에 의해, 상기 서브스크라이빙 노드를 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내에 저장된 서브스크립션 리스트에 추가하는 단계;
    상기 퍼블리싱 노드에 의해, 상기 속성들의 각각에 대해 플래그를 설정하는 단계;
    상기 퍼블리싱 노드에 의해, 플래그가 설정된 상기 속성들의 각각을 포함하고 있는 동기화 패킷을 상기 서브스크라이빙 노드에 전송하는 단계; 및
    전송된 상기 속성들의 각각에 대해 플래그를 해제하는 단계;를 포함하고 있는 것을 특징으로 하는 방법.
  14. 삭제
  15. 제 13 항에 있어서, 상기 플래그를 설정하는 단계는:
    상기 속성들이 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내에 기록될 때, 상기 속성들에 포함된 데이터가 수정될 때 또는 상기 속성들이 서브스크라이빙 노드에 의해 서브스크라이빙될 때 플래그를 설정하는 단계를 포함하는 것을 특징으로 하는 방법.
  16. 제 15 항에 있어서,
    동기화 응답 신호를 상기 서브스크라이빙 노드로부터 상기 퍼블리싱 노드로 전송하는 단계; 및
    동기화 응답 신호가 수신될 때까지, 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스 내의 상기 속성들에 대한 수정들을 종합하는 단계;를 더 포함하는 것을 특징으로 하는 방법.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 로봇 시스템의 하나 이상의 프로세서에 의해 실행되는 명령어로서, 실행되었을 때, 상기 로봇 시스템의 하나 이상의 프로세서가 로봇 시스템의 노드들을 동기화시키기 위한 방법을 실행하게 만드는 명령어를 가지는 비일시성 컴퓨터 판독가능 매체에 있어서,
    상기 로봇 시스템의 노드들을 동기화시키기 위한 방법이:
    퍼블리싱 노드로부터, 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내에 저장된 속성들을 광고하는 광고 메시지를 전송하는 단계;
    상기 퍼블리싱 노드에 연결된 서브스크라이빙 노드에 의해, 상기 광고 메시지를 수신하는 단계;
    상기 서브스크라이빙 노드로부터 상기 퍼블리싱 노드로, 상기 서브스크라이빙 노드가 상기 서브스크라이빙 노드에 의해 서브스크라이빙되어야 한다고 판정하는, 상기 퍼블리싱 노드에서 실행되는 상기 동기화 데이터베이스의 서버 인스턴스 내에 저장된 상기 속성들을 지시하는 서브스크립션 메시지를 전송하는 단계;
    상기 서브스크라이빙 노드를 상기 퍼블리싱 노드에서 실행되는 상기 동기화 데이터베이스의 서버 인스턴스 내에 저장된 서브스크립션 리스트에 추가하는 단계;
    상기 퍼블리싱 노드에서 실행되는 상기 동기화 데이터베이스의 서버 인스턴스 내의 서브스크라이빙되는 상기 속성들의 각각에 대해 플래그를 설정하는 단계;
    상기 퍼블리싱 노드로부터 상기 서브스크라이빙 노드로, 플래그가 설정된 상기 속성들의 각각을 포함하고 있는 동기화 패킷을 전송하는 단계; 및
    상기 퍼블리싱 노드에서 실행되는 상기 동기화 데이터베이스의 서버 인스턴스 내의 전송된 상기 속성들의 각각에 대해 플래그를 해제하는 단계;를 포함하고 있는 것을 특징으로 하는 비일시성 컴퓨터 판독가능 매체.
  23. 삭제
  24. 제 22 항에 있어서, 상기 플래그를 설정하는 단계가:
    상기 속성들이 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스의 서버 인스턴스 내에 기록될 때, 상기 속성들에 포함된 데이터가 수정될 때 또는 상기 속성들이 상기 서브스크라이빙 노드에 의해 서브스크라이빙될 때 플래그를 설정하는 단계를 포함하는 것을 특징으로 하는 비일시성 컴퓨터 판독가능 매체.
  25. 제 24 항에 있어서, 상기 로봇 시스템의 노드들을 동기화시키기 위한 방법이:
    동기화 응답 신호를 상기 서브스크라이빙 노드로부터 상기 퍼블리싱 노드로 전송하는 단계; 및
    동기화 응답 신호가 수신될 때까지, 상기 퍼블리싱 노드에서 실행되는 동기화 데이터베이스 내의 상기 속성들에 대한 수정들을 종합하는 단계;를 더 포함하는 것을 특징으로 하는 비일시성 컴퓨터 판독가능 매체.
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR1020157021386A 2013-02-15 2014-02-14 로봇 시스템의 노드들을 동기화시키기 위한 시스템 및 방법 KR102214868B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217003451A KR102264615B1 (ko) 2013-02-15 2014-02-14 로봇 시스템의 노드들을 동기화시키기 위한 시스템 및 방법

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361765559P 2013-02-15 2013-02-15
US61/765,559 2013-02-15
US14/181,499 US9424303B2 (en) 2013-02-15 2014-02-14 Systems and methods for synchronizing nodes of a robotic system
PCT/US2014/016615 WO2014127300A1 (en) 2013-02-15 2014-02-14 Systems and methods for synchronizing nodes of a robotic system
US14/181,499 2014-02-14

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020217003451A Division KR102264615B1 (ko) 2013-02-15 2014-02-14 로봇 시스템의 노드들을 동기화시키기 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20150118130A KR20150118130A (ko) 2015-10-21
KR102214868B1 true KR102214868B1 (ko) 2021-02-10

Family

ID=51352036

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020157021386A KR102214868B1 (ko) 2013-02-15 2014-02-14 로봇 시스템의 노드들을 동기화시키기 위한 시스템 및 방법
KR1020217003451A KR102264615B1 (ko) 2013-02-15 2014-02-14 로봇 시스템의 노드들을 동기화시키기 위한 시스템 및 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020217003451A KR102264615B1 (ko) 2013-02-15 2014-02-14 로봇 시스템의 노드들을 동기화시키기 위한 시스템 및 방법

Country Status (6)

Country Link
US (5) US9424303B2 (ko)
EP (2) EP2956879B1 (ko)
JP (4) JP6301373B2 (ko)
KR (2) KR102214868B1 (ko)
CN (2) CN108280239B (ko)
WO (1) WO2014127300A1 (ko)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5553987B2 (ja) 2005-05-04 2014-07-23 ヒルクレスト・ラボラトリーズ・インコーポレイテッド ユーザインターフェースにおけるスクロールおよびポインティングの方法およびシステム
KR102214868B1 (ko) 2013-02-15 2021-02-10 인튜어티브 서지컬 오퍼레이션즈 인코포레이티드 로봇 시스템의 노드들을 동기화시키기 위한 시스템 및 방법
US9937626B2 (en) 2013-12-11 2018-04-10 Covidien Lp Wrist and jaw assemblies for robotic surgical systems
CN110063791B (zh) 2014-08-13 2022-04-15 柯惠Lp公司 机器人控制的具有机械优势的夹持
EP3258874B1 (en) 2015-02-19 2024-01-17 Covidien LP Input device for robotic surgical system
CA2977413A1 (en) 2015-03-10 2016-09-15 Covidien Lp Measuring health of a connector member of a robotic surgical system
WO2016196238A1 (en) 2015-06-03 2016-12-08 Covidien Lp Offset instrument drive unit
CN112294439A (zh) 2015-06-16 2021-02-02 柯惠Lp公司 机器人外科手术系统扭矩传感感测
US10779897B2 (en) 2015-06-23 2020-09-22 Covidien Lp Robotic surgical assemblies
KR102495549B1 (ko) 2015-07-07 2023-02-06 인튜어티브 서지컬 오퍼레이션즈 인코포레이티드 복수의 장치의 제어
US10806454B2 (en) 2015-09-25 2020-10-20 Covidien Lp Robotic surgical assemblies and instrument drive connectors thereof
CN108135670B (zh) 2015-10-23 2021-02-26 柯惠Lp公司 用于检测灌注中逐步变化的手术系统
US10660714B2 (en) 2015-11-19 2020-05-26 Covidien Lp Optical force sensor for robotic surgical system
WO2017173524A1 (en) 2016-04-07 2017-10-12 Titan Medical Inc. Camera positioning method and apparatus for capturing images during a medical procedure
CN109152617B (zh) 2016-05-26 2021-11-02 柯惠Lp公司 机器人手术组合件
CN109152614B (zh) 2016-05-26 2021-09-10 柯惠Lp公司 器械驱动单元
WO2017210499A1 (en) 2016-06-03 2017-12-07 Covidien Lp Control arm for robotic surgical systems
CN109195543A (zh) 2016-06-03 2019-01-11 柯惠Lp公司 用于机器人手术系统的被动轴系统
WO2017210500A1 (en) 2016-06-03 2017-12-07 Covidien Lp Robotic surgical system with an embedded imager
EP3463162A4 (en) 2016-06-03 2020-06-24 Covidien LP SYSTEMS, METHODS AND COMPUTER READABLE PROGRAM PRODUCTS FOR CONTROLLING A ROBOT CONTROLLED MANIPULATOR
US11246670B2 (en) 2016-08-16 2022-02-15 Cilag Gmbh International Modular surgical robotic tool
US10993760B2 (en) 2016-08-16 2021-05-04 Ethicon, Llc Modular surgical robotic tool
US11690691B2 (en) 2017-02-15 2023-07-04 Covidien Lp System and apparatus for crush prevention for medical robot applications
CN108632300B (zh) * 2017-03-15 2021-12-10 阿里巴巴集团控股有限公司 数据同步系统、方法、服务器、客户端及电子设备
CN108881014B (zh) * 2017-05-12 2021-10-01 北京猎户星空科技有限公司 一种数据发送系统及方法
US11717361B2 (en) 2017-05-24 2023-08-08 Covidien Lp Electrosurgical robotic system having tool presence detection
EP3629983B1 (en) 2017-05-25 2023-06-28 Covidien LP Robotic surgical systems and drapes for covering components of robotic surgical systems
CN110177518B (zh) 2017-05-25 2023-01-31 柯惠Lp公司 用于在图像捕获装置的视场内检测物体的系统和方法
JP2020520745A (ja) 2017-05-25 2020-07-16 コヴィディエン リミテッド パートナーシップ 自動誘導付きロボット外科システム
CN110235131A (zh) * 2017-07-19 2019-09-13 西门子工业软件有限公司 用于模拟工业机器人的机器人程序的方法及系统
CN110177516B (zh) 2017-09-05 2023-10-24 柯惠Lp公司 用于机器人手术系统的碰撞处理算法
US11583358B2 (en) 2017-09-06 2023-02-21 Covidien Lp Boundary scaling of surgical robots
EP3735199A4 (en) 2018-01-04 2021-10-13 Covidien LP SYSTEMS AND ARRANGEMENTS FOR ATTACHING A SURGICAL ACCESSORY TO ROBOTIC SURGICAL SYSTEMS AND PROVIDING ACCESS THROUGH
US11189379B2 (en) 2018-03-06 2021-11-30 Digital Surgery Limited Methods and systems for using multiple data structures to process surgical data
CA3090181A1 (en) 2018-03-08 2019-09-12 Covidien Lp Surgical robotic systems
CN111989065A (zh) 2018-04-20 2020-11-24 柯惠Lp公司 具有立体显示器的机器人手术系统中的观察者移动的补偿
CN112105312A (zh) 2018-07-03 2020-12-18 柯惠Lp公司 用于在手术程序期间检测图像退化的系统、方法和计算机可读介质
US11109746B2 (en) 2018-10-10 2021-09-07 Titan Medical Inc. Instrument insertion system, method, and apparatus for performing medical procedures
CN109165261A (zh) * 2018-10-10 2019-01-08 深圳市欧瑞博科技有限公司 数据同步方法、装置、服务器及计算机存储介质
US11868494B1 (en) * 2018-11-26 2024-01-09 Amazon Technologies, Inc. Synchronization of access management tags between databases
US11586106B2 (en) 2018-12-28 2023-02-21 Titan Medical Inc. Imaging apparatus having configurable stereoscopic perspective
US11717355B2 (en) 2019-01-29 2023-08-08 Covidien Lp Drive mechanisms for surgical instruments such as for use in robotic surgical systems
US11576733B2 (en) 2019-02-06 2023-02-14 Covidien Lp Robotic surgical assemblies including electrosurgical instruments having articulatable wrist assemblies
US11484372B2 (en) 2019-02-15 2022-11-01 Covidien Lp Articulation mechanisms for surgical instruments such as for use in robotic surgical systems
US11200255B2 (en) * 2019-08-22 2021-12-14 Adp, Llc Robust data synchronization solution between databases
USD963851S1 (en) 2020-07-10 2022-09-13 Covidien Lp Port apparatus
CN112256538A (zh) * 2020-09-01 2021-01-22 北京航天控制仪器研究所 一种无人船设备信息采集处理及控制方法
US11570266B2 (en) * 2021-02-10 2023-01-31 Juniper Networks, Inc. Real-time detection of completion of sensor wrap completion in GNMI telemetry of a network device
US11948226B2 (en) 2021-05-28 2024-04-02 Covidien Lp Systems and methods for clinical workspace simulation

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4860285A (en) * 1987-10-21 1989-08-22 Advanced Micro Devices, Inc. Master/slave synchronizer
US6421570B1 (en) 1997-08-22 2002-07-16 Honeywell Inc. Systems and methods for accessing data using a cyclic publish/subscribe scheme with report by exception
US6272386B1 (en) 1998-03-27 2001-08-07 Honeywell International Inc Systems and methods for minimizing peer-to-peer control disruption during fail-over in a system of redundant controllers
JP3175692B2 (ja) 1998-04-28 2001-06-11 日本電気株式会社 コンピュータと携帯端末間のデータ連携システム及びそのデータ連携方法
JP4478236B2 (ja) * 1998-12-14 2010-06-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 資源管理システムおよびその方法
US7113963B1 (en) * 2000-11-10 2006-09-26 Palmsource, Inc. Optimized database technique to enable faster data synchronization
US20020099787A1 (en) * 2001-01-12 2002-07-25 3Com Corporation Distributed configuration management on a network
US6711578B1 (en) * 2001-01-17 2004-03-23 Palmsource, Inc. Rule-based, n-way, synchronization of multiple copies of a database
JP3577028B2 (ja) 2001-11-07 2004-10-13 川崎重工業株式会社 ロボットの協調制御システム
US7180253B2 (en) * 2003-09-30 2007-02-20 Rockwell Automation Technologies, Inc. Method and system for generating multi-dimensional motion profiles
US7346633B2 (en) 2004-06-10 2008-03-18 Sybase, Inc. System providing methodology for replication subscription resolution
US7706895B2 (en) 2005-02-25 2010-04-27 Rockwell Automation Technologies, Inc. Reliable messaging instruction
US20070198629A1 (en) 2006-02-21 2007-08-23 Nec Laboratories America, Inc. Scalable Content Based Event Multicast Platform
EP1855194B1 (en) 2006-05-11 2018-07-04 ABB Schweiz AG Synchronization of a graphical program and a robot program
CN1937536A (zh) * 2006-10-31 2007-03-28 华为技术有限公司 网管拓扑数据同步刷新的方法及系统
CN100449548C (zh) * 2007-04-11 2009-01-07 华为技术有限公司 数据库同步方法及系统
JP5298626B2 (ja) * 2007-10-17 2013-09-25 ソニー株式会社 ネットワークシステム、ネットワーク家電機器、コンテンツ/メタデータの同期処理方法、及びコンピュータ・プログラム
AU2008353981B2 (en) 2008-04-02 2013-01-31 Irobot Corporation Robotics systems
JP4621837B2 (ja) 2008-07-10 2011-01-26 国立大学法人名古屋大学 中継装置、通信システム及び通信方法
JP4581037B2 (ja) 2008-07-10 2010-11-17 国立大学法人名古屋大学 中継装置、通信システム及び通信方法
KR101248802B1 (ko) * 2008-10-31 2013-03-29 한국전자통신연구원 지능형 로봇 시스템에서의 로봇 소프트웨어 컴포넌트 관리 장치 및 방법
US8370443B2 (en) 2009-09-08 2013-02-05 Microsoft Corporation Reliable messaging using publish subscribe mechanism
US8706296B2 (en) 2010-02-16 2014-04-22 Irobot Corporation Mobile robot internal communication system
US20120254108A1 (en) 2011-03-30 2012-10-04 Microsoft Corporation Synchronization Of Data For A Robotic Device
CN102571485B (zh) * 2011-12-14 2014-08-27 上海交通大学 一种在微博平台上识别机器人用户的方法
US9906450B2 (en) * 2012-07-16 2018-02-27 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for handling error indications
US8635373B1 (en) * 2012-09-22 2014-01-21 Nest Labs, Inc. Subscription-Notification mechanisms for synchronization of distributed states
CN102830645B (zh) * 2012-09-26 2014-11-12 苏州工业园区职业技术学院 单轴全自动高速点胶机器人伺服控制系统
KR102214868B1 (ko) 2013-02-15 2021-02-10 인튜어티브 서지컬 오퍼레이션즈 인코포레이티드 로봇 시스템의 노드들을 동기화시키기 위한 시스템 및 방법

Also Published As

Publication number Publication date
US20200192911A1 (en) 2020-06-18
US11687556B2 (en) 2023-06-27
CN108280239A (zh) 2018-07-13
JP2016513414A (ja) 2016-05-12
WO2014127300A1 (en) 2014-08-21
JP6720377B2 (ja) 2020-07-08
JP2019145137A (ja) 2019-08-29
CN105009127B (zh) 2018-04-10
EP2956879A4 (en) 2016-10-26
US9424303B2 (en) 2016-08-23
US10592529B2 (en) 2020-03-17
EP2956879A1 (en) 2015-12-23
EP2956879B1 (en) 2020-01-22
US11971905B2 (en) 2024-04-30
US20230289366A1 (en) 2023-09-14
US20180075120A1 (en) 2018-03-15
CN105009127A (zh) 2015-10-28
KR102264615B1 (ko) 2021-06-14
KR20210016088A (ko) 2021-02-10
JP2018137758A (ja) 2018-08-30
JP7008103B2 (ja) 2022-01-25
JP2020167710A (ja) 2020-10-08
JP6301373B2 (ja) 2018-03-28
JP6510099B2 (ja) 2019-05-08
US9830371B2 (en) 2017-11-28
US20160357838A1 (en) 2016-12-08
KR20150118130A (ko) 2015-10-21
EP3670112A1 (en) 2020-06-24
CN108280239B (zh) 2023-01-17
US20140236894A1 (en) 2014-08-21

Similar Documents

Publication Publication Date Title
KR102214868B1 (ko) 로봇 시스템의 노드들을 동기화시키기 위한 시스템 및 방법
CN106453288B (zh) 一种支持异步模式的分布式微服务框架系统及其实现方法
US20130138737A1 (en) Managing a Message Subscription in a Publish/Subscribe Messaging System
CN109450711A (zh) 分布式系统中主节点的选取方法、装置、系统及存储介质
WO2018119116A1 (en) Data stream processor with both in memory and persisted messaging
CN107436904B (zh) 数据获取方法、数据获取设备和计算机可读存储介质
CN111510327B (zh) 用于共同训练模型的训练参与端的网络连接方法、装置、系统和服务器
CN109165261A (zh) 数据同步方法、装置、服务器及计算机存储介质
CN113301088B (zh) 消息处理方法、装置、系统、电子设备及可读存储介质
CN114924861A (zh) 一种分布式任务处理方法及系统
CN113905090A (zh) 消息推送方法、装置、服务器、电子设备及存储介质
US10726001B2 (en) Discovery and management of physical components
JP5449471B2 (ja) 共有データに対する更新処理の同期処理方法、データ共有システムおよびデータ共有プログラム
CN116450419A (zh) 主从节点数据同步的方法、系统、介质及电子设备
JP2014059706A (ja) データ配布システムとその配布方法、中継管理装置とその制御方法およびプログラム、クライアント装置とその制御方法およびプログラム
WO2013031286A1 (ja) データ共有装置およびデータ共有方法
JP2009211348A (ja) 管理システム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant