(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-12
(45)【発行日】2022-01-25
(54)【発明の名称】ロボットシステムのノードを同期させるためのシステム
(51)【国際特許分類】
H04L 51/04 20220101AFI20220118BHJP
A61B 34/37 20160101ALI20220118BHJP
【FI】
H04L51/04
A61B34/37
【外国語出願】
(21)【出願番号】P 2020104150
(22)【出願日】2020-06-17
(62)【分割の表示】P 2019071247の分割
【原出願日】2014-02-14
【審査請求日】2020-07-07
(32)【優先日】2013-02-15
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2014-02-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】510253996
【氏名又は名称】インテュイティブ サージカル オペレーションズ, インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】ホフマン,ブライアン ディー
(72)【発明者】
【氏名】ラデル,ジョシュア
【審査官】野元 久道
(56)【参考文献】
【文献】米国特許出願公開第2005/0278346(US,A1)
【文献】特開2007-234014(JP,A)
【文献】米国特許出願公開第2007/0198629(US,A1)
【文献】米国特許出願公開第2006/0209868(US,A1)
【文献】米国特許出願公開第2011/0060957(US,A1)
【文献】特表2001-514407(JP,A)
【文献】米国特許第07113963(US,B1)
【文献】特開2010-105150(JP,A)
【文献】韓国公開特許第10-2011-0000689(KR,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00
(57)【特許請求の範囲】
【請求項1】
発行ノードであって:
1つ又は複数のプロセッサと;
第1の同期データベースと;
を有し、
前記第1の同期データベースは:
複数の購読者の購読者リスト;
複数の第1の属性であって、前記複数の第1の属性のそれぞれの個々の属性がデータ及びタグを含み、前記タグは前記個々の属性を識別する、複数の第1の属性;及び
複数の第1のフラグであって、前記複数の第1のフラグのそれぞれの個々のフラグが、前記複数の第1の属性のうちの対応する属性及び前記複数の購読者のうちの対応する購読者と関連付けられる、複数の第1のフラグ;
を含み、
前記発行ノードは:
前記複数の購読者からの第1の購読者に、前記第1のフラグのそれぞれのフラグを有する前記第1の属性のうちの1つ又は複数を発行し、前記第1のフラグのそれぞれのフラグは、前記第1の属性のうちのそれぞれの属性を前記第1の購読者に関連付け;
前記第1の購読者からエラーメッセージを受信し;
前記エラーメッセージを受信することに応じて:
前記第1の購読者に関連付けられる前記第1のフラグの各々をセットし;
前記第1の購読者に、前記第1の購読者に関連付けられる前記第1のフラグの各々に関連付けられる前記第1の属性の各々を再発行する;
ように構成される、
発行ノード。
【請求項2】
前記第1の購読者に再発行することは、前記第1の購読者にリセットメッセージを発行すること
及び前記第1の購読者に同期メッセージを発行することを含み、前記同期メッセージは、前記第1の購読者に関連付けられる前記第1のフラグの各々に関連付けられる前記第1の属性の各々を含む、
請求項1に記載の発行ノード。
【請求項3】
前記第1の購読者に再発行することは、再発行の試みのカウンタをインクリメントすることを含む、
請求項1に記載の発行ノード。
【請求項4】
前記エラーメッセージを受信することに応じて、前記発行ノードは、前記カウンタが所定の数の前記再発行の試みに達したかどうかを決定し、前記所定の数に達した場合に、前記第1の購読者への再発行を中止するように構成される、
請求項3に記載の発行ノード。
【請求項5】
前記発行ノードは、前記第1の購読者から送信成功の確認を受信するように構成される、
請求項4に記載の発行ノード。
【請求項6】
前記発行ノードは、前記確認の受信に応じて、前記カウンタをリセットするように構成される、
請求項5に記載の発行ノード。
【請求項7】
前記発行ノードは、ロボットシステムの第1のコンポーネントである、
請求項1に記載の発行ノード。
【請求項8】
前記発行ノードは、前記ロボットシステムのユニットコントローラ、ディスパッチャ、マニピュレータ、スーパバイザ、ビデオサブシステム、若しくはユーザインタフェースである、又は
前記発行ノードは、前記ロボットシステムの運動学的チェーンにおけるリンク、アクチュエータ、センサ、又はサブグループである、
請求項7に記載の発行ノード。
【請求項9】
前記第1の購読者は、前記ロボットシステムの第2のコンポーネントである、
請求項7に記載の発行ノード。
【請求項10】
購読者ノードであって:
1つ又は複数のプロセッサと;
第1の同期データベースであって、複数の第1の属性を含む、第1の同期データベースと;
を有し、
前記購読者ノードは:
発行ノードから、前記第1の属性のうちの1つ又は複数に対する更新を含む第1の同期メッセージを受信し;
前記第1の同期メッセージをエラーについてスキャンし;
前記第1の同期メッセージでエラーを検出したことに応じて:
前記発行ノードにエラーメッセージを送信し;
追加の同期メッセージが破棄されるエラー状態に入る;
ように構成される、
購読者ノード。
【請求項11】
前記購読者ノードはさらに:
前記発行ノードから、リセット信号を受信し;
受信した前記リセット信号に応じて、前記エラー状態を出る;
ように構成される、
請求項10に記載の購読者ノード。
【請求項12】
前記エラー状態を出た後、前記購読者ノードはさらに:
前記発行ノードから、前記第1の属性のうちの1つ又は複数に対する更新を含む第2の同期メッセージを受信する、
ように構成される、
請求項10に記載の購読者ノード。
【請求項13】
前記購読者ノードはさらに:
前記第2の同期メッセージをエラーについてスキャンし;
前記第2の同期メッセージにエラーが無いことを検出したことに応じて、前記第1の同期データベースの前記複数の第1の属性のうちの少なくとも1つを更新する;
ように構成される、
請求項12に記載の購読者ノード。
【請求項14】
前記購読者ノードは、ロボットシステムの第1のコンポーネントである、
請求項13に記載の購読者ノード。
【請求項15】
前記発行ノードは、前記ロボットシステムのユニットコントローラ、ディスパッチャ、マニピュレータ、
若しくはスーパバイ
ザである、又は
前記発行ノードは、前記ロボットシステムの運動学的チェーンにおけるリンク、アクチュエータ、センサ、又はサブグループである、
請求項14に記載の購読者ノード。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2013年2月15日に出願された、米国仮出願第61/765,559号、及び2014年2月14日に出願された、米国非仮出願第14/181,499号の優先権を主張し、当該出願はそれらの全体が参照により本出願に援用される。
【0002】
本開示は、ロボットシステムのノードを同期させるためのシステム及び方法に関する。特に、本開示は、ロボットシステムのそれぞれのノードにおいて実行されることができる同期データベースに関し、同期データベースは、ロボットシステムのノード間の更新された属性の購読及び発行を可能にする。
【背景技術】
【0003】
いくつかのアプリケーションは、通信に関して、高帯域幅要件並びに厳密な同期、待ち時間、及び信頼性要件を有する。例えば、ロボット支援手術は、実時間で制御及びフィードバック信号を伝達するために低遅延を必要とする。理想的には、マスタインプットを制御している外科医の動作とマスタに従動するロボットの動作との間はできる限り小さい遅れであるべきであるので、このようなアプリケーションの同期及び待ち時間要件は厳格である。
【0004】
ロボット支援手術システムを含む、複雑なシステムは、システム内で共に働き、従って、同期されたままになる必要がある、一般にここでは「ノード」と称される、多くのコンポーネントを含む。これらの結合されたノードのそれぞれに対して、第1のノードが第2のノードにデータ要求を送信することによって同期が頻繁に実行され、このデータ要求に対して第2のノードは、要求されたデータを第1のノードに提供することによって要求に応答する。いくつかの場合、第1のノードは、第2のノード及び第3のノードの存在をチェックし、第2及び第3のノードが存在することが見出される場合、第1のノードはその後第2及び第3のノードにデータをプッシュする。第2又は第3のノードが第1のノードから切り離されその後再接続される場合、第1のノードは、第2又は第3のノードが第1のノードから切り離されたことを通知されないかもしれず、結果として再接続されたノードは、切り離しの間に第1のノードが送ったデータを取り損なうかもしれない。さらに、新しいノードが第1のノードに結合されるとき、第1のノードは新しいノードの存在をチェックしないかもしれず、したがって、何のデータも新しいノードに提供されないので、新しいノードにおけるデータは第1のノードのデータと同期されない。最終的に、ノードの存在を絶えずチェックしその後同期されたままにするためにノードのそれぞれにデータを送ることのシステムに対する必要は、システムを減速させ得る又はメッセージキューをオーバーフローさせ得る不必要なシステムトラフィックを作り得る。
【発明の概要】
【発明が解決しようとする課題】
【0005】
必要とされることは、システムのノードの自動的な同期を最小のシステムトラフィックで可能に且つシステムへの新しいノードの迅速な同期を可能にするシステム及び方法である。
【課題を解決するための手段】
【0006】
幾つかの実施形態と一致して、ロボットシステムが提供される。ロボットシステムは、少なくとも1つの第1の同期データベースを含む発行(パブリッシュ)ノードを含み、第1の同期データベースは、複数の属性(attributes)であって、属性のそれぞれが属性を識別するタグ及びデータを含む、複数の属性、属性のそれぞれと関連付けられるフラグ、及び購読者(サブスクライバ)リストを含む。システムはまた、少なくとも1つの第2の同期データベースを含む購読者ノードを含む。属性が少なくとも1つの第1の同期データベースに書かれるとき又は属性に含まれるデータが修正され且つ購読者ノードにフラグ付き属性を発行するとき、発行ノードは、属性に関連付けられるフラグをセットするように構成される。
【0007】
幾つかの実施形態と一致して、ロボットシステムのノードに渡ってデータを同期させるための方法も提供される。方法は、発行ノードから、発行ノードで実行している同期データベースのサーバインスタンスに格納される属性を広告する広告メッセージを送信するステップ、発行ノードに結合される購読(サブスクライブ)ノードによって、広告メッセージを受信するステップ及び購読ノードによって、少なくとも1つの購読ノードが購読することを望む発行ノードで実行している同期データベースのサーバインスタンスに格納される属性を示すサブスクリプション(購読)メッセージを送信するステップ、を含む。方法はまた、発行ノードによって、発行ノードで実行している同期データベースのサーバインスタンスに保持される購読リストに購読ノードを加えるステップ、発行ノードによって、購読される属性のそれぞれに対してフラグをセットするステップ、発行ノードによって、フラグ付き属性のそれぞれを含む同期パケットを購読ノードに送信するステップ、及び送信された属性のそれぞれに対してフラグをクリアするステップ、を含む。
【0008】
さらに幾つかの実施形態と一致して、実行されるとき、ロボットシステムの1又は複数のプロセッサにロボットシステムのノードを同期させる方法を実行させる、ロボットシステムの1又は複数のプロセッサによる実行のための命令を有する非一時的なコンピュータ可読媒体も提供され、方法は、発行ノードから、発行ノードで実行している同期データベースのサーバインスタンスに格納される属性を広告する広告メッセージを送信するステップ、発行ノードに結合される購読ノードによって、広告メッセージを受信するステップ、及び購読ノードから発行ノードに購読メッセージを送信するステップを含み、購読メッセージは、少なくとも1つの購読ノードが購読することを望む発行ノードで実行している同期データベースのサーバインスタンスに格納される属性を示す。方法はまた、発行ノードで実行している同期データベースのサーバインスタンスに保持される購読リストに購読ノードを加えるステップ、発行ノードで実行している同期データベースのサーバインスタンスに購読される属性のそれぞれに対してフラグをセットするステップ、発行ノードから購読ノードに同期パケットを送信するステップであって、同期パケットはフラグ付き属性のそれぞれを含む、ステップ、及び発行ノードで実行している同期データベースのサーバインスタンスの送信された属性のそれぞれに対してフラグをクリアするステップ、を含む。
【0009】
これらの及び他の実施形態は、以下の図に関して、以下にさらに詳細に記載される。
【図面の簡単な説明】
【0010】
【
図1】幾つかの実施形態と一致する、同期データベースのインスタンスを使用するシステムのノードを同期させるためのシステムを示す図である。
【
図2】幾つかの実施形態と一致する、同期パケットを示す図である。
【
図3】幾つかの実施形態と一致する、複数の同期データベースインスタンスがノードで実行しているシステムを示す図である。
【
図4A】幾つかの実施形態と一致する、サーバデータベースとクライアントデータベースとの間の属性を同期させる方法を示すフローチャートである。
【
図4B】幾つかの実施形態と一致する、サーバデータベースとクライアントデータベースとの間の属性を同期させる方法を示すフローチャートである。
【
図5】幾つかの実施形態と一致する、エラー検出方法を示すフローチャートである。
【
図6】幾つかの実施形態と一致する、ロボットシステムで使用されている
図1のシステムの例である。
【
図7】幾つかの実施形態と一致する、ロボットシステムで使用されている
図1のシステムの他の例である。
【
図8】幾つかの実施形態と一致する、ロボットシステムで使用されている
図1のシステムの他の例である。
【
図9】幾つかの実施形態と一致する、ロボット支援手術システムで使用されている
図1のシステムの例である。 図面において、同じ記号を有する要素は、同じ又は同様の機能を有する。
【発明を実施するための形態】
【0011】
以下の記載では、幾つかの実施形態を記載する特定の詳細が説明される。しかし、開示された実施形態がこれらの特定の詳細の幾つか又は全てなしで実施され得ることは、当業者に明白となるであろう。提示される特定の実施形態は、説明のためであって、限定するものではないことが意味される。当業者は、ここに具体的に記載されていないが、他の要素がこの開示の範囲及び精神の中にあることを理解することができる。様々な機械的、組成上の、構造的、電気的、及び動作上の変更が、この記載及び請求項の精神及び範囲から離れることなしに行われ得る。場合によっては、よく知られた回路、構造、及び技法は、本発明をあいまいにしないように、詳細に示されていない。さらに、単数形“a”、“an”、及び“the”は、文脈上他に指定のない限り、複数形も同様に含むことが意図される。用語「有する」、「有している」、「含む」等は、規定された特徴、ステップ、操作、プロセス、要素、及び/又はコンポーネントの存在を特定するが、1又は複数の他の特徴、ステップ、操作、プロセス、要素、コンポーネント、及び/又は群の存在または追加を除外しない。結合されるように記載される構成要素は、電気的又は機械的に直接結合され得る、或いは1又は複数の中間構成要素を介して間接的に結合され得る。
【0012】
図1は、幾つかの実施形態と一致する、同期データベースのインスタンスを使用するシステム100のノードを同期させるためのシステム100を示す図である。
図1に示されるように、システム100は、複数の相互接続されたノード102-1乃至102-N(「ノード102」として集合的に称される)を含む。幾つかの実施形態と一致して、各ノード102は、装置、ロボットシステムのコンポーネント、1又は複数のプロセッサ、1又は複数のプロセッサで実行されている個々のタスクであり得る。ノード102は、1又は複数のプロセッサを有し且つ1又は複数のプロセッサによる実行のための非一時的なコンピュータ可読媒体に格納された命令を読むことができるハードウェア及び/又はソフトウェアの任意の適切な組み合わせを含み得る。このような命令は、ここに記載されるように、同期データベースの1又は複数のインスタンスを作るための命令を含み得る。
【0013】
図1に戻ると、ノード102は、第2のノード102-2に結合される第1のノード102-1を含み、この第2のノードは、今度は複数のノード102-3乃至102-Nに結合される。
図1に示されていないが、ノード102-1はノード102-2での接続と同様の方法で、追加的なノードに直接結合され得る。幾つかの実施形態と一致して、メモリ(図示せず)が各ノード102と関連付けられる。さらに、1又は複数のプロセッサもまた、各ノード102と関連付けられることができる。同期データベースのインスタンスを作るための命令がメモリに記憶されることができ、1又は複数のプロセッサは、各ノード102において同期データベースの1又は複数のインスタンスを作るためにこれらの命令を実行することができる。幾つかの実施形態と一致して、同期データベースは、(i)状態又はイベントのような、データ属性を格納する、(ii)発行ノードと称される、1つのノードのデータ変化のアグリゲーション(aggregation)をサポートする、及び(iii)1又は複数の購読ノードへのその変化したデータの発行をサポートするソフトウェアコンテナオブジェクトである。同期データベースは、発行ノードを購読するために及びデータ変化を受信する或いはデータ変化を1又は複数の購読ノードに発行するために必要な機能を実行するように各ノードで実行される1又は複数の同期アプリケーションの実行を通じてこれを達成し得る。同期アプリケーションは、発行ノードのための発行アプリケーション及び購読ノードのための購読アプリケーションと称され得る。
【0014】
図1に示されるように、ノード102-1は、同期データベース104のサーバインスタンスを実行しており、発行ノードとして働き、ノード102-2は同期データベース106のクライアントインスタンスを実行しており、購読ノードとして働く。同期データベース、サーバインスタンス及びクライアントインスタンスの両方は、属性108と称される、データベクトルのセット、購読ノード116のリスト、及び同期を管理するために使用され得る追加的な状態(図示せず)を格納し得る。属性108は、システム100の状態又はイベントを含むデータを参照し得るとともに、さらに、カウンタ及びタイムスタンプを含み得る。属性108はまた、システム100の挙動を記述するために使用される挙動要素であるデータを参照し得る。幾つかの実施形態と一致して、属性108は、1つのノードに生じる状態又はイベントの視覚的表現であり得るユーザインタフェース(UI)状態又はイベントを参照することができ、この1つのノードに生じる状態又はイベントは、イベントの追加的なノードを更新するために及び/又は追加的なノードのこれらの状態又はイベントの視覚的表現を複製するために追加的なノードに発行されることができる。属性108はまた、
図1に示されるノード102-1に関連付けられるデータベース104及びノード102-2に関連付けられるデータベース106のような、1又は複数のデータベースに格納され得る。
【0015】
図1に示されるように、属性108は、タグ110、データ112、及びセット又はクリアされることができる関連付けられるフラグ114を含む。ノード102-1に関連付けられるデータベース104及びノード102-2に関連付けられるデータベース106は3又は4つの属性のみを有して示されているが、属性の数は、各ノード102の同期データベースインスタンスのために割り当てられたメモリによってのみ制限される。幾つかの実施形態と一致して、データベース104又はデータベース106に格納された属性108は、データベース104又はデータベース106に関連付けられたノードが要求ノードからクエリを受信するとき、要求ノードに送信される。
【0016】
同期データベースに格納された各属性108は、タグ110によって一意に識別される。幾つかの実施形態と一致して、タグ110は、32ビットタグであり得るとともに、ハッシュテーブル検索機能を使用することによって効率的なデータベース操作をサポートし得る。フラグ114は、属性108が、同期属性108を購読クライアントデータベース106に発行することを必要とするかどうかを示す。属性108がデータベース104に書かれる又はそうでなければデータベース106に格納された対応する属性108が異なり得るようにデータベース104において修正されるとき、フラグ114はセットされる。ノード102-1は1又は複数の属性108を修正することができ、各修正された属性108に対してフラグ114をセットする。ノード102-1は次に、ノード102-2のような購読ノード102にセットされたフラグ114を持つデータベース104に格納された全ての属性108を発行するために、その関連付けられたデータベース104の「発行」方法をコールし得る。属性108が発行された後、フラグ114はデータベース104においてクリアされる。フラグ114は、各購読ノード102に対するビットを含むフィールドであり得る。
【0017】
図1に示されるように、データベース104はまた、購読者リスト116を含み、この購読リストは、ノード102のリストであり且つデータベース104に格納された1又は複数の属性108に購読されているそれらの関連付けられたデータベースである。幾つかの実施形態と一致して、データベース104は、その格納された属性108を広告する。このような実施形態では、データベース104は、ノード102-2のような、他のノードが、データベース104に格納された1又は複数の属性108を完全に又は部分的に購読すべきかを決定することができるように、属性108及びそれが格納しているデータを示す信号を全ての結合されたノードに周期的に送信し得る。例えば、データベース104は、購読ノード102との初期接続に際し又はデータベース104が起動するとき、広告メッセージを送信し得る。同時に、データベース106は、データベース106が必要とするデータを格納する関連付けられるデータベースを有するノードを識別するよう試みるために発見メッセージを周期的に送信する。例えば、データベース106は、データベース104を有する発行ノード102-1との初期接続に際し又はデータベース106が起動するとき、発見メッセージを送信し得る。データベース104が発見メッセージを受信する又はデータベース106が広告信号を受信するとき、データベース104及びデータベース106はリンクを確立する。広告信号又は発見応答信号の受信に際し、データベース106は、購読メッセージをデータベース104に送信し、2つのノードのリンク及びノード102-2に関連付けられるデータベース106のノード102-1に関連付けられるデータベース104に格納された1又は複数の属性108の購読を確立する。
【0018】
ノード102-2及びその関連付けられるデータベース106は、データベース104に格納される全ての属性108を購読し得る又は幾つかの属性のみを購読し得る。各ノード102は、購読ノードを一意に識別するために購読者リスト116に格納される一意識別子を有し得る。ノード102がデータベース104に格納される属性108を購読するとき、購読される属性が修正されるとき、フラグ114がセットされるように、ノードは、各購読される属性108に対してフラグ114を割り当てられる。ノード102がサーバデータベース104を最初に購読するとき、購読される全ての属性108はセットされたフラグ114を有する。ノード102-2及びその関連付けられるデータベース106のような購読ノードは次に、それがセットされたフラグ114を有する全ての属性を受信する準備ができていることを示す応答メッセージをデータベース104に送信し得る。データベース104が、ノード102-2及びその関連付けられるデータベース106のような購読ノードからの応答メッセージを待つ間、データベース104は、購読された属性108への任意のさらなる変更又は修正及びその結果セットされたフラグ114を集める。応答メッセージを受信した後、データベース104は次にセットされたフラグ114を有する属性を発行し、次にフラグ114をクリアする。属性108が受信された後、それらはエラーをチェックされ、エラーが無い場合、購読ノードのデータベースは、データベース104に確認メッセージを送信する。データベース104が確認メッセージを待つ間に修正された任意の購読属性108が、確認メッセージを受信した後に購読ノードのデータベースに発行される。受信ノードのデータベースが、受信属性108がエラーを含むことを決定する場合、データベースは、エラー状態を入力し、データベース104が購読属性を再送信することを要求する。属性108を発行する方法は、以下に
図4を参照してさらに論じられる。
【0019】
ノード102-2がノード102-1におけるデータベース104に格納される属性108を購読するために同期データベースのクライアントインスタンスを実行するのと全く同じように、ノード102-3乃至102-Nもまた、ノード102-2における同期データベースの属性を購読するために同期データベースのクライアントインスタンスを実行し得る。
【0020】
幾つかの実施形態と一致して、同期データベースインスタンスは、受信した属性を下流のノードに再発行するためにクライアント及びサーバの両方として働き得るように、ダブルバッファされ得る。例えば、ノード102-2は、ノード102-1のデータベース104に格納された属性を購読するために同期データベースのクライアントインスタンスを実行し得る。データベース104から受信される(更新された状態を持つ)属性、場合によりスパニング(spanning)複数同期パケットは、ノード102-2の第1の非アクティブ/「バックグラウンド」バッファに格納される。同時に、ノード102-2の第2のアクティブ/「フォアグラウンド」バッファに格納される同じ属性(現在の状態を持つ)が購読ノード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から受信される属性108をノード102-3乃至102-Nに発行するためにサーバインスタンスを実行する必要はない。しかし、ノード102-2は、
図3を参照して以下に記載されるように、同期データベースのサーバインスタンス及びクライアントインスタンスの両方を実行することができる。
【0021】
さらに、ノード102-2は受信した属性を下流ノードに再発行するためにダブルバッファされているように記載されているが、ノードが受信した属性を下流ノードに再発行していないとしても、他のノードを購読する任意のノード102はダブルバッファされていることから利益を得ることができる。例えば、ノード102-3のような購読ノードは、以下に、
図2を参照してさらに記載されるように、同期パケットで、102-2のような発行ノードから修正された属性を受信し得る。これらの同期パケットは、ノード102-3によって受信され、それらが受信されるときバックグラウンドバッファに格納される。いったんノード102-3が特定の同期動作のために同期パケットを受信すると、バックグラウンドバッファはフォアグラウンドバッファと交換され、ノード102-3に集合したトランザクションの微小の見方を与え、ノード102-3がちょうど交換されたフォアグラウンドバッファに格納されることになるさらなる同期パケットを受信することを可能にし、このフォアグラウンドバッファは今やバックグラウンドバッファとして働く。
【0022】
幾つかの実施形態と一致して、データベースを有する102-1のような発行ノードは、その属性108を購読する、データベース106を有するノード102-2のような、これらのノード102に心拍信号を送信し得る。心拍信号は、属性の無い同期パケットを有する同期更新信号であり得る。幾つかの実施形態と一致して、心拍信号は、属性同期の後、発行ノード102-1から周期的に送信されることができ、周期的送信は各属性同期の後にリセットされる。心拍信号を受信するとき、データベース106は、同期信号として心拍信号を見るとともに、まるで信号が更新された属性を含むように応答メッセージを送信する。クライアントデータベース106を有する、ノード102-2のような購読ノードは、この心拍信号を周期的に受信し、したがって、データベース104がオンラインであり且つデータベース106が、購読している更新された属性を受信することを認識している。購読ノードが周期的な心拍信号を受信することを停止する場合、ノード102-1のデータベース104がオフラインであり且つ更新された属性を提供しないことを認識する。データベース106は次に、発行ノードから送信された広告メッセージを分析し始め得る、発見メッセージをサーバノードに発し始め得る、及び所望の属性を有する発行ノードを購読し得る。幾つかの実施形態では、例えば、発行と購読ノードとの間の通信断絶の後、ノード102-2のデータベース106は、所望の属性を受信するためにノード102-1のデータベース104を再講読し得る。
【0023】
任意の購読ノード102のデータベースが、受信される応答メッセージの欠如のために、購読ノード及び/又はその関連付けられるデータベースが「死んでいる」と発行ノードがみなすのに十分な所定の期間オフラインになる場合、発行ノードのデータベースは、購読ノード及びその関連付けられるデータベースをその購読リストから外す。いったん購読ノードがオンラインに戻ると、それは、それが以前に行ったのと同じ方法で、発行ノードのデータベースに格納された1又は複数の属性を再講読し得る。すなわち、再講読ノード102は、属性108及びその関連付けられるデータベースから利用可能なデータを示す発行ノードから送信された広告メッセージを受信する、又はそれが購読することを望む属性を示す発見メッセージを送信する、及びその後発行ノードのデータベースに格納された1又は複数の属性108へのメッセージを購読する。発行ノードのデータベースはその後その購読者リスト116に再講読ノードを再び加え、示された属性108のそれぞれに対してフラグ114をセットする。再講読ノードのデータベースから発せられた初期「同期-応答」の受信に際し、発行ノードのデータベースは、セットされたフラグ114を持つ属性を発行する。再講読ノード102のデータベースはその後、その購読属性108への任意の更なる修正を受信する。
【0024】
図2は、幾つかの実施形態と一致する、同期パケットを示す図である。発行ノードのデータベースが購読ノード102に属性108を発行するとき、属性108は同期パケット200として送信される。同期パケット200は、パケットヘッダ202及びパケットボディ204を含む。パケットボディ204は、同期ヘッダ206及び同期ペイロード208の中に同期されることになる属性108を含む。同期されることになる属性108のそれぞれは、属性ヘッダ210及び属性ペイロード212を含み得る。幾つかの実施形態と一致して、同期ヘッダ206は、(リセット、開始、継続、終了のような)同期状態、同じ発行イベントで発行されている属性のグループに関連付けられるシリアルナンバ、及びパケット数を含み得る。属性ヘッダ210は、属性タグ110、属性の最終修正のタイムスタンプ、及び属性ヘッダ210に続く属性ペイロード212の長さを含み得る。幾つかの実施形態と一致して、属性ヘッダ210はまた、属性ペイロードが分割され且つ多数の同期パケット200に渡って送信されることを可能にするオフセットを含み得る。
【0025】
幾つかの実施形態と一致して、
図1に示されるデータベースのような、発行ノードのデータベースが、セットされたフラグ114を有する属性108を識別し且つノード102-2のデータベース106のような、購読ノードのデータベースに発行するためにこれらの属性を準備する。発行ノードのデータベースは次に、属性108を同期パケット200に配置することができ、この同期パケットの中では、先頭のパケットは同期ヘッダ206において「開始」として示され、後続のパケットは、同期ヘッダ206において「継続」として示され、最終のパケットは同期ヘッダ206において「終了」として示される。幾つかの実施形態と一致して、2つの同期パケットのみが配置される場合、それらはそれぞれ、同期ヘッダ206において「開始」及び「終了」として示される。1つの同期パケットのみが配置される場合、それは、同期ヘッダ206において「終了」として示される。いったん同期パケット200が構成されると、それらはその後、発行ノードのデータベースによって送信され、購読ノードのデータベースによって受信される。各同期パケット200が購読ノードのデータベースによって受信されるとき、属性108は、アンパックされ、データベースに書き込まれる。いったん購読ノードのデータベースが「終了」指示を有する同期ヘッダ206を処理すると、確認メッセージが発行ノードに送られる。その後、幾つかの実施形態と一致して、購読ノードは、発行ノードとして働き、属性をその購読ノード102に発行する。
【0026】
図3は、幾つかの実施形態と一致して、複数同期データベースインスタンスがノード102で実行しているシステムを示す図である。
図3に示されるように、各ノード102は、複数同期データベースインスタンスを実行することができる。例えば、
図3に示されるように、ノード102-1は、(i)購読ノード102-2及び関連付けられるデータベース106に属性を発行するための同期データベース104のサーバインスタンス、及び(ii)ノード304及びその関連付けられるデータベース306を購読する同期データベースインスタンス302のクライアントインスタンスの両方を実行している。したがって、データベース302は、購読者リスト316に記されるように、データベース306の属性308に加入(購読)され、データベース302は、これらの属性308がデータベース306に書き込まれる又はそうでなければ修正されるとき、これらの属性を受信する。同時に、データベース104は、書き込まれた又はそうでなければ修正された属性108を、購読ノード102-2のデータベース106に及び、もし購読されるとしたら、追加的に結合されたノード310-1乃至310-Nに発行する。各ノード102、304、及び310は、購読ノード及び発行ノードの両方であることができるように、同期データベースの複数のインスタンスを実行することができる。そして、幾つかの実施形態と一致して、単一ノードで実行しているデータベースの1又は複数は、上述のようにダブルバッファされ得る。
【0027】
したがって、単一ノードは、発行及び購読ノードの両方であることができ、これらの発行及び購読機能は、単一属性データ同期データベース又は複数属性データ同期データベースのいずれかを用いて実行され得る。単一ノードは、属性の第1のセットを1又は複数のノードの対応する第1のセットに及び属性の第2のセットを1又は複数の購読ノードの対応する第2のセットに発行し得る。同様に、単一ノードは、第1の発行ノードから属性の第1のセットを及び第2の発行ノードから属性の第2のセットを購読し得る。そして、心拍信号のような、上述の様々な特徴は、様々な同期データベースの1又は複数の特徴であり得る。加えて、幾つかの実施形態と一致して、相互接続されたノードのセットが単に1つの下流方向だけではなく両方向での属性更新を実行し得る。
【0028】
図4A及び4Bは、幾つかの実施形態と一致する、発行ノードと購読ノードとの間の属性を同期させる方法を示すフローチャートである。特に、
図4Aは、ノード102-1のデータベース104によって実行されるアクションを示し、
図4Bは、ノード102-2のデータベース106によって実行されるアクションを示す。説明のために、
図4A及び4Bに示される方法は、
図1-3を参照して記載される。
図4A及び4Bに示される方法は、ロボットシステムのメモリ又はノード102に関連付けられるメモリに入れられた命令に含まれ得るとともに、ロボットシステムに含まれる又はノード102に関連付けられる1又は複数のプロセッサによって実行され得る。
【0029】
図4A及び4Bに示されるように、同期データベース104のサーバインスタンスを有する発行ノード102-1は、広告メッセージを周期的に送信し(401)、その上で実行している同期データベース106のクライアントインスタンスを有するノード102-2のような、購読ノード102は、発見メッセージを周期的に送信する(402)。例えば、データベース104及びクライアントデータベース102はそれぞれ、データベース104を有する発行ノード102-1とデータベース106を有する購読ノード102との間の初期接続に際し又はデータベース104及び106が起動するとき、広告メッセージ及び発見メッセージを送信し得る。幾つかの実施形態と一致して、広告メッセージは、データベース104に格納される属性108に関する情報を含み得る。発見メッセージは、購読ノード102-2のデータベース106が必要とする属性108を示し得る。ノード102-1のデータベース104がノード102-2からの発見メッセージを受信する(403)とき、発見応答メッセージを購読ノードに送り返す(404)。購読ノード102-2が、発行ノードから広告メッセージを受信する(405)又は発行ノードから発見応答メッセージを受信する(406)とき、サーバ発見コールバック(407)が購読ノード102-2のデータベース106によって起動され、データベース104を有する発行ノード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のデータベース1-4に購読者として加えられると、データベース104は全ての購読属性に対してフラグ114をセットし(411)、購読ノード102-2からの同期応答メッセージを待つ(412)。データベース104が購読ノード102-2からの同期応答メッセージを待つ間、同期応答メッセージが受信されるまで、属性108に対する修正がデータベース104に集められる。したがって、データベース106が、それが受け取ることが出来る情報の量のみを受信するように、購読ノード102-2のデータベース106に送信される情報の組み込み制限がある。
【0030】
図4A及び4Bに戻ると、購読ノード102-2が同期応答メッセージを送信(413)した後、同期パケットが発行ノード102-1によって送信されることを待つ(414)。いったん発行ノード102-1が購読データベース102-2から同期応答メッセージを受信すると、発行ノード102-1のデータベース104は、購読ノード102-2に購読されるいずれかの属性がセットされたフラグ114を有するかどうかを決定する(415)。発行ノード102-1のデータベース104が、1又は複数の属性の購読者としてクライアントデータベース106にちょうど加えられた場合、全ての属性108に対するフラグ114はセットされる。そうでなければ、属性108に対するフラグ114は、属性108が修正されるとき、セットされ、このデータベース104は、修正属性コールが発行アプリケーションから受信される(416)とき、処理する。属性108がセットされたフラグ114を有さない場合、データベース104は、アイドル状態に入り、サーバアプリケーションからの発行コールを待つ(417)。データベース104が、セットされたフラグ114を有する属性108がまだあることを決定する場合及び/又はデータベース104が発行コール(418)を受信するとき、発行ノード102-1のデータベース104は、セットされたフラグ114を有する属性108を含む1又は複数の同期パケット200を発行し(419)、全ての発行属性108に対するフラグ114をクリアし(420)、その後、購読ノード102-2からの同期応答信号を待つことに進む(412)。購読ノード102-2のデータベース106が発行ノード102-1から1又は複数の同期パケットを受信する(421)とき、データベース106は、その中に格納された属性108を更新し(422)、受信した全ての同期パケットに対して、受信したパケットが同期ヘッダ206の「終了」として示される最終パケットであるかどうかを確かめる(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を参照して記載される。
【0031】
図5は、幾つかの実施形態と一致するエラー検出方法を示すフローチャートである。説明のために、
図5に示される方法は、
図1-3を参照して記載される。
図5に示される方法は、ロボットシステムの又はノード102に関連付けられるメモリに入れられた命令に含まれ得るとともに、ロボットシステムに含まれる又はノード102に関連付けられる1又は複数のプロセッサによって実行され得る。
【0032】
図5に示されるように、ノード102-1のような発行ノードから同期パケット200を受信した後、ノード102-2のような、購読ノードは、同期パケット200のエラーをスキャンする(502)。同期パケット200にエラーが見つからない場合、購読ノード102-2のデータベース106は、属性がアンパックされデータベース106に書きこまれる(504)ように、同期パケットを普通に処理する。エラーが検出される場合、エラー信号が購読ノード102-2によって発行ノード102-1に送信される(506)。購読ノード102-2はその後、「開始」、「継続」、又は「終了」指示を持つ同期ヘッダ206を有する如何なるさらに受信される同期パケット200も廃棄されるエラー状態に入る(508)。いったん発行ノード102-1がエラー信号を受信すると、データベース104は、購読ノード102-2が購読されている全ての属性に対してフラグ114をセットする(510)。発行ノード102-1はその後、「リセット」指示を持つ同期ヘッダ206を有する同期パケット200であり得るリセットメッセージを購読ノード102-2に送信する(512)。幾つかの実施形態と一致して、リセットメッセージは、如何なるペイロードも含まなくてもよく、購読ノード102-2のデータベース106によって受信される属性の予想シーケンスをリセットするように働く。発行ノード102-1はその後、フラグ付き属性を含む同期パケット200を購読ノード102-2に送信し(514)、購読ノード102-2のデータベース106は再び同期パケット200のエラーをスキャンする(502)。幾つかの実施形態と一致して、他のエラーが発見される場合、他のエラー信号が送られ、ステップ506-514が再び実行される。さらに幾つかの実施形態と一致して、発行ノード102-1のデータベース104は、同期パケット200を購読ノード102-2にうまく送信しようとする試みの数を数えるカウンタを含むことができ、カウンタが所定の数に達する場合、送信を中止する。データベース104はその後、エラーが発生したことを記録することができ、データベース104がタイムアウトコールバックで安全目的のために任意のアクションを取ること又はエラーを修正することを可能にするタイムアウトを発生させることができる。カウンタは、発行ノード102-1が成功した送信を示す購読ノード102-2からの確認メッセージを受信するとき、リセットされ得る。
【0033】
図1-5に記載されるような実施形態は、ロボットシステムのノードを最小のシステムトラフィック及び遅れで同期させるためにロボットシステムで使用され得る。幾つかの実施形態はまた、ノードを最小のシステムトラフィック及び遅延で同期させるためにロボット支援手術システムのノードを同期させるようにロボット支援手術システムで使用されることができ、システムを信頼性高くし、外科医のアクションに対する準リアルタイム応答(例えば、外科医が、システムコンポーネントに動く又は機能するように命令することと実際の動作又は機能との間で遅れを知覚しない応答)を提供する。システム100の使用の例は、以下に、
図6-9に記載される。
【0034】
図6は、ロボットシステムに使用されているシステム100の例である。
図6に示されるように、ロボットシステム600は、第2のユニットコントローラ604に結合される第1のユニットコントローラ602を含む。ユニットコントローラ602及び604のそれぞれは、示されるようにサブシステムスーパーバイザ606及び608にそれぞれ結合される。サブシステムスーパーバイザ606は、複数の機械的マニピュレータ612-1乃至612-Nに結合されるディスパッチャ610を含む。サブシステムスーパーバイザ608は、複数の機械的マニピュレータ616-1乃至616-Nに結合されるディスパッチャ614を含む。幾つかの実施形態と一致して、各ユニットコントローラ、ディスパッチャ、及びマニピュレータは、
図1及び3に対して上述されたノード102-1乃至102-Nに対応し得る。さらに、各マニピュレータは、ロボットシステム600の異なる機械的な部分(例えば、直列運動学的チェーンにおける異なるリンク、異なるアクチュエータ、異なるセンサ、異なるシステムサブグループ、等)に対応し得る。
【0035】
幾つかの実施形態にしたがって、ディスパッチャ610は、各マニピュレータ612-1乃至612-Nに対する及びユニットコントローラ602に対する購読ノードとして働く。すなわち、ディスパッチャ610は、各マニピュレータ612-1乃至612-N及びユニットコントローラ602に対する同期データベースのクライアントインスタンスを実行するので、ディスパッチャ610は、ユニットコントローラ602から利用可能な幾つかの属性を購読し且つ各マニピュレータ612-1乃至612-Nから利用可能な幾つかの属性を購読し、これらの全てはディスパッチャ610への発行ノードとして働く。ディスパッチャ610はその後、属性をユニットコントローラ602からマニピュレータ612-1乃至612-Nに再発行し得るとともに属性をマニピュレータ612-1乃至612-Nからユニットコントローラ602に再発行し得る。同様の機能性を使用して、ディスパッチャ610は、ディスパッチャ610がマニピュレータ612-1乃至612-Nの間で属性を同期させ得るように、他のマニピュレータ612-1乃至612-Nの間で発行者/購読者として働き得る。さらに、新しいマニピュレータ612が加えられるとき、それは購読ノードとして働く同期データベースのクライアントインスタンスを事項することができ、それは所望の属性を即座に購読し、この所望の属性はその後ディスパッチャ610によって加えられたマニピュレータに発行され、したがって、所望の属性の最新の状態を持つ新しいマニピュレータを提供するので、マニピュレータ612-1乃至612-N物理的に取り除かれることができ且つシステム600に加えられる、又は「ホットスワップ」され得る。ディスパッチャ610は、ユニットコントローラ604及びマニピュレータ616-1乃至616-Nに対して同様の機能性を提供する。
【0036】
図7は、幾つかの実施形態と一致する、ロボットシステムに使用されるシステム100の他の例である。
図7に示されるように、ロボットシステム700は、1又は複数の同期データベース704に結合されるスーパバイザノード702を含む。幾つかの実施形態と一致して、スーパバイザノード702は、スーパバイザノード702の状態を1又は複数の同期データベース704に送信し、この1又は複数の同期データベースは、受信した状態をユーザインタフェース(UI)ノード706及びビデオサブシステムノード708に発行する。このような構成では、スーパバイザノード702は、同期データベースのサーバインスタンスを実行し且つ発行ノードとして働き、この発行ノードに対して1又は複数の同期データベース704は、同期データベースのクライアントインスタンスを実行し且つスーパバイザノード702に対する購読ノードとして働く。1又は複数の同期データベース704はその後、スーパバイザノード702の属性及び状態をUIノード706及びビデオサブシステムノード708に再発行する。
【0037】
幾つかの実施形態と一致して、UIノード706はその後、スーパバイザノード702の状態をUIノード706に結合される1又は複数のコントローラ712によって実行されるアクション710に翻訳し得る。同様に、ビデオサブシステムノード708は、スーパバイザノード702の状態を、ビデオを表示するための命令に翻訳し得る。
図7に示されるように、スーパバイザノード702は、ビデオサブシステムノード708からユーザインタフェースイベント714を受信するためにビデオサブシステムノード708にも結合される。幾つかの実施形態と一致して、ユーザインタフェースイベント714は、スーパバイザノード702の状態に変化を生じさせ得るとともに、変化した状態は、フラグを付けられ、その後、上述の実施形態にしたがって、1又は複数の同期データベース704に発行される。システム700の状態を伝搬するための同期データベースの使用は、スーパバイザノード702によって保持される状態と一致するようにUIノード706及びビデオサブシステムノード708が両方更新することを確実にする。ビデオサブシステムノード708は、さらに多数のディスプレイを駆動することができ、各ディスプレイの内容は、同期データベースを介して伝搬される状態によって決定される。
【0038】
図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に発行され、(さらなる追加的なコントローラノード808から受信されたものを含む)ビデオプロセッサノード804及び追加的なコントローラノード806-1乃至806-Nにおける如何なる属性変化もディスプレイコントローラノード802に発行される。ディスプレイコントローラノード802は、下位ノード804、806-1乃至806-N(及び804を介した、808-1乃至808-N)から収集された1又は複数の重要な「グローバルに可視の」状態を再発行するように、「ルート」サーバデータベースを実行する。下位ノード804、及び806-1乃至806-Nは、このルートデータベースを購読し;ノード808-1乃至808-Nは、ルートデータベースコンテンツのためにノード804を購読する。さらに、ツリー構造への如何なる新たに追加されるノードも、前の実施形態に記載されるように、同期データベースのクライアントインスタンスを実行し、所望の属性を購読し、且つ所望の属性の最新の状態を発行されることができる。
【0039】
図9は、幾つかの実施形態と一致する、ロボット支援手術システム900に使用されるシステム100の他の例である。
図9に示されるように、システム900は、コアシステム904に結合される患者カート02を含み、このコアシステム904は、外科医コンソール906に結合される。幾つかの実施形態と一致して、システム900は、患者カート902が(カメラ器具を含む)スレーブマニピュレータ制御手術器具を含み、外科医コンソール906がスレーブマニピュレータのためのマスタコントロールを含み、コアシステム904が他のシステムデータ処理コンポーネントに加えてカメラ及び視覚システム処理コンポーネントを含むような、カルフォルニア州SunnyvaleのIntuitive Surgical, Inc.によって市販されているda Vinci(登録商標)Surgical Systemに対応し得る。さらに、患者カート902、コアシステム904及び外科医コンソール906のそれぞれは、上述の実施形態と一致する1又は複数の同期データベースを実行することができ得るとともに、システム900のノードと称され得る。さらに、システム900のノードのそれぞれは、追加的なノードを含み得る。例えば、患者カート902は、それぞれが同期データベースのクライアントインスタンスを実行することができる1又は複数のプロセッサを含むことができ、これらの1又は複数のプロセッサは、セットアップジョイント910及びマニピュレータ912のような、患者カート902内の個別のノードによって発行される属性を購読するノード908と称され得、この個別のノードのそれぞれは、同期データベースのサーバインスタンスを実行している関連付けられるプロセッサを含む。同期データベースのクライアントインスタンスを実行する、ノード908は、セットアップジョイント910及びマニピュレータ912から発行された属性を受信し、これらの属性を同期データベースのクライアントインスタンスに格納する。これらの属性はその後、ノード908が同期データベースのサーバインスタンスを実行し且つコアシステム904が同期データベースのクライアントインスタンスを実行して、ノード908によってコアシステム904に発行され得る。同様に、ノード908は、コア904のサーバインスタンスから発行される属性を購読するために同期データベースのクライアントインスタンスを実行し得る。同様の構成が、属性がシステム900に渡って同期され得るように、コア904と外科医コンソール906との間に提供され得る。
【0040】
幾つかの実施形態と一致して、患者カート902が残りのシステム900から切り離される場合、患者カート902は、同期データベースのクライアントインスタンスを実行するノード908が、ロボットマニピュレータセットアップアームジョイント910から及びマニピュレータクラッチ912から発行された属性を受信し、その後これらの属性を同期データベースのクライアントインスタンスに格納する、スタンドアロン環境で、動作することができる。システム900との再接続に際し、ノード908は、格納された値をコア904に発行し、その後コア904は、システム900全体に渡ってデータ属性が同期されるように、その格納された値をノード908に発行する。システムの同期は、それに対して属性データベース同期機能が実行される外科医コンソール906又は任意の他のシステムコンポーネントの切り離し及びその後の再接続に対して同様に動作する。
【0041】
適用可能な場合、本開示によって提供されるさまざまな実施形態は、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアとの組合せを用いて実装され得る。また、適用可能な場合、本明細書において説明されたさまざまなハードウェア構成要素及び/又はソフトウェア構成要素は、本開示の精神を逸脱することなくソフトウェア、ハードウェア、及び/又はそれら両方を含む複合的な構成要素に組み合わされ得る。適用可能な場合、本明細書において説明されたさまざまなハードウェア構成要素及び/又はソフトウェア構成要素は、本開示の範囲を逸脱することなくソフトウェア、ハードウェア、又はそれら両方を含む下位構成要素へ分けられ得る。加えて、適用可能な場合、ソフトウェア構成要素がハードウェア構成要素として実装され得る及びその逆も考えられる。
【0042】
プログラムコード及び/又はデータのような、本開示によるソフトウェアは、1又は複数のコンピュータ可読媒体に記憶され得る。本明細書において特定されたソフトウェアが、ネットワーク接続された及び/又はそれ以外の、1つ又は複数の汎用又は専用コンピュータ及び/又はコンピュータシステムを用いて実装され得ることも考えられる。適用可能な場合、本明細書において説明されたさまざまなステップの順序づけは、本明細書において説明された特徴を提供するために変更され、複合的なステップへ組み合わされる、及び/又は下位ステップへ分けられ得る。
【0043】
本明細書に開示された実施形態は、最小のシステムトラフィック並びに最小の衝突及び中断でシステムのノードを同期させるためのシステム及び方法を提供し得る。本明細書に開示された実施形態はまた、ノードをシステムに容易に接続し、切り離し、及び再接続すること可能に且つ最小の遅れで同期されることを可能にする、システムのノードを同期させるためのシステム及び方法を提供し得る。さらに、本明細書に開示された実施形態はまた、1つのノードにおけるディスプレイが最小の遅れで他のノードにおいて複製されることを可能にする、システムのノードを同期させるためのシステム及び方法を提供し得る。上で提供された例は、単なる例であり、限定することを意図するものではない。当業者は、本開示の範囲内であることが意図される開示された実施形態と一致する他のシステムを容易に考え出すであろう。そのようなものとして、本出願は、以下の特許請求の範囲によってのみ限定される。
【0044】
なお、本発明の実施形態によれば、少なくとも1つの第1の同期データベースを含む発行ノードであって、前記第1の同期データベースは:
複数の属性であって、前記属性のそれぞれが前記属性を識別するタグ及びデータを含む、複数の属性;
前記属性のそれぞれと関連付けられるフラグ;及び
購読者リスト;を含む、
発行ノード、並びに
少なくとも1つの第2の同期データベースを含む購読者ノード、を有し、
前記属性が前記少なくとも1つの第1の同期データベースに書かれるとき又は前記属性に含まれる前記データが修正され且つ前記購読者ノードにフラグ付きの前記属性を発行するとき、前記発行ノードは、前記属性に関連付けられる前記フラグをセットするように構成される。
【0045】
また、前記購読者ノードは、追加的に結合される二次購読者ノードのための二次発行ノードとして働くように構成され、前記二次発行ノードは、前記二次購読者ノードに新しい又は修正された属性を発行するように構成されてよい。
【0046】
また、前記発行ノードは、前記少なくとも1つの第1の同期データベースに格納される前記属性を広告する広告メッセージを送信するように構成され、
前記購読者ノードは、発見メッセージを送信するように構成されてよい。
【0047】
また、前記購読者ノードは、前記広告メッセージを受信し且つ購読することを望む前記少なくとも1つの第1の同期データベースに格納される前記属性を示す購読メッセージを送信してよい。
【0048】
また、前記発行ノードは、前記発見メッセージを受信し且つ応答メッセージを送信してよい。
【0049】
また、前記発行ノードはさらに、前記発行ノードが前記購読メッセージを受信するとき、所望の前記属性に関連付けられる前記フラグをセットするように構成されてよい。
【0050】
また、前記発行ノードはさらに、同期応答信号が前記購読者ノードから受信されるまで、前記所望の属性に対する修正を集めるように構成されてよい。
【0051】
また、前記発行ノードはさらに、心拍信号を前記購読者ノードに送信するように構成されてよい。
【0052】
また、前記発行ノードはさらに、前記購読者ノードが前記発行ノードにもはや結合されていないことを前記発行ノードが決定する場合、前記購読者ノードを全ての購読されている属性から購読を取り消すように構成されてよい。
【0053】
また、前記発行ノード及び前記購読者ノードは、前記ロボットシステムのコンポーネント、前記ロボットシステムの1若しくは複数のプロセッサ、又は前記1若しくは複数のプロセッサによって実行されている個別のタスクの少なくとも1つを有してよい。
【0054】
また、前記発行ノードは、第4の同期データベースを有する他のノードの発行された属性を購読することができる第3の同期データベースを含んでよい。
【0055】
また、前記第1の同期データベースは、前記発行ノードのプロセッサによって実行される同期データベースインスタンスを有し、前記第2の同期データベースは、前記購読者ノードのプロセッサによって実行される同期データベースインスタンスを有してよい。
【0056】
また、本発明の他の実施形態によれば、ロボットシステムのノードに渡ってデータを同期させるための方法であって、方法は:
発行ノードから、前記発行ノードで実行している同期データベースのサーバインスタンスに格納される属性を広告する広告メッセージを送信するステップ;
前記発行ノードに結合される購読ノードによって、前記広告メッセージを受信するステップ;
前記購読ノードによって、少なくとも1つの前記購読ノードが購読することを望む前記発行ノードで実行している同期データベースの前記サーバインスタンスに格納される前記属性を示す購読メッセージを送信するステップ;
前記発行ノードによって、前記発行ノードで実行している同期データベースの前記サーバインスタンスに保持される購読リストに前記購読ノードを加えるステップ;
前記発行ノードによって、購読される前記属性のそれぞれに対してフラグをセットするステップ;
前記発行ノードによって、フラグ付きの前記属性のそれぞれを含む同期パケットを前記購読ノードに送信するステップ;及び
送信された前記属性のそれぞれに対して前記フラグをクリアするステップ;を含む。
【0057】
また、前記購読ノードによって、発見メッセージを送信するステップ;
前記発行ノードによって、前記発見メッセージを受信するステップ;及び
前記発行ノードによって、前記購読ノードに応答メッセージを送信するステップ;をさらに含んでよい。
【0058】
また、前記フラグをセットするステップは:
前記属性が、前記発行ノードで実行している前記同期データベースの前記サーバインスタンスに書き込まれるとき、前記属性に含まれる前記データが修正されるとき、又は前記属性が前記少なくとも1つの購読ノードによって購読されるとき、前記フラグをセットするステップ、を含んでよい。
【0059】
また、前記購読ノードから前記発行ノードに同期応答信号を送信するステップ;及び
前記同期応答信号が受信されるまで、前記発行ノードで実行している前記同期データベースにおける前記属性に対する修正を集めるステップ;をさらに含んでよい。
【0060】
また、前記発行ノード及び前記購読ノードはそれぞれ、前記ロボットシステムのコンポーネント、又は前記ロボットシステムの1若しくは複数のプロセッサの少なくとも1つを有してよい。
【0061】
また、前記発行ノードによって、心拍信号を送信するステップ;及び
前記購読ノードによって、前記心拍信号を受信することに応じて、確認信号を送信するステップ;をさらに含んでよい。
【0062】
また、前記確認信号が受信されない場合、前記発行ノードによって、前記購読リストから前記購読ノードを外すステップ、をさらに含んでよい。
【0063】
また、前記クライアントデータベースによって、前記同期パケットのエラーをチェックするステップ、をさらに含んでよい。
【0064】
また、前記同期パケットのエラーをチェックするステップは:
前記購読ノードによって、前記同期パケットがエラーを含むかどうか決定するステップ;
前記購読ノードによって、エラー信号を前記発行ノードに送信するステップ;
前記発行ノードによって、前記購読された属性のそれぞれに対してフラグをセットするステップ;
前記発行ノードによって、リセットメッセージを前記購読ノードに送信するステップ;及び
前記発行ノードによって、フラグ付きの前記属性のそれぞれを含む新しい同期パケットを前記購読ノードに送信するステップ;をさらに含んでよい。
【0065】
また、本発明のさらに他の実施形態では、実行されるとき、ロボットシステムの1又は複数のプロセッサに前記ロボットシステムのノードを同期させる方法を実行させる、前記ロボットシステムの前記1又は複数のプロセッサによる実行のための命令を有する非一時的なコンピュータ可読媒体であって、前記方法が:
発行ノードから、前記発行ノードで実行している同期データベースのサーバインスタンスに格納される属性を広告する広告メッセージを送信するステップ;
前記発行ノードに結合される購読ノードによって、前記広告メッセージを受信するステップ;
前記購読ノードから前記発行ノードに購読メッセージを送信するステップであって、前記購読メッセージは、少なくとも1つの前記購読ノードが購読することを望む前記発行ノードで実行している前記同期データベースの前記サーバインスタンスに格納される前記属性を示す、ステップ;
前記発行ノードで実行している前記同期データベースの前記サーバインスタンスに保持される購読リストに前記購読ノードを加えるステップ;
前記発行ノードで実行している前記同期データベースの前記サーバインスタンスに購読される前記属性のそれぞれに対してフラグをセットするステップ;
前記発行ノードから前記購読ノードに同期パケットを送信するステップであって、前記同期パケットはフラグ付きの前記属性のそれぞれを含む、ステップ;及び
前記発行ノードで実行している前記同期データベースの前記サーバインスタンスの送信された前記属性のそれぞれに対する前記フラグをクリアするステップ;を含む。
【0066】
また、前記購読ノードから前記発行ノードに発見メッセージを送信するステップ;
前記発行ノードで前記発見メッセージを受信するステップ;及び
前記発行ノードから前記購読ノードに応答メッセージを送信するステップ;をさらに含んでよい。
【0067】
また、前記フラグをセットするステップは:
前記属性が、前記発行ノードで実行している前記同期データベースの前記サーバインスタンスに書き込まれるとき、前記属性に含まれる前記データが修正されるとき、又は前記属性が前記少なくとも1つの購読ノードによって購読されるとき、前記フラグをセットするステップ、を含んでよい。
【0068】
また、前記購読ノードから前記発行ノードに同期応答信号を送信するステップ;及び
前記同期応答信号が受信されるまで、前記発行ノードで実行している前記同期データベースにおける前記属性に対する修正を集めるステップ;をさらに含んでよい。
【0069】
また、前記発行ノード及び前記購読ノードはそれぞれ、前記ロボットシステムのコンポーネント、又は前記ロボットシステムの1若しくは複数のプロセッサの少なくとも1つを有してよい。
【0070】
また、前記発行ノードから前記購読ノードに心拍信号を送信するステップ;及び
前記心拍信号を受信することに応じて、前記購読ノードから前記発行ノードに確認信号を送信するステップ;をさらに含んでよい。
【0071】
また、前記確認信号が受信されない場合、前記発行ノードによって、前記購読リストから前記購読ノードを外すステップ、をさらに含んでよい。
【0072】
また、受信した前記同期パケットのエラーをチェックするステップ、をさらに含んでよい。
【0073】
また、前記同期パケットのエラーをチェックするステップは:
前記同期パケットがエラーを含むかどうか決定するステップ;
エラー信号を前記発行ノードに送信するステップ;
前記発行ノードで実行している前記同期データベースの前記サーバインスタンスにおいて前記購読された属性のそれぞれに対してフラグをセットするステップ;
前記発行ノードから前記購読ノードにリセットメッセージを送信するステップ;及び
前記発行ノードから前記購読ノードにフラグ付きの前記属性のそれぞれを含む新しい同期パケットを送信するステップ;をさらに含んでよい。