(57)【要約】  本発明は、ロボットシステムとその方法とを提供する。ロボットシステムは、ツールと、複数のリンクを備えてツールを動かすマニピュレータとを備える。コントローラは、多角形要素から成るメッシュで定義される仮想境界に対して相互作用する仮想ボリュームとしてツールを表現する仮想シミュレーションを実現する。コントローラは、仮想シミュレーションにおいて仮想ボリュームが多角形要素に侵入する場合に、その侵入に応じた反力を計算する。この反力は、多角形要素のジオメトリに対して境界が画定される仮想ボリュームのジオメトリの関数である侵入係数に基づいて計算される。コントローラは、仮想ボリュームにその反力を加えて、仮想ボリュームによる多角形要素への侵入を抑制する。コントローラは、仮想ボリュームに加えられるこの反力に従ってツールを動かすことによりツールの動きを仮想境界に対して制限する指令を、マニピュレータに与える。【選択図】図１
2020523206.tif 000002
【特許請求の範囲】
【請求項１】
ツールと、
複数のリンクを備えて、前記ツールを動かすように構成されたマニピュレータと、
前記マニピュレータに接続されるコントローラであって、複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように適合された仮想ボリュームとして前記ツールを表現する仮想シミュレーションを実現するように構成されたコントローラと、を備えるロボットシステムであって、
前記コントローラは、
前記仮想シミュレーションにおいて前記仮想ボリュームが前記多角形要素の１つに侵入する場合に、該多角形要素のジオメトリに対して境界が画定される前記仮想ボリュームのジオメトリの関数である侵入係数に基づいて、その侵入に応じた反力を計算し、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記反力を加えて、前記仮想ボリュームによる前記多角形要素への侵入を抑制し、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かすことにより前記ツールの動きを前記仮想境界に対して制限する指令を、前記マニピュレータに与えるように構成される、ロボットシステム。
【請求項２】
前記侵入係数は、前記仮想ボリュームによる前記多角形要素への侵入の直線的な深さとの間に関数従属性を有していない、請求項１に記載のロボットシステム。
【請求項３】
前記ツールの状態を追跡するように構成され、前記コントローラに接続されたナビゲーションシステムをさらに備え、
前記仮想ボリュームは、追跡した前記ツールの状態に基づいて位置決めされる、先行する請求項のいずれかに記載のロボットシステム。
【請求項４】
前記ツールは、標的部位と相互作用するように構成され、
前記ナビゲーションシステムは、前記標的部位の状態を追跡するように構成され、
前記仮想境界は、前記標的部位に関連付けられる、請求項３に記載のロボットシステム。
【請求項５】
前記ナビゲーションシステムは、前記ツールが避けるべきオブジェクトの状態を追跡するように構成され、
前記仮想境界は、前記避けるべきオブジェクトに関連付けられる、請求項３または請求項４に記載のロボットシステム。
【請求項６】
前記コントローラは、前記ツールの状態のその後の変化に応じて、前記反力を繰り返し計算し、前記反力を繰り返し加え、そして、前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かす指令を、前記マニピュレータに繰り返し与えるように構成される、請求項３〜５のいずれか１項に記載のロボットシステム。
【請求項７】
前記多角形要素は三角形である、先行する請求項のいずれかに記載のロボットシステム。
【請求項８】
前記仮想ボリュームは、１個の面と、０個の頂点と、０個の辺とを有している、先行する請求項のいずれかに記載のロボットシステム。
【請求項９】
前記仮想ボリュームは球形である、先行する請求項のいずれかに記載のロボットシステム。
【請求項１０】
前記反力はインパルスとしてさらに定義される、先行する請求項のいずれかに記載のロボットシステム。
【請求項１１】
前記仮想シミュレーションにおいて前記仮想ボリュームが複数の多角形要素に同時に侵入する場合に、その同時侵入に応じた複数の反力をそれぞれ、対応する多角形要素のジオメトリに対して境界が画定される前記仮想ボリュームのジオメトリの関数である前記侵入係数に基づいて計算するようにさらに構成される、先行する請求項のいずれかに記載のロボットシステム。
【請求項１２】
前記コントローラは、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記複数の反力を同時に加え、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記複数の反力に従って前記マニピュレータの位置合わせを指令するようにさらに構成される、請求項１１に記載のロボットシステム。
【請求項１３】
前記コントローラは、
前記複数の反力を合成して合成反力を生成し、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記合成反力を加え、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記合成反力に従って前記マニピュレータの位置合わせを指令するようにさらに構成される、請求項１１に記載のロボットシステム。
【請求項１４】
前記コントローラは、前記仮想ボリュームが行う複数の多角形要素に対する任意の同時侵入行為において、前記合成反力が一定となるように、前記反力のそれぞれに重み係数を掛けるようにさらに構成される、請求項１３に記載のロボットシステム。
【請求項１５】
前記ツールに加えられる力を感知するように構成される力／トルクセンサをさらに備え、
前記仮想シミュレーションにおいて、前記ツールに加えられる力を前記仮想ボリュームに加えて前記仮想ボリュームを前記多角形要素の１つに侵入させる、先行する請求項のいずれかに記載のロボットシステム。
【請求項１６】
前記侵入係数は、前記仮想ボリュームと前記多角形要素との交わりによって定義される投影領域であり、
前記投影領域は、前記多角形要素のジオメトリによって境界を画定されている、先行する請求項のいずれかに記載のロボットシステム。
【請求項１７】
前記侵入係数は、前記仮想ボリュームと前記多角形要素が交わる時に前記多角形要素のジオメトリによって境界を画定される前記仮想ボリュームの断面領域が有するすべての円弧の組み合わせで定義される投影弧である、先行する請求項のいずれかに記載のロボットシステム。
【請求項１８】
前記侵入係数は、前記仮想ボリュームのうち前記多角形要素に侵入する部分の体積で定義される変位ボリュームであり、
前記変位ボリュームは、前記多角形要素のジオメトリによって境界を画定されている、先行する請求項のいずれかに記載のロボットシステム。
【請求項１９】
ロボットシステムを制御する方法であって、
前記ロボットシステムは、
ツールと、
複数のリンクを備えて、前記ツールを動かすように構成されたマニピュレータと、
前記マニピュレータに接続されるコントローラであって、複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように構成された仮想ボリュームとして前記ツールを表現する仮想シミュレーションを実現するように構成されたコントローラと、を備え、
前記方法は、前記コントローラによって、
前記仮想シミュレーションにおいて前記仮想ボリュームが前記多角形要素の１つに侵入する場合に、該多角形要素のジオメトリに対して境界が画定される前記仮想ボリュームのジオメトリの関数である侵入係数に基づいて、その侵入に応じた反力を計算することと、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記反力を加えて、前記仮想ボリュームによる前記多角形要素への侵入を抑制することと、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かすことにより前記ツールの動きを前記仮想境界に対して制限する指令を、前記マニピュレータに与えることと、を含む方法。
【請求項２０】
前記侵入係数は、前記仮想ボリュームによる前記多角形要素への侵入の直線的な深さとの間に関数従属性を有していない、請求項１９に記載の方法。
【請求項２１】
追跡している前記ツールの状態をナビゲーションシステムから受信することと、
追跡した前記ツールの状態に基づいて、前記仮想ボリュームを位置決めすることと、をさらに含む、請求項２０または２１に記載の方法。
【請求項２２】
標的部位に対して前記ツールを動かす指令を前記マニピュレータに与えることと、
追跡している前記標的部位の状態を前記ナビゲーションシステムから受信することと、
前記仮想境界を前記標的部位に関連付けることと、をさらに含む請求項２１に記載の方法。
【請求項２３】
追跡している避けるべきオブジェクトの状態を前記ナビゲーションシステムから受信することと、
前記仮想境界を前記避けるべきオブジェクトに関連付けることと、をさらに含む請求項２１または２２に記載の方法。
【請求項２４】
前記ツールの状態のその後の変化に応じて、前記反力を繰り返し計算し、前記反力を繰り返し加え、そして、前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かす指令を、前記マニピュレータに繰り返し与えることをさらに含む、請求項２１〜２３のいずれか１項に記載の方法。
【請求項２５】
前記仮想シミュレーションにおいて前記仮想ボリュームが複数の多角形要素に同時に侵入する場合に、その同時侵入に応じた複数の反力をそれぞれ、対応する多角形要素のジオメトリに対して境界が画定される前記仮想ボリュームのジオメトリの関数である前記侵入係数に基づいて計算することをさらに含む、請求項１９〜２４のいずれか１項に記載の方法。
【請求項２６】
前記仮想シミュレーションにおいて前記仮想ボリュームに前記複数の反力を同時に加えることと、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記複数の反力に従って前記マニピュレータの位置合わせを指令することと、をさらに含む、請求項２５に記載の方法。
【請求項２７】
前記複数の反力を合成して合成反力を生成することと、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記合成反力を加えることと、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記合成反力に従って前記マニピュレータの位置合わせを指令することと、をさらに含む、請求項２５に記載の方法。
【請求項２８】
前記仮想ボリュームが行う複数の多角形要素に対する任意の同時侵入行為において、前記合成反力が一定となるように、前記反力のそれぞれに重み係数を掛けることをさらに含む、請求項２７に記載の方法。
【請求項２９】
力／トルクセンサの測定値に基づいて前記ツールに加えられる力を特定することと、
前記仮想シミュレーションにおいて、前記ツールに加えられる力を前記仮想ボリュームに加えて前記仮想ボリュームを前記多角形要素の１つに侵入させることと、をさらに含む、請求項１９〜２８のいずれか１項に記載の方法。
【請求項３０】
前記反力を計算することは、前記仮想ボリュームと前記多角形要素との交わりによって定義される投影領域である前記侵入係数に基づいて行われ、
前記投影領域は、前記多角形要素のジオメトリによって境界を画定されている、請求項１９〜２９のいずれか１項に記載の方法。
【請求項３１】
前記反力を計算することは、前記仮想ボリュームと前記多角形要素が交わる時に前記多角形要素のジオメトリによって境界を画定される前記仮想ボリュームの断面領域が有するすべての円弧の組み合わせで定義される投影弧である前記侵入係数に基づいて行われる、請求項１９〜３０のいずれか１項に記載の方法。
【請求項３２】
前記反力を計算することは、前記仮想ボリュームのうち前記多角形要素に侵入する部分の体積で定義される変位ボリュームである前記侵入係数に基づいて行われ、
前記変位ボリュームは、前記多角形要素のジオメトリによって境界を画定されている、請求項１９〜３１のいずれか１項に記載の方法。
【請求項３３】
コントローラに実装される、ロボットシステムのツールのダイナミクスをシミュレーションする方法であって、前記方法は、
前記ツールを仮想ボリュームとしてシミュレーションすることと、
複数の多角形要素から成るメッシュで構成される仮想境界をシミュレーションすることと、
前記仮想ボリュームが複数の多角形要素に同時に侵入するように前記仮想ボリュームの動きをシミュレーションすることと、
前記複数の多角形要素への同時侵入に応じた複数の反力をそれぞれ、対応する多角形要素のジオメトリに対して境界が画定される前記仮想ボリュームのジオメトリの関数である侵入係数に基づいて計算することと、
前記複数の反力を合成して合成反力を生成することと、
前記仮想ボリュームが行う複数の多角形要素に対する任意の同時侵入行為において、前記合成反力が一定となるように、前記反力のそれぞれに重み係数を掛けることと、
前記合成反力を前記仮想ボリュームに加えるシミュレーションを行うことと、を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１７年６月９日に出願した米国仮特許出願第６２／５１７４５３号の優先権の利益を主張するものであり、そのすべての開示内容は引用することによって本明細書の一部をなすものとする。
【０００２】
本開示は、ロボットシステムにおいて仮想境界を実現するための反力を生成する技術に関する。
【背景技術】
【０００３】
ロボットシステムは、外科処置を行う目的で一般に使用されている。そのようなロボットシステムは、ロボットアームと、手術部位に関与するためにロボットアームの端部に接続されたツールと、を備えるロボットを備えている。
【０００４】
そして、多くの場合、ツールが望まない領域にまで到達してしまうのを防ぐ目的で、ツールの動きを制限する仮想表面が導入される。例えば、ツールで処置する必要のある生体構造の領域と処置する必要のない領域とを区切るように仮想表面を手術部位に登録することができる。
【０００５】
多くの仮想表面は、三角形などの多角形要素から成るメッシュとして定義される。仮想表面に侵入しようとする力がツールに加えられた場合、当該メッシュのうちこのような侵入の試みを受ける三角形それぞれについて反力が計算される。つまり、ツールが仮想表面を押すと、仮想表面またはツールの圧縮によって仮想表面が押し戻される。従来から、この反力はバネでモデリングされてきた。各反力の大きさが、三角形への侵入の直線的な深さ（すなわち、ツールが仮想表面より内部に突き出る距離）に比例するようにモデリングされる。そして、ロボットアームは、計算された反力に従ってツールを動かすことによって、ツールの動きを仮想表面に対して制限する。
【０００６】
しかしながら、このような反力のモデリングや計算は決して簡単なものではない。仮想表面の多くが複雑な形状を有しており、ツールと仮想表面との間の相互作用のモデリングが難しくなるほどの幾何学的特徴を定義している。さらに、侵入時のツールのモデル形状やツールの姿勢によってこの問題はさらに難しいものとなる。
【０００７】
そして、ツールが仮想表面に侵入する場合、特に、ツールが複数の三角形に同時に侵入する場合に、ロボットアームが計算した反力に応じてツールを動かした結果、ツールが一貫性のない動きや予想外の動きをしてしまうことが観察されている。例えば、従来の場合、ツールが平坦な仮想表面を動いている間に２つ以上の三角形に同時に関与する動きをすると、ツールはキックバックを起こしてしまう。このキックバックは、反力２つ分と考えられるものである。仮想表面が平坦であればあるほどキックバックは深刻となる。また、複数の三角形が共有する頂点に関与する動きをツールが行った場合のキックバックはさらに深刻である。例えば、５つの三角形が共有する頂点に関与する動きの場合、その頂点での反力は、瞬間的に１つの三角形の反力の５倍にまで増加する。
【０００８】
さらに、仮想表面が定義する出隅角に沿ってツールが動く場合、その間に、仮想表面のメッシュのうち、この出隅角を挟む辺に沿った三角形の多くに対して同時に、ツールは侵入しようとする。そして、これらの三角形に関する反力が合成されると、累積して反力が急増するため、ツールが出隅角に沿って動く間に予想外のキックバックを起こしてしまう。
【０００９】
このように、従来のロボットシステムが依拠している表面相互作用のモデリングは、侵入が、１つの三角形に対して行われているのか、複数の三角形に対して行われているのかに関わらず、単にその侵入の直線的な深さに基づいて行われるが、そのような従来のロボットシステムにおいては、さらに複雑な問題が生じてしまう。例えば、（侵入時のツールのモデル形状やツールの姿勢などによっては）侵入の直線的な深さは同一でも、仮想表面によるツールの断面領域の面積または変位体積（変位ボリューム）が異なる状況が考えられる。従来の表面モデリングの場合、そのような状況でも、仮想表面によるツールの断面領域の面積または変位体積は考慮に入れられず、単に侵入の直線的な深さに基づいて同一の反力が加えられる。
【００１０】
仮想表面の外縁部への侵入など、ツールの一部のみが仮想表面に侵入する場合にも、同様の状況が発生する。例えば、侵入時のツールのモデル形状や姿勢が同じであると仮定した場合でも、ツール全体が仮想表面上にある状況と、ツールが仮想表面の外縁部に係っている状況とが考えられる。従来の表面モデリングの場合、そのような状況でもやはり、ツールのうち仮想表面に関与している部分の大きさはどの程度かは考慮に入れられず、単に侵入の直線的な深さに基づいて同一の反力が加えられる。
【００１１】
したがって、本技術分野においては、少なくとも上述の問題に対処するためのシステムおよび方法が必要とされている。
【発明の概要】
【課題を解決するための手段】
【００１２】
ロボットシステムの一例を示す。ロボットシステムは、ツールと、複数のリンクを備えてツールを動かすように構成されたマニピュレータとを備える。コントローラは、マニピュレータに接続されて、仮想ボリュームとしてツールを表現する仮想シミュレーションを実現するように構成される。該仮想ボリュームは、複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように構成される。コントローラは、仮想シミュレーションにおいて仮想ボリュームが多角形要素の１つに侵入する場合に、その侵入に応じた反力を計算するように構成される。この反力は、当該多角形要素のジオメトリに対して境界が画定される仮想ボリュームのジオメトリの関数である侵入係数に基づいて計算される。コントローラは、仮想シミュレーションにおいて、仮想ボリュームにこの反力を加えて、仮想ボリュームによる多角形要素への侵入を抑制するように構成される。コントローラは、仮想シミュレーションにおいて仮想ボリュームに加えられるこの反力に従ってツールを動かすことによりツールの動きを仮想境界に対して制限する指令を、マニピュレータに与える。
【００１３】
ロボットシステムを制御する方法の一例を示す。ロボットシステムは、ツールと、複数のリンクを備えてツールを動かすように構成されたマニピュレータと、マニピュレータに接続されるコントローラであって、仮想シミュレーションを実現するように構成されたコントローラと、を備える。仮想シミュレーションにおいて、ツールは、仮想境界に対して相互作用するように構成された仮想ボリュームとして表現される。仮想境界は、複数の多角形要素から成るメッシュで定義される。本方法は、仮想シミュレーションにおいて仮想ボリュームが多角形要素の１つに侵入する場合に、その侵入に応じた反力をコントローラによって計算することを含む。この反力は、当該多角形要素のジオメトリに対して境界が画定される仮想ボリュームのジオメトリの関数である侵入係数に基づいて計算される。さらに本方法は、コントローラによって、仮想シミュレーションにおいて仮想ボリュームにこの反力を加えて仮想ボリュームによる多角形要素への侵入を抑制することを含む。コントローラは、仮想シミュレーションにおいて仮想ボリュームに加えられるこの反力に従ってツールを動かすことによりツールの動きを仮想境界に対して制限する指令を、マニピュレータに与える。
【００１４】
コントローラに実装される、ロボットシステムのツールのダイナミクスをシミュレーションする方法の一例を示す。本方法は、ツールを仮想ボリュームとしてシミュレーションすることと、複数の多角形要素から成るメッシュで構成される仮想境界をシミュレーションすることとを含む。仮想ボリュームの動きは、仮想ボリュームが複数の多角形要素に同時に侵入するようにシミュレーションされる。さらに本方法は、複数の多角形要素への同時侵入に応じた複数の反力をそれぞれ計算することを含む。各反力は、対応する多角形要素のジオメトリに対して境界が画定される仮想ボリュームのジオメトリの関数である侵入係数に基づいて計算される。さらに本方法は、これらの複数の反力を合成して合成反力を生成することを含む。仮想ボリュームが行う複数の多角形要素に対する任意の同時侵入行為において、合成反力が一定となるように、これらの反力のそれぞれに重み係数が掛けられる。この合成反力は、シミュレーションによって仮想ボリュームに加えられる。
【発明の効果】
【００１５】
有利なことに、本ロボットシステムおよび方法では、多角形要素のジオメトリに対して境界が画定される仮想ボリュームのジオメトリの関数に基づいて、関連する反力が計算される。こうして計算された反力は、仮想境界の複雑さや、侵入する多角形要素の数、ツールの侵入時の仮想ボリュームとしてのモデル形状やツールの姿勢が考慮されたものとなり、どのような状況でもツールの動きに応じた自然な反力となる。
【００１６】
その結果、ツールが仮想境界に侵入する場合、特に、ツールが複数の多角形要素に同時に侵入する場合に、マニピュレータがこの反力に応じてツールを動かすことにより、ツールは一貫性のある予想通りの動きをする。
【００１７】
さらに、本明細書に記載の技術は、侵入の直線的な深さ（すなわち、仮想ボリュームが多角形要素や仮想境界より内部に突き出る距離）は同一でも、仮想ボリュームと仮想境界の少なくとも一方の断面領域の面積または変位ボリュームが異なる状況も考慮したものである。反力が仮想ボリュームのジオメトリの関数として計算される場合、仮想ボリュームのジオメトリによる侵入の大きさをより正確に説明するものとなるため、上述の各状況における反力が異なるためである。侵入する仮想体は立体形状を有しているため、多角形要素、仮想境界またはその両方に対して線形の衝撃力を加えることはなく、よって、侵入係数は侵入の直線的な深さに対して線形には変化しない。むしろ、侵入する仮想体が加える衝撃力は、仮想ボリュームの立体形状に関するより高次の関数となる。したがって、侵入係数は、このより高次の立体形状関数に従って侵入の直線的な深さに対して変化する。換言すれば、侵入係数は、仮想境界または仮想ボリュームの変位体積（変位ボリューム）すなわち侵入体積（侵入ボリューム）を記述するものである。
【００１８】
さらに、本明細書に記載の技術は、仮想境界の外縁部においても、例えば（仮想ボリュームが同一かつ侵入時の仮想ボリュームの姿勢が同じであると仮定した場合に）ツール全体が仮想境界上にある状況と、ツールが仮想境界の外縁部に係っている状況とで、異なる反力を生成すると考えられる。これは、侵入係数が、仮想ボリュームのうち仮想境界に関与している部分の大きさはどの程度かをより正確に説明するためである。
【００１９】
本技術はさらに、角、山部、谷部などの、仮想境界において非平面状に多角形要素が配置される箇所においても、仮想境界に対してより滑らかな応答を与えるものである。例えば、本技術は、このような非平面状に多角形要素が配置される箇所との衝突時に、反力を徐々に増加させて、ツールの突発的または不自然な動きを引き起こすおそれのある反力の不連続な急変を回避する。例えば、仮想境界が定義する出隅角に沿ってツールが動く間、侵入係数は互いに相殺されて略一貫した合成反力が得られると考えられる。これにより、ツールがこのような角に沿って動く間にツールに加わる力が急増してしまう事態が解消される。したがって、仮想ボリュームが、２つ以上の多角形要素に同一の直線的な深さで侵入する場合にも、滑らかな応答が得られる。これにより、ツールが、非平面状に多角形要素が配置される箇所に沿って動く間に予想外のキックバックを起こしてしまうことが抑制される。したがって、本明細書に記載の技術は、表面モデリングが有する、非平面状に多角形要素が配置される箇所に関する問題を解決するものである。
【００２０】
当然ながら、種々の構成や状況に応じて、本ロボットシステムおよび方法は、本明細書に記載したもの以外の利点や技術的解決策を提供し得る。
【００２１】
本発明の利点は、以下の詳細な説明を添付の図面と関連させて考察することにより、よりよく理解され、容易に理解されるであろう。
【図面の簡単な説明】
【００２２】
【図１】一例に係るロボットシステムを示す斜視図である。
【図２】ロボットシステムのコントローラの一例を示すブロック図である。
【図３】ロボットシステムのコントローラおよびマニピュレータに実装する制御ループを示すブロック図である。
【図４】マニピュレータのツールをシミュレーションによって表現した仮想ボリュームであって、多角形要素から成るメッシュで構成され、生体構造に関連付けられる仮想境界に対して相互作用するように構成される仮想ボリュームの一例を示す図である。
【図５】投影領域に基づく侵入係数を使って、仮想ボリュームと仮想境界の１つの多角形要素との相互作用に応じた反力を生成する一例を説明する図である。
【図６】投影領域に基づく侵入係数を使って、仮想ボリュームと仮想境界の１つの多角形要素との相互作用に応じた反力の生成する他の例を説明する図である。
【図７】投影領域に基づく侵入係数を使って、仮想ボリュームと仮想境界の１つの多角形要素との相互作用に応じた反力を生成するさらに他の例を説明する図である。
【図８】仮想境界の１つの多角形要素に関する投影領域の計算の一例を説明する図である。
【図９】仮想境界の１つの多角形要素に関する投影領域の計算の他の例を説明する図である。
【図１０】投影領域を使って、仮想ボリュームと仮想境界の複数の多角形要素との相互作用に応じた複数の反力を生成する一例を説明する図である。
【図１１】投影領域を使って、仮想ボリュームと仮想境界の複数の多角形要素との相互作用に応じた合成反力を生成する一例を説明する図である。
【図１２】投影領域を使って、仮想ボリュームと仮想境界の複数の多角形要素との相互作用に応じた複数の反力を生成する他の例を説明する図である。
【図１３】投影領域を使って、仮想ボリュームと仮想境界の出隅角を構成する多角形要素との相互作用に応じた反力を生成する一例を説明する図である。
【図１４】投影領域を使って、仮想ボリュームと仮想境界の出隅角を構成する多角形要素との相互作用に応じた反力を生成する他の例を説明する図である。
【図１５】投影領域を使って、仮想ボリュームと仮想境界の出隅角を構成する多角形要素との相互作用に応じた反力を生成するさらに他の例を説明する図である。
【図１６】仮想境界の１つの多角形要素に関する投影弧に基づく侵入係数の計算の一例を説明する図である。
【図１７】仮想境界の１つの多角形要素に関する投影弧に基づく侵入係数の計算の他の例を説明する図である。
【図１８】仮想境界の１つの多角形要素に関する変位ボリュームに基づく侵入係数の計算の一例を説明する図である。
【発明を実施するための形態】
【００２３】
Ｉ．ロボットシステムの概要
図面を参照すると、添付の図面はいずれも、ロボットシステム（以下「システム」）１０およびシステム１０の動作方法を示すものである。なお、複数の図において、同様の部品又は対応する部品を示すために、同様の番号を一貫して使用している。
【００２４】
図１に示すように、システム１０は、骨や軟組織などの患者１２の生体構造を治療するためのロボット外科手術システムである。図１において、患者１２は外科処置を受けている。図１に示す治療対象の生体構造は、患者１２の大腿骨（Ｆ）と脛骨（Ｔ）とを含んでいる。外科処置には、組織の除去または治療が含まれる場合がある。また治療が、組織を切離すること、組織を凝固させること、組織に損傷を与えること、組織を置換する治療などを含む場合がある。いくつかの例では、外科処置が、膝関節または股関節の部分置換手術または全置換手術を含む場合がある。一例では、システム１０は、単顆型人工関節、二顆型人工関節、多顆型人工関節、全人工関節を含む、股関節や膝関節などの外科用インプラントで置換すべき物質を切除する用途、あるいは脊椎に関連した用途で使用するように設計されている。この種のインプラントの一部は、「Prosthetic Implant and Method of Implantation（人工インプラントおよびその移植方法）」の名称で出願されている米国特許出願公開第２０１２／００３０４２９号に示されており、同文献の開示内容は、引用することによって本明細書の一部をなすものとする。当業者であれば、本明細書に記載のシステム１０および方法を、他の外科的処置や非外科的処置を行うために使用し得ること、あるいは、ロボットシステムの産業用途や他の用途でも使用し得ることことを理解するであろう。
【００２５】
システム１０は、マニピュレータ１４を備えている。一例では、マニピュレータ１４は、基部１６と複数のリンク１８とを有している。マニピュレータカート１７はマニピュレータ１４を支持するものであり、これによりマニピュレータ１４がマニピュレータカート１７に固定される。これら複数のリンク１８の組み合わせによって、マニピュレータ１４の１つ以上のアームが形成される。マニピュレータ１４は、（図１に示すような）シリアルアーム構成を有してもよく、あるいはパラレルアーム構成を有してもよい。他の例では、１つ以上のマニピュレータ１４を使用して複腕（複数アーム）構成とすることもできる。
【００２６】
マニピュレータ１４は、複数の関節（Ｊ）を備えている。隣接するリンク１８の対はそれぞれ、１つの関節（Ｊ）によって接続されている。一例によると、マニピュレータ１４は６つの関節（Ｊ１〜Ｊ６）を有しており、これらの関節によって、マニピュレータ１４は、少なくとも６自由度（６ＤＯＦ）を有している。ただし、マニピュレータ１４の自由度数は任意とすることができ、任意の適切な数の関節（Ｊ）および冗長関節（Ｊ）を有してよい。
【００２７】
複数の関節（Ｊ）の位置データを特定するため、これらの関節（Ｊ）に対して複数の位置センサ１９が配置されている。図１では、簡略化のため１つの位置センサ１９のみ示しているが、他の関節（Ｊ）に対しても同様に、他の位置センサ１９を図示できるものと理解されたい。位置センサ１９の一例として、各関節（Ｊ）の関節角度を測定するエンコーダが挙げられる。
【００２８】
各関節（Ｊ）には、関節モータ２１などのアクチュエータが、隣接するリンク１８の間に配設されている。図１では、簡略化のため１つの関節モータ２１のみ示しているが、他の関節モータ２１も図示できるものと理解されたい。各関節（Ｊ）は、１つの関節モータ２１によって能動的に駆動される。関節モータ２１は、リンク１８を回動させるように構成されている。したがって、リンク１８の位置は、関節モータ２１によって設定される。
【００２９】
各関節モータ２１は、マニピュレータ１４内部の構造フレームに取り付けることができる。一例では、関節モータ２１は、永久磁石ブラシレスモータなどのサーボモータである。ただし、関節モータ２１は、同期モータ、ブラシ付きＤＣモータ、ステッピングモータ、誘導モータなどの他の構成を有してもよい。
【００３０】
関節モータ２１は、複数の角度位置（以下、関節角度（joint angle））のうちの１つに位置決めすることができる。この関節角度とは、隣接するリンク１８のなす関節（Ｊ）の角度である。一例では、各関節モータ２１に１つの位置センサ１９を搭載してもよい。これに代えて、各関節モータ２１が駆動するリンク１８それぞれに、位置センサ１９を搭載してもよい。いくつかの例では、関節モータ２１に１つ、これに駆動されるリンク１８に１つ、の計２つの位置センサ１９を用いて関節角度を特定することもできる。この場合、例えば、関節角度や対応する伝送方式によって生じるモータ２１と関節（Ｊ）と間の位置ずれの平均値をとるなどの方法によって関節角度が特定される。
【００３１】
各関節（Ｊ）は、関節トルクを受けるように構成される。関節トルクは、関節（Ｊ）の回転またはねじれを生じさせる「力（force）」であり、加えられる力と関節（Ｊ）の旋回中心からの距離との関数である。１つ以上の関節モータ２１にトルクセンサ２７（図３）を接続して、関節（Ｊ）の関節トルクを測定してもよい。あるいは、関節モータ２１への印加電流を表す信号をコントローラが分析して関節トルクを測定してもよい。
【００３２】
マニピュレータ１４の基部１６は、基本的に、マニピュレータ１４の使用時に動かない部分である。よって、基部１６によって、マニピュレータ１４の他のコンポーネントまたはシステム１０全体の固定基準座標系（すなわち仮想ゼロ姿勢（virtual zero pose））が与えられる。一般に、マニピュレータ座標系ＭＮＰＬの原点が基部１６の固定基準点に定義される。なお、基部１６は、１つ以上のリンク１８など、マニピュレータ１４の任意の適切な部分に対して定義することができる。また、これに代えてまたは加えて、マニピュレータ１４がマニピュレータカート１７に物理的に取り付けられている場合などには、基部１６をマニピュレータカート１７に対して定義することもできる。一例では、基部１６は、関節Ｊ１の軸と関節Ｊ２の軸との交点に定義される。したがって、関節Ｊ１と関節Ｊ２は現実には可動コンポーネントであるが、関節Ｊ１の軸と関節Ｊ２の軸との交点は、マニピュレータ座標系ＭＮＰＬにおいて動かない仮想固定基準点となる。
【００３３】
ツール２０は、マニピュレータ１４に接続され、マニピュレータ１４によって動かすことができる。具体的には、マニピュレータ１４は、リンク１８のジョイントＪ１〜Ｊ６のうち１つ以上を動かして、ツール２０を基部１６に対して移動させる。ツール２０は、エンドエフェクタ２２であるか、あるいはその一部を成すものである。ツール２０は、あるモードでは生体構造と相互作用し、他のモードではオペレータによって把持され得る。マニピュレータ１４とツール２０の構成については、その一例が「Surgical Manipulator Capable of Controlling a Surgical Instrument in Multiple Modes（複数のモードで外科器具を制御可能な外科マニピュレータ）」の名称で発行されている米国特許第９１１９６５５号明細書に記載されている。同文献の開示内容は、引用することによって本明細書の一部をなすものとする。また、ツール２０は、「End Effector of a Surgical Robotic Manipulator（外科ロボットマニピュレータのエンドエフェクタ）」の名称で２０１４年３月１５日に出願されている米国特許出願公開第２０１４／０２７６９４９号に示されているツールと同様なものとすることができる。同文献の開示内容も、引用することによって本明細書の一部をなすものとする。ツール２０は、患者の生体構造を処置するように構成された外科ツールであってよく、あるいはマニピュレータ１４が用いる他の任意の種類の（外科用または非外科用）ツールとすることもできる。また、マニピュレータ１４とツール２０とは、本明細書において具体的に説明した構成以外の構成にも組み込むことができる。
【００３４】
一例では、ツール２０は、手術部位で患者１２の組織に接触するように設計されたエネルギーアプリケータ２４を備えている。エネルギーアプリケータ２４は、ドリル、鋸刃、バー、超音波振動チップなどであり得る。また、ツール２０は、ツール中心点（ＴＣＰ）を有してよい。ツール中心点は、一例では、エネルギーアプリケータ２４に定義される所定の基準点である。ツール中心点は、ツールの座標系において既知の位置を有している。一例では、ツール２０が有する球形状の特徴の中心にツール中心点を位置付けて、単点のみを追跡対象とすることが想定される。所定の直径を有するバーにツール中心点を関連付けることもできる。他の例では、ツール２０は、プローブ、切削ガイド、ガイドチューブなどの、生体構造に対して手持ち式ツールを案内するためのガイド部材であってもよい。
【００３５】
ここで図２を参照して、システム１０は、マニピュレータ１４に接続されたコントローラ３０を備えている。コントローラ３０は、マニピュレータ１４を制御してツール２０を動かすためのソフトウェア、ハードウェア、またはその両方を備えている。コントローラ３０は、マニピュレータ１４の動きを指示して、ある座標系に対するツール２０の状態（位置、向き、またはその両方）を制御する。図１に示すように、一例では、当該座標系はマニピュレータ座標系ＭＮＰＬである。マニピュレータ座標系ＭＮＰＬの原点は、マニピュレータ１４に対して任意の適切な姿勢で位置付けられる。また、マニピュレータ座標系ＭＮＰＬの各座標軸も任意に選択することができる。一般に、マニピュレータ座標系ＭＮＰＬの原点は、基部１６の固定基準点に定義される。マニピュレータ座標系ＭＮＰＬについては、その一例が「Surgical Manipulator Capable of Controlling a Surgical Instrument in Multiple Modes（複数のモードで外科器具を制御可能な外科マニピュレータ）」の名称で発行されている米国特許第９１１９６５５号明細書に記載されている。同文献の開示内容は、引用することによって本明細書の一部をなすものとする。
【００３６】
図１に示すように、システム１０は、ナビゲーションシステム３２をさらに備えることができる。ナビゲーションシステム３２は、様々なオブジェクト（対象物）の動きを追跡するように構成される。そのようなオブジェクトの例としては、ツール２０や、大腿骨Ｆ、脛骨Ｔなどの生体構造が挙げられる。ナビゲーションシステム３２は、これらのオブジェクトを追跡して、（ナビゲーション）ローカライザ座標系ＬＣＬＺに関する各オブジェクトの状態情報を収集する。本明細書に記載の変換技術を使用して、ローカライザ座標系ＬＣＬＺの座標をマニピュレータ座標系ＭＮＰＬの座標に変換したり、逆にマニピュレータ座標系ＭＮＰＬの座標をローカライザ座標系ＬＣＬＺの座標に変換したりすることができる。ナビゲーションシステム３２については、その一例が「Navigation System Including Optical and Non-Optical Sensors（光学センサと非光学センサとを備えるナビゲーションシステム）」の名称で２０１３年９月２４日に出願された米国特許第９００８７５７号明細書に記載されている。同文献の開示内容は、引用することによって本明細書の一部をなすものとする。
【００３７】
ナビゲーションシステム３２は、ナビゲーションコンピュータ３６や他の種類の制御ユニットを収容するカートアセンブリ３４を備えている。ナビゲーションインタフェースは、ナビゲーションコンピュータ３６と動作可能に通信を行うものである。ナビゲーションインタフェースは、１つ以上のディスプレイ３８を含む。ナビゲーションシステム３２は、当該１つ以上のディスプレイ３８を使用して、追跡対象のオブジェクトの相対的な状態を、オペレータに対してグラフィック表現として表示することができる。また、入力デバイス４０を使用して、ナビゲーションコンピュータ３６への情報入力や、ナビゲーションコンピュータ３６の何らかの特性に対して他の選択や制御を行うことができる。図１に示すように、入力デバイス４０は、インタラクティブなタッチパネルディスプレイを備えている。ただし、入力デバイス４０が、キーボード、マウス、マイク（音声駆動）、ジェスチャ制御装置などのうちいずれか１つ以上を備えていてもよい。そして、マニピュレータ１４とマニピュレータカート１７の少なくとも一方が、マニピュレータコンピュータ２６または他の種類の制御ユニットを収容する。コントローラ３０は、マニピュレータコンピュータ２６、ナビゲーションコンピュータ３６、およびそれらの任意の組み合わせ（ただし、これらに限定されない）を備えるシステム１０内の１つ以上の任意の適切なデバイスで実装することができる。
【００３８】
さらに、ナビゲーションシステム３２は、ナビゲーションコンピュータ３６と通信するナビゲーションローカライザ４４（以下「ローカライザ」）を備えることもできる。一例では、ローカライザ４４は光学ローカライザであり、カメラユニット４６を備えている。カメラユニット４６は、１つ以上の光学センサ５０を収容する外部ケーシング４８を有している。
【００３９】
図１に示す例では、ナビゲーションシステム３２は、１つ以上のトラッカを備えている。一例では、これらのトラッカに、ポインタトラッカＰＴ、ツールトラッカ５２、第１の患者トラッカ５４、および第２の患者トラッカ５６が含まれる。図１において、ツールトラッカ５２はツール２０にしっかりと取り付けられ、第１の患者トラッカ５４は患者１２の大腿骨Ｆにしっかりと貼り付けられ、第２の患者トラッカ５６は患者１２の脛骨Ｔにしっかりと貼り付けられる。この例では、患者トラッカ５４，５６は、骨の各部に取り付けられている。ポインタトラッカＰＴは、生体構造をローカライザ座標系ＬＣＬＺに登録するためのポインタＰに取り付けられている。当業者であれば、各トラッカ５２，５４，５６，ＰＴが、任意の適切な方法でそれぞれのコンポーネントに固定され得ることを理解するであろう。さらに、ナビゲーションシステム３２は、本システムの他のコンポーネント用のトラッカを含んでもよい。そのような他のコンポーネントとしては、マニピュレータ１４の基部１６（トラッカ５２Ｂ）、カート１７、および任意の１つ以上のリンク１８が挙げられるが、これらに限定されない。
【００４０】
これらのトラッカのうち任意の１つ以上が、能動マーカ５８を備えていてもよい。能動マーカ５８は、発光ダイオード（ＬＥＤ）を備えることができる。あるいは、トラッカ５２，５４，５６が、カメラユニット４６から放出された光を反射する反射体などの受動マーカを有していてもよい。また、本明細書に具体的に記載されていない他の適切なマーカを利用することもできる。
【００４１】
ローカライザ４４は、トラッカ５２，５４，５６を追跡して、ツール２０、大腿骨（Ｆ）および脛骨（Ｔ）の状態にそれぞれ対応する各トラッカ５２，５４，５６の状態を特定する。そして、ローカライザ４４は、これらのトラッカ５２，５４，５６の状態をナビゲーションコンピュータ３６に提供する。一例では、ナビゲーションコンピュータ３６は、トラッカ５２，５４，５６の状態を特定し、これをマニピュレータコンピュータ２６に伝達する。本明細書において、オブジェクトの状態は、追跡対象のオブジェクトの位置、向き、またはその両方、あるいは当該位置と向きの少なくともいずれかの同等物または派生物を定義するデータを含むが、これらに限定されない。例えば、オブジェクトの状態は、オブジェクトの姿勢であってよく、また、線形データや角速度データなどを含み得る。
【００４２】
添付の図面では、ナビゲーションシステム３２の一例を示しているが、ナビゲーションシステム３２は、ツール２０および患者１２を追跡するのに適した他の任意の構成を有することもできる。一例では、ナビゲーションシステム３２とローカライザ４４の少なくとも一方が超音波式である。例えば、ナビゲーションシステム３２が、ナビゲーションコンピュータ３６に接続された超音波撮像装置を備えてもよい。超音波撮像装置は、例えばツール２０や患者１２などの上述のオブジェクトのいずれかを撮像し、この超音波画像に基づいて、コントローラ３０に送信する状態信号を生成する。超音波画像は、２Ｄ画像、３Ｄ画像、またはそれらの組み合わせであってよい。そして、ナビゲーションコンピュータ３６は、ほぼリアルタイムでこれらの画像に対して画像処理を行い、オブジェクトの状態を特定することができる。超音波撮像装置は、任意の適切な構成を有することができ、図１に示すカメラユニット４６とは異なる構成を有してもよい。
【００４３】
他の例では、ナビゲーションシステム３２とローカライザ４４の少なくとも一方が無線周波数（ＲＦ）式である。例えば、ナビゲーションシステム３２が、ナビゲーションコンピュータ３６と通信するＲＦ送受信機を備えてもよい。その場合、ツール２０と患者１２の少なくともいずれかに、ＲＦ発振器またはＲＦトランスポンダを取り付けることができる。このＲＦ発振器またはＲＦトランスポンダへの通電は、受動的に行われてもよく、あるいは能動的に行われてもよい。ＲＦ送受信機は、ＲＦ追跡信号を送信し、ＲＦ発振器から受信したＲＦ信号に基づいて、コントローラ３０に送信する状態信号を生成する。ナビゲーションコンピュータ３６とコントローラ３０の少なくとも一方が、受信した各ＲＦ信号を分析して、これにオブジェクトの相対的な状態を関連付けることができる。ＲＦ信号は、任意の適切な周波数を有してよい。ＲＦ送受信機は、ＲＦ信号を使用してオブジェクトの追跡を効果的に行うことができる任意の適切な位置に配置することができる。さらに、ＲＦ発振器またはＲＦトランスポンダは、任意の適切な構造的構成を有することができ、図１に示すトラッカ５２，５４，５６の構成とは大きく異なる構成を有してもよい。
【００４４】
さらに他の例では、ナビゲーションシステム３２とローカライザ４４の少なくとも一方が電磁式である。例えば、ナビゲーションシステム３２が、ナビゲーションコンピュータ３６に接続された電磁送受信機を備えてもよい。その場合、ツール２０と患者１２に、電磁コンポーネントを取り付けることができる。電磁コンポーネントの例としては、任意の適切な磁気トラッカ、電磁トラッカ、誘導トラッカなどが挙げられる。トラッカへの通電は、受動的に行われてもよく、あるいは能動的に行われてもよい。電磁送受信機は、電磁場を生成し、各トラッカから受信した電磁信号に基づいてコントローラ３０に送信する状態信号を生成する。ナビゲーションコンピュータ３６とコントローラ３０の少なくとも一方が、受信した各電磁信号を分析して、これにオブジェクトの相対的な状態を関連付けることができる。このようなナビゲーションシステム３２の例もやはり、添付の図面に示すナビゲーションシステム３２の構成とは異なる構造的構成を有してもよい。
【００４５】
当業者であれば、ナビゲーションシステム３２とローカライザ４４の少なくとも一方が、本明細書において具体的には記載されていない他の任意の適切なコンポーネントまたは構造を有し得ることを理解するであろう。さらに、添付の図面に示すカメラ式のナビゲーションシステム３２に関して上述した技術、方法、コンポーネントのうち任意のものを、本明細書に記載のナビゲーションシステム３２の任意の他の例においても実装または提供することができる。例えば、ナビゲーションシステム３２は、慣性追跡のみを利用してもよく、あるいは複数の追跡技術の任意の組み合わせを利用してもよい。
【００４６】
図２は、コントローラ３０のソフトウェアモジュールの例を示す。ソフトウェアモジュールは、マニピュレータコンピュータ２６、ナビゲーションコンピュータ３６、またはそれらの組み合わせの上で動作する１つ以上のコンピュータプログラムの一部として、システム１０の制御を支援するためのデータ処理を行うことができる。ソフトウェアモジュールは、マニピュレータコンピュータ２６およびナビゲーションコンピュータ３６の１つ以上のプロセッサによって実行される命令を含んでいる。これらの命令は、マニピュレータコンピュータ２６、ナビゲーションコンピュータ３６、またはそれらの組み合わせ上のメモリに格納される。さらに、オペレータへの指示、オペレータとの通信、あるいはその両方を行うするためのソフトウェアモジュールが、当該１以上のプログラムの一部を構成してもよい。そのようなソフトウェアモジュールも、マニピュレータコンピュータ２６、ナビゲーションコンピュータ３６、またはそれらの組み合わせ上のメモリに格納される命令を含み得る。オペレータは、第１の入力デバイス４０、第２の入力デバイス４２、および１つ以上のディスプレイ３８と相互作用して、ソフトウェアモジュールとの通信を行う。ユーザインタフェースソフトウェアは、マニピュレータコンピュータ２６およびナビゲーションコンピュータ３６とは別体のデバイス上で実行することができる。
【００４７】
図１および図２に示すように、コントローラ３０は、データを処理してマニピュレータ１４の動きを指示するように構成されたマニピュレータコントローラ６０を備えている。一例では、図１に示すように、マニピュレータコントローラ６０は、マニピュレータコンピュータ２６上に実装される。マニピュレータコントローラ６０は、１つの送信元または複数の送信元からデータを受信し、それを処理することができる。また、コントローラ３０は、大腿骨Ｆ、脛骨Ｔ、ツール２０の少なくとも１つに関する状態データをマニピュレータコントローラ６０に伝達するためのナビゲーションコントローラ６２をさらに備えることができる。マニピュレータコントローラ６０は、ナビゲーションコントローラ６２から提供される状態データを受信、処理して、マニピュレータ１４の動きを指示する。一例では、図１に示すように、ナビゲーションコントローラ６２は、ナビゲーションコンピュータ３６上に実装される。マニピュレータコントローラ６０とナビゲーションコントローラ６２の少なくとも一方は、１つ以上のディスプレイ３８に大腿骨Ｆと脛骨Ｔの少なくとも一方とツール２０の画像を表示することにより、患者１２やツール２０の状態をオペレータに伝達することもできる。また、マニピュレータコンピュータ２６またはナビゲーションコンピュータ３６は、ディスプレイ３８に命令または要請情報を表示し、オペレータと相互作用して、マニピュレータ１４に指示を出すこともできる。
【００４８】
図２に示すように、コントローラ３０は境界生成器６６を備えている。境界生成器６６は、マニピュレータコントローラ６０上に実装され得るソフトウェアモジュールである。あるいは、境界生成器６６は、ナビゲーションコントローラ６２などの他のコンポーネント上に実装されてもよい。
【００４９】
境界生成器６６は、図４に示すような、ツール２０の動きを制限するための１つ以上の仮想境界５５を生成する。ツール２０が生体構造の標的部位と相互作用する状況では、図４に示すように、仮想境界５５を標的部位に関連付けることができる。仮想境界５５は、実際の生体構造に登録された３Ｄ骨モデルに対して固定されるように、骨モデルに対して定義することができる。この場合、仮想境界５５は、除去すべき組織を除去すべきではない組織から区切る。場合によっては、（例えば、ツールトラッカ５２を使用して）ツール２０の状態を追跡し、かつ（例えば、患者トラッカ５４，５６を使用して）生体構造の状態を追跡するナビゲーションシステム３２を使用して、仮想境界５５に対するツール２０の状態を追跡することができる。一例では、マニピュレータ１４に、より具体的にはツール２０に、反力を加えるタイミングと位置を決定するために、仮想境界５５に対するツール２０のツール中心点の状態が測定される。仮想境界５５やこのような反力に関するさらに詳細な説明については後述する。生体構造に対して仮想境界５５を生成し、この仮想境界５５と関連させてマニピュレータ１４を制御するためのシステムおよび方法については、その一例が「Techniques for Modifying Tool Operation in a Surgical Robotic System Based on Comparing Actual and Commanded states of the Tool Relative to a Surgical Site（手術部位に対する実際のツールの状態と指令されたツールの状態との比較に基づいて外科ロボットシステムにおけるツール動作を修正する技術）」の名称で２０１６年１２月１６日に仮出願された米国仮特許出願第６２／４３５２５４号明細書に説明されている。同文献の開示内容は、引用することによって本明細書の一部をなすものとする。
【００５０】
他の例では、ナビゲーションシステム３２は、ツール２０が避けるべきオブジェクトの状態を追跡するように構成される。この場合、仮想境界５５は、避けるべきオブジェクトに関連付けられる。この避けるべきオブジェクトは、ツール２０が不注意から相互作用してしまうおそれのある滅菌環境内の任意のオブジェクトであり得る。そのような避けるべきオブジェクトとしては、手術部位以外の患者の部位、外科手術スタッフ、レッグホルダ、洗浄吸引器、患者トラッカ５４，５６、開創器、他のマニピュレータ１４、照明器具などが挙げられるが、これらに限定されない。避けるべきオブジェクトに対して仮想境界５５を生成し、この仮想境界５５と関連させてマニピュレータ１４を制御するためのシステムおよび方法については、その一例が「Systems and Methods for Establishing Virtual Constraint Boundaries（仮想制限境界を確立するためのシステムおよび方法）」の名称で２０１４年３月１２日に出願されている米国特許出願第２０１４／０２７６９４３号明細書に説明されている。同文献の開示内容は、引用することによって本明細書の一部をなすものとする。
【００５１】
コントローラ３０、より具体的には、マニピュレータコントローラ６０は、図２に示すように、ツール経路生成器６８となる別のソフトウェアモジュールを実行することができる。ツール経路生成器６８は、インプラントを入れるために生体構造の各部位を除去するためなどの目的で、ツール２０が通過するべき経路を生成する。ツール経路を生成するためのシステムおよび方法については、その一例が「Surgical Manipulator Capable of Controlling a Surgical Instrument in Multiple Modes（複数のモードで外科器具を制御可能な外科マニピュレータ）」の名称で発行されている米国特許第９１１９６５５号明細書に説明されている。同文献の開示内容は、引用することによって本明細書の一部をなすものとする。
【００５２】
いくつかの例では、仮想境界５５とツール経路の少なくとも一方を、マニピュレータコンピュータ２６上やナビゲーションコンピュータ３６上ではなくオフラインで生成することができる。その場合、その後のマニピュレータコントローラ６０の実行時に、マニピュレータコントローラ６０が仮想境界５５とツール経路の少なくとも一方を利用してよい。
【００５３】
図１に示すように、マニピュレータ１４に対して、力／トルクセンサなどのセンサ７０を接続することができる。具体的には、遠位側のリンク１８とツール２０との間に力／トルクセンサ７０を取り付けることができる。力／トルクセンサ７０は、オペレータがツール２０を把持している間にツール２０が受ける力、トルク、またはその両方の関数として可変信号を出力するように構成される。これにより、力／トルクセンサ７０は、ツール２０に加えられる力、トルク、またはその両方の感知を可能にする。以下に説明するように、入力される力とトルクの少なくとも一方を使って、マニピュレータ１４の動きを制御する。一例では、力／トルクセンサ７０は６ＤＯＦセンサであり、これにより、力／トルクセンサ７０は、互いに直交する３方向の力と、これら直交する３方向の力それぞれの軸周りの３方向のトルクから成る、ツール２０に加えられる力およびトルクを表す信号を出力するように構成される。また、以下に詳述するように、これに加えてまたは代えて、ツール２０に加えられる力、トルク、またはその両方を、関節トルクを使って特定することもできる。
【００５４】
図３に示すように、コントローラ３０は、各リンク１８の動きと位置を指令するために各関節モータ２１と通信を行う。コントローラ３０は、位置センサ（例えば、エンコーダ）１９にさらに接続されており、位置センサ１９から受信する信号を使用して、各関節（Ｊ）の実際の関節角度を測定するように構成されている。コントローラ３０は、指令の関節角度まで関節モータ２１を動かす指令を、関節モータサブコントローラなどを介して関節モータ２１に与える。コントローラ３０は、関節（Ｊ）の関節トルクの測定値を示す信号を、関節モータ２１の１つ以上のトルクセンサ２８から受信することができる。コントローラ３０はさらに、ツール２０に加えられる力、トルク、またはその両方を示す信号を受信するべく、力／トルクセンサ７０に接続されている。
【００５５】
ＩＩ．アドミッタンス制御と仮想シミュレーション
一例では、コントローラ３０はアドミッタンス式コントローラである。換言すれば、コントローラ３０は、制御力と制御トルクの少なくともいずれかを特定して、マニピュレータ１４の位置を指令する。以下に、制御力や制御トルクの例を説明する。一例では、コントローラ３０は１つのアドミッタンスコントローラを単独で備え、当該１つのコントローラ３０が単独で、制御力と制御トルクの少なくともいずれかの特定と分析とを行って力を決定する。換言すれば、この例では、異なる方向の制御力や制御トルク毎に別体のアドミッタンスコントローラを用いる構成をとっていない。ただし、他の例では、コントローラさらに追加して用いることもできる。
【００５６】
アドミッタンス制御を使用していることから、本明細書に記載の技術において、いくつかの関節（Ｊ）が受動的であるという印象、つまり、（ドアジョイントのように）ユーザが加える力によって関節（Ｊ）が直接動かされるという印象を与える場合があるかもしれない。しかしながら、本明細書に記載の例では、関節（Ｊ）は能動的に駆動される。システム１０および方法は、関節（Ｊ）を能動的に駆動して、これにより、特定された制御力と制御トルクの少なくともいずれかに応じてマニピュレータ１４の制御を指令することにより、受動的な挙動を模倣する。
【００５７】
アドミッタンス制御を用いて力を特定するため、コントローラ３０は、図３に示すような構成とされて仮想シミュレーション７２を実現する。コントローラ３０は、仮想シミュレーション７２でツール２０のダイナミクスをシミュレーションする。一例では、仮想シミュレーション７２は物理エンジンを用いて実現される。この物理エンジンは、前述のコンピュータ２６，３６のいずれかの非一時メモリに格納され、コントローラ３０によって実装される実行可能ソフトウェアである。
【００５８】
仮想シミュレーションを行うため、コントローラ３０は、ツール２０を（例えば、図４に示すような）仮想剛体としてモデリングする。仮想剛体は、動的オブジェクトであり、仮想シミュレーション７２を実現するためのツール２０の剛体表現である。仮想シミュレーション７２に従い、仮想剛体は、デカルトタスク空間において６ＤＯＦの移動を自由に行う。仮想剛体の具体例については、次節で説明する。
【００５９】
仮想シミュレーション７２と仮想剛体に対しては、視覚的表現やグラフィック表現を用いずにシミュレーションなどの演算処理を行うこともできる。したがって、仮想シミュレーション７２が仮想剛体のダイナミクスを仮想的に表示することは必須ではない。換言すれば、仮想剛体のモデリングを、処理部が実行するグラフィックアプリケーション内で行う必要性はない。仮想剛体は、仮想シミュレーション７２のためにのみ存在するものである。
【００６０】
ただし場合によっては、シミュレーションによって表現された、実際のツール２０を追従する仮想ツールの動きを手術部位に表示することによって、処置の実施中に視覚的支援を提供することもできる。ただし、その場合に表示されるツール表現は、仮想シミュレーション７２の直接の結果として得られるものではない。
【００６１】
ツール２０を仮想剛体としてモデリングする方法としては、様々なものがあり得る。例えば、仮想剛体は、ツール２０の表面または内部にある特徴に対応してもよい。また、これに加えてまたは代えて、仮想剛体の一部がツール２０の延在範囲を超えて延在するように、仮想剛体を構成することもできる。仮想剛体は、エンドエフェクタ２２全体（ツール２０とエネルギーアプリケータ３２とを含む全体）を記述するものであってよく、あるいは、エネルギーアプリケータ３２を除くツール２０を記述するものであってもよい。さらに、仮想剛体がツール中心点に基づいていてもよい。さらに別の例では、仮想剛体は、ツール２０の静止位置ではなくツール２０の可動域に基づいている。例えば、ツール２０が、２つの端点間で揺動するように構成された矢状鋸刃を備える場合がある。その場合、仮想剛体を、当該２つの端点とこれらに挟まれた任意の適切な空間とを含むように静的に定義し、仮想剛体によって仮想境界５５に対するツール２０の全可動域を記述することができる。また、矢状鋸に関連して上述したモデリング技術以外にも、他の同様のモデリング技術を利用して、ツール２０の可動域を効果的に示すことができる。
【００６２】
一例では、仮想剛体は、ツール２０の質量中心を中心に生成される。ここで、「質量中心（center of mass）」とは、質量中心以外のツール２０の点に力が加えられるとともに、それ以外の動きの制約をツール２０が受けない、すなわち、マニピュレータ１４がそれ以外の動きの制約をツール２０に加えない場合にツール２０が回転する際の回転中心となる点と理解される。仮想剛体の質量中心は、ツール２０の現実の質量中心に近接していてもよいが、必ずしも一致する必要はない。仮想剛体の質量中心は経験的に特定することができる。ツール２０をマニピュレータ１４に取り付ければ、個々の施術者の好みに合わせて質量中心の位置をリセットすることができる。他の例では、仮想剛体が、重心などのツール２０の他の特徴に対応してもよい。
【００６３】
コントローラ３０は、仮想剛体に対して制御力と制御トルクの少なくともいずれかを仮想的に加えることにより、ツール２０の剛体ダイナミクスのシミュレーションを効果的に行う。図３に示すように、仮想剛体に加えられる制御力、制御トルク、またはその両方は、ユーザが加え（そして、力／トルクセンサ７０が検出し）た制御力や制御トルクであってもよく、他の挙動および運動に基づく制御力や制御トルクであってもよく、あるいはその両方であってもよい。これらの制御力や制御トルクは、その一部が関節（Ｊ）の位置を制御するために加えられ、種々の発生源に由来し得る。このような制御力や制御トルクの１つとして、境界生成器６８が生成した仮想境界とツール２０との相互作用に応じた反力（Ｆｒ）が挙げられる。このような各種の反力（Ｆｒ）を生成する技術が次節のメインテーマであり、その詳細は後述する。
【００６４】
これに加えて、経路生成器６８が提供するツール経路に沿ってツール２０の動きを制限するために、制御力や制御トルクを加えてもよい。また、さらに、ツール経路に沿ってツール２０の向きを許容範囲に収めるようにツール２０の向きを制限するために、このような制御力や制御トルクを加えてもよい。また、仮想剛体に対してバックドライブ制御力を加えることもできる。バックドライブ制御力は（例えば、マニピュレータ１４に加えられた外力に基づいて生じる）ツール経路に沿った外乱を示す。また、重力に打ち勝つように、制御力や制御トルクを仮想剛体に加えてもよい。仮想剛体に加えることのできる他の制御力として、関節の可動範囲を超えないようにする力、マニピュレータ１４のリンク１８間の特異点を回避する力、マニピュレータ１４の作業領域境界内にツール２０を維持する力などが挙げられるが、これらに限定されない。
【００６５】
仮想剛体に加えられるこれらの種々の制御力や制御トルクは、コントローラ３０によって検出や特定が行われ、方程式系に入力される。コントローラ３０がこの方程式系を解くことにより、当該方程式系を満たす（すなわち、これら種々の制御力や制御トルクおよび任意の適用可能な制約を満たす）運動学的解が得られる。コントローラ６０は、（例えば、反復法制約ソルバなどの）任意の適切なアルゴリズム命令を使ってこの計算を実行するように構成され得る。この演算は、仮想シミュレーション７２において、マニピュレータ１４の次の指令位置を決定するために実行される。つまり、マニピュレータ１４の位置決めの際には、ツール２０のダイナミクスを物理的に実現する前に、仮想シミュレーション７２がツール２０の剛体ダイナミクスのシミュレーションを行う。
【００６６】
つまり別の角度から理解すれば、以下のように考えられる。仮想シミュレーション７２の各繰り返しにおいて、その開始時に仮想剛体は第１の姿勢にある。そしてコントローラ３０が、仮想シミュレーション７２に制御力と制御トルクの少なくともいずれかを入力して、仮想シミュレーション７２において第１の姿勢にある状態の仮想剛体に対して当該制御力や制御トルクを加える。コントローラ３０に応答して、仮想剛体は次の姿勢に移行する。この「次の姿勢」は、入力された制御力や制御トルクを満たし、かつデカルト空間内で第１の姿勢とは異なる状態（すなわち、異なる位置、向き、またはその両方）を有する姿勢である。
【００６７】
一例では、シミュレーション中に仮想剛体が実際に動くことはない。換言すれば、上記の制御力や制御トルクが方程式系に入力され、計算により解が求められる。各方程式の解は、当該方程式に対応する１以上の制御力に応じた仮想剛体の理論上の動きを示すものであり得る。言い換えれば、加えられた各方向の制御力や制御トルクそれぞれに従って予想される仮想剛体の動きを記述するものである。
【００６８】
これに加えてまたは代えて、方程式系を解いている間、仮想剛体が仮想シミュレーション７２内で動いてもよい。言い換えれば、方程式系を解く処理の間、仮想剛体は、加えられた制御力や制御トルクに従って動かされ得る。また、方程式系を解いた後に、仮想シミュレーション７２において仮想剛体が次の姿勢に移行してもよい。ただし、この「次の姿勢」の表現も厳密に計算上のものであってよく、よって第１の姿勢から第２の姿勢に移行する仮想剛体の動きは起こらなくてもよい。
【００６９】
コントローラ３０は、仮想シミュレーション７２に基づいて仮想剛体の次の姿勢を見定めると、この仮想シミュレーション７２に従って関節（Ｊ）の動きを指令するように構成される。すなわち、コントローラ３０は、デカルト空間内の仮想剛体のダイナミクスを変換することにより、マニピュレータ１４の動きを指示して、関節の存在する空間におけるツール２０の状態を制御する。例えば、次の姿勢を生じさせる力はヤコビ計算器に入力され、ヤコビ計算器が、デカルト空間内の動きと関節の存在する空間内の動きとの関係を表すヤコビ行列を計算する。
【００７０】
一例では、コントローラ３０は、仮想シミュレーション７２の出力に基づいて、関節（Ｊ）に指令すべき適切な関節角度を決定するように構成される。すなわち、コントローラ３０は、各関節（Ｊ）の指令関節角度を計算する。その後、コントローラ３０は各関節（Ｊ）の関節角度を調節し、各関節モータ２１が出力するトルクの継続的な調整を行う。この出力トルクの調整は、各関節モータ２１が自身に関連付けられた関節（Ｊ）を駆動して、当該関節（Ｊ）を指令関節角度にできる限り近づけるように行われる。コントローラ３０は、各関節モータ２１が自身に関連付けられた関節（Ｊ）を指令関節角度まで駆動するように、各関節モータ２１に信号を印加するように構成される。コントローラ３０は、指令関節角度に基づいて関節（Ｊ）の位置決めを制御するための任意の適切な位置制御アルゴリズムを使用することができる。また、コントローラ３０は、能動関節（Ｊ）、すなわち、仮想シミュレーション７２の出力に基づいて動くことが想定されている関節（Ｊ）に対してのみ、指令関節角度を生成することができる。
【００７１】
いくつかの例では、図３に示すように、コントローラ３０は、各関節（Ｊ）に対して個別に（例えば、各能動関節ごとに）指令関節角度を生成する。例えば、各関節（Ｊ）に対する検討は逐次的に行われてもよく、その場合、指令関節角度の生成は、Ｊ１の指令関節角度からＪ６の指令関節角度の順に行っても、その逆の順番で行ってもよい。
【００７２】
ＩＩＩ．侵入係数に基づいて反力を計算して仮想境界を実現する技術
ここで図４〜図１８を参照し、例えばマニピュレータ座標系ＭＮＰＬにおけるツール２０と仮想境界５５との相互作用に応じて、仮想シミュレーション７２において仮想剛体に加えられる反力（Ｆｒ）を生成する技術を説明する。コントローラ３０は、仮想シミュレーション７２において仮想ボリューム７４に加えられる反力（Ｆｒ）に従ってツール２０を動かすことによりツール２０の動きを仮想境界５５に対して制限する指令を、マニピュレータ１４に与える。以下では、仮想剛体および仮想境界５５の構成および機能、ならびに反力（Ｆｒ）を計算するための技術について詳述する。本明細書における各要素の機能についての説明を通じて、これらの技術を実現する方法も完全に理解されるであろう。
【００７３】
本明細書に記載の反力（Ｆｒ）を計算する技術を実現するため、仮想剛体は図４に示すような仮想ボリューム７４として定義される。したがって、仮想剛体は、単点や２Ｄ平面の要素ではなく、モデリングで生成された３Ｄのオブジェクトである。前節で説明した仮想剛体の特徴、機能および構成が、本節で説明する仮想ボリューム７４に適用されるものと理解されたい。以下に説明する技術に基づいて明らかとなるように、仮想剛体を仮想ボリューム７４とすることにより、仮想剛体を２Ｄや１Ｄの要素とする場合と比べて、仮想ボリューム７４と仮想境界５５との間の動的な相互作用をより正確なものとすることが可能になる。
【００７４】
仮想ボリューム７４は、様々な構成を有することができる。一例では、仮想ボリューム７４は、１個の面と、０個の辺と、０個の頂点とを有している。例えば、図４〜図１８に示すように、仮想ボリューム７４は球体である。あるいは、仮想ボリューム７４は、１個の面と、０個の辺と、０個の頂点とを有する他の形状であってもよい。そのような他の形状の例としては、回転楕円体（扁長楕円体または扁平楕円体）、楕円体、（例えばドーナツ状円環体などの）環状体、またはそれらの任意の組み合わせなどが挙げられる。１個の面と、０個の辺と、０個の頂点とを有することから、仮想ボリューム７４は、その全体に滑らかな表面を有している。以下に説明する技術に基づいて明らかとなるように、面の数が１個の仮想ボリューム７４と仮想境界５５との相互作用に応じて計算される反力（Ｆｒ）は、２個以上の面を有するボリュームと仮想境界５５との相互作用に応じて計算される反力（Ｆｒ）に比べて、相互作用をより正確に反映した応答を返す可能性が高い。
【００７５】
ただし、本明細書に記載の技術を、２個以上の面を有する仮想ボリューム７４で実現することも可能である。例えば、仮想ボリューム７４は、円錐体または半球体であってもよく、あるいは、複数の高精細な面を有することによって、上述のような面の数が１個で表面が滑らかなボリュームの形（すなわち、球体、回転楕円体、楕円体、環状体）のいずれかを模した任意の形状であってもよい。本明細書に記載の技術の教示内容を考慮することにより、仮想ボリューム７４の他の例についても想到できるであろう。
【００７６】
図４に、仮想境界５５の一例を示す。当然のことながら、任意の数の仮想境界５５を利用することができる。複数の仮想境界５５を利用する場合、それらは互いに間隔を空けて離されていてもよく、または互いに一体的につながっていてもよい。また、仮想境界５５は平面状であってもよく、または多面体状などのより複雑な形状で定義されてもよい。
【００７７】
図４に示すように、仮想境界５５は、複数の多角形要素８０から成るメッシュで定義されている。当該メッシュは、隣接する頂点や辺どうしの位置を合わせて互いに隣接配置される複数の多角形要素８０から形成される。
【００７８】
各多角形要素８０は、少なくとも３つの直線の辺と少なくとも３つの角とを持つ平面形状を有する任意の多角形で形成することができる。理想的には、これら多角形の辺によって、隣接する多角形要素８０どうしの間に隙間のないメッシュを形成することができる。一例では、図４に示すように、多角形要素８０は三角形である。この三角形は、正三角形、不等辺三角形、二等辺三角形、鈍角三角形、斜角三角形、直角三角形、あるいはそれらの任意の組み合わせなどの任意の種類の三角形であってよい。他の例では、多角形要素８０を、四角形（長方形、正方形）、五角形、六角形などとすることもできる。
【００７９】
各仮想境界５５が、同種の多角形要素８０で形成されたメッシュを備えることができる。例えば、図４において、図示の多角形要素８０はいずれも三角形である。他の例では、ある仮想境界５５が備えるメッシュを形成する多角形要素８０の種類と、他の仮想境界５５が備えるメッシュを形成する多角形要素８０の種類とが異なっていてもよい。さらに他の例では、１つの仮想境界５５が備えるメッシュが、同一メッシュ内に２種類以上の多角形要素８０を備えてもよい。例えば、同一メッシュ内において、ある種類の多角形要素５０の組をある部分に配置し、他の種類の多角形要素５０の組を他の部分に配置することができる。仮想境界５５、メッシュ、および多角形要素８０は、本明細書に記載、図示する構成とは異なる構成を備えてもよいことを理解されたい。
【００８０】
上述したように、仮想シミュレーション７２において、仮想ボリューム７４は、自身に加えられる制御力や制御トルクに従って、仮想境界５５への相互作用、仮想境界５５への侵入の試み、または他の形での仮想境界５５への侵入（仮想境界５５の踏み越え）を行うことができる。仮想ボリューム７４が仮想境界５５を押すと、仮想ボリューム７４と仮想境界５５の少なくとも一方に加えられる圧縮衝撃によって仮想境界５５が押し戻される。簡略化のため、図中、仮想ボリューム７４によって仮想境界５５に加えられる（あるいは、逆に仮想境界５５によって仮想ボリューム７４に加えられる）衝撃力をＦａで示す。この衝撃力（Ｆａ）を相殺するべく、コントローラ３０は、仮想ボリューム７４に加えるべき圧縮に反発する反力（Ｆｒ）を生成する。したがって、反力（Ｆｒ）は、仮想シミュレーション７２においてコントローラ３０が満たそうと試みる方程式系の１成分である。よって、仮想シミュレーション７２時に、仮想ボリューム７４は、反力（Ｆｒ）以外にも他の複数の制御力、トルク、あるいはその両方を受け得ることを理解されたい。なお、上述したように、仮想ボリューム７４と仮想境界５５との間の相互作用は、グラフィックな存在である必要はなく、当該相互作用のパラメータや変数を方程式系に与えて解を求めることにより表現される、単に計算上の存在であってよい。
【００８１】
コントローラ３０は、仮想シミュレーション７２において仮想ボリューム７４が１つ以上の多角形要素８０に侵入する場合に、その侵入に応じた特異的な反力（Ｆｒ）を計算するように構成される。ここで、反力（Ｆｒ）は、多角形要素８０のジオメトリに対して境界が画定される仮想ボリューム７４のジオメトリの関数である侵入係数に基づいて計算される。以下の例から明らかとなるように、仮想ボリューム７４のジオメトリは２Ｄであっても３Ｄであってもよい。仮想ボリューム７４のジオメトリの境界は、多角形要素８０によって画定されている。例えば、仮想ボリューム７４のジオメトリの境界は、多角形要素８０の外周によって画定される。換言すれば、１つの多角形要素８０に対して考慮される仮想ボリューム７４のジオメトリの範囲は、その多角形要素８０の外周より内側に存在する仮想ボリューム７４のジオメトリの範囲である。以下では、侵入係数の種々の計算例について詳述する。以下の計算例は、それぞれ単独で用いることもできるほか、互いに組み合わせて用いることもできる。
【００８２】
Ａ．投影領域
図５〜図１５に示す一例によれば、コントローラ３０は、仮想ボリューム７４と多角形要素８０との交わりによって定義される投影領域９０に関係付けられた侵入係数に基づいて反力（Ｆｒ）を計算するように構成される。
【００８３】
この例において、「投影（projected）」という用語は、仮想ボリューム７４と多角形要素８０との交わりによって定義される領域９０が多角形要素８０の平坦面に対してマッピングされることを意味する数学的表現である。なお、図中、投影領域９０の面積を符号Ａprojで示す。また、いずれの図においても、投影領域９０を網掛けの領域で示している。
【００８４】
投影領域９０は、多角形要素８０によって境界を画定されている。より具体的には、投影領域９０は、多角形要素８０の外周によって境界を画定されている。換言すれば、１つの多角形要素８０に対して考慮される投影領域９０の範囲は、その多角形要素８０の外周より内側に存在する投影領域９０の範囲である。以下では、仮想ボリューム７４が複数の多角形要素８０に侵入する例について説明する。
【００８５】
本明細書の記載および図面から明らかなように、仮想ボリューム７４の定義は、仮想ボリューム７４の侵入の直線的な深さ（すなわち、仮想ボリューム７４が、多角形要素８０や仮想境界５５より内部に突き出る距離）に対して、投影領域９０が非線形に変化するように行われる。反力（Ｆｒ）は、侵入の直線的な深さの変化に合わせて変化し得るものではあるが、反力（Ｆｒ）の計算は、侵入の直線的な深さを使わずに、投影領域９０に基づいて行われる。
【００８６】
上述したように、反力（Ｆｒ）は投影領域９０に関係付けられる。一例では、反力（Ｆｒ）は投影領域９０と直接相関する。これに加えてまたは代えて、反力（Ｆｒ）が投影領域９０の面積に比例してもよい。一例では、反力（Ｆｒ）を、バネ定数ｋを有するバネとしてモデリングすることができる。バネ定数ｋにＡprojを乗じることにより、反力（Ｆｒ）を求めることができる（Ｆｒ＝ｋ×Ａproj）。ばね定数ｋは、設計構成に応じて、ツール２０の仮想境界５５への侵入にどれだけ強く反発する必要があるかを反映した任意の適切な値とすることができる。
【００８７】
一例では、反力（Ｆｒ）は、多角形要素８０の平面に垂直なベクトルとして印加される。多角形要素８０の平面に対するベクトルの位置は、多角形要素８０にマッピングされる投影領域９０の位置によって変化し得る。反力（Ｆｒ）の大きさは、投影領域９０の大きさによって変化し得る。侵入時の仮想ボリューム７４の姿勢と投影領域９０の少なくともいずれかによっては、反力（Ｆｒ）ベクトルの多角形要素８０の平面に対する角度が、垂直以外の角度となる場合もある。以下では、投影領域９０から反力（Ｆｒ）を計算する技術について説明する。
【００８８】
コントローラ３０は、仮想シミュレーション７２において仮想ボリューム７４に反力（Ｆｒ）を加えて、仮想ボリューム７４による多角形要素８０への侵入を抑制するように構成される。したがって、反力（Ｆｒ）は、衝撃力（Ｆａ）の一部またはすべてを相殺するように構成される。反力（Ｆｒ）は、仮想ボリューム７４に直接加えられてもよく、仮想境界５５に加えられてもよく、あるいはその両方に加えられてもよいことを理解されたい。いずれの場合も、仮想ボリューム７４に反力（Ｆｒ）を加えると、仮想ボリューム７４に加速度が生じ、仮想ボリューム７４の速度（したがって姿勢）が変化する。なおこの変化は、仮想ボリューム７４が仮想境界５５に作用する間持続する。仮想ボリューム７４と仮想境界５５との間の衝撃の大きさは時間とともに変化する傾向にあるため、コントローラ３０は衝撃力（Ｆａ）を最小化する複数のインパルスを生成するように構成され得る。インパルスを繰り返し生成することにより、仮想ボリューム７４に加える反力（Ｆｒ）を算出することができる。インパルスは、時間に関する反力（Ｆｒ）の積分量である。インパルスは、反力（Ｆｒ）の瞬時増加の作用と理解することもできる。
【００８９】
ここで、図５〜図７を参照する。図５〜図７は、衝撃力（Ｆａ）に従って（例えば、球体の）仮想ボリューム７４が１つの（例えば、三角形の）多角形要素８０に侵入する状況での投影領域９０を説明する例を示す。なお、説明の簡略化のため、図中、慣例的な表記に則り、力を示す矢印の長さでその力の大きさを表している。したがって、力の大きさが大きいほど長い矢印で、力の大きさが小さいほど短い矢印で示す。ただし、矢印の長さは例示的なものに過ぎず、投影領域９０とこれに対応する反力（Ｆｒ）との間の直接的な数学的相関関係を表すことを意図したものではないことを理解されたい。
【００９０】
図５〜図７は、簡略化のため３つの独立した例を示しているに過ぎず、時間とともに仮想ボリューム７４が仮想境界５５に徐々に侵入する様子を表すものではないことを理解されたい。これらの例のいずれにおいても、各反力（Ｆｒ）が衝撃力（Ｆａ）を完全に相殺することによって、仮想境界５５への侵入を排除している状態を主に示している。
【００９１】
なお当然ながら、仮想ボリューム７４の侵入は徐々に進むものと考えられる。したがって、当業者であれば、本技術が、多様な態様で繰返し生じる衝撃力（Ｆａ）に対して、仮想ボリューム７４に反力（Ｆｒ）を繰返し加えることができることを理解するはずである。つまり、ツール２０の状態が仮想境界５５に対してその後も刻々と変化するのに応じて、コントローラ３０は、反力（Ｆｒ）を繰り返し計算し、反力（Ｆｒ）を繰り返し加え、そして、仮想シミュレーション７２において仮想ボリューム７４に加える反力（Ｆｒ）に従ってツール２０を動かす指令を、マニピュレータ１４に繰り返し与えるように構成される。例えば、反力（Ｆｒ）は、仮想ボリューム７４が仮想境界５５との交わりを維持するような不完全な変位を仮想ボリューム７４に与えるものであってよい。この場合、仮想シミュレーション７２において、このような不完全変位後のツール２０の状態が追跡され、仮想ボリューム７４の姿勢が更新される。そして、この仮想ボリューム７４の姿勢の更新によって、仮想ボリューム７４と仮想境界５５との交わりが変化し（例えば、小さくなり）、よって投影領域５０が小さくなり、ひいては次の反力（Ｆｒ）の大きさが小さくなり得る。そしてこれを受けたツール２０が、さらに仮想境界５５からの不完全変位を起こし得る。このプロセスを、仮想境界５５による侵入が完全に無効化されるまで、あるいは閾値に達するまで繰り返すことができる。
【００９２】
なお、図中、具体例として多角形要素８０を仮想ボリューム７４の下方に図示しており、これに基づく向きに関する用語（「上」や「下」など）を用いて、多角形要素８０と仮想ボリューム７４との向きを説明する場合がある。このような向きに関する用語は、これらの具体例に関するものに過ぎず、本発明の主題の範囲を限定することを意図したものではない。仮想ボリューム７４が下から多角形要素８０に近づく、仮想ボリューム７４が横から多角形要素８０に近づくなどの他の向きも可能であることを理解されたい。
【００９３】
また、図５〜図７に示す例では仮想ボリューム７４が球体であるため、図示の投影領域９０は円形に基づくものとなっている。しかし、当然ながら、仮想ボリューム７４の構成や形状、姿勢によっては、仮想ボリューム７４の交わり領域、したがって投影領域９０が、図示とは異なる大きさや形状を有する場合がある。さらに、図５〜図７においては、簡略化のため、仮想ボリューム７４が多角形要素８０の領域の幾何学的中心に侵入しているという想定に基づき、投影領域９０は多角形要素８０の中心に示されている。しかしながら、仮想ボリューム７４の構成や形状、姿勢によっては、投影領域９０が多角形要素８０の中心からずれている場合がある。
【００９４】
ここで図５を参照すると、左端の図は、仮想ボリューム７４と多角形要素８０を示す側面図である。衝撃力（Ｆａ）に従って、仮想ボリューム７４の最下端部が、多角形要素８０に若干侵入している。（図５の中央の図に示す）投影領域９０は、仮想ボリューム７４と多角形要素８０との交わりを表しており、円形となっている。この例では、交わり面における仮想ボリューム７４の断面１００が投影領域９０と一致している。図５では、仮想ボリューム７４の最下端部のみが侵入しているため、投影領域９０は多角形要素８０の領域に比べて小さい。図５の右端の図は、投影領域９０に基づいて計算された反力（Ｆｒ）を示す。反力（Ｆｒ）は、多角形要素８０の平面に垂直かつ衝撃力（Ｆａ）とは反対の方向で仮想ボリューム７４に向けられた矢印で示している。図５において、反力（Ｆｒ）の矢印の大きさは、投影領域９０の相対的な面積を反映したものとなっている。
【００９５】
図６では、仮想ボリューム７４が多角形要素８０により深く侵入しており、よって、仮想ボリューム７４と多角形要素８０との間の交わりがより大きくなっている。したがって、図６（中央の図）の投影領域９０は、図５の投影領域９０よりも大きい。図６の投影領域９０は、円形に基づいている（つまり、球体の交わりに由来するものである）ものの、円形ではない。むしろ、投影領域９０の境界は多角形要素８０の外周によって画定されており、考慮される投影領域９０の範囲は、多角形要素８０の外周内に画定される投影領域９０の範囲である。交わり面における仮想ボリューム７４の断面領域１００は、多角形要素８０の境界を超えて延在しており、よって図６では境界外領域９２が存在する。これらの境界外領域９２は、衝撃を受けた多角形要素８０の反力（Ｆｒ）の計算において考慮に入れない。そして、図６の投影領域９０は図５の投影領域９０よりも大きいため、図６の右端の図において、算出された反力（Ｆｒ）を示す矢印は、図５の反力（Ｆｒ）の矢印よりも大きい。
【００９６】
図７は、仮想ボリューム７４が多角形要素８０にさらに大きく侵入している状態を示す。より詳細には、球形の仮想ボリューム７４の半分が多角形要素８０に侵入している。そして、予想される通り、図７（中央の図）の投影領域９０は、図６の投影領域９０よりも大きい。図７の状態においても、境界外領域９２は存在し、これら境界外領域９２は、反力（Ｆｒ）の計算ではやはり考慮外とされる。また、やはり予想される通り、より深く侵入することにより、境界外領域９２の面積も、図６の境界外領域９２の面積より大きくなっている。そして、図７の右端の図において、算出された反力（Ｆｒ）を示す矢印は、図６の反力（Ｆｒ）の矢印よりも大きい。当業者であれば、仮想ボリューム７４の形状のために投影領域９０が逆に減少するほど大きい深さまで侵入する状況を考慮に入れた対策を講じ得ることを理解するであろう。例えば、このような状況は、図７において球形の仮想ボリューム７４の半分を上回る部分が多角形要素８０に侵入する場合に起こり得る。そのような対策としては、任意の１つの多角形要素８０に対するある任意の侵入行為に対して複数の投影領域９０を計算してそれらを複合すること、仮想境界５５に対する変位体積（変位ボリューム）を考慮することなどを挙げることができる。
【００９７】
図５〜図７に基づいて明らかなように、投影領域９０は、侵入の直線的な深さに対して変化する。しかし、侵入する仮想体は立体形状を有しているため、多角形要素８０、仮想境界５５またはその両方に対して線形の衝撃力（Ｆａ）を加えることはなく、よって、投影領域９０は侵入の直線的な深さに対して線形には変化しない。むしろ、侵入する仮想体が加える衝撃力（Ｆａ）は、仮想ボリューム７４の立体形状の関数であるより高次の力である。したがって、投影領域９０は、このより高次の立体形状関数に従って侵入の直線的な深さに対して変化する。換言すれば、投影領域９０は、仮想ボリューム７４の変位体積（変位ボリューム）すなわち侵入体積（侵入ボリューム）を記述するものである。
【００９８】
この可変応答が起こる理由の一つとして、図示の例の仮想ボリューム７４が１つの面のみを有しており（例えば、球形であり）、互いに隣接する断面積が等しくないことが挙げられる。例えば、もし仮想ボリューム７４が立方体であり、その下面から（仮想ボリューム７４と多角形要素８０の平らな面どうしがぴったり重なるように）多角形要素８０に侵入していたとしたら、図５〜図７の投影領域９０は互いに等しくなる。よって、この場合、図５〜図７に示す例において、本明細書に記載の技術の異なる反力（Ｆｒ）の根拠となる侵入の直線的な深さが相対的に異なっているにも係わらず、反力（Ｆｒ）が同じになってしまう。
【００９９】
したがって、仮想ボリューム７４の侵入に応じて計算される反力（Ｆｒ）は、侵入の直線的な深さに対して可変的な応答を示す。ただし、反力（Ｆｒ）は、侵入の直線的な深さの変化に合わせて変化し得るものではあるが、実際の反力（Ｆｒ）の計算は、投影領域９０に基づいて行われる。反力（Ｆｒ）の計算が、単に、仮想ボリューム７４が多角形要素８０や仮想境界５５より内部に突き出る直線的な深さのみに基づいて行われることはない。
【０１００】
図８および図９に、投影領域９０を計算するための技術の例を示す。上述したように、ある多角形要素８０に対する投影領域９０は、当該多角形要素８０内の網掛けの領域で示しており、多角形要素８０の延在範囲を超えて延在する境界外領域９２は含まない。図８では、具体例として、三角形の多角形要素８０に対する投影領域９０の計算を示している。
【０１０１】
図８において、投影領域９０は、球形の仮想ボリューム７４との交わりによって得られるものであり、よって、円形に基づく形状を有する。図８に示す円は、三角形の多角形要素８０との交わり面における仮想ボリューム７４の断面領域１００を表している。この円は、中心が三角形の多角形要素８０の幾何学的中心からずれており、交点９４，９６で多角形要素８０の下辺と交わっている。その結果、断面領域１００は下辺によって一部が切り取られて、図示の境界外領域９２が生じる。中心点（ｃ）は、仮想ボリューム７４の断面領域１００の中心であり、半径（ｒ）は断面領域１００の半径である。
【０１０２】
この例では、当該円と多角形要素８０との重なりを特定することによって、投影領域９０を計算する。具体的には、図８の状況では、円と多角形要素８０との交わりが、三角形の多角形要素８０の１個の辺にのみ係っている（頂点には係っていない）ため、投影領域９０の計算は、円と多角形要素８０との重なりを三角形領域Ａtriと扇形領域Ａsectorとに分割することにより行われる。三角形領域Ａtriは、中心点（ｃ）、交点９４，９６の３点で定義される。三角形領域Ａtriの底辺（ｂ）は、交点９４，９６間と定義され、三角形領域Ａtriの高さ（ｈ）は、中心点（ｃ）と底辺（ｂ）の間の距離と定義される。よって、三角形領域Ａtriの面積は、式「Ａtri＝１／２ｂｈ」で計算される。扇形領域Ａsectorの面積は、扇形の中心角（θ）に基づく。この中心角（θ）は、中心点（ｃ）と各交点９２，９４との間にそれぞれ定義される三角形領域Ａtriの２本の斜辺の間に定義される、中心点（ｃ）を中心とする角である。よって、扇形領域Ａsectorの面積は、式「Ａsector＝πｒ２×θ／３６０（°）」で計算される。なお、この例では、円の中心点（ｃ）が多角形要素８０の内部に位置している。よって、扇形領域Ａsectorも多角形要素８０の内部に位置する。図８に示すように、三角形領域Ａtriと扇形領域Ａsectorとで網掛けの領域全体を占めるため、ＡtriとＡsectorとの和を求めることによって投影領域Ａprojが計算される。
【０１０３】
図９は、三角形の多角形要素８０と仮想ボリューム７４の円形断面１００とに基づく投影領域Ａprojの計算を示すさらに別の例である。図９の状況でも、円形断面１００と多角形要素８０との交わりは、三角形の多角形要素８０の１個の辺にのみ係っている（頂点には係っていない）。ただし、この例では、円形断面１００の中心点（ｃ）は多角形要素８０の外部に位置している。その結果、三角形領域Ａtri全体と扇形領域Ａsectorの一部が多角形要素８０の外部に位置することになる。したがって、図８の投影領域９０は、三角形領域Ａtriと扇形領域Ａsectorとの和を求めることによって計算されるが、図９の投影領域９０は、扇形領域Ａsectorから三角形領域Ａtriを引くことによって計算される。よって、図９の投影領域９０は図８の投影領域９０よりも小さい。
【０１０４】
繰り返すが、図８および図９に係る計算は、三角形の多角形要素８０と仮想ボリューム７４の円形断面１００だけに特有のものではない。円形と多角形要素８０との交わりが三角形の多角形要素８０の１個の辺にのみ係り、その頂点には係らないものであれば、そのような交わりにも適用することができる。当然ながら、投影領域９０、したがって投影領域９０を計算するための計算は、多角形要素８０のジオメトリ、仮想ボリューム７４のジオメトリ、およびこれら両ジオメトリの相対的な位置関係に応じて異なり得る。また、図示の例において、投影領域９０の計算は、仮想ボリューム７４の円形断面１００と交わる三角形の多角形要素８０の辺の数（０〜３本）や頂点の数（０〜３個）に応じて異なる。投影領域９０の幾何学的計算については、本明細書に記載の計算方法以外にも、任意の幾何学的構成や状況に応じて想到することができるであろう。
【０１０５】
ここで、図１０〜図１２を参照する。図１０〜図１２は、仮想シミュレーション７２において仮想ボリューム７４が複数の多角形要素（例えば、８０Ａ〜８０Ｆ）に同時に侵入する場合に、その侵入に応じて複数の反力（例えば、ＦｒＡ〜ＦｒＦ）が生成される例を示す。簡略化のため、図１０〜図１２の例においても引き続き、三角形の多角形要素８０と仮想ボリューム７４の円形断面１００を例に説明を行う。
【０１０６】
図１０では、球形の仮想ボリューム７４が、多角形要素８０Ａ〜８０Ｆで構成される仮想境界５５に侵入している。なお、この例では、多角形要素８０Ａ〜８０Ｆが同一平面上にあると想定している。当然ながら、仮想境界５５のメッシュは、多角形要素８０Ａ〜８０Ｆ以外にもさらに多角形要素を備えてもよく、種々の多角形要素８０を、非平面状の配置となる角度で互いに隣接して配置することもできる。図５〜図９では、ただ１つの多角形要素８０との交わりについて図示、説明したが、図１０では、仮想ボリューム７４の円形断面１００は、多角形要素８０Ａ〜８０Ｆが共有する中心頂点で多角形要素８０Ａ〜８０Ｆと交わる。したがって、各多角形要素８０Ａ〜８０Ｆにマッピングされる投影領域９０Ａ〜９０Ｆは互いに等しい。簡略化のため、この例では、投影領域９０Ａ〜９０Ｆが互いに等しいものとして説明するが、多角形要素８０Ａ〜８０Ｆの間で投影領域９０の形状は異なっていてもよい（あるいは投影領域９０がないものがあってもよい）ことを理解されたい。反力（ＦｒＡ〜ＦｒＦ）は、多角形要素８０Ａ〜８０Ｆごとに計算される。反力（ＦｒＡ〜ＦｒＦ）は、仮想ボリューム７４と多角形要素８０Ａ〜８０Ｆとの交わりによって定義される投影領域９０Ａ〜９０Ｆに、それぞれ関係している。投影領域９０Ａ〜９０Ｆの境界もやはり、多角形要素８０Ａ〜８０Ｆによってそれぞれ画定される。したがって、この例では、反力（ＦｒＡ〜ＦｒＦ）も互いに等しい。
【０１０７】
図１０において、コントローラ３０は、複数の反力（ＦｒＡ〜ＦｒＦ）を仮想ボリューム７４に同時に加えて、仮想ボリューム７４による仮想境界５５への侵入を相殺するように構成される。図１０の具体例では、複数の反力（ＦｒＡ〜ＦｒＦ）が個別に、仮想ボリューム７４に加えられる。例えば、各多角形要素８０が、仮想ボリューム７４による侵入に対して個別に反応してもよい。反力（ＦｒＡ〜ＦｒＦ）は、それぞれの多角形要素８０Ａ〜８０Ｆに対応する位置に従ってそれぞれ加えられる。なお、側面図の限界のため、反力（ＦｒＡ〜ＦｒＦ）の位置が、図１０の側面図に示す位置とは若干異なる場合がある。
【０１０８】
図１１の状況は、コントローラ３０が複数の反力（ＦｒＡ〜ＦｒＦ）を合成して、合成反力（ＦｒTotal）を生成する点を除き、図１０の状況と同様である。コントローラ３０は、１つの合成反力（ＦｒTotal）を仮想ボリューム７４に一回で加えて、仮想ボリューム７４による仮想境界５５への侵入を相殺するように構成される。合成反力（ＦｒTotal）の大きさは、複数の反力（ＦｒＡ〜ＦｒＦ）の大きさの総和を求めることにより計算することができる。よって、この例の場合、合成反力（ＦｒTotal）の大きさは、１つの反力（ＦｒＡ〜ＦｒＦ）の大きさの６倍となる。合成反力（ＦｒTotal）の位置は、複数の反力（ＦｒＡ〜ＦｒＦ）の位置を平均化する、つまりそれらの位置の中心を求めることにより計算できる。よって、この例の場合、合成反力（ＦｒTotal）の位置は、多角形要素８０Ａ〜８０Ｆ間で共有される中心頂点と一致する。また、この例では、多角形要素８０Ａ〜８０Ｆが同一平面上にあると想定しているため、合成反力（ＦｒTotal）の方向は、当該平面に垂直かつ衝撃力（Ｆａ）とは反対の方向となる。なお、合成反力（ＦｒTotal）の大きさ、位置、および方向は、本明細書に記載の方法以外の方法に従って計算することもできる。
【０１０９】
いくつかの例では、コントローラ３０は、仮想ボリューム７４が行う複数の多角形要素８０に対する任意の同時侵入行為において、合成反力が一定となるように、各反力（Ｆｒ）に重み係数を掛けることができる。換言すれば、コントローラ３０は、アフィン結合アルゴリズムを利用して、これらの重み係数の総和が一定となるように重み係数を操作することができる。例えば、重み係数は、仮想境界５５が平坦面である場合に総和が１となるように定義することができる。また、２つの仮想境界５５が互いに垂直またはほぼ垂直である場合に総和が１より大きくなるように、重み係数を定義することができる。さらに、仮想境界の端部では総和が１未満となるように、重み係数を定義することができる。この技術は、これらの各状況に応じて、仮想ボリューム７４の侵入に対して予測可能かつ滑らかな応答を与え、よってユーザにとって自然な応答を与えることに役立つものである。言い換えれば、ユーザに予想外の力の増大や減少を感じさせてしまうことはない。
【０１１０】
図１２では、球形の仮想ボリューム７４が、多角形要素８０Ａ〜８０Ｄで構成される仮想境界５５に侵入している。図１０および図１１とは異なり、図１２の仮想ボリューム７４の円形断面１００と各多角形要素８０Ａ〜８０Ｄとの交わりは互いに等しくない。むしろ、多角形要素８０Ａにマッピングされる投影領域９０Ａは、多角形要素８０Ｂ〜８０Ｄにマッピングされる投影領域９０Ｂ〜９０Ｄに比べて大きい。一方、投影領域９０Ｂ〜９０Ｄは互いに等しい。反力（ＦｒＡ〜ＦｒＦ）は、多角形要素８０Ａ〜８０Ｆごとに計算される。投影領域９０Ａが投影領域９０Ｂ〜９０Ｄに比べて大きいため、投影領域９０Ａに関係する反力（ＦｒＡ）も、投影領域９０Ｂ〜９０Ｄに関係する各反力（ＦｒＢ〜ＦｒＤ）に比べて大きくなる。やはり、反力（ＦｒＡ〜ＦｒＤ）は、それぞれの多角形要素８０Ａ〜８０Ｄに対応する位置に従ってそれぞれ加えられる。なお、側面図の限界のため、反力（ＦｒＡ〜ＦｒＤ）の位置が、図１２の側面図に示す位置とは若干異なる場合がある。
【０１１１】
図１２において、侵入の直線的な深さは多角形要素８０Ａ〜８０Ｄの間で同一であり、よって本明細書に記載の投影領域技術の動的な応答をさらに例示するものである。ただし、多角形要素８０Ａの投影領域９０Ａは多角形要素８０Ｂ〜８０Ｄの各投影領域９０Ｂ〜９０Ｄに比べて大きいため、投影領域９０Ａに関係する反力（ＦｒＡ）は他の各反力（ＦｒＢ〜ＦｒＤ）に比べて大きく、これは、まさにこの特定の仮想ボリューム７４の侵入によって与えられる衝撃を正確に記述したものである。したがって、この例は、投影領域９０、したがって反力（Ｆｒ）が侵入の直線的な深さに対して線形には変化しないことを示すさらなる例である。
【０１１２】
以上説明した例は、多角形要素８０が同一平面上にある状況を説明するものであった。しかしながら、本明細書に記載の技術は、多角形要素８０が異なる平面上にある状況にも同様に適用することができる。このような状況の一例として、仮想ボリューム７４が多角形要素８０の成す角に衝突する場合が挙げられる。例えば、図１３〜図１５は、衝撃力（Ｆａ）に従って（例えば、球体の）仮想ボリューム７４が２つの（例えば、正方形の）多角形要素８０Ａ，８０Ｂに侵入する状況で投影領域９０を使用する場合を説明する。具体的には、２つの多角形要素８０Ａ，８０Ｂは、仮想境界５５の出隅角を成すものである。
【０１１３】
図１３〜図１５は、簡略化のため３つの独立した例を示しているに過ぎず、時間とともに仮想ボリューム７４が仮想境界５５に徐々に侵入する様子を表すものではないことを理解されたい。これらの例のいずれにおいても、各反力（Ｆｒ）が衝撃力（Ｆａ）を完全に相殺することによって、仮想境界５５による侵入を排除している状態を主に示している。なお当然ながら、仮想ボリューム７４の侵入は徐々に進むものと考えられる。したがって、当業者であれば、本技術が、多様な態様で繰返し生じる衝撃力（Ｆａ）に対して、仮想ボリューム７４に反力（Ｆｒ）を繰返し加えることができることを理解するはずである。
【０１１４】
ここで図１３を参照する。図１３は、仮想ボリューム７４と多角形要素８０Ａ，８０Ｂとを示す側面図を含む。図１３はさらに、多角形要素８０Ａの上面図と、多角形要素８０Ｂの正面図も含む。仮想ボリューム７４は、多角形要素８０Ａに侵入するが、多角形要素８０Ｂには侵入しない。投影領域９０Ａは円形であり、仮想ボリューム７４と多角形要素８０Ａとの交わりを表す。反力（ＦｒＡ）は、投影領域９０Ａに基づいて計算され、衝撃力（Ｆａ）とは反対の方向に仮想ボリューム７４に加えられる。この例では、仮想ボリューム７４による侵入位置のため、投影領域９０Ａは多角形要素８０Ａの正方形の中心にマッピングされる。したがって、反力（ＦｒＡ）は、多角形要素８０Ａの中心位置、よって、侵入する仮想ボリューム７４の中心位置に加えられる。さらに、投影領域９０Ａは、仮想ボリューム７４の断面領域１００全体である。したがって、反力（ＦｒＡ）は比較的強い大きさで加えられる。
【０１１５】
図１４の例は、仮想ボリューム７４が、出隅角から多角形要素８０Ａ，８０Ｂの両方に侵入している状態を示す。侵入位置のため、多角形要素８０Ａ，８０Ｂにマッピングされる各投影領域９０Ａ，９０Ｂは、いずれも仮想ボリューム７４の断面領域１００の一部に過ぎない。投影領域９０Ａに基づいて計算される反力（ＦｒＡ）は、多角形要素８０Ａへの衝撃とは反対の方向で仮想ボリューム７４に加えられる。一方、投影領域９０Ｂに基づいて計算される反力（ＦｒＢ）は、これとは異なる方向つまり、多角形要素８０Ｂへの衝撃とは反対の方向で仮想ボリューム７４に加えられる。衝撃の位置に基づき、投影領域９０Ａは多角形要素８０Ａの右端にマッピングされ、投影領域９０Ｂは多角形要素８０Ｂの上端にマッピングされる。したがって、反力（ＦｒＡ）は、多角形要素８０Ａの右端近くの位置に加えられ、反力（ＦｒＢ）は、多角形要素８０Ｂの上端近くの位置に加えられる。さらに、投影領域９０Ａ，９０Ｂはいずれも仮想ボリューム７４の断面領域１００の一部に過ぎないため、各反力（ＦｒＡ），（ＦｒＢ）は、図１３で加えられる反力（ＦｒＡ）の大きさよりも小さい大きさでそれぞれ加えられる。図１３と図１４で侵入の直線的な深さは同一ではあるにも関わらす、このような相違がある。
【０１１６】
図１５では、仮想ボリューム７４が、図１４よりさらに小さい部分で、出隅角から多角形要素８０Ａ，８０Ｂの両方に侵入している。また、図１５の侵入の直線的な深さは、図１３および図１４よりも小さい。また、図１４と比較すると、図１５の投影領域９０Ａ，９０Ｂの方が小さく、また図１５の反力（ＦｒＡ）の方が、多角形要素８０Ａの右端により近い位置で加えられ、図１５の反力（ＦｒＢ）の方が、多角形要素８０Ｂの上端により近い位置で加えられる。さらに、各反力（ＦｒＡ），（ＦｒＢ）は、図１４で加えられる反力（ＦｒＡ），（ＦｒＢ）の大きさよりも小さい大きさでそれぞれ加えられる。
【０１１７】
これらの例から明らかなように、投影領域９０を使用して、出隅角での反力（ＦｒＡ），（ＦｒＢ）を計算する技術により、仮想境界５５に対して自然な応答が得られる。例えば、図１３では１つの多角形要素８０Ａに侵入し、図１４では出隅角から２つの多角形要素８０Ａ，８０Ｂに侵入しているが、本技術は、反力（Ｆｒ）を徐々に増加させることができる。言い換えれば、投影領域９０の増加を反力（Ｆｒ）の増加に換算し、投影領域９０の減少を反力（Ｆｒ）の減少に換算する。これにより、本技術は、仮想境界５５との衝突時にツール２０の突発的または不自然な動きを引き起こす反力（Ｆｒ）の不連続な急変を回避する。つまり、図１３の投影領域９０Ａは、図１４の投影領域９０Ａ，９０Ｂを足し合わせたものとほぼ同じ面積であるため、仮想ボリューム７４が同じ直線的な深さで実質２重に侵入を行っても、滑らかな応答が与えられる。換言すれば、投影領域９０Ａ，９０Ｂを使ってそれぞれの反力（ＦｒＡ），（ＦｒＢ）を計算することにより、ツール２０が出隅角に沿って動く間に予想外のキックバックを起こしてしまうことが抑制される。したがって、本明細書に記載の技術は、表面モデリングが有する、角に関する問題を解決するものである。また、本技術は、非平面状に配置された複数の多角形要素８０に同時に仮想ボリューム７４が侵入する他の任意の例にも完全に適用することができる。そのような例としては、入隅角、山部、谷部などが挙げられるが、これらに限定されない。
【０１１８】
Ｂ．投影弧
図１６および図１７に示す他の例によれば、コントローラ３０は、投影弧２００に関係付けられた侵入係数に基づいて反力（Ｆｒ）を計算するように構成される。投影弧２００は、仮想ボリューム７４と多角形要素８０が交わる時に多角形要素８０のジオメトリによって境界を画定される仮想ボリューム７４の断面領域１００が有するすべての円弧２０２の組み合わせで定義される。
【０１１９】
なお、「投影（projected）」という用語は、仮想ボリューム７４と多角形要素８０との交わりによって定義される円弧２０２が多角形要素８０の平坦面に対してマッピングされることを意味する数学的表現である。
【０１２０】
投影弧２００は、多角形要素８０によって境界を画定されている。より具体的には、投影弧２００は、多角形要素８０の外周によって境界を画定されている。換言すれば、１つの多角形要素８０に対して考慮される投影弧２００の範囲は、その多角形要素８０の外周より内側に存在する投影弧２００の範囲である。
【０１２１】
仮想ボリューム７４の定義は、仮想ボリューム７４の侵入の直線的な深さ（すなわち、仮想ボリューム７４が、多角形要素８０や仮想境界５５より内部に突き出る距離）に対して、投影弧２００が非線形に変化するように行われる。反力（Ｆｒ）は、侵入の直線的な深さの変化に合わせて変化し得るものではあるが、反力（Ｆｒ）の計算は、侵入の直線的な深さを使わずに、投影弧２００に基づいて行われる。
【０１２２】
この例では、反力（Ｆｒ）は投影弧２００に関係付けられる。一例では、反力（Ｆｒ）は投影弧２００と直接相関する。これに加えてまたは代えて、反力（Ｆｒ）が投影弧２００の面積に比例してもよい。
【０１２３】
反力（Ｆｒ）は、多角形要素８０の平面に垂直なベクトルとして印加することができる。多角形要素８０の平面に対するベクトルの位置は、多角形要素８０にマッピングされる投影弧２００の位置によって変化し得る。反力（Ｆｒ）の大きさは、投影弧２００の大きさによって変化し得る。侵入時の仮想ボリューム７４の姿勢と投影弧２００の少なくともいずれかによっては、反力（Ｆｒ）ベクトルの多角形要素８０の平面に対する角度が、垂直以外の角度となる場合もある。以下では、投影弧２００から反力（Ｆｒ）を計算する技術について説明する。
【０１２４】
比較のため、図１６および図１７では、上述の投影領域９０の計算の説明のために使用した図８および図９に示したものと同一の幾何学図形の例を使って、投影弧２００の計算を説明している。
【０１２５】
図１６に、三角形の多角形要素８０との交わり面における仮想ボリューム７４の断面領域１００を示す。断面領域１００の円は、中心が三角形の多角形要素８０の幾何学的中心からずれており、交点９４，９６で多角形要素８０の下辺と交わっている。その結果、断面領域１００は下辺によって一部が切り取られる。中心点（ｃ）は、仮想ボリューム７４の断面領域１００の中心であり、半径（ｒ）は断面領域１００の半径である。
【０１２６】
この例では、投影弧２００は、仮想ボリューム７４と多角形要素８０が交わる時に多角形要素８０のジオメトリによって境界を画定される仮想ボリューム７４の断面領域１００が有するすべての円弧２０２の組み合わせで定義される。換言すれば、投影弧２００の計算は、多角形要素８０の領域内にある断面領域１００の外周となる円弧２０２を特定することにより行われる。具体的には、図１６の状況では、円と多角形要素８０との交わりが、三角形の多角形要素８０の１個の辺にのみ係っている（頂点には係っていない）ため、投影弧２００の計算は、断面領域１００を、部分円弧２０２ａと部分円弧２０２ｂとに分割することにより行われる。ここで、部分円弧２０２ａ，２０２ｂは、それぞれ扇形の中心角θ１，θ２で定義される。なお、この例では、断面領域１００の中心点（ｃ）が多角形要素８０の内部に位置している。よって扇形の中心角θ１，θ２は、この中心点（ｃ）を中心に交点９４，９６の間にそれぞれ定義され、２つの角度を足すと３６０度に等しくなる。図示の通り、扇形の中心角θ１に基づく部分円弧２０２ａは、その全体が多角形要素８０の内部にあり、境界を多角形要素８０によって画定されている。一方、扇形の中心角θ２に基づく部分円弧２０２ｂは、その全体が多角形要素８０の外部にあり、多角形要素８０の境界外にある。ここで、投影弧は、式「Arcproj＝θｎ／３６０」で計算することができる。式中、角度θｎは、多角形要素８０によって境界が画定される部分円弧２０２をもたらす扇形の中心角である。よって、図１６の例では、多角形要素８０によって境界が画定される部分円弧２０２ａがθ１によって決まるため、Arcproj＝θ１／３６０である。なお上式の分子に、２つ以上の扇形の中心角を入力して、Arcproj＝（θｎ＋θｍ＋…）／３６０とすることで、これら複数の扇形の中心角の総和から投影弧２００を導き出すこともできる。また、上式の値に乗算やスケーリングなどの修正を加えて、投影弧２００から得られる結果を標準化することもできる。また例えば、投影弧２００は、部分円弧２０２に対応する扇形の中心角の角度ではなく、部分円弧２０２の長さに基づくものであってもよい。
【０１２７】
図１７は、三角形の多角形要素８０と仮想ボリューム７４の円形断面１００とに基づく投影弧２００の計算を示すさらに別の例である。図１７の状況でも、円形断面１００と多角形要素８０との交わりは、三角形の多角形要素８０の１個の辺にのみ係っている（頂点には係っていない）。ただし、この例では、円形断面１００の中心点（ｃ）は多角形要素８０の外部に位置している。投影弧２００の計算は、上述と同様の方法で行われる。ただし、図１６に比べて、扇形の中心角θ１が小さくなり、扇形の中心角θ２が大きくなっている。よって、図１６に比べて、扇形の中心角θ１によって決まる部分円弧２０２ａが短くなり、扇形の中心角θ２によって決まる部分円弧２０２ｂが長くなっている。ここで、投影弧２００は、多角形要素８０内に画定される部分円弧２０２ａに基づく。したがって、図１６と図１７を比較すると、図１７に示す例は、仮想ボリューム７４による侵入の衝撃がより小さい場合に、投影弧２００がより小さくなること、一般化すると、反力（Ｆｒ）が小さくなることを示している。
【０１２８】
繰り返すが、図１６および図１７に係る計算は、三角形の多角形要素８０と仮想ボリューム７４の円形断面１００だけに特有のものではない。円形と多角形要素８０との交わりが三角形の多角形要素８０の１個の辺にのみ係り、その頂点には係らないものであれば、そのような交わりにも適用することができる。当然ながら、投影弧２００、したがって投影弧２００を計算するための計算は、多角形要素８０のジオメトリ、仮想ボリューム７４のジオメトリ、およびこれら両ジオメトリの相対的な位置関係に応じて異なり得る。また、図示の例において、投影弧２００の計算は、仮想ボリューム７４の円形断面１００と交わる三角形の多角形要素８０の辺の数（０〜３本）や頂点の数（０〜３個）に応じて異なる。そして、仮想ボリューム７４の断面領域１００が円形ではなく、楕円形などである場合には、より複雑な部分円弧２０２を計算することができる。投影弧２００の幾何学的計算については、本明細書に記載の計算方法以外にも、任意の幾何学的構成や状況に応じて想到することができるであろう。
【０１２９】
図１６および図１７に基づいて明らかなように、投影弧２００は、侵入の直線的な深さに対して変化する。しかし、侵入する仮想体は立体形状を有しているため、多角形要素８０、仮想境界５５またはその両方に対して線形の衝撃力（Ｆａ）を加えることはなく、よって、投影弧２００は侵入の直線的な深さに対して線形には変化しない。むしろ、侵入する仮想体が加える衝撃力（Ｆａ）は、仮想ボリューム７４の立体形状の関数であるより高次の力である。したがって、投影弧２００は、このより高次の立体形状関数に従って侵入の直線的な深さに対して変化する。換言すれば、投影弧２００は、多角形要素２０２の平面内にある部分円弧２０２をとらえることにより、仮想ボリューム７４の変位体積（変位ボリューム）すなわち侵入体積（侵入ボリューム）を記述するものである。ここでも、投影弧２００が可変的である理由の一つとして、図１６および図１７に示す例の仮想ボリューム７４が１つの面のみを有しており（例えば、球形であり）、互いに隣接する断面積が等しくないことが挙げられる。
【０１３０】
したがって、仮想ボリューム７４の侵入に応じて計算される反力（Ｆｒ）は、侵入の直線的な深さに対して可変的な応答を示す。ただし、反力（Ｆｒ）は、侵入の直線的な深さの変化に合わせて変化し得るものではあるが、実際の反力（Ｆｒ）の計算は、これらの例では投影弧２００に基づいて行われる。反力（Ｆｒ）の計算が、単に、仮想ボリューム７４が多角形要素８０や仮想境界５５より内部に突き出る直線的な深さのみを用いて行われることはない。
【０１３１】
図５〜図７に関連して投影領域９０について説明した例や他の可能例は、投影弧２００についても十分理解できると思われるため、ここではその説明を省略して簡略化する。なお、当然ながら、当業者であれば、投影弧２００に基づいて計算した反力（Ｆｒ）が、投影領域９０に基づいて計算した反力（Ｆｒ）とは異なる可能性があることを理解するであろう。さらに、投影弧２００を繰返し計算した結果を基に、反力（Ｆｒ）を繰返し加えることも十分想到されるであろう。
【０１３２】
さらに、図１０〜図１２では、仮想ボリューム７４が複数の多角形要素（例えば、８０Ａ〜８０Ｆ）に同時に侵入する場合に、その侵入に応じて複数の反力（例えば、ＦｒＡ〜ＦｒＦ）を投影領域９０を使って計算、生成する例を示したが、これらの例についても、投影弧２００を使用した本明細書に記載の技術にあてはめて理解することが十分可能である。要点としては、各反力（ＦｒＡ〜ＦｒＦ）は、各多角形要素８０Ａ〜８０Ｆによって境界が画定された投影弧２００に関係付けられる。投影弧２００を使う場合でも、反力（Ｆｒ）は、各多角形要素８０に対して個別に加えてもよく、あるいは合成して合成反力（ＦｒTotal）として加えることもできる。
【０１３３】
図１３〜図１５において投影領域９０に関して説明した、多角形要素８０が異なる平面上にある場合の技術についても、投影弧２００を使った方法にも同様に適用することができる。例えば、投影弧２００を使用して出隅角での反力（ＦｒＡ），（ＦｒＢ）を計算しても同様に、仮想境界５５に対して自然な応答が得られる。ここで、投影弧２００の増加は反力（Ｆｒ）の増加に換算され、投影弧２００の減少は反力（Ｆｒ）の減少に換算される。これにより、投影弧２００を使った技術も、仮想境界５５との衝突時にツール２０の突発的または不自然な動きを引き起こす反力（Ｆｒ）の不連続な急変を回避する。よって、ツール２０が出隅角に沿って動く間に予想外のキックバックを起こしてしまうことが抑制される。したがって、本明細書に記載の投影弧２００を使った技術は、表面モデリングが有する、角に関する問題を解決するものである。また、投影弧２００を使った技術は、非平面状に配置された複数の多角形要素８０に同時に仮想ボリューム７４が侵入する他の任意の例にも完全に適用することができる。そのような例としては、入隅角、山部、谷部などが挙げられるが、これらに限定されない。
【０１３４】
Ｃ．変位ボリューム
図１８に示すさらに他の例によれば、コントローラ３０は、仮想ボリューム７４のうち多角形要素８０に侵入する部分の体積で定義される変位ボリューム３００に関係付けられた侵入係数に基づいて反力（Ｆｒ）を計算するように構成される。ここで、変位ボリューム３００は、多角形要素のジオメトリによって境界が画定される。変位ボリューム３００は、仮想ボリューム７４と多角形要素８０が交わる時に多角形要素８０のジオメトリによって境界を画定される仮想ボリューム７４のすべての立体的な部分の組み合わせで定義される。
【０１３５】
変位ボリューム３００は、多角形要素８０によって境界を画定されている。より具体的には、変位ボリューム３００は、多角形要素８０の外周によって境界を画定されている。換言すれば、１つの多角形要素８０に対して考慮される変位ボリューム３００の範囲は、その多角形要素８０の外周より内側に存在する変位ボリューム３００の範囲である。これは、変位ボリューム３００がデカルト空間内において多角形要素８０の平面の上方に存在する場合、下方に存在する場合のいずれにもあてはまる。
【０１３６】
仮想ボリューム７４の定義は、仮想ボリューム７４の侵入の直線的な深さ（すなわち、仮想ボリューム７４が、多角形要素８０や仮想境界５５より内部に突き出る距離）に対して、変位ボリューム３００が非線形に変化するように行われる。反力（Ｆｒ）は、侵入の直線的な深さの変化に合わせて変化し得るものではあるが、反力（Ｆｒ）の計算は、侵入の直線的な深さを使わずに、変位ボリューム３００に基づいて行われる。
【０１３７】
この例では、反力（Ｆｒ）は変位ボリューム３００に関係付けられる。一例では、反力（Ｆｒ）は変位ボリューム３００と直接相関する。これに加えてまたは代えて、反力（Ｆｒ）が変位ボリューム３００の体積に比例してもよい。
【０１３８】
反力（Ｆｒ）は、多角形要素８０の平面に垂直なベクトルとして印加することができる。多角形要素８０の平面に対するベクトルの位置は、多角形要素８０に対する変位ボリューム３００の位置によって変化し得る。反力（Ｆｒ）の大きさは、変位ボリューム３００の体積によって変化し得る。侵入時の仮想ボリューム７４の姿勢と変位ボリューム３００の少なくともいずれかによっては、反力（Ｆｒ）ベクトルの多角形要素８０の平面に対する角度が、垂直以外の角度となる場合もある。以下では、変位ボリューム３００から反力（Ｆｒ）を計算する技術について説明する。
【０１３９】
比較のため、球体状の仮想ボリューム７４と三角形の多角形要素８０を使って変位ボリューム３００を計算する例を示す。しかし、当然ながら、他の例も可能である。図１８において、仮想ボリューム７４が多角形要素８０の平面に侵入し、当該平面の下に変位ボリューム３００が形成されている。ここで、変位ボリューム３００は、多角形要素８０の平面によって切り取られた球状のキャップ形状（球状のドーム形状）を有している。この例では、ｃが球体中心、ｈが変位ボリューム３００の高さ、ｒは球体半径である。ここで、多角形要素８０の平面は、球体中心ｃより手前の部分を通る。なお、侵入がちょうど球体中心ｃに達するものである場合には、変位ボリューム３００の高さｈは球体半径ｒに等しくなり、変位ボリューム３００は半球形状となる。
【０１４０】
この例においては、仮想ボリューム７４と変位ボリューム３００のパラメータを利用して変位ボリューム３００を計算する。そのようなパラメータとしては、仮想ボリューム７４の半径ｒ、変位ボリューム３００の高さｈ、および変位ボリューム３００の（交わり面における）底面３０２の半径αが挙げられる。例えば、球体についての変位ボリューム３００は、式「Ｖdisplaced＝（πｈ２／３）（３ｒ−ｈ）」で計算することができる。あるいは、回転積分を用いて平面下方の変位ボリューム３００を求めるなどの計算技術を使用して変位ボリューム３００の体積を計算することもできる。当然ながら、仮想ボリューム７４が球体とは異なる形状の場合には、異なる方法で変位ボリューム３００の体積が計算される。
【０１４１】
やはり、変位ボリューム３００は多角形要素８０によって境界が画定されているため、仮想ボリューム７４において、１つの多角形要素８０に対する反力（Ｆｒ）を生成する場合に、その多角形要素８０の延在範囲を超えて延在する部分は、計算外とされる。一例では、変位ボリューム３００の境界を多角形要素８０で画定するため、隣接する多角形要素８０を、各多角形要素８０の外周に対応する三角柱（ただし、多角形要素８０が三角形の場合）などの３Ｄの要素としてモデリングすることができる。この場合、仮想ボリューム７４が侵入により、多角形要素８０の三角柱の壁面を横切って延在する状態になった場合、ある多角形要素８０に対する反力（Ｆｒ）は、仮想ボリューム７４のうち、その多角形要素８０の三角柱内にある部分のみを計算に入れて生成される。一方、仮想ボリューム７４のうち、この三角柱の壁面を横切ってこの三角柱の外に延びる部分は、これに隣接する多角形要素８０の反力（Ｆｒ）を生成するための計算に入れられる。
【０１４２】
繰り返すが、図１８に関する計算は、球形の仮想ボリューム７４に特定的、かつ変位ボリューム３００が三角形の多角形要素８０を構成する辺の内部に完全に収まり、三角形の多角形要素８０の頂点とは交わらない場合に特定的なものである。当然ながら、変位ボリューム３００、したがって変位ボリューム３００を計算するための計算は、多角形要素８０のジオメトリ、仮想ボリューム７４のジオメトリ、およびこれら両ジオメトリの相対的な位置関係に応じて異なり得る。また、図示の例において、変位ボリューム３００の計算は、変位ボリューム３００が関与する三角形の多角形要素８０の辺の数（０〜３本）や頂点の数（０〜３個）に応じて異なる。そして、仮想ボリューム７４が球体ではなく、回転楕円体、楕円体、環状体などである場合には、より複雑な変位ボリューム３００を計算することができる。変位ボリューム３００の幾何学的計算については、本明細書に記載の計算方法以外にも、任意の幾何学的構成や状況に応じて想到することができるであろう。
【０１４３】
図１８に基づいて明らかなように、変位ボリューム３００も、侵入の直線的な深さに対して変化する。図１８に示す例では、変位ボリューム３００の高さｈが侵入の直線的な深さに相当する。しかし、侵入する仮想体は立体形状を有しているため、多角形要素８０、仮想境界５５またはその両方に対して線形の衝撃力（Ｆａ）を加えることはなく、よって、変位ボリューム３００は侵入の直線的な深さに対して線形には変化しない。むしろ、侵入する仮想体が加える衝撃力（Ｆａ）は、仮想ボリューム７４の立体形状の関数であるより高次の力である。したがって、変位ボリューム３００は、このより高次の立体形状関数に従って侵入の直線的な深さに対して変化する。ここでも、変位ボリューム３００が可変的である理由の一つとして、図１８に示す例の仮想ボリューム７４が１つの面のみを有しており（例えば、球形であり）、互いに隣接する断面積が等しくないことが挙げられる。
【０１４４】
したがって、仮想ボリューム７４の侵入に応じて計算される反力（Ｆｒ）は、侵入の直線的な深さに対して可変的な応答を示す。ただし、反力（Ｆｒ）は、侵入の直線的な深さの変化に合わせて変化し得るものではあるが、実際の反力（Ｆｒ）の計算は、この例では変位ボリューム３００に基づいて行われる。反力（Ｆｒ）の計算が、単に、仮想ボリューム７４が多角形要素８０や仮想境界５５より内部に突き出る直線的な深さであるｈのみに基づいて行われることはない。
【０１４５】
図５〜図７に関連して投影領域９０について説明した例や他の可能例は、変位ボリューム３００についても十分理解できると思われるため、ここではその説明を省略して簡略化する。なお、当然ながら、当業者であれば、変位ボリューム３００に基づいて計算した反力（Ｆｒ）が、投影領域９０に基づいて計算した反力（Ｆｒ）とは異なる可能性があることを理解するであろう。さらに、変位ボリューム３００を繰返し計算した結果を基に、反力（Ｆｒ）を繰返し加えることも十分想到されるであろう。
【０１４６】
さらに、図１０〜図１２では、仮想ボリューム７４が複数の多角形要素（例えば、８０Ａ〜８０Ｆ）に同時に侵入する場合に、その侵入に応じて複数の反力（例えば、ＦｒＡ〜ＦｒＦ）を投影領域９０を使って計算、生成する例を示したが、これらの例についても、変位ボリューム３００を使用した本明細書に記載の技術にあてはめて理解することが十分可能である。要点としては、各反力（ＦｒＡ〜ＦｒＦ）は、各多角形要素８０Ａ〜８０Ｆによって境界が画定された変位ボリューム３００に関係付けられる。変位ボリューム３００を使う場合でも、反力（Ｆｒ）は、各多角形要素８０に対して個別に加えてもよく、あるいは合成して合成反力（ＦｒTotal）として加えることもできる。
【０１４７】
図１３〜図１５において投影領域９０に関して説明した、多角形要素８０が異なる平面上にある場合の技術についても、変位ボリューム３００を使った方法にも同様に適用することができる。例えば、変位ボリューム３００を使用して出隅角での反力（ＦｒＡ），（ＦｒＢ）を計算しても同様に、仮想境界５５に対して自然な応答が得られる。ここで、変位ボリューム３００の増加は反力（Ｆｒ）の増加に換算され、変位ボリューム３００の減少は反力（Ｆｒ）の減少に換算される。これにより、変位ボリューム３００を使った技術も、仮想境界５５との衝突時にツール２０の突発的または不自然な動きを引き起こす反力（Ｆｒ）の不連続な急変を回避する。よって、ツール２０が出隅角に沿って動く間に予想外のキックバックを起こしてしまうことが抑制される。したがって、本明細書に記載の変位ボリューム３００を使った技術は、表面モデリングが有する、角に関する問題を解決するものである。また、変位ボリューム３００を使った技術は、非平面状に配置された複数の多角形要素８０に同時に仮想ボリューム７４が侵入する他の任意の例にも完全に適用することができる。そのような例としては、入隅角、山部、谷部などが挙げられるが、これらに限定されない。
【０１４８】
Ｄ．他の適用例
当業者であれば、上述の投影領域、投影弧、変位ボリュームの例がいずれも、多角形要素８０の（２Ｄまたは３Ｄの）ジオメトリに対して境界が画定される仮想ボリューム７４のジオメトリの関数である侵入係数に基づいて反力（Ｆｒ）を計算するものであることを理解するであろう。ただし、本明細書に記載の技術以外にも、多角形要素８０のジオメトリに対して境界が画定される仮想ボリューム７４のジオメトリの関数である侵入係数に基づいて反力（Ｆｒ）を計算する技術が存在することが十分に考えられる。例えば、断面領域１００が部分円弧２０２などを有していない場合、投影弧の代わりに、投影領域の外周を利用することができる。
【０１４９】
また、本明細書に記載の種々の表面モデリング技術はいずれも、コントローラ３０によって選択的にオン／オフ制御を行うことができる。例えば、出隅角を通り抜ける侵入に対して投影領域９０の技術を使用し、平坦面を通り抜ける侵入に対して投影弧２００の技術を使用するなどの設定を予め行っておくことができる。そして、このような表面モデリング技術の選択は、例えばユーザ入力に基づいて行ってもよい。ユーザは、ディスプレイ３８またはユーザ入力デバイス４０で表面モデリングのモードを選択することができる。また、他の例では、コントローラ３０が、仮想ボリューム７４と仮想境界５５との間に発生している状況を自動的に識別して、メモリに格納された所定の設定に基づいて表面モデリングのモードを選択する。その場合、例えば、仮想ボリューム７４が侵入する多角形要素８０の数、位置そしてそれがどの多角形要素８０なのかに基づいて、コントローラ３０はその状況を自動的に特定することができる。
【０１５０】
さらに、本明細書に記載の異なる表面モデリング技術を任意に組み合わせることも考えられる。本明細書に記載の技術がいずれも、多角形要素８０のジオメトリに対して境界が画定される仮想ボリューム７４のジオメトリの関数である侵入係数を利用した技術であるため、そのような組み合わせが可能となる。したがって、投影領域９０モード、投影弧２００モード、変位ボリューム３００モードの任意の組み合わせを同時に用いて、任意の多角形要素８０に対する反力（Ｆｒ）を導き出すことができる。
【０１５１】
本明細書に記載の技術は、ロボット外科手術システム１０の様々な実用的用途や実践的状況に役立つことができる。例えば、ロボット外科手術システム１０は、手動動作モードで使用することができる。手動モード時には、オペレータがツール２０を動かし、そのツール２０の動きをマニピュレータ１４が制御する。オペレータは、ツール２０に物理的に接触してツール２０を動かす。一方、コントローラ３０は、力／トルクセンサ７０を使用して、ツール２０に加えられる力、トルク、またはその両方の監視を行う。その場合、仮想境界５５は、避けるべき領域から治療対象の生体構造領域を区切ることができる。また、これに代えてまたは加えて、仮想境界５５は、ツール２０を標的部位に向かって手動で動かすようにオペレータを案内するガイドとなることもできる。さらに別の例では、仮想境界５５は、（例えば機器などの）避けるべきオブジェクトに対して定義される。これらの例のいずれにおいても、力／トルクセンサ７０が検出した力やトルクに応じた手動動作の結果、仮想境界５５への侵入が発生するであろう場合には、コントローラ３０がマニピュレータ１４を制御してツール２０を仮想境界５５から遠ざける方向に動かす。これにより、オペレータに仮想境界５５の位置を触覚で知らせて、手動モード時に仮想境界５５を避けることができるようにする。
【０１５２】
別の用途として、自律動作モード時に、コントローラ３０がマニピュレータ１４に対して、ツール２０を自律的に動かす指令を与えることができる。この場合、マニピュレータ１４は、オペレータの支援なしにツール２０を動かすことができる。ここで、「オペレータの支援なしに」とは、ツール２０を動かす力を加えるためのツール２０への物理的接触をオペレータが行わないことを意味し得る。そして、オペレータはそのような物理的接触を行わない代わりに、何らかの形の制御を使って、ツール２０の始動と停止を管理することができる。例えば、オペレータは、遠隔制御ボタンを押してツール２０を始動させ、遠隔制御ボタンを放してツール２０の動きを停止させることができる。一例として、ツール２０がツール経路上に位置決めされた状態で維持される自律モード時に、オペレータがツール２０の向きの変更を望む場合を考える。ツール２０の向きを変更すれば、それが位置を維持した状態で行われたとしても、１以上の仮想境界５５に関与する可能性がある。これに対し、システム１０およびその方法は、仮想シミュレーション７２においてツール２０の更新後の向きと仮想境界５５とを考慮することにより、例えば、向きが変更されたツール２０の周辺やその動きの経路上の障害となるオブジェクトに対してツール２０が望ましくない衝突を起こしてしまう事態に対処することができる。他の例では、自律モード時に、自律的動作に対して不注意から変更を加えてしまうような事態に対する追加予防策として、仮想境界５５を使うこともできる。当業者であれば、本明細書に記載の投影領域の技術が様々な他の用途や状況に役立ち得ることを理解するであろう。
【０１５３】
本明細書の詳細な説明から、本発明の多くの特徴および利点が明らかとなるであろう。したがって、添付の特許請求の範囲は、本発明の真の要旨や範囲の内にあるそのような特徴および利点のすべてを包含することを意図している。さらに、当業者であれば、多くの変更や変形を容易に想到し得るであろう。よって、本発明を図示、説明した構造および動作のみに限定することは望ましくなく、したがって、本発明の範囲を逸脱しない範囲であれば、すべての適切な変形および均等物が可能である。
【図１】
2020523206.tif 000003
【図２】
2020523206.tif 000004
【図３】
2020523206.tif 000005
【図４】
2020523206.tif 000006
【図５】
2020523206.tif 000007
【図６】
2020523206.tif 000008
【図７】
2020523206.tif 000009
【図８】
2020523206.tif 000010
【図９】
2020523206.tif 000011
【図１０】
2020523206.tif 000012
【図１１】
2020523206.tif 000013
【図１２】
2020523206.tif 000014
【図１３】
2020523206.tif 000015
【図１４】
2020523206.tif 000016
【図１５】
2020523206.tif 000017
【図１６】
2020523206.tif 000018
【図１７】
2020523206.tif 000019
【図１８】
2020523206.tif 000020
【手続補正書】
【提出日】令和2年2月7日(2020.2.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ツールと、
複数のリンクを備えて、前記ツールを動かすように構成されたマニピュレータと、
前記マニピュレータに接続されるコントローラであって、複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように適合された仮想ボリュームとして前記ツールを表現する仮想シミュレーションを実現するように構成されたコントローラと、を備えるロボットシステムであって、
前記コントローラは、
前記仮想シミュレーションにおいて前記仮想ボリュームが前記多角形要素の１つに侵入する場合に、該多角形要素のジオメトリに対して境界が画定される前記仮想ボリュームのジオメトリの関数である侵入係数に基づいて、その侵入に応じた反力を計算し、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記反力を加えて、前記仮想ボリュームによる前記多角形要素への侵入を抑制し、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かすことにより前記ツールの動きを前記仮想境界に対して制限する指令を、前記マニピュレータに与えるように構成される、ロボットシステム。
【請求項２】
前記侵入係数は、前記仮想ボリュームによる前記多角形要素への侵入の直線的な深さとの間に関数従属性を有していない、請求項１に記載のロボットシステム。
【請求項３】
前記ツールの状態を追跡するように構成され、前記コントローラに接続されたナビゲーションシステムをさらに備え、
前記仮想ボリュームは、追跡した前記ツールの状態に基づいて位置決めされる、請求項１または請求項２に記載のロボットシステム。
【請求項４】
前記ツールは、標的部位と相互作用するように構成され、
前記ナビゲーションシステムは、前記標的部位の状態を追跡するように構成され、
前記仮想境界は、前記標的部位に関連付けられる、請求項３に記載のロボットシステム。
【請求項５】
前記ナビゲーションシステムは、前記ツールが避けるべきオブジェクトの状態を追跡するように構成され、
前記仮想境界は、前記避けるべきオブジェクトに関連付けられる、請求項３または請求項４に記載のロボットシステム。
【請求項６】
前記仮想ボリュームは、１個の面と、０個の頂点と、０個の辺とを有しており、
前記仮想ボリュームは球形である、請求項１ないし請求項５のいずれか１項に記載のロボットシステム。
【請求項７】
前記反力はインパルスとしてさらに定義される、請求項１ないし請求項６のいずれか１項に記載のロボットシステム。
【請求項８】
前記ツールに加えられる力を感知するように構成される力／トルクセンサをさらに備え、
前記仮想シミュレーションにおいて、前記ツールに加えられる力を前記仮想ボリュームに加えて前記仮想ボリュームを前記多角形要素の１つに侵入させる、請求項１ないし請求項７のいずれか１項に記載のロボットシステム。
【請求項９】
前記侵入係数は、前記仮想ボリュームと前記多角形要素との交わりによって定義される投影領域であり、
前記投影領域は、前記多角形要素のジオメトリによって境界を画定されている、請求項１ないし請求項８のいずれか１項に記載のロボットシステム。
【請求項１０】
前記侵入係数は、前記仮想ボリュームと前記多角形要素が交わる時に前記多角形要素のジオメトリによって境界を画定される前記仮想ボリュームの断面領域が有するすべての円弧の組み合わせで定義される投影弧である、請求項１ないし請求項９のいずれか１項に記載のロボットシステム。
【請求項１１】
前記侵入係数は、前記仮想ボリュームのうち前記多角形要素に侵入する部分の体積で定義される変位ボリュームであり、
前記変位ボリュームは、前記多角形要素のジオメトリによって境界を画定されている、請求項１ないし請求項１０のいずれか１項に記載のロボットシステム。
【請求項１２】
ロボットシステムを制御する方法であって、
前記ロボットシステムは、
ツールと、
複数のリンクを備えて、前記ツールを動かすように構成されたマニピュレータと、
前記マニピュレータに接続されるコントローラであって、複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように構成された仮想ボリュームとして前記ツールを表現する仮想シミュレーションを実現するように構成されたコントローラと、を備え、
前記方法は、前記コントローラによって、
前記仮想シミュレーションにおいて前記仮想ボリュームが前記多角形要素の１つに侵入する場合に、該多角形要素のジオメトリに対して境界が画定される前記仮想ボリュームのジオメトリの関数である侵入係数に基づいて、その侵入に応じた反力を計算することと、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記反力を加えて、前記仮想ボリュームによる前記多角形要素への侵入を抑制することと、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かすことにより前記ツールの動きを前記仮想境界に対して制限する指令を、前記マニピュレータに与えることと、を含む方法。
【請求項１３】
前記侵入係数は、前記仮想ボリュームによる前記多角形要素への侵入の直線的な深さとの間に関数従属性を有していない、請求項１２に記載の方法。
【請求項１４】
追跡している前記ツールの状態をナビゲーションシステムから受信することと、
追跡した前記ツールの状態に基づいて、前記仮想ボリュームを位置決めすることと、をさらに含む、請求項１２に記載の方法。
【請求項１５】
追跡している避けるべきオブジェクトの状態を前記ナビゲーションシステムから受信することと、
前記仮想境界を前記避けるべきオブジェクトに関連付けることと、をさらに含む請求項１４に記載の方法。
【請求項１６】
力／トルクセンサの測定値に基づいて前記ツールに加えられる力を特定することと、
前記仮想シミュレーションにおいて、前記ツールに加えられる力を前記仮想ボリュームに加えて前記仮想ボリュームを前記多角形要素の１つに侵入させることと、をさらに含む、請求項１２ないし請求項１５のいずれか１項に記載の方法。
【請求項１７】
前記反力を計算することは、前記仮想ボリュームと前記多角形要素との交わりによって定義される投影領域である前記侵入係数に基づいて行われ、
前記投影領域は、前記多角形要素のジオメトリによって境界を画定されている、請求項１２ないし請求項１６のいずれか１項に記載の方法。
【請求項１８】
前記反力を計算することは、前記仮想ボリュームと前記多角形要素が交わる時に前記多角形要素のジオメトリによって境界を画定される前記仮想ボリュームの断面領域が有するすべての円弧の組み合わせで定義される投影弧である前記侵入係数に基づいて行われる、請求項１２ないし請求項１７のいずれか１項に記載の方法。
【請求項１９】
前記反力を計算することは、前記仮想ボリュームのうち前記多角形要素に侵入する部分の体積で定義される変位ボリュームである前記侵入係数に基づいて行われ、
前記変位ボリュームは、前記多角形要素のジオメトリによって境界を画定されている、請求項１２ないし請求項１８のいずれか１項に記載の方法。
【国際調査報告】
2020523206.tif 000021
2020523206.tif 000022
2020523206.tif 000023