IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マコ サージカル コーポレーションの特許一覧

特許7293137仮想境界を実現するための反力を生成するロボットシステムおよび方法
<>
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図1
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図2
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図3
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図4
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図5
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図6
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図7
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図8
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図9
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図10
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図11
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図12
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図13
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図14
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図15
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図16
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図17
  • 特許-仮想境界を実現するための反力を生成するロボットシステムおよび方法 図18
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-09
(45)【発行日】2023-06-19
(54)【発明の名称】仮想境界を実現するための反力を生成するロボットシステムおよび方法
(51)【国際特許分類】
   B25J 9/22 20060101AFI20230612BHJP
   B25J 9/16 20060101ALI20230612BHJP
   A61B 34/30 20160101ALI20230612BHJP
【FI】
B25J9/22 A
B25J9/16
A61B34/30
【請求項の数】 23
(21)【出願番号】P 2019567630
(86)(22)【出願日】2018-06-05
(65)【公表番号】
(43)【公表日】2020-08-06
(86)【国際出願番号】 US2018036029
(87)【国際公開番号】W WO2018226673
(87)【国際公開日】2018-12-13
【審査請求日】2021-06-01
(31)【優先権主張番号】62/517,453
(32)【優先日】2017-06-09
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】507280594
【氏名又は名称】マコ サージカル コーポレーション
(74)【代理人】
【識別番号】100099623
【弁理士】
【氏名又は名称】奥山 尚一
(74)【代理人】
【氏名又は名称】松島 鉄男
(74)【代理人】
【識別番号】100125380
【弁理士】
【氏名又は名称】中村 綾子
(74)【代理人】
【識別番号】100142996
【弁理士】
【氏名又は名称】森本 聡二
(74)【代理人】
【識別番号】100166268
【弁理士】
【氏名又は名称】田中 祐
(74)【代理人】
【識別番号】100170379
【弁理士】
【氏名又は名称】徳本 浩一
(74)【代理人】
【識別番号】100180231
【弁理士】
【氏名又は名称】水島 亜希子
(74)【代理人】
【氏名又は名称】有原 幸一
(72)【発明者】
【氏名】ボウリング,デイヴィッド・ジーン
【審査官】國武 史帆
(56)【参考文献】
【文献】特表2009-524149(JP,A)
【文献】特開平08-025254(JP,A)
【文献】米国特許出願公開第2012/0176306(US,A1)
【文献】米国特許出願公開第2013/0053648(US,A1)
【文献】国際公開第2016/187290(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 - 21/02
A61B 34/00 - 34/37
(57)【特許請求の範囲】
【請求項1】
ツールと、
複数のリンクを備えて、前記ツールを動かすように構成されたマニピュレータと、
前記マニピュレータに接続されるコントローラであって、それぞれが平面および外周を備える複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように適合された仮想ボリュームとして前記ツールを表現する仮想シミュレーションを実現するように構成されたコントローラと、を備えるロボットシステムであって、
前記コントローラは、
前記仮想シミュレーションにおいて前記仮想ボリュームが前記多角形要素の1つに侵入する場合に、前記仮想ボリュームと前記多角形要素の前記平面との間の平面的な交わりであって、前記多角形要素の前記外周によって境界が画定される、平面的な交わりの関数である侵入係数に基づいて、その侵入に応じた反力を計算し、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記反力を加えて、前記仮想ボリュームによる前記多角形要素への侵入を抑制し、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かすことにより前記ツールの動きを前記仮想境界に対して制限する指令を、前記マニピュレータに与えるように構成される、ロボットシステム。
【請求項2】
前記侵入係数は、前記仮想ボリュームによる前記多角形要素への侵入の直線的な深さとの間に関数従属性を有していない、請求項1に記載のロボットシステム。
【請求項3】
前記ツールの状態を追跡するように構成され、前記コントローラに接続されたナビゲーションシステムをさらに備え、
前記仮想ボリュームは、追跡した前記ツールの状態に基づいて位置決めされる、請求項1または請求項2に記載のロボットシステム。
【請求項4】
前記ツールは、標的部位と相互作用するように構成され、
前記ナビゲーションシステムは、前記標的部位の状態を追跡するように構成され、
前記仮想境界は、前記標的部位に関連付けられる、請求項3に記載のロボットシステム。
【請求項5】
前記ナビゲーションシステムは、前記ツールが避けるべきオブジェクトの状態を追跡するように構成され、
前記仮想境界は、前記避けるべきオブジェクトに関連付けられる、請求項3または請求項4に記載のロボットシステム。
【請求項6】
前記仮想ボリュームは、1個の面と、0個の頂点と、0個の辺とを有しており、
前記仮想ボリュームは球形である、請求項1ないし請求項5のいずれか1項に記載のロボットシステム。
【請求項7】
前記反力はインパルスとしてさらに定義される、請求項1ないし請求項6のいずれか1項に記載のロボットシステム。
【請求項8】
前記ツールに加えられる力を感知するように構成される力/トルクセンサをさらに備え、
前記仮想シミュレーションにおいて、前記ツールに加えられる力を前記仮想ボリュームに加えて前記仮想ボリュームを前記多角形要素の1つに侵入させる、請求項1ないし請求項7のいずれか1項に記載のロボットシステム。
【請求項9】
前記侵入係数は、前記仮想ボリュームと前記多角形要素の前記平面との間の前記平面的な交わりによって定義される領域の関数としてさらに定義され、
前記領域の境界は、前記多角形要素の前記外周によって画定されている、請求項1ないし請求項8のいずれか1項に記載のロボットシステム。
【請求項10】
前記侵入係数は、前記仮想ボリュームと前記多角形要素の前記平面との間の前記平面的な交わりによって定義された形状の一つまたは複数の円弧の関数としてさらに定義され、
前記一つまたは複数の円弧の境界は、前記多角形要素の前記外周によって画定されている、請求項1ないし請求項9のいずれか1項に記載のロボットシステム。
【請求項11】
ロボットシステムを制御する方法であって、
前記ロボットシステムは、
ツールと、
複数のリンクを備えて、前記ツールを動かすように構成されたマニピュレータと、
前記マニピュレータに接続されるコントローラであって、それぞれが平面および外周を備える複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように構成された仮想ボリュームとして前記ツールを表現する仮想シミュレーションを実現するように構成されたコントローラと、を備え、
前記方法は、前記コントローラによって、
前記仮想シミュレーションにおいて前記仮想ボリュームが前記多角形要素の1つに侵入する場合に、前記仮想ボリュームと前記多角形要素の前記平面との間の平面的な交わりあって、前記多角形要素の前記外周によって境界が画定される、平面的な交わりの関数である侵入係数に基づいて、その侵入に応じた反力を計算することと、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記反力を加えて、前記仮想ボリュームによる前記多角形要素への侵入を抑制することと、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かすことにより前記ツールの動きを前記仮想境界に対して制限する指令を、前記マニピュレータに与えることと、を含む方法。
【請求項12】
前記侵入係数は、前記仮想ボリュームによる前記多角形要素への侵入の直線的な深さとの間に関数従属性を有していない、請求項11に記載の方法。
【請求項13】
追跡している前記ツールの状態をナビゲーションシステムから受信することと、
追跡した前記ツールの状態に基づいて、前記仮想ボリュームを位置決めすることと、をさらに含む、請求項11に記載の方法。
【請求項14】
追跡している避けるべきオブジェクトの状態を前記ナビゲーションシステムから受信することと、
前記仮想境界を前記避けるべきオブジェクトに関連付けることと、をさらに含む請求項13に記載の方法。
【請求項15】
力/トルクセンサの測定値に基づいて前記ツールに加えられる力を特定することと、
前記仮想シミュレーションにおいて、前記ツールに加えられる力を前記仮想ボリュームに加えて前記仮想ボリュームを前記多角形要素の1つに侵入させることと、をさらに含む、請求項11ないし請求項14のいずれか1項に記載の方法。
【請求項16】
前記反力を計算することは、前記仮想ボリュームと前記多角形要素の前記平面との間の前記平面的な交わりによって定義される領域の関数としてさらに定義される前記侵入係数に基づいて行われ、
前記領域の境界は、前記多角形要素の前記外周によって画定されている、請求項11ないし請求項15のいずれか1項に記載の方法。
【請求項17】
前記反力を計算することは、前記仮想ボリュームと前記多角形要素の前記平面との間の前記平面的な交わりによって定義される形状の一つまたは複数の円弧の関数としてさらに定義される前記侵入係数に基づいて行われ、
前記一つまたは複数の円弧の境界は、前記多角形要素の前記外周によって画定されている、請求項11ないし請求項16のいずれか1項に記載の方法。
【請求項18】
ツールと、
複数のリンクを備えて、前記ツールを動かすように構成されたマニピュレータと、
前記マニピュレータに接続されるコントローラであって、複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように適合された仮想ボリュームとして前記ツールを表現する仮想シミュレーションを実現するように構成されたコントローラと、を備えるロボットシステムであって、
前記コントローラは、
前記仮想シミュレーションにおいて前記仮想ボリュームが前記多角形要素の1つに侵入する場合に、該多角形要素のジオメトリに対して境界が画定される前記仮想ボリュームのジオメトリの関数である侵入係数に基づいて、その侵入に応じた反力を計算し、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記反力を加えて、前記仮想ボリュームによる前記多角形要素への侵入を抑制し、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かすことにより前記ツールの動きを前記仮想境界に対して制限する指令を、前記マニピュレータに与えるように構成され、
前記侵入係数は、前記仮想ボリュームと前記多角形要素との交わりによって定義される投影領域であり、
前記投影領域は、前記多角形要素のジオメトリによって境界を画定されている、ロボットシステム。
【請求項19】
ツールと、
複数のリンクを備えて、前記ツールを動かすように構成されたマニピュレータと、
前記マニピュレータに接続されるコントローラであって、複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように適合された仮想ボリュームとして前記ツールを表現する仮想シミュレーションを実現するように構成されたコントローラと、を備えるロボットシステムであって、
前記コントローラは、
前記仮想シミュレーションにおいて前記仮想ボリュームが前記多角形要素の1つに侵入する場合に、該多角形要素のジオメトリに対して境界が画定される前記仮想ボリュームのジオメトリの関数である侵入係数に基づいて、その侵入に応じた反力を計算し、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記反力を加えて、前記仮想ボリュームによる前記多角形要素への侵入を抑制し、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かすことにより前記ツールの動きを前記仮想境界に対して制限する指令を、前記マニピュレータに与えるように構成され、
前記侵入係数は、前記仮想ボリュームと前記多角形要素が交わる時に前記多角形要素のジオメトリによって境界を画定される前記仮想ボリュームの断面領域が有するすべての円弧の組み合わせで定義される投影弧である、ロボットシステム。
【請求項20】
ツールと、
複数のリンクを備えて、前記ツールを動かすように構成されたマニピュレータと、
前記マニピュレータに接続されるコントローラであって、複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように適合された仮想ボリュームとして前記ツールを表現する仮想シミュレーションを実現するように構成されたコントローラと、を備えるロボットシステムであって、
前記コントローラは、
前記仮想シミュレーションにおいて前記仮想ボリュームが前記多角形要素の1つに侵入する場合に、該多角形要素のジオメトリに対して境界が画定される前記仮想ボリュームのジオメトリの関数である侵入係数に基づいて、その侵入に応じた反力を計算し、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記反力を加えて、前記仮想ボリュームによる前記多角形要素への侵入を抑制し、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かすことにより前記ツールの動きを前記仮想境界に対して制限する指令を、前記マニピュレータに与えるように構成され、
前記侵入係数は、前記仮想ボリュームのうち前記多角形要素に侵入する部分の体積で定義される変位ボリュームであり、
前記変位ボリュームは、前記多角形要素のジオメトリによって境界を画定されている、ロボットシステム。
【請求項21】
ロボットシステムを制御する方法であって、
前記ロボットシステムは、
ツールと、
複数のリンクを備えて、前記ツールを動かすように構成されたマニピュレータと、
前記マニピュレータに接続されるコントローラであって、複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように構成された仮想ボリュームとして前記ツールを表現する仮想シミュレーションを実現するように構成されたコントローラと、を備え、
前記方法は、前記コントローラによって、
前記仮想シミュレーションにおいて前記仮想ボリュームが前記多角形要素の1つに侵入する場合に、該多角形要素のジオメトリに対して境界が画定される前記仮想ボリュームのジオメトリの関数である侵入係数に基づいて、その侵入に応じた反力を計算することと、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記反力を加えて、前記仮想ボリュームによる前記多角形要素への侵入を抑制することと、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かすことにより前記ツールの動きを前記仮想境界に対して制限する指令を、前記マニピュレータに与えることと、を含み、
前記反力を計算することは、前記仮想ボリュームと前記多角形要素との交わりによって定義される投影領域である前記侵入係数に基づいて行われ、
前記投影領域は、前記多角形要素のジオメトリによって境界を画定されている、方法。
【請求項22】
ロボットシステムを制御する方法であって、
前記ロボットシステムは、
ツールと、
複数のリンクを備えて、前記ツールを動かすように構成されたマニピュレータと、
前記マニピュレータに接続されるコントローラであって、複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように構成された仮想ボリュームとして前記ツールを表現する仮想シミュレーションを実現するように構成されたコントローラと、を備え、
前記方法は、前記コントローラによって、
前記仮想シミュレーションにおいて前記仮想ボリュームが前記多角形要素の1つに侵入する場合に、該多角形要素のジオメトリに対して境界が画定される前記仮想ボリュームのジオメトリの関数である侵入係数に基づいて、その侵入に応じた反力を計算することと、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記反力を加えて、前記仮想ボリュームによる前記多角形要素への侵入を抑制することと、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かすことにより前記ツールの動きを前記仮想境界に対して制限する指令を、前記マニピュレータに与えることと、を含み、
前記反力を計算することは、前記仮想ボリュームと前記多角形要素が交わる時に前記多角形要素のジオメトリによって境界を画定される前記仮想ボリュームの断面領域が有するすべての円弧の組み合わせで定義される投影弧である前記侵入係数に基づいて行われる、方法。
【請求項23】
ロボットシステムを制御する方法であって、
前記ロボットシステムは、
ツールと、
複数のリンクを備えて、前記ツールを動かすように構成されたマニピュレータと、
前記マニピュレータに接続されるコントローラであって、複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように構成された仮想ボリュームとして前記ツールを表現する仮想シミュレーションを実現するように構成されたコントローラと、を備え、
前記方法は、前記コントローラによって、
前記仮想シミュレーションにおいて前記仮想ボリュームが前記多角形要素の1つに侵入する場合に、該多角形要素のジオメトリに対して境界が画定される前記仮想ボリュームのジオメトリの関数である侵入係数に基づいて、その侵入に応じた反力を計算することと、
前記仮想シミュレーションにおいて前記仮想ボリュームに前記反力を加えて、前記仮想ボリュームによる前記多角形要素への侵入を抑制することと、
前記仮想シミュレーションにおいて前記仮想ボリュームに加えられる前記反力に従って前記ツールを動かすことにより前記ツールの動きを前記仮想境界に対して制限する指令を、前記マニピュレータに与えることと、を含み、
前記反力を計算することは、前記仮想ボリュームのうち前記多角形要素に侵入する部分の体積で定義される変位ボリュームである前記侵入係数に基づいて行われ、
前記変位ボリュームは、前記多角形要素のジオメトリによって境界を画定されている、方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2017年6月9日に出願した米国仮特許出願第62/517453号の優先権の利益を主張するものであり、そのすべての開示内容は引用することによって本明細書の一部をなすものとする。
【0002】
本開示は、ロボットシステムにおいて仮想境界を実現するための反力を生成する技術に関する。
【背景技術】
【0003】
ロボットシステムは、外科処置を行う目的で一般に使用されている。そのようなロボットシステムは、ロボットアームと、手術部位に関与するためにロボットアームの端部に接続されたツールと、を備えるロボットを備えている。
【0004】
そして、多くの場合、ツールが望まない領域にまで到達してしまうのを防ぐ目的で、ツールの動きを制限する仮想表面が導入される。例えば、ツールで処置する必要のある生体構造の領域と処置する必要のない領域とを区切るように仮想表面を手術部位に登録することができる。
【0005】
多くの仮想表面は、三角形などの多角形要素から成るメッシュとして定義される。仮想表面に侵入しようとする力がツールに加えられた場合、当該メッシュのうちこのような侵入の試みを受ける三角形それぞれについて反力が計算される。つまり、ツールが仮想表面を押すと、仮想表面またはツールの圧縮によって仮想表面が押し戻される。従来から、この反力はバネでモデリングされてきた。各反力の大きさが、三角形への侵入の直線的な深さ(すなわち、ツールが仮想表面より内部に突き出る距離)に比例するようにモデリングされる。そして、ロボットアームは、計算された反力に従ってツールを動かすことによって、ツールの動きを仮想表面に対して制限する。
【0006】
しかしながら、このような反力のモデリングや計算は決して簡単なものではない。仮想表面の多くが複雑な形状を有しており、ツールと仮想表面との間の相互作用のモデリングが難しくなるほどの幾何学的特徴を定義している。さらに、侵入時のツールのモデル形状やツールの姿勢によってこの問題はさらに難しいものとなる。
【0007】
そして、ツールが仮想表面に侵入する場合、特に、ツールが複数の三角形に同時に侵入する場合に、ロボットアームが計算した反力に応じてツールを動かした結果、ツールが一貫性のない動きや予想外の動きをしてしまうことが観察されている。例えば、従来の場合、ツールが平坦な仮想表面を動いている間に2つ以上の三角形に同時に関与する動きをすると、ツールはキックバックを起こしてしまう。このキックバックは、反力2つ分と考えられるものである。仮想表面が平坦であればあるほどキックバックは深刻となる。また、複数の三角形が共有する頂点に関与する動きをツールが行った場合のキックバックはさらに深刻である。例えば、5つの三角形が共有する頂点に関与する動きの場合、その頂点での反力は、瞬間的に1つの三角形の反力の5倍にまで増加する。
【0008】
さらに、仮想表面が定義する出隅角に沿ってツールが動く場合、その間に、仮想表面のメッシュのうち、この出隅角を挟む辺に沿った三角形の多くに対して同時に、ツールは侵入しようとする。そして、これらの三角形に関する反力が合成されると、累積して反力が急増するため、ツールが出隅角に沿って動く間に予想外のキックバックを起こしてしまう。
【0009】
このように、従来のロボットシステムが依拠している表面相互作用のモデリングは、侵入が、1つの三角形に対して行われているのか、複数の三角形に対して行われているのかに関わらず、単にその侵入の直線的な深さに基づいて行われるが、そのような従来のロボットシステムにおいては、さらに複雑な問題が生じてしまう。例えば、(侵入時のツールのモデル形状やツールの姿勢などによっては)侵入の直線的な深さは同一でも、仮想表面によるツールの断面領域の面積または変位体積(変位ボリューム)が異なる状況が考えられる。従来の表面モデリングの場合、そのような状況でも、仮想表面によるツールの断面領域の面積または変位体積は考慮に入れられず、単に侵入の直線的な深さに基づいて同一の反力が加えられる。
【0010】
仮想表面の外縁部への侵入など、ツールの一部のみが仮想表面に侵入する場合にも、同様の状況が発生する。例えば、侵入時のツールのモデル形状や姿勢が同じであると仮定した場合でも、ツール全体が仮想表面上にある状況と、ツールが仮想表面の外縁部に係っている状況とが考えられる。従来の表面モデリングの場合、そのような状況でもやはり、ツールのうち仮想表面に関与している部分の大きさはどの程度かは考慮に入れられず、単に侵入の直線的な深さに基づいて同一の反力が加えられる。
【0011】
したがって、本技術分野においては、少なくとも上述の問題に対処するためのシステムおよび方法が必要とされている。
【発明の概要】
【課題を解決するための手段】
【0012】
ロボットシステムの一例を示す。ロボットシステムは、ツールと、複数のリンクを備えてツールを動かすように構成されたマニピュレータとを備える。コントローラは、マニピュレータに接続されて、仮想ボリュームとしてツールを表現する仮想シミュレーションを実現するように構成される。該仮想ボリュームは、複数の多角形要素から成るメッシュで定義される仮想境界に対して相互作用するように構成される。コントローラは、仮想シミュレーションにおいて仮想ボリュームが多角形要素の1つに侵入する場合に、その侵入に応じた反力を計算するように構成される。この反力は、当該多角形要素のジオメトリに対して境界が画定される仮想ボリュームのジオメトリの関数である侵入係数に基づいて計算される。コントローラは、仮想シミュレーションにおいて、仮想ボリュームにこの反力を加えて、仮想ボリュームによる多角形要素への侵入を抑制するように構成される。コントローラは、仮想シミュレーションにおいて仮想ボリュームに加えられるこの反力に従ってツールを動かすことによりツールの動きを仮想境界に対して制限する指令を、マニピュレータに与える。
【0013】
ロボットシステムを制御する方法の一例を示す。ロボットシステムは、ツールと、複数のリンクを備えてツールを動かすように構成されたマニピュレータと、マニピュレータに接続されるコントローラであって、仮想シミュレーションを実現するように構成されたコントローラと、を備える。仮想シミュレーションにおいて、ツールは、仮想境界に対して相互作用するように構成された仮想ボリュームとして表現される。仮想境界は、複数の多角形要素から成るメッシュで定義される。本方法は、仮想シミュレーションにおいて仮想ボリュームが多角形要素の1つに侵入する場合に、その侵入に応じた反力をコントローラによって計算することを含む。この反力は、当該多角形要素のジオメトリに対して境界が画定される仮想ボリュームのジオメトリの関数である侵入係数に基づいて計算される。さらに本方法は、コントローラによって、仮想シミュレーションにおいて仮想ボリュームにこの反力を加えて仮想ボリュームによる多角形要素への侵入を抑制することを含む。コントローラは、仮想シミュレーションにおいて仮想ボリュームに加えられるこの反力に従ってツールを動かすことによりツールの動きを仮想境界に対して制限する指令を、マニピュレータに与える。
【0014】
コントローラに実装される、ロボットシステムのツールのダイナミクスをシミュレーションする方法の一例を示す。本方法は、ツールを仮想ボリュームとしてシミュレーションすることと、複数の多角形要素から成るメッシュで構成される仮想境界をシミュレーションすることとを含む。仮想ボリュームの動きは、仮想ボリュームが複数の多角形要素に同時に侵入するようにシミュレーションされる。さらに本方法は、複数の多角形要素への同時侵入に応じた複数の反力をそれぞれ計算することを含む。各反力は、対応する多角形要素のジオメトリに対して境界が画定される仮想ボリュームのジオメトリの関数である侵入係数に基づいて計算される。さらに本方法は、これらの複数の反力を合成して合成反力を生成することを含む。仮想ボリュームが行う複数の多角形要素に対する任意の同時侵入行為において、合成反力が一定となるように、これらの反力のそれぞれに重み係数が掛けられる。この合成反力は、シミュレーションによって仮想ボリュームに加えられる。
【発明の効果】
【0015】
有利なことに、本ロボットシステムおよび方法では、多角形要素のジオメトリに対して境界が画定される仮想ボリュームのジオメトリの関数に基づいて、関連する反力が計算される。こうして計算された反力は、仮想境界の複雑さや、侵入する多角形要素の数、ツールの侵入時の仮想ボリュームとしてのモデル形状やツールの姿勢が考慮されたものとなり、どのような状況でもツールの動きに応じた自然な反力となる。
【0016】
その結果、ツールが仮想境界に侵入する場合、特に、ツールが複数の多角形要素に同時に侵入する場合に、マニピュレータがこの反力に応じてツールを動かすことにより、ツールは一貫性のある予想通りの動きをする。
【0017】
さらに、本明細書に記載の技術は、侵入の直線的な深さ(すなわち、仮想ボリュームが多角形要素や仮想境界より内部に突き出る距離)は同一でも、仮想ボリュームと仮想境界の少なくとも一方の断面領域の面積または変位ボリュームが異なる状況も考慮したものである。反力が仮想ボリュームのジオメトリの関数として計算される場合、仮想ボリュームのジオメトリによる侵入の大きさをより正確に説明するものとなるため、上述の各状況における反力が異なるためである。侵入する仮想体は立体形状を有しているため、多角形要素、仮想境界またはその両方に対して線形の衝撃力を加えることはなく、よって、侵入係数は侵入の直線的な深さに対して線形には変化しない。むしろ、侵入する仮想体が加える衝撃力は、仮想ボリュームの立体形状に関するより高次の関数となる。したがって、侵入係数は、このより高次の立体形状関数に従って侵入の直線的な深さに対して変化する。換言すれば、侵入係数は、仮想境界または仮想ボリュームの変位体積(変位ボリューム)すなわち侵入体積(侵入ボリューム)を記述するものである。
【0018】
さらに、本明細書に記載の技術は、仮想境界の外縁部においても、例えば(仮想ボリュームが同一かつ侵入時の仮想ボリュームの姿勢が同じであると仮定した場合に)ツール全体が仮想境界上にある状況と、ツールが仮想境界の外縁部に係っている状況とで、異なる反力を生成すると考えられる。これは、侵入係数が、仮想ボリュームのうち仮想境界に関与している部分の大きさはどの程度かをより正確に説明するためである。
【0019】
本技術はさらに、角、山部、谷部などの、仮想境界において非平面状に多角形要素が配置される箇所においても、仮想境界に対してより滑らかな応答を与えるものである。例えば、本技術は、このような非平面状に多角形要素が配置される箇所との衝突時に、反力を徐々に増加させて、ツールの突発的または不自然な動きを引き起こすおそれのある反力の不連続な急変を回避する。例えば、仮想境界が定義する出隅角に沿ってツールが動く間、侵入係数は互いに相殺されて略一貫した合成反力が得られると考えられる。これにより、ツールがこのような角に沿って動く間にツールに加わる力が急増してしまう事態が解消される。したがって、仮想ボリュームが、2つ以上の多角形要素に同一の直線的な深さで侵入する場合にも、滑らかな応答が得られる。これにより、ツールが、非平面状に多角形要素が配置される箇所に沿って動く間に予想外のキックバックを起こしてしまうことが抑制される。したがって、本明細書に記載の技術は、表面モデリングが有する、非平面状に多角形要素が配置される箇所に関する問題を解決するものである。
【0020】
当然ながら、種々の構成や状況に応じて、本ロボットシステムおよび方法は、本明細書に記載したもの以外の利点や技術的解決策を提供し得る。
【0021】
本発明の利点は、以下の詳細な説明を添付の図面と関連させて考察することにより、よりよく理解され、容易に理解されるであろう。
【図面の簡単な説明】
【0022】
図1】一例に係るロボットシステムを示す斜視図である。
図2】ロボットシステムのコントローラの一例を示すブロック図である。
図3】ロボットシステムのコントローラおよびマニピュレータに実装する制御ループを示すブロック図である。
図4】マニピュレータのツールをシミュレーションによって表現した仮想ボリュームであって、多角形要素から成るメッシュで構成され、生体構造に関連付けられる仮想境界に対して相互作用するように構成される仮想ボリュームの一例を示す図である。
図5】投影領域に基づく侵入係数を使って、仮想ボリュームと仮想境界の1つの多角形要素との相互作用に応じた反力を生成する一例を説明する図である。
図6】投影領域に基づく侵入係数を使って、仮想ボリュームと仮想境界の1つの多角形要素との相互作用に応じた反力の生成する他の例を説明する図である。
図7】投影領域に基づく侵入係数を使って、仮想ボリュームと仮想境界の1つの多角形要素との相互作用に応じた反力を生成するさらに他の例を説明する図である。
図8】仮想境界の1つの多角形要素に関する投影領域の計算の一例を説明する図である。
図9】仮想境界の1つの多角形要素に関する投影領域の計算の他の例を説明する図である。
図10】投影領域を使って、仮想ボリュームと仮想境界の複数の多角形要素との相互作用に応じた複数の反力を生成する一例を説明する図である。
図11】投影領域を使って、仮想ボリュームと仮想境界の複数の多角形要素との相互作用に応じた合成反力を生成する一例を説明する図である。
図12】投影領域を使って、仮想ボリュームと仮想境界の複数の多角形要素との相互作用に応じた複数の反力を生成する他の例を説明する図である。
図13】投影領域を使って、仮想ボリュームと仮想境界の出隅角を構成する多角形要素との相互作用に応じた反力を生成する一例を説明する図である。
図14】投影領域を使って、仮想ボリュームと仮想境界の出隅角を構成する多角形要素との相互作用に応じた反力を生成する他の例を説明する図である。
図15】投影領域を使って、仮想ボリュームと仮想境界の出隅角を構成する多角形要素との相互作用に応じた反力を生成するさらに他の例を説明する図である。
図16】仮想境界の1つの多角形要素に関する投影弧に基づく侵入係数の計算の一例を説明する図である。
図17】仮想境界の1つの多角形要素に関する投影弧に基づく侵入係数の計算の他の例を説明する図である。
図18】仮想境界の1つの多角形要素に関する変位ボリュームに基づく侵入係数の計算の一例を説明する図である。
【発明を実施するための形態】
【0023】
I.ロボットシステムの概要
図面を参照すると、添付の図面はいずれも、ロボットシステム(以下「システム」)10およびシステム10の動作方法を示すものである。なお、複数の図において、同様の部品又は対応する部品を示すために、同様の番号を一貫して使用している。
【0024】
図1に示すように、システム10は、骨や軟組織などの患者12の生体構造を治療するためのロボット外科手術システムである。図1において、患者12は外科処置を受けている。図1に示す治療対象の生体構造は、患者12の大腿骨(F)と脛骨(T)とを含んでいる。外科処置には、組織の除去または治療が含まれる場合がある。また治療が、組織を切離すること、組織を凝固させること、組織に損傷を与えること、組織を置換する治療などを含む場合がある。いくつかの例では、外科処置が、膝関節または股関節の部分置換手術または全置換手術を含む場合がある。一例では、システム10は、単顆型人工関節、二顆型人工関節、多顆型人工関節、全人工関節を含む、股関節や膝関節などの外科用インプラントで置換すべき物質を切除する用途、あるいは脊椎に関連した用途で使用するように設計されている。この種のインプラントの一部は、「Prosthetic Implant and Method of Implantation(人工インプラントおよびその移植方法)」の名称で出願されている米国特許出願公開第2012/0030429号に示されており、同文献の開示内容は、引用することによって本明細書の一部をなすものとする。当業者であれば、本明細書に記載のシステム10および方法を、他の外科的処置や非外科的処置を行うために使用し得ること、あるいは、ロボットシステムの産業用途や他の用途でも使用し得ることことを理解するであろう。
【0025】
システム10は、マニピュレータ14を備えている。一例では、マニピュレータ14は、基部16と複数のリンク18とを有している。マニピュレータカート17はマニピュレータ14を支持するものであり、これによりマニピュレータ14がマニピュレータカート17に固定される。これら複数のリンク18の組み合わせによって、マニピュレータ14の1つ以上のアームが形成される。マニピュレータ14は、(図1に示すような)シリアルアーム構成を有してもよく、あるいはパラレルアーム構成を有してもよい。他の例では、1つ以上のマニピュレータ14を使用して複腕(複数アーム)構成とすることもできる。
【0026】
マニピュレータ14は、複数の関節(J)を備えている。隣接するリンク18の対はそれぞれ、1つの関節(J)によって接続されている。一例によると、マニピュレータ14は6つの関節(J1~J6)を有しており、これらの関節によって、マニピュレータ14は、少なくとも6自由度(6DOF)を有している。ただし、マニピュレータ14の自由度数は任意とすることができ、任意の適切な数の関節(J)および冗長関節(J)を有してよい。
【0027】
複数の関節(J)の位置データを特定するため、これらの関節(J)に対して複数の位置センサ19が配置されている。図1では、簡略化のため1つの位置センサ19のみ示しているが、他の関節(J)に対しても同様に、他の位置センサ19を図示できるものと理解されたい。位置センサ19の一例として、各関節(J)の関節角度を測定するエンコーダが挙げられる。
【0028】
各関節(J)には、関節モータ21などのアクチュエータが、隣接するリンク18の間に配設されている。図1では、簡略化のため1つの関節モータ21のみ示しているが、他の関節モータ21も図示できるものと理解されたい。各関節(J)は、1つの関節モータ21によって能動的に駆動される。関節モータ21は、リンク18を回動させるように構成されている。したがって、リンク18の位置は、関節モータ21によって設定される。
【0029】
各関節モータ21は、マニピュレータ14内部の構造フレームに取り付けることができる。一例では、関節モータ21は、永久磁石ブラシレスモータなどのサーボモータである。ただし、関節モータ21は、同期モータ、ブラシ付きDCモータ、ステッピングモータ、誘導モータなどの他の構成を有してもよい。
【0030】
関節モータ21は、複数の角度位置(以下、関節角度(joint angle))のうちの1つに位置決めすることができる。この関節角度とは、隣接するリンク18のなす関節(J)の角度である。一例では、各関節モータ21に1つの位置センサ19を搭載してもよい。これに代えて、各関節モータ21が駆動するリンク18それぞれに、位置センサ19を搭載してもよい。いくつかの例では、関節モータ21に1つ、これに駆動されるリンク18に1つ、の計2つの位置センサ19を用いて関節角度を特定することもできる。この場合、例えば、関節角度や対応する伝送方式によって生じるモータ21と関節(J)と間の位置ずれの平均値をとるなどの方法によって関節角度が特定される。
【0031】
各関節(J)は、関節トルクを受けるように構成される。関節トルクは、関節(J)の回転またはねじれを生じさせる「力(force)」であり、加えられる力と関節(J)の旋回中心からの距離との関数である。1つ以上の関節モータ21にトルクセンサ27(図3)を接続して、関節(J)の関節トルクを測定してもよい。あるいは、関節モータ21への印加電流を表す信号をコントローラが分析して関節トルクを測定してもよい。
【0032】
マニピュレータ14の基部16は、基本的に、マニピュレータ14の使用時に動かない部分である。よって、基部16によって、マニピュレータ14の他のコンポーネントまたはシステム10全体の固定基準座標系(すなわち仮想ゼロ姿勢(virtual zero pose))が与えられる。一般に、マニピュレータ座標系MNPLの原点が基部16の固定基準点に定義される。なお、基部16は、1つ以上のリンク18など、マニピュレータ14の任意の適切な部分に対して定義することができる。また、これに代えてまたは加えて、マニピュレータ14がマニピュレータカート17に物理的に取り付けられている場合などには、基部16をマニピュレータカート17に対して定義することもできる。一例では、基部16は、関節J1の軸と関節J2の軸との交点に定義される。したがって、関節J1と関節J2は現実には可動コンポーネントであるが、関節J1の軸と関節J2の軸との交点は、マニピュレータ座標系MNPLにおいて動かない仮想固定基準点となる。
【0033】
ツール20は、マニピュレータ14に接続され、マニピュレータ14によって動かすことができる。具体的には、マニピュレータ14は、リンク18のジョイントJ1~J6のうち1つ以上を動かして、ツール20を基部16に対して移動させる。ツール20は、エンドエフェクタ22であるか、あるいはその一部を成すものである。ツール20は、あるモードでは生体構造と相互作用し、他のモードではオペレータによって把持され得る。マニピュレータ14とツール20の構成については、その一例が「Surgical Manipulator Capable of Controlling a Surgical Instrument in Multiple Modes(複数のモードで外科器具を制御可能な外科マニピュレータ)」の名称で発行されている米国特許第9119655号明細書に記載されている。同文献の開示内容は、引用することによって本明細書の一部をなすものとする。また、ツール20は、「End Effector of a Surgical Robotic Manipulator(外科ロボットマニピュレータのエンドエフェクタ)」の名称で2014年3月15日に出願されている米国特許出願公開第2014/0276949号に示されているツールと同様なものとすることができる。同文献の開示内容も、引用することによって本明細書の一部をなすものとする。ツール20は、患者の生体構造を処置するように構成された外科ツールであってよく、あるいはマニピュレータ14が用いる他の任意の種類の(外科用または非外科用)ツールとすることもできる。また、マニピュレータ14とツール20とは、本明細書において具体的に説明した構成以外の構成にも組み込むことができる。
【0034】
一例では、ツール20は、手術部位で患者12の組織に接触するように設計されたエネルギーアプリケータ24を備えている。エネルギーアプリケータ24は、ドリル、鋸刃、バー、超音波振動チップなどであり得る。また、ツール20は、ツール中心点(TCP)を有してよい。ツール中心点は、一例では、エネルギーアプリケータ24に定義される所定の基準点である。ツール中心点は、ツールの座標系において既知の位置を有している。一例では、ツール20が有する球形状の特徴の中心にツール中心点を位置付けて、単点のみを追跡対象とすることが想定される。所定の直径を有するバーにツール中心点を関連付けることもできる。他の例では、ツール20は、プローブ、切削ガイド、ガイドチューブなどの、生体構造に対して手持ち式ツールを案内するためのガイド部材であってもよい。
【0035】
ここで図2を参照して、システム10は、マニピュレータ14に接続されたコントローラ30を備えている。コントローラ30は、マニピュレータ14を制御してツール20を動かすためのソフトウェア、ハードウェア、またはその両方を備えている。コントローラ30は、マニピュレータ14の動きを指示して、ある座標系に対するツール20の状態(位置、向き、またはその両方)を制御する。図1に示すように、一例では、当該座標系はマニピュレータ座標系MNPLである。マニピュレータ座標系MNPLの原点は、マニピュレータ14に対して任意の適切な姿勢で位置付けられる。また、マニピュレータ座標系MNPLの各座標軸も任意に選択することができる。一般に、マニピュレータ座標系MNPLの原点は、基部16の固定基準点に定義される。マニピュレータ座標系MNPLについては、その一例が「Surgical Manipulator Capable of Controlling a Surgical Instrument in Multiple Modes(複数のモードで外科器具を制御可能な外科マニピュレータ)」の名称で発行されている米国特許第9119655号明細書に記載されている。同文献の開示内容は、引用することによって本明細書の一部をなすものとする。
【0036】
図1に示すように、システム10は、ナビゲーションシステム32をさらに備えることができる。ナビゲーションシステム32は、様々なオブジェクト(対象物)の動きを追跡するように構成される。そのようなオブジェクトの例としては、ツール20や、大腿骨F、脛骨Tなどの生体構造が挙げられる。ナビゲーションシステム32は、これらのオブジェクトを追跡して、(ナビゲーション)ローカライザ座標系LCLZに関する各オブジェクトの状態情報を収集する。本明細書に記載の変換技術を使用して、ローカライザ座標系LCLZの座標をマニピュレータ座標系MNPLの座標に変換したり、逆にマニピュレータ座標系MNPLの座標をローカライザ座標系LCLZの座標に変換したりすることができる。ナビゲーションシステム32については、その一例が「Navigation System Including Optical and Non-Optical Sensors(光学センサと非光学センサとを備えるナビゲーションシステム)」の名称で2013年9月24日に出願された米国特許第9008757号明細書に記載されている。同文献の開示内容は、引用することによって本明細書の一部をなすものとする。
【0037】
ナビゲーションシステム32は、ナビゲーションコンピュータ36や他の種類の制御ユニットを収容するカートアセンブリ34を備えている。ナビゲーションインタフェースは、ナビゲーションコンピュータ36と動作可能に通信を行うものである。ナビゲーションインタフェースは、1つ以上のディスプレイ38を含む。ナビゲーションシステム32は、当該1つ以上のディスプレイ38を使用して、追跡対象のオブジェクトの相対的な状態を、オペレータに対してグラフィック表現として表示することができる。また、入力デバイス40を使用して、ナビゲーションコンピュータ36への情報入力や、ナビゲーションコンピュータ36の何らかの特性に対して他の選択や制御を行うことができる。図1に示すように、入力デバイス40は、インタラクティブなタッチパネルディスプレイを備えている。ただし、入力デバイス40が、キーボード、マウス、マイク(音声駆動)、ジェスチャ制御装置などのうちいずれか1つ以上を備えていてもよい。そして、マニピュレータ14とマニピュレータカート17の少なくとも一方が、マニピュレータコンピュータ26または他の種類の制御ユニットを収容する。コントローラ30は、マニピュレータコンピュータ26、ナビゲーションコンピュータ36、およびそれらの任意の組み合わせ(ただし、これらに限定されない)を備えるシステム10内の1つ以上の任意の適切なデバイスで実装することができる。
【0038】
さらに、ナビゲーションシステム32は、ナビゲーションコンピュータ36と通信するナビゲーションローカライザ44(以下「ローカライザ」)を備えることもできる。一例では、ローカライザ44は光学ローカライザであり、カメラユニット46を備えている。カメラユニット46は、1つ以上の光学センサ50を収容する外部ケーシング48を有している。
【0039】
図1に示す例では、ナビゲーションシステム32は、1つ以上のトラッカを備えている。一例では、これらのトラッカに、ポインタトラッカPT、ツールトラッカ52、第1の患者トラッカ54、および第2の患者トラッカ56が含まれる。図1において、ツールトラッカ52はツール20にしっかりと取り付けられ、第1の患者トラッカ54は患者12の大腿骨Fにしっかりと貼り付けられ、第2の患者トラッカ56は患者12の脛骨Tにしっかりと貼り付けられる。この例では、患者トラッカ54,56は、骨の各部に取り付けられている。ポインタトラッカPTは、生体構造をローカライザ座標系LCLZに登録するためのポインタPに取り付けられている。当業者であれば、各トラッカ52,54,56,PTが、任意の適切な方法でそれぞれのコンポーネントに固定され得ることを理解するであろう。さらに、ナビゲーションシステム32は、本システムの他のコンポーネント用のトラッカを含んでもよい。そのような他のコンポーネントとしては、マニピュレータ14の基部16(トラッカ52B)、カート17、および任意の1つ以上のリンク18が挙げられるが、これらに限定されない。
【0040】
これらのトラッカのうち任意の1つ以上が、能動マーカ58を備えていてもよい。能動マーカ58は、発光ダイオード(LED)を備えることができる。あるいは、トラッカ52,54,56が、カメラユニット46から放出された光を反射する反射体などの受動マーカを有していてもよい。また、本明細書に具体的に記載されていない他の適切なマーカを利用することもできる。
【0041】
ローカライザ44は、トラッカ52,54,56を追跡して、ツール20、大腿骨(F)および脛骨(T)の状態にそれぞれ対応する各トラッカ52,54,56の状態を特定する。そして、ローカライザ44は、これらのトラッカ52,54,56の状態をナビゲーションコンピュータ36に提供する。一例では、ナビゲーションコンピュータ36は、トラッカ52,54,56の状態を特定し、これをマニピュレータコンピュータ26に伝達する。本明細書において、オブジェクトの状態は、追跡対象のオブジェクトの位置、向き、またはその両方、あるいは当該位置と向きの少なくともいずれかの同等物または派生物を定義するデータを含むが、これらに限定されない。例えば、オブジェクトの状態は、オブジェクトの姿勢であってよく、また、線形データや角速度データなどを含み得る。
【0042】
添付の図面では、ナビゲーションシステム32の一例を示しているが、ナビゲーションシステム32は、ツール20および患者12を追跡するのに適した他の任意の構成を有することもできる。一例では、ナビゲーションシステム32とローカライザ44の少なくとも一方が超音波式である。例えば、ナビゲーションシステム32が、ナビゲーションコンピュータ36に接続された超音波撮像装置を備えてもよい。超音波撮像装置は、例えばツール20や患者12などの上述のオブジェクトのいずれかを撮像し、この超音波画像に基づいて、コントローラ30に送信する状態信号を生成する。超音波画像は、2D画像、3D画像、またはそれらの組み合わせであってよい。そして、ナビゲーションコンピュータ36は、ほぼリアルタイムでこれらの画像に対して画像処理を行い、オブジェクトの状態を特定することができる。超音波撮像装置は、任意の適切な構成を有することができ、図1に示すカメラユニット46とは異なる構成を有してもよい。
【0043】
他の例では、ナビゲーションシステム32とローカライザ44の少なくとも一方が無線周波数(RF)式である。例えば、ナビゲーションシステム32が、ナビゲーションコンピュータ36と通信するRF送受信機を備えてもよい。その場合、ツール20と患者12の少なくともいずれかに、RF発振器またはRFトランスポンダを取り付けることができる。このRF発振器またはRFトランスポンダへの通電は、受動的に行われてもよく、あるいは能動的に行われてもよい。RF送受信機は、RF追跡信号を送信し、RF発振器から受信したRF信号に基づいて、コントローラ30に送信する状態信号を生成する。ナビゲーションコンピュータ36とコントローラ30の少なくとも一方が、受信した各RF信号を分析して、これにオブジェクトの相対的な状態を関連付けることができる。RF信号は、任意の適切な周波数を有してよい。RF送受信機は、RF信号を使用してオブジェクトの追跡を効果的に行うことができる任意の適切な位置に配置することができる。さらに、RF発振器またはRFトランスポンダは、任意の適切な構造的構成を有することができ、図1に示すトラッカ52,54,56の構成とは大きく異なる構成を有してもよい。
【0044】
さらに他の例では、ナビゲーションシステム32とローカライザ44の少なくとも一方が電磁式である。例えば、ナビゲーションシステム32が、ナビゲーションコンピュータ36に接続された電磁送受信機を備えてもよい。その場合、ツール20と患者12に、電磁コンポーネントを取り付けることができる。電磁コンポーネントの例としては、任意の適切な磁気トラッカ、電磁トラッカ、誘導トラッカなどが挙げられる。トラッカへの通電は、受動的に行われてもよく、あるいは能動的に行われてもよい。電磁送受信機は、電磁場を生成し、各トラッカから受信した電磁信号に基づいてコントローラ30に送信する状態信号を生成する。ナビゲーションコンピュータ36とコントローラ30の少なくとも一方が、受信した各電磁信号を分析して、これにオブジェクトの相対的な状態を関連付けることができる。このようなナビゲーションシステム32の例もやはり、添付の図面に示すナビゲーションシステム32の構成とは異なる構造的構成を有してもよい。
【0045】
当業者であれば、ナビゲーションシステム32とローカライザ44の少なくとも一方が、本明細書において具体的には記載されていない他の任意の適切なコンポーネントまたは構造を有し得ることを理解するであろう。さらに、添付の図面に示すカメラ式のナビゲーションシステム32に関して上述した技術、方法、コンポーネントのうち任意のものを、本明細書に記載のナビゲーションシステム32の任意の他の例においても実装または提供することができる。例えば、ナビゲーションシステム32は、慣性追跡のみを利用してもよく、あるいは複数の追跡技術の任意の組み合わせを利用してもよい。
【0046】
図2は、コントローラ30のソフトウェアモジュールの例を示す。ソフトウェアモジュールは、マニピュレータコンピュータ26、ナビゲーションコンピュータ36、またはそれらの組み合わせの上で動作する1つ以上のコンピュータプログラムの一部として、システム10の制御を支援するためのデータ処理を行うことができる。ソフトウェアモジュールは、マニピュレータコンピュータ26およびナビゲーションコンピュータ36の1つ以上のプロセッサによって実行される命令を含んでいる。これらの命令は、マニピュレータコンピュータ26、ナビゲーションコンピュータ36、またはそれらの組み合わせ上のメモリに格納される。さらに、オペレータへの指示、オペレータとの通信、あるいはその両方を行うするためのソフトウェアモジュールが、当該1以上のプログラムの一部を構成してもよい。そのようなソフトウェアモジュールも、マニピュレータコンピュータ26、ナビゲーションコンピュータ36、またはそれらの組み合わせ上のメモリに格納される命令を含み得る。オペレータは、第1の入力デバイス40、第2の入力デバイス42、および1つ以上のディスプレイ38と相互作用して、ソフトウェアモジュールとの通信を行う。ユーザインタフェースソフトウェアは、マニピュレータコンピュータ26およびナビゲーションコンピュータ36とは別体のデバイス上で実行することができる。
【0047】
図1および図2に示すように、コントローラ30は、データを処理してマニピュレータ14の動きを指示するように構成されたマニピュレータコントローラ60を備えている。一例では、図1に示すように、マニピュレータコントローラ60は、マニピュレータコンピュータ26上に実装される。マニピュレータコントローラ60は、1つの送信元または複数の送信元からデータを受信し、それを処理することができる。また、コントローラ30は、大腿骨F、脛骨T、ツール20の少なくとも1つに関する状態データをマニピュレータコントローラ60に伝達するためのナビゲーションコントローラ62をさらに備えることができる。マニピュレータコントローラ60は、ナビゲーションコントローラ62から提供される状態データを受信、処理して、マニピュレータ14の動きを指示する。一例では、図1に示すように、ナビゲーションコントローラ62は、ナビゲーションコンピュータ36上に実装される。マニピュレータコントローラ60とナビゲーションコントローラ62の少なくとも一方は、1つ以上のディスプレイ38に大腿骨Fと脛骨Tの少なくとも一方とツール20の画像を表示することにより、患者12やツール20の状態をオペレータに伝達することもできる。また、マニピュレータコンピュータ26またはナビゲーションコンピュータ36は、ディスプレイ38に命令または要請情報を表示し、オペレータと相互作用して、マニピュレータ14に指示を出すこともできる。
【0048】
図2に示すように、コントローラ30は境界生成器66を備えている。境界生成器66は、マニピュレータコントローラ60上に実装され得るソフトウェアモジュールである。あるいは、境界生成器66は、ナビゲーションコントローラ62などの他のコンポーネント上に実装されてもよい。
【0049】
境界生成器66は、図4に示すような、ツール20の動きを制限するための1つ以上の仮想境界55を生成する。ツール20が生体構造の標的部位と相互作用する状況では、図4に示すように、仮想境界55を標的部位に関連付けることができる。仮想境界55は、実際の生体構造に登録された3D骨モデルに対して固定されるように、骨モデルに対して定義することができる。この場合、仮想境界55は、除去すべき組織を除去すべきではない組織から区切る。場合によっては、(例えば、ツールトラッカ52を使用して)ツール20の状態を追跡し、かつ(例えば、患者トラッカ54,56を使用して)生体構造の状態を追跡するナビゲーションシステム32を使用して、仮想境界55に対するツール20の状態を追跡することができる。一例では、マニピュレータ14に、より具体的にはツール20に、反力を加えるタイミングと位置を決定するために、仮想境界55に対するツール20のツール中心点の状態が測定される。仮想境界55やこのような反力に関するさらに詳細な説明については後述する。生体構造に対して仮想境界55を生成し、この仮想境界55と関連させてマニピュレータ14を制御するためのシステムおよび方法については、その一例が「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(手術部位に対する実際のツールの状態と指令されたツールの状態との比較に基づいて外科ロボットシステムにおけるツール動作を修正する技術)」の名称で2016年12月16日に仮出願された米国仮特許出願第62/435254号明細書に説明されている。同文献の開示内容は、引用することによって本明細書の一部をなすものとする。
【0050】
他の例では、ナビゲーションシステム32は、ツール20が避けるべきオブジェクトの状態を追跡するように構成される。この場合、仮想境界55は、避けるべきオブジェクトに関連付けられる。この避けるべきオブジェクトは、ツール20が不注意から相互作用してしまうおそれのある滅菌環境内の任意のオブジェクトであり得る。そのような避けるべきオブジェクトとしては、手術部位以外の患者の部位、外科手術スタッフ、レッグホルダ、洗浄吸引器、患者トラッカ54,56、開創器、他のマニピュレータ14、照明器具などが挙げられるが、これらに限定されない。避けるべきオブジェクトに対して仮想境界55を生成し、この仮想境界55と関連させてマニピュレータ14を制御するためのシステムおよび方法については、その一例が「Systems and Methods for Establishing Virtual Constraint Boundaries(仮想制限境界を確立するためのシステムおよび方法)」の名称で2014年3月12日に出願されている米国特許出願第2014/0276943号明細書に説明されている。同文献の開示内容は、引用することによって本明細書の一部をなすものとする。
【0051】
コントローラ30、より具体的には、マニピュレータコントローラ60は、図2に示すように、ツール経路生成器68となる別のソフトウェアモジュールを実行することができる。ツール経路生成器68は、インプラントを入れるために生体構造の各部位を除去するためなどの目的で、ツール20が通過するべき経路を生成する。ツール経路を生成するためのシステムおよび方法については、その一例が「Surgical Manipulator Capable of Controlling a Surgical Instrument in Multiple Modes(複数のモードで外科器具を制御可能な外科マニピュレータ)」の名称で発行されている米国特許第9119655号明細書に説明されている。同文献の開示内容は、引用することによって本明細書の一部をなすものとする。
【0052】
いくつかの例では、仮想境界55とツール経路の少なくとも一方を、マニピュレータコンピュータ26上やナビゲーションコンピュータ36上ではなくオフラインで生成することができる。その場合、その後のマニピュレータコントローラ60の実行時に、マニピュレータコントローラ60が仮想境界55とツール経路の少なくとも一方を利用してよい。
【0053】
図1に示すように、マニピュレータ14に対して、力/トルクセンサなどのセンサ70を接続することができる。具体的には、遠位側のリンク18とツール20との間に力/トルクセンサ70を取り付けることができる。力/トルクセンサ70は、オペレータがツール20を把持している間にツール20が受ける力、トルク、またはその両方の関数として可変信号を出力するように構成される。これにより、力/トルクセンサ70は、ツール20に加えられる力、トルク、またはその両方の感知を可能にする。以下に説明するように、入力される力とトルクの少なくとも一方を使って、マニピュレータ14の動きを制御する。一例では、力/トルクセンサ70は6DOFセンサであり、これにより、力/トルクセンサ70は、互いに直交する3方向の力と、これら直交する3方向の力それぞれの軸周りの3方向のトルクから成る、ツール20に加えられる力およびトルクを表す信号を出力するように構成される。また、以下に詳述するように、これに加えてまたは代えて、ツール20に加えられる力、トルク、またはその両方を、関節トルクを使って特定することもできる。
【0054】
図3に示すように、コントローラ30は、各リンク18の動きと位置を指令するために各関節モータ21と通信を行う。コントローラ30は、位置センサ(例えば、エンコーダ)19にさらに接続されており、位置センサ19から受信する信号を使用して、各関節(J)の実際の関節角度を測定するように構成されている。コントローラ30は、指令の関節角度まで関節モータ21を動かす指令を、関節モータサブコントローラなどを介して関節モータ21に与える。コントローラ30は、関節(J)の関節トルクの測定値を示す信号を、関節モータ21の1つ以上のトルクセンサ28から受信することができる。コントローラ30はさらに、ツール20に加えられる力、トルク、またはその両方を示す信号を受信するべく、力/トルクセンサ70に接続されている。
【0055】
II.アドミッタンス制御と仮想シミュレーション
一例では、コントローラ30はアドミッタンス式コントローラである。換言すれば、コントローラ30は、制御力と制御トルクの少なくともいずれかを特定して、マニピュレータ14の位置を指令する。以下に、制御力や制御トルクの例を説明する。一例では、コントローラ30は1つのアドミッタンスコントローラを単独で備え、当該1つのコントローラ30が単独で、制御力と制御トルクの少なくともいずれかの特定と分析とを行って力を決定する。換言すれば、この例では、異なる方向の制御力や制御トルク毎に別体のアドミッタンスコントローラを用いる構成をとっていない。ただし、他の例では、コントローラさらに追加して用いることもできる。
【0056】
アドミッタンス制御を使用していることから、本明細書に記載の技術において、いくつかの関節(J)が受動的であるという印象、つまり、(ドアジョイントのように)ユーザが加える力によって関節(J)が直接動かされるという印象を与える場合があるかもしれない。しかしながら、本明細書に記載の例では、関節(J)は能動的に駆動される。システム10および方法は、関節(J)を能動的に駆動して、これにより、特定された制御力と制御トルクの少なくともいずれかに応じてマニピュレータ14の制御を指令することにより、受動的な挙動を模倣する。
【0057】
アドミッタンス制御を用いて力を特定するため、コントローラ30は、図3に示すような構成とされて仮想シミュレーション72を実現する。コントローラ30は、仮想シミュレーション72でツール20のダイナミクスをシミュレーションする。一例では、仮想シミュレーション72は物理エンジンを用いて実現される。この物理エンジンは、前述のコンピュータ26,36のいずれかの非一時メモリに格納され、コントローラ30によって実装される実行可能ソフトウェアである。
【0058】
仮想シミュレーションを行うため、コントローラ30は、ツール20を(例えば、図4に示すような)仮想剛体としてモデリングする。仮想剛体は、動的オブジェクトであり、仮想シミュレーション72を実現するためのツール20の剛体表現である。仮想シミュレーション72に従い、仮想剛体は、デカルトタスク空間において6DOFの移動を自由に行う。仮想剛体の具体例については、次節で説明する。
【0059】
仮想シミュレーション72と仮想剛体に対しては、視覚的表現やグラフィック表現を用いずにシミュレーションなどの演算処理を行うこともできる。したがって、仮想シミュレーション72が仮想剛体のダイナミクスを仮想的に表示することは必須ではない。換言すれば、仮想剛体のモデリングを、処理部が実行するグラフィックアプリケーション内で行う必要性はない。仮想剛体は、仮想シミュレーション72のためにのみ存在するものである。
【0060】
ただし場合によっては、シミュレーションによって表現された、実際のツール20を追従する仮想ツールの動きを手術部位に表示することによって、処置の実施中に視覚的支援を提供することもできる。ただし、その場合に表示されるツール表現は、仮想シミュレーション72の直接の結果として得られるものではない。
【0061】
ツール20を仮想剛体としてモデリングする方法としては、様々なものがあり得る。例えば、仮想剛体は、ツール20の表面または内部にある特徴に対応してもよい。また、これに加えてまたは代えて、仮想剛体の一部がツール20の延在範囲を超えて延在するように、仮想剛体を構成することもできる。仮想剛体は、エンドエフェクタ22全体(ツール20とエネルギーアプリケータ32とを含む全体)を記述するものであってよく、あるいは、エネルギーアプリケータ32を除くツール20を記述するものであってもよい。さらに、仮想剛体がツール中心点に基づいていてもよい。さらに別の例では、仮想剛体は、ツール20の静止位置ではなくツール20の可動域に基づいている。例えば、ツール20が、2つの端点間で揺動するように構成された矢状鋸刃を備える場合がある。その場合、仮想剛体を、当該2つの端点とこれらに挟まれた任意の適切な空間とを含むように静的に定義し、仮想剛体によって仮想境界55に対するツール20の全可動域を記述することができる。また、矢状鋸に関連して上述したモデリング技術以外にも、他の同様のモデリング技術を利用して、ツール20の可動域を効果的に示すことができる。
【0062】
一例では、仮想剛体は、ツール20の質量中心を中心に生成される。ここで、「質量中心(center of mass)」とは、質量中心以外のツール20の点に力が加えられるとともに、それ以外の動きの制約をツール20が受けない、すなわち、マニピュレータ14がそれ以外の動きの制約をツール20に加えない場合にツール20が回転する際の回転中心となる点と理解される。仮想剛体の質量中心は、ツール20の現実の質量中心に近接していてもよいが、必ずしも一致する必要はない。仮想剛体の質量中心は経験的に特定することができる。ツール20をマニピュレータ14に取り付ければ、個々の施術者の好みに合わせて質量中心の位置をリセットすることができる。他の例では、仮想剛体が、重心などのツール20の他の特徴に対応してもよい。
【0063】
コントローラ30は、仮想剛体に対して制御力と制御トルクの少なくともいずれかを仮想的に加えることにより、ツール20の剛体ダイナミクスのシミュレーションを効果的に行う。図3に示すように、仮想剛体に加えられる制御力、制御トルク、またはその両方は、ユーザが加え(そして、力/トルクセンサ70が検出し)た制御力や制御トルクであってもよく、他の挙動および運動に基づく制御力や制御トルクであってもよく、あるいはその両方であってもよい。これらの制御力や制御トルクは、その一部が関節(J)の位置を制御するために加えられ、種々の発生源に由来し得る。このような制御力や制御トルクの1つとして、境界生成器68が生成した仮想境界とツール20との相互作用に応じた反力(Fr)が挙げられる。このような各種の反力(Fr)を生成する技術が次節のメインテーマであり、その詳細は後述する。
【0064】
これに加えて、経路生成器68が提供するツール経路に沿ってツール20の動きを制限するために、制御力や制御トルクを加えてもよい。また、さらに、ツール経路に沿ってツール20の向きを許容範囲に収めるようにツール20の向きを制限するために、このような制御力や制御トルクを加えてもよい。また、仮想剛体に対してバックドライブ制御力を加えることもできる。バックドライブ制御力は(例えば、マニピュレータ14に加えられた外力に基づいて生じる)ツール経路に沿った外乱を示す。また、重力に打ち勝つように、制御力や制御トルクを仮想剛体に加えてもよい。仮想剛体に加えることのできる他の制御力として、関節の可動範囲を超えないようにする力、マニピュレータ14のリンク18間の特異点を回避する力、マニピュレータ14の作業領域境界内にツール20を維持する力などが挙げられるが、これらに限定されない。
【0065】
仮想剛体に加えられるこれらの種々の制御力や制御トルクは、コントローラ30によって検出や特定が行われ、方程式系に入力される。コントローラ30がこの方程式系を解くことにより、当該方程式系を満たす(すなわち、これら種々の制御力や制御トルクおよび任意の適用可能な制約を満たす)運動学的解が得られる。コントローラ60は、(例えば、反復法制約ソルバなどの)任意の適切なアルゴリズム命令を使ってこの計算を実行するように構成され得る。この演算は、仮想シミュレーション72において、マニピュレータ14の次の指令位置を決定するために実行される。つまり、マニピュレータ14の位置決めの際には、ツール20のダイナミクスを物理的に実現する前に、仮想シミュレーション72がツール20の剛体ダイナミクスのシミュレーションを行う。
【0066】
つまり別の角度から理解すれば、以下のように考えられる。仮想シミュレーション72の各繰り返しにおいて、その開始時に仮想剛体は第1の姿勢にある。そしてコントローラ30が、仮想シミュレーション72に制御力と制御トルクの少なくともいずれかを入力して、仮想シミュレーション72において第1の姿勢にある状態の仮想剛体に対して当該制御力や制御トルクを加える。コントローラ30に応答して、仮想剛体は次の姿勢に移行する。この「次の姿勢」は、入力された制御力や制御トルクを満たし、かつデカルト空間内で第1の姿勢とは異なる状態(すなわち、異なる位置、向き、またはその両方)を有する姿勢である。
【0067】
一例では、シミュレーション中に仮想剛体が実際に動くことはない。換言すれば、上記の制御力や制御トルクが方程式系に入力され、計算により解が求められる。各方程式の解は、当該方程式に対応する1以上の制御力に応じた仮想剛体の理論上の動きを示すものであり得る。言い換えれば、加えられた各方向の制御力や制御トルクそれぞれに従って予想される仮想剛体の動きを記述するものである。
【0068】
これに加えてまたは代えて、方程式系を解いている間、仮想剛体が仮想シミュレーション72内で動いてもよい。言い換えれば、方程式系を解く処理の間、仮想剛体は、加えられた制御力や制御トルクに従って動かされ得る。また、方程式系を解いた後に、仮想シミュレーション72において仮想剛体が次の姿勢に移行してもよい。ただし、この「次の姿勢」の表現も厳密に計算上のものであってよく、よって第1の姿勢から第2の姿勢に移行する仮想剛体の動きは起こらなくてもよい。
【0069】
コントローラ30は、仮想シミュレーション72に基づいて仮想剛体の次の姿勢を見定めると、この仮想シミュレーション72に従って関節(J)の動きを指令するように構成される。すなわち、コントローラ30は、デカルト空間内の仮想剛体のダイナミクスを変換することにより、マニピュレータ14の動きを指示して、関節の存在する空間におけるツール20の状態を制御する。例えば、次の姿勢を生じさせる力はヤコビ計算器に入力され、ヤコビ計算器が、デカルト空間内の動きと関節の存在する空間内の動きとの関係を表すヤコビ行列を計算する。
【0070】
一例では、コントローラ30は、仮想シミュレーション72の出力に基づいて、関節(J)に指令すべき適切な関節角度を決定するように構成される。すなわち、コントローラ30は、各関節(J)の指令関節角度を計算する。その後、コントローラ30は各関節(J)の関節角度を調節し、各関節モータ21が出力するトルクの継続的な調整を行う。この出力トルクの調整は、各関節モータ21が自身に関連付けられた関節(J)を駆動して、当該関節(J)を指令関節角度にできる限り近づけるように行われる。コントローラ30は、各関節モータ21が自身に関連付けられた関節(J)を指令関節角度まで駆動するように、各関節モータ21に信号を印加するように構成される。コントローラ30は、指令関節角度に基づいて関節(J)の位置決めを制御するための任意の適切な位置制御アルゴリズムを使用することができる。また、コントローラ30は、能動関節(J)、すなわち、仮想シミュレーション72の出力に基づいて動くことが想定されている関節(J)に対してのみ、指令関節角度を生成することができる。
【0071】
いくつかの例では、図3に示すように、コントローラ30は、各関節(J)に対して個別に(例えば、各能動関節ごとに)指令関節角度を生成する。例えば、各関節(J)に対する検討は逐次的に行われてもよく、その場合、指令関節角度の生成は、J1の指令関節角度からJ6の指令関節角度の順に行っても、その逆の順番で行ってもよい。
【0072】
III.侵入係数に基づいて反力を計算して仮想境界を実現する技術
ここで図4図18を参照し、例えばマニピュレータ座標系MNPLにおけるツール20と仮想境界55との相互作用に応じて、仮想シミュレーション72において仮想剛体に加えられる反力(Fr)を生成する技術を説明する。コントローラ30は、仮想シミュレーション72において仮想ボリューム74に加えられる反力(Fr)に従ってツール20を動かすことによりツール20の動きを仮想境界55に対して制限する指令を、マニピュレータ14に与える。以下では、仮想剛体および仮想境界55の構成および機能、ならびに反力(Fr)を計算するための技術について詳述する。本明細書における各要素の機能についての説明を通じて、これらの技術を実現する方法も完全に理解されるであろう。
【0073】
本明細書に記載の反力(Fr)を計算する技術を実現するため、仮想剛体は図4に示すような仮想ボリューム74として定義される。したがって、仮想剛体は、単点や2D平面の要素ではなく、モデリングで生成された3Dのオブジェクトである。前節で説明した仮想剛体の特徴、機能および構成が、本節で説明する仮想ボリューム74に適用されるものと理解されたい。以下に説明する技術に基づいて明らかとなるように、仮想剛体を仮想ボリューム74とすることにより、仮想剛体を2Dや1Dの要素とする場合と比べて、仮想ボリューム74と仮想境界55との間の動的な相互作用をより正確なものとすることが可能になる。
【0074】
仮想ボリューム74は、様々な構成を有することができる。一例では、仮想ボリューム74は、1個の面と、0個の辺と、0個の頂点とを有している。例えば、図4図18に示すように、仮想ボリューム74は球体である。あるいは、仮想ボリューム74は、1個の面と、0個の辺と、0個の頂点とを有する他の形状であってもよい。そのような他の形状の例としては、回転楕円体(扁長楕円体または扁平楕円体)、楕円体、(例えばドーナツ状円環体などの)環状体、またはそれらの任意の組み合わせなどが挙げられる。1個の面と、0個の辺と、0個の頂点とを有することから、仮想ボリューム74は、その全体に滑らかな表面を有している。以下に説明する技術に基づいて明らかとなるように、面の数が1個の仮想ボリューム74と仮想境界55との相互作用に応じて計算される反力(Fr)は、2個以上の面を有するボリュームと仮想境界55との相互作用に応じて計算される反力(Fr)に比べて、相互作用をより正確に反映した応答を返す可能性が高い。
【0075】
ただし、本明細書に記載の技術を、2個以上の面を有する仮想ボリューム74で実現することも可能である。例えば、仮想ボリューム74は、円錐体または半球体であってもよく、あるいは、複数の高精細な面を有することによって、上述のような面の数が1個で表面が滑らかなボリュームの形(すなわち、球体、回転楕円体、楕円体、環状体)のいずれかを模した任意の形状であってもよい。本明細書に記載の技術の教示内容を考慮することにより、仮想ボリューム74の他の例についても想到できるであろう。
【0076】
図4に、仮想境界55の一例を示す。当然のことながら、任意の数の仮想境界55を利用することができる。複数の仮想境界55を利用する場合、それらは互いに間隔を空けて離されていてもよく、または互いに一体的につながっていてもよい。また、仮想境界55は平面状であってもよく、または多面体状などのより複雑な形状で定義されてもよい。
【0077】
図4に示すように、仮想境界55は、複数の多角形要素80から成るメッシュで定義されている。当該メッシュは、隣接する頂点や辺どうしの位置を合わせて互いに隣接配置される複数の多角形要素80から形成される。
【0078】
各多角形要素80は、少なくとも3つの直線の辺と少なくとも3つの角とを持つ平面形状を有する任意の多角形で形成することができる。理想的には、これら多角形の辺によって、隣接する多角形要素80どうしの間に隙間のないメッシュを形成することができる。一例では、図4に示すように、多角形要素80は三角形である。この三角形は、正三角形、不等辺三角形、二等辺三角形、鈍角三角形、斜角三角形、直角三角形、あるいはそれらの任意の組み合わせなどの任意の種類の三角形であってよい。他の例では、多角形要素80を、四角形(長方形、正方形)、五角形、六角形などとすることもできる。
【0079】
各仮想境界55が、同種の多角形要素80で形成されたメッシュを備えることができる。例えば、図4において、図示の多角形要素80はいずれも三角形である。他の例では、ある仮想境界55が備えるメッシュを形成する多角形要素80の種類と、他の仮想境界55が備えるメッシュを形成する多角形要素80の種類とが異なっていてもよい。さらに他の例では、1つの仮想境界55が備えるメッシュが、同一メッシュ内に2種類以上の多角形要素80を備えてもよい。例えば、同一メッシュ内において、ある種類の多角形要素50の組をある部分に配置し、他の種類の多角形要素50の組を他の部分に配置することができる。仮想境界55、メッシュ、および多角形要素80は、本明細書に記載、図示する構成とは異なる構成を備えてもよいことを理解されたい。
【0080】
上述したように、仮想シミュレーション72において、仮想ボリューム74は、自身に加えられる制御力や制御トルクに従って、仮想境界55への相互作用、仮想境界55への侵入の試み、または他の形での仮想境界55への侵入(仮想境界55の踏み越え)を行うことができる。仮想ボリューム74が仮想境界55を押すと、仮想ボリューム74と仮想境界55の少なくとも一方に加えられる圧縮衝撃によって仮想境界55が押し戻される。簡略化のため、図中、仮想ボリューム74によって仮想境界55に加えられる(あるいは、逆に仮想境界55によって仮想ボリューム74に加えられる)衝撃力をFで示す。この衝撃力(F)を相殺するべく、コントローラ30は、仮想ボリューム74に加えるべき圧縮に反発する反力(Fr)を生成する。したがって、反力(Fr)は、仮想シミュレーション72においてコントローラ30が満たそうと試みる方程式系の1成分である。よって、仮想シミュレーション72時に、仮想ボリューム74は、反力(Fr)以外にも他の複数の制御力、トルク、あるいはその両方を受け得ることを理解されたい。なお、上述したように、仮想ボリューム74と仮想境界55との間の相互作用は、グラフィックな存在である必要はなく、当該相互作用のパラメータや変数を方程式系に与えて解を求めることにより表現される、単に計算上の存在であってよい。
【0081】
コントローラ30は、仮想シミュレーション72において仮想ボリューム74が1つ以上の多角形要素80に侵入する場合に、その侵入に応じた特異的な反力(Fr)を計算するように構成される。ここで、反力(Fr)は、多角形要素80のジオメトリに対して境界が画定される仮想ボリューム74のジオメトリの関数である侵入係数に基づいて計算される。以下の例から明らかとなるように、仮想ボリューム74のジオメトリは2Dであっても3Dであってもよい。仮想ボリューム74のジオメトリの境界は、多角形要素80によって画定されている。例えば、仮想ボリューム74のジオメトリの境界は、多角形要素80の外周によって画定される。換言すれば、1つの多角形要素80に対して考慮される仮想ボリューム74のジオメトリの範囲は、その多角形要素80の外周より内側に存在する仮想ボリューム74のジオメトリの範囲である。以下では、侵入係数の種々の計算例について詳述する。以下の計算例は、それぞれ単独で用いることもできるほか、互いに組み合わせて用いることもできる。
【0082】
A.投影領域
図5図15に示す一例によれば、コントローラ30は、仮想ボリューム74と多角形要素80との交わりによって定義される投影領域90に関係付けられた侵入係数に基づいて反力(Fr)を計算するように構成される。
【0083】
この例において、「投影(projected)」という用語は、仮想ボリューム74と多角形要素80との交わりによって定義される領域90が多角形要素80の平坦面に対してマッピングされることを意味する数学的表現である。なお、図中、投影領域90の面積を符号Aprojで示す。また、いずれの図においても、投影領域90を網掛けの領域で示している。
【0084】
投影領域90は、多角形要素80によって境界を画定されている。より具体的には、投影領域90は、多角形要素80の外周によって境界を画定されている。換言すれば、1つの多角形要素80に対して考慮される投影領域90の範囲は、その多角形要素80の外周より内側に存在する投影領域90の範囲である。以下では、仮想ボリューム74が複数の多角形要素80に侵入する例について説明する。
【0085】
本明細書の記載および図面から明らかなように、仮想ボリューム74の定義は、仮想ボリューム74の侵入の直線的な深さ(すなわち、仮想ボリューム74が、多角形要素80や仮想境界55より内部に突き出る距離)に対して、投影領域90が非線形に変化するように行われる。反力(Fr)は、侵入の直線的な深さの変化に合わせて変化し得るものではあるが、反力(Fr)の計算は、侵入の直線的な深さを使わずに、投影領域90に基づいて行われる。
【0086】
上述したように、反力(Fr)は投影領域90に関係付けられる。一例では、反力(Fr)は投影領域90と直接相関する。これに加えてまたは代えて、反力(Fr)が投影領域90の面積に比例してもよい。一例では、反力(Fr)を、バネ定数kを有するバネとしてモデリングすることができる。バネ定数kにAprojを乗じることにより、反力(Fr)を求めることができる(F=k×Aproj)。ばね定数kは、設計構成に応じて、ツール20の仮想境界55への侵入にどれだけ強く反発する必要があるかを反映した任意の適切な値とすることができる。
【0087】
一例では、反力(Fr)は、多角形要素80の平面に垂直なベクトルとして印加される。多角形要素80の平面に対するベクトルの位置は、多角形要素80にマッピングされる投影領域90の位置によって変化し得る。反力(Fr)の大きさは、投影領域90の大きさによって変化し得る。侵入時の仮想ボリューム74の姿勢と投影領域90の少なくともいずれかによっては、反力(Fr)ベクトルの多角形要素80の平面に対する角度が、垂直以外の角度となる場合もある。以下では、投影領域90から反力(Fr)を計算する技術について説明する。
【0088】
コントローラ30は、仮想シミュレーション72において仮想ボリューム74に反力(Fr)を加えて、仮想ボリューム74による多角形要素80への侵入を抑制するように構成される。したがって、反力(Fr)は、衝撃力(F)の一部またはすべてを相殺するように構成される。反力(Fr)は、仮想ボリューム74に直接加えられてもよく、仮想境界55に加えられてもよく、あるいはその両方に加えられてもよいことを理解されたい。いずれの場合も、仮想ボリューム74に反力(Fr)を加えると、仮想ボリューム74に加速度が生じ、仮想ボリューム74の速度(したがって姿勢)が変化する。なおこの変化は、仮想ボリューム74が仮想境界55に作用する間持続する。仮想ボリューム74と仮想境界55との間の衝撃の大きさは時間とともに変化する傾向にあるため、コントローラ30は衝撃力(F)を最小化する複数のインパルスを生成するように構成され得る。インパルスを繰り返し生成することにより、仮想ボリューム74に加える反力(Fr)を算出することができる。インパルスは、時間に関する反力(Fr)の積分量である。インパルスは、反力(Fr)の瞬時増加の作用と理解することもできる。
【0089】
ここで、図5図7を参照する。図5図7は、衝撃力(F)に従って(例えば、球体の)仮想ボリューム74が1つの(例えば、三角形の)多角形要素80に侵入する状況での投影領域90を説明する例を示す。なお、説明の簡略化のため、図中、慣例的な表記に則り、力を示す矢印の長さでその力の大きさを表している。したがって、力の大きさが大きいほど長い矢印で、力の大きさが小さいほど短い矢印で示す。ただし、矢印の長さは例示的なものに過ぎず、投影領域90とこれに対応する反力(Fr)との間の直接的な数学的相関関係を表すことを意図したものではないことを理解されたい。
【0090】
図5図7は、簡略化のため3つの独立した例を示しているに過ぎず、時間とともに仮想ボリューム74が仮想境界55に徐々に侵入する様子を表すものではないことを理解されたい。これらの例のいずれにおいても、各反力(Fr)が衝撃力(F)を完全に相殺することによって、仮想境界55への侵入を排除している状態を主に示している。
【0091】
なお当然ながら、仮想ボリューム74の侵入は徐々に進むものと考えられる。したがって、当業者であれば、本技術が、多様な態様で繰返し生じる衝撃力(F)に対して、仮想ボリューム74に反力(Fr)を繰返し加えることができることを理解するはずである。つまり、ツール20の状態が仮想境界55に対してその後も刻々と変化するのに応じて、コントローラ30は、反力(Fr)を繰り返し計算し、反力(Fr)を繰り返し加え、そして、仮想シミュレーション72において仮想ボリューム74に加える反力(Fr)に従ってツール20を動かす指令を、マニピュレータ14に繰り返し与えるように構成される。例えば、反力(Fr)は、仮想ボリューム74が仮想境界55との交わりを維持するような不完全な変位を仮想ボリューム74に与えるものであってよい。この場合、仮想シミュレーション72において、このような不完全変位後のツール20の状態が追跡され、仮想ボリューム74の姿勢が更新される。そして、この仮想ボリューム74の姿勢の更新によって、仮想ボリューム74と仮想境界55との交わりが変化し(例えば、小さくなり)、よって投影領域50が小さくなり、ひいては次の反力(Fr)の大きさが小さくなり得る。そしてこれを受けたツール20が、さらに仮想境界55からの不完全変位を起こし得る。このプロセスを、仮想境界55による侵入が完全に無効化されるまで、あるいは閾値に達するまで繰り返すことができる。
【0092】
なお、図中、具体例として多角形要素80を仮想ボリューム74の下方に図示しており、これに基づく向きに関する用語(「上」や「下」など)を用いて、多角形要素80と仮想ボリューム74との向きを説明する場合がある。このような向きに関する用語は、これらの具体例に関するものに過ぎず、本発明の主題の範囲を限定することを意図したものではない。仮想ボリューム74が下から多角形要素80に近づく、仮想ボリューム74が横から多角形要素80に近づくなどの他の向きも可能であることを理解されたい。
【0093】
また、図5図7に示す例では仮想ボリューム74が球体であるため、図示の投影領域90は円形に基づくものとなっている。しかし、当然ながら、仮想ボリューム74の構成や形状、姿勢によっては、仮想ボリューム74の交わり領域、したがって投影領域90が、図示とは異なる大きさや形状を有する場合がある。さらに、図5図7においては、簡略化のため、仮想ボリューム74が多角形要素80の領域の幾何学的中心に侵入しているという想定に基づき、投影領域90は多角形要素80の中心に示されている。しかしながら、仮想ボリューム74の構成や形状、姿勢によっては、投影領域90が多角形要素80の中心からずれている場合がある。
【0094】
ここで図5を参照すると、左端の図は、仮想ボリューム74と多角形要素80を示す側面図である。衝撃力(F)に従って、仮想ボリューム74の最下端部が、多角形要素80に若干侵入している。(図5の中央の図に示す)投影領域90は、仮想ボリューム74と多角形要素80との交わりを表しており、円形となっている。この例では、交わり面における仮想ボリューム74の断面100が投影領域90と一致している。図5では、仮想ボリューム74の最下端部のみが侵入しているため、投影領域90は多角形要素80の領域に比べて小さい。図5の右端の図は、投影領域90に基づいて計算された反力(Fr)を示す。反力(Fr)は、多角形要素80の平面に垂直かつ衝撃力(F)とは反対の方向で仮想ボリューム74に向けられた矢印で示している。図5において、反力(Fr)の矢印の大きさは、投影領域90の相対的な面積を反映したものとなっている。
【0095】
図6では、仮想ボリューム74が多角形要素80により深く侵入しており、よって、仮想ボリューム74と多角形要素80との間の交わりがより大きくなっている。したがって、図6(中央の図)の投影領域90は、図5の投影領域90よりも大きい。図6の投影領域90は、円形に基づいている(つまり、球体の交わりに由来するものである)ものの、円形ではない。むしろ、投影領域90の境界は多角形要素80の外周によって画定されており、考慮される投影領域90の範囲は、多角形要素80の外周内に画定される投影領域90の範囲である。交わり面における仮想ボリューム74の断面領域100は、多角形要素80の境界を超えて延在しており、よって図6では境界外領域92が存在する。これらの境界外領域92は、衝撃を受けた多角形要素80の反力(Fr)の計算において考慮に入れない。そして、図6の投影領域90は図5の投影領域90よりも大きいため、図6の右端の図において、算出された反力(Fr)を示す矢印は、図5の反力(Fr)の矢印よりも大きい。
【0096】
図7は、仮想ボリューム74が多角形要素80にさらに大きく侵入している状態を示す。より詳細には、球形の仮想ボリューム74の半分が多角形要素80に侵入している。そして、予想される通り、図7(中央の図)の投影領域90は、図6の投影領域90よりも大きい。図7の状態においても、境界外領域92は存在し、これら境界外領域92は、反力(Fr)の計算ではやはり考慮外とされる。また、やはり予想される通り、より深く侵入することにより、境界外領域92の面積も、図6の境界外領域92の面積より大きくなっている。そして、図7の右端の図において、算出された反力(Fr)を示す矢印は、図6の反力(Fr)の矢印よりも大きい。当業者であれば、仮想ボリューム74の形状のために投影領域90が逆に減少するほど大きい深さまで侵入する状況を考慮に入れた対策を講じ得ることを理解するであろう。例えば、このような状況は、図7において球形の仮想ボリューム74の半分を上回る部分が多角形要素80に侵入する場合に起こり得る。そのような対策としては、任意の1つの多角形要素80に対するある任意の侵入行為に対して複数の投影領域90を計算してそれらを複合すること、仮想境界55に対する変位体積(変位ボリューム)を考慮することなどを挙げることができる。
【0097】
図5図7に基づいて明らかなように、投影領域90は、侵入の直線的な深さに対して変化する。しかし、侵入する仮想体は立体形状を有しているため、多角形要素80、仮想境界55またはその両方に対して線形の衝撃力(F)を加えることはなく、よって、投影領域90は侵入の直線的な深さに対して線形には変化しない。むしろ、侵入する仮想体が加える衝撃力(F)は、仮想ボリューム74の立体形状の関数であるより高次の力である。したがって、投影領域90は、このより高次の立体形状関数に従って侵入の直線的な深さに対して変化する。換言すれば、投影領域90は、仮想ボリューム74の変位体積(変位ボリューム)すなわち侵入体積(侵入ボリューム)を記述するものである。
【0098】
この可変応答が起こる理由の一つとして、図示の例の仮想ボリューム74が1つの面のみを有しており(例えば、球形であり)、互いに隣接する断面積が等しくないことが挙げられる。例えば、もし仮想ボリューム74が立方体であり、その下面から(仮想ボリューム74と多角形要素80の平らな面どうしがぴったり重なるように)多角形要素80に侵入していたとしたら、図5図7の投影領域90は互いに等しくなる。よって、この場合、図5図7に示す例において、本明細書に記載の技術の異なる反力(Fr)の根拠となる侵入の直線的な深さが相対的に異なっているにも係わらず、反力(Fr)が同じになってしまう。
【0099】
したがって、仮想ボリューム74の侵入に応じて計算される反力(Fr)は、侵入の直線的な深さに対して可変的な応答を示す。ただし、反力(Fr)は、侵入の直線的な深さの変化に合わせて変化し得るものではあるが、実際の反力(Fr)の計算は、投影領域90に基づいて行われる。反力(Fr)の計算が、単に、仮想ボリューム74が多角形要素80や仮想境界55より内部に突き出る直線的な深さのみに基づいて行われることはない。
【0100】
図8および図9に、投影領域90を計算するための技術の例を示す。上述したように、ある多角形要素80に対する投影領域90は、当該多角形要素80内の網掛けの領域で示しており、多角形要素80の延在範囲を超えて延在する境界外領域92は含まない。図8では、具体例として、三角形の多角形要素80に対する投影領域90の計算を示している。
【0101】
図8において、投影領域90は、球形の仮想ボリューム74との交わりによって得られるものであり、よって、円形に基づく形状を有する。図8に示す円は、三角形の多角形要素80との交わり面における仮想ボリューム74の断面領域100を表している。この円は、中心が三角形の多角形要素80の幾何学的中心からずれており、交点94,96で多角形要素80の下辺と交わっている。その結果、断面領域100は下辺によって一部が切り取られて、図示の境界外領域92が生じる。中心点(c)は、仮想ボリューム74の断面領域100の中心であり、半径(r)は断面領域100の半径である。
【0102】
この例では、当該円と多角形要素80との重なりを特定することによって、投影領域90を計算する。具体的には、図8の状況では、円と多角形要素80との交わりが、三角形の多角形要素80の1個の辺にのみ係っている(頂点には係っていない)ため、投影領域90の計算は、円と多角形要素80との重なりを三角形領域Atriと扇形領域Asectorとに分割することにより行われる。三角形領域Atriは、中心点(c)、交点94,96の3点で定義される。三角形領域Atriの底辺(b)は、交点94,96間と定義され、三角形領域Atriの高さ(h)は、中心点(c)と底辺(b)の間の距離と定義される。よって、三角形領域Atriの面積は、式「Atri=1/2bh」で計算される。扇形領域Asectorの面積は、扇形の中心角(θ)に基づく。この中心角(θ)は、中心点(c)と各交点92,94との間にそれぞれ定義される三角形領域Atriの2本の斜辺の間に定義される、中心点(c)を中心とする角である。よって、扇形領域Asectorの面積は、式「Asector=πr×θ/360(°)」で計算される。なお、この例では、円の中心点(c)が多角形要素80の内部に位置している。よって、扇形領域Asectorも多角形要素80の内部に位置する。図8に示すように、三角形領域Atriと扇形領域Asectorとで網掛けの領域全体を占めるため、AtriとAsectorとの和を求めることによって投影領域Aprojが計算される。
【0103】
図9は、三角形の多角形要素80と仮想ボリューム74の円形断面100とに基づく投影領域Aprojの計算を示すさらに別の例である。図9の状況でも、円形断面100と多角形要素80との交わりは、三角形の多角形要素80の1個の辺にのみ係っている(頂点には係っていない)。ただし、この例では、円形断面100の中心点(c)は多角形要素80の外部に位置している。その結果、三角形領域Atri全体と扇形領域Asectorの一部が多角形要素80の外部に位置することになる。したがって、図8の投影領域90は、三角形領域Atriと扇形領域Asectorとの和を求めることによって計算されるが、図9の投影領域90は、扇形領域Asectorから三角形領域Atriを引くことによって計算される。よって、図9の投影領域90は図8の投影領域90よりも小さい。
【0104】
繰り返すが、図8および図9に係る計算は、三角形の多角形要素80と仮想ボリューム74の円形断面100だけに特有のものではない。円形と多角形要素80との交わりが三角形の多角形要素80の1個の辺にのみ係り、その頂点には係らないものであれば、そのような交わりにも適用することができる。当然ながら、投影領域90、したがって投影領域90を計算するための計算は、多角形要素80のジオメトリ、仮想ボリューム74のジオメトリ、およびこれら両ジオメトリの相対的な位置関係に応じて異なり得る。また、図示の例において、投影領域90の計算は、仮想ボリューム74の円形断面100と交わる三角形の多角形要素80の辺の数(0~3本)や頂点の数(0~3個)に応じて異なる。投影領域90の幾何学的計算については、本明細書に記載の計算方法以外にも、任意の幾何学的構成や状況に応じて想到することができるであろう。
【0105】
ここで、図10図12を参照する。図10図12は、仮想シミュレーション72において仮想ボリューム74が複数の多角形要素(例えば、80A~80F)に同時に侵入する場合に、その侵入に応じて複数の反力(例えば、Fr~Fr)が生成される例を示す。簡略化のため、図10図12の例においても引き続き、三角形の多角形要素80と仮想ボリューム74の円形断面100を例に説明を行う。
【0106】
図10では、球形の仮想ボリューム74が、多角形要素80A~80Fで構成される仮想境界55に侵入している。なお、この例では、多角形要素80A~80Fが同一平面上にあると想定している。当然ながら、仮想境界55のメッシュは、多角形要素80A~80F以外にもさらに多角形要素を備えてもよく、種々の多角形要素80を、非平面状の配置となる角度で互いに隣接して配置することもできる。図5図9では、ただ1つの多角形要素80との交わりについて図示、説明したが、図10では、仮想ボリューム74の円形断面100は、多角形要素80A~80Fが共有する中心頂点で多角形要素80A~80Fと交わる。したがって、各多角形要素80A~80Fにマッピングされる投影領域90A~90Fは互いに等しい。簡略化のため、この例では、投影領域90A~90Fが互いに等しいものとして説明するが、多角形要素80A~80Fの間で投影領域90の形状は異なっていてもよい(あるいは投影領域90がないものがあってもよい)ことを理解されたい。反力(Fr~Fr)は、多角形要素80A~80Fごとに計算される。反力(Fr~Fr)は、仮想ボリューム74と多角形要素80A~80Fとの交わりによって定義される投影領域90A~90Fに、それぞれ関係している。投影領域90A~90Fの境界もやはり、多角形要素80A~80Fによってそれぞれ画定される。したがって、この例では、反力(Fr~Fr)も互いに等しい。
【0107】
図10において、コントローラ30は、複数の反力(Fr~Fr)を仮想ボリューム74に同時に加えて、仮想ボリューム74による仮想境界55への侵入を相殺するように構成される。図10の具体例では、複数の反力(Fr~Fr)が個別に、仮想ボリューム74に加えられる。例えば、各多角形要素80が、仮想ボリューム74による侵入に対して個別に反応してもよい。反力(Fr~Fr)は、それぞれの多角形要素80A~80Fに対応する位置に従ってそれぞれ加えられる。なお、側面図の限界のため、反力(Fr~Fr)の位置が、図10の側面図に示す位置とは若干異なる場合がある。
【0108】
図11の状況は、コントローラ30が複数の反力(Fr~Fr)を合成して、合成反力(FrTotal)を生成する点を除き、図10の状況と同様である。コントローラ30は、1つの合成反力(FrTotal)を仮想ボリューム74に一回で加えて、仮想ボリューム74による仮想境界55への侵入を相殺するように構成される。合成反力(FrTotal)の大きさは、複数の反力(Fr~Fr)の大きさの総和を求めることにより計算することができる。よって、この例の場合、合成反力(FrTotal)の大きさは、1つの反力(Fr~Fr)の大きさの6倍となる。合成反力(FrTotal)の位置は、複数の反力(Fr~Fr)の位置を平均化する、つまりそれらの位置の中心を求めることにより計算できる。よって、この例の場合、合成反力(FrTotal)の位置は、多角形要素80A~80F間で共有される中心頂点と一致する。また、この例では、多角形要素80A~80Fが同一平面上にあると想定しているため、合成反力(FrTotal)の方向は、当該平面に垂直かつ衝撃力(F)とは反対の方向となる。なお、合成反力(FrTotal)の大きさ、位置、および方向は、本明細書に記載の方法以外の方法に従って計算することもできる。
【0109】
いくつかの例では、コントローラ30は、仮想ボリューム74が行う複数の多角形要素80に対する任意の同時侵入行為において、合成反力が一定となるように、各反力(Fr)に重み係数を掛けることができる。換言すれば、コントローラ30は、アフィン結合アルゴリズムを利用して、これらの重み係数の総和が一定となるように重み係数を操作することができる。例えば、重み係数は、仮想境界55が平坦面である場合に総和が1となるように定義することができる。また、2つの仮想境界55が互いに垂直またはほぼ垂直である場合に総和が1より大きくなるように、重み係数を定義することができる。さらに、仮想境界の端部では総和が1未満となるように、重み係数を定義することができる。この技術は、これらの各状況に応じて、仮想ボリューム74の侵入に対して予測可能かつ滑らかな応答を与え、よってユーザにとって自然な応答を与えることに役立つものである。言い換えれば、ユーザに予想外の力の増大や減少を感じさせてしまうことはない。
【0110】
図12では、球形の仮想ボリューム74が、多角形要素80A~80Dで構成される仮想境界55に侵入している。図10および図11とは異なり、図12の仮想ボリューム74の円形断面100と各多角形要素80A~80Dとの交わりは互いに等しくない。むしろ、多角形要素80Aにマッピングされる投影領域90Aは、多角形要素80B~80Dにマッピングされる投影領域90B~90Dに比べて大きい。一方、投影領域90B~90Dは互いに等しい。反力(Fr~Fr)は、多角形要素80A~80Fごとに計算される。投影領域90Aが投影領域90B~90Dに比べて大きいため、投影領域90Aに関係する反力(Fr)も、投影領域90B~90Dに関係する各反力(Fr~Fr)に比べて大きくなる。やはり、反力(Fr~Fr)は、それぞれの多角形要素80A~80Dに対応する位置に従ってそれぞれ加えられる。なお、側面図の限界のため、反力(Fr~Fr)の位置が、図12の側面図に示す位置とは若干異なる場合がある。
【0111】
図12において、侵入の直線的な深さは多角形要素80A~80Dの間で同一であり、よって本明細書に記載の投影領域技術の動的な応答をさらに例示するものである。ただし、多角形要素80Aの投影領域90Aは多角形要素80B~80Dの各投影領域90B~90Dに比べて大きいため、投影領域90Aに関係する反力(Fr)は他の各反力(Fr~Fr)に比べて大きく、これは、まさにこの特定の仮想ボリューム74の侵入によって与えられる衝撃を正確に記述したものである。したがって、この例は、投影領域90、したがって反力(Fr)が侵入の直線的な深さに対して線形には変化しないことを示すさらなる例である。
【0112】
以上説明した例は、多角形要素80が同一平面上にある状況を説明するものであった。しかしながら、本明細書に記載の技術は、多角形要素80が異なる平面上にある状況にも同様に適用することができる。このような状況の一例として、仮想ボリューム74が多角形要素80の成す角に衝突する場合が挙げられる。例えば、図13図15は、衝撃力(F)に従って(例えば、球体の)仮想ボリューム74が2つの(例えば、正方形の)多角形要素80A,80Bに侵入する状況で投影領域90を使用する場合を説明する。具体的には、2つの多角形要素80A,80Bは、仮想境界55の出隅角を成すものである。
【0113】
図13図15は、簡略化のため3つの独立した例を示しているに過ぎず、時間とともに仮想ボリューム74が仮想境界55に徐々に侵入する様子を表すものではないことを理解されたい。これらの例のいずれにおいても、各反力(Fr)が衝撃力(F)を完全に相殺することによって、仮想境界55による侵入を排除している状態を主に示している。なお当然ながら、仮想ボリューム74の侵入は徐々に進むものと考えられる。したがって、当業者であれば、本技術が、多様な態様で繰返し生じる衝撃力(F)に対して、仮想ボリューム74に反力(Fr)を繰返し加えることができることを理解するはずである。
【0114】
ここで図13を参照する。図13は、仮想ボリューム74と多角形要素80A,80Bとを示す側面図を含む。図13はさらに、多角形要素80Aの上面図と、多角形要素80Bの正面図も含む。仮想ボリューム74は、多角形要素80Aに侵入するが、多角形要素80Bには侵入しない。投影領域90Aは円形であり、仮想ボリューム74と多角形要素80Aとの交わりを表す。反力(Fr)は、投影領域90Aに基づいて計算され、衝撃力(F)とは反対の方向に仮想ボリューム74に加えられる。この例では、仮想ボリューム74による侵入位置のため、投影領域90Aは多角形要素80Aの正方形の中心にマッピングされる。したがって、反力(Fr)は、多角形要素80Aの中心位置、よって、侵入する仮想ボリューム74の中心位置に加えられる。さらに、投影領域90Aは、仮想ボリューム74の断面領域100全体である。したがって、反力(Fr)は比較的強い大きさで加えられる。
【0115】
図14の例は、仮想ボリューム74が、出隅角から多角形要素80A,80Bの両方に侵入している状態を示す。侵入位置のため、多角形要素80A,80Bにマッピングされる各投影領域90A,90Bは、いずれも仮想ボリューム74の断面領域100の一部に過ぎない。投影領域90Aに基づいて計算される反力(Fr)は、多角形要素80Aへの衝撃とは反対の方向で仮想ボリューム74に加えられる。一方、投影領域90Bに基づいて計算される反力(Fr)は、これとは異なる方向つまり、多角形要素80Bへの衝撃とは反対の方向で仮想ボリューム74に加えられる。衝撃の位置に基づき、投影領域90Aは多角形要素80Aの右端にマッピングされ、投影領域90Bは多角形要素80Bの上端にマッピングされる。したがって、反力(Fr)は、多角形要素80Aの右端近くの位置に加えられ、反力(Fr)は、多角形要素80Bの上端近くの位置に加えられる。さらに、投影領域90A,90Bはいずれも仮想ボリューム74の断面領域100の一部に過ぎないため、各反力(Fr),(Fr)は、図13で加えられる反力(Fr)の大きさよりも小さい大きさでそれぞれ加えられる。図13図14で侵入の直線的な深さは同一ではあるにも関わらす、このような相違がある。
【0116】
図15では、仮想ボリューム74が、図14よりさらに小さい部分で、出隅角から多角形要素80A,80Bの両方に侵入している。また、図15の侵入の直線的な深さは、図13および図14よりも小さい。また、図14と比較すると、図15の投影領域90A,90Bの方が小さく、また図15の反力(Fr)の方が、多角形要素80Aの右端により近い位置で加えられ、図15の反力(Fr)の方が、多角形要素80Bの上端により近い位置で加えられる。さらに、各反力(Fr),(Fr)は、図14で加えられる反力(Fr),(Fr)の大きさよりも小さい大きさでそれぞれ加えられる。
【0117】
これらの例から明らかなように、投影領域90を使用して、出隅角での反力(Fr),(Fr)を計算する技術により、仮想境界55に対して自然な応答が得られる。例えば、図13では1つの多角形要素80Aに侵入し、図14では出隅角から2つの多角形要素80A,80Bに侵入しているが、本技術は、反力(Fr)を徐々に増加させることができる。言い換えれば、投影領域90の増加を反力(Fr)の増加に換算し、投影領域90の減少を反力(Fr)の減少に換算する。これにより、本技術は、仮想境界55との衝突時にツール20の突発的または不自然な動きを引き起こす反力(Fr)の不連続な急変を回避する。つまり、図13の投影領域90Aは、図14の投影領域90A,90Bを足し合わせたものとほぼ同じ面積であるため、仮想ボリューム74が同じ直線的な深さで実質2重に侵入を行っても、滑らかな応答が与えられる。換言すれば、投影領域90A,90Bを使ってそれぞれの反力(Fr),(Fr)を計算することにより、ツール20が出隅角に沿って動く間に予想外のキックバックを起こしてしまうことが抑制される。したがって、本明細書に記載の技術は、表面モデリングが有する、角に関する問題を解決するものである。また、本技術は、非平面状に配置された複数の多角形要素80に同時に仮想ボリューム74が侵入する他の任意の例にも完全に適用することができる。そのような例としては、入隅角、山部、谷部などが挙げられるが、これらに限定されない。
【0118】
B.投影弧
図16および図17に示す他の例によれば、コントローラ30は、投影弧200に関係付けられた侵入係数に基づいて反力(Fr)を計算するように構成される。投影弧200は、仮想ボリューム74と多角形要素80が交わる時に多角形要素80のジオメトリによって境界を画定される仮想ボリューム74の断面領域100が有するすべての円弧202の組み合わせで定義される。
【0119】
なお、「投影(projected)」という用語は、仮想ボリューム74と多角形要素80との交わりによって定義される円弧202が多角形要素80の平坦面に対してマッピングされることを意味する数学的表現である。
【0120】
投影弧200は、多角形要素80によって境界を画定されている。より具体的には、投影弧200は、多角形要素80の外周によって境界を画定されている。換言すれば、1つの多角形要素80に対して考慮される投影弧200の範囲は、その多角形要素80の外周より内側に存在する投影弧200の範囲である。
【0121】
仮想ボリューム74の定義は、仮想ボリューム74の侵入の直線的な深さ(すなわち、仮想ボリューム74が、多角形要素80や仮想境界55より内部に突き出る距離)に対して、投影弧200が非線形に変化するように行われる。反力(Fr)は、侵入の直線的な深さの変化に合わせて変化し得るものではあるが、反力(Fr)の計算は、侵入の直線的な深さを使わずに、投影弧200に基づいて行われる。
【0122】
この例では、反力(Fr)は投影弧200に関係付けられる。一例では、反力(Fr)は投影弧200と直接相関する。これに加えてまたは代えて、反力(Fr)が投影弧200の面積に比例してもよい。
【0123】
反力(Fr)は、多角形要素80の平面に垂直なベクトルとして印加することができる。多角形要素80の平面に対するベクトルの位置は、多角形要素80にマッピングされる投影弧200の位置によって変化し得る。反力(Fr)の大きさは、投影弧200の大きさによって変化し得る。侵入時の仮想ボリューム74の姿勢と投影弧200の少なくともいずれかによっては、反力(Fr)ベクトルの多角形要素80の平面に対する角度が、垂直以外の角度となる場合もある。以下では、投影弧200から反力(Fr)を計算する技術について説明する。
【0124】
比較のため、図16および図17では、上述の投影領域90の計算の説明のために使用した図8および図9に示したものと同一の幾何学図形の例を使って、投影弧200の計算を説明している。
【0125】
図16に、三角形の多角形要素80との交わり面における仮想ボリューム74の断面領域100を示す。断面領域100の円は、中心が三角形の多角形要素80の幾何学的中心からずれており、交点94,96で多角形要素80の下辺と交わっている。その結果、断面領域100は下辺によって一部が切り取られる。中心点(c)は、仮想ボリューム74の断面領域100の中心であり、半径(r)は断面領域100の半径である。
【0126】
この例では、投影弧200は、仮想ボリューム74と多角形要素80が交わる時に多角形要素80のジオメトリによって境界を画定される仮想ボリューム74の断面領域100が有するすべての円弧202の組み合わせで定義される。換言すれば、投影弧200の計算は、多角形要素80の領域内にある断面領域100の外周となる円弧202を特定することにより行われる。具体的には、図16の状況では、円と多角形要素80との交わりが、三角形の多角形要素80の1個の辺にのみ係っている(頂点には係っていない)ため、投影弧200の計算は、断面領域100を、部分円弧202aと部分円弧202bとに分割することにより行われる。ここで、部分円弧202a,202bは、それぞれ扇形の中心角θ,θで定義される。なお、この例では、断面領域100の中心点(c)が多角形要素80の内部に位置している。よって扇形の中心角θ,θは、この中心点(c)を中心に交点94,96の間にそれぞれ定義され、2つの角度を足すと360度に等しくなる。図示の通り、扇形の中心角θに基づく部分円弧202aは、その全体が多角形要素80の内部にあり、境界を多角形要素80によって画定されている。一方、扇形の中心角θに基づく部分円弧202bは、その全体が多角形要素80の外部にあり、多角形要素80の境界外にある。ここで、投影弧は、式「Arcproj=θ/360」で計算することができる。式中、角度θは、多角形要素80によって境界が画定される部分円弧202をもたらす扇形の中心角である。よって、図16の例では、多角形要素80によって境界が画定される部分円弧202aがθによって決まるため、Arcproj=θ/360である。なお上式の分子に、2つ以上の扇形の中心角を入力して、Arcproj=(θ+θ+…)/360とすることで、これら複数の扇形の中心角の総和から投影弧200を導き出すこともできる。また、上式の値に乗算やスケーリングなどの修正を加えて、投影弧200から得られる結果を標準化することもできる。また例えば、投影弧200は、部分円弧202に対応する扇形の中心角の角度ではなく、部分円弧202の長さに基づくものであってもよい。
【0127】
図17は、三角形の多角形要素80と仮想ボリューム74の円形断面100とに基づく投影弧200の計算を示すさらに別の例である。図17の状況でも、円形断面100と多角形要素80との交わりは、三角形の多角形要素80の1個の辺にのみ係っている(頂点には係っていない)。ただし、この例では、円形断面100の中心点(c)は多角形要素80の外部に位置している。投影弧200の計算は、上述と同様の方法で行われる。ただし、図16に比べて、扇形の中心角θが小さくなり、扇形の中心角θが大きくなっている。よって、図16に比べて、扇形の中心角θによって決まる部分円弧202aが短くなり、扇形の中心角θによって決まる部分円弧202bが長くなっている。ここで、投影弧200は、多角形要素80内に画定される部分円弧202aに基づく。したがって、図16図17を比較すると、図17に示す例は、仮想ボリューム74による侵入の衝撃がより小さい場合に、投影弧200がより小さくなること、一般化すると、反力(Fr)が小さくなることを示している。
【0128】
繰り返すが、図16および図17に係る計算は、三角形の多角形要素80と仮想ボリューム74の円形断面100だけに特有のものではない。円形と多角形要素80との交わりが三角形の多角形要素80の1個の辺にのみ係り、その頂点には係らないものであれば、そのような交わりにも適用することができる。当然ながら、投影弧200、したがって投影弧200を計算するための計算は、多角形要素80のジオメトリ、仮想ボリューム74のジオメトリ、およびこれら両ジオメトリの相対的な位置関係に応じて異なり得る。また、図示の例において、投影弧200の計算は、仮想ボリューム74の円形断面100と交わる三角形の多角形要素80の辺の数(0~3本)や頂点の数(0~3個)に応じて異なる。そして、仮想ボリューム74の断面領域100が円形ではなく、楕円形などである場合には、より複雑な部分円弧202を計算することができる。投影弧200の幾何学的計算については、本明細書に記載の計算方法以外にも、任意の幾何学的構成や状況に応じて想到することができるであろう。
【0129】
図16および図17に基づいて明らかなように、投影弧200は、侵入の直線的な深さに対して変化する。しかし、侵入する仮想体は立体形状を有しているため、多角形要素80、仮想境界55またはその両方に対して線形の衝撃力(F)を加えることはなく、よって、投影弧200は侵入の直線的な深さに対して線形には変化しない。むしろ、侵入する仮想体が加える衝撃力(F)は、仮想ボリューム74の立体形状の関数であるより高次の力である。したがって、投影弧200は、このより高次の立体形状関数に従って侵入の直線的な深さに対して変化する。換言すれば、投影弧200は、多角形要素202の平面内にある部分円弧202をとらえることにより、仮想ボリューム74の変位体積(変位ボリューム)すなわち侵入体積(侵入ボリューム)を記述するものである。ここでも、投影弧200が可変的である理由の一つとして、図16および図17に示す例の仮想ボリューム74が1つの面のみを有しており(例えば、球形であり)、互いに隣接する断面積が等しくないことが挙げられる。
【0130】
したがって、仮想ボリューム74の侵入に応じて計算される反力(Fr)は、侵入の直線的な深さに対して可変的な応答を示す。ただし、反力(Fr)は、侵入の直線的な深さの変化に合わせて変化し得るものではあるが、実際の反力(Fr)の計算は、これらの例では投影弧200に基づいて行われる。反力(Fr)の計算が、単に、仮想ボリューム74が多角形要素80や仮想境界55より内部に突き出る直線的な深さのみを用いて行われることはない。
【0131】
図5図7に関連して投影領域90について説明した例や他の可能例は、投影弧200についても十分理解できると思われるため、ここではその説明を省略して簡略化する。なお、当然ながら、当業者であれば、投影弧200に基づいて計算した反力(Fr)が、投影領域90に基づいて計算した反力(Fr)とは異なる可能性があることを理解するであろう。さらに、投影弧200を繰返し計算した結果を基に、反力(Fr)を繰返し加えることも十分想到されるであろう。
【0132】
さらに、図10図12では、仮想ボリューム74が複数の多角形要素(例えば、80A~80F)に同時に侵入する場合に、その侵入に応じて複数の反力(例えば、Fr~Fr)を投影領域90を使って計算、生成する例を示したが、これらの例についても、投影弧200を使用した本明細書に記載の技術にあてはめて理解することが十分可能である。要点としては、各反力(Fr~Fr)は、各多角形要素80A~80Fによって境界が画定された投影弧200に関係付けられる。投影弧200を使う場合でも、反力(Fr)は、各多角形要素80に対して個別に加えてもよく、あるいは合成して合成反力(FrTotal)として加えることもできる。
【0133】
図13図15において投影領域90に関して説明した、多角形要素80が異なる平面上にある場合の技術についても、投影弧200を使った方法にも同様に適用することができる。例えば、投影弧200を使用して出隅角での反力(Fr),(Fr)を計算しても同様に、仮想境界55に対して自然な応答が得られる。ここで、投影弧200の増加は反力(Fr)の増加に換算され、投影弧200の減少は反力(Fr)の減少に換算される。これにより、投影弧200を使った技術も、仮想境界55との衝突時にツール20の突発的または不自然な動きを引き起こす反力(Fr)の不連続な急変を回避する。よって、ツール20が出隅角に沿って動く間に予想外のキックバックを起こしてしまうことが抑制される。したがって、本明細書に記載の投影弧200を使った技術は、表面モデリングが有する、角に関する問題を解決するものである。また、投影弧200を使った技術は、非平面状に配置された複数の多角形要素80に同時に仮想ボリューム74が侵入する他の任意の例にも完全に適用することができる。そのような例としては、入隅角、山部、谷部などが挙げられるが、これらに限定されない。
【0134】
C.変位ボリューム
図18に示すさらに他の例によれば、コントローラ30は、仮想ボリューム74のうち多角形要素80に侵入する部分の体積で定義される変位ボリューム300に関係付けられた侵入係数に基づいて反力(Fr)を計算するように構成される。ここで、変位ボリューム300は、多角形要素のジオメトリによって境界が画定される。変位ボリューム300は、仮想ボリューム74と多角形要素80が交わる時に多角形要素80のジオメトリによって境界を画定される仮想ボリューム74のすべての立体的な部分の組み合わせで定義される。
【0135】
変位ボリューム300は、多角形要素80によって境界を画定されている。より具体的には、変位ボリューム300は、多角形要素80の外周によって境界を画定されている。換言すれば、1つの多角形要素80に対して考慮される変位ボリューム300の範囲は、その多角形要素80の外周より内側に存在する変位ボリューム300の範囲である。これは、変位ボリューム300がデカルト空間内において多角形要素80の平面の上方に存在する場合、下方に存在する場合のいずれにもあてはまる。
【0136】
仮想ボリューム74の定義は、仮想ボリューム74の侵入の直線的な深さ(すなわち、仮想ボリューム74が、多角形要素80や仮想境界55より内部に突き出る距離)に対して、変位ボリューム300が非線形に変化するように行われる。反力(Fr)は、侵入の直線的な深さの変化に合わせて変化し得るものではあるが、反力(Fr)の計算は、侵入の直線的な深さを使わずに、変位ボリューム300に基づいて行われる。
【0137】
この例では、反力(Fr)は変位ボリューム300に関係付けられる。一例では、反力(Fr)は変位ボリューム300と直接相関する。これに加えてまたは代えて、反力(Fr)が変位ボリューム300の体積に比例してもよい。
【0138】
反力(Fr)は、多角形要素80の平面に垂直なベクトルとして印加することができる。多角形要素80の平面に対するベクトルの位置は、多角形要素80に対する変位ボリューム300の位置によって変化し得る。反力(Fr)の大きさは、変位ボリューム300の体積によって変化し得る。侵入時の仮想ボリューム74の姿勢と変位ボリューム300の少なくともいずれかによっては、反力(Fr)ベクトルの多角形要素80の平面に対する角度が、垂直以外の角度となる場合もある。以下では、変位ボリューム300から反力(Fr)を計算する技術について説明する。
【0139】
比較のため、球体状の仮想ボリューム74と三角形の多角形要素80を使って変位ボリューム300を計算する例を示す。しかし、当然ながら、他の例も可能である。図18において、仮想ボリューム74が多角形要素80の平面に侵入し、当該平面の下に変位ボリューム300が形成されている。ここで、変位ボリューム300は、多角形要素80の平面によって切り取られた球状のキャップ形状(球状のドーム形状)を有している。この例では、cが球体中心、hが変位ボリューム300の高さ、rは球体半径である。ここで、多角形要素80の平面は、球体中心cより手前の部分を通る。なお、侵入がちょうど球体中心cに達するものである場合には、変位ボリューム300の高さhは球体半径rに等しくなり、変位ボリューム300は半球形状となる。
【0140】
この例においては、仮想ボリューム74と変位ボリューム300のパラメータを利用して変位ボリューム300を計算する。そのようなパラメータとしては、仮想ボリューム74の半径r、変位ボリューム300の高さh、および変位ボリューム300の(交わり面における)底面302の半径αが挙げられる。例えば、球体についての変位ボリューム300は、式「Vdisplaced=(πh/3)(3r-h)」で計算することができる。あるいは、回転積分を用いて平面下方の変位ボリューム300を求めるなどの計算技術を使用して変位ボリューム300の体積を計算することもできる。当然ながら、仮想ボリューム74が球体とは異なる形状の場合には、異なる方法で変位ボリューム300の体積が計算される。
【0141】
やはり、変位ボリューム300は多角形要素80によって境界が画定されているため、仮想ボリューム74において、1つの多角形要素80に対する反力(Fr)を生成する場合に、その多角形要素80の延在範囲を超えて延在する部分は、計算外とされる。一例では、変位ボリューム300の境界を多角形要素80で画定するため、隣接する多角形要素80を、各多角形要素80の外周に対応する三角柱(ただし、多角形要素80が三角形の場合)などの3Dの要素としてモデリングすることができる。この場合、仮想ボリューム74が侵入により、多角形要素80の三角柱の壁面を横切って延在する状態になった場合、ある多角形要素80に対する反力(Fr)は、仮想ボリューム74のうち、その多角形要素80の三角柱内にある部分のみを計算に入れて生成される。一方、仮想ボリューム74のうち、この三角柱の壁面を横切ってこの三角柱の外に延びる部分は、これに隣接する多角形要素80の反力(Fr)を生成するための計算に入れられる。
【0142】
繰り返すが、図18に関する計算は、球形の仮想ボリューム74に特定的、かつ変位ボリューム300が三角形の多角形要素80を構成する辺の内部に完全に収まり、三角形の多角形要素80の頂点とは交わらない場合に特定的なものである。当然ながら、変位ボリューム300、したがって変位ボリューム300を計算するための計算は、多角形要素80のジオメトリ、仮想ボリューム74のジオメトリ、およびこれら両ジオメトリの相対的な位置関係に応じて異なり得る。また、図示の例において、変位ボリューム300の計算は、変位ボリューム300が関与する三角形の多角形要素80の辺の数(0~3本)や頂点の数(0~3個)に応じて異なる。そして、仮想ボリューム74が球体ではなく、回転楕円体、楕円体、環状体などである場合には、より複雑な変位ボリューム300を計算することができる。変位ボリューム300の幾何学的計算については、本明細書に記載の計算方法以外にも、任意の幾何学的構成や状況に応じて想到することができるであろう。
【0143】
図18に基づいて明らかなように、変位ボリューム300も、侵入の直線的な深さに対して変化する。図18に示す例では、変位ボリューム300の高さhが侵入の直線的な深さに相当する。しかし、侵入する仮想体は立体形状を有しているため、多角形要素80、仮想境界55またはその両方に対して線形の衝撃力(F)を加えることはなく、よって、変位ボリューム300は侵入の直線的な深さに対して線形には変化しない。むしろ、侵入する仮想体が加える衝撃力(F)は、仮想ボリューム74の立体形状の関数であるより高次の力である。したがって、変位ボリューム300は、このより高次の立体形状関数に従って侵入の直線的な深さに対して変化する。ここでも、変位ボリューム300が可変的である理由の一つとして、図18に示す例の仮想ボリューム74が1つの面のみを有しており(例えば、球形であり)、互いに隣接する断面積が等しくないことが挙げられる。
【0144】
したがって、仮想ボリューム74の侵入に応じて計算される反力(Fr)は、侵入の直線的な深さに対して可変的な応答を示す。ただし、反力(Fr)は、侵入の直線的な深さの変化に合わせて変化し得るものではあるが、実際の反力(Fr)の計算は、この例では変位ボリューム300に基づいて行われる。反力(Fr)の計算が、単に、仮想ボリューム74が多角形要素80や仮想境界55より内部に突き出る直線的な深さであるhのみに基づいて行われることはない。
【0145】
図5図7に関連して投影領域90について説明した例や他の可能例は、変位ボリューム300についても十分理解できると思われるため、ここではその説明を省略して簡略化する。なお、当然ながら、当業者であれば、変位ボリューム300に基づいて計算した反力(Fr)が、投影領域90に基づいて計算した反力(Fr)とは異なる可能性があることを理解するであろう。さらに、変位ボリューム300を繰返し計算した結果を基に、反力(Fr)を繰返し加えることも十分想到されるであろう。
【0146】
さらに、図10図12では、仮想ボリューム74が複数の多角形要素(例えば、80A~80F)に同時に侵入する場合に、その侵入に応じて複数の反力(例えば、Fr~Fr)を投影領域90を使って計算、生成する例を示したが、これらの例についても、変位ボリューム300を使用した本明細書に記載の技術にあてはめて理解することが十分可能である。要点としては、各反力(Fr~Fr)は、各多角形要素80A~80Fによって境界が画定された変位ボリューム300に関係付けられる。変位ボリューム300を使う場合でも、反力(Fr)は、各多角形要素80に対して個別に加えてもよく、あるいは合成して合成反力(FrTotal)として加えることもできる。
【0147】
図13図15において投影領域90に関して説明した、多角形要素80が異なる平面上にある場合の技術についても、変位ボリューム300を使った方法にも同様に適用することができる。例えば、変位ボリューム300を使用して出隅角での反力(Fr),(Fr)を計算しても同様に、仮想境界55に対して自然な応答が得られる。ここで、変位ボリューム300の増加は反力(Fr)の増加に換算され、変位ボリューム300の減少は反力(Fr)の減少に換算される。これにより、変位ボリューム300を使った技術も、仮想境界55との衝突時にツール20の突発的または不自然な動きを引き起こす反力(Fr)の不連続な急変を回避する。よって、ツール20が出隅角に沿って動く間に予想外のキックバックを起こしてしまうことが抑制される。したがって、本明細書に記載の変位ボリューム300を使った技術は、表面モデリングが有する、角に関する問題を解決するものである。また、変位ボリューム300を使った技術は、非平面状に配置された複数の多角形要素80に同時に仮想ボリューム74が侵入する他の任意の例にも完全に適用することができる。そのような例としては、入隅角、山部、谷部などが挙げられるが、これらに限定されない。
【0148】
D.他の適用例
当業者であれば、上述の投影領域、投影弧、変位ボリュームの例がいずれも、多角形要素80の(2Dまたは3Dの)ジオメトリに対して境界が画定される仮想ボリューム74のジオメトリの関数である侵入係数に基づいて反力(Fr)を計算するものであることを理解するであろう。ただし、本明細書に記載の技術以外にも、多角形要素80のジオメトリに対して境界が画定される仮想ボリューム74のジオメトリの関数である侵入係数に基づいて反力(Fr)を計算する技術が存在することが十分に考えられる。例えば、断面領域100が部分円弧202などを有していない場合、投影弧の代わりに、投影領域の外周を利用することができる。
【0149】
また、本明細書に記載の種々の表面モデリング技術はいずれも、コントローラ30によって選択的にオン/オフ制御を行うことができる。例えば、出隅角を通り抜ける侵入に対して投影領域90の技術を使用し、平坦面を通り抜ける侵入に対して投影弧200の技術を使用するなどの設定を予め行っておくことができる。そして、このような表面モデリング技術の選択は、例えばユーザ入力に基づいて行ってもよい。ユーザは、ディスプレイ38またはユーザ入力デバイス40で表面モデリングのモードを選択することができる。また、他の例では、コントローラ30が、仮想ボリューム74と仮想境界55との間に発生している状況を自動的に識別して、メモリに格納された所定の設定に基づいて表面モデリングのモードを選択する。その場合、例えば、仮想ボリューム74が侵入する多角形要素80の数、位置そしてそれがどの多角形要素80なのかに基づいて、コントローラ30はその状況を自動的に特定することができる。
【0150】
さらに、本明細書に記載の異なる表面モデリング技術を任意に組み合わせることも考えられる。本明細書に記載の技術がいずれも、多角形要素80のジオメトリに対して境界が画定される仮想ボリューム74のジオメトリの関数である侵入係数を利用した技術であるため、そのような組み合わせが可能となる。したがって、投影領域90モード、投影弧200モード、変位ボリューム300モードの任意の組み合わせを同時に用いて、任意の多角形要素80に対する反力(Fr)を導き出すことができる。
【0151】
本明細書に記載の技術は、ロボット外科手術システム10の様々な実用的用途や実践的状況に役立つことができる。例えば、ロボット外科手術システム10は、手動動作モードで使用することができる。手動モード時には、オペレータがツール20を動かし、そのツール20の動きをマニピュレータ14が制御する。オペレータは、ツール20に物理的に接触してツール20を動かす。一方、コントローラ30は、力/トルクセンサ70を使用して、ツール20に加えられる力、トルク、またはその両方の監視を行う。その場合、仮想境界55は、避けるべき領域から治療対象の生体構造領域を区切ることができる。また、これに代えてまたは加えて、仮想境界55は、ツール20を標的部位に向かって手動で動かすようにオペレータを案内するガイドとなることもできる。さらに別の例では、仮想境界55は、(例えば機器などの)避けるべきオブジェクトに対して定義される。これらの例のいずれにおいても、力/トルクセンサ70が検出した力やトルクに応じた手動動作の結果、仮想境界55への侵入が発生するであろう場合には、コントローラ30がマニピュレータ14を制御してツール20を仮想境界55から遠ざける方向に動かす。これにより、オペレータに仮想境界55の位置を触覚で知らせて、手動モード時に仮想境界55を避けることができるようにする。
【0152】
別の用途として、自律動作モード時に、コントローラ30がマニピュレータ14に対して、ツール20を自律的に動かす指令を与えることができる。この場合、マニピュレータ14は、オペレータの支援なしにツール20を動かすことができる。ここで、「オペレータの支援なしに」とは、ツール20を動かす力を加えるためのツール20への物理的接触をオペレータが行わないことを意味し得る。そして、オペレータはそのような物理的接触を行わない代わりに、何らかの形の制御を使って、ツール20の始動と停止を管理することができる。例えば、オペレータは、遠隔制御ボタンを押してツール20を始動させ、遠隔制御ボタンを放してツール20の動きを停止させることができる。一例として、ツール20がツール経路上に位置決めされた状態で維持される自律モード時に、オペレータがツール20の向きの変更を望む場合を考える。ツール20の向きを変更すれば、それが位置を維持した状態で行われたとしても、1以上の仮想境界55に関与する可能性がある。これに対し、システム10およびその方法は、仮想シミュレーション72においてツール20の更新後の向きと仮想境界55とを考慮することにより、例えば、向きが変更されたツール20の周辺やその動きの経路上の障害となるオブジェクトに対してツール20が望ましくない衝突を起こしてしまう事態に対処することができる。他の例では、自律モード時に、自律的動作に対して不注意から変更を加えてしまうような事態に対する追加予防策として、仮想境界55を使うこともできる。当業者であれば、本明細書に記載の投影領域の技術が様々な他の用途や状況に役立ち得ることを理解するであろう。
【0153】
本明細書の詳細な説明から、本発明の多くの特徴および利点が明らかとなるであろう。したがって、添付の特許請求の範囲は、本発明の真の要旨や範囲の内にあるそのような特徴および利点のすべてを包含することを意図している。さらに、当業者であれば、多くの変更や変形を容易に想到し得るであろう。よって、本発明を図示、説明した構造および動作のみに限定することは望ましくなく、したがって、本発明の範囲を逸脱しない範囲であれば、すべての適切な変形および均等物が可能である。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18