手術ロボットシステムの人気が高まるにつれて、向上した機能、パフォーマンス、および柔軟性を有し、広範囲の手術処置に適応することができる、改善された手術ロボットシステムを開発する取り組みが進行中である。開発中のいくつかの手術ロボットシステムには、様々な通信リンクを介して互いに通信する多数のサブシステムが含まれる。手術ロボットシステムの複雑さが増すにつれて、例えば、様々なタイプの待ち時間を軽減する効率的な様式で、手術ロボットシステムが動作および/または通信することを保証することに関連する課題も増大する。
本開示は、ロボットシステムに関し、より具体的には、同期および非同期ネットワークを含む手術ロボットシステム、ならびに同期および非同期ネットワークを用いる通信方法に関する。
本開示の一態様によれば、上述のニーズに対処するシステムおよび方法が提供される。本開示の一態様では、ロボット手術システムが提供される。システムは、ネットワーク化されたコンピューティングノードと、スレーブロボットアセンブリと、複数の第1の通信経路と、複数の第2の通信経路と、を含む。スレーブロボットアセンブリは、複数のサブユニットを含む。複数のサブユニットは、複数の第1の通信経路を介して互いに通信可能に結合されており、それにより、同期ネットワークの少なくとも一部分を形成する。ネットワーク化されたコンピューティングノードおよび複数のサブユニットのうちの少なくとも1つは、複数の第2の通信経路のうちの1つ以上を介して互いに通信可能に結合されており、それにより、第2のネットワークの少なくとも一部分を形成し、第2のネットワークを介して1つ以上のパケットを互いに通信するように構成される。複数のサブユニットのうちの少なくとも1つは、同期ネットワークを介して複数のサブユニットのうちの他のものと、1つ以上のパケットからのデータと通信するように構成される。同期ネットワークのクロックレートは、第2のネットワークのクロックレートから独立している。ネットワーク化されたコンピューティングノードは、グローバルセーフティモニターをさらに含み、スレーブロボットアセンブリは、1つ以上のローカル解決ルールを記憶しているメモリを含む。複数のサブユニットのうちの少なくとも1つは、(1)複数の第1の通信経路のうちの1つ以上を介して、複数のサブユニットの別のサブユニットからセーフティ警告を受信することと、(2)受信されたセーフティ警告のセーフティメトリックがそれぞれの閾値を超えているかどうかを決定することと、(3)セーフティメトリックがそれぞれの閾値を超えているとの決定に応じて、1つ以上のローカル解決ルールに基づいて、対応するセーフティ警告に関連するアクションが複数のサブユニットのうちの1つ以上によって実行され得るかどうかを決定することと、(4)対応するセーフティ警告に関連するアクションが複数のサブユニットのうちの1つ以上によって実行され得るとの決定に応じて、複数のサブユニットのうちの1つ以上によってアクションを実行させて、セーフティ警告に対処することと、(5)対応するセーフティ警告に関するアクションが複数のサブユニットのうちのいずれによっても実行され得ないとの決定に応じて、第2のネットワークを介して、セーフティ警告をグローバルセーフティモニターに送信することと、を行うようにさらに構成される。
本開示の別の態様では、1つ以上のローカル解決ルールは、セーフティ警告にそれぞれ対応する1つ以上のアクションを示す情報、またはスレーブロボットアセンブリの複数のサブユニットのうちの1つ以上がセーフティ警告にそれぞれ対応する1つ以上のアクションを実行し得るかどうかを示す情報のうちの少なくとも1つを含む。
本開示のさらに別の態様では、アクションは、セーフティ警告と関連付けられる複数のサブユニットのうちの1つ以上をパワーダウンすることを含む。
本開示のさらに別の態様では、ネットワーク化されたコンピューティングノードのグローバルセーフティモニターは、複数の第2の通信経路のうちの1つ以上を介して、複数のサブユニットの1つからセーフティ警告を受信することと、セーフティ警告の受信に応じて、ネットワーク化されたコンピューティングノードに、セーフティ警告に対処するためのアクションを実行させることと、を行うようにさらに構成される。
本開示のさらなる態様では、複数のサブユニットの各々は、(a)複数の第2の通信経路のうちの1つ以上、または(b)複数の第1の通信経路のうちの1つ以上、複数のサブユニットのうちの別の1つ、および複数の第2の通信経路のうちの1つ以上、のうちの少なくとも1つを含むそれぞれの経路を介して、対応するセーフティ警告をグローバルセーフティモニターに送信するように構成される。
本開示の別の態様では、手術ロボットシステムは、外科医コンソールをさらに含み、外科医コンソール、ネットワーク化されたコンピューティングノード、および複数のサブユニットのうちの少なくとも1つは、複数の第2の通信経路のうちの1つ以上を介して互いに通信可能に結合されており、それにより、第2のネットワークの少なくとも別の部分を形成する。
本開示のさらに別の態様では、複数のサブユニットは、リングトポロジーで、複数の第1の通信経路を介して、互いに通信可能に結合される。
本開示のさらに別の態様では、手術ロボットシステムは、複数の第2のサブユニットを含む、第2のスレーブロボットアセンブリと、複数の第3の通信経路と、をさらに含む。複数の第2のサブユニットは、複数の第3の通信経路を介して互いに通信可能に結合されており、それにより、第2の同期ネットワークの少なくとも一部分を形成する。第2の同期ネットワークのクロックレートは、同期ネットワークのクロックレートおよび第2のネットワークのクロックレートから独立している。
本開示のさらなる態様では、スレーブロボットアセンブリは、第1の一意の識別子と関連付けられており、第2のスレーブロボットアセンブリは、第2の一意の識別子と関連付けられる。
本開示の別の態様では、1つ以上のパケットは、スレーブロボットアセンブリと関連付けられた第1の一意の識別子、または第2のスレーブロボットアセンブリと関連付けられた第2の一意の識別子を含む。
本開示のさらに別の態様では、第2のネットワークは、同期ネットワークである。
本開示のさらに別の態様では、第2のネットワークは、非同期ネットワークである。
本開示の別の態様に従って、手術ロボットシステムの同期ネットワークおよび非同期ネットワークを用いる方法が提供される。方法は、スレーブロボットアセンブリのメモリに、1つ以上のローカル解決ルールを記憶させることを含む。セーフティ警告は、スレーブロボットアセンブリの複数のサブユニットのうちの少なくとも1つによって、同期ネットワークを介して、複数のサブユニットのうちの別のサブユニットから受信される。受信されたセーフティ警告のセーフティメトリックがそれぞれの閾値を超えているかどうかに関する決定が行われる。セーフティメトリックがそれぞれの閾値を超えているとの決定に応じて、1つ以上のローカル解決ルールに基づいて、対応するセーフティ警告に関連するアクションが複数のサブユニットのうちの1つ以上によって実行され得るかどうかに関する決定が行われる。対応するセーフティ警告に関連するアクションが複数のサブユニットのうちの1つ以上によって実行され得るとの決定に応じて、複数のサブユニットのうちの1つ以上によってアクションを実行させて、セーフティ警告に対処する。対応するセーフティ警告に関するアクションが複数のサブユニットのうちのいずれによっても実行され得ないとの決定に応じて、非同期ネットワークを介して、ネットワーク化されたコンピューティングノードにおけるグローバルセーフティモニターに、セーフティ警告が送信される。同期ネットワークのクロックレートは、非同期ネットワークのクロックレートから独立している。
本開示の別の態様では、1つ以上のローカル解決ルールは、セーフティ警告に対応する1つ以上のアクションを示す情報、および/またはスレーブロボットアセンブリのサブユニットのうちの1つ以上がセーフティ警告に対応する1つ以上のアクションを実行し得るかどうかを示す情報を含む。
本開示のさらに別の態様では、アクションは、セーフティ警告と関連付けられる複数のサブユニットのうちの1つ以上をパワーダウンすることを含む。
本開示のさらに別の態様では、方法は、非同期ネットワークを介して、サブユニットのうちの1つからセーフティ警告を受信することと、セーフティ警告の受信に応じて、ネットワーク化されたコンピューティングノードに、セーフティ警告に対処するためのアクションを実行させることと、をさらに含む。
本開示のさらに別の態様では、非同期ネットワークを介して、ネットワーク化されたコンピューティングノードにおけるグローバルセーフティモニターにセーフティ警告を送信することは、(a)非同期ネットワークの第1の通信経路のうちの1つ以上、または(b)同期ネットワークの第2の通信経路のうちの1つ以上、サブユニットのうちの別の1つ、および非同期ネットワークの第1の通信経路のうちの1つ以上、のうちの少なくとも1つを含むそれぞれの経路を介して送信することを含む。
本開示のさらに別の態様では、アクションは、セーフティ警告と関連付けられる複数のサブユニットのうちの1つ以上のモータを抑制することを含む。
本開示の様々な態様および特徴は、図面を参照して、本明細書に後述される。
本明細書の例示的な実施形態による例示のロボット手術システムを示す。
本明細書の例示的な実施形態による、図1のロボット手術システムの様々な構成要素が非同期ネットワークおよび同期ネットワークを形成する例示的な実施形態を示す概略図である。
本明細書の例示的な実施形態による図1のロボット手術システムの構成要素間の様々なタイプの情報の通信を容易にする、図2の非同期ネットワークおよび同期ネットワークの例示の構成を示す別の概略図である。
本明細書の例示的な実施形態による、図1のロボット手術システムの構成要素の構成を示す概略図であり、ここで、意思決定制御は、スレーブロボットアセンブリおよび/もしくはネットワーク化されたコンピューティングノードの構成要素、または他の構成要素間に割り振られる。
本明細書の例示的な実施形態による、図4の手術ロボットシステムの構成要素の構成を用いて、スレーブロボットアセンブリおよび/もしくはネットワーク化されたコンピューティングノードの構成要素、または他の構成要素間に、意思決定制御を割り振るための例示の方法を示すフローチャートである。
本明細書の例示的な実施形態による、図2の手術ロボットシステムの構成要素の構成を用いて、アクションの実行を割り振るための例示の方法を示すフローチャートである。
本開示は、同期および非同期ネットワークを含む手術ロボットシステム、ならびに同期および非同期ネットワークを用いる通信方法を対象とする。特に、本明細書で説明されるシステムおよび方法は、非同期ネットワークおよび同期ネットワークで構成要素を用いる手術ロボットシステムを設計および実装することを可能にする。構成要素は、互いに通信可能に結合されており、かつ非同期ネットワーク、同期ネットワーク、およびそれらの間の通信経路を利用し、手術ロボットシステムは、最初に同期ネットワーク内の構成要素レベルでローカルに決定を行い、最初に同期ネットワーク内の構成要素レベルでローカルに決定を行うことができない場合には、手術ロボットシステムは、その際、非同期ネットワーク内の構成要素を使用して、グローバルレベルまたはシステムレベルで決定を行う。本明細書で説明する技術、技法、および実施形態を利用して、手術ロボットシステムの全体的な待ち時間が低減され、手術ロボットシステムの動作およびデータ通信効率が改善される。
ここで本開示の実施形態が図面を参照して詳細に記載され、図面の中で同様の参照番号は、いくつかの図の各々において同一のまたは対応する要素を示す。本明細書で使用される場合、「臨床医」という用語は、医師、看護師、技術者、医療助手、もしくは同様のサポート要員、または本明細書に記載の手術ロボットシステムを使用することができる任意の他の人物を指す。本明細書全体を通じて、「非同期ネットワーク」という用語は、コンピューティングデバイスが1つ以上の通信経路を介して互いに通信可能に結合され、かつ例えば、送信および受信コンピューティングデバイスのクロック信号を同期させる必要なく、非同期様式でこれらの通信経路を介してデータおよび/または他の情報を互いに通信するように構成されるように構成されている、一セットのコンピューティングデバイスと1つ以上の通信経路によって画定される、ネットワークを指す。本明細書全体を通じて、「同期ネットワーク」という用語は、コンピューティングデバイスが1つ以上の通信経路を介して互いに通信可能に結合され、かつ例えば、互いに同期された送信および受信コンピューティングデバイスのクロック信号を使用することによって、同期様式でこれらの通信経路を介してデータおよび/または他の情報を互いに通信するように構成されるように構成されている、一セットのコンピューティングデバイスと1つ以上の通信経路によって画定される、ネットワークを指す。本明細書に記載の非同期ネットワークおよび同期ネットワークを画定するコンピューティングデバイスおよび/または通信経路の間に、重複が存在する可能性がある。例えば、コンピューティングデバイスおよび/または通信経路は、非同期ネットワークの一部として含まれ得、また同期ネットワークの一部として含まれ得る。さらに、図面中および続く説明において、例えば、前側、後側、上側、下側、頂部、底部、および類似の方向性の用語などの用語は、単に説明の便宜のために使用されており、本開示を限定することを意図するものではない。以下の記載では、周知の機能または構成は、本開示を不必要に詳細に示して不明瞭にすることを避けるために、詳細には記載されていない。
ここで図1を参照すると、本明細書の様々な例示的実施形態に従って用いられる例示的なロボット手術システム100が示されている。システム100は、手術室で用いられる例示的なシステムである。図1に示されるシステム100の特定の数の構成要素、ならびにその配置および構成は、例示目的のみのために提供され、限定するものとして解釈されるべきではない。例えば、本明細書の様々な実施形態は、図1に示される構成要素のすべてよりも少ないまたは多い構成要素を用いる。例えば、システム100の追加の構成要素が、図2および図4に示されている。さらに、図1に示されるシステム100は、本明細書の様々な例示的実施形態が適用可能な例示的な文脈として提供される。しかしながら、本明細書の様々な例示的実施形態は、ロボット手術システム以外の状況においても適用可能である。
システム100は、手術処置中に患者104が横たわる手術台102と、手術処置中に臨床医、ユーザまたは外科医が対話する、外科医コンソール170と、ネットワーク化されたコンピューティングノード180と、1つ以上のスレーブロボットアセンブリ190と、を含む。便宜上、本説明は、単一のスレーブロボットアセンブリ190の文脈で行われるが、本開示は、多数のスレーブロボットアセンブリ190を含む実施形態にも同様に適用可能であることを理解されたい。外科医コンソール170、ネットワーク化されたコンピューティングノード180およびスレーブロボットアセンブリ190は、本明細書の様々な実施形態では、有線通信経路および/または無線通信経路として実装され得る、それぞれの通信経路106(個別に、106a、106b、および106c)を介して互いに通信可能に結合される。特に、外科医コンソール170およびネットワーク化されたコンピューティングノード180は、通信経路106aを介して互いに通信可能に結合される。ネットワーク化されたコンピューティングノード180およびスレーブロボットアセンブリ190は、通信経路106bを介して互いに通信可能に結合される。外科医コンソール170およびスレーブロボットアセンブリ190は、通信経路106a、ネットワーク化されたコンピューティングノード180、および通信経路106bを介して互いに通信可能に結合される。以下でさらに詳細に説明するように、いくつかの実施形態では、外科医コンソール170、ネットワーク化されたコンピューティングノード180、およびスレーブロボットアセンブリ190は、通信経路106と共に、非同期ネットワーク(図1に個別に示されていない)を画定する。これにより、外科医コンソール170、ネットワーク化されたコンピューティングノード180、およびスレーブロボットアセンブリ190は、データおよび/または他の情報を非同期様式で互いに通信するように構成される。本明細書では非同期ネットワークとして説明されているが、当業者は、通信経路106と共に外科医コンソール170、ネットワーク化されたコンピューティングノード180、およびスレーブロボットアセンブリ190によって形成されるネットワークが、代替的に同期ネットワークであってもよいことを認識されよう。また以下でさらに詳細に説明するように、システム100は、システム100内の異なる構成要素が互いに通信することを可能にするパブリッシュ/サブスクライブメッセージングパターンを実装するように構成され得る。外科医コンソール170と、ネットワーク化されたコンピューティングノード180と、スレーブロボットアセンブリ190との間の通信のさらなる詳細は、図2、図3、図4、および図5の文脈で本明細書に提供される。
スレーブロボットアセンブリ190は、多数のサブユニット191、192、193、および194、すなわち、カートユニット191、セットアップアームユニット192、ロボットアームユニット193、および器具駆動ユニット(IDU)194を含む。スレーブロボットアセンブリ190のサブユニット191、192、193、および194は、互いにスレーブロボットアセンブリ190のサブユニット191、192、193、および194に直接的または間接的のいずれかで動作可能に結合される。例えば、カートユニット191は、セットアップアームユニット192、ロボットアームユニット193、および器具駆動ユニット194に動作可能に結合される。同様に、セットアップアームユニット192は、カートユニット191、ロボットアームユニット193、および器具駆動ユニット194に動作可能に結合されており、一方で、ロボットアームユニット193は、カートユニット191、セットアップアームユニット192、および器具駆動ユニット194に動作可能に結合されており、さらに器具駆動ユニット194は、カートユニット191、セットアップアームユニット192、およびロボットアームユニット193に動作可能に結合される。サブユニット191、192、193、および194はまた、1つ以上の通信経路(図1には示されていない)を介して直接的または間接的のいずれかでスレーブロボットアセンブリ190のサブユニット191、192、193、および194に互いに通信可能に結合され、それにより、同期ネットワークを画定する。カートユニット191は、手術処置を受ける患者104の範囲内で手術台102に隣接して配置される。器具駆動ユニット194は、それに交換可能に固定され得る1つ以上の対応する手術器具(図1には示されていない)に結合可能である。カートユニット191は、手術台102または患者104の側面に沿って移動するように構成される。カートユニット191は、患者104に向かって、また患者104から離れて移動するように構成される。
ネットワーク化されたコンピューティングノード180は、1つ以上のプロセッサ118および1つ以上のメモリユニット120を含む、コンピューティングデバイスである。ネットワーク化されたコンピューティングノード180は、ネットワークおよび/またはインターネットを介して外科医コンソール170、スレーブロボットアセンブリ190、および/または外部デバイスとの通信を容易にする、ネットワークインターフェースなどの1つ以上の通信インターフェースをさらに含み得る。様々な実施形態では、ネットワーク化されたコンピューティングノード180は、外科医コンソール170と統合されてもよく、または手術室の内部またはその近くに配設されたコンピューティングタワーなどのスタンドアロンデバイスであってもよい。メモリユニット120は、本明細書の様々な実施形態の手順を実行するためにプロセッサ118が実行する命令136(一実施例では、ソフトウェア)を記憶する。理解されるように、プロセッサ118およびメモリユニット120の実装は、例としてのみ提供されており、限定するものとして解釈されるべきではない。例えば、本開示のいずれかの実施形態の手順は、ハードウェア構成要素、ファームウェア構成要素、ソフトウェア構成要素、および/またはそれらの任意の組み合わせによって実装されてもよい。ネットワーク化されたコンピューティングノード180の追加の詳細は、図2、図3、図4、および図5の文脈で以下に提供される。
外科医コンソール170は、手術処置中に外科医が対話するディスプレイデバイス122およびハンドル112を含む。いくつかの実施形態では、ハンドル112は、様々な触覚部124および/またはアクチュエータ126を含む。外科システム100の動作中に、外科医は、外科医コンソール170のハンドル112を動かして、セットアップアームユニット192、ロボットアームユニット193、器具駆動ユニット194、および/または器具駆動ユニット194に結合された1つ以上の手術器具(図1には示されていない)の対応する移動および/または作動を生成する。外科医の入力コマンドに基づいて、ハンドル112は、通信経路106aを介して、ネットワーク化されたコンピューティングノード180に信号を提供し、その後、通信経路106bを介して、スレーブロボットアセンブリ190のカートユニット191に、対応する信号を提供し、他の通信経路(図1には示されていない)を介して、セットアップアームユニット192、ロボットアームユニット193、器具駆動ユニット194に、コマンドされたアクションを実行させるために、対応する信号または命令を提供する。いくつかの実施形態では、スレーブロボットアセンブリ190は、対応するサブユニット192、193、194および/またはそれに結合された手術器具(図1には示されていない)の運動が引き起こすために、セットアップアームユニット192、ロボットアームユニット193、および/または器具駆動ユニット194に結合されている1つ以上の駆動モータ(図1には示されていない)を含む。
いくつかの実施形態では、ハンドル112内の様々な触覚部124は、様々な組織パラメータまたは状態、一実施例では、操作、切断または他の治療による組織抵抗、器具による組織への圧力、組織温度、組織インピーダンスなどに関するフィードバックを臨床医に提供する。理解され得るように、そのような触覚部124は、実際の動作状態をシミュレートする強化された触覚フィードバックを臨床医に提供する。触覚部124は、振動モータ、電気活性ポリマー、圧電デバイス、静電デバイス、亜音速音波表面作動デバイス、逆電気振動、またはユーザに触覚フィードバックを提供することができる任意の他のデバイスを含んでもよい。上述のように、ハンドル112はまた、例えば、実際の動作状態を模倣する外科医の能力をさらに高める繊細な組織操作および/または治療に用いられ得る、様々な異なるアクチュエータ126も含んでもよい。
上述のように、実行される特定の手術処置に応じて、1つ以上の手術器具(図1では別個に示されていない)を器具駆動ユニット194に交換可能に固定することができる。任意のタイプの手術器具を用いることができるが、そのような手術器具の例示的なタイプは、限定ではなく例として、画像捕捉デバイス、プローブ、エンドエフェクタ、把持器、ナイフ、はさみ、および/または同類のものを含む。本明細書のいくつかの実施形態によれば、器具駆動ユニット194に結合された手術器具のうちの1つ以上は、立体画像捕捉デバイスを含むプローブ(図1には示されていない)であり、それは、手術処置中に患者104の内部の関心領域の画像を捕捉するために患者104に挿入される。画像捕捉デバイスによって捕捉された画像は、画像を外科医に表示する外科医コンソール170のディスプレイデバイス122(本明細書では「ディスプレイ」とも呼ばれる)に伝達される。
図2は、外科医コンソール170、ネットワーク化されたコンピューティングノード180、およびスレーブロボットアセンブリ190の追加の構成要素を含む、外科システム100の追加の態様を示すブロック図を示している。また、図2には、少なくとも部分的に通信経路106aおよび106bによって画定される非同期ネットワークと、少なくとも部分的に通信経路202a、202b、202c、および202d(集合的に202)によって画定される同期ネットワークの例示的なトポロジーも示されている。外科医コンソール170、ネットワーク化されたコンピューティングノード180、スレーブロボットアセンブリ190、ならびに非同期および同期ネットワークをそれぞれ画定する通信経路106および202の構成および機能性により、手術ロボットシステム100の個々の構成要素は、例えば、外科医コンソール170を介して移動コマンドを入力する外科医と対応するサブユニット191、192、194、および194の実際の移動との間の待ち時間などの様々なタイプの待ち時間を軽減する効率的な様式で動作および/または通信することを可能にする。例えば、様々な実施形態では、スレーブロボットアセンブリ190のサブユニット191、192、194、および194は、通信経路202によって少なくとも部分的に画定される同期ネットワークを介して、外科医コンソール170および/またはネットワーク化されたコンピューティングノード180から独立して、互いに通信するように構成される。同時に、外科医コンソール170、ネットワーク化されたコンピューティングノード180、および/またはスレーブロボットアセンブリ190は、通信経路106によって少なくとも部分的に画定される非同期ネットワークを介して互いに通信するように構成される。システム100の構成要素を並列非同期および同期ネットワークに割り振り、機能(電力管理機能など)をシステム100の特定の構成要素に割り振ることにより、操作性能、通信および/または同様のものの効率が改善される。例えば、スレーブロボットアセンブリ190のサブユニット191、192、194、および194のうちの1つ以上が、外科医コンソール170および/またはネットワーク化されたコンピューティングノード180からの処理、通信などを必要とする状況が発生した場合、サブユニット191、192、194、および194は、外科医コンソール170および/またはネットワーク化されたコンピューティングノード180と通信するように構成される。しかしながら、スレーブロボットアセンブリ190のサブユニット191、192、194、および194は、外科医コンソール170および/またはネットワーク化されたコンピューティングノード180からの処理、通信などを必要とせずに、特定の処理、通信、および/または他のコンピューティングタスクを処理し、それにより外科医コンソール170および/またはネットワーク化されたコンピューティングノード180の処理および/または通信帯域幅を解放するように構成される。これにより、外科医コンソール170および/またはネットワーク化されたコンピューティングノード180は、より多くのスレーブロボットアセンブリ190に適応することが可能になり、それにより、外科ロボットシステム100の機能および柔軟性が向上する。
外科医コンソール170と、ネットワーク化されたコンピューティングノード180と、スレーブロボットアセンブリ190との間の通信は、リアルタイム通信および非リアルタイム通信を含む。本明細書で使用される場合、「リアルタイム通信」という用語は、発生したイベントに対応するデータ(例えば、手術システム100のエラーに関するデータ、手術システム100に対する重大なリスクに関する警告、他の重要なデータなど)の送信を指す。本明細書で使用される場合、「非リアルタイム通信」という用語は、ネットワーク化されたコンピューティングノード180があまり使用されていないとき、またはオフピーク時にあることに対応するデータ(例えば、重要でないデータ)の送信を指す。
図2に示されるように、外科医コンソール170は、外科医ディスプレイグラフィカルユーザインターフェース(GUI)306、外科医マスターコンソールソフトウェアサブシステム307、および外科医二次的ディスプレイGUI308を含む。図2には別個に示されていないが、いくつかの実施形態では、外科医コンソール170は、1つ以上のプロセッサによって実行されたときに、外科医コンソール170に、外科医ディスプレイグラフィカルユーザインターフェース(GUI)306、外科医マスターコンソールソフトウェアサブシステム307、および/または外科医二次的ディスプレイGUI308を実装させる命令を記憶する1つ以上のメモリユニットに結合された1つ以上のプロセッサを含む。このようにして、例えば、外科医コンソール170は、外科医などのユーザがネットワーク化されたコンピューティングノード180およびスレーブロボットアセンブリ190を介して1つ以上のセットアップアームユニット192、ロボットアームユニット193、および/または器具駆動ユニット194と対話することを可能にする、プログラム、スクリプト、または他の実行可能コマンドなどの手順を実行するように構成される。外科医コンソール170は、外科医ディスプレイGUI306を生成して、ディスプレイユニット122を介して外科医に情報を提示するようにさらに構成される。
いくつかの実施形態では、外科医コンソール170のディスプレイユニット122は、外科医からタッチ入力を受信することができるタッチスクリーンである。外科医コンソール170のディスプレイユニット122は、タッチの圧力および長さを識別および決定するように構成される。いくつかの実施形態では、外科医ディスプレイGUI306は、タッチ入力の時間の長さを決定するように構成されており、タッチ入力の時間の長さに基づいて、外科医ディスプレイGUI306は、1つ以上の異なるグラフィカルユーザインターフェースアイテムを提示することができる。例えば、外科医ディスプレイGUI306が「戻る」ボタンを表示している場合に、「戻る」ボタンを単にタッチすると、画面が外科医ディスプレイGUI306の前の画面に戻り、外科医が戻るボタンを一定時間押し続けた場合、その際、メニューがドロップダウンして、1つ以上の外科医コンソール操作オプションが外科医に提供され得る。
図1には示されていないが、いくつかの実施形態では、外科医コンソール170は、第2のディスプレイユニットを含み、その場合、外科医コンソール170は、外科医二次的ディスプレイGUI308を生成して、外科医ディスプレイGUI306に関連して上述したのと同様の様式で、二次的ディスプレイユニットによって外科医に情報を提示するようにさらに構成される。
外科医マスターコンソールソフトウェアサブシステム307は、外科医ディスプレイGUI306および外科医二次的ディスプレイGUI308に動作可能に結合されており、一般に、外科医コンソール170の機能を実行するように構成される。例えば、外科医マスターコンソールソフトウェアサブシステム307は、外科医からの入力を捕捉、記録、および/または分析し、ならびに/またはネットワーク化されたコンピューティングノード180および/またはスレーブロボットアセンブリ190に、およびそれらからデータを通信するように構成される。いくつかの実施形態では、外科医マスターコンソールソフトウェアサブシステム307は、外科医コンソール170のオペレーティングシステム(図2には示されていない)、および/またはインターネットワーキング機能を実装する1つ以上のアプリケーションなどの外科医コンソール170のうちの1つ以上の他の構成要素に結合される。そのようなインターネットワーキング機能の実施例には、リアルタイムパブリッシュサブスクライブプロトコル(RTPS)を含む、リアルタイムシステム(DDS)のデータ分布サービスプロトコルなどの機械間通信プロトコルを含む、1つ以上のパケット通信または送信プロトコルが含まれるが、これに限定されない。インターネットワーキング機能によって実装されたパケット送信プロトコルは、システム100のパブリッシャとサブスクライバ間のスケーラブルで、リアルタイムで、信頼性があり、高性能で、相互運用可能なパケットまたはデータ交換を可能にする。本明細書で説明するように、「パブリッシャ」は、メッセージまたはデータの送信者であり、「サブスクライバ」は、メッセージまたはデータの受信者である。上述のように、手術ロボットシステム100は、いくつかの実施例では、パブリッシュ−サブスクライブメッセージングパターンを実装し、それにより、パブリッシャは、メッセージをクラスに分類することによってサブスクライバにメッセージを送信し得る。サブスクライバは、特定のクラスへの関心を示し、特定のクラスと関連付けられた、または特定のクラスに分類されたメッセージを受信することができる。
各クラスは特定の識別子と関連付けられ、パブリッシャは、メッセージをクラスの識別子と関連付けることにより、メッセージを特定のクラスに分類することができる。サブスクライバは、クラスの特定の識別子と関連付けられ、識別子と関連付けられるメッセージを受信する。いくつかの実施形態では、サブスクライバの入口インターフェースのインターネットワーキング機能は、サブスクライバと関連付けられたクラス識別子を決定し、かつそれらのクラス識別子と関連付けられたメッセージを受信するように構成される。メッセージは、使用されている通信または送信プロトコルに基づいて、パケット内にカプセル化され得る。いくつかの実施形態では、パケットの特定のフィールドまたはビットは、メッセージと関連付けられたクラスの識別子を含み得る。サブスクライバの入口インターフェースは、パケットのフィールドまたはビットを読み取ることにより、メッセージと関連付けられたクラスの識別子を決定するように構成され得る。
コンピューティングノードは、メッセージのパブリッシャおよび別のメッセージのサブスクライバの両方である場合がある。例えば、外科医コンソール170は、外科医コンソール170がネットワーク化されたコンピューティングノード180に送るメッセージ、またはそれに送信するメッセージのパブリッシャであり得、外科医コンソール170は、外科医コンソール170がネットワーク化されたコンピューティングノード180から受信するメッセージのサブスクライバであり得る。いくつかの実施形態では、外科医コンソール170は、外科医コンソール170がスレーブロボットアセンブリ190に送るメッセージ、またはそれに送信するメッセージのパブリッシャであり得、外科医コンソール170は、外科医コンソール170がスレーブロボットアセンブリ190から受信するメッセージのサブスクライバであり得る。
図2を引き続き参照すると、ネットワーク化されたコンピューティングノード180は、手術室(OR)チームディスプレイGUI301、コアソフトウェア302、オブザーバソフトウェア303、電源管理ソフトウェア304、およびグローバルセーフティモニター305を含む。図2には別個に示されていないが、いくつかの実施形態では、ネットワーク化されたコンピューティングノード180は、1つ以上のプロセッサによって実行されたときに、ネットワーク化されたコンピューティングノードに、手術室チームディスプレイGUI301、コアソフトウェア302、オブザーバソフトウェア303、電源管理ソフトウェア304、および/またはグローバルセーフティモニター305を実装させる命令を記憶する1つ以上のメモリユニット120に結合された1つ以上のプロセッサ118を含む。このようにして、例えば、ネットワーク化されたコンピューティングノード180は、外科医などのユーザが外科医コンソール170を介してスレーブロボットアセンブリ190の1つ以上のセットアップアームユニット192、ロボットアームユニット193、および/または器具駆動ユニット194の動作を達成することを可能にする、プログラム、スクリプト、または他の実行可能コマンドなどの手順を実行するように構成される。場合によっては、ネットワーク化されたコンピューティングノード180は、それぞれ外科医コンソール170およびスレーブロボットアセンブリ190のうちの一方から受信した情報を変換または他の方法で処理し、かつ外科医コンソール170およびスレーブロボットアセンブリ190のうちの他方に情報を伝達する、外科医コンソール170とスレーブロボットアセンブリ190との間のインターフェースとして動作する。
図1または図2には示されていないが、いくつかの実施形態では、ネットワーク化されたコンピューティングノード180は、1つ以上の画像または画像のストリームなどの情報をOR要員に表示するように構成されたディスプレイユニットを含むか、またはそれに結合される。ディスプレイユニットは、ディスプレイユニットに表示された情報または画像の可視性がOR内の誰でも容易に見ることができるように構成され得る。そのような実施形態では、ネットワーク化されたコンピューティングノード180は、ORチームディスプレイGUI301を生成して、ネットワーク化されたコンピューティングノード180のディスプレイユニットを介してOR要員に情報を提示するように構成されている。
手術室チームディスプレイGUI301は、コアソフトウェアシステム302に動作可能に結合されており、それにより、ユーザまたは臨床医からの入力が、コアソフトウェアシステム302およびコアソフトウェアシステム302に結合された他のシステムによって捕捉、記録および分析される。様々な実施形態において、コアソフトウェアシステム302は、ネットワーク化されたコンピューティングノード180のオペレーティングシステム(図2には別個に示されていない)、および/または例えば、インターネットワーキング機能を実装するアプリケーションなどのネットワーク化されたコンピューティングノード180のうちの1つ以上の他のアプリケーションに結合されている。
コアソフトウェアシステム302はまた、オブザーバソフトウェアシステム303に動作可能に結合され、オブザーバソフトウェアシステム303は、スレーブロボットアセンブリ190などのシステム100の他の構成要素を観察および制御するように構成されたプロトコルおよびツールを含む産業用制御システムである。例えば、オブザーバソフトウェアシステム303は、ネットワーク化されたコンピューティングノード180と動作可能に結合されているシステム100の構成要素の様々な動作状態を観察するように構成される。例えば、オブザーバソフトウェアシステム303は、電源オンおよび電源オフ状態を含む、スレーブロボットアセンブリ190の様々な動作状態を観察することができる。オブザーバソフトウェアシステム303はまた、システム100の構成要素の様々な動作状態と関連付けられた情報を、コアソフトウェアシステム302に送信するように構成される。いくつかの実施形態では、コアソフトウェアシステム302は、システム100の構成要素の動作状態に基づいて、実施される1つ以上の命令および/または実行されるアクションを決定するように構成される。
コアソフトウェアシステム302はまた、電源管理ソフトウェアシステム304に動作可能に結合されており、電源管理ソフトウェアシステム304は、スレーブロボットアセンブリ190、ならびにカートユニット194、セットアップアームユニット192、ロボットアームユニット193および/または器具駆動ユニット194などのスレーブロボットアセンブリ190の様々な構成要素の電力使用量などのシステム100の様々な構成要素による電力使用量を決定するように構成される。電源管理ソフトウェアシステム304は、様々な電力使用量メトリック、ルール、および/または閾値を記憶し、システム100の様々な構成要素による電力使用量と関連付けられた一セットの電力使用量ルールに基づいて、実施される1つ以上の命令および/または実行されるアクションを決定するように構成される。コアソフトウェアシステム302は、いくつかの実施例では、システム100の構成要素に供給される、またはそれによって使用される電力の変化の要求を電源管理ソフトウェアシステム304に転送して、電力使用量ルールの遵守を確実にするように構成される。
電源管理ソフトウェアシステム304は、電力使用量メトリックおよび/または電力使用量と関連付けられたルールに基づいて、要求された変更が許可されるか、または実行可能であるかどうかを決定するように構成される。例えば、ネットワーク化されたコンピューティングノード180が、通信経路106aのうちの1つを介して外科医コンソール170から、器具駆動ユニット194に結合された手術器具を駆動するために使用される電力を増加する要求を受信すると、コアソフトウェアシステム302は、その電力を増加する要求を電源管理ソフトウェアシステム304に転送する。電源管理ソフトウェアシステム304は、器具駆動ユニット194の電力使用量と関連付けられたルールに基づいて、器具駆動ユニット194に結合された手術器具を駆動するのに現在使用されている電力が、器具駆動ユニット194の器具が駆動されることを許可される最大電力より低いことを決定し、それに応答して、通信経路106および202のうちの1つ以上を介して、IDUソフトウェアサブシステム314に、器具駆動ユニット194に結合された手術器具を駆動するのに使用される電力を増加させる命令を転送する。いくつかの実施形態では、電源管理ソフトウェアシステム304は、命令をコアソフトウェアシステム302に転送し、コアソフトウェアシステム302は、命令をスレーブロボットアセンブリ190に送信する。
コアソフトウェアシステム302はまた、グローバルセーフティモニターシステム305に動作可能に結合される。グローバルセーフティモニターシステム305は、システム100の様々なセーフティ閾値を超えているかどうかを決定するための1つ以上のルールを含む。グローバルセーフティモニターシステム305は、ネットワーク化されたコンピューティングノード180、外科医コンソール170、ならびにスレーブロボットアセンブリ190およびそれらの構成要素を含む、システム100の各構成要素のセーフティレベルを監視する。システムのセーフティレベルは、構成要素の1つ以上のセーフティメトリック(例えば、図1または図2に個別に示されていないセンサまたは他の測定デバイスによって決定される)を比較し、次に、メトリックをグローバルセーフティモニター305の1つ以上のルールと比較することにより、それらのメトリックが構成されたセーフティ閾値内にあるかどうかを決定することによって決定される。グローバルセーフティモニターシステム305の追加の詳細は、図4の文脈で以下に提供される。
上述のように、システム100はまた、スレーブロボットアセンブリ190などの1つ以上のスレーブロボットアセンブリを含み、各スレーブロボットアセンブリは、それぞれカートユニット191、セットアップアームユニット192、ロボットアームユニット193、器具駆動ユニット194などのカートユニット、セットアップアームユニット、ロボットアームユニット、器具駆動ユニットを含むことができる。一般に、スレーブロボットアセンブリ190のカートユニット191、セットアップアームユニット192、ロボットアームユニット193、および器具駆動ユニット194は、通信経路202とともに、同期ネットワークを画定し、ここで、サブユニット191、192、193、および194の各々によって使用されるクロックは、互いに同期される。スレーブロボットアセンブリ190の同期ネットワークのトポロジーは、単方向リングネットワーク、双方向リングネットワークおよび/または同様のものを含むリングネットワークトポロジーなどの効率的な同期ネットワークを可能にする任意のネットワークトポロジーであり得る。カートユニット191、セットアップアームユニット192、ロボットアームユニット193、器具駆動ユニット194などのスレーブロボットアセンブリ190の様々な構成要素は、制御自動化技術(EtherCAT)のためのイーサネット(登録商標)などの1つ以上の通信プロトコルを利用して、通信経路202を介して互いに通信するように構成される。
図2に示すように、カートユニット191は、スレーブロボットアセンブリソフトウェアサブシステム309、アームカートソフトウェアサブシステム310、およびデータコントローラ315を含む。図2には別個に示されていないが、いくつかの実施形態では、カートユニット191は、1つ以上のプロセッサによって実行されたときに、カートユニット191に、スレーブロボットアセンブリソフトウェアサブシステム309およびアームカートソフトウェアサブシステム310を実装させる命令を記憶する1つ以上のメモリユニットに結合された1つ以上のプロセッサを含む。このようにして、例えば、カートユニット191は、外科医などのユーザが、他の操作の中でも、カートユニット191を手術台の側面に沿って移動することを可能にするプログラム、スクリプト、または他の実行可能なコマンドなどの特定の手順を実施するように構成される。カートユニット191は、いくつかの実施例では、ネットワーク化されたコンピューティングノード180および/または外科医コンソール170などのシステム100の他の構成要素から1つ以上のパケットを受信するように構成される。
いくつかの実施形態では、スレーブロボットアセンブリソフトウェアサブシステム309は、EtherCATなどの1つ以上のパケット通信または伝送プロトコルを含むインターネットワーキング機能を実装するアプリケーションなどのスレーブロボットアセンブリ190のうちの1つ以上の他のアプリケーションに結合される。スレーブロボットアセンブリソフトウェアサブシステム309は、スレーブロボットアセンブリソフトウェアサブシステム309がスレーブロボットアセンブリ190の様々なサブユニット191、192、193、および194と関連付けられた情報に基づいて実施される命令および/または実行されるアクションを決定するために利用する、1つ以上のルールのセットを含む。スレーブロボットアセンブリユニット190は、カートユニット191、セットアップアームユニット192、ロボットアームユニット193、器具駆動ユニット194と関連付けられた情報を使用して決定を行うように構成される。スレーブロボットアセンブリ190の様々なユニットと関連付けられた情報に基づいて命令を分析および決定することのさらなる詳細は、図4、図5、および図6の文脈で以下に提供される。
スレーブロボットアセンブリソフトウェアサブシステム309は、通信経路106aおよび106bのうちの1つ以上を介して、ネットワーク化されたコンピューティングノード180および外科医コンソール170などのシステム100の他の構成要素から1つ以上のパケットを非同期様式で受信するように構成される。効率的な通信を促進するために、いくつかの実施形態では、スレーブロボットアセンブリ190によって受信されるパケットは固定サイズであり、パケット内のデータの特定ビットは、スレーブロボットアセンブリ190の特定の構成要素と関連付けられている。スレーブロボットアセンブリソフトウェアサブシステム309は、パケット内のデータの特定のビットと関連付けられているスレーブロボットアセンブリ190の構成要素を識別し、必要に応じて、通信経路202のうちの1つ以上を介して、同期様式でビットが運ぶデータをスレーブロボットアセンブリ190の適切な構成要素に転送するように構成される。例えば、スレーブロボットアセンブリソフトウェアサブシステム309に通信されるパケットは、パケットの最初の128ビットがカートユニット191と関連付けられ、パケットの次の128ビットがセットアップアームユニット192と関連付けられ、パケットの次の128ビットがロボットアームユニット193と関連付けられ、パケットの次の128ビットが器具駆動ユニット194と関連付けられるように構成され得る。パケットはまた、サブユニット191、192、193、および194に対応し、それらの値に応じて、パケットがそれぞれのサブユニット191、192、193、および194のデータを含むかどうかを示すそれぞれのフラグを含むことができる。スレーブロボットアセンブリソフトウェアサブシステム309は、パケットに存在するフラグおよび/またはビットの値に基づいて、パケットの意図された宛先を識別するように構成される。パケットがカートユニット191自体を対象とするデータを含む場合、カートソフトウェアサブシステム310に動作可能に結合されているスレーブロボットアセンブリソフトウェアサブシステム309は、データをカートソフトウェアサブシステム310に転送し、カートソフトウェアサブシステム310は、そのデータに基づいて、カートユニット191が実施する命令を決定するように構成される。
スレーブロボットアセンブリソフトウェアサブシステム309は、データコントローラ315に通信可能に結合される。スレーブロボットアセンブリ190の他のサブユニットのうちの1つからスレーブロボットアセンブリソフトウェアサブシステム309が受信した各パケットについて、データコントローラ315は、受信したデータに応答するアクションがスレーブロボットアセンブリ190によってローカルに実行され得るかどうか、またはデータがネットワーク化されたコンピューティングノード180に送信されるべきかどうかを決定する。スレーブロボットアセンブリソフトウェアサブシステム309に送信されるデータは、本明細書ではデータタイプと称されるタイプまたはカテゴリと関連付けられる。スレーブロボットアセンブリ190の各サブユニットは、データを様々なデータタイプと関連付けるように構成されており、データタイプは、構成データまたは構成データへの変更を通じてスレーブロボットアセンブリ190に追加され、またはそれから削除される。データタイプには、画像データ、位置データ、中間計算データ、エラーデータが含まれるが、これらに限定されない。
各データタイプは一意の識別子と関連付けられており、スレーブロボットアセンブリ190のサブユニットは、スレーブロボットアセンブリソフトウェアサブシステム309にデータを送信するときに、送信されるデータを含むパケット内に一意の識別子を含むように構成される。いくつかの実施形態では、データが一連のパケットで送信される場合、一連のパケット内のパケットの各々は、データと関連付けられたデータタイプの一意の識別子を含む。いくつかの実施形態では、データが一連のパケットで送信される場合、一連の最初のパケットのみがデータと関連付けられたデータタイプの一意の識別子を含み、一連の最後のパケットは、すべてのデータが送信されたことを示す一連のビットを含み、スレーブロボットアセンブリソフトウェアサブシステム309は、最初のパケットに含まれるデータタイプを、最初のパケット、最後のパケット、およびすべての中間パケットのデータと関連付けるように構成される。
各データタイプは優先度レベルと関連付けられており、スレーブロボットアセンブリ190は、データタイプと関連付けられた優先度レベルに基づいてアクションを実行することができるかどうかを示す、一セットのローカルアクションルールを含む。いくつかの実施形態では、優先度レベルは、高優先度、中優先度、低優先度である。1つ以上のローカルアクションルールは、スレーブロボットアセンブリ190のサブユニットが利用するように構成されている各データタイプについて少なくとも1つの優先度レベルを特定する。上述のように、データタイプには、画像データ、位置データ、中間計算データ、エラーデータが含まれているが、これらに限定されない。いくつかの実施形態では、画像データは、高優先度と関連付けられ、中間計算は、低優先度と関連付けられ、位置データは、中優先度と関連付けられ、さらにエラーデータは、中優先度と関連付けられる。
優先度レベルごとに、1つ以上のローカルアクションルールが、アクションをローカルで実行することができるかどうかを特定する。特定の優先度レベルでは、ローカルアクションルールは、優先度レベルおよび受信されたデータと関連付けられたデータタイプに基づいて、アクションをローカルで実行することができるかどうかを特定する。アクションをローカルで実行することができない場合、ローカルアクションルールは、データがネットワーク化されたコンピューティングノード180に送信されるべきであることを特定する。アクションをローカルで実行することができる場合、ローカル解決ルールは、アクションを実行するための機械可読な指示を特定する。本明細書で説明するように、「機械可読命令」という用語は、実行するコンピューティングノードが処理または実施するように構成されている、プログラミング言語の構文、またはバイナリコードなどの命令および/またはコマンドを含む。ローカルアクションルールが特定するアクションの実施例には、セットアップアームユニット192、ロボットアームユニット193および/または同様のものなどのスレーブロボットアセンブリ190のサブユニットの新しい位置データを計算すること、スレーブロボットアセンブリ190に動作可能に結合された画像捕捉デバイスによって捕捉された画像からの画像データを、ネットワーク化されたコンピューティングノード180および/または同様のものなどのシステム100の別のコンピューティングノードに送信すること、セットアップアームユニット192、ロボットアームユニット193、器具駆動ユニット194および/または同様のものなどのスレーブロボットアセンブリ190のサブユニットの電力レベルを計算および/または設定すること、スレーブロボットアセンブリ190のサブユニットの温度が閾値温度を超えているかどうかを決定すること、器具駆動ユニット194に結合されているエンドエフェクタおよび/または同様のものなどの特定の器具のケーブルのたるみを計算すること、スレーブロボットアセンブリ190の1つ以上のサブユニットへの電力供給を抑制(例えば、パワーダウンすることによって)すること、ならびにスレーブロボットアセンブリ190の1つ以上のサブユニットと関連付けられたモータを抑制(例えば、ブレーキをかけること、および/または電力供給を抑制することによって)することが含まれるが、これらに限定されない。
データコントローラ315は、スレーブロボットアセンブリソフトウェアサブシステム309によって受信されたデータのデータタイプを識別し、1つ以上のローカルアクションルールおよびデータタイプに基づいて、受信されたデータの優先度レベルを識別するように構成される。データコントローラ315は、優先度レベルおよび1つ以上のローカルアクションルールに基づいて、実行するアクションを識別するように構成される。アクションがローカルで実行することができないことをデータコントローラ315が識別した場合、データコントローラ315は、ネットワーク化されたコンピューティングノード180に、スレーブロボットアセンブリソフトウェアサブシステム309が受信したデータを送信する。アクションがローカルで実行することができることをデータコントローラ315が識別した場合、その際、データコントローラ315は、アクションを実行し、実行されたアクションを実装するために、データをスレーブロボットアセンブリソフトウェアサブシステム309に送信したサブユニットのための一セットの命令を生成する。
上述のように、位置データおよびエラーデータなどの特定のデータタイプは、中優先度と関連付けられており、スレーブロボットアセンブリソフトウェアサブシステム309が中優先度と関連付けられたデータを受信することに応じて、データコントローラ315は、アクションが優先度レベル、データタイプ、およびローカルアクションルールに基づいてローカルで実行することができるかどうかを決定する。例えば、ローカルアクションルールが、中優先度データおよび位置データのデータタイプについてのアクションがローカルで実行され得る一方で、エラーデータのデータタイプについてのアクションがローカルで実行され得ないと特定する場合、データコントローラ315は、スレーブロボットアセンブリソフトウェアサブシステム309が位置データを受信することに応じて、特定された機械可読命令に基づいて新しい位置データを計算し、スレーブロボットアセンブリソフトウェアサブシステム309がエラーデータを受信することに応じて、ネットワーク化されたコンピューティングノード180にエラーデータを送信する。
セットアップアームユニット192は、セットアップアームソフトウェアサブシステム311およびアームカートディスプレイGUI312を含む。さらに、図2には別個に示されていないが、いくつかの実施形態では、セットアップアームユニット192は、1つ以上のプロセッサによって実行されたときに、セットアップアームユニット192に、セットアップアームソフトウェアサブシステム311およびアームカートディスプレイGUI312を実装させる命令を記憶する1つ以上のメモリユニットに結合された1つ以上のプロセッサを含む。このようにして、例えば、セットアップアームユニット192は、外科医などのユーザが、他の操作の中でも、セットアップアームユニット192を移動することを可能にするプログラム、スクリプト、または他の実行可能なコマンドなどの特定の手順を実施するように構成される。
また、図2には示されていないが、セットアップアームユニット192は、アームカートディスプレイデバイスに結合され得、ディスプレイデバイスを介して情報を表示するように構成され得る。ディスプレイデバイスに表示される情報は、例えば、手術台に対するカートユニット191の位置、患者および手術台に対するセットアップアームユニット192の位置、ロボットアームユニット193の位置、ならびに/または器具駆動ユニット194の位置を含む、スレーブロボットアセンブリ190の位置と関連付けられた情報を含み得る。アームディスプレイGUI312は、セットアップアームソフトウェアサブシステム311に動作可能に結合され得、それにより、ユーザまたは臨床医からの入力が、アームディスプレイGUI312によって、捕捉、記録、および分析され、入力は、セットアップアームソフトウェアサブシステム311に送信される。セットアップアームソフトウェアサブシステム311は、スレーブロボットアセンブリ190によって受信されたパケットおよび/またはカートユニット191、ロボットアームユニット193、または器具駆動ユニット193から受信されたパケットで受信された情報に基づいて、セットアップアームユニット191によって実施されるべき命令および/または実行されるべきアクションを決定するように構成される。いくつかの実施形態では、セットアップアームソフトウェアサブシステム311は、スレーブロボットアセンブリ190の1つ以上の他の構成要素によって実施される命令を決定し、スレーブロボットアセンブリ190の1つ以上の他の構成要素に、命令および/または他のデータを送信するように構成される。
ロボットアームユニット193は、ロボットアームソフトウェアサブシステム313を含む。さらに、図2には示されていないが、いくつかの実施形態では、ロボットアームユニット193はまた、1つ以上のプロセッサによって実行されたときに、ロボットアームユニット193に、ロボットアームソフトウェアサブシステム313を実装させる命令を記憶する1つ以上のメモリユニットに結合された1つ以上のプロセッサを含む。このようにして、例えば、ロボットアームユニット193は、外科医などのユーザが、他の操作の中でも、ロボットアームユニット193を患者104に対して移動することを可能にするプログラム、スクリプト、または他の実行可能なコマンドなどの特定の手順を実施するように構成される。ロボットアームソフトウェアサブシステム313は、いくつかの実施形態では、スレーブロボットアセンブリ190のうちの1つ以上の他のアプリケーションに結合されており、スレーブロボットアセンブリ190によって受信されたパケットおよび/またはカートユニット191、セットアップアームユニット192、もしくは器具駆動ユニット193から受信されたパケットに基づいて、ロボットアームユニット193によって実施されるべき命令および/または実行されるべきアクションを決定するように構成される。
例えば、スレーブロボットアセンブリ190は、ロボットアームユニット193と関連付けられた構成データを受信することができ、ロボットソフトウェアサブシステム313は、構成データがロボットアームユニット193によって受信されると、ロボットアームユニット193の構成データを更新する。スレーブロボットアセンブリ190はまた、ロボットアームを新しい位置に移動すること、またはロボットアームのすべての動作を一時停止することなどの、ロボットアームユニット193が実行する動作を示す動作モードデータまたは命令を受信する。ロボットソフトウェアサブシステム313は、ロボットアームユニット193に対する命令が有効であるかどうかを決定し、有効である場合、ロボットアームユニット193に動作を実行させるように構成される。いくつかの実施形態では、スレーブロボットアセンブリソフトウェアサブシステム309は、スレーブロボットアセンブリ190に対する何らかの命令が有効であるかどうかを決定し、有効である場合、通信経路202によって画定されるリングトポロジーを介して命令を送信するように構成されており、命令がロボットアームユニット193を対象としたものである場合、ロボットソフトウェアサブシステム313は、その際、ロボットアームユニット193に、命令が有効であるかどうかをチェックすることなく、命令またはコマンドと関連付けられた動作を実行させる。
ロボットアームユニット193は、通信経路202のうちの1つ以上、他のサブユニット191、192、および194のうちの1つ以上、ならびに通信経路106のうちの1つ以上を介して、ネットワーク化されたコンピューティングノード180または外科医コンソール170に、1つ以上のパケットを送信する。このようにして、ロボットアームユニット193は、同期ネットワークおよび非同期ネットワークの両方の要素を用いることによって、ネットワーク化されたコンピューティングノード180または外科医コンソール170に、1つ以上のパケットを送信する。ロボットアームユニット193は、他のデータの中でも、ロボットアームユニット193のロボットアームに結合された任意のセンサもしくはロボットアームユニット193に結合された任意のセンサからのデータ、患者および/もしくは手術台に対するロボットアームの位置データ、ロボットアームユニット193の動作状態もしくは動作モード、ロボットアームユニット193の現在の構成データならびに/または同様のものを送信する。ロボットアームユニット193は、いくつかの実施例では、EtherCATを使用してアームカートユニット191に情報を送信するように構成されており、アームカートユニット191は、ネットワーク化されたコンピューティングノード180にデータを転送するように構成される。
器具駆動ユニット194は、器具駆動ユニットソフトウェアサブシステム314を含む。さらに、図2には示されていないが、いくつかの実施形態では、器具駆動ユニット194は、1つ以上のプロセッサによって実行されたときに、器具駆動ユニット194に、器具駆動ユニットソフトウェアサブシステム314を実装させる命令を記憶する1つ以上のメモリユニットに結合された1つ以上のプロセッサを含む。このようにして、例えば、器具駆動ユニット194は、外科医などのユーザが、他の操作の中でも、医療処置中に器具駆動ユニット194に結合された手術器具を操作することを可能にするプログラム、スクリプト、または他の実行可能なコマンドなどの特定の手順を実施するように構成される。器具駆動ユニットソフトウェアサブシステム314は、器具駆動ユニット194によって受信されたデータに基づいて、器具駆動ユニット194によって、および/またはそれに結合された手術器具によって実行されるべき1つ以上のアクションを決定するように構成される。器具駆動ユニットソフトウェアサブシステム314はまた、器具駆動ユニット194および/または手術器具に、決定された1つ以上のアクションを実行させるように構成される。
器具駆動ユニットソフトウェアサブシステム314は、ネットワーク化されたコンピューティングノード180および/または外科医コンソール170にデータの1つ以上のパケットを送信するように構成される。いくつかの実施形態では、ネットワーク化されたコンピューティングノード180または外科医コンソール170にデータを送信するために、器具駆動ユニットソフトウェアサブシステム314は、通信経路202のうちの1つ以上を介して同期様式でアームカートユニット191にデータを送信し、アームカートユニット191は、データをネットワーク化されたコンピューティングノード180に転送する。次に、ネットワーク化されたコンピューティングノード180は、アームカートユニット191から受信したデータに基づいて、命令または信号を外科医コンソール170に送信するべきかどうかを決定する。器具駆動ユニット194は、他のデータの中でも、器具駆動ユニット194に結合された手術器具に含まれるか、またはそれに取り付けられる1つ以上のセンサ(図2には示されていない)によって捕捉または記録されたデータを含むパケットを送信することができる。器具駆動ユニット194は、器具駆動ユニット194の手術器具の位置に関連するか、もしくはそれと関連付けられたデータのパケット、器具駆動ユニット194の構成データおよび/または同様のものを送信する。器具駆動ユニット194はまた、いくつかの実施例では、器具駆動ユニット194の手術器具の動作モードデータを送信する。
いくつかの実施形態では、器具駆動ユニット194は、構成データの1つ以上のパケットを受信し、器具駆動ユニットソフトウェアサブシステム314は、受信した構成データに基づいて、器具駆動ユニット194の構成データを更新するように構成される。器具駆動ユニット194はまた、器具駆動194の手術器具を差し入れるために、いくつかの動作モードの中から特定の動作モードなどの動作モードデータのパケットを受信する。器具駆動ユニット194はまた、手術器具の特定の動作を開始する、もしくは手術器具の特定の動作を停止する、または器具駆動ユニット194の手術器具の任意の動作を一時的に停止するためのコマンドなどの、手術器具に対するコマンドを含むパケットを受信する。
いくつかの実施形態では、スレーブロボットアセンブリ190のサブユニット191、192、193、および194は、サブユニット191、192、193、および194の各々がサブユニット191、192、193、および194のうちの少なくとも2つの他のものに結合するように、互いに結合して、リングトポロジーを形成する。例えば、図2では、カートユニット191は、セットアップアームユニット192および器具駆動ユニット194に結合される。同様に、セットアップアームユニット192は、カートユニット191およびロボットアームユニット193に結合されており、ロボットアームユニット193は、セットアップアームユニット192および器具駆動ユニット194に結合されており、器具駆動ユニット194は、ロボットアームユニット193およびカートユニット191に結合される。
図3を参照すると、外科医コンソール170と、ネットワーク化されたコンピューティングノード180と、スレーブロボットアセンブリ190と、外部システム371との間で通信される様々なタイプの情報が示されている。上述のように、ネットワーク化されたコンピューティングノード180は、通信経路106を介して外科医コンソール170に通信可能に結合されており、スレーブロボットアセンブリ190および外科医コンソール170は、通信経路106およびネットワーク化されたコンピューティングノード180を介して互いに通信可能に結合される。さらに、ネットワーク化されたコンピューティングノード180は、通信経路316を介して1つ以上の外部システム371に結合される。
外科医コンソール170とネットワーク化されたコンピューティングノード180との間の通信は、外科医コンソール170、ネットワーク化されたコンピューティングノード180、および通信経路106aによって少なくとも部分的に画定された非同期ネットワークを介してもたらされる。ネットワーク化されたコンピューティング180とスレーブロボットアセンブリ190のカートユニット191との間の通信は、通信経路106bによって少なくとも部分的に画定された非同期ネットワークによってもたらされる。カートユニット191と、器具駆動ユニット194および/またはロボットアームユニット193などのスレーブロボットアセンブリ190の他のサブユニットとの間の通信は、通信経路202によって少なくとも部分的に画定された同期ネットワークによって達成される。いくつかの実施形態では、通信経路202は、1つのリングネットワークの一部である。
通信経路106aを介して外科医コンソール170からネットワーク化されたコンピューティングノード180に送信されるデータのタイプの実施例には、限定ではないが、外科医からの様々な入力と関連付けられたデータ、外科医コンソール170の1つ以上のセンサと関連付けられたデータ、患者と関連付けられた診断データ、外科医コンソール170が、電源がオンになっているか、または電源がオフになっているかなどの外科医コンソールと関連付けられた状態またはモードデータ、外科医に関する情報、ならびに外科医コンソール170、ネットワーク化されたコンピューティングノード180、および/またはスレーブロボットアセンブリ190と関連付けられた構成データが含まれる。外科医コンソール170は、ネットワーク化されたコンピューティングノード180から、外科医コンソール170のハンドル112などの1つ以上の制御ユニットとの対話に応じて触覚フィードバックを受信する。さらに、外科医コンソール170は、通信経路106aを介して、ネットワーク化されたコンピューティングノード180から、例えば、スレーブロボットアセンブリの器具駆動ユニットに取り付けられた、または結合された内視鏡などの1つ以上の画像捕捉デバイスによって捕捉された1つ以上の画像を含むデータを受信する。外科医コンソール170はまた、システム100の様々なスレーブロボットアセンブリおよび/または様々な他のサブユニットによって使用されている様々な手術器具の状態またはモードデータおよび構成データを受信することができる。外科医コンソール170はまた、外科医コンソール170が実行するために、または外科医コンソールを操作する外科医が実行するか、もしくは従うために、ネットワーク化されたコンピューティングノード180から1つ以上のコマンドを受信し得る。例えば、ネットワーク化されたコンピューティングノード180は、特定のスレーブロボットアセンブリがもはや適切に機能していないこと、および外科医がそのスレーブロボットアセンブリの使用をもはや試みるべきではないことを外科医に警告するコマンドを、外科医コンソール170に送信し得る。
ネットワーク化されたコンピューティングノード180は、ORチームに提示される情報を更新するように構成される。例えば、コアソフトウェア302は、外科医コンソール170およびスレーブロボットアセンブリ190などのスレーブロボットアセンブリから受信したデータに応答して、通信経路366aを介して、ORチームディスプレイGUI301上のORチームに関連する情報を表す様々なビューへの更新を送信することができる。同様に、コアソフトウェア302は、通信経路366bを介して、外科医コンソール170またはスレーブロボットアセンブリ190に送信されることに関連する特定のデータを受信することができる。
ネットワーク化されたコンピューティングノード180は、非同期ネットワークの一部である通信経路106bを介してスレーブロボットアセンブリ190のカートユニット191にデータを送信し、かつ通信経路106bを介してスレーブロボットアセンブリ190のカートユニット191からデータを受信するように構成される。ネットワーク化されたコンピューティングノード180のコアソフトウェア302によってカートユニット191に送信されるデータの例示的なタイプは、構成データ、動作状態またはモードデータ、ならびにスレーブロボットアセンブリ190の1つ以上のサブユニット191、192、193、および194に対して特定のアクションを実行するための命令またはコマンドを含むが、これらに限定されない。
スレーブロボットアセンブリ190のカートユニット191は、スレーブロボットアセンブリ190内の同期ネットワークの一部である202などの通信経路を使用してパケットを送信することにより、ネットワーク化されたコンピューティングノード180から受信したデータを、ロボットアームユニット193および器具駆動ユニット194に送信する。カートユニット191は、同様の様式で、スレーブロボットアセンブリ190の他のサブユニット192、193、および/または194からデータを受信する。例えば、カートユニット191は、同期ネットワークの一部として、通信経路202を介して、器具駆動ユニット194およびロボットアームユニット193から、センサ、位置、動作状態もしくはモード、および/または構成に関するデータを受信する。ネットワーク化されたコンピューティングノード180に送信される必要があるデータの場合、カートユニット191は、非同期ネットワークの一部である通信経路106bを使用してデータを送信する。
ネットワーク化されたコンピューティングノード180は、いくつかの実施例では、1つ以上の外部システム371に通信可能に結合される。外部システム371の実施例には、患者システム、ユーザシステム、手術をスケジュールするスケジューリングシステム、外科システム100によってローカルおよびシステム全体の決定を行うのに使用されるローカル解決ルールおよびグローバル解決ルールを含むルールの1つ以上のセットを再構成するために使用され得る、医療処置システム、ならびに他の外部システムが含まれるが、これらに限定されない。ネットワーク化されたコンピューティングノード180が外部システム371から受信するデータの実施例には、例えば、CTスキャンなどの手術前画像、患者の病歴を含む患者に関連するデータ、ならびに外科医およびスタッフに関連するデータが含まれるが、これらに限定されない。ネットワーク化されたコンピューティングノード180は、外部システム371に、手術器具の使用、外科医コンソール170の使用、手順データ、および手術システム100で利用された画像捕捉デバイスによって捕捉された1つ以上の画像に関連するデータを送信し得る。
図4を参照すると、ロボット手術システム100の構成要素の例示的な構成が示されており、ここで、意思決定制御は、スレーブロボットアセンブリ190および/もしくはネットワーク化されたコンピューティングノード180の構成要素、または別の構成要素の間に割り振られる。明確な実施例を示すために、図1、図2、および図3の様々な構成要素を使用して、図4の文脈で手術システム100によって実行される動作を説明する。
本明細書で説明するように、ローカル意思決定は、システム100のマスター構成要素ではない、スレーブロボットアセンブリ190などの構成要素によって行われる決定を指す。本明細書で説明するように、グローバル意思決定は、ネットワーク化されたコンピューティングノード180などのシステム100のマスター構成要素によって行われる決定を指す。上述のように、ネットワーク化されたコンピューティングノード180は、システム100の様々なセーフティ閾値を識別し、システム100の様々なセーフティ閾値に違反しているかどうかを決定するための1つ以上のグローバル解決ルールを含む、グローバルセーフティモニター305を含む。したがって、以下でさらに説明するように、グローバル意思決定は、グローバルなアクションの実行につながる可能性があるが、ローカル意思決定は、ローカルアクションの実行につながる可能性がある。グローバルセーフティモニター305は、セーフティハンドラ401、402、403、404、405、406、407、408、409、410、411、412、413、414(総称して、401〜414)などのシステム100内の様々なセーフティハンドラから、様々なセーフティ閾値に関連するデータを受信する。各セーフティハンドラ401〜414は、セーフティ測定値を捕捉し、グローバルセーフティモニター305またはローカルセーフティモニター415などの意思決定ユニットに、その情報を送信するように構成される。本明細書で説明するように、セーフティ測定値は、システム100の異なる構成要素の性能測定、および/またはシステム100の構成要素の動作中に発生するエラーであり得る。
各セーフティハンドラ401〜414は、セーフティハンドラ401〜414に結合された、および/またはそれと関連付けられた構成要素またはサブシステムのセーフティ測定値を捕捉するように構成される。例えば、セーフティハンドラ401、402、403、404は、それぞれ、グラフィカルユーザインターフェース301、コアソフトウェアシステム302、オブザーバソフトウェアシステム303、電源管理ソフトウェアシステム304のセーフティ測定値を捕捉する。同様に、セーフティハンドラ406、407、408は、それぞれ、グラフィカルユーザインターフェース306、サブシステム307、グラフィカルユーザインターフェース308のセーフティ測定値を捕捉し、セーフティハンドラ409、410、411、412、413、414は、スレーブロボットアセンブリソフトウェアサブシステム309、カートソフトウェアサブシステム310、セットアップアームソフトウェアサブシステム311、アームディスプレイグラフィカルユーザインターフェース312、ロボットソフトウェアサブシステム313、器具駆動ユニットソフトウェアサブシステム314のセーフティ測定値を捕捉する。
上述のように、セーフティ測定値は、システム100の異なる構成要素の性能測定、および/またはシステム100の構成要素の動作中に発生するエラーであり得、セーフティハンドラ401〜414は、グローバルセーフティモニター305またはローカルセーフティモニター415などの意思決定エンティティに、情報を送信する。例えば、セーフティハンドラ406は、編集可能であるべき外科医コンソール170のディスプレイ122のグラフィカルユーザインターフェース上のフィールドが、ユーザがフィールドをクリックすることなどによってフィールドと対話しようとするときに編集可能であるかどうかを捕捉して、フィールドが編集可能であるかどうかを、グローバルセーフティモニター305に送信し得る。グローバルセーフティモニター305に送信されたデータが、編集可能なフィールドが編集不可能であり、ユーザがフィールドを編集することを妨げていることを示す場合、グローバルセーフティモニター305は、外科医コンソール170でユーザに警告を送信し、グラフィカルユーザインターフェース306が機能しているグラフィカルユーザインターフェースであるとはもはや見なさないように、ユーザに指示することができる。
セーフティハンドラ409〜414から受信した情報に基づく意思決定は、ローカル意思決定エンティティであるローカルセーフティモニター415によって、システム100のシステム内でローカルに実行され得る。ローカルセーフティモニター415は、セーフティハンドラ409〜414から受信したデータに基づいて様々な命令を決定し、ローカルセーフティモニター415が性能の問題またはエラーなどのセーフティ問題点を解決することができない場合は、スレーブロボットアセンブリ190のサブユニット191、192、193、および194、またはグローバルセーフティモニター305のいずれかに命令を送信するようにローカル解決ルールの1つ以上のセットで構成されている。ローカルセーフティモニター415は、セーフティハンドラから受信したデータをローカル解決ルールの一部として含んだセーフティ閾値データと比較することに基づいて、命令を生成することができる。
例えば、ロボットアームソフトウェアサブシステム313と結合されたセーフティハンドラ413は、ローカルセーフティモニター415に、ロボットアームユニット193がロボットアームの位置を更新するための命令を受信した後にロボットアームユニット193がロボットアームの位置を更新するのにかかる時間に関する情報を送信し得る。ローカルセーフティモニター415は、ロボットアームユニット193が命令を受信した後にロボットアームユニット193がロボットアームの位置を更新するのにかかった時間量が、ロボットアームによるそのような動きの実行についてのセーフティ閾値時間より大きいかどうかを決定する。時間量がセーフティ閾値時間よりも十分に長い場合、ローカルセーフティモニター415は、ロボットアームユニット193の動作を一時停止または停止し、スレーブロボットアセンブリ190のロボットアームユニット193がもはや使用可能でないことをグローバルセーフティモニター305に通知するために、カートユニット191を介してグローバルセーフティモニター305に警告を送信することができる。したがって、この実施例におけるスレーブロボットアセンブリ190は、ローカルで決定を行う。
しかしながら、時間量はセーフティ閾値よりも大きいが、ローカルセーフティモニター415がロボットアームユニット193の動作を停止または一時停止するために十分な時間よりも小さい場合、ローカルセーフティモニター415は、時間量を含む警告を、カートユニット191を介してグローバルセーフティモニター305に送信することができる。グローバルセーフティモニター305は、時間量がロボットアームユニット193の動作を停止または一時停止するために十分であるかどうかを決定する際に、外科医コンソール170、ネットワーク化されたコンピューティングノード180などの他のシステムからの他のセーフティ測定値を考慮することができる。グローバルセーフティモニター305が、他のシステムからの他のセーフティ測定値を考慮した時間量がロボットアームユニット193の動作を一時停止または停止するために十分であると決定した場合、ネットワーク化されたコンピューティングノード180は、ロボットアームユニット193の動作を一時停止または停止するための命令を、スレーブロボットアセンブリ190に送信する。したがって、グローバルセーフティモニター305は、スレーブロボットアセンブリ190に対して非ローカルまたはシステム全体またはグローバルの決定を行う。いくつかの実施形態では、セーフティ閾値データは、構成手順中に利用された構成データからのものを含む1つ以上の構成手順によって設定および更新されてもよい。セーフティ閾値データは、構成データへの更新またはシステム100内のシステムの様々な構成要素への他の更新に基づいて更新されてもよい。
次に図5を参照すると、手術ロボットシステム100の構成要素の構成を用いて、スレーブロボットアセンブリ190および/もしくはネットワーク化されたコンピューティングノード180の構成要素または他の構成要素間にセーフティ関連データの意思決定制御を割り振るための方法500が示されている。ステップ502で、ローカルセーフティモニター(ローカルセーフティモニター415など)が開始され、それは、スレーブロボットアセンブリ190などのその対応するスレーブロボットアセンブリの様々なセーフティメトリックの監視を実行する。ステップ504で、ローカルセーフティモニターは、スレーブロボットアセンブリ190のサブユニット191、192、193、および194の様々なセーフティハンドラ(セーフティハンドラ409〜414など)から警告を受信する。いくつかの実施例では、特定のセーフティ問題点が発生していなくても、セーフティ警告が周期的に送信される場合がある。例えば、スレーブロボットアセンブリ190のロボットアームユニット193は、特定のセーフティ問題点が発生していなくても、スレーブロボットアセンブリが動作している間に30秒ごとにローカルセーフティモニターにセーフティ警告を送信することができる。ステップ506で、ローカルセーフティモニターは、ステップ504で受信した警告からのあらゆる警告がそれらのそれぞれの閾値を超えているかどうかを決定する。図4で上述したように、ローカルセーフティモニターは、セーフティ監視と関連付けられたルールに基づいて、対応する閾値に違反しているかどうかを決定する。閾値を超えている警告がない場合、方法500は、ステップ502に戻り、セーフティ監視を続ける。警告が対応する閾値を超える場合、ステップ508で、セーフティ警告およびセーフティ警告を送信したサブユニットが、ローカルセーフティモニターによって識別される。
ステップ510において、その対応する閾値を超えていると識別された各セーフティ警告について、ローカルセーフティモニターは、様々なセーフティ警告の閾値と関連付けられたルールに基づいて、ローカルアクションがローカルセーフティモニターによって実行され得るかどうかを決定する。ローカルアクションが実行され得る場合、ステップ512で、ローカルセーフティモニターは、ローカルアクションを実行して、セーフティ警告を解決する。ローカルアクションが実行され得ない場合、ステップ514で、ローカルセーフティモニターは、セーフティ警告をグローバルセーフティモニター(グローバルセーフティモニター305など)に伝達する。上述のように、グローバルセーフティモニターは、ネットワーク化されたコンピューティングノード180に常駐している。ステップ516において、グローバルセーフティモニターは、グローバルセーフティルールを使用して、伝達されたセーフティ警告の解決策を識別する。ステップ518において、ネットワーク化されたコンピューティングノード180は、受信されたセーフティ警告と関連付けられたサブユニットについての命令またはコマンドを決定すること、および命令またはコマンドをスレーブロボットアセンブリのカートユニットに送信することによって、受信されたセーフティ警告を解決するために必要なアクションを実行する。カートユニットは、スレーブロボットアセンブリの関連付けられたサブユニットおよびローカルセーフティモニターに、命令またはコマンドを送信する。ローカルセーフティモニターは、特定のセーフティ警告が解決されたとマークし、ステップ502のセーフティモニターで再開するように構成され得る。
次に図6を参照すると、手術ロボットシステム100の構成要素の構成を用いて、スレーブロボットアセンブリ190および/もしくはネットワーク化されたコンピューティングノード180の構成要素または他の構成要素間にアクションの実行を割り振るための方法600が示されている。明確な実施例を示すために、図2の文脈で説明された構成要素は、方法600を説明する際に使用される。ステップ602で、データコントローラ315などのデータコントローラが開始され、それは、スレーブロボットアセンブリソフトウェアサブシステム309によって受信されたデータを監視する。ステップ604において、パケットは、スレーブロボットアセンブリソフトウェアサブシステム309において同期ネットワークを介して受信される。いくつかの実施形態では、スレーブロボットソフトウェアサブシステム309は、同期ネットワークを介して受信されたパケットを、データコントローラ315に送信するように構成される。いくつかの実施形態では、データコントローラ315は、同期ネットワークを介してスレーブロボットソフトウェアサブシステム309に送信されたパケットのコピーを同時に受信する。ステップ606で、データコントローラ315は、パケット内のデータと関連付けられたデータタイプを識別する。いくつかの実施形態では、データコントローラ315は、データタイプの識別子に基づいてデータタイプを特定するように構成された1つ以上のルールに基づいて、データタイプを識別する。ステップ608で、データコントローラ315は、パケットにおけるデータと関連付けられた優先度レベルを識別する。上述のように、データコントローラ315は、パケット内のデータのデータタイプに基づいて、パケット内のデータと関連付けられた優先度レベルを識別するように構成される。
ステップ610で、データコントローラ315は、パケット内のデータと関連付けられた優先度レベルが高優先度閾値を超えているかどうかを決定する。高優先度と関連付けられたデータの実施例には、画像データが含まれるが、これに限定されない。いくつかの実施形態では、様々な優先度レベルに異なる値が割り当てられ、高優先度閾値は、高優先度レベルに割り当てられた値よりもわずかに低い値として特定される。受信したデータと関連付けられた優先度レベルが高優先度閾値を超えているとデータコントローラ315が決定した場合、ステップ620で、データコントローラ315は、非同期ネットワークを介して、パケットで受信したデータをネットワーク化されたコンピューティングノード180に送信する。いくつかの実施形態では、データコントローラ315は、パケットで受信したデータを送信するために、命令をスレーブロボットアセンブリソフトウェアサブシステム309に送信し、スレーブロボットアセンブリソフトウェアサブシステム309は、ネットワーク化されたコンピューティングノード180に、データを送信する。
受信したデータと関連付けられた優先度レベルが高優先度閾値を超えていないとデータコントローラ315が決定した場合、ステップ612で、データコントローラ315は、データと関連付けられた優先度レベルが低優先度閾値を下回っているかどうかを決定する。いくつかの実施形態では、低優先度閾値は、低優先度に割り当てられた値よりわずかに高い値として特定される。受信したデータと関連付けられた優先度レベルが低優先度閾値を下回っているとデータコントローラ315が決定した場合、データコントローラ315は、ローカルアクションルールおよび優先度レベルに基づいて、データに関連するアクションを識別する。ステップ624において、データコントローラ315は、上述のようにアクションを実行し、そのアクションに基づいて一セットの命令を生成し、ステップ626において、データコントローラ315は、同期ネットワークを介して、スレーブロボットアセンブリ190のサブユニットにパケットを送信する。
ステップ612で、データと関連付けられた優先度レベルが低優先度閾値を下回っているとデータコントローラ315が決定した場合、ステップ614で、データコントローラ315は、データと関連付けられた優先度レベルが中優先度閾値に関連するかどうかを決定する。いくつかの実施形態では、中優先度閾値は、値のある範囲に割り当てられ、例えば、中優先度閾値は、高優先度閾値に割り当てられた値よりも低いすべての値、および低優先度閾値に割り当てられた値よりも高いすべての値を含む。優先度レベルの値が中優先度閾値に割り当てられた値の範囲内にある場合、優先度レベルは、中優先度閾値に関連する。データの優先度レベルが中優先度閾値に関連しない場合、ステップ616で、データコントローラ315は、パケットをエラーパケットとして識別し、エラー処理を実行する。中優先度に関連しないデータの優先度レベルの実施例には、パケット内の値が未知の値である、もしくは破損している、および/または同様のことが含まれるが、これらに限定されない。エラー処理の一部として、データコントローラ315は、パケットの送信者を識別し、ネットワーク化されたコンピューティングノード180に、エラーおよび送信者の情報を送信する。いくつかの実施形態では、ネットワーク化されたコンピューティングノード180は、エラーおよび送信者の情報の受信に応答して、メッセージおよび/または命令をスレーブロボットアセンブリ190に送信して、送信者を再始動するか、または送信者の構成データを再ロードする。
ステップ614において、優先度レベルが中優先度レベルに関連しているとデータコントローラ315が決定した場合、データコントローラ315は、データに関連するアクションをローカルで実行することができるかどうかを決定する。上述のように、データコントローラ315は、データと関連付けられた優先度レベル、データと関連付けられたデータタイプ、およびローカルアクションルールに基づいて、データに関連するアクションをローカルに実行することができるかどうかを決定する。ローカルアクションルールが、データのアクションがローカルで実行され得ないことを特定する場合、方法600はステップ620に進み、データコントローラ315は、非同期ネットワークを介して、ネットワーク化されたコンピューティングノード180にデータを送信する。ローカルアクションルールが、アクションがローカルで実行され得ることを特定する場合、方法600はステップ622に進み、データコントローラ315は、上述のステップ622、624、および626に従って実行する。
「一実施例では」、「実施例では」、「いくつかの実施例では」、「一実施形態では」、「実施形態では」、「いくつかの実施形態では」、または「他の実施形態では」という語句は、各々、本開示による同じまたは異なる実施形態のうちの1つ以上のことを指す場合がある。「AまたはB」という形式の語句は、「(A)、(B)、または(AおよびB)」を意味する。「A、B、またはCのうちの少なくとも1つ」という形式の語句は、「(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)、または(A、B、およびC)」を意味する。
本明細書で説明するシステムはまた、1つ以上のコントローラを利用して、様々な情報を受信し、受信した情報を変換して出力を生成することができる。コントローラは、メモリ内に記憶された一連の命令を実行することが可能な、任意のタイプのコンピューティングデバイス、演算回路、または任意のタイプのプロセッサまたは処理回路を含み得る。コントローラは、多数のプロセッサおよび/またはマルチコア中央処理装置(CPU)を含んでもよく、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラ、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、および/または同類のものなどの任意のタイプのプロセッサを含んでもよい。コントローラはまた、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに1つ以上の方法および/またはアルゴリズムを実行させるデータおよび/または命令を記憶するメモリも含んでもよい。
本明細書で説明される方法、プログラム、アルゴリズム、またはコードのいずれもが、プログラミング言語またはコンピュータプログラムに変換されるか、または表現されてもよい。「プログラミング言語」および「コンピュータプログラム」は各々、本明細書で使用される場合、コンピュータへの命令を特定するために使用される任意の言語を含み、以下の言語およびその派生語(これらに限定されないが):Assembler、Basic、Batch files、BCPL、C、C+、C++、Delphi、Fortran、Java(登録商標)、JavaScript(登録商標)、Machine code、オペレーティングシステムコマンド言語、Pascal、Perl、PL1、スクリプト言語、Visual Basic、プログラム自体を特定するメタ言語、およびすべての第1、第2、第3、第4、第5世代、またはそれ以降のコンピュータ言語を含む。また、データベースおよび他のデータスキーマ、ならびに任意の他のメタ言語も含まれる。解釈され、コンパイルされ、またはコンパイルおよび解釈されたアプローチの両方を使用する言語間で、区別はなされない。プログラムのコンパイル済みバージョンとソースバージョンとの間でも、区別はなされない。このため、プログラミング言語が、プログラミング言語が複数の状態(ソース、コンパイル済み、オブジェクト、またはリンク等)で存在し得る、プログラムへの参照は、かかる状態のいずれか、およびすべてへの参照である。プログラムへの参照は、実際の命令および/またはそれらの命令の意図を包含し得る。
本明細書で説明される方法、プログラム、アルゴリズム、またはコードのいずれも、1つ以上の機械可読媒体またはメモリ上に収容され得る。「メモリ(memory)」という用語は、プロセッサ、コンピュータ、またはデジタル処理デバイス等の機械によって読み取り可能な形式で情報を提供(例えば、記憶および/または送信)する機構を含み得る。例えば、メモリは、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、または任意の他の揮発性または不揮発性メモリ記憶デバイスを含み得る。収容されるコードまたは命令は、搬送波信号、赤外線信号、デジタル信号、および他の同様の信号によって表されることができる。
上記の説明は、単に本開示の例示的なものであることが理解されるべきである。様々な代替例および変更例が本開示から逸脱することなく当業者によって想到され得る。したがって、本開示は、すべてのこのような代替、修正および変形を包含することが意図される。添付された図面を参照して説明された実施形態は、本開示の特定の実施例を説明するためにのみ提示される。上記および/または添付の特許請求の範囲に説明されたものとは非現実的に異なる他の要素、ステップ、方法および技術はまた、本開示の範囲内にあるように意図される。
関連出願の相互参照
本出願は、2019年2月1日に出願されたPCT出願第PCT/US2019/016224号の国内段階の出願であり、2018年2月2日に出願された米国仮特許出願第62/625,667号の利益および優先権を主張し、上記で特定された出願の各々の開示は、それらの全体が参照により本明細書に組み込まれる。
手術ロボットシステムの人気が高まるにつれて、向上した機能、パフォーマンス、および柔軟性を有し、広範囲の手術処置に適応することができる、改善された手術ロボットシステムを開発する取り組みが進行中である。開発中のいくつかの手術ロボットシステムには、様々な通信リンクを介して互いに通信する多数のサブシステムが含まれる。手術ロボットシステムの複雑さが増すにつれて、例えば、様々なタイプの待ち時間を軽減する効率的な様式で、手術ロボットシステムが動作および/または通信することを保証することに関連する課題も増大する。
本開示は、ロボットシステムに関し、より具体的には、同期および非同期ネットワークを含む手術ロボットシステム、ならびに同期および非同期ネットワークを用いる通信方法に関する。
本開示の一態様によれば、上述のニーズに対処するシステムおよび方法が提供される。本開示の一態様では、ロボット手術システムが提供される。システムは、ネットワーク化されたコンピューティングノードと、スレーブロボットアセンブリと、複数の第1の通信経路と、複数の第2の通信経路と、を含む。スレーブロボットアセンブリは、複数のサブユニットを含む。複数のサブユニットは、複数の第1の通信経路を介して互いに通信可能に結合されており、それにより、同期ネットワークの少なくとも一部分を形成する。ネットワーク化されたコンピューティングノードおよび複数のサブユニットのうちの少なくとも1つは、複数の第2の通信経路のうちの1つ以上を介して互いに通信可能に結合されており、それにより、第2のネットワークの少なくとも一部分を形成し、第2のネットワークを介して1つ以上のパケットを互いに通信するように構成される。複数のサブユニットのうちの少なくとも1つは、同期ネットワークを介して複数のサブユニットのうちの他のものと、1つ以上のパケットからのデータを通信するように構成される。同期ネットワークのクロックレートは、第2のネットワークのクロックレートから独立している。ネットワーク化されたコンピューティングノードは、グローバルセーフティモニターをさらに含み、スレーブロボットアセンブリは、1つ以上のローカル解決ルールを記憶しているメモリを含む。複数のサブユニットのうちの少なくとも1つは、(1)複数の第1の通信経路のうちの1つ以上を介して、複数のサブユニットの別のサブユニットからセーフティ警告を受信することと、(2)受信されたセーフティ警告のセーフティメトリックがそれぞれの閾値を超えているかどうかを決定することと、(3)セーフティメトリックがそれぞれの閾値を超えているとの決定に応じて、1つ以上のローカル解決ルールに基づいて、対応するセーフティ警告に関連するアクションが複数のサブユニットのうちの1つ以上によって実行され得るかどうかを決定することと、(4)対応するセーフティ警告に関連するアクションが複数のサブユニットのうちの1つ以上によって実行され得るとの決定に応じて、複数のサブユニットのうちの1つ以上によってアクションを実行させて、セーフティ警告に対処することと、(5)対応するセーフティ警告に関するアクションが複数のサブユニットのうちのいずれによっても実行され得ないとの決定に応じて、第2のネットワークを介して、セーフティ警告をグローバルセーフティモニターに送信することと、を行うようにさらに構成される。
本開示の別の態様では、1つ以上のローカル解決ルールは、セーフティ警告にそれぞれ対応する1つ以上のアクションを示す情報、またはスレーブロボットアセンブリの複数のサブユニットのうちの1つ以上がセーフティ警告にそれぞれ対応する1つ以上のアクションを実行し得るかどうかを示す情報のうちの少なくとも1つを含む。
本開示のさらに別の態様では、アクションは、セーフティ警告と関連付けられる複数のサブユニットのうちの1つ以上をパワーダウンすることを含む。
本開示のさらに別の態様では、ネットワーク化されたコンピューティングノードのグローバルセーフティモニターは、複数の第2の通信経路のうちの1つ以上を介して、複数のサブユニットの1つからセーフティ警告を受信することと、セーフティ警告の受信に応じて、ネットワーク化されたコンピューティングノードに、セーフティ警告に対処するためのアクションを実行させることと、を行うようにさらに構成される。
本開示のさらなる態様では、複数のサブユニットの各々は、(a)複数の第2の通信経路のうちの1つ以上、または(b)複数の第1の通信経路のうちの1つ以上、複数のサブユニットのうちの別の1つ、および複数の第2の通信経路のうちの1つ以上、のうちの少なくとも1つを含むそれぞれの経路を介して、対応するセーフティ警告をグローバルセーフティモニターに送信するように構成される。
本開示の別の態様では、手術ロボットシステムは、外科医コンソールをさらに含み、外科医コンソール、ネットワーク化されたコンピューティングノード、および複数のサブユニットのうちの少なくとも1つは、複数の第2の通信経路のうちの1つ以上を介して互いに通信可能に結合されており、それにより、第2のネットワークの少なくとも別の部分を形成する。
本開示のさらに別の態様では、複数のサブユニットは、リングトポロジーで、複数の第1の通信経路を介して、互いに通信可能に結合される。
本開示のさらに別の態様では、手術ロボットシステムは、複数の第2のサブユニットを含む、第2のスレーブロボットアセンブリと、複数の第3の通信経路と、をさらに含む。複数の第2のサブユニットは、複数の第3の通信経路を介して互いに通信可能に結合されており、それにより、第2の同期ネットワークの少なくとも一部分を形成する。第2の同期ネットワークのクロックレートは、同期ネットワークのクロックレートおよび第2のネットワークのクロックレートから独立している。
本開示のさらなる態様では、スレーブロボットアセンブリは、第1の一意の識別子と関連付けられ、第2のスレーブロボットアセンブリは、第2の一意の識別子と関連付けられる。
本開示の別の態様では、1つ以上のパケットは、スレーブロボットアセンブリと関連付けられた第1の一意の識別子、または第2のスレーブロボットアセンブリと関連付けられた第2の一意の識別子を含む。
本開示のさらに別の態様では、第2のネットワークは、同期ネットワークである。
本開示のさらに別の態様では、第2のネットワークは、非同期ネットワークである。
本開示の別の態様に従って、手術ロボットシステムの同期ネットワークおよび非同期ネットワークを用いる方法が提供される。方法は、スレーブロボットアセンブリのメモリに、1つ以上のローカル解決ルールを記憶させることを含む。セーフティ警告は、スレーブロボットアセンブリの複数のサブユニットのうちの少なくとも1つによって、同期ネットワークを介して、複数のサブユニットのうちの別のサブユニットから受信される。受信されたセーフティ警告のセーフティメトリックがそれぞれの閾値を超えているかどうかに関する決定が行われる。セーフティメトリックがそれぞれの閾値を超えているとの決定に応じて、1つ以上のローカル解決ルールに基づいて、対応するセーフティ警告に関連するアクションが複数のサブユニットのうちの1つ以上によって実行され得るかどうかに関する決定が行われる。対応するセーフティ警告に関連するアクションが複数のサブユニットのうちの1つ以上によって実行され得るとの決定に応じて、複数のサブユニットのうちの1つ以上によってアクションを実行させて、セーフティ警告に対処する。対応するセーフティ警告に関するアクションが複数のサブユニットのうちのいずれによっても実行され得ないとの決定に応じて、非同期ネットワークを介して、ネットワーク化されたコンピューティングノードにおけるグローバルセーフティモニターに、セーフティ警告が送信される。同期ネットワークのクロックレートは、非同期ネットワークのクロックレートから独立している。
本開示の別の態様では、1つ以上のローカル解決ルールは、セーフティ警告に対応する1つ以上のアクションを示す情報、および/またはスレーブロボットアセンブリのサブユニットのうちの1つ以上がセーフティ警告に対応する1つ以上のアクションを実行し得るかどうかを示す情報を含む。
本開示のさらに別の態様では、アクションは、セーフティ警告と関連付けられる複数のサブユニットのうちの1つ以上をパワーダウンすることを含む。
本開示のさらに別の態様では、方法は、非同期ネットワークを介して、サブユニットのうちの1つからセーフティ警告を受信することと、セーフティ警告の受信に応じて、ネットワーク化されたコンピューティングノードに、セーフティ警告に対処するためのアクションを実行させることと、をさらに含む。
本開示のさらに別の態様では、非同期ネットワークを介して、ネットワーク化されたコンピューティングノードにおけるグローバルセーフティモニターにセーフティ警告を送信することは、(a)非同期ネットワークの第1の通信経路のうちの1つ以上、または(b)同期ネットワークの第2の通信経路のうちの1つ以上、サブユニットのうちの別の1つ、および非同期ネットワークの第1の通信経路のうちの1つ以上、のうちの少なくとも1つを含むそれぞれの経路を介して送信することを含む。
本開示のさらに別の態様では、アクションは、セーフティ警告と関連付けられる複数のサブユニットのうちの1つ以上のモータを抑制することを含む。
本開示のさらに別の態様によれば、上述のニーズに対処するシステムおよび方法が提供される。本開示の一態様では、ロボット手術システムが提供される。システムは、ネットワーク化されたコンピューティングノードと、スレーブロボットアセンブリと、複数の第1の通信経路と、複数の第2の通信経路と、を含む。複数のサブユニットを含む、スレーブロボットアセンブリ。複数のサブユニットは、複数の第1の通信経路を介して互いに通信可能に結合されており、それにより、同期ネットワークの少なくとも一部分を形成する。ネットワーク化されたコンピューティングノードおよび複数のサブユニットのうちの少なくとも1つは、複数の第2の通信経路のうちの1つ以上を介して互いに通信可能に結合されており、それにより、非同期ネットワークの少なくとも一部分を形成し、非同期ネットワークを介して1つ以上のパケットを互いに通信するように構成される。複数のサブユニットのうちの少なくとも1つは、同期ネットワークを介して複数のサブユニットのうちの他のものと、1つ以上のパケットからのデータを通信するように構成される。同期ネットワークのクロックレートは、非同期ネットワークのクロックレートから独立している。
本開示の別の態様では、手術ロボットシステムは、外科医コンソールをさらに含み、外科医コンソール、ネットワーク化されたコンピューティングノード、および複数のサブユニットのうちの少なくとも1つは、複数の第2の通信経路のうちの1つ以上を介して互いに通信可能に結合されており、それにより、非同期ネットワークの少なくとも別の部分を形成する。
本開示のさらに別の態様では、複数のサブユニットは、リングトポロジーで、複数の第1の通信経路を介して、互いに通信可能に結合される。
本開示のさらに別の態様では、第1のサブユニットは、複数のサブユニットのうちの第2のサブユニットから、同期ネットワークを介して第1のパケットを受信するようにさらに構成される。第1のパケット内のデータと関連付けられた優先度レベルが識別される。データと関連付けられた優先度レベルが第1の閾値優先度レベルを超えているかどうかに関する決定が行われる。データと関連付けられた優先度レベルが第1の閾値優先度レベルを超えているかどうかの決定に応じて、第1のパケット内のデータは、非同期ネットワークを介してネットワーク化されたコンピューティングノードに送信される。
本開示の別の態様では、複数のサブユニットのうちの第1のサブユニットは、1つ以上のローカル解決ルールを記憶しているメモリをさらに含む。複数のサブユニットのうちの第1のサブユニットは、データと関連付けられた優先度レベルが第2の閾値優先度レベルを下回っているかどうかを決定することと、データと関連付けられた優先度レベルが第2の閾値優先度レベルを下回っているかどうかの決定に応じて、1つ以上のローカル解決ルールに基づいて、データに関連するアクションを識別することと、決定されたアクションに基づいて、一セットの命令を生成することと、同期ネットワークを介して、命令のセットを含む第2のパケットを第2のサブユニットに送信することと、を行うようにさらに構成される。
本開示のさらなる態様では、複数のサブユニットのうちの第1のサブユニットは、データと関連付けられた優先度レベルが第1の閾値優先度レベルを下回っており、かつ第2の閾値優先度レベルを超えているかどうかの決定に応じて、1つ以上のローカル解決ルールに基づいて、データに関連するアクションが第2のサブユニットによって実行され得るどうかを決定するようにさらに構成される。データに関連するアクションが第2のサブユニットによって実行され得るかどうかの決定に応じて、アクションに基づいて一セットの命令が生成され、送信すること、命令のセットを含む第2のパケットは、同期ネットワークを介して第2のサブユニットに送信される。
本開示の別の態様では、複数のサブユニットのうちの第1のサブユニットは、データに関連するアクションが第2のサブユニットによって実行され得ないかどうかの決定に応じて、非同期ネットワークを介して、第1のパケット内のデータをネットワーク化されたコンピューティングノードに送信するようにさらに構成される。
本開示のさらに別の態様では、第2のサブユニットは、画像捕捉装置に結合されており、データは、画像捕捉装置によって捕捉された1つ以上の画像に関連する。
本開示のさらに別の態様では、データと関連付けられた優先度レベルは、低優先度、中優先度、または高優先度のうちの少なくとも1つである。
本開示のさらなる態様では、データは、あるタイプのデータと関連付けられており、1つ以上のローカル解決ルールは、データの各タイプに対する1つ以上のアクションを含む。
本開示の別の態様では、データと関連付けられたデータのタイプは、画像データ、位置データ、中間計算データ、またはエラーデータのうちの少なくとも1つである。
本開示のさらに別の態様では、スレーブロボットアセンブリの1つ以上のサブユニットは、制御自動化技術のためのイーサネット(登録商標)(EtherCAT)を使用して、互いに通信するように構成される。
本開示のなおもさらなる態様では、複数のサブユニットは、複数の第1の通信経路のうちの1つ以上を介して互いにパケットを通信するように構成されており、パケットの宛先アドレスフィールドは、複数のサブユニットのうちの1つのサブユニットと関連付けられた識別子を含む。
本開示の別の態様では、宛先アドレスフィールドのサイズは、複数のビットフィールドによって表され、複数のサブユニットの各々について、複数のサブユニットのうちのそれぞれ1つと関連付けられた識別子は、複数のビットフィールドのサブセットによって表される。
本開示のさらに別の態様では、1つ以上のパケットは、固定サイズを有する。
本開示の別の態様では、スレーブロボットアセンブリの複数のサブユニットのうちの少なくとも1つは、ロボットアームユニットである。
本開示のさらに別の態様では、スレーブロボットアセンブリの複数のサブユニットのうちの少なくとも1つは、器具駆動ユニットである。
本開示のさらなる態様では、スレーブロボットアセンブリの複数のサブユニットのうちの少なくとも1つは、カートユニットである。
本開示のさらに別の態様では、スレーブロボットアセンブリの複数のサブユニットは、カートユニット、セットアップアームユニット、ロボットアームユニット、および器具駆動ユニットを含む。
本開示の別の態様によれば、スレーブロボットアセンブリの構成要素間に制御を割り振るための方法が提供される。方法は、手術ロボットシステムのスレーブロボットアセンブリの複数のサブユニットのうちの第1のサブユニットによって、複数のサブユニットが互いに通信可能に結合される複数の第1の通信経路を含む同期ネットワークを介して、複数のサブユニットのうちの第2のサブユニットから第1のパケットを受信することを含む。第1のパケット内のデータと関連付けられた優先度レベルは、第1のサブユニットによって識別される。第1のサブユニットは、データと関連付けられた優先度レベルが第1の閾値優先度レベルを超えているかどうかを決定する。データと関連付けられた優先度レベルが第1の閾値優先度レベルを超えているかどうかの決定に応じて、第1のサブユニットは、ネットワーク化されたコンピューティングノードおよび複数のサブユニットの少なくとも1つが互いに通信可能に結合される複数の第2の通信経路を含む非同期ネットワークを介して、ネットワーク化されたコンピューティングノードに第1のパケット内のデータを送信する。同期ネットワークのクロックレートは、非同期ネットワークのクロックレートから独立している。
本開示の様々な態様および特徴は、図面を参照して、本明細書に後述される。
本明細書の例示的な実施形態による例示のロボット手術システムを示す。
本明細書の例示的な実施形態による、図1のロボット手術システムの様々な構成要素が非同期ネットワークおよび同期ネットワークを形成する例示的な実施形態を示す概略図である。
本明細書の例示的な実施形態による図1のロボット手術システムの構成要素間の様々なタイプの情報の通信を容易にする、図2の非同期ネットワークおよび同期ネットワークの例示の構成を示す別の概略図である。
本明細書の例示的な実施形態による、図1のロボット手術システムの構成要素の構成を示す概略図であり、ここで、意思決定制御は、スレーブロボットアセンブリおよび/もしくはネットワーク化されたコンピューティングノードの構成要素、または他の構成要素間に割り振られる。
本明細書の例示的な実施形態による、図4の手術ロボットシステムの構成要素の構成を用いて、スレーブロボットアセンブリおよび/もしくはネットワーク化されたコンピューティングノードの構成要素、または他の構成要素間に、意思決定制御を割り振るための例示の方法を示すフローチャートである。
本明細書の例示的な実施形態による、図2の手術ロボットシステムの構成要素の構成を用いて、アクションの実行を割り振るための例示の方法を示すフローチャートである。
本開示は、同期および非同期ネットワークを含む手術ロボットシステム、ならびに同期および非同期ネットワークを用いる通信方法を対象とする。特に、本明細書で説明されるシステムおよび方法は、非同期ネットワークおよび同期ネットワークで構成要素を用いる手術ロボットシステムを設計および実装することを可能にする。構成要素は、互いに通信可能に結合されており、かつ非同期ネットワーク、同期ネットワーク、およびそれらの間の通信経路を利用し、手術ロボットシステムは、最初に同期ネットワーク内の構成要素レベルでローカルに決定を行い、最初に同期ネットワーク内の構成要素レベルでローカルに決定を行うことができない場合には、手術ロボットシステムは、その際、非同期ネットワーク内の構成要素を使用して、グローバルレベルまたはシステムレベルで決定を行う。本明細書で説明する技術、技法、および実施形態を利用して、手術ロボットシステムの全体的な待ち時間が低減され、手術ロボットシステムの動作およびデータ通信効率が改善される。
ここで本開示の実施形態が図面を参照して詳細に記載され、図面の中で同様の参照番号は、いくつかの図の各々において同一のまたは対応する要素を示す。本明細書で使用される場合、「臨床医」という用語は、医師、看護師、技術者、医療助手、もしくは同様のサポート要員、または本明細書に記載の手術ロボットシステムを使用することができる任意の他の人物を指す。本明細書全体を通じて、「非同期ネットワーク」という用語は、コンピューティングデバイスが1つ以上の通信経路を介して互いに通信可能に結合され、かつ例えば、送信および受信コンピューティングデバイスのクロック信号を同期させる必要なく、非同期様式でこれらの通信経路を介してデータおよび/または他の情報を互いに通信するように構成されるように構成されている、一セットのコンピューティングデバイスと1つ以上の通信経路によって画定される、ネットワークを指す。本明細書全体を通じて、「同期ネットワーク」という用語は、コンピューティングデバイスが1つ以上の通信経路を介して互いに通信可能に結合され、かつ例えば、互いに同期された送信および受信コンピューティングデバイスのクロック信号を使用することによって、同期様式でこれらの通信経路を介してデータおよび/または他の情報を互いに通信するように構成されるように構成されている、一セットのコンピューティングデバイスと1つ以上の通信経路によって画定される、ネットワークを指す。本明細書に記載の非同期ネットワークおよび同期ネットワークを画定するコンピューティングデバイスおよび/または通信経路の間に、重複が存在する可能性がある。例えば、コンピューティングデバイスおよび/または通信経路は、非同期ネットワークの一部として含まれ得、また同期ネットワークの一部として含まれ得る。さらに、図面中および続く説明において、例えば、前側、後側、上側、下側、頂部、底部、および類似の方向性の用語などの用語は、単に説明の便宜のために使用されており、本開示を限定することを意図するものではない。以下の記載では、周知の機能または構成は、本開示を不必要に詳細に示して不明瞭にすることを避けるために、詳細には記載されていない。
ここで図1を参照すると、本明細書の様々な例示的実施形態に従って用いられる例示的なロボット手術システム100が示されている。システム100は、手術室で用いられる例示的なシステムである。図1に示されるシステム100の特定の数の構成要素、ならびにその配置および構成は、例示目的のみのために提供され、限定するものとして解釈されるべきではない。例えば、本明細書の様々な実施形態は、図1に示される構成要素のすべてよりも少ないまたは多い構成要素を用いる。例えば、システム100の追加の構成要素が、図2および図4に示されている。さらに、図1に示されるシステム100は、本明細書の様々な例示的実施形態が適用可能な例示的な文脈として提供される。しかしながら、本明細書の様々な例示的実施形態は、ロボット手術システム以外の状況においても適用可能である。
システム100は、手術処置中に患者104が横たわる手術台102と、手術処置中に臨床医、ユーザまたは外科医が対話する、外科医コンソール170と、ネットワーク化されたコンピューティングノード180と、1つ以上のスレーブロボットアセンブリ190と、を含む。便宜上、本明細書は、単一のスレーブロボットアセンブリ190の文脈で行われるが、本開示は、多数のスレーブロボットアセンブリ190を含む実施形態にも同様に適用可能であることを理解されたい。外科医コンソール170、ネットワーク化されたコンピューティングノード180およびスレーブロボットアセンブリ190は、本明細書の様々な実施形態では、有線通信経路および/または無線通信経路として実装され得る、それぞれの通信経路106(個別に、106a、106b、および106c)を介して互いに通信可能に結合される。特に、外科医コンソール170およびネットワーク化されたコンピューティングノード180は、通信経路106aを介して互いに通信可能に結合される。ネットワーク化されたコンピューティングノード180およびスレーブロボットアセンブリ190は、通信経路106bを介して互いに通信可能に結合される。外科医コンソール170およびスレーブロボットアセンブリ190は、通信経路106a、ネットワーク化されたコンピューティングノード180、および通信経路106bを介して互いに通信可能に結合される。以下でさらに詳細に説明するように、いくつかの実施形態では、外科医コンソール170、ネットワーク化されたコンピューティングノード180、およびスレーブロボットアセンブリ190は、通信経路106と共に、非同期ネットワーク(図1に個別に示されていない)を画定する。これにより、外科医コンソール170、ネットワーク化されたコンピューティングノード180、およびスレーブロボットアセンブリ190は、データおよび/または他の情報を非同期様式で互いに通信するように構成される。本明細書では非同期ネットワークとして説明されているが、当業者は、通信経路106と共に外科医コンソール170、ネットワーク化されたコンピューティングノード180、およびスレーブロボットアセンブリ190によって形成されるネットワークが、代替的に同期ネットワークであってもよいことを認識されよう。また以下でさらに詳細に説明するように、システム100は、システム100内の異なる構成要素が互いに通信することを可能にするパブリッシュ/サブスクライブメッセージングパターンを実装するように構成され得る。外科医コンソール170と、ネットワーク化されたコンピューティングノード180と、スレーブロボットアセンブリ190との間の通信のさらなる詳細は、図2、図3、図4、および図5の文脈で本明細書に提供される。
スレーブロボットアセンブリ190は、多数のサブユニット191、192、193、および194、すなわち、カートユニット191、セットアップアームユニット192、ロボットアームユニット193、および器具駆動ユニット(IDU)194を含む。スレーブロボットアセンブリ190のサブユニット191、192、193、および194は、互いにスレーブロボットアセンブリ190のサブユニット191、192、193、および194に直接的または間接的のいずれかで動作可能に結合される。例えば、カートユニット191は、セットアップアームユニット192、ロボットアームユニット193、および器具駆動ユニット194に動作可能に結合される。同様に、セットアップアームユニット192は、カートユニット191、ロボットアームユニット193、および器具駆動ユニット194に動作可能に結合されており、一方で、ロボットアームユニット193は、カートユニット191、セットアップアームユニット192、および器具駆動ユニット194に動作可能に結合されており、さらに器具駆動ユニット194は、カートユニット191、セットアップアームユニット192、およびロボットアームユニット193に動作可能に結合される。サブユニット191、192、193、および194はまた、1つ以上の通信経路(図1には示されていない)を介して直接的または間接的のいずれかでスレーブロボットアセンブリ190のサブユニット191、192、193、および194に互いに通信可能に結合され、それにより、同期ネットワークを画定する。カートユニット191は、手術処置を受ける患者104の範囲内で手術台102に隣接して配置される。器具駆動ユニット194は、それに交換可能に固定され得る1つ以上の対応する手術器具(図1には示されていない)に結合可能である。カートユニット191は、手術台102または患者104の側面に沿って移動するように構成される。カートユニット191は、患者104に向かって、また患者104から離れて移動するように構成される。
ネットワーク化されたコンピューティングノード180は、1つ以上のプロセッサ118および1つ以上のメモリユニット120を含む、コンピューティングデバイスである。ネットワーク化されたコンピューティングノード180は、ネットワークおよび/またはインターネットを介して外科医コンソール170、スレーブロボットアセンブリ190、および/または外部デバイスとの通信を容易にする、ネットワークインターフェースなどの1つ以上の通信インターフェースをさらに含み得る。様々な実施形態では、ネットワーク化されたコンピューティングノード180は、外科医コンソール170と統合されてもよく、または手術室の内部またはその近くに配設されたコンピューティングタワーなどのスタンドアロンデバイスであってもよい。メモリユニット120は、本明細書の様々な実施形態の手順を実行するためにプロセッサ118が実行する命令136(一実施例では、ソフトウェア)を記憶する。理解されるように、プロセッサ118およびメモリユニット120の実装は、例としてのみ提供されており、限定するものとして解釈されるべきではない。例えば、本開示のいずれかの実施形態の手順は、ハードウェア構成要素、ファームウェア構成要素、ソフトウェア構成要素、および/またはそれらの任意の組み合わせによって実装されてもよい。ネットワーク化されたコンピューティングノード180の追加の詳細は、図2、図3、図4、および図5の文脈で以下に提供される。
外科医コンソール170は、手術処置中に外科医が対話するディスプレイデバイス122およびハンドル112を含む。いくつかの実施形態では、ハンドル112は、様々な触覚部124および/またはアクチュエータ126を含む。外科システム100の動作中に、外科医は、外科医コンソール170のハンドル112を動かして、セットアップアームユニット192、ロボットアームユニット193、器具駆動ユニット194、および/または器具駆動ユニット194に結合された1つ以上の手術器具(図1には示されていない)の対応する移動および/または作動を生成する。外科医の入力コマンドに基づいて、ハンドル112は、通信経路106aを介して、ネットワーク化されたコンピューティングノード180に信号を提供し、その後、通信経路106bを介して、スレーブロボットアセンブリ190のカートユニット191に、対応する信号を提供し、他の通信経路(図1には示されていない)を介して、セットアップアームユニット192、ロボットアームユニット193、器具駆動ユニット194に、コマンドされたアクションを実行させるために、対応する信号または命令を提供する。いくつかの実施形態では、スレーブロボットアセンブリ190は、対応するサブユニット192、193、194および/またはそれに結合された手術器具(図1には示されていない)の運動が引き起こすために、セットアップアームユニット192、ロボットアームユニット193、および/または器具駆動ユニット194に結合されている1つ以上の駆動モータ(図1には示されていない)を含む。
いくつかの実施形態では、ハンドル112内の様々な触覚部124は、様々な組織パラメータまたは状態、一実施例では、操作、切断または他の治療による組織抵抗、器具による組織への圧力、組織温度、組織インピーダンスなどに関するフィードバックを臨床医に提供する。理解され得るように、そのような触覚部124は、実際の動作状態をシミュレートする強化された触覚フィードバックを臨床医に提供する。触覚部124は、振動モータ、電気活性ポリマー、圧電デバイス、静電デバイス、亜音速音波表面作動デバイス、逆電気振動、またはユーザに触覚フィードバックを提供することができる任意の他のデバイスを含んでもよい。上述のように、ハンドル112はまた、例えば、実際の動作状態を模倣する外科医の能力をさらに高める繊細な組織操作および/または治療に用いられ得る、様々な異なるアクチュエータ126も含んでもよい。
上述のように、実行される特定の手術処置に応じて、1つ以上の手術器具(図1では別個に示されていない)を器具駆動ユニット194に交換可能に固定することができる。任意のタイプの手術器具を用いることができるが、そのような手術器具の例示的なタイプは、限定ではなく例として、画像捕捉デバイス、プローブ、エンドエフェクタ、把持器、ナイフ、はさみ、および/または同類のものを含む。本明細書のいくつかの実施形態によれば、器具駆動ユニット194に結合された手術器具のうちの1つ以上は、立体画像捕捉デバイスを含むプローブ(図1には示されていない)であり、それは、手術処置中に患者104の内部の関心領域の画像を捕捉するために患者104に挿入される。画像捕捉デバイスによって捕捉された画像は、画像を外科医に表示する外科医コンソール170のディスプレイデバイス122(本明細書では「ディスプレイ」とも呼ばれる)に伝達される。
図2は、外科医コンソール170、ネットワーク化されたコンピューティングノード180、およびスレーブロボットアセンブリ190の追加の構成要素を含む、外科システム100の追加の態様を示すブロック図を示している。また、図2には、少なくとも部分的に通信経路106aおよび106bによって画定される非同期ネットワークと、少なくとも部分的に通信経路202a、202b、202c、および202d(集合的に202)によって画定される同期ネットワークの例示的なトポロジーも示されている。外科医コンソール170、ネットワーク化されたコンピューティングノード180、スレーブロボットアセンブリ190、ならびに非同期および同期ネットワークをそれぞれ画定する通信経路106および202の構成および機能性により、手術ロボットシステム100の個々の構成要素は、例えば、外科医コンソール170を介して移動コマンドを入力する外科医と対応するサブユニット191、192、194、および194の実際の移動との間の待ち時間などの様々なタイプの待ち時間を軽減する効率的な様式で動作および/または通信することを可能にする。例えば、様々な実施形態では、スレーブロボットアセンブリ190のサブユニット191、192、194、および194は、通信経路202によって少なくとも部分的に画定される同期ネットワークを介して、外科医コンソール170および/またはネットワーク化されたコンピューティングノード180から独立して、互いに通信するように構成される。同時に、外科医コンソール170、ネットワーク化されたコンピューティングノード180、および/またはスレーブロボットアセンブリ190は、通信経路106によって少なくとも部分的に画定される非同期ネットワークを介して互いに通信するように構成される。システム100の構成要素を並列非同期および同期ネットワークに割り振り、機能(電力管理機能など)をシステム100の特定の構成要素に割り振ることにより、操作性能、通信および/または同様のものの効率が改善される。例えば、スレーブロボットアセンブリ190のサブユニット191、192、194、および194のうちの1つ以上が、外科医コンソール170および/またはネットワーク化されたコンピューティングノード180からの処理、通信などを必要とする状況が発生した場合、サブユニット191、192、194、および194は、外科医コンソール170および/またはネットワーク化されたコンピューティングノード180と通信するように構成される。しかしながら、スレーブロボットアセンブリ190のサブユニット191、192、194、および194は、外科医コンソール170および/またはネットワーク化されたコンピューティングノード180からの処理、通信などを必要とせずに、特定の処理、通信、および/または他のコンピューティングタスクを処理し、それにより外科医コンソール170および/またはネットワーク化されたコンピューティングノード180の処理および/または通信帯域幅を解放するように構成される。これにより、外科医コンソール170および/またはネットワーク化されたコンピューティングノード180は、より多くのスレーブロボットアセンブリ190に適応することが可能になり、それにより、外科ロボットシステム100の機能および柔軟性が向上する。
外科医コンソール170と、ネットワーク化されたコンピューティングノード180と、スレーブロボットアセンブリ190との間の通信は、リアルタイム通信および非リアルタイム通信を含む。本明細書で使用される場合、「リアルタイム通信」という用語は、発生したイベントに対応するデータ(例えば、手術システム100のエラーに関するデータ、手術システム100に対する重大なリスクに関する警告、他の重要なデータなど)の送信を指す。本明細書で使用される場合、「非リアルタイム通信」という用語は、ネットワーク化されたコンピューティングノード180があまり使用されていないとき、またはオフピーク時にあることに対応するデータ(例えば、重要でないデータ)の送信を指す。
図2に示されるように、外科医コンソール170は、外科医ディスプレイグラフィカルユーザインターフェース(GUI)306、外科医マスターコンソールソフトウェアサブシステム307、および外科医二次的ディスプレイGUI308を含む。図2には別個に示されていないが、いくつかの実施形態では、外科医コンソール170は、1つ以上のプロセッサによって実行されたときに、外科医コンソール170に、外科医ディスプレイグラフィカルユーザインターフェース(GUI)306、外科医マスターコンソールソフトウェアサブシステム307、および/または外科医二次的ディスプレイGUI308を実装させる命令を記憶する1つ以上のメモリユニットに結合された1つ以上のプロセッサを含む。このようにして、例えば、外科医コンソール170は、外科医などのユーザがネットワーク化されたコンピューティングノード180およびスレーブロボットアセンブリ190を介して1つ以上のセットアップアームユニット192、ロボットアームユニット193、および/または器具駆動ユニット194と対話することを可能にする、プログラム、スクリプト、または他の実行可能コマンドなどの手順を実行するように構成される。外科医コンソール170は、外科医ディスプレイGUI306を生成して、ディスプレイユニット122を介して外科医に情報を提示するようにさらに構成される。
いくつかの実施形態では、外科医コンソール170のディスプレイユニット122は、外科医からタッチ入力を受信することができるタッチスクリーンである。外科医コンソール170のディスプレイユニット122は、タッチの圧力および長さを識別および決定するように構成される。いくつかの実施形態では、外科医ディスプレイGUI306は、タッチ入力の時間の長さを決定するように構成されており、タッチ入力の時間の長さに基づいて、外科医ディスプレイGUI306は、1つ以上の異なるグラフィカルユーザインターフェースアイテムを提示することができる。例えば、外科医ディスプレイGUI306が「戻る」ボタンを表示している場合に、「戻る」ボタンを単にタッチすると、画面が外科医ディスプレイGUI306の前の画面に戻り、外科医が戻るボタンを一定時間押し続けた場合、その際、メニューがドロップダウンして、1つ以上の外科医コンソール操作オプションが外科医に提供され得る。
図1には示されていないが、いくつかの実施形態では、外科医コンソール170は、第2のディスプレイユニットを含み、その場合、外科医コンソール170は、外科医二次的ディスプレイGUI308を生成して、外科医ディスプレイGUI306に関連して上述したのと同様の様式で、二次的ディスプレイユニットによって外科医に情報を提示するようにさらに構成される。
外科医マスターコンソールソフトウェアサブシステム307は、外科医ディスプレイGUI306および外科医二次的ディスプレイGUI308に動作可能に結合されており、一般に、外科医コンソール170の機能を実行するように構成される。例えば、外科医マスターコンソールソフトウェアサブシステム307は、外科医からの入力を捕捉、記録、および/または分析し、ならびに/またはネットワーク化されたコンピューティングノード180および/またはスレーブロボットアセンブリ190に、およびそれらからデータを通信するように構成される。いくつかの実施形態では、外科医マスターコンソールソフトウェアサブシステム307は、外科医コンソール170のオペレーティングシステム(図2には示されていない)、および/またはインターネットワーキング機能を実装する1つ以上のアプリケーションなどの外科医コンソール170のうちの1つ以上の他の構成要素に結合される。そのようなインターネットワーキング機能の実施例には、リアルタイムパブリッシュサブスクライブプロトコル(RTPS)を含む、リアルタイムシステム(DDS)のデータ分布サービスプロトコルなどの機械間通信プロトコルを含む、1つ以上のパケット通信または送信プロトコルが含まれるが、これに限定されない。インターネットワーキング機能によって実装されたパケット送信プロトコルは、システム100のパブリッシャとサブスクライバ間のスケーラブルで、リアルタイムで、信頼性があり、高性能で、相互運用可能なパケットまたはデータ交換を可能にする。本明細書で説明するように、「パブリッシャ」は、メッセージまたはデータの送信者であり、「サブスクライバ」は、メッセージまたはデータの受信者である。上述のように、手術ロボットシステム100は、いくつかの実施例では、パブリッシュ−サブスクライブメッセージングパターンを実装し、それにより、パブリッシャは、メッセージをクラスに分類することによってサブスクライバにメッセージを送信し得る。サブスクライバは、特定のクラスへの関心を示し、特定のクラスと関連付けられた、または特定のクラスに分類されたメッセージを受信することができる。
各クラスは特定の識別子と関連付けられ、パブリッシャは、メッセージをクラスの識別子と関連付けることにより、メッセージを特定のクラスに分類することができる。サブスクライバは、クラスの特定の識別子と関連付けられ、識別子と関連付けられるメッセージを受信する。いくつかの実施形態では、サブスクライバの入口インターフェースのインターネットワーキング機能は、サブスクライバと関連付けられたクラス識別子を決定し、かつそれらのクラス識別子と関連付けられたメッセージを受信するように構成される。メッセージは、使用されている通信または送信プロトコルに基づいて、パケット内にカプセル化され得る。いくつかの実施形態では、パケットの特定のフィールドまたはビットは、メッセージと関連付けられたクラスの識別子を含み得る。サブスクライバの入口インターフェースは、パケットのフィールドまたはビットを読み取ることにより、メッセージと関連付けられたクラスの識別子を決定するように構成され得る。
コンピューティングノードは、メッセージのパブリッシャおよび別のメッセージのサブスクライバの両方である場合がある。例えば、外科医コンソール170は、外科医コンソール170がネットワーク化されたコンピューティングノード180に送るメッセージ、またはそれに送信するメッセージのパブリッシャであり得、外科医コンソール170は、外科医コンソール170がネットワーク化されたコンピューティングノード180から受信するメッセージのサブスクライバであり得る。いくつかの実施形態では、外科医コンソール170は、外科医コンソール170がスレーブロボットアセンブリ190に送るメッセージ、またはそれに送信するメッセージのパブリッシャであり得、外科医コンソール170は、外科医コンソール170がスレーブロボットアセンブリ190から受信するメッセージのサブスクライバであり得る。
図2を引き続き参照すると、ネットワーク化されたコンピューティングノード180は、手術室(OR)チームディスプレイGUI301、コアソフトウェア302、オブザーバソフトウェア303、電源管理ソフトウェア304、およびグローバルセーフティモニター305を含む。図2には別個に示されていないが、いくつかの実施形態では、ネットワーク化されたコンピューティングノード180は、1つ以上のプロセッサによって実行されたときに、ネットワーク化されたコンピューティングノードに、手術室チームディスプレイGUI301、コアソフトウェア302、オブザーバソフトウェア303、電源管理ソフトウェア304、および/またはグローバルセーフティモニター305を実装させる命令を記憶する1つ以上のメモリユニット120に結合された1つ以上のプロセッサ118を含む。このようにして、例えば、ネットワーク化されたコンピューティングノード180は、外科医などのユーザが外科医コンソール170を介してスレーブロボットアセンブリ190の1つ以上のセットアップアームユニット192、ロボットアームユニット193、および/または器具駆動ユニット194の動作を達成することを可能にする、プログラム、スクリプト、または他の実行可能コマンドなどの手順を実行するように構成される。場合によっては、ネットワーク化されたコンピューティングノード180は、それぞれ外科医コンソール170およびスレーブロボットアセンブリ190のうちの一方から受信した情報を変換または他の方法で処理し、かつ外科医コンソール170およびスレーブロボットアセンブリ190のうちの他方に情報を伝達する、外科医コンソール170とスレーブロボットアセンブリ190との間のインターフェースとして動作する。
図1または図2には示されていないが、いくつかの実施形態では、ネットワーク化されたコンピューティングノード180は、1つ以上の画像または画像のストリームなどの情報をOR要員に表示するように構成されたディスプレイユニットを含むか、またはそれに結合される。ディスプレイユニットは、ディスプレイユニットに表示された情報または画像の可視性がOR内の誰でも容易に見ることができるように構成され得る。そのような実施形態では、ネットワーク化されたコンピューティングノード180は、ORチームディスプレイGUI301を生成して、ネットワーク化されたコンピューティングノード180のディスプレイユニットを介してOR要員に情報を提示するように構成されている。
手術室チームディスプレイGUI301は、コアソフトウェアシステム302に動作可能に結合されており、それにより、ユーザまたは臨床医からの入力が、コアソフトウェアシステム302およびコアソフトウェアシステム302に結合された他のシステムによって捕捉、記録および分析される。様々な実施形態において、コアソフトウェアシステム302は、ネットワーク化されたコンピューティングノード180のオペレーティングシステム(図2には別個に示されていない)、および/または例えば、インターネットワーキング機能を実装するアプリケーションなどのネットワーク化されたコンピューティングノード180のうちの1つ以上の他のアプリケーションに結合されている。
コアソフトウェアシステム302はまた、オブザーバソフトウェアシステム303に動作可能に結合され、オブザーバソフトウェアシステム303は、スレーブロボットアセンブリ190などのシステム100の他の構成要素を観察および制御するように構成されたプロトコルおよびツールを含む産業用制御システムである。例えば、オブザーバソフトウェアシステム303は、ネットワーク化されたコンピューティングノード180と動作可能に結合されているシステム100の構成要素の様々な動作状態を観察するように構成される。例えば、オブザーバソフトウェアシステム303は、電源オンおよび電源オフ状態を含む、スレーブロボットアセンブリ190の様々な動作状態を観察することができる。オブザーバソフトウェアシステム303はまた、システム100の構成要素の様々な動作状態と関連付けられた情報を、コアソフトウェアシステム302に送信するように構成される。いくつかの実施形態では、コアソフトウェアシステム302は、システム100の構成要素の動作状態に基づいて、実施される1つ以上の命令および/または実行されるアクションを決定するように構成される。
コアソフトウェアシステム302はまた、電源管理ソフトウェアシステム304に動作可能に結合されており、電源管理ソフトウェアシステム304は、スレーブロボットアセンブリ190、ならびにカートユニット194、セットアップアームユニット192、ロボットアームユニット193および/または器具駆動ユニット194などのスレーブロボットアセンブリ190の様々な構成要素の電力使用量などのシステム100の様々な構成要素による電力使用量を決定するように構成される。電源管理ソフトウェアシステム304は、様々な電力使用量メトリック、ルール、および/または閾値を記憶し、システム100の様々な構成要素による電力使用量と関連付けられた一セットの電力使用量ルールに基づいて、実施される1つ以上の命令および/または実行されるアクションを決定するように構成される。コアソフトウェアシステム302は、いくつかの実施例では、システム100の構成要素に供給される、またはそれによって使用される電力の変化の要求を電源管理ソフトウェアシステム304に転送して、電力使用量ルールの遵守を確実にするように構成される。
電源管理ソフトウェアシステム304は、電力使用量メトリックおよび/または電力使用量と関連付けられたルールに基づいて、要求された変更が許可されるか、または実行可能であるかどうかを決定するように構成される。例えば、ネットワーク化されたコンピューティングノード180が、通信経路106aのうちの1つを介して外科医コンソール170から、器具駆動ユニット194に結合された手術器具を駆動するために使用される電力を増加する要求を受信すると、コアソフトウェアシステム302は、その電力を増加する要求を電源管理ソフトウェアシステム304に転送する。電源管理ソフトウェアシステム304は、器具駆動ユニット194の電力使用量と関連付けられたルールに基づいて、器具駆動ユニット194に結合された手術器具を駆動するのに現在使用されている電力が、器具駆動ユニット194の器具が駆動されることを許可される最大電力より低いことを決定し、それに応答して、通信経路106および202のうちの1つ以上を介して、IDUソフトウェアサブシステム314に、器具駆動ユニット194に結合された手術器具を駆動するのに使用される電力を増加させる命令を転送する。いくつかの実施形態では、電源管理ソフトウェアシステム304は、命令をコアソフトウェアシステム302に転送し、コアソフトウェアシステム302は、命令をスレーブロボットアセンブリ190に送信する。
コアソフトウェアシステム302はまた、グローバルセーフティモニターシステム305に動作可能に結合される。グローバルセーフティモニターシステム305は、システム100の様々なセーフティ閾値を超えているかどうかを決定するための1つ以上のルールを含む。グローバルセーフティモニターシステム305は、ネットワーク化されたコンピューティングノード180、外科医コンソール170、ならびにスレーブロボットアセンブリ190およびそれらの構成要素を含む、システム100の各構成要素のセーフティレベルを監視する。システムのセーフティレベルは、構成要素の1つ以上のセーフティメトリック(例えば、図1または図2に個別に示されていないセンサまたは他の測定デバイスによって決定される)を比較し、次に、メトリックをグローバルセーフティモニター305の1つ以上のルールと比較することにより、それらのメトリックが構成されたセーフティ閾値内にあるかどうかを決定することによって決定される。グローバルセーフティモニターシステム305の追加の詳細は、図4の文脈で以下に提供される。
上述のように、システム100はまた、スレーブロボットアセンブリ190などの1つ以上のスレーブロボットアセンブリを含み、各スレーブロボットアセンブリは、それぞれカートユニット191、セットアップアームユニット192、ロボットアームユニット193、器具駆動ユニット194などのカートユニット、セットアップアームユニット、ロボットアームユニット、器具駆動ユニットを含むことができる。一般に、スレーブロボットアセンブリ190のカートユニット191、セットアップアームユニット192、ロボットアームユニット193、および器具駆動ユニット194は、通信経路202とともに、同期ネットワークを画定し、ここで、サブユニット191、192、193、および194の各々によって使用されるクロックは、互いに同期される。スレーブロボットアセンブリ190の同期ネットワークのトポロジーは、単方向リングネットワーク、双方向リングネットワークおよび/または同様のものを含むリングネットワークトポロジーなどの効率的な同期ネットワークを可能にする任意のネットワークトポロジーであり得る。カートユニット191、セットアップアームユニット192、ロボットアームユニット193、器具駆動ユニット194などのスレーブロボットアセンブリ190の様々な構成要素は、制御自動化技術(EtherCAT)のためのイーサネット(登録商標)などの1つ以上の通信プロトコルを利用して、通信経路202を介して互いに通信するように構成される。
図2に示すように、カートユニット191は、スレーブロボットアセンブリソフトウェアサブシステム309、アームカートソフトウェアサブシステム310、およびデータコントローラ315を含む。図2には別個に示されていないが、いくつかの実施形態では、カートユニット191は、1つ以上のプロセッサによって実行されたときに、カートユニット191に、スレーブロボットアセンブリソフトウェアサブシステム309およびアームカートソフトウェアサブシステム310を実装させる命令を記憶する1つ以上のメモリユニットに結合された1つ以上のプロセッサを含む。このようにして、例えば、カートユニット191は、外科医などのユーザが、他の操作の中でも、カートユニット191を手術台の側面に沿って移動することを可能にするプログラム、スクリプト、または他の実行可能なコマンドなどの特定の手順を実施するように構成される。カートユニット191は、いくつかの実施例では、ネットワーク化されたコンピューティングノード180および/または外科医コンソール170などのシステム100の他の構成要素から1つ以上のパケットを受信するように構成される。
いくつかの実施形態では、スレーブロボットアセンブリソフトウェアサブシステム309は、EtherCATなどの1つ以上のパケット通信または伝送プロトコルを含むインターネットワーキング機能を実装するアプリケーションなどのスレーブロボットアセンブリ190のうちの1つ以上の他のアプリケーションに結合される。スレーブロボットアセンブリソフトウェアサブシステム309は、スレーブロボットアセンブリソフトウェアサブシステム309がスレーブロボットアセンブリ190の様々なサブユニット191、192、193、および194と関連付けられた情報に基づいて実施される命令および/または実行されるアクションを決定するために利用する、1つ以上のルールのセットを含む。スレーブロボットアセンブリユニット190は、カートユニット191、セットアップアームユニット192、ロボットアームユニット193、器具駆動ユニット194と関連付けられた情報を使用して決定を行うように構成される。スレーブロボットアセンブリ190の様々なユニットと関連付けられた情報に基づいて命令を分析および決定することのさらなる詳細は、図4、図5、および図6の文脈で以下に提供される。
スレーブロボットアセンブリソフトウェアサブシステム309は、通信経路106aおよび106bのうちの1つ以上を介して、ネットワーク化されたコンピューティングノード180および外科医コンソール170などのシステム100の他の構成要素から1つ以上のパケットを非同期様式で受信するように構成される。効率的な通信を促進するために、いくつかの実施形態では、スレーブロボットアセンブリ190によって受信されるパケットは固定サイズであり、パケット内のデータの特定ビットは、スレーブロボットアセンブリ190の特定の構成要素と関連付けられる。スレーブロボットアセンブリソフトウェアサブシステム309は、パケット内のデータの特定のビットと関連付けられているスレーブロボットアセンブリ190の構成要素を識別し、必要に応じて、通信経路202のうちの1つ以上を介して、同期様式でビットが運ぶデータをスレーブロボットアセンブリ190の適切な構成要素に転送するように構成される。例えば、スレーブロボットアセンブリソフトウェアサブシステム309に通信されるパケットは、パケットの最初の128ビットがカートユニット191と関連付けられ、パケットの次の128ビットがセットアップアームユニット192と関連付けられ、パケットの次の128ビットがロボットアームユニット193と関連付けられ、パケットの次の128ビットが器具駆動ユニット194と関連付けられるように構成され得る。パケットはまた、サブユニット191、192、193、および194に対応し、それらの値に応じて、パケットがそれぞれのサブユニット191、192、193、および194のデータを含むかどうかを示すそれぞれのフラグを含むことができる。スレーブロボットアセンブリソフトウェアサブシステム309は、パケットに存在するフラグおよび/またはビットの値に基づいて、パケットの意図された宛先を識別するように構成される。パケットがカートユニット191自体を対象とするデータを含む場合、カートソフトウェアサブシステム310に動作可能に結合されているスレーブロボットアセンブリソフトウェアサブシステム309は、データをカートソフトウェアサブシステム310に転送し、カートソフトウェアサブシステム310は、そのデータに基づいて、カートユニット191が実施する命令を決定するように構成される。
スレーブロボットアセンブリソフトウェアサブシステム309は、データコントローラ315に通信可能に結合される。スレーブロボットアセンブリ190の他のサブユニットのうちの1つからスレーブロボットアセンブリソフトウェアサブシステム309が受信した各パケットについて、データコントローラ315は、受信したデータに応答するアクションがスレーブロボットアセンブリ190によってローカルに実行され得るかどうか、またはデータがネットワーク化されたコンピューティングノード180に送信されるべきかどうかを決定する。スレーブロボットアセンブリソフトウェアサブシステム309に送信されるデータは、本明細書ではデータタイプと称されるタイプまたはカテゴリと関連付けられる。スレーブロボットアセンブリ190の各サブユニットは、データを様々なデータタイプと関連付けるように構成されており、データタイプは、構成データまたは構成データへの変更を通じてスレーブロボットアセンブリ190に追加され、またはそれから削除される。データタイプには、画像データ、位置データ、中間計算データ、エラーデータが含まれるが、これらに限定されない。
各データタイプは一意の識別子と関連付けられており、スレーブロボットアセンブリ190のサブユニットは、スレーブロボットアセンブリソフトウェアサブシステム309にデータを送信するときに、送信されるデータを含むパケット内に一意の識別子を含むように構成される。いくつかの実施形態では、データが一連のパケットで送信される場合、一連のパケット内のパケットの各々は、データと関連付けられたデータタイプの一意の識別子を含む。いくつかの実施形態では、データが一連のパケットで送信される場合、一連の最初のパケットのみがデータと関連付けられたデータタイプの一意の識別子を含み、一連の最後のパケットは、すべてのデータが送信されたことを示す一連のビットを含み、スレーブロボットアセンブリソフトウェアサブシステム309は、最初のパケットに含まれるデータタイプを、最初のパケット、最後のパケット、およびすべての中間パケットのデータと関連付けるように構成される。
各データタイプは優先度レベルと関連付けられており、スレーブロボットアセンブリ190は、データタイプと関連付けられた優先度レベルに基づいてアクションを実行することができるかどうかを示す、一セットのローカルアクションルールを含む。いくつかの実施形態では、優先度レベルは、高優先度、中優先度、低優先度である。1つ以上のローカルアクションルールは、スレーブロボットアセンブリ190のサブユニットが利用するように構成されている各データタイプについて少なくとも1つの優先度レベルを特定する。上述のように、データタイプには、画像データ、位置データ、中間計算データ、エラーデータが含まれているが、これらに限定されない。いくつかの実施形態では、画像データは、高優先度と関連付けられ、中間計算は、低優先度と関連付けられ、位置データは、中優先度と関連付けられ、さらにエラーデータは、中優先度と関連付けられる。
優先度レベルごとに、1つ以上のローカルアクションルールが、アクションをローカルで実行することができるかどうかを特定する。特定の優先度レベルでは、ローカルアクションルールは、優先度レベルおよび受信されたデータと関連付けられたデータタイプに基づいて、アクションをローカルで実行することができるかどうかを特定する。アクションをローカルで実行することができない場合、ローカルアクションルールは、データがネットワーク化されたコンピューティングノード180に送信されるべきであることを特定する。アクションをローカルで実行することができる場合、ローカル解決ルールは、アクションを実行するための機械可読な指示を特定する。本明細書で説明するように、「機械可読命令」という用語は、実行するコンピューティングノードが処理または実施するように構成されている、プログラミング言語の構文、またはバイナリコードなどの命令および/またはコマンドを含む。ローカルアクションルールが特定するアクションの実施例には、セットアップアームユニット192、ロボットアームユニット193および/または同様のものなどのスレーブロボットアセンブリ190のサブユニットの新しい位置データを計算すること、スレーブロボットアセンブリ190に動作可能に結合された画像捕捉デバイスによって捕捉された画像からの画像データを、ネットワーク化されたコンピューティングノード180および/または同様のものなどのシステム100の別のコンピューティングノードに送信すること、セットアップアームユニット192、ロボットアームユニット193、器具駆動ユニット194および/または同様のものなどのスレーブロボットアセンブリ190のサブユニットの電力レベルを計算および/または設定すること、スレーブロボットアセンブリ190のサブユニットの温度が閾値温度を超えているかどうかを決定すること、器具駆動ユニット194に結合されているエンドエフェクタおよび/または同様のものなどの特定の器具のケーブルのたるみを計算すること、スレーブロボットアセンブリ190の1つ以上のサブユニットへの電力供給を抑制(例えば、パワーダウンすることによって)すること、ならびにスレーブロボットアセンブリ190の1つ以上のサブユニットと関連付けられたモータを抑制(例えば、ブレーキをかけること、および/または電力供給を抑制することによって)することが含まれるが、これらに限定されない。
データコントローラ315は、スレーブロボットアセンブリソフトウェアサブシステム309によって受信されたデータのデータタイプを識別し、1つ以上のローカルアクションルールおよびデータタイプに基づいて、受信されたデータの優先度レベルを識別するように構成される。データコントローラ315は、優先度レベルおよび1つ以上のローカルアクションルールに基づいて、実行するアクションを識別するように構成される。アクションがローカルで実行することができないことをデータコントローラ315が識別した場合、データコントローラ315は、ネットワーク化されたコンピューティングノード180に、スレーブロボットアセンブリソフトウェアサブシステム309が受信したデータを送信する。アクションがローカルで実行することができることをデータコントローラ315が識別した場合、その際、データコントローラ315は、アクションを実行し、実行されたアクションを実装するために、データをスレーブロボットアセンブリソフトウェアサブシステム309に送信したサブユニットのための一セットの命令を生成する。
上述のように、位置データおよびエラーデータなどの特定のデータタイプは、中優先度と関連付けられており、スレーブロボットアセンブリソフトウェアサブシステム309が中優先度と関連付けられたデータを受信したことに応じて、データコントローラ315は、アクションが優先度レベル、データタイプ、およびローカルアクションルールに基づいてローカルで実行することができるかどうかを決定する。例えば、ローカルアクションルールが、中優先度データおよび位置データのデータタイプについてのアクションがローカルで実行され得る一方で、エラーデータのデータタイプについてのアクションがローカルで実行され得ないと特定する場合、データコントローラ315は、スレーブロボットアセンブリソフトウェアサブシステム309が位置データを受信したことに応じて、特定された機械可読命令に基づいて新しい位置データを計算し、スレーブロボットアセンブリソフトウェアサブシステム309がエラーデータを受信したことに応じて、ネットワーク化されたコンピューティングノード180にエラーデータを送信する。
セットアップアームユニット192は、セットアップアームソフトウェアサブシステム311およびアームカートディスプレイGUI312を含む。さらに、図2には別個に示されていないが、いくつかの実施形態では、セットアップアームユニット192は、1つ以上のプロセッサによって実行されたときに、セットアップアームユニット192に、セットアップアームソフトウェアサブシステム311およびアームカートディスプレイGUI312を実装させる命令を記憶する1つ以上のメモリユニットに結合された1つ以上のプロセッサを含む。このようにして、例えば、セットアップアームユニット192は、外科医などのユーザが、他の操作の中でも、セットアップアームユニット192を移動することを可能にするプログラム、スクリプト、または他の実行可能なコマンドなどの特定の手順を実施するように構成される。
また、図2には示されていないが、セットアップアームユニット192は、アームカートディスプレイデバイスに結合され得、ディスプレイデバイスを介して情報を表示するように構成され得る。ディスプレイデバイスに表示される情報は、例えば、手術台に対するカートユニット191の位置、患者および手術台に対するセットアップアームユニット192の位置、ロボットアームユニット193の位置、ならびに/または器具駆動ユニット194の位置を含む、スレーブロボットアセンブリ190の位置と関連付けられた情報を含み得る。アームディスプレイGUI312は、セットアップアームソフトウェアサブシステム311に動作可能に結合され得、それにより、ユーザまたは臨床医からの入力が、アームディスプレイGUI312によって、捕捉、記録、および分析され、入力は、セットアップアームソフトウェアサブシステム311に送信される。セットアップアームソフトウェアサブシステム311は、スレーブロボットアセンブリ190によって受信されたパケットおよび/またはカートユニット191、ロボットアームユニット193、または器具駆動ユニット193から受信されたパケットで受信された情報に基づいて、セットアップアームユニット191によって実施されるべき命令および/または実行されるべきアクションを決定するように構成される。いくつかの実施形態では、セットアップアームソフトウェアサブシステム311は、スレーブロボットアセンブリ190の1つ以上の他の構成要素によって実施される命令を決定し、スレーブロボットアセンブリ190の1つ以上の他の構成要素に、命令および/または他のデータを送信するように構成される。
ロボットアームユニット193は、ロボットアームソフトウェアサブシステム313を含む。さらに、図2には示されていないが、いくつかの実施形態では、ロボットアームユニット193はまた、1つ以上のプロセッサによって実行されたときに、ロボットアームユニット193に、ロボットアームソフトウェアサブシステム313を実装させる命令を記憶する1つ以上のメモリユニットに結合された1つ以上のプロセッサを含む。このようにして、例えば、ロボットアームユニット193は、外科医などのユーザが、他の操作の中でも、ロボットアームユニット193を患者104に対して移動することを可能にするプログラム、スクリプト、または他の実行可能なコマンドなどの特定の手順を実施するように構成される。ロボットアームソフトウェアサブシステム313は、いくつかの実施形態では、スレーブロボットアセンブリ190のうちの1つ以上の他のアプリケーションに結合されており、スレーブロボットアセンブリ190によって受信されたパケットおよび/またはカートユニット191、セットアップアームユニット192、もしくは器具駆動ユニット193から受信されたパケットに基づいて、ロボットアームユニット193によって実施されるべき命令および/または実行されるべきアクションを決定するように構成される。
例えば、スレーブロボットアセンブリ190は、ロボットアームユニット193と関連付けられた構成データを受信することができ、ロボットソフトウェアサブシステム313は、構成データがロボットアームユニット193によって受信されると、ロボットアームユニット193の構成データを更新する。スレーブロボットアセンブリ190はまた、ロボットアームを新しい位置に移動すること、またはロボットアームのすべての動作を一時停止することなどの、ロボットアームユニット193が実行する動作を示す動作モードデータまたは命令を受信する。ロボットソフトウェアサブシステム313は、ロボットアームユニット193に対する命令が有効であるかどうかを決定し、有効である場合、ロボットアームユニット193に動作を実行させるように構成される。いくつかの実施形態では、スレーブロボットアセンブリソフトウェアサブシステム309は、スレーブロボットアセンブリ190に対する何らかの命令が有効であるかどうかを決定し、有効である場合、通信経路202によって画定されるリングトポロジーを介して命令を送信するように構成されており、命令がロボットアームユニット193を対象としたものである場合、ロボットソフトウェアサブシステム313は、その際、ロボットアームユニット193に、命令が有効であるかどうかをチェックすることなく、命令またはコマンドと関連付けられた動作を実行させる。
ロボットアームユニット193は、通信経路202のうちの1つ以上、他のサブユニット191、192、および194のうちの1つ以上、ならびに通信経路106のうちの1つ以上を介して、ネットワーク化されたコンピューティングノード180または外科医コンソール170に、1つ以上のパケットを送信する。このようにして、ロボットアームユニット193は、同期ネットワークおよび非同期ネットワークの両方の要素を用いることによって、ネットワーク化されたコンピューティングノード180または外科医コンソール170に、1つ以上のパケットを送信する。ロボットアームユニット193は、他のデータの中でも、ロボットアームユニット193のロボットアームに結合された任意のセンサもしくはロボットアームユニット193に結合された任意のセンサからのデータ、患者および/もしくは手術台に対するロボットアームの位置データ、ロボットアームユニット193の動作状態もしくは動作モード、ロボットアームユニット193の現在の構成データならびに/または同様のものを送信する。ロボットアームユニット193は、いくつかの実施例では、EtherCATを使用してアームカートユニット191に情報を送信するように構成されており、アームカートユニット191は、ネットワーク化されたコンピューティングノード180にデータを転送するように構成される。
器具駆動ユニット194は、器具駆動ユニットソフトウェアサブシステム314を含む。さらに、図2には示されていないが、いくつかの実施形態では、器具駆動ユニット194は、1つ以上のプロセッサによって実行されたときに、器具駆動ユニット194に、器具駆動ユニットソフトウェアサブシステム314を実装させる命令を記憶する1つ以上のメモリユニットに結合された1つ以上のプロセッサを含む。このようにして、例えば、器具駆動ユニット194は、外科医などのユーザが、他の操作の中でも、医療処置中に器具駆動ユニット194に結合された手術器具を操作することを可能にするプログラム、スクリプト、または他の実行可能なコマンドなどの特定の手順を実施するように構成される。器具駆動ユニットソフトウェアサブシステム314は、器具駆動ユニット194によって受信されたデータに基づいて、器具駆動ユニット194によって、および/またはそれに結合された手術器具によって実行されるべき1つ以上のアクションを決定するように構成される。器具駆動ユニットソフトウェアサブシステム314はまた、器具駆動ユニット194および/または手術器具に、決定された1つ以上のアクションを実行させるように構成される。
器具駆動ユニットソフトウェアサブシステム314は、ネットワーク化されたコンピューティングノード180および/または外科医コンソール170にデータの1つ以上のパケットを送信するように構成される。いくつかの実施形態では、ネットワーク化されたコンピューティングノード180または外科医コンソール170にデータを送信するために、器具駆動ユニットソフトウェアサブシステム314は、通信経路202のうちの1つ以上を介して同期様式でアームカートユニット191にデータを送信し、アームカートユニット191は、データをネットワーク化されたコンピューティングノード180に転送する。次に、ネットワーク化されたコンピューティングノード180は、アームカートユニット191から受信したデータに基づいて、命令または信号を外科医コンソール170に送信するべきかどうかを決定する。器具駆動ユニット194は、他のデータの中でも、器具駆動ユニット194に結合された手術器具に含まれるか、またはそれに取り付けられる1つ以上のセンサ(図2には示されていない)によって捕捉または記録されたデータを含むパケットを送信することができる。器具駆動ユニット194は、器具駆動ユニット194の手術器具の位置に関連するか、もしくはそれと関連付けられたデータのパケット、器具駆動ユニット194の構成データおよび/または同様のものを送信する。器具駆動ユニット194はまた、いくつかの実施例では、器具駆動ユニット194の手術器具の動作モードデータを送信する。
いくつかの実施形態では、器具駆動ユニット194は、構成データの1つ以上のパケットを受信し、器具駆動ユニットソフトウェアサブシステム314は、受信した構成データに基づいて、器具駆動ユニット194の構成データを更新するように構成される。器具駆動ユニット194はまた、器具駆動194の手術器具を差し入れるために、いくつかの動作モードの中から特定の動作モードなどの動作モードデータのパケットを受信する。器具駆動ユニット194はまた、手術器具の特定の動作を開始する、もしくは手術器具の特定の動作を停止する、または器具駆動ユニット194の手術器具の任意の動作を一時的に停止するためのコマンドなどの、手術器具に対するコマンドを含むパケットを受信する。
いくつかの実施形態では、スレーブロボットアセンブリ190のサブユニット191、192、193、および194は、サブユニット191、192、193、および194の各々がサブユニット191、192、193、および194のうちの少なくとも2つの他のものに結合するように、互いに結合して、リングトポロジーを形成する。例えば、図2では、カートユニット191は、セットアップアームユニット192および器具駆動ユニット194に結合されている。同様に、セットアップアームユニット192は、カートユニット191およびロボットアームユニット193に結合されており、ロボットアームユニット193は、セットアップアームユニット192および器具駆動ユニット194に結合されており、器具駆動ユニット194は、ロボットアームユニット193およびカートユニット191に結合されている。
図3を参照すると、外科医コンソール170と、ネットワーク化されたコンピューティングノード180と、スレーブロボットアセンブリ190と、外部システム371との間で通信される様々なタイプの情報が示されている。上述のように、ネットワーク化されたコンピューティングノード180は、通信経路106を介して外科医コンソール170に通信可能に結合されており、スレーブロボットアセンブリ190および外科医コンソール170は、通信経路106およびネットワーク化されたコンピューティングノード180を介して互いに通信可能に結合されている。さらに、ネットワーク化されたコンピューティングノード180は、通信経路316を介して1つ以上の外部システム371に結合されている。
外科医コンソール170とネットワーク化されたコンピューティングノード180との間の通信は、外科医コンソール170、ネットワーク化されたコンピューティングノード180、および通信経路106aによって少なくとも部分的に画定された非同期ネットワークを介してもたらされる。ネットワーク化されたコンピューティング180とスレーブロボットアセンブリ190のカートユニット191との間の通信は、通信経路106bによって少なくとも部分的に画定された非同期ネットワークによってもたらされる。カートユニット191と、器具駆動ユニット194および/またはロボットアームユニット193などのスレーブロボットアセンブリ190の他のサブユニットとの間の通信は、通信経路202によって少なくとも部分的に画定された同期ネットワークによって達成される。いくつかの実施形態では、通信経路202は、1つのリングネットワークの一部である。
通信経路106aを介して外科医コンソール170からネットワーク化されたコンピューティングノード180に送信されるデータのタイプの実施例には、限定ではないが、外科医からの様々な入力と関連付けられたデータ、外科医コンソール170の1つ以上のセンサと関連付けられたデータ、患者と関連付けられた診断データ、外科医コンソール170が、電源がオンになっているか、または電源がオフになっているかなどの外科医コンソールと関連付けられた状態またはモードデータ、外科医に関する情報、ならびに外科医コンソール170、ネットワーク化されたコンピューティングノード180、および/またはスレーブロボットアセンブリ190と関連付けられた構成データが含まれる。外科医コンソール170は、ネットワーク化されたコンピューティングノード180から、外科医コンソール170のハンドル112などの1つ以上の制御ユニットとの対話に応じて触覚フィードバックを受信する。さらに、外科医コンソール170は、通信経路106aを介して、ネットワーク化されたコンピューティングノード180から、例えば、スレーブロボットアセンブリの器具駆動ユニットに取り付けられた、または結合された内視鏡などの1つ以上の画像捕捉デバイスによって捕捉された1つ以上の画像を含むデータを受信する。外科医コンソール170はまた、システム100の様々なスレーブロボットアセンブリおよび/または様々な他のサブユニットによって使用されている様々な手術器具の状態またはモードデータおよび構成データを受信することができる。外科医コンソール170はまた、外科医コンソール170が実行するために、または外科医コンソールを操作する外科医が実行するか、もしくは従うために、ネットワーク化されたコンピューティングノード180から1つ以上のコマンドを受信し得る。例えば、ネットワーク化されたコンピューティングノード180は、特定のスレーブロボットアセンブリがもはや適切に機能していないこと、および外科医がそのスレーブロボットアセンブリの使用をもはや試みるべきではないことを外科医に警告するコマンドを、外科医コンソール170に送信し得る。
ネットワーク化されたコンピューティングノード180は、ORチームに提示される情報を更新するように構成される。例えば、コアソフトウェア302は、外科医コンソール170およびスレーブロボットアセンブリ190などのスレーブロボットアセンブリから受信したデータに応答して、通信経路366aを介して、ORチームディスプレイGUI301上のORチームに関連する情報を表す様々なビューへの更新を送信することができる。同様に、コアソフトウェア302は、通信経路366bを介して、外科医コンソール170またはスレーブロボットアセンブリ190に送信されることに関連する特定のデータを受信することができる。
ネットワーク化されたコンピューティングノード180は、非同期ネットワークの一部である通信経路106bを介してスレーブロボットアセンブリ190のカートユニット191にデータを送信し、かつ通信経路106bを介してスレーブロボットアセンブリ190のカートユニット191からデータを受信するように構成される。ネットワーク化されたコンピューティングノード180のコアソフトウェア302によってカートユニット191に送信されるデータの例示的なタイプは、構成データ、動作状態またはモードデータ、ならびにスレーブロボットアセンブリ190の1つ以上のサブユニット191、192、193、および194に対して特定のアクションを実行するための命令またはコマンドを含むが、これらに限定されない。
スレーブロボットアセンブリ190のカートユニット191は、スレーブロボットアセンブリ190内の同期ネットワークの一部である202などの通信経路を使用してパケットを送信することにより、ネットワーク化されたコンピューティングノード180から受信したデータを、ロボットアームユニット193および器具駆動ユニット194に送信する。カートユニット191は、同様の様式で、スレーブロボットアセンブリ190の他のサブユニット192、193、および/または194からデータを受信する。例えば、カートユニット191は、同期ネットワークの一部として、通信経路202を介して、器具駆動ユニット194およびロボットアームユニット193から、センサ、位置、動作状態もしくはモード、および/または構成に関するデータを受信する。ネットワーク化されたコンピューティングノード180に送信される必要があるデータの場合、カートユニット191は、非同期ネットワークの一部である通信経路106bを使用してデータを送信する。
ネットワーク化されたコンピューティングノード180は、いくつかの実施例では、1つ以上の外部システム371に通信可能に結合される。外部システム371の実施例には、患者システム、ユーザシステム、手術をスケジュールするスケジューリングシステム、外科システム100によってローカルおよびシステム全体の決定を行うのに使用されるローカル解決ルールおよびグローバル解決ルールを含むルールの1つ以上のセットを再構成するために使用され得る、医療処置システム、ならびに他の外部システムが含まれるが、これらに限定されない。ネットワーク化されたコンピューティングノード180が外部システム371から受信するデータの実施例には、例えば、CTスキャンなどの手術前画像、患者の病歴を含む患者に関連するデータ、ならびに外科医およびスタッフに関連するデータが含まれるが、これらに限定されない。ネットワーク化されたコンピューティングノード180は、外部システム371に、手術器具の使用、外科医コンソール170の使用、手順データ、および手術システム100で利用された画像捕捉デバイスによって捕捉された1つ以上の画像に関連するデータを送信し得る。
図4を参照すると、ロボット手術システム100の構成要素の例示的な構成が示されており、ここで、意思決定制御は、スレーブロボットアセンブリ190および/もしくはネットワーク化されたコンピューティングノード180の構成要素、または別の構成要素の間に割り振られている。明確な実施例を示すために、図1、図2、および図3の様々な構成要素を使用して、図4の文脈で手術システム100によって実行される動作を説明する。
本明細書で説明するように、ローカル意思決定は、システム100のマスター構成要素ではない、スレーブロボットアセンブリ190などの構成要素によって行われる決定を指す。本明細書で説明するように、グローバル意思決定は、ネットワーク化されたコンピューティングノード180などのシステム100のマスター構成要素によって行われる決定を指す。上述のように、ネットワーク化されたコンピューティングノード180は、システム100の様々なセーフティ閾値を識別し、システム100の様々なセーフティ閾値に違反しているかどうかを決定するための1つ以上のグローバル解決ルールを含む、グローバルセーフティモニター305を含む。したがって、以下でさらに説明するように、グローバル意思決定は、グローバルなアクションの実行につながる可能性があるが、ローカル意思決定は、ローカルアクションの実行につながる可能性がある。グローバルセーフティモニター305は、セーフティハンドラ401、402、403、404、405、406、407、408、409、410、411、412、413、414(総称して、401〜414)などのシステム100内の様々なセーフティハンドラから、様々なセーフティ閾値に関連するデータを受信する。各セーフティハンドラ401〜414は、セーフティ測定値を捕捉し、グローバルセーフティモニター305またはローカルセーフティモニター415などの意思決定ユニットに、その情報を送信するように構成される。本明細書で説明するように、セーフティ測定値は、システム100の異なる構成要素の性能測定、および/またはシステム100の構成要素の動作中に発生するエラーであり得る。
各セーフティハンドラ401〜414は、セーフティハンドラ401〜414に結合された、および/またはそれと関連付けられた構成要素またはサブシステムのセーフティ測定値を捕捉するように構成される。例えば、セーフティハンドラ401、402、403、404は、それぞれ、グラフィカルユーザインターフェース301、コアソフトウェアシステム302、オブザーバソフトウェアシステム303、電源管理ソフトウェアシステム304のセーフティ測定値を捕捉する。同様に、セーフティハンドラ406、407、408は、それぞれ、グラフィカルユーザインターフェース306、サブシステム307、グラフィカルユーザインターフェース308のセーフティ測定値を捕捉し、セーフティハンドラ409、410、411、412、413、414は、スレーブロボットアセンブリソフトウェアサブシステム309、カートソフトウェアサブシステム310、セットアップアームソフトウェアサブシステム311、アームディスプレイグラフィカルユーザインターフェース312、ロボットソフトウェアサブシステム313、器具駆動ユニットソフトウェアサブシステム314のセーフティ測定値を捕捉する。
上述のように、セーフティ測定値は、システム100の異なる構成要素の性能測定、および/またはシステム100の構成要素の動作中に発生するエラーであり得、セーフティハンドラ401〜414は、グローバルセーフティモニター305またはローカルセーフティモニター415などの意思決定エンティティに、情報を送信する。例えば、セーフティハンドラ406は、編集可能であるべき外科医コンソール170のディスプレイ122のグラフィカルユーザインターフェース上のフィールドが、ユーザがフィールドをクリックすることなどによってフィールドと対話しようとするときに編集可能であるかどうかを捕捉して、フィールドが編集可能であるかどうかを、グローバルセーフティモニター305に送信し得る。グローバルセーフティモニター305に送信されたデータが、編集可能なフィールドが編集不可能であり、ユーザがフィールドを編集することを妨げていることを示す場合、グローバルセーフティモニター305は、外科医コンソール170でユーザに警告を送信し、グラフィカルユーザインターフェース306が機能しているグラフィカルユーザインターフェースであるとはもはや見なさないように、ユーザに指示することができる。
セーフティハンドラ409〜414から受信した情報に基づく意思決定は、ローカル意思決定エンティティであるローカルセーフティモニター415によって、システム100のシステム内でローカルに実行され得る。ローカルセーフティモニター415は、セーフティハンドラ409〜414から受信したデータに基づいて様々な命令を決定し、ローカルセーフティモニター415が性能の問題またはエラーなどのセーフティ問題点を解決することができない場合は、スレーブロボットアセンブリ190のサブユニット191、192、193、および194、またはグローバルセーフティモニター305のいずれかに命令を送信するようにローカル解決ルールの1つ以上のセットで構成される。ローカルセーフティモニター415は、セーフティハンドラから受信したデータをローカル解決ルールの一部として含んだセーフティ閾値データと比較することに基づいて、命令を生成することができる。
例えば、ロボットアームソフトウェアサブシステム313と結合されたセーフティハンドラ413は、ローカルセーフティモニター415に、ロボットアームユニット193がロボットアームの位置を更新するための命令を受信した後にロボットアームユニット193がロボットアームの位置を更新するのにかかる時間に関する情報を送信し得る。ローカルセーフティモニター415は、ロボットアームユニット193が命令を受信した後にロボットアームユニット193がロボットアームの位置を更新するのにかかった時間量が、ロボットアームによるそのような動きの実行についてのセーフティ閾値時間より大きいかどうかを決定する。時間量がセーフティ閾値時間よりも十分に長い場合、ローカルセーフティモニター415は、ロボットアームユニット193の動作を一時停止または停止し、スレーブロボットアセンブリ190のロボットアームユニット193がもはや使用可能でないことをグローバルセーフティモニター305に通知するために、カートユニット191を介してグローバルセーフティモニター305に警告を送信することができる。したがって、この実施例におけるスレーブロボットアセンブリ190は、ローカルで決定を行う。
しかしながら、時間量がセーフティ閾値よりも大きいが、ローカルセーフティモニター415がロボットアームユニット193の動作を停止または一時停止するために十分な時間よりも小さい場合、ローカルセーフティモニター415は、時間量を含む警告を、カートユニット191を介してグローバルセーフティモニター305に送信することができる。グローバルセーフティモニター305は、時間量がロボットアームユニット193の動作を停止または一時停止するために十分であるかどうかを決定する際に、外科医コンソール170、ネットワーク化されたコンピューティングノード180などの他のシステムからの他のセーフティ測定値を考慮することができる。グローバルセーフティモニター305が、他のシステムからの他のセーフティ測定値を考慮した時間量がロボットアームユニット193の動作を一時停止または停止するために十分であると決定した場合、ネットワーク化されたコンピューティングノード180は、ロボットアームユニット193の動作を一時停止または停止するための命令を、スレーブロボットアセンブリ190に送信する。したがって、グローバルセーフティモニター305は、スレーブロボットアセンブリ190に対して非ローカルまたはシステム全体またはグローバルの決定を行う。いくつかの実施形態では、セーフティ閾値データは、構成手順中に利用された構成データからのものを含む1つ以上の構成手順によって設定および更新されてもよい。セーフティ閾値データは、構成データへの更新またはシステム100内のシステムの様々な構成要素への他の更新に基づいて更新されてもよい。
次に図5を参照すると、手術ロボットシステム100の構成要素の構成を用いて、スレーブロボットアセンブリ190および/もしくはネットワーク化されたコンピューティングノード180の構成要素または他の構成要素間にセーフティ関連データの意思決定制御を割り振るための方法500が示されている。ステップ502で、ローカルセーフティモニター(ローカルセーフティモニター415など)が開始され、それは、スレーブロボットアセンブリ190などのその対応するスレーブロボットアセンブリの様々なセーフティメトリックの監視を実行する。ステップ504で、ローカルセーフティモニターは、スレーブロボットアセンブリ190のサブユニット191、192、193、および194の様々なセーフティハンドラ(セーフティハンドラ409〜414など)から警告を受信する。いくつかの実施例では、特定のセーフティ問題点が発生していなくても、セーフティ警告が周期的に送信される場合がある。例えば、スレーブロボットアセンブリ190のロボットアームユニット193は、特定のセーフティ問題点が発生していなくても、スレーブロボットアセンブリが動作している間に30秒ごとにローカルセーフティモニターにセーフティ警告を送信することができる。ステップ506で、ローカルセーフティモニターは、ステップ504で受信した警告からのあらゆるの警告がそれらのそれぞれの閾値を超えているかどうかを決定する。図4で上述したように、ローカルセーフティモニターは、セーフティ監視と関連付けられたルールに基づいて、対応する閾値に違反しているかどうかを決定する。閾値を超えている警告がない場合、方法500は、ステップ502に戻り、セーフティ監視を続ける。警告が対応する閾値を超える場合、ステップ508で、セーフティ警告およびセーフティ警告を送信したサブユニットが、ローカルセーフティモニターによって識別される。
ステップ510において、その対応する閾値を超えていると識別された各セーフティ警告について、ローカルセーフティモニターは、様々なセーフティ警告の閾値と関連付けられたルールに基づいて、ローカルアクションがローカルセーフティモニターによって実行され得るかどうかを決定する。ローカルアクションが実行され得る場合、ステップ512で、ローカルセーフティモニターは、ローカルアクションを実行して、セーフティ警告を解決する。ローカルアクションが実行され得ない場合、ステップ514で、ローカルセーフティモニターは、セーフティ警告をグローバルセーフティモニター(グローバルセーフティモニター305など)に伝達する。上述のように、グローバルセーフティモニターは、ネットワーク化されたコンピューティングノード180に常駐している。ステップ516において、グローバルセーフティモニターは、グローバルセーフティルールを使用して、伝達されたセーフティ警告の解決策を識別する。ステップ518において、ネットワーク化されたコンピューティングノード180は、受信されたセーフティ警告と関連付けられたサブユニットについての命令またはコマンドを決定すること、および命令またはコマンドをスレーブロボットアセンブリのカートユニットに送信することによって、受信されたセーフティ警告を解決するために必要なアクションを実行する。カートユニットは、スレーブロボットアセンブリの関連付けられたサブユニットおよびローカルセーフティモニターに、命令またはコマンドを送信する。ローカルセーフティモニターは、特定のセーフティ警告が解決されたとマークし、ステップ502のセーフティモニターで再開するように構成され得る。
次に図6を参照すると、手術ロボットシステム100の構成要素の構成を用いて、スレーブロボットアセンブリ190および/もしくはネットワーク化されたコンピューティングノード180の構成要素または他の構成要素間にアクションの実行を割り振るための方法600が示されている。明確な実施例を示すために、図2の文脈で説明された構成要素は、方法600を説明する際に使用される。ステップ602で、データコントローラ315などのデータコントローラが開始され、それは、スレーブロボットアセンブリソフトウェアサブシステム309によって受信されたデータを監視する。ステップ604において、パケットは、スレーブロボットアセンブリソフトウェアサブシステム309において同期ネットワークを介して受信される。いくつかの実施形態では、スレーブロボットソフトウェアサブシステム309は、同期ネットワークを介して受信されたパケットを、データコントローラ315に送信するように構成される。いくつかの実施形態では、データコントローラ315は、同期ネットワークを介してスレーブロボットソフトウェアサブシステム309に送信されたパケットのコピーを同時に受信する。ステップ606で、データコントローラ315は、パケット内のデータと関連付けられたデータタイプを識別する。いくつかの実施形態では、データコントローラ315は、データタイプの識別子に基づいてデータタイプを特定するように構成された1つ以上のルールに基づいて、データタイプを識別する。ステップ608で、データコントローラ315は、パケットにおけるデータと関連付けられた優先度レベルを識別する。上述のように、データコントローラ315は、パケット内のデータのデータタイプに基づいて、パケット内のデータと関連付けられた優先度レベルを識別するように構成される。
ステップ610で、データコントローラ315は、パケット内のデータと関連付けられた優先度レベルが高優先度閾値を超えているかどうかを決定する。高優先度と関連付けられたデータの実施例には、画像データが含まれるが、これに限定されない。いくつかの実施形態では、様々な優先度レベルに異なる値が割り当てられ、高優先度閾値は、高優先度レベルに割り当てられた値よりもわずかに低い値として特定される。受信したデータと関連付けられた優先度レベルが高優先度閾値を超えているとデータコントローラ315が決定した場合、ステップ620で、データコントローラ315は、非同期ネットワークを介して、パケットで受信したデータをネットワーク化されたコンピューティングノード180に送信する。いくつかの実施形態では、データコントローラ315は、パケットで受信したデータを送信するために、命令をスレーブロボットアセンブリソフトウェアサブシステム309に送信し、スレーブロボットアセンブリソフトウェアサブシステム309は、ネットワーク化されたコンピューティングノード180に、データを送信する。
受信したデータと関連付けられた優先度レベルが高優先度閾値を超えていないとデータコントローラ315が決定した場合、ステップ612で、データコントローラ315は、データと関連付けられた優先度レベルが低優先度閾値を下回っているかどうかを決定する。いくつかの実施形態では、低優先度閾値は、低優先度に割り当てられた値よりわずかに高い値として特定される。受信したデータと関連付けられた優先度レベルが低優先度閾値を下回っているとデータコントローラ315が決定した場合、データコントローラ315は、ローカルアクションルールおよび優先度レベルに基づいて、データに関連するアクションを識別する。ステップ624において、データコントローラ315は、上述のようにアクションを実行し、そのアクションに基づいて一セットの命令を生成し、ステップ626において、データコントローラ315は、同期ネットワークを介して、スレーブロボットアセンブリ190のサブユニットにパケットを送信する。
ステップ612で、データと関連付けられた優先度レベルが低優先度閾値を下回っているとデータコントローラ315が決定した場合、ステップ614で、データコントローラ315は、データと関連付けられた優先度レベルが中優先度閾値に関連するかどうかを決定する。いくつかの実施形態では、中優先度閾値は、値のある範囲に割り当てられ、例えば、中優先度閾値は、高優先度閾値に割り当てられた値よりも低いすべての値、および低優先度閾値に割り当てられた値よりも高いすべての値を含む。優先度レベルの値が中優先度閾値に割り当てられた値の範囲内にある場合、優先度レベルは、中優先度閾値に関連する。データの優先度レベルが中優先度閾値に関連しない場合、ステップ616で、データコントローラ315は、パケットをエラーパケットとして識別し、エラー処理を実行する。中優先度に関連しないデータの優先度レベルの実施例には、パケット内の値が未知の値である、もしくは破損している、および/または同様のことが含まれるが、これらに限定されない。エラー処理の一部として、データコントローラ315は、パケットの送信者を識別し、ネットワーク化されたコンピューティングノード180に、エラーおよび送信者の情報を送信する。いくつかの実施形態では、ネットワーク化されたコンピューティングノード180は、エラーおよび送信者の情報の受信に応答して、メッセージおよび/または命令をスレーブロボットアセンブリ190に送信して、送信者を再始動するか、または送信者の構成データを再ロードする。
ステップ614において、優先度レベルが中優先度レベルに関連しているとデータコントローラ315が決定した場合、データコントローラ315は、データに関連するアクションをローカルで実行することができるかどうかを決定する。上述のように、データコントローラ315は、データと関連付けられた優先度レベル、データと関連付けられたデータタイプ、およびローカルアクションルールに基づいて、データに関連するアクションをローカルに実行することができるかどうかを決定する。ローカルアクションルールが、データのアクションがローカルで実行され得ないことを特定する場合、方法600はステップ620に進み、データコントローラ315は、非同期ネットワークを介して、ネットワーク化されたコンピューティングノード180にデータを送信する。ローカルアクションルールが、アクションがローカルで実行され得ることを特定する場合、方法600はステップ622に進み、データコントローラ315は、上述のステップ622、624、および626に従って実行する。
「一実施例では」、「実施例では」、「いくつかの実施例では」、「一実施形態では」、「実施形態では」、「いくつかの実施形態では」、または「他の実施形態では」という語句は、各々、本開示による同じまたは異なる実施形態のうちの1つ以上のことを指す場合がある。「AまたはB」という形式の語句は、「(A)、(B)、または(AおよびB)」を意味する。「A、B、またはCのうちの少なくとも1つ」という形式の語句は、「(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)、または(A、B、およびC)」を意味する。
本明細書で説明するシステムはまた、1つ以上のコントローラを利用して、様々な情報を受信し、受信した情報を変換して出力を生成することができる。コントローラは、メモリ内に記憶された一連の命令を実行することが可能な、任意のタイプのコンピューティングデバイス、演算回路、または任意のタイプのプロセッサまたは処理回路を含み得る。コントローラは、多数のプロセッサおよび/またはマルチコア中央処理装置(CPU)を含んでもよく、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラ、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、および/または同類のものなどの任意のタイプのプロセッサを含んでもよい。コントローラはまた、1つ以上のプロセッサによって実行されると、1つ以上のプロセッサに1つ以上の方法および/またはアルゴリズムを実行させるデータおよび/または命令を記憶するメモリも含んでもよい。
本明細書で説明される方法、プログラム、アルゴリズム、またはコードのいずれもが、プログラミング言語またはコンピュータプログラムに変換されるか、または表現されてもよい。「プログラミング言語」および「コンピュータプログラム」は各々、本明細書で使用される場合、コンピュータへの命令を特定するために使用される任意の言語を含み、以下の言語およびその派生語(これらに限定されないが):Assembler、Basic、Batch files、BCPL、C、C+、C++、Delphi、Fortran、Java(登録商標)、JavaScript(登録商標)、Machine code、オペレーティングシステムコマンド言語、Pascal、Perl、PL1、スクリプト言語、Visual Basic、プログラム自体を特定するメタ言語、およびすべての第1、第2、第3、第4、第5世代、またはそれ以降のコンピュータ言語を含む。また、データベースおよび他のデータスキーマ、ならびに任意の他のメタ言語も含まれる。解釈され、コンパイルされ、またはコンパイルおよび解釈されたアプローチの両方を使用する言語間で、区別はなされない。プログラムのコンパイル済みバージョンとソースバージョンとの間でも、区別はなされない。このため、プログラミング言語が、プログラミング言語が複数の状態(ソース、コンパイル済み、オブジェクト、またはリンク等)で存在し得る、プログラムへの参照は、かかる状態のいずれか、およびすべてへの参照である。プログラムへの参照は、実際の命令および/またはそれらの命令の意図を包含し得る。
本明細書で説明される方法、プログラム、アルゴリズム、またはコードのいずれも、1つ以上の機械可読媒体またはメモリ上に収容され得る。「メモリ(memory)」という用語は、プロセッサ、コンピュータ、またはデジタル処理デバイス等の機械によって読み取り可能な形式で情報を提供(例えば、記憶および/または送信)する機構を含み得る。例えば、メモリは、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、または任意の他の揮発性または不揮発性メモリ記憶デバイスを含み得る。収容されるコードまたは命令は、搬送波信号、赤外線信号、デジタル信号、および他の同様の信号によって表されることができる。
上記の説明は、単に本開示の例示的なものであることが理解されるべきである。様々な代替例および変更例が本開示から逸脱することなく当業者によって想到され得る。したがって、本開示は、すべてのこのような代替、修正および変形を包含することが意図される。添付された図面を参照して説明された実施形態は、本開示の特定の実施例を説明するためにのみ提示される。上記および/または添付の特許請求の範囲に説明されたものとは非現実的に異なる他の要素、ステップ、方法および技術はまた、本開示の範囲内にあるように意図される。