(57)【要約】      （修正有）【課題】ロボットシステムのノード間の更新された属性の購読及び発行を可能にするシステム及び方法を提供する。【解決手段】ロボットシステム１００は、属性１０８のそれぞれが属性を識別するタグ１１０及びデータ１１２を含む、複数の属性１０８、属性のそれぞれに関連付けられるフラグ１１４及び購読者リスト１１６を含む少なくとも１つの第１の同期データベース１０４を含む発行ノード１０２−１を含む。システムはまた、少なくとも１つの第２の同期データベース１０６を含む購読者ノード１０２−２を含む。発行ノードは、属性が少なくとも１つの第１の同期データベースに書かれるとき又は属性に含まれるデータが修正され、且つ、購読者ノードにフラグ付きの属性を発行するとき、属性に関連付けられるフラグをセットする。【選択図】図１
2018137758.tif 000002
【特許請求の範囲】
【請求項１】
発行ノードであって、
１又は複数のプロセッサと；
第１の同期データベースであって：
複数の第１の購読者の購読者リスト；
複数の第１の属性であって、前記複数の第１の属性のそれぞれの個々の属性がデータ及びタグを含み、前記タグは前記個々の属性を識別する、複数の第１の属性；及び
複数の第１のフラグであって、前記複数の第１のフラグのそれぞれの個々のフラグが、前記複数の第１の属性のうちの対応する属性及び前記複数の第１の購読者のうちの対応する購読者と関連付けられる、複数の第１フラグ；を含む、
第１の同期データベースと；
を含み、
前記発行ノードは：
前記複数の第１の属性の第２の属性に含まれる前記データが書かれる又は修正され且つ前記第２の属性が前記複数の第１のフラグの第２のフラグによって第１の購読者ノードに関連付けられる条件で、前記第２のフラグをセットし；且つ
設定され且つ前記第１の購読者ノードに関連付けられる前記複数の第１のフラグのそれぞれの個々のフラグに関して、前記複数の第１の属性のうちの前記の関連付けられる属性を前記第１の購読者ノードに発行する；
ように構成される、
発行ノード。
【請求項２】
前記発行ノードはさらに：
第２の購読者ノードから、前記複数の第１の属性の第３の属性を識別する第１の購読メッセージを受信し；
前記第１の購読メッセージを受信することに応じて、前記第２の購読者ノードが前記購読者リストにまだない場合に前記購読者リストに前記第２の購読者ノードを追加し且つ前記第２の購読者ノード及び前記第３の属性の両方に関連付けられる前記複数の第１のフラグの前記個々のフラグをセットする；
ように構成される、
請求項１に記載の発行ノード。
【請求項３】
前記発行ノードはさらに、前記複数の第１の属性を広告する広告メッセージを送信するように構成される、
請求項１に記載の発行ノード。
【請求項４】
前記発行ノードはさらに：
前記第１の購読者ノードから発見メッセージを受信し；且つ
前記発見メッセージに応じて前記第１の購読者ノードに発見応答メッセージを送信する；
ように構成され、
前記発見応答メッセージは、前記複数の第１の属性のリストを含む、
請求項１に記載の発行ノード。
【請求項５】
前記発行ノードはさらに、同期応答信号が前記第１の購読者ノードから受信されるまで、前記複数の第１の属性に対する修正を集めるように構成される、
請求項１に記載の発行ノード。
【請求項６】
前記発行ノードはさらに、準備完了信号が前記第１の購読者ノードから受信されるまで、前記第１の購読者ノードへの属性の発行を遅延させるように構成される。
請求項１に記載の発行ノード。
【請求項７】
前記発行ノードはさらに、前記第１の購読者ノードに関連付けられ且つ前記第１の購読者ノードに第４の属性を発行した後に前記複数の第１の属性からの前記第４の属性に関連付けられる、前記複数の第１のフラグの第３のフラグをクリアするように構成される、
請求項１に記載の発行ノード。
【請求項８】
手術システムのユニットにおいて具体化される、
請求項１乃至７のいずれか１項に記載の発行ノード。
【請求項９】
システムのノードに渡ってデータを同期させるための方法であって：
複数の第１の購読者の購読者リストを保持するステップ；
複数の第１の属性を保持するステップであって、前記複数の第１の属性のそれぞれの個々の属性がデータ及びタグを含み、前記タグは前記個々の属性を識別する、ステップ；
複数の第１のフラグを保持するステップであって、前記複数の第１のフラグのそれぞれの個々のフラグが、前記複数の第１の属性のうちの対応する属性及び前記複数の第１の購読者のうちの対応する購読者と関連付けられる、ステップ；
前記複数の第１の属性の第２の属性に含まれる前記データが書かれる又は修正され且つ前記第２の属性が前記複数の第１のフラグの第２のフラグによって第１の購読者ノードに関連付けられる条件で、前記第２のフラグをセットするステップ；並びに
設定され且つ前記第１の購読者ノードに関連付けられる前記複数の第１のフラグのそれぞれの個々のフラグに関して、前記複数の第１の属性のうちの前記の関連付けられる属性を前記第１の購読者ノードに発行するステップ；を含む、
方法。
【請求項１０】
第２の購読者ノードから第１の購読メッセージを受信するステップであって、前記第１の購読メッセージは、前記複数の第１の属性の第３の属性を識別する、ステップと；
前記第１の購読メッセージを受信することに応じて、前記第２の購読者ノードが前記購読者リストにまだない場合に前記購読者リストに前記第２の購読者ノードを追加するステップと；
前記第１の購読メッセージを受信することに応じて、前記第２の購読者ノード及び前記第３の属性の両方に関連付けられる前記複数の第１のフラグの前記個々のフラグをセットするステップと；をさらに含む、
請求項９に記載の方法。
【請求項１１】
前記複数の第１の属性を広告する広告メッセージを送信するステップをさらに含む、
請求項９に記載の方法。
【請求項１２】
前記第１の購読者ノードから発見メッセージを受信するステップと；
前記発見メッセージに応じて、前記第１の購読者ノードに発見応答メッセージを送信するステップであって、前記発見応答メッセージは前記複数の第１の属性のリストを含む、ステップと；をさらに含む、
請求項９に記載の方法。
【請求項１３】
同期応答信号が前記第１の購読者ノードから受信されるまで、前記複数の第１の属性に対する修正を集めるステップをさらに含む、
請求項９に記載の方法。
【請求項１４】
準備完了信号が前記第１の購読者ノードから受信されるまで、前記第１の購読者ノードへの属性の発行を遅延させるステップをさらに含む、
請求項９に記載の方法。
【請求項１５】
前記第１の購読者ノードに関連付けられ且つ前記第１の購読者ノードに第４の属性を発行した後に前記複数の第１の属性からの前記第４の属性に関連付けられる、前記複数の第１のフラグの第３のフラグをクリアするステップをさらに含む、
請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１３年２月１５日に出願された、米国仮出願第６１／７６５，５５９号、及び２０１４年２月１４日に出願された、米国非仮出願第１４／１８１，４９９号の優先権を主張し、当該出願はそれらの全体が参照により本出願に援用される。
【０００２】
本開示は、ロボットシステムのノードを同期させるためのシステム及び方法に関する。特に、本開示は、ロボットシステムのそれぞれのノードにおいて実行されることができる同期データベースに関し、同期データベースは、ロボットシステムのノード間の更新された属性の購読及び発行を可能にする。
【背景技術】
【０００３】
いくつかのアプリケーションは、通信に関して、高帯域幅要件並びに厳密な同期、待ち時間、及び信頼性要件を有する。例えば、ロボット支援手術は、実時間で制御及びフィードバック信号を伝達するために低遅延を必要とする。理想的には、マスタインプットを制御している外科医の動作とマスタに従動するロボットの動作との間はできる限り小さい遅れであるべきであるので、このようなアプリケーションの同期及び待ち時間要件は厳格である。
【０００４】
ロボット支援手術システムを含む、複雑なシステムは、システム内で共に働き、従って、同期されたままになる必要がある、一般にここでは「ノード」と称される、多くのコンポーネントを含む。これらの結合されたノードのそれぞれに対して、第１のノードが第２のノードにデータ要求を送信することによって同期が頻繁に実行され、このデータ要求に対して第２のノードは、要求されたデータを第１のノードに提供することによって要求に応答する。いくつかの場合、第１のノードは、第２のノード及び第３のノードの存在をチェックし、第２及び第３のノードが存在することが見出される場合、第１のノードはその後第２及び第３のノードにデータをプッシュする。第２又は第３のノードが第１のノードから切り離されその後再接続される場合、第１のノードは、第２又は第３のノードが第１のノードから切り離されたことを通知されないかもしれず、結果として再接続されたノードは、切り離しの間に第１のノードが送ったデータを取り損なうかもしれない。さらに、新しいノードが第１のノードに結合されるとき、第１のノードは新しいノードの存在をチェックしないかもしれず、したがって、何のデータも新しいノードに提供されないので、新しいノードにおけるデータは第１のノードのデータと同期されない。最終的に、ノードの存在を絶えずチェックしその後同期されたままにするためにノードのそれぞれにデータを送ることのシステムに対する必要は、システムを減速させ得る又はメッセージキューをオーバーフローさせ得る不必要なシステムトラフィックを作り得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
必要とされることは、システムのノードの自動的な同期を最小のシステムトラフィックで可能に且つシステムへの新しいノードの迅速な同期を可能にするシステム及び方法である。
【課題を解決するための手段】
【０００６】
幾つかの実施形態と一致して、ロボットシステムが提供される。ロボットシステムは、少なくとも１つの第１の同期データベースを含む発行（パブリッシュ）ノードを含み、第１の同期データベースは、複数の属性（ａｔｔｒｉｂｕｔｅｓ）であって、属性のそれぞれが属性を識別するタグ及びデータを含む、複数の属性、属性のそれぞれと関連付けられるフラグ、及び購読者（サブスクライバ）リストを含む。システムはまた、少なくとも１つの第２の同期データベースを含む購読者ノードを含む。属性が少なくとも１つの第１の同期データベースに書かれるとき又は属性に含まれるデータが修正され且つ購読者ノードにフラグ付き属性を発行するとき、発行ノードは、属性に関連付けられるフラグをセットするように構成される。
【０００７】
幾つかの実施形態と一致して、ロボットシステムのノードに渡ってデータを同期させるための方法も提供される。方法は、発行ノードから、発行ノードで実行している同期データベースのサーバインスタンスに格納される属性を広告する広告メッセージを送信するステップ、発行ノードに結合される購読（サブスクライブ）ノードによって、広告メッセージを受信するステップ及び購読ノードによって、少なくとも１つの購読ノードが購読することを望む発行ノードで実行している同期データベースのサーバインスタンスに格納される属性を示すサブスクリプション（購読）メッセージを送信するステップ、を含む。方法はまた、発行ノードによって、発行ノードで実行している同期データベースのサーバインスタンスに保持される購読リストに購読ノードを加えるステップ、発行ノードによって、購読される属性のそれぞれに対してフラグをセットするステップ、発行ノードによって、フラグ付き属性のそれぞれを含む同期パケットを購読ノードに送信するステップ、及び送信された属性のそれぞれに対してフラグをクリアするステップ、を含む。
【０００８】
さらに幾つかの実施形態と一致して、実行されるとき、ロボットシステムの１又は複数のプロセッサにロボットシステムのノードを同期させる方法を実行させる、ロボットシステムの１又は複数のプロセッサによる実行のための命令を有する非一時的なコンピュータ可読媒体も提供され、方法は、発行ノードから、発行ノードで実行している同期データベースのサーバインスタンスに格納される属性を広告する広告メッセージを送信するステップ、発行ノードに結合される購読ノードによって、広告メッセージを受信するステップ、及び購読ノードから発行ノードに購読メッセージを送信するステップを含み、購読メッセージは、少なくとも１つの購読ノードが購読することを望む発行ノードで実行している同期データベースのサーバインスタンスに格納される属性を示す。方法はまた、発行ノードで実行している同期データベースのサーバインスタンスに保持される購読リストに購読ノードを加えるステップ、発行ノードで実行している同期データベースのサーバインスタンスに購読される属性のそれぞれに対してフラグをセットするステップ、発行ノードから購読ノードに同期パケットを送信するステップであって、同期パケットはフラグ付き属性のそれぞれを含む、ステップ、及び発行ノードで実行している同期データベースのサーバインスタンスの送信された属性のそれぞれに対してフラグをクリアするステップ、を含む。
【０００９】
これらの及び他の実施形態は、以下の図に関して、以下にさらに詳細に記載される。
【図面の簡単な説明】
【００１０】
【図１】幾つかの実施形態と一致する、同期データベースのインスタンスを使用するシステムのノードを同期させるためのシステムを示す図である。
【図２】幾つかの実施形態と一致する、同期パケットを示す図である。
【図３】幾つかの実施形態と一致する、複数の同期データベースインスタンスがノードで実行しているシステムを示す図である。
【図４Ａ】幾つかの実施形態と一致する、サーバデータベースとクライアントデータベースとの間の属性を同期させる方法を示すフローチャートである。
【図４Ｂ】幾つかの実施形態と一致する、サーバデータベースとクライアントデータベースとの間の属性を同期させる方法を示すフローチャートである。
【図５】幾つかの実施形態と一致する、エラー検出方法を示すフローチャートである。
【図６】幾つかの実施形態と一致する、ロボットシステムで使用されている図１のシステムの例である。
【図７】幾つかの実施形態と一致する、ロボットシステムで使用されている図１のシステムの他の例である。
【図８】幾つかの実施形態と一致する、ロボットシステムで使用されている図１のシステムの他の例である。
【図９】幾つかの実施形態と一致する、ロボット支援手術システムで使用されている図１のシステムの例である。  図面において、同じ記号を有する要素は、同じ又は同様の機能を有する。
【発明を実施するための形態】
【００１１】
以下の記載では、幾つかの実施形態を記載する特定の詳細が説明される。しかし、開示された実施形態がこれらの特定の詳細の幾つか又は全てなしで実施され得ることは、当業者に明白となるであろう。提示される特定の実施形態は、説明のためであって、限定するものではないことが意味される。当業者は、ここに具体的に記載されていないが、他の要素がこの開示の範囲及び精神の中にあることを理解することができる。様々な機械的、組成上の、構造的、電気的、及び動作上の変更が、この記載及び請求項の精神及び範囲から離れることなしに行われ得る。場合によっては、よく知られた回路、構造、及び技法は、本発明をあいまいにしないように、詳細に示されていない。さらに、単数形“ａ”、“ａｎ”、及び“ｔｈｅ”は、文脈上他に指定のない限り、複数形も同様に含むことが意図される。用語「有する」、「有している」、「含む」等は、規定された特徴、ステップ、操作、プロセス、要素、及び／又はコンポーネントの存在を特定するが、１又は複数の他の特徴、ステップ、操作、プロセス、要素、コンポーネント、及び／又は群の存在または追加を除外しない。結合されるように記載される構成要素は、電気的又は機械的に直接結合され得る、或いは１又は複数の中間構成要素を介して間接的に結合され得る。
【００１２】
図１は、幾つかの実施形態と一致する、同期データベースのインスタンスを使用するシステム１００のノードを同期させるためのシステム１００を示す図である。図１に示されるように、システム１００は、複数の相互接続されたノード１０２−１乃至１０２−Ｎ（「ノード１０２」として集合的に称される）を含む。幾つかの実施形態と一致して、各ノード１０２は、装置、ロボットシステムのコンポーネント、１又は複数のプロセッサ、１又は複数のプロセッサで実行されている個々のタスクであり得る。ノード１０２は、１又は複数のプロセッサを有し且つ１又は複数のプロセッサによる実行のための非一時的なコンピュータ可読媒体に格納された命令を読むことができるハードウェア及び／又はソフトウェアの任意の適切な組み合わせを含み得る。このような命令は、ここに記載されるように、同期データベースの１又は複数のインスタンスを作るための命令を含み得る。
【００１３】
図１に戻ると、ノード１０２は、第２のノード１０２−２に結合される第１のノード１０２−１を含み、この第２のノードは、今度は複数のノード１０２−３乃至１０２−Ｎに結合される。図１に示されていないが、ノード１０２−１はノード１０２−２での接続と同様の方法で、追加的なノードに直接結合され得る。幾つかの実施形態と一致して、メモリ（図示せず）が各ノード１０２と関連付けられる。さらに、１又は複数のプロセッサもまた、各ノード１０２と関連付けられることができる。同期データベースのインスタンスを作るための命令がメモリに記憶されることができ、１又は複数のプロセッサは、各ノード１０２において同期データベースの１又は複数のインスタンスを作るためにこれらの命令を実行することができる。幾つかの実施形態と一致して、同期データベースは、（ｉ）状態又はイベントのような、データ属性を格納する、（ｉｉ）発行ノードと称される、１つのノードのデータ変化のアグリゲーション（ａｇｇｒｅｇａｔｉｏｎ）をサポートする、及び（ｉｉｉ）１又は複数の購読ノードへのその変化したデータの発行をサポートするソフトウェアコンテナオブジェクトである。同期データベースは、発行ノードを購読するために及びデータ変化を受信する或いはデータ変化を１又は複数の購読ノードに発行するために必要な機能を実行するように各ノードで実行される１又は複数の同期アプリケーションの実行を通じてこれを達成し得る。同期アプリケーションは、発行ノードのための発行アプリケーション及び購読ノードのための購読アプリケーションと称され得る。
【００１４】
図１に示されるように、ノード１０２−１は、同期データベース１０４のサーバインスタンスを実行しており、発行ノードとして働き、ノード１０２−２は同期データベース１０６のクライアントインスタンスを実行しており、購読ノードとして働く。同期データベース、サーバインスタンス及びクライアントインスタンスの両方は、属性１０８と称される、データベクトルのセット、購読ノード１１６のリスト、及び同期を管理するために使用され得る追加的な状態（図示せず）を格納し得る。属性１０８は、システム１００の状態又はイベントを含むデータを参照し得るとともに、さらに、カウンタ及びタイムスタンプを含み得る。属性１０８はまた、システム１００の挙動を記述するために使用される挙動要素であるデータを参照し得る。幾つかの実施形態と一致して、属性１０８は、１つのノードに生じる状態又はイベントの視覚的表現であり得るユーザインタフェース（ＵＩ）状態又はイベントを参照することができ、この１つのノードに生じる状態又はイベントは、イベントの追加的なノードを更新するために及び／又は追加的なノードのこれらの状態又はイベントの視覚的表現を複製するために追加的なノードに発行されることができる。属性１０８はまた、図１に示されるノード１０２−１に関連付けられるデータベース１０４及びノード１０２−２に関連付けられるデータベース１０６のような、１又は複数のデータベースに格納され得る。
【００１５】
図１に示されるように、属性１０８は、タグ１１０、データ１１２、及びセット又はクリアされることができる関連付けられるフラグ１１４を含む。ノード１０２−１に関連付けられるデータベース１０４及びノード１０２−２に関連付けられるデータベース１０６は３又は４つの属性のみを有して示されているが、属性の数は、各ノード１０２の同期データベースインスタンスのために割り当てられたメモリによってのみ制限される。幾つかの実施形態と一致して、データベース１０４又はデータベース１０６に格納された属性１０８は、データベース１０４又はデータベース１０６に関連付けられたノードが要求ノードからクエリを受信するとき、要求ノードに送信される。
【００１６】
同期データベースに格納された各属性１０８は、タグ１１０によって一意に識別される。幾つかの実施形態と一致して、タグ１１０は、３２ビットタグであり得るとともに、ハッシュテーブル検索機能を使用することによって効率的なデータベース操作をサポートし得る。フラグ１１４は、属性１０８が、同期属性１０８を購読クライアントデータベース１０６に発行することを必要とするかどうかを示す。属性１０８がデータベース１０４に書かれる又はそうでなければデータベース１０６に格納された対応する属性１０８が異なり得るようにデータベース１０４において修正されるとき、フラグ１１４はセットされる。ノード１０２−１は１又は複数の属性１０８を修正することができ、各修正された属性１０８に対してフラグ１１４をセットする。ノード１０２−１は次に、ノード１０２−２のような購読ノード１０２にセットされたフラグ１１４を持つデータベース１０４に格納された全ての属性１０８を発行するために、その関連付けられたデータベース１０４の「発行」方法をコールし得る。属性１０８が発行された後、フラグ１１４はデータベース１０４においてクリアされる。フラグ１１４は、各購読ノード１０２に対するビットを含むフィールドであり得る。
【００１７】
図１に示されるように、データベース１０４はまた、購読リスト１１６を含み、この購読リストは、ノード１０２のリストであり且つデータベース１０４に格納された１又は複数の属性１０８に購読されているそれらの関連付けられたデータベースである。幾つかの実施形態と一致して、データベース１０４は、その格納された属性１０８を広告する。このような実施形態では、データベース１０４は、ノード１０２−２のような、他のノードが、データベース１０４に格納された１又は複数の属性１０８を完全に又は部分的に購読すべきかを決定することができるように、属性１０８及びそれが格納しているデータを示す信号を全ての結合されたノードに周期的に送信し得る。例えば、データベース１０４は、購読ノード１０２との初期接続に際し又はデータベース１０４が起動するとき、広告メッセージを送信し得る。同時に、データベース１０６は、データベース１０６が必要とするデータを格納する関連付けられるデータベースを有するノードを識別するよう試みるために発見メッセージを周期的に送信する。例えば、データベース１０６は、データベース１０４を有する発行ノード１０２−１との初期接続に際し又はデータベース１０６が起動するとき、発見メッセージを送信し得る。データベース１０４が発見メッセージを受信する又はデータベース１０６が広告信号を受信するとき、データベース１０４及びデータベース１０６はリンクを確立する。広告信号又は発見応答信号の受信に際し、データベース１０６は、購読メッセージをデータベース１０４に送信し、２つのノードのリンク及びノード１０２−２に関連付けられるデータベース１０６のノード１０２−１に関連付けられるデータベース１０４に格納された１又は複数の属性１０８の購読を確立する。
【００１８】
ノード１０２−２及びその関連付けられるデータベース１０６は、データベース１０４に格納される全ての属性１０８を購読し得る又は幾つかの属性のみを購読し得る。各ノード１０２は、購読ノードを一意に識別するために購読リスト１１６に格納される一意識別子を有し得る。ノード１０２がデータベース１０４に格納される属性１０８を購読するとき、購読される属性が修正されるとき、フラグ１１４がセットされるように、ノードは、各購読される属性１０８に対してフラグ１１４を割り当てられる。ノード１０２がサーバデータベース１０４を最初に購読するとき、購読される全ての属性１０８はセットされたフラグ１１４を有する。ノード１０２−２及びその関連付けられるデータベース１０６のような購読ノードは次に、それがセットされたフラグ１１４を有する全ての属性を受信する準備ができていることを示す応答メッセージをデータベース１０４に送信し得る。データベース１０４が、ノード１０２−２及びその関連付けられるデータベース１０６のような購読ノードからの応答メッセージを待つ間、データベース１０４は、購読された属性１０８への任意のさらなる変更又は修正及びその結果セットされたフラグ１１４を集める。応答メッセージを受信した後、データベース１０４は次にセットされたフラグ１１４を有する属性を発行し、次にフラグ１１４をクリアする。属性１０８が受信された後、それらはエラーをチェックされ、エラーが無い場合、購読ノードのデータベースは、データベース１０４に確認メッセージを送信する。データベース１０４が確認メッセージを待つ間に修正された任意の購読属性１０８が、確認メッセージを受信した後に購読ノードのデータベースに発行される。受信ノードのデータベースが、受信属性１０８がエラーを含むことを決定する場合、データベースは、エラー状態を入力し、データベース１０４が購読属性を再送信することを要求する。属性１０８を発行する方法は、以下に図４を参照してさらに論じられる。
【００１９】
ノード１０２−２がノード１０２−１におけるデータベース１０４に格納される属性１０８を購読するために同期データベースのクライアントインスタンスを実行するのと全く同じように、ノード１０２−３乃至１０２−Ｎもまた、ノード１０２−２における同期データベースの属性を購読するために同期データベースのクライアントインスタンスを実行し得る。
【００２０】
幾つかの実施形態と一致して、同期データベースインスタンスは、受信した属性を下流のノードに再発行するためにクライアント及びサーバの両方として働き得るように、ダブルバッファされ得る。例えば、ノード１０２−２は、ノード１０２−１のデータベース１０４に格納された属性を購読するために同期データベースのクライアントインスタンスを実行し得る。データベース１０４から受信される（更新された状態を持つ）属性、場合によりスパニング（ｓｐａｎｎｉｎｇ）複数同期パケットは、ノード１０２−２の第１の非アクティブ／「バックグラウンド」バッファに格納される。同時に、ノード１０２−２の第２のアクティブ／「フォアグラウンド」バッファに格納される同じ属性（現在の状態を持つ）が購読ノード１０２−３乃至１０２−Ｎに発行されることができる。ノード１０２−１と１０２−２との間の同期更新が完了するとき、バックグラウンド及びフォアグラウンドバッファは、新しいフォアグラウンドバッファがノード１０２−１から受信した最新の属性を有するように、交換される。その後、ノード１０２−２において更新されたフォアグラウンドバッファに保持される属性１０８は、下流のノード１０２−３乃至１０２−Ｎを更新するために使用される。ノード１０２−２は、ノード１０２−１からバックグラウンドバッファにそしてその後フォアグラウンドバッファに受信された、属性１０８を、ノード１０２−２から属性を受信することを購読している任意のノード１０２−３乃至１０２−Ｎに再発行する。記載された実施形態では、クライアントインスタンスが記載されるように属性１０８を再発行することができるとき、ノード１０２−２が、ノード１０２−１から受信される属性１０８をノード１０２−３乃至１０２−Ｎに発行するためにサーバインスタンスを実行する必要はない。しかし、ノード１０２−２は、図３を参照して以下に記載されるように、同期データベースのサーバインスタンス及びクライアントインスタンスの両方を実行することができる。
【００２１】
さらに、ノード１０２−２は受信した属性を下流ノードに再発行するためにダブルバッファされているように記載されているが、ノードが受信した属性を下流ノードに再発行していないとしても、他のノードを購読する任意のノード１０２はダブルバッファされていることから利益を得ることができる。例えば、ノード１０２−３のような購読ノードは、以下に、図２を参照してさらに記載されるように、同期パケットで、１０２−２のような発行ノードから修正された属性を受信し得る。これらの同期パケットは、ノード１０２−３によって受信され、それらが受信されるときバックグラウンドバッファに格納される。いったんノード１０２−３が特定の同期動作のために同期パケットを受信すると、バックグラウンドバッファはフォアグラウンドバッファと交換され、ノード１０２−３に集合したトランザクションの微小の見方を与え、ノード１０２−３がちょうど交換されたフォアグラウンドバッファに格納されることになるさらなる同期パケットを受信することを可能にし、このフォアグラウンドバッファは今やバックグラウンドバッファとして働く。
【００２２】
幾つかの実施形態と一致して、データベースを有する１０２−１のような発行ノードは、その属性１０８を購読する、データベース１０６を有するノード１０２−２のような、これらのノード１０２に心拍信号を送信し得る。心拍信号は、属性の無い同期パケットを有する同期更新信号であり得る。幾つかの実施形態と一致して、心拍信号は、属性同期の後、発行ノード１０２−１から周期的に送信されることができ、周期的送信は各属性同期の後にリセットされる。心拍信号を受信するとき、データベース１０６は、同期信号として心拍信号を見るとともに、まるで信号が更新された属性を含むように応答メッセージを送信する。クライアントデータベース１０６を有する、ノード１０２−２のような購読ノードは、この心拍信号を周期的に受信し、したがって、データベース１０４がオンラインであり且つデータベース１０６が、購読している更新された属性を受信することを認識している。購読ノードが周期的な心拍信号を受信することを停止する場合、ノード１０２−１のデータベース１０４がオフラインであり且つ更新された属性を提供しないことを認識する。データベース１０６は次に、発行ノードから送信された広告メッセージを分析し始め得る、発見メッセージをサーバノードに発し始め得る、及び所望の属性を有する発行ノードを購読し得る。幾つかの実施形態では、例えば、発行と購読ノードとの間の通信断絶の後、ノード１０２−２のデータベース１０６は、所望の属性を受信するためにノード１０２−１のデータベース１０４を再講読し得る。
【００２３】
任意の購読ノード１０２のデータベースが、受信される応答メッセージの欠如のために、購読ノード及び／又はその関連付けられるデータベースが「死んでいる」と発行ノードがみなすのに十分な所定の期間オフラインになる場合、発行ノードのデータベースは、購読ノード及びその関連付けられるデータベースをその購読リストから外す。いったん購読ノードがオンラインに戻ると、それは、それが以前に行ったのと同じ方法で、発行ノードのデータベースに格納された１又は複数の属性を再講読し得る。すなわち、再講読ノード１０２は、属性１０８及びその関連付けられるデータベースから利用可能なデータを示す発行ノードから送信された広告メッセージを受信する、又はそれが購読することを望む属性を示す発見メッセージを送信する、及びその後発行ノードのデータベースに格納された１又は複数の属性１０８へのメッセージを購読する。発行ノードのデータベースはその後その購読者リスト１１６に再講読ノードを再び加え、示された属性１０８のそれぞれに対してフラグ１１４をセットする。再講読ノードのデータベースから発せられた初期「同期−応答」の受信に際し、発行ノードのデータベースは、セットされたフラグ１１４を持つ属性を発行する。再講読ノード１０２のデータベースはその後、その購読属性１０８への任意の更なる修正を受信する。
【００２４】
図２は、幾つかの実施形態と一致する、同期パケットを示す図である。発行ノードのデータベースが購読ノード１０２に属性１０８を発行するとき、属性１０８は同期パケット２００として送信される。同期パケット２００は、パケットヘッダ２０２及びパケットボディ２０４を含む。パケットボディ２０４は、同期ヘッダ２０６及び同期ペイロード２０８の中に同期されることになる属性１０８を含む。同期されることになる属性１０８のそれぞれは、属性ヘッダ２１０及び属性ペイロード２１２を含み得る。幾つかの実施形態と一致して、同期ヘッダ２０６は、（リセット、開始、継続、終了のような）同期状態、同じ発行イベントで発行されている属性のグループに関連付けられるシリアルナンバ、及びパケット数を含み得る。属性ヘッダ２１０は、属性タグ１１０、属性の最終修正のタイムスタンプ、及び属性ヘッダ２１０に続く属性ペイロード２１２の長さを含み得る。幾つかの実施形態と一致して、属性ヘッダ２１０はまた、属性ペイロードが分割され且つ多数の同期パケット２００に渡って送信されることを可能にするオフセットを含み得る。
【００２５】
幾つかの実施形態と一致して、図１に示されるデータベースのような、発行ノードのデータベースが、セットされたフラグ１１４を有する属性１０８を識別し且つノード１０２−２のデータベース１０６のような、購読ノードのデータベースに発行するためにこれらの属性を準備する。発行ノードのデータベースは次に、属性１０８を同期パケット２００に配置することができ、この同期パケットの中では、先頭のパケットは同期ヘッダ２０６において「開始」として示され、後続のパケットは、同期ヘッダ２０６において「継続」として示され、最終のパケットは同期ヘッダ２０６において「終了」として示される。幾つかの実施形態と一致して、２つの同期パケットのみが配置される場合、それらはそれぞれ、同期ヘッダ２０６において「開始」及び「終了」として示される。１つの同期パケットのみが配置される場合、それは、同期ヘッダ２０６において「終了」として示される。いったん同期パケット２００が構成されると、それらはその後、発行ノードのデータベースによって送信され、購読ノードのデータベースによって受信される。各同期パケット２００が購読ノードのデータベースによって受信されるとき、属性１０８は、アンパックされ、データベースに書き込まれる。いったん購読ノードのデータベースが「終了」指示を有する同期ヘッダ２０６を処理すると、確認メッセージが発行ノードに送られる。その後、幾つかの実施形態と一致して、購読ノードは、発行ノードとして働き、属性をその購読ノード１０２に発行する。
【００２６】
図３は、幾つかの実施形態と一致して、複数同期データベースインスタンスがノード１０２で実行しているシステムを示す図である。図３に示されるように、各ノード１０２は、複数同期データベースインスタンスを実行することができる。例えば、図３に示されるように、ノード１０２−１は、（ｉ）購読ノード１０２−２及び関連付けられるデータベース１０６に属性を発行するための同期データベース１０４のサーバインスタンス、及び（ｉｉ）ノード３０４及びその関連付けられるデータベース３０６を購読する同期データベースインスタンス３０２のクライアントインスタンスの両方を実行している。したがって、データベース３０２は、購読者リスト３１６に記されるように、データベース３０６の属性３０８に加入（購読）され、データベース３０２は、これらの属性３０８がデータベース３０６に書き込まれる又はそうでなければ修正されるとき、これらの属性を受信する。同時に、データベース１０４は、書き込まれた又はそうでなければ修正された属性１０８を、購読ノード１０２−２のデータベース１０６に及び、もし購読されるとしたら、追加的に結合されたノード３１０−１乃至３１０−Ｎに発行する。各ノード１０２、３０４、及び３１０は、購読ノード及び発行ノードの両方であることができるように、同期データベースの複数のインスタンスを実行することができる。そして、幾つかの実施形態と一致して、単一ノードで実行しているデータベースの１又は複数は、上述のようにダブルバッファされ得る。
【００２７】
したがって、単一ノードは、発行及び購読ノードの両方であることができ、これらの発行及び購読機能は、単一属性データ同期データベース又は複数属性データ同期データベースのいずれかを用いて実行され得る。単一ノードは、属性の第１のセットを１又は複数のノードの対応する第１のセットに及び属性の第２のセットを１又は複数の購読ノードの対応する第２のセットに発行し得る。同様に、単一ノードは、第１の発行ノードから属性の第１のセットを及び第２の発行ノードから属性の第２のセットを購読し得る。そして、心拍信号のような、上述の様々な特徴は、様々な同期データベースの１又は複数の特徴であり得る。加えて、幾つかの実施形態と一致して、相互接続されたノードのセットが単に１つの下流方向だけではなく両方向での属性更新を実行し得る。
【００２８】
図４Ａ及び４Ｂは、幾つかの実施形態と一致する、発行ノードと購読ノードとの間の属性を同期させる方法を示すフローチャートである。特に、図４Ａは、ノード１０２−１のデータベース１０４によって実行されるアクションを示し、図４Ｂは、ノード１０２−２のデータベース１０６によって実行されるアクションを示す。説明のために、図４Ａ及び４Ｂに示される方法は、図１−３を参照して記載される。図４Ａ及び４Ｂに示される方法は、ロボットシステムのメモリ又はノード１０２に関連付けられるメモリに入れられた命令に含まれ得るとともに、ロボットシステムに含まれる又はノード１０２に関連付けられる１又は複数のプロセッサによって実行され得る。
【００２９】
図４Ａ及び４Ｂに示されるように、同期データベース１０４のサーバインスタンスを有する発行ノード１０２−１は、広告メッセージを周期的に送信し（４０１）、その上で実行している同期データベース１０６のクライアントインスタンスを有するノード１０２−２のような、購読ノード１０２は、発見メッセージを周期的に送信する（４０２）。例えば、データベース１０４及びクライアントデータベース１０２はそれぞれ、データベース１０４を有する発行ノード１０２−１とデータベース１０６を有する購読ノード１０２との間の初期接続に際し又はデータベース１０４及び１０６が起動するとき、広告メッセージ及び発見メッセージを送信し得る。幾つかの実施形態と一致して、広告メッセージは、データベース１０４に格納される属性１０８に関する情報を含み得る。発見メッセージは、購読ノード１０２−２のデータベース１０６が必要とする属性１０８を示し得る。ノード１０２−１のデータベース１０４がノード１０２−２からの発見メッセージを受信する（４０３）とき、発見応答メッセージを購読ノードに送り返す（４０４）。購読ノード１０２−２が、発行ノードから広告メッセージを受信する（４０５）又は発行ノードから発見応答メッセージを受信する（４０６）とき、サーバ発見コールバック（４０７）が購読ノード１０２−２のデータベース１０６によって起動され、データベース１０４を有する発行ノード１０２−１が発見されていることを購読ノードに知らせる。購読ノード１０２−２はその後、追加購読者メッセージを発行ノード１０２−１に送信する（４０８）。幾つかの実施形態と一致して、追加購読者メッセージは、どの属性を購読ノード１０２−２が購読することを望むかを示し得る。発行ノード１０２−１が購読ノード１０２−２から追加購読者メッセージを受信するとき、発行ノード１０２−１のデータベース１０４は、ノード１０２−２を購読者として追加し（４０９）且つそれを購読者リスト１１６に追加する。購読ノード１０２−２を購読者として追加することはまた、購読者が追加されていることを発行ノード１０２−１に知らせる購読者追加コールバック（４１０）を起動する。いったん購読ノード１０２−２が発行ノード１０２−１のデータベース１−４に購読者として加えられると、データベース１０４は全ての購読属性に対してフラグ１１４をセットし（４１１）、購読ノード１０２−２からの同期応答メッセージを待つ（４１２）。データベース１０４が購読ノード１０２−２からの同期応答メッセージを待つ間、同期応答メッセージが受信されるまで、属性１０８に対する修正がデータベース１０４に集められる。したがって、データベース１０６が、それが受け取ることが出来る情報の量のみを受信するように、購読ノード１０２−２のデータベース１０６に送信される情報の組み込み制限がある。
【００３０】
図４Ａ及び４Ｂに戻ると、購読ノード１０２−２が同期応答メッセージを送信（４１３）した後、同期パケットが発行ノード１０２−１によって送信されることを待つ（４１４）。いったん発行ノード１０２−１が購読データベース１０２−２から同期応答メッセージを受信すると、発行ノード１０２−１のデータベース１０４は、購読ノード１０２−２に購読されるいずれかの属性がセットされたフラグ１１４を有するかどうかを決定する（４１５）。発行ノード１０２−１のデータベース１０４が、１又は複数の属性の購読者としてクライアントデータベース１０６にちょうど加えられた場合、全ての属性１０８に対するフラグ１１４はセットされる。そうでなければ、属性１０８に対するフラグ１１４は、属性１０８が修正されるとき、セットされ、このデータベース１０４は、修正属性コールが発行アプリケーションから受信される（４１６）とき、処理する。属性１０８がセットされたフラグ１１４を有さない場合、データベース１０４は、アイドル状態に入り、サーバアプリケーションからの発行コールを待つ（４１７）。データベース１０４が、セットされたフラグ１１４を有する属性１０８がまだあることを決定する場合及び／又はデータベース１０４が発行コール（４１８）を受信するとき、発行ノード１０２−１のデータベース１０４は、セットされたフラグ１１４を有する属性１０８を含む１又は複数の同期パケット２００を発行し（４１９）、全ての発行属性１０８に対するフラグ１１４をクリアし（４２０）、その後、購読ノード１０２−２からの同期応答信号を待つことに進む（４１２）。購読ノード１０２−２のデータベース１０６が発行ノード１０２−１から１又は複数の同期パケットを受信する（４２１）とき、データベース１０６は、その中に格納された属性１０８を更新し（４２２）、受信した全ての同期パケットに対して、受信したパケットが同期ヘッダ２０６の「終了」として示される最終パケットであるかどうかを確かめる（４２３）。購読ノード１０２−２のデータベース１０６が、受信した同期パケット２００が最終パケットでないことを決定する場合、発行ノード１０２−１のデータベース１０４からの追加的な同期パケット２００を待ち続ける（４１４）。受信した同期パケット２００が最終パケットである場合、購読ノード１０２−２のデータベース１０６は、クライアント更新コールを開始し（４２４）、このクライアント更新コールは、同期応答メッセージを発行ノード１０２−１に送り（４１３）且つノード１０２−３乃至１０２−Ｎのような、任意の下流購読者に更新された属性１０８を再発行する（４２５）。図４Ａ及び４Ｂに示されていないが、ステップ４２１と４２２との間で、クライアントデータベースは、受信した同期パケット２００にエラー検出を実行し得る。エラー検出方法の例は、以下に、図５を参照して記載される。
【００３１】
図５は、幾つかの実施形態と一致するエラー検出方法を示すフローチャートである。説明のために、図５に示される方法は、図１−３を参照して記載される。図５に示される方法は、ロボットシステムの又はノード１０２に関連付けられるメモリに入れられた命令に含まれ得るとともに、ロボットシステムに含まれる又はノード１０２に関連付けられる１又は複数のプロセッサによって実行され得る。
【００３２】
図５に示されるように、ノード１０２−１のような発行ノードから同期パケット２００を受信した後、ノード１０２−２のような、購読ノードは、同期パケット２００のエラーをスキャンする（５０２）。同期パケット２００にエラーが見つからない場合、購読ノード１０２−２のデータベース１０６は、属性がアンパックされデータベース１０６に書きこまれる（５０４）ように、同期パケットを普通に処理する。エラーが検出される場合、エラー信号が購読ノード１０２−２によって発行ノード１０２−１に送信される（５０６）。購読ノード１０２−２はその後、「開始」、「継続」、又は「終了」指示を持つ同期ヘッダ２０６を有する如何なるさらに受信される同期パケット２００も廃棄されるエラー状態に入る（５０８）。いったん発行ノード１０２−１がエラー信号を受信すると、データベース１０４は、購読ノード１０２−２が購読されている全ての属性に対してフラグ１１４をセットする（５１０）。発行ノード１０２−１はその後、「リセット」指示を持つ同期ヘッダ２０６を有する同期パケット２００であり得るリセットメッセージを購読ノード１０２−２に送信する（５１２）。幾つかの実施形態と一致して、リセットメッセージは、如何なるペイロードも含まなくてもよく、購読ノード１０２−２のデータベース１０６によって受信される属性の予想シーケンスをリセットするように働く。発行ノード１０２−１はその後、フラグ付き属性を含む同期パケット２００を購読ノード１０２−２に送信し（５１４）、購読ノード１０２−２のデータベース１０６は再び同期パケット２００のエラーをスキャンする（５０２）。幾つかの実施形態と一致して、他のエラーが発見される場合、他のエラー信号が送られ、ステップ５０６−５１４が再び実行される。さらに幾つかの実施形態と一致して、発行ノード１０２−１のデータベース１０４は、同期パケット２００を購読ノード１０２−２にうまく送信しようとする試みの数を数えるカウンタを含むことができ、カウンタが所定の数に達する場合、送信を中止する。データベース１０４はその後、エラーが発生したことを記録することができ、データベース１０４がタイムアウトコールバックで安全目的のために任意のアクションを取ること又はエラーを修正することを可能にするタイムアウトを発生させることができる。カウンタは、発行ノード１０２−１が成功した送信を示す購読ノード１０２−２からの確認メッセージを受信するとき、リセットされ得る。
【００３３】
図１−５に記載されるような実施形態は、ロボットシステムのノードを最小のシステムトラフィック及び遅れで同期させるためにロボットシステムで使用され得る。幾つかの実施形態はまた、ノードを最小のシステムトラフィック及び遅延で同期させるためにロボット支援手術システムのノードを同期させるようにロボット支援手術システムで使用されることができ、システムを信頼性高くし、外科医のアクションに対する準リアルタイム応答（例えば、外科医が、システムコンポーネントに動く又は機能するように命令することと実際の動作又は機能との間で遅れを知覚しない応答）を提供する。システム１００の使用の例は、以下に、図６−９に記載される。
【００３４】
図６は、ロボットシステムに使用されているシステム１００の例である。図６に示されるように、ロボットシステム６００は、第２のユニットコントローラ６０４に結合される第１のユニットコントローラ６０２を含む。ユニットコントローラ６０２及び６０４のそれぞれは、示されるようにサブシステムスーパーバイザ６０６及び６０８にそれぞれ結合される。サブシステムスーパーバイザ６０６は、複数の機械的マニピュレータ６１２−１乃至６１２−Ｎに結合されるディスパッチャ６１０を含む。サブシステムスーパーバイザ６０８は、複数の機械的マニピュレータ６１６−１乃至６１６−Ｎに結合されるディスパッチャ６１４を含む。幾つかの実施形態と一致して、各ユニットコントローラ、ディスパッチャ、及びマニピュレータは、図１及び３に対して上述されたノード１０２−１乃至１０２−Ｎに対応し得る。さらに、各マニピュレータは、ロボットシステム６００の異なる機械的な部分（例えば、直列運動学的チェーンにおける異なるリンク、異なるアクチュエータ、異なるセンサ、異なるシステムサブグループ、等）に対応し得る。
【００３５】
幾つかの実施形態にしたがって、ディスパッチャ６１０は、各マニピュレータ６１２−１乃至６１２−Ｎに対する及びユニットコントローラ６０２に対する購読ノードとして働く。すなわち、ディスパッチャ６１０は、各マニピュレータ６１２−１乃至６１２−Ｎ及びユニットコントローラ６０２に対する同期データベースのクライアントインスタンスを実行するので、ディスパッチャ６１０は、ユニットコントローラ６０２から利用可能な幾つかの属性を購読し且つ各マニピュレータ６１２−１乃至６１２−Ｎから利用可能な幾つかの属性を購読し、これらの全てはディスパッチャ６１０への発行ノードとして働く。ディスパッチャ６１０はその後、属性をユニットコントローラ６０２からマニピュレータ６１２−１乃至６１２−Ｎに再発行し得るとともに属性をマニピュレータ６１２−１乃至６１２−Ｎからユニットコントローラ６０２に再発行し得る。同様の機能性を使用して、ディスパッチャ６１０は、ディスパッチャ６１０がマニピュレータ６１２−１乃至６１２−Ｎの間で属性を同期させ得るように、他のマニピュレータ６１２−１乃至６１２−Ｎの間で発行者／購読者として働き得る。さらに、新しいマニピュレータ６１２が加えられるとき、それは購読ノードとして働く同期データベースのクライアントインスタンスを事項することができ、それは所望の属性を即座に購読し、この所望の属性はその後ディスパッチャ６１０によって加えられたマニピュレータに発行され、したがって、所望の属性の最新の状態を持つ新しいマニピュレータを提供するので、マニピュレータ６１２−１乃至６１２−Ｎ物理的に取り除かれることができ且つシステム６００に加えられる、又は「ホットスワップ」され得る。ディスパッチャ６１０は、ユニットコントローラ６０４及びマニピュレータ６１６−１乃至６１６−Ｎに対して同様の機能性を提供する。
【００３６】
図７は、幾つかの実施形態と一致する、ロボットシステムに使用されるシステム１００の他の例である。図７に示されるように、ロボットシステム７００は、１又は複数の同期データベース７０４に結合されるスーパバイザノード７０２を含む。幾つかの実施形態と一致して、スーパバイザノード７０２は、スーパバイザノード７０２の状態を１又は複数の同期データベース７０４に送信し、この１又は複数の同期データベースは、受信した状態をユーザインタフェース（ＵＩ）ノード７０６及びビデオサブシステムノード７０８に発行する。このような構成では、スーパバイザノード７０２は、同期データベースのサーバインスタンスを実行し且つ発行ノードとして働き、この発行ノードに対して１又は複数の同期データベース７０４は、同期データベースのクライアントインスタンスを実行し且つスーパバイザノード７０２に対する購読ノードとして働く。１又は複数の同期データベース７０４はその後、スーパバイザノード７０２の属性及び状態をＵＩノード７０６及びビデオサブシステムノード７０８に再発行する。
【００３７】
幾つかの実施形態と一致して、ＵＩノード７０６はその後、スーパバイザノード７０２の状態をＵＩノード７０６に結合される１又は複数のコントローラ７１２によって実行されるアクション７１０に翻訳し得る。同様に、ビデオサブシステムノード７０８は、スーパバイザノード７０２の状態を、ビデオを表示するための命令に翻訳し得る。図７に示されるように、スーパバイザノード７０２は、ビデオサブシステムノード７０８からユーザインタフェースイベント７１４を受信するためにビデオサブシステムノード７０８にも結合される。幾つかの実施形態と一致して、ユーザインタフェースイベント７１４は、スーパバイザノード７０２の状態に変化を生じさせ得るとともに、変化した状態は、フラグを付けられ、その後、上述の実施形態にしたがって、１又は複数の同期データベース７０４に発行される。システム７００の状態を伝搬するための同期データベースの使用は、スーパバイザノード７０２によって保持される状態と一致するようにＵＩノード７０６及びビデオサブシステムノード７０８が両方更新することを確実にする。ビデオサブシステムノード７０８は、さらに多数のディスプレイを駆動することができ、各ディスプレイの内容は、同期データベースを介して伝搬される状態によって決定される。
【００３８】
図８は、幾つかの実施形態と一致する、ロボットシステム８００に使用されるシステム１００の他の例である。ロボットシステム８００は、ツリー構造に共に結合される複数のノードを含む。ロボットシステム８００は、ビデオパイプラインノード８０４及び追加的なコントローラノード８０６に結合されるディスプレイコントローラノード８０２を含む。ビデオパイプラインノード８０４は、さらなる追加的なコントローラノード８０８−１乃至８０８−Ｎに結合される。幾つかの実施形態と一致して、ロボットシステム８００は、システム１００と同様のシステムを使用してノードに渡ってデータを同期させる。例えば、ビデオパイプラインノード８０４は、同期データベースのクライアントインスタンスを実行し且つさらなる追加的なコントローラノード８０８−１乃至８０８−Ｎを購読し、このさらなる追加的なコントローラノードのそれぞれは、同期データベースのサーバインスタンスを実行し且つ属性を発行する。さらに、ディスプレイコントローラノード８０２は、同期データベースのクライアントインスタンスを実行し且つビデオパイプラインノード８０４及び追加的なコントローラノード８０６−１乃至８０６−Ｎを購読し、この追加的なコントローラノードのそれぞれは、同期データベースのサーバインスタンスを実行し且つ属性を発行する。したがって、さらなる追加的なコントローラノード８０８における如何なる属性変化もビデオプロセッサノード８０４に発行され、（さらなる追加的なコントローラノード８０８から受信されたものを含む）ビデオプロセッサノード８０４及び追加的なコントローラノード８０６−１乃至８０６−Ｎにおける如何なる属性変化もディスプレイコントローラノード８０２に発行される。ディスプレイコントローラノード８０２は、下位ノード８０４、８０６−１乃至８０６−Ｎ（及び８０４を介した、８０８−１乃至８０８−Ｎ）から収集された１又は複数の重要な「グローバルに可視の」状態を再発行するように、「ルート」サーバデータベースを実行する。下位ノード８０４、及び８０６−１乃至８０６−Ｎは、このルートデータベースを購読し；ノード８０８−１乃至８０８−Ｎは、ルートデータベースコンテンツのためにノード８０４を購読する。さらに、ツリー構造への如何なる新たに追加されるノードも、前の実施形態に記載されるように、同期データベースのクライアントインスタンスを実行し、所望の属性を購読し、且つ所望の属性の最新の状態を発行されることができる。
【００３９】
図９は、幾つかの実施形態と一致する、ロボット支援手術システム９００に使用されるシステム１００の他の例である。図９に示されるように、システム９００は、コアシステム９０４に結合される患者カート０２を含み、このコアシステム９０４は、外科医コンソール９０６に結合される。幾つかの実施形態と一致して、システム９００は、患者カート９０２が（カメラ器具を含む）スレーブマニピュレータ制御手術器具を含み、外科医コンソール９０６がスレーブマニピュレータのためのマスタコントロールを含み、コアシステム９０４が他のシステムデータ処理コンポーネントに加えてカメラ及び視覚システム処理コンポーネントを含むような、カルフォルニア州ＳｕｎｎｙｖａｌｅのＩｎｔｕｉｔｉｖｅ  Ｓｕｒｇｉｃａｌ，  Ｉｎｃ．によって市販されているｄａ  Ｖｉｎｃｉ（登録商標）Ｓｕｒｇｉｃａｌ  Ｓｙｓｔｅｍに対応し得る。さらに、患者カート９０２、コアシステム９０４及び外科医コンソール９０６のそれぞれは、上述の実施形態と一致する１又は複数の同期データベースを実行することができ得るとともに、システム９００のノードと称され得る。さらに、システム９００のノードのそれぞれは、追加的なノードを含み得る。例えば、患者カート９０２は、それぞれが同期データベースのクライアントインスタンスを実行することができる１又は複数のプロセッサを含むことができ、これらの１又は複数のプロセッサは、セットアップジョイント９１０及びマニピュレータ９１２のような、患者カート９０２内の個別のノードによって発行される属性を購読するノード９０８と称され得、この個別のノードのそれぞれは、同期データベースのサーバインスタンスを実行している関連付けられるプロセッサを含む。同期データベースのクライアントインスタンスを実行する、ノード９０８は、セットアップジョイント９１０及びマニピュレータ９１２から発行された属性を受信し、これらの属性を同期データベースのクライアントインスタンスに格納する。これらの属性はその後、ノード９０８が同期データベースのサーバインスタンスを実行し且つコアシステム９０４が同期データベースのクライアントインスタンスを実行して、ノード９０８によってコアシステム９０４に発行され得る。同様に、ノード９０８は、コア９０４のサーバインスタンスから発行される属性を購読するために同期データベースのクライアントインスタンスを実行し得る。同様の構成が、属性がシステム９００に渡って同期され得るように、コア９０４と外科医コンソール９０６との間に提供され得る。
【００４０】
幾つかの実施形態と一致して、患者カート９０２が残りのシステム９００から切り離される場合、患者カート９０２は、同期データベースのクライアントインスタンスを実行するノード９０８が、ロボットマニピュレータセットアップアームジョイント９１０から及びマニピュレータクラッチ９１２から発行された属性を受信し、その後これらの属性を同期データベースのクライアントインスタンスに格納する、スタンドアロン環境で、動作することができる。システム９００との再接続に際し、ノード９０８は、格納された値をコア９０４に発行し、その後コア９０４は、システム９００全体に渡ってデータ属性が同期されるように、その格納された値をノード９０８に発行する。システムの同期は、それに対して属性データベース同期機能が実行される外科医コンソール９０６又は任意の他のシステムコンポーネントの切り離し及びその後の再接続に対して同様に動作する。
【００４１】
適用可能な場合、本開示によって提供されるさまざまな実施形態は、ハードウェア、ソフトウェア、又はハードウェアとソフトウェアとの組合せを用いて実装され得る。また、適用可能な場合、本明細書において説明されたさまざまなハードウェア構成要素及び／又はソフトウェア構成要素は、本開示の精神を逸脱することなくソフトウェア、ハードウェア、及び／又はそれら両方を含む複合的な構成要素に組み合わされ得る。適用可能な場合、本明細書において説明されたさまざまなハードウェア構成要素及び／又はソフトウェア構成要素は、本開示の範囲を逸脱することなくソフトウェア、ハードウェア、又はそれら両方を含む下位構成要素へ分けられ得る。加えて、適用可能な場合、ソフトウェア構成要素がハードウェア構成要素として実装され得る及びその逆も考えられる。
【００４２】
プログラムコード及び／又はデータのような、本開示によるソフトウェアは、１又は複数のコンピュータ可読媒体に記憶され得る。本明細書において特定されたソフトウェアが、ネットワーク接続された及び／又はそれ以外の、１つ又は複数の汎用又は専用コンピュータ及び／又はコンピュータシステムを用いて実装され得ることも考えられる。適用可能な場合、本明細書において説明されたさまざまなステップの順序づけは、本明細書において説明された特徴を提供するために変更され、複合的なステップへ組み合わされる、及び／又は下位ステップへ分けられ得る。
【００４３】
本明細書に開示された実施形態は、最小のシステムトラフィック並びに最小の衝突及び中断でシステムのノードを同期させるためのシステム及び方法を提供し得る。本明細書に開示された実施形態はまた、ノードをシステムに容易に接続し、切り離し、及び再接続すること可能に且つ最小の遅れで同期されることを可能にする、システムのノードを同期させるためのシステム及び方法を提供し得る。さらに、本明細書に開示された実施形態はまた、１つのノードにおけるディスプレイが最小の遅れで他のノードにおいて複製されることを可能にする、システムのノードを同期させるためのシステム及び方法を提供し得る。上で提供された例は、単なる例であり、限定することを意図するものではない。当業者は、本開示の範囲内であることが意図される開示された実施形態と一致する他のシステムを容易に考え出すであろう。そのようなものとして、本出願は、以下の特許請求の範囲によってのみ限定される。
【００４４】
なお、本発明の実施形態によれば、少なくとも１つの第１の同期データベースを含む発行ノードであって、前記第１の同期データベースは：
複数の属性であって、前記属性のそれぞれが前記属性を識別するタグ及びデータを含む、複数の属性；
前記属性のそれぞれと関連付けられるフラグ；及び
購読者リスト；を含む、
発行ノード、並びに
少なくとも１つの第２の同期データベースを含む購読者ノード、を有し、
前記属性が前記少なくとも１つの第１の同期データベースに書かれるとき又は前記属性に含まれる前記データが修正され且つ前記購読者ノードにフラグ付きの前記属性を発行するとき、前記発行ノードは、前記属性に関連付けられる前記フラグをセットするように構成される。
【００４５】
また、前記購読者ノードは、追加的に結合される二次購読者ノードのための二次発行ノードとして働くように構成され、前記二次発行ノードは、前記二次購読者ノードに新しい又は修正された属性を発行するように構成されてよい。
【００４６】
また、前記発行ノードは、前記少なくとも１つの第１の同期データベースに格納される前記属性を広告する広告メッセージを送信するように構成され、
前記購読者ノードは、発見メッセージを送信するように構成されてよい。
【００４７】
また、前記購読者ノードは、前記広告メッセージを受信し且つ購読することを望む前記少なくとも１つの第１の同期データベースに格納される前記属性を示す購読メッセージを送信してよい。
【００４８】
また、前記発行ノードは、前記発見メッセージを受信し且つ応答メッセージを送信してよい。
【００４９】
また、前記発行ノードはさらに、前記発行ノードが前記購読メッセージを受信するとき、所望の前記属性に関連付けられる前記フラグをセットするように構成されてよい。
【００５０】
また、前記発行ノードはさらに、同期応答信号が前記購読者ノードから受信されるまで、前記所望の属性に対する修正を集めるように構成されてよい。
【００５１】
また、前記発行ノードはさらに、心拍信号を前記購読者ノードに送信するように構成されてよい。
【００５２】
また、前記発行ノードはさらに、前記購読者ノードが前記発行ノードにもはや結合されていないことを前記発行ノードが決定する場合、前記購読者ノードを全ての購読されている属性から購読を取り消すように構成されてよい。
【００５３】
また、前記発行ノード及び前記購読者ノードは、前記ロボットシステムのコンポーネント、前記ロボットシステムの１若しくは複数のプロセッサ、又は前記１若しくは複数のプロセッサによって実行されている個別のタスクの少なくとも１つを有してよい。
【００５４】
また、前記発行ノードは、第４の同期データベースを有する他のノードの発行された属性を購読することができる第３の同期データベースを含んでよい。
【００５５】
また、前記第１の同期データベースは、前記発行ノードのプロセッサによって実行される同期データベースインスタンスを有し、前記第２の同期データベースは、前記購読者ノードのプロセッサによって実行される同期データベースインスタンスを有してよい。
【００５６】
また、本発明の他の実施形態によれば、ロボットシステムのノードに渡ってデータを同期させるための方法であって、方法は：
発行ノードから、前記発行ノードで実行している同期データベースのサーバインスタンスに格納される属性を広告する広告メッセージを送信するステップ；
前記発行ノードに結合される購読ノードによって、前記広告メッセージを受信するステップ；
前記購読ノードによって、少なくとも１つの前記購読ノードが購読することを望む前記発行ノードで実行している同期データベースの前記サーバインスタンスに格納される前記属性を示す購読メッセージを送信するステップ；
前記発行ノードによって、前記発行ノードで実行している同期データベースの前記サーバインスタンスに保持される購読リストに前記購読ノードを加えるステップ；
前記発行ノードによって、購読される前記属性のそれぞれに対してフラグをセットするステップ；
前記発行ノードによって、フラグ付きの前記属性のそれぞれを含む同期パケットを前記購読ノードに送信するステップ；及び
送信された前記属性のそれぞれに対して前記フラグをクリアするステップ；を含む。
【００５７】
また、前記購読ノードによって、発見メッセージを送信するステップ；
前記発行ノードによって、前記発見メッセージを受信するステップ；及び
前記発行ノードによって、前記購読ノードに応答メッセージを送信するステップ；をさらに含んでよい。
【００５８】
また、前記フラグをセットするステップは：
前記属性が、前記発行ノードで実行している前記同期データベースの前記サーバインスタンスに書き込まれるとき、前記属性に含まれる前記データが修正されるとき、又は前記属性が前記少なくとも１つの購読ノードによって購読されるとき、前記フラグをセットするステップ、を含んでよい。
【００５９】
また、前記購読ノードから前記発行ノードに同期応答信号を送信するステップ；及び
前記同期応答信号が受信されるまで、前記発行ノードで実行している前記同期データベースにおける前記属性に対する修正を集めるステップ；をさらに含んでよい。
【００６０】
また、前記発行ノード及び前記購読ノードはそれぞれ、前記ロボットシステムのコンポーネント、又は前記ロボットシステムの１若しくは複数のプロセッサの少なくとも１つを有してよい。
【００６１】
また、前記発行ノードによって、心拍信号を送信するステップ；及び
前記購読ノードによって、前記心拍信号を受信することに応じて、確認信号を送信するステップ；をさらに含んでよい。
【００６２】
また、前記確認信号が受信されない場合、前記発行ノードによって、前記購読リストから前記購読ノードを外すステップ、をさらに含んでよい。
【００６３】
また、前記クライアントデータベースによって、前記同期パケットのエラーをチェックするステップ、をさらに含んでよい。
【００６４】
また、前記同期パケットのエラーをチェックするステップは：
前記購読ノードによって、前記同期パケットがエラーを含むかどうか決定するステップ；
前記購読ノードによって、エラー信号を前記発行ノードに送信するステップ；
前記発行ノードによって、前記購読された属性のそれぞれに対してフラグをセットするステップ；
前記発行ノードによって、リセットメッセージを前記購読ノードに送信するステップ；及び
前記発行ノードによって、フラグ付きの前記属性のそれぞれを含む新しい同期パケットを前記購読ノードに送信するステップ；をさらに含んでよい。
【００６５】
また、本発明のさらに他の実施形態では、実行されるとき、ロボットシステムの１又は複数のプロセッサに前記ロボットシステムのノードを同期させる方法を実行させる、前記ロボットシステムの前記１又は複数のプロセッサによる実行のための命令を有する非一時的なコンピュータ可読媒体であって、前記方法が：
発行ノードから、前記発行ノードで実行している同期データベースのサーバインスタンスに格納される属性を広告する広告メッセージを送信するステップ；
前記発行ノードに結合される購読ノードによって、前記広告メッセージを受信するステップ；
前記購読ノードから前記発行ノードに購読メッセージを送信するステップであって、前記購読メッセージは、少なくとも１つの前記購読ノードが購読することを望む前記発行ノードで実行している前記同期データベースの前記サーバインスタンスに格納される前記属性を示す、ステップ；
前記発行ノードで実行している前記同期データベースの前記サーバインスタンスに保持される購読リストに前記購読ノードを加えるステップ；
前記発行ノードで実行している前記同期データベースの前記サーバインスタンスに購読される前記属性のそれぞれに対してフラグをセットするステップ；
前記発行ノードから前記購読ノードに同期パケットを送信するステップであって、前記同期パケットはフラグ付きの前記属性のそれぞれを含む、ステップ；及び
前記発行ノードで実行している前記同期データベースの前記サーバインスタンスの送信された前記属性のそれぞれに対する前記フラグをクリアするステップ；を含む。
【００６６】
また、前記購読ノードから前記発行ノードに発見メッセージを送信するステップ；
前記発行ノードで前記発見メッセージを受信するステップ；及び
前記発行ノードから前記購読ノードに応答メッセージを送信するステップ；をさらに含んでよい。
【００６７】
また、前記フラグをセットするステップは：
前記属性が、前記発行ノードで実行している前記同期データベースの前記サーバインスタンスに書き込まれるとき、前記属性に含まれる前記データが修正されるとき、又は前記属性が前記少なくとも１つの購読ノードによって購読されるとき、前記フラグをセットするステップ、を含んでよい。
【００６８】
また、前記購読ノードから前記発行ノードに同期応答信号を送信するステップ；及び
前記同期応答信号が受信されるまで、前記発行ノードで実行している前記同期データベースにおける前記属性に対する修正を集めるステップ；をさらに含んでよい。
【００６９】
また、前記発行ノード及び前記購読ノードはそれぞれ、前記ロボットシステムのコンポーネント、又は前記ロボットシステムの１若しくは複数のプロセッサの少なくとも１つを有してよい。
【００７０】
また、前記発行ノードから前記購読ノードに心拍信号を送信するステップ；及び
前記心拍信号を受信することに応じて、前記購読ノードから前記発行ノードに確認信号を送信するステップ；をさらに含んでよい。
【００７１】
また、前記確認信号が受信されない場合、前記発行ノードによって、前記購読リストから前記購読ノードを外すステップ、をさらに含んでよい。
【００７２】
また、受信した前記同期パケットのエラーをチェックするステップ、をさらに含んでよい。
【００７３】
また、前記同期パケットのエラーをチェックするステップは：
前記同期パケットがエラーを含むかどうか決定するステップ；
エラー信号を前記発行ノードに送信するステップ；
前記発行ノードで実行している前記同期データベースの前記サーバインスタンスにおいて前記購読された属性のそれぞれに対してフラグをセットするステップ；
前記発行ノードから前記購読ノードにリセットメッセージを送信するステップ；及び
前記発行ノードから前記購読ノードにフラグ付きの前記属性のそれぞれを含む新しい同期パケットを送信するステップ；をさらに含んでよい。
【図１】
2018137758.tif 000003
【図２】
2018137758.tif 000004
【図３】
2018137758.tif 000005
【図４Ａ】
2018137758.tif 000006
【図４Ｂ】
2018137758.tif 000007
【図５】
2018137758.tif 000008
【図６】
2018137758.tif 000009
【図７】
2018137758.tif 000010
【図８】
2018137758.tif 000011
【図９】
2018137758.tif 000012
【外国語明細書】
2018137758000001.pdf