(第1の実施形態)
本発明の第1の実施形態について図1乃至図18を参照して説明する。
図1は、本実施形態の内視鏡形状検出装置1を示す図である。図1に示すように、内視鏡形状検出装置1の内視鏡10は、体腔内に挿入される挿入部11と、挿入部11の基端側に設けられる操作部12とを備える。挿入部11は、最先端に設けられる先端硬性部14と、先端硬性部14の基端側に設けられる湾曲部16と、湾曲部16の基端側に設けられる細長い可撓管部18とを備える。
先端硬性部14の内部には、被写体の撮像を行うCCD等の撮像素子20が設けられている。撮像素子20には、撮像用信号線21の一端が接続されている。撮像用信号線21は、挿入部11の内部を通って操作部12から内視鏡10の外部に延出され、他端が画像処理ユニットであるビデオプロセッサ3に接続されている。また、挿入部11の内部には、先端硬性部14の照明窓(図示しない)に被写体を照射する照明光を導光するライトガイド23が、長手方向に延設されている。ライトガイド23は、操作部12から内視鏡10の外部に延出され、光源ユニット4に接続されている。
また、挿入部11の湾曲部16の先端部には、湾曲操作伝達部材である4本の湾曲操作ワイヤ(図示しない)の一端が接続されている。湾曲操作ワイヤは、可撓管部18の内部を通って、操作部12に設けられる湾曲操作部である湾曲操作ノブ(図示しない)に他端が接続されている。湾曲操作ノブでの操作により、湾曲操作ワイヤが長手方向に移動する。湾曲操作の移動により、湾曲部16が内視鏡10の上下方向及び左右方向に湾曲動作を行う。
挿入部11には、複数(本実施形態ではN+1個)のセンサユニットS0〜SNが設けられている。それぞれのセンサユニットSi(i=0,1,2,…,N)は、互いに長手方向に一定の間隔l(=50mm)だけ離れて配置されている。すなわち、それぞれのセンサユニットSiは、互いに長手方向に所定のセンサ間寸法lだけ離れて配置されている。ここで、例えば最も基端側のセンサユニットS0が可撓管部18の基端部に配置され、最も先端側のセンサユニットSNが湾曲部16の先端部に配置されている。センサユニットSiは、加速度を計測する加速度センサAiと、地磁気を計測する地磁気センサBiとを備える。
図2は、内視鏡10の挿入部11を示す図である。図2に示すように、それぞれのセンサユニットSiは、センサユニットSiの中心を原点とし、Xi軸、Yi軸、Zi軸を有するローカル座標系Ci(図2で点線で示す)を有する。ここで、Xi軸方向は、センサユニットSiの中心での内視鏡10の左右方向と一致し、基端側から視た際の内視鏡10の右方向を正とする。Yi軸方向は、センサユニットSiの中心での長手方向と一致し、先端方向を正とする。Zi軸方向は、センサユニットSiの中心での内視鏡10の上下方向と一致し、内視鏡10の上方向を正とする。加速度センサAiは、ローカル座標系Ciの原点での加速度のXi軸方向成分、Yi軸方向成分、Zi軸方向成分を計測する。地磁気センサBiは、ローカル座標系Ciの原点での地磁気のXi軸方向成分、Yi軸方向成分、Zi軸方向成分を計測する。
また、内視鏡形状検出装置1では、最も基端側のセンサユニットS0の中心を原点とし、X軸、Y軸、Z軸を有するグローバル座標系C(図2で実線で示す)が定義されている。ここで、グローバル座標系Cは、最も基端側のセンサユニットS0の中心を原点とする右手系の直交デカルト座標系である。X軸方向は、重力が作用する鉛直方向に垂直な所定の方向(本実施形態では、図2の矢印D1,D2に平行な方向)と一致し、図2の矢印D1の方向を正とする。Y軸方向は、鉛直方向に垂直で、かつ、X軸方向に垂直な方向(本実施形態では、図2の矢印E1,E2に平行な方向)と一致し、図2の矢印E1の方向を正とする。Z軸方向は、鉛直方向と一致し、鉛直方向の上方向(紙面の裏から表への方向)を正とする。なお、ここでは説明の都合上、グローバル座標系CのX軸方向を磁北方向とする。
それぞれのローカル座標系Ciは、グローバル座標系CをX軸回りにαi、Y軸回りにβi、Z軸回りにγiそれぞれ回転し、最も基端側のセンサユニットS0の中心からセンサユニットSiの中心まで原点を平行移動した座標系である。ここで、αiをピッチ角、βiをロール角、γiをヨー角と称し、ピッチ角αi、ロール角βi、ヨー角γiの3つをまとめて姿勢角と称する。姿勢角αi,βi,γiは、それぞれX軸、Y軸、Z軸の負の方向から見て時計回りを正とする。姿勢角αi,βi,γiの値を算出することにより、センサユニットSiの姿勢が検出される。
図1に示すように、ぞれぞれのセンサユニットSiの加速度センサAi及び地磁気センサBiは、I2C等のシリアルバス5に接続されている。シリアルバス5は、挿入部11の内部を通って操作部12から内視鏡10の外部に延出され、基端がシリアルコンバータ6に接続されている。シリアルコンバータ6は、それぞれのセンサユニットSiからシリアルバス5を介して入力される計測データのシリアル信号を、USB信号に変換する。シリアルコンバータ6には、USBケーブル7の一端が接続されている。USBケーブル7の他端は、パソコン8に接続されている。パソコン8には、それぞれのセンサユニットSiでの計測データのUSB信号がシリアルコンバータ6から入力される。
図3は、パソコン8の構成を示す図である。図3に示すように、パソコン8は、USBケーブル7を介してシリアルコンバータ6に接続される通信部26を備える。通信部26は、それぞれのセンサユニットSiでの計測データを受信する。通信部26には、物理量換算部28が接続されている。物理量換算部28は、通信部26で受信したそれぞれのセンサユニットSiでの計測データを、オフセット、ゲイン等を用いて物理量に換算する。
物理量換算部28には、姿勢検出部30が接続されている。姿勢検出部30は、センサユニットSiでの計測データに基づいて、それぞれのセンサユニットSiの姿勢を検出する。姿勢検出部30は、それぞれのセンサユニットSiの加速度センサAi及び地磁気センサBiでの計測データに基づいて、それぞれのセンサユニットSiのローカル座標系Ciのグローバル座標系CからのX軸回り、Y軸回り、Z軸回りの回転角である3つの姿勢角αi,βi,γiを算出する姿勢角算出部32を備える。姿勢角算出部32は、それぞれのセンサユニットSiの加速度センサAiでの加速度データに基づいて、それぞれのセンサユニットSiのローカル座標系Ciのグローバル座標系CからのX軸回りの回転角であるピッチ角αi、及び、それぞれのセンサユニットSiのローカル座標系Ciのグローバル座標系CからのY軸回りの回転角であるロール角βiを算出する第1の角度算出部34を備える。また、姿勢角算出部32は、それぞれのセンサユニットSiの地磁気センサBiでの地磁気データに基づいて、それぞれのセンサユニットSiのローカル座標系Ciのグローバル座標系CからのZ軸回りの回転角であるヨー角γiを算出する第2の角度算出部36を備える。
ここで、姿勢検出部30でそれぞれのセンサユニットSiの姿勢を検出する方法について説明する。図4は、内視鏡10の挿入部11が停止している静状態での挿入部11の形状検出方法を示すフローチャートである。図4に示すように、挿入部11の形状検出の際には、まず、それぞれのセンサユニットSiでの計測を行い(ステップS101)、姿勢検出部30がそれぞれのセンサユニットSiでの計測データを取得する。そして、姿勢角算出部32が、それぞれのセンサユニットSiのローカル座標系Ciの3つの姿勢角αi,βi,γiを算出する。
姿勢角α
i,β
i,γ
iを算出する際には、まず、第1の角度算出部34が、それぞれのセンサユニットS
iの加速度センサA
iでの計測データに基づいて、それぞれのセンサユニットS
iのローカル座標系C
iのピッチ角α
i及びロール角β
iを算出する(ステップS102)。ここで、姿勢角α
i,β
i,γ
iはヨー角γ
i、ピッチ角α
i、ロール角β
iの順で回転する(Z,X,Y)型とする。したがって、ローカル座標系C
iからグローバル座標系Cへの回転行列は、
となる。
挿入部11が停止している静状態では、重力加速度のみが鉛直方向の下方向に作用している。すなわち、グローバル座標系Cにおいても、ローカル座標系C
iにおいても、鉛直方向の下方向に重力加速度のみが作用している。したがって、この際、加速度ベクトルのグローバル座標系CのX軸方向成分、Y軸方向成分、Z軸方向成分は、
となる。また、加速度センサA
iで計測される加速度ベクトルのローカル座標系C
iのX
i軸方向成分、Y
i軸方向成分、Z
i軸方向成分を、
とする。
ここで、ローカル座標系C
iはグローバル座標系Cをヨー角γ
i、ピッチ角α
i、ロール角β
iの順で回転した座標系である。したがって、式(1)〜式(3)より、ローカル座標系C
iで観測される加速度成分は、
となる。ここで、式(4.1)の2乗と式(4.3)の2乗を加算すると、
となる。そして、式(4.2)を式(6)で割ることにより、
となり、ローカル座標系C
iのピッチ角α
iが求まる。また、式(4.1)を式(4.3)で割ることにより、
となり、ローカル座標系Ciのロール角βiが求まる。以上のようにして、それぞれの加速度センサAiでの計測データに基づいて、それぞれのローカル座標系Ciのピッチ角αi及びロール角βiが算出される。
そして、第2の角度算出部36が、それぞれのセンサユニットSiの地磁気センサBiでの計測データに基づいて、それぞれのセンサユニットSiのローカル座標系Ciのヨー角γiを算出する(ステップS103)。ここで、ステップS102で算出したピッチ角αi及びロール角βiを用いて、それぞれのローカル座標系Ciのグローバル座標系CからのX軸回りの回転及びY軸回りの回転を補正した補正座標系C´iを定義する。図5は、グローバル座標系C(図5において実線で示す)及び補正座標系C´i(図5で点線で示す)を示す図である。なお、実際はグローバル座標系Cと補正座標系C´iとでは原点の位置が異なるが、図5では両者の比較のため原点が同一の位置にある状態で示す。図5に示すように、X軸及びY軸補正した補正座標系C´iはグローバル座標系CをZ軸回りにヨー角γiだけ回転した座標系であり、X´i軸、Y´i軸、Z´i軸を有する。X´i軸方向、Y´i軸方向は、それぞれグローバル座標系CのX軸方向、Y軸方向からZ軸回りにヨー角γiだけ回転した方向と一致する。Z´i軸方向は、鉛直方向、すなわちグローバル座標系CのZ軸方向と一致する。本実施形態では、グローバル座標系CのX軸方向が磁北方向と一致している。このため、X´i軸方向が、磁北方向からZ軸回りにヨー角γiだけ回転した方向となる。
地磁気センサB
iで計測される地磁気ベクトルのローカル座標系C
iのX
i軸方向成分、Y
i軸方向成分、Z
i軸方向成分を、
とする。補正座標系C´
iは、ローカル座標系C
iのグローバル座標系CからのX軸回りの回転及びY軸回りの回転を補正した座標系である。したがって、式(9)及び式(1)のR
xi,R
yiを用いて、地磁気センサB
iで計測される地磁気ベクトルの補正座標系C´
iのX´
i軸方向成分、Y´
i軸方向成分、Z´
i軸方向成分は、
となる。鉛直方向に垂直な水平面(補正座標系C´
iのX´
i−Y´
i平面)の地磁気成分は、磁北方向を向いている。したがって、式(11.1),式(11.2)より、X´
i軸から磁北方向までの角度θ
iは、地磁気ベクトルの補正座標系C´
iのX´
i軸成分、Y´
i軸成分を用いて求めることができる。すなわち、
となる。角度θiはZ´i軸(Z軸)を負の方向から見て時計回りを正とする。ここで、補正座標系C´iはグローバル座標系CをZ軸回りにヨー角γiだけ回転した座標系である。したがって、式(12)で求まる角度θiが、グローバル座標系Cを基準としたローカル座標系Ciのヨー角γiとなる。
なお、グローバル座標系CのX軸方向が磁北方向と一致しない場合も、磁北を基準としてヨー角γ
iを求めることができる。地磁気ベクトルのグローバル座標系CのX軸方向成分、Y軸方向成分、Z軸方向成分を、
とする。地磁気ベクトルのグローバル座標系CのX軸方向成分、Y軸方向成分、Z軸方向成分は、地磁気センサB
iと同一のタイプの地磁気センサを用いて、グローバル座標系CのX軸方向、Y軸方向、Z軸方向と軸方向が一致する状態で計測を行うことにより、求められる。そして、式(13)より、X軸から磁北方向までの角度θを、地磁気ベクトルのグローバル座標系CのX軸成分、Y軸成分を用いて求める。すなわち、
となる。ここで、角度θはZ軸を負の方向から見て時計回りを正とする。補正座標系C´
iはグローバル座標系CをZ軸回りにヨー角γ
iだけ回転した座標系である。したがって、式(12)、式(14)より、
となり、グローバル座標系Cを基準としたローカル座標系Ciのヨー角γiが求まる。
以上のようにして、それぞれの地磁気センサBiでの計測データに基づいて、それぞれのローカル座標系Ciのヨー角γiが算出される。算出された姿勢角αi,βi,γiの値に基づいて、姿勢検出部30はそれぞれのセンサユニットSiの姿勢を検出する。
図3に示すように、姿勢検出部30には、センサ仮位置検出部40が接続されている。図6は、センサ仮位置検出部40により検出されるそれぞれのセンサユニットSiの仮位置P0,iを、グローバル座標系CのZ軸の負から正の方向に向かって視た図である。図6に示すように、センサ仮位置検出部40は、姿勢検出部30で検出されたそれぞれのセンサユニットSiの姿勢に基づいて、それぞれのセンサユニットSiの間の形状を寸法がセンサ間寸法lに等しい直線状の仮リンクT0,j(j=1,2,…N)と仮定して、それぞれのセンサユニットSiの仮位置P0,iを検出する。ここで、基端側からk番目の仮リンクT0,kは、基端側からk番目のセンサユニットSk−1と基端側から(k+1)番目のセンサユニットSkとの間の仮リンクT0,kである。センサ仮位置検出部40は、それぞれの仮リンクT0,jを形成する仮リンク形成部41と、仮リンク形成部41により形成されたそれぞれの仮リンクT0,jを平行移動する仮リンク移動部42とを備える。仮リンク移動部42により、それぞれの仮リンクT0,jは、隣接する仮リンクT0,j−1,T0,j+1との仮リンク境界が連続する状態に、平行移動される。これにより、それぞれのセンサユニットSiの間を直線状の仮リンクT0,jと仮定した仮線形形状71が形成される。
ここで、センサ仮位置検出部40でそれぞれのセンサユニットSiの仮位置P0,iを検出する方法について説明する。それぞれのセンサユニットSiの仮位置P0,iを検出する(ステップS104)際、まず、ステップS102,S103で算出した姿勢角αi,βi,γiの値に基づいて、仮リンク形成部41が、直線形状のそれぞれの仮リンクT0,jを形成する。ここでは、基端側からk番目のセンサユニットSk−1と基端側から(k+1)番目のセンサユニットSkとの間の基端側からk番目の仮リンクT0,kの形成について説明する。
式(7)、式(8)、式(12)(又は式(15))のiをk−1で置換した式を用いて、ステップS102,S103でローカル座標系C
k−1(つまり仮リンクT
0,k)の姿勢角α
k−1,β
k−1,γ
k−1が算出される。この姿勢角α
k−1,β
k−1,γ
k−1及びそれぞれのセンサユニットS
iの間の長手方向についての間隔であるセンサ間寸法lを用いて、センサユニットS
k−1からセンサユニットS
kへ向かうベクトルが求まる。ここで、センサユニットS
k−1からセンサユニットS
kへ向かうベクトルは、
となる。式(16.1)では、ローカル座標系Ck−1の原点での長手方向であるYk−1軸方向の単位ベクトルと式(1)で算出される回転行列を乗算することにより、ローカル座標系Ck−1の原点でのYk−1軸方向の単位ベクトルを、グローバル座標系CのX軸方向成分、Y軸方向成分、Z軸方向にそれぞれ分解した成分が算出される。すなわち、lxk,lyk,lzkは、ローカル座標系Ck−1のYk−1軸方向への大きさlのベクトルを、それぞれグローバル座標系CのX軸方向、Y軸方向、Z軸方向に分解した成分である。式(16.1)で算出されるベクトルにより、仮リンクT0,kが形成される。
なお、仮リンクT0,k以外の仮リンクT0,jについても、仮リンク形成部41により同様に形成される。すなわち、式(16.1),式(16.2)のkをjで置換した式を用いて、仮リンクT0,jの基端側(グローバル座標系Cの原点から近い側)のセンサユニットSj−1から仮リンクT0,jの先端側(グローバル座標系Cの原点から遠い側)のセンサユニットSjへのベクトルを求める。そして、センサユニットSj−1からセンサユニットSjへのベクトルにより、仮リンクT0,jが形成される。すなわち、仮リンク形成部41は、仮リンクT0,jが基端側(グローバル座標系Cの原点から近い側)のセンサユニットSj−1の中心から先端側(グローバル座標系Cの原点から遠い側)のセンサユニットSjの中心まで基端側のセンサユニットSj−1の中心での長手方向に延設されると仮定して、仮リンクT0,jを形成する。
また、センサ間寸法lは50mm程度であることが好ましい。センサ間寸法lを長くすることにより、センサユニットSiの数が減少し、コストが削減される。また、センサ間寸法lが50mm程度より小さい範囲であれば、それぞれのセンサユニットSiの間を寸法がセンサ間寸法lに等しい直線状の仮リンクT0,jと仮定した場合でも、挿入部11の形状検出の際の誤差を小さくすることが可能である。
そして、仮リンク移動部42が、仮リンク形成部41により形成されたそれぞれの仮リンクT0,jを隣接する仮リンクT0,j−1,T0,j+1との仮リンク境界が連続する状態に平行移動する。図7は、仮リンク移動部42での処理を説明する図である。ここでは、基端側からk番目のセンサユニットSk−1と基端側から(k+1)番目のセンサユニットSkとの間の基端側からk番目の仮リンクT0,kの移動について説明する。
図7に示すように、仮リンク移動部42により、仮リンクT0,kの移動が行われる前の状態では、仮リンクT0,kの基端側に隣接する仮リンクT0,k−1まで移動が完了し、仮リンク移動完了部73が形成されている。仮リンクT0,kの移動を行う際は、原点から仮リンク移動完了部73の先端(すなわちセンサユニットSk−1の仮位置P0,k−1)までの移動量だけ、仮リンク移動部42は仮リンクT0,kを平行移動する。すなわち、図7の点線で示す位置から図7の実線で示す位置に仮リンクT0,kを平行移動する。これにより、仮リンクT0,k−1と仮リンクT0,kとのリンク境界が連続する状態となる。
なお、仮リンクT0,k以外の仮リンクT0,jについても、仮リンク移動部42により同様に移動される。すなわち、仮リンクT0,jの移動を行う際は、原点から仮リンク移動完了部73の先端(グローバル座標系Cの原点から遠い側の端)までの移動量だけ、仮リンク移動部42は仮リンクT0,jを平行移動する。これにより、仮リンクT0,jと仮リンクT0,jの基端側(グローバル座標系Cの原点から近い側)に隣接する仮リンクT0,j−1との仮リンク境界が連続する状態となる。ただし、仮リンクT0,1については、仮リンクT0,1の基端がグローバル座標系Cの原点であるため、移動は行われない。すべての仮リンクT0,jの移動が完了することにより、図6に示すように、それぞれのセンサユニットSiの間を直線状の仮リンクT0,jと仮定した仮線形形状71が形成される。仮線形形状71でのそれぞれのセンサユニットSiの位置を、それぞれのセンサユニットSiの仮位置P0,iとして検出する(ステップS104)。
図3に示すように、センサ仮位置検出部40は、仮曲線形状検出部50に接続されている。仮曲線形状検出部50は、センサ仮位置検出部40により検出されたそれぞれのセンサユニットSiの仮位置P0,iの間を仮円弧L0,jとして曲線補間を行い、仮曲線形状75を検出する。図8は、仮曲線形状検出部50により検出された内視鏡10の挿入部11の仮曲線形状75をグローバル座標CのZ軸の負から正の方向に向かって視た図である。図8に示すように、仮曲線形状検出部50により、図8の点線で示す仮線形形状71のそれぞれのセンサユニットSiの仮位置P0,iの間が曲線補間される。これにより、それぞれの仮円弧L0,jが形成され、図8の実線で示す仮曲線形状75が検出される。
仮曲線形状検出部50は、それぞれのセンサユニットSiの仮位置P0,iでの単位接ベクトルを算出する単位接ベクトル算出部51と、単位接ベクトル算出部51により算出された単位接ベクトルに基づいて、それぞれのセンサユニットSiの仮位置P0,iの間での単位接ベクトルの変化率を算出する変化率算出部52と、単位接ベクトル算出部51により算出された単位接ベクトル及び変化率算出部52で算出された変化率に基づいて、それぞれのセンサユニットSiの仮位置P0,iの間の仮円弧L0,jを形成する仮円弧形成部53と、を備える。すべてのセンサユニットSiの仮位置P0,iの間で曲線補間が行われ、すべての仮円弧L0,jが形成されることにより、仮曲線形状75が検出される。
ここで、仮曲線形状検出部50で、センサ仮位置検出部40により検出されたそれぞれのセンサユニットSiの仮位置P0,iの間を曲線補間し、仮曲線形状75を検出する方法について説明する。図4に示すように、仮曲線形状検出部50は、ステップS104で検出されたそれぞれのセンサユニットSiの仮位置P0,iの間を仮円弧L0,jで曲線補間を行い、仮曲線形状75を検出する(ステップS105)。前述のように、センサ間寸法lが50mm程度より小さい範囲であれば、それぞれのセンサユニットSiの間を寸法がセンサ間寸法lに等しい直線状の仮リンクT0,jと仮定した場合でも、挿入部11の形状検出の際の誤差は小さくなる。しかし、体腔内に挿入された際の内視鏡10の挿入部11の形状は曲線形状である。したがって、それぞれのセンサユニットSiの仮位置P0,iの間の曲線補間を行うことが重要となる。ここで、内視鏡10の挿入部11は、製品により差はあるが、適度の弾性を有する。このため、挿入部11の曲線形状の曲率が大きく変化することは、稀である。したがって、それぞれのセンサユニットSiの間の形状を半径R0,j(曲率1/R0,j)の仮円弧L0,jと仮定して曲線補間を行うことにより、実際の挿入部11の曲線形状と誤差の少ない仮曲線形状75が形成される。
仮曲線形状75を検出する際、仮曲線形状検出部50は、それぞれのセンサユニットSiの仮位置P0,iの間ごとに順次に曲線補間を行い、仮円弧L0,jを形成する。ここで、仮曲線形状検出部50により、それぞれのセンサユニットSiの仮位置P0,iの間の曲線補間を行う方法について説明する。ここでは、基端側からk番目のセンサユニットSk−1と基端側から(k+1)番目のセンサユニットSkとの間の曲線補間について説明する。すなわち、仮位置P0,k−1と仮位置P0,kとの間が、補間対象である補間対象仮位置間となる。
図9は、仮曲線形状検出部50により仮曲線形状75を検出する方法を示すフローチャートである。図10は、仮曲線形状検出部50での処理を説明する図である。図9及び図10に示すように、仮曲線形状検出部50によりセンサユニットS
k−1の仮位置P
0,k−1とセンサユニットS
kの仮位置P
0,kとの間である補間対象のセンサ間の曲線補間を行う際は、まず、単位接ベクトル算出部51が、センサユニットS
k−1の仮位置P
0,k−1での単位接ベクトル及びセンサユニットS
kの仮位置P
0,kでの単位接ベクトルを算出する(ステップS111)。センサユニットS
k−1の仮位置P
0,k−1での単位接ベクトルは、
となる。すなわち、仮位置P0,k−1での単位接ベクトルは、仮位置P0,k−1から仮位置P0,kまでのベクトルの単位ベクトルである。センサユニットSkの仮位置P0,kでの単位接ベクトルは、式(17.1)、式(17.2)、式(17.3)のkをk+1で置換した式を用いて求められる。すなわち、仮位置P0,kでの単位接ベクトルは、仮位置P0,kから仮位置P0,k+1までのベクトルの単位ベクトルである。
そして、単位接ベクトル算出部51により算出された単位接ベクトルに基づいて、変化率算出部52がセンサユニットS
k−1の仮位置P
0,k−1とセンサユニットS
kの仮位置P
0,kとの間での単位接ベクトルの変化率を算出する(ステップS112)。まず、仮位置P
0,k−1と仮位置P
0,kとの間での単位接ベクトルの変化率ベクトルが、
で求められる。そして、式(18.1)、式(18.2)で求められた変化率ベクトルの大きさが仮位置P0,k−1と仮位置P0,kとの間での単位接ベクトルの変化率となる。
そして、単位接ベクトル算出部51により算出された単位接ベクトル及び変化率算出部52で算出された変化率に基づいて、仮円弧形成部53が、センサユニットS
k−1の仮位置P
0,k−1とセンサユニットS
kの仮位置P
0,kとの間の仮円弧L
0,kを形成する(ステップS113)。ここで、ステップS112で算出した仮位置P
0,k−1と仮位置P
0,kとの間での単位接ベクトルの変化率は、仮円弧L
0,kの曲率1/R
0,kとなる。仮円弧L
0,kの半径R
0,kは曲率1/R
0,kの逆数であるため、仮円弧L
0,kの半径R
0,kは、
となる。また、仮円弧L
0,kの中心O
0,kのグローバル座標Cでの位置が、
により求められる。さらに、仮位置P
0,k−1での単位接ベクトル及び仮位置P
0,kでの単位接ベクトルを用いて、仮円弧L
0,kの中心角φ
0,kが、
により求められる。これらのパラメータを用いて、仮位置P0,k−1と仮位置P0,kとの間の仮円弧L0,kが形成される。
なお、仮円弧L0,k以外の仮円弧L0,jについても、仮位置P0,j−1と仮位置P0,jとの間を同様に曲線補間することにより、形成される。すなわち、仮円弧L0,jを形成する際は、まず、単位接ベクトル算出部51が、補間対象仮位置間の基端側(グローバル座標系Cの原点に近い側)に位置するセンサユニットSj−1の仮位置P0,j−1での単位接ベクトル及び補間対象仮位置間の先端側(グローバル座標系Cの原点から遠い側)に位置するセンサユニットSjの仮位置P0,jでの単位接ベクトルを算出する。センサユニットSj−1の仮位置P0,j−1での単位接ベクトルは、式(17.1)、式(17.2)、式(17.3)のkをjで置換した式を用いて求められ、仮位置P0,j−1から仮位置P0,jまでのベクトルの単位ベクトルである。また、センサユニットSjの仮位置P0,jでの単位接ベクトルは、式(17.1)、式(17.2)、式(17.3)のkをj+1で置換した式を用いて求められ、仮位置P0,jから仮位置P0,j+1までのベクトルの単位ベクトルである。これにより、それぞれのセンサユニットSiの仮位置P0,iでの単位接ベクトルが算出される(ステップS111)。
そして、単位接ベクトル算出部51により算出された単位接ベクトルに基づいて、変化率算出部52がセンサユニットSj−1の仮位置P0,j−1とセンサユニットSjの仮位置P0,jとの間である補間対象仮位置間での単位接ベクトルの変化率を算出する。仮位置P0,j−1と仮位置P0,jとの間での単位接ベクトルの変化率は、式(18.1)、式(18.2)のkをjで置換した式を用いて求められる。これにより、それぞれのセンサユニットSiの仮位置P0,iの間での単位接ベクトルの変化率が算出される(ステップS112)。
そして、単位接ベクトル算出部51により算出された単位接ベクトル及び変化率算出部52で算出された変化率に基づいて、仮円弧形成部53が、センサユニットSj−1の仮位置P0,j−1とセンサユニットSjの仮位置P0,jとの間である補間対象仮位置間の仮円弧L0,jを形成する。ここで、式(19)、式(20)、式(21)のkをjで置換した式を用いて、仮円弧L0,jの半径R0,j、中心O0,j、中心角φ0,jが求められる。これにより、それぞれのセンサユニットSiの仮位置P0,iの間の仮円弧L0,jが形成される(ステップS113)。すべてのセンサユニットSiの仮位置P0,iの間で曲線補間が行われ、すべての仮円弧L0,jが形成されることにより、仮曲線形状75が検出される。
図3に示すように、仮曲線形状検出部50は、それぞれのセンサユニットSiの位置を修正するセンサ位置修正部55に接続されている。センサ位置修正部55は、仮曲線形状検出部50により検出された仮曲線形状75のそれぞれの仮円弧L0,jの弧長R0,jφ0,jとセンサ間寸法lとの差の絶対値に基づいて、それぞれのセンサユニットSiの位置を修正する。ここで、仮円弧L0,jの弧長R0,jφ0,jとセンサ間寸法lとの差の絶対値をエネルギーE0,jとする。図11は、センサ位置修正部55により修正されたそれぞれのセンサユニットSiの位置をグローバル座標CのZ軸の負から正の方向に向かって視た図である。図11に示すように、センサ位置修正部55により、それぞれのセンサユニットSiは、仮位置P0,iから最終位置PF,iまで修正される。
センサ位置修正部55は、基端側(グローバル座標系Cの原点に近い側)のセンサユニットSiから順次に位置補正を行うセンサ位置順次補正部57を備える。センサ位置順次補正部57によりそれぞれのセンサユニットSiの位置補正を行う前の状態では、それぞれのセンサユニットSiは、仮位置P0,iから補正前位置Q0,iに移動されている(詳細については、後述する。)。センサ位置順次補正部57は、それぞれのセンサユニットSiを補正前位置Q0,iから最終位置PF,iへ位置補正する。また、センサ位置修正部55は、センサ位置順次補正部57により1つのセンサユニットSiの位置補正が行われるたびに、位置補正が完了していないセンサユニットSiである未補正センサ群77を平行移動させる未補正センサ群移動部59を備える。センサ位置順次補正部57により、すべてのセンサユニットSiの補正前位置Q0,iから最終位置PF,iへの位置補正が行われる。ここで、補正前位置Q0,iは、センサ位置順次補正部57により位置補正が行われる直前のそれぞれのセンサユニットSiの位置である。未補正センサ群移動部59は、センサ位置順次補正部57による直前の位置補正で補正対象だったセンサユニットSiである直前補正対象センサ79の補正前位置Q0,iから最終位置PF,iへの補正量だけ、未補正センサ群77を平行移動させる。これにより、未補正センサ群77は、平行移動前位置Ua−1,i(a=1,2,…)から平行移動後位置Ua,iまで平行移動する。ここで、aは、未補正センサ群移動部59によりそれぞれのセンサユニットSiが平行移動した回数を示している。それぞれのセンサユニットSiの未補正センサ群移動部59による1回目の平行移動の平行移動前位置U0,iは、仮位置P0,iと一致する。それぞれのセンサユニットSiは、未補正センサ群移動部59により(i−1)回だけ平行移動する。それぞれのセンサユニットSiの未補正センサ群移動部59による(i−1)回目の平行移動の平行移動後位置Ui−1,iは、補正前位置Q0,iと一致する。以上のように、センサ位置順次補正部57での位置補正及び未補正センサ群移動部59での平行移動により、それぞれのセンサユニットSiが、仮位置P0,iから最終位置PF,iへ位置修正される。
センサ位置順次補正部57は、位置補正の対象である補正対象センサ81を位置補正前の補正前位置Q0,iから1回以上移動させるセンサ移動部61を備える。センサ移動部61での1回の移動により、補正対象センサ81は移動前位置Qt−1,i(t=1,2,…)から移動後位置Qt,iまで移動する。ここで、tはセンサ移動部61によりぞれぞれのセンサユニットSiが移動した回数を示している。また、センサ位置順次補正部57は、センサ移動部61により補正対象センサ81の移動が1回行われるたびに、補正対象センサ81に対して基端側(グローバル座標系Cの原点に近い側)に隣設されるセンサユニットSiである近位側隣設センサ82の最終位置PF,iと補正対象センサ81の移動後位置Qt,iとの間を曲線補間する移動後円弧形成部62とを備える。移動後円弧形成部62で近位側隣設センサ82の最終位置PF,iと補正対象センサ81の移動後位置Qt,iとの間を曲線補間することにより、移動後円弧Lt,jが形成される。
センサ位置順次補正部57は、移動後円弧形成部62により形成される移動後円弧Lt,jの弧長Rt,jφt,jとセンサ間寸法lとの差の絶対値が所定の閾値以下になるまで、補正対象センサ81の移動前位置Qt−1,iから移動後位置Qt,iへの移動を繰り返し行う状態にセンサ移動部61を制御する移動制御部63を備える。ここで、移動後円弧Lt,jの弧長Rt,jφt,jとセンサ間寸法lとの差の絶対値をエネルギーEt,jとする。また、センサ位置順次補正部57は、センサ移動部61による最終回(例えばF回目)の移動での移動後位置QF,iを、補正対象センサ81の最終位置PF,iとして決定する最終位置決定部64を備える。センサ移動部61、移動後円弧形成部62、移動制御部63、最終位置決定部64での詳細な処理については、後述する。
ここで、センサ位置修正部55で、それぞれのセンサユニットS
iの位置を修正する方法について説明する。図4に示すように、センサ位置修正部55は、センサ位置修正部55は、仮曲線形状検出部50により検出された仮曲線形状75のそれぞれの仮円弧L
0,jの弧長R
0,jφ
0,jとセンサ間寸法lとの差の絶対値に基づいて、それぞれのセンサユニットS
iの位置を修正する(ステップS106)。すなわち、
で求められるエネルギーE0,j基づいて、それぞれのセンサユニットSiの位置を修正する。これにより、それぞれのセンサユニットSiは、仮位置P0,iから最終位置PF,iまで修正される。
前述のように、仮曲線形状検出部50により、実際の挿入部11の曲線形状と誤差の少ない仮曲線形状75が形成される。しかし、仮曲線形状検出部50では、センサ間寸法lを考慮して、それぞれのセンサユニットSiの間の曲線補間を行っていない。また、それぞれのセンサユニットSiの計測データはノイズ等により誤差を有する。したがって、センサ間寸法lを考慮して、それぞれの仮円弧L0,jの弧長R0,jφ0,jとセンサ間寸法lとの差の絶対値に基づいて、それぞれのセンサユニットSiの位置を修正することが重要となる。
図12は、センサ位置修正部55によりそれぞれのセンサユニットSiの位置を修正する方法を示すフローチャートである。図13は、センサ位置順次補正部57による処理を説明する図である。図12に示すように、それぞれのセンサユニットSiの位置を修正する際は、センサ位置順次補正部57により基端側(グローバル座標系Cの原点に近い側)のセンサユニットSiから順次に、それぞれのセンサユニットSiの位置補正前の補正前位置Q0,iから最終位置PF,iへの位置補正が行われる。ここで、補正前位置Q0,iは、センサ位置順次補正部57により位置補正が行われる直前のそれぞれのセンサユニットSiの位置であり、それぞれのセンサユニットSiが仮位置P0,iから未補正センサ群移動部59により(i−1)回だけ平行移動した位置である。センサ位置順次補正部57は、未補正センサ群77の中で最も基端側のセンサユニットSiの位置補正を開始する(ステップS121)。すなわち、図13に示すように、センサユニットSk−1まで補正前位置Q0,iから最終位置PF,iへの位置補正が完了している場合には、センサ位置順次補正部57により、未補正センサ群77の中で最も基端側のセンサユニットSkの最終位置PF,kへの位置補正が開始される。すなわち、センサユニットSkが位置補正の対象である補正対象センサ81となる。なお、以下の説明では、基端側から(k+1)番目のセンサユニットSkの位置補正について説明する。
図13に示すように、補正対象センサ81であるセンサユニットSkの位置補正を開始する際、センサユニットSk−1まで補正前位置Q0,iから最終位置PF,iへの位置補正が完了している。この際、センサユニットSkは、補正前位置Q0,kに位置している。この状態で、センサ移動部61により、センサユニットSkが位置Q0,kから位置Q1,kに移動し(ステップS122)、センサユニットSkの1回目の移動が行われる。この際、位置Q0,kが移動前位置、位置Q1,kが移動後位置となる。センサ移動部61によるセンサユニットSkの移動は、1回以上行われる。図14は、センサ移動部61及び移動後円弧形成部62での処理を説明する図である。図14に示すように、s回目の移動では、補正対象センサ81であるセンサユニットSkは移動前位置Qs−1,kから移動後位置Qs,kまで移動する。すなわち、センサ移動部61による1回の移動により、センサユニットSkは移動前位置Qt−1,kから移動後位置Qt,kまで移動する(ステップS122)。
そして、センサ移動部61によりセンサユニットSkの移動が1回行われるたびに、移動後円弧形成部62により、センサユニットSkに対して基端側に隣設されるセンサユニットSk−1の最終位置PF,k−1とセンサユニットSkの移動後位置Qt,kとの間が曲線補間され、移動後円弧Lt,kが形成される(ステップS123)。図14に示すように、s回目の移動後には、センサユニットSk−1の最終位置PF,k−1とセンサユニットSkの移動後位置Qs,kとの間が曲線補間され、移動後円弧Ls,kが形成される。ここで、センサユニットSk−1は、補正対象センサ81であるセンサユニットSkに対してグローバル座標系Cの原点に近い側に隣設される近位側隣設センサ82である。
センサユニットS
kのs回目に移動後に移動後円弧L
s,kを形成する際は、センサユニットS
k−1の最終位置P
F,k−1での単位接ベクトル及びセンサユニットS
kの移動後位置Q
s,kでの単位接ベクトルを算出する。センサユニットS
k−1の最終位置P
F,k−1での単位接ベクトルは、
となる。すなわち、最終位置P
F,k−1での単位接ベクトルは、最終位置P
F,k−1から移動後位置Q
s,kまでのベクトルの単位ベクトルである。また、移動後位置Q
s,kでの単位接ベクトルを算出する際は、補正対象センサ81であるセンサユニットS
kに対してグローバル座標系Cの原点から遠い側に隣設される遠位側隣設センサ83であるセンサユニットS
k+1が、位置Q´
s,k+1に配置されていると仮定する。ここで、移動後位置Q
s,kから位置Q´
s,k+1までのベクトルは、センサユニットS
kの仮位置P
0,kからセンサユニットS
k+1の仮位置P
0,k+1までのベクトルと向き及び大きさが同一である。センサユニットS
kの移動後位置Q
s,kでの単位ベクトルは、
となる。すなわち、移動後位置Qs,kでの単位接ベクトルは、移動後位置Qs,kからセンサユニットSk+1の位置Q´s,k+1までのベクトルの単位ベクトルである。したがって、移動後位置Qs,kでの単位接ベクトルは、式(17.1)〜式(17.3)でkをk+1に置換して得られる単位接ベクトルと向きが同一である。
そして、式(23.1)〜式(23.3)、式(24.1)〜式(24.3)により算出された単位接ベクトルに基づいて、センサユニットS
k−1の最終位置P
F,k−1とセンサユニットS
kの移動後位置Q
s,kとの間での単位接ベクトルの変化率を算出する。まず、最終位置P
F,k−1と移動後位置Q
s,kとの間での単位接ベクトルの変化率ベクトルが、
で求められる。そして、式(25.1)、式(25.2)で求められた変化率ベクトルの大きさが最終位置PF,k−1と移動後位置Qs,kとの間での単位接ベクトルの変化率となる。
そして、式(23.1)〜式(23.3)、式(24.1)〜式(24.3)により算出された単位接ベクトル及び式(25.1)、式(25.2)により算出された変化率に基づいて、センサユニットS
k−1の最終位置P
F,k−1とセンサユニットS
kの移動後位置Q
s,kとの間の移動後円弧L
s,kを形成する。ここで、式(25.1)、式(25.2)で算出した最終位置P
F,k−1と移動後位置Q
s,kとの間での単位接ベクトルの変化率は、移動後円弧L
s,kの曲率1/R
s,kとなる。移動後円弧L
s,kの半径R
s,kは曲率1/R
s,kの逆数であるため、移動後円弧L
s,kの半径R
s,kは、
となる。また、移動後円弧L
s,kの中心O
s,kのグローバル座標Cでの位置が、
により求められる。さらに、最終位置P
F,k−1での単位接ベクトル及び移動後位置Q
s,kでの単位接ベクトルを用いて、移動後円弧L
s,kの中心角φ
s,kが、
により求められる。これらのパラメータを用いて、最終位置PF,k−1と移動後位置Qs,kとの間の移動後円弧Ls,kが形成される。
なお、センサユニットSkのs回目の移動後に移動後円弧Ls,kを形成する処理について説明したが、センサユニットSkのs回目以外の移動後についても、式(23.1)〜式(28)で、sをtで置換した式を用いて同様に、センサユニットSk−1の最終位置PF,k−1とセンサユニットSkの移動後位置Qt,kとの間の移動後円弧Lt,kが形成される。
そして、移動後円弧L
t,kが形成された後、移動制御部63により移動後円弧L
t,kの弧長R
t,kφ
t,kとセンサ間寸法lとの差の絶対値が算出される(ステップS124)。ここで、移動後円弧L
t,kの弧長R
t,kφ
t,kとセンサ間寸法lとの差の絶対値をエネルギーE
t,kとし、
で与えられる。エネルギーEt,kが所定の閾値より大きい場合は(ステップS124−No)、ステップS122に戻り、センサ移動部61がセンサユニットSkを位置Qt,kからさらに移動させる。センサユニットSkのs回目の移動後にエネルギーEs,kが所定の閾値より大きい場合は、センサ移動部61により(s+1)回目の移動が行われる。(s+1)回目の移動により、センサユニットSkは移動前位置Qs,kから移動後位置Qs+1,kに移動する。以上のように、センサ移動部61は、エネルギーEt,kが所定の閾値以下になるまで、補正対象センサ81であるセンサユニットSkの移動前位置Qt−1,kから移動後位置Qt,kへの移動を繰り返し行う状態に、移動制御部63により制御されている。
エネルギーEt,kが所定の閾値以下の場合は(ステップS124−Yes)、次のステップに進む。そして、最終位置決定部64が、センサ移動部61によるセンサユニットSkの最終回(例えばF回目)の移動での移動後位置QF,kを、補正対象センサ81であるセンサユニットSkの最終位置PF,kとして決定する(ステップS125)。以上のようにして、センサユニットSkの補正前位置Q0,kから最終位置PF,kへの位置補正が完了する。
なお、センサユニットSk以外のセンサユニットSiについても、センサ位置順次補正部57によりセンサユニットSkと同様に最終位置Pi,kへの位置補正が行われる。すなわち、センサ移動部61により、センサユニットSiは移動前位置Qt−1,iから移動後位置Qt,iまで移動する(ステップS122)。そして、センサ移動部61によりセンサユニットSiの移動が1回行われるたびに、移動後円弧形成部62により、センサユニットSiに対して基端側に隣設される近位側隣設センサ82であるセンサユニットSi−1の最終位置PF,i−1とセンサユニットSiの移動後位置Qt,iとの間が曲線補間され、移動後円弧Lt,jが形成される(ステップS123)。
そして、移動後円弧Lt,jが形成された後、移動制御部63により移動後円弧Lt,jの弧長Rt,jφt,jとセンサ間寸法lとの差の絶対値であるエネルギーEt,jが算出される(ステップS124)。エネルギーEt,jが所定の閾値より大きい場合は(ステップS124−No)、ステップS122に戻り、センサ移動部61がセンサユニットSiを位置Qt,iからさらに移動させる。エネルギーEt,jが所定の閾値以下の場合は(ステップS124−Yes)、次のステップに進む。そして、最終位置決定部64が、センサ移動部61によるセンサユニットSiの最終回の移動での移動後位置QF,iを、補正対象センサ81であるセンサユニットSiの最終位置PF,iとして決定する(ステップS125)。以上のようにして、センサユニットSiの補正前位置Q0,iから最終位置PF,iへの位置補正が完了する。
そして、センサ位置順次補正部57により1つのセンサユニットSiの位置補正が行われるたびに、未補正センサ群移動部59により、位置補正が完了していないセンサユニットSiである未補正センサ群77が平行移動される(ステップS126)。図15は、未補正センサ群移動部59での処理を説明する図である。図15に示すように、センサ位置順次補正部57によりセンサユニットSkの補正前位置Q0,kから最終位置PF,kへの位置修正が完了した状態では、センサユニットSk+1〜SNが、位置補正が完了していない未補正センサ群77となる。また、センサユニットSkが、センサ位置順次補正部57による直前の位置補正で補正対象だった直前補正対象センサ79となる。
この状態で、未補正センサ群移動部59は、直前補正対象センサ79であるセンサユニットSkの補正前位置Q0,kから最終位置PF,kへの補正量だけ、未補正センサ群77を平行移動させる。これにより、未補正センサ群77のそれぞれのセンサユニットSiが平行移動前位置Uk−1,iから平行移動後位置Uk,iへ移動する。ここで、未補正センサ群77のそれぞれのセンサユニットSiが平行移動前位置Uk−1,iは、それぞれのセンサユニットSiが仮位置P0,iから未補正センサ群移動部59により(k−1)回だけ移動した位置であり、今回の平行移動で、未補正センサ群77のそれぞれのセンサユニットSiは未補正センサ群移動部59によりk回だけ平行移動したこととなる。また、センサユニットSk+1の平行移動後位置Uk,k+1は、補正前位置Q0,k+1と一致し、センサユニットSkの最終位置PF,kからセンサユニットSk+1の平行移動後位置Uk,k+1へのベクトルは、センサユニットSkの仮位置P0,kからセンサユニットSk+1の仮位置P0,k+1までのベクトルと向き及び大きさが同一である。
なお、センサユニットSk以外のセンサユニットSiの最終位置PF,iへの位置補正が完了した状態でも、センサユニットSkと同様に、未補正センサ群77が平行移動される。すなわち、未補正センサ群移動部59は、直前補正対象センサ79がセンサ位置順次補正部57により補正前位置Q0,iから最終位置PF,iへ補正された補正量だけ、未補正センサ群77を平行移動させる(ステップS126)。これにより、未補正センサ群77は、平行移動前位置Ua−1,iから平行移動後位置Ua,iまで平行移動する。
そして、図12に示すように、すべてのセンサユニットSiについて位置補正が完了したか確認する(ステップS127)。すべてのセンサユニットSiについて位置補正が完了している場合は(ステップS127−Yes)、次のステップへ進む。すべてのセンサユニットSiについて位置補正が完了していない場合は(ステップS127−No)、ステップS121に戻り、センサ位置順次補正部57により、未補正センサ群77の中で最も基端側のセンサユニットSiの位置補正が行われる。すなわち、ステップS121〜S126が、すべてのセンサユニットSiについて位置補正が完了するまで、繰り返し行われる。以上のように、センサ位置順次補正部57での補正前位置Q0,iから最終位置PF,i位置への位置補正及び未補正センサ群移動部59での平行移動により、それぞれのセンサユニットSiが、仮位置P0,iから最終位置PF,iへ位置修正される。
図3に示すように、センサ位置修正部55は、最終曲線形状検出部65に接続されている。最終曲線形状検出部65は、それぞれのセンサユニットSiの最終位置PF,iの間を最終円弧LF,jで曲線補間し、挿入部11の最終曲線形状85を検出する。図16は、最終曲線形状検出部65により検出された内視鏡10の挿入部11の最終曲線形状85をグローバル座標CのZ軸の負から正の方向に向かって視た図である。図16に示すように、最終曲線形状検出部65により、それぞれのセンサユニットSiの最終位置PF,iの間が曲線補間される。これにより、それぞれの最終円弧LF,jが形成され、最終曲線形状85が検出される。
最終曲線形状検出部65は、それぞれのセンサユニットSiの最終位置PF,iに基づいて、それぞれの最終円弧LF,jのパラメータを算出するパラメータ算出部67と、パラメータ算出部67により算出されたパラメータに基づいて、最終円弧PF,iを形成する最終円弧形成部69とを備える。最終円弧形成部69は、クォータニオン(四元数)及び媒介変数tを用いた補間関数LF,j(t)により、媒介変数tの変化に対して等角速度でそれぞれのセンサユニットSiの最終位置PF,iの間を曲線補間し、最終円弧LF,jを形成する。
最終曲線形状検出部65には、描画部45が接続されている。最終曲線形状検出部65により検出されたグローバル座標系Cでの挿入部11の最終曲線形状85は、描画部45により描画される。術者は、描画部45により描画された最終曲線形状85を表示部47で確認可能となっている。
ここで、最終曲線形状検出部65で、センサ位置修正部55により位置修正されたそれぞれのセンサユニットSiの最終位置PF,iの間を曲線補間し、最終曲線形状85を検出する方法について説明する。図4に示すように、最終曲線形状検出部65は、ステップS106で位置修正されたそれぞれのセンサユニットSiの最終位置PF,iの間を最終円弧LF,jで曲線補間を行い、最終曲線形状85を検出する(ステップS107)。これにより、センサ間寸法lを考慮してそれぞれのセンサユニットSiの最終位置PF,iの間の曲線補間が行われ、検出精度の高い最終曲線形状85が検出される。
最終曲線形状85を検出する際、最終曲線形状検出部65は、それぞれのセンサユニットSiの最終位置PF,iの間ごとに順次に曲線補間を行い、最終円弧LF,jを形成する。ここで、最終曲線形状検出部65により、それぞれのセンサユニットSiの最終位置PF,iの間の曲線補間を行う方法について説明する。ここでは、基端側からk番目のセンサユニットSk−1と基端側から(k+1)番目のセンサユニットSkとの間の曲線補間について説明する。すなわち、最終位置PF,k−1と最終位置PF,kとの間が、補間対象である補間対象最終位置間となる。
図17は、最終曲線形状検出部65により最終曲線形状85を検出する方法を示すフローチャートである。図18は、最終曲線形状検出部65での処理を説明する図である。図17及び図18に示すように、最終曲線形状検出部65によりセンサユニットSk−1の最終位置PF,k−1とセンサユニットSkの最終位置PF,kとの間である補間対象の最終位置間の曲線補間を行う際は、まず、パラメータ算出部67により、最終位置PF,k−1及び最終位置PF,kに基づいて、最終円弧LF,kのパラメータを算出する(ステップS131)。
この際、センサユニットS
k−1の最終位置P
F,k−1での単位接ベクトル及びセンサユニットS
kの最終位置P
F,kでの単位接ベクトルを算出する。センサユニットS
k−1の最終位置P
F,k−1での単位接ベクトルは、
となる。すなわち、最終位置PF,k−1での単位接ベクトルは、最終位置PF,k−1から最終位置PF,kまでのベクトルの単位ベクトルである。センサユニットSkの最終位置PF,kでの単位接ベクトルは、式(30.1)、式(30.2)、式(30.3)のkをk+1で置換した式を用いて求められる。すなわち、最終位置PF,kでの単位接ベクトルは、最終位置PF,kから最終位置PF,k+1までのベクトルの単位ベクトルである。
そして、最終位置P
F,k−1及びP
F,kでの単位接ベクトルに基づいて、センサユニットS
k−1の最終位置P
F,k−1とセンサユニットS
kの最終位置P
F,kとの間での単位接ベクトルの変化率を算出する。まず、最終位置P
F,k−1と最終位置P
F,kとの間での単位接ベクトルの変化率ベクトルが、
で求められる。そして、式(31.1)、式(31.2)で求められた変化率ベクトルの大きさが最終位置PF,k−1と最終位置PF,kとの間での単位接ベクトルの変化率となる。
そして、式(30.3)〜式(31.2)により算出された単位接ベクトル及び変化率に基づいて、センサユニットS
k−1の最終位置P
F,k−1とセンサユニットS
kの最終位置P
F,kとの間の最終円弧L
F,kのパラメータが算出される。ここで、最終円弧L
F,kの半径R
F,kは、式(31.1)、式(31.2)を用いて算出された変化率
kの逆数であるため、
となる。また、最終円弧L
F,kの中心O
F,kのグローバル座標Cでの位置が、
により求められる。さらに、最終円弧L
F,kの中心角φ
F,kが、
により求められる。
なお、最終円弧LF,k以外の最終円弧LF,jについても、式(30.1)〜式(34)のkをjで置換した式を用いて、最終円弧LF,kと同様に、パラメータ算出部67により、最終円弧LF,jのパラメータが算出される。すなわち、それぞれのセンサユニットSiの最終位置PF,iに基づいて、それぞれの最終円弧LF,jのパラメータを算出する(ステップS131)。
そして、パラメータ算出部67により算出された最終円弧LF,jのパラメータに基づいて、最終円弧形成部69が、それぞれのセンサユニットSiの最終位置PF,iの間を曲線補間し、最終円弧LF,jを形成する(ステップS132)。最終円弧LF,jの形成は、クォータニオン(四元数)及び媒介変数を用いた補間関数により行われる。
ここで、クォータニオンは、複素数を拡張した数であり、
で現される。式(35)のi,j,kは虚数単位を示し、
の関係を満たす。
図18に示すように、センサユニットS
k−1の最終位置P
F,k−1とセンサユニットS
kの最終位置P
F,kとの間の最終円弧L
F,kを形成する場合には、グローバル座標系Cにおいて、最終円弧L
F,kの中心O
F,kからセンサユニットS
k−1の最終位置P
F,k−1へのベクトルを算出する。中心O
F,kから最終位置P
F,k−1へのベクトルは、
となる。また、グローバル座標系Cにおいて、最終円弧L
F,kの中心O
F,kからセンサユニットS
kの最終位置P
F,kへのベクトルを算出する。中心O
F,kから最終位置P
F,kへのベクトルは、
となる。
式(37)で算出されたベクトルは、クォータニオンにより、
と現される。同様に、式(38)で算出されたベクトルは、クォータニオンにより、
と現される。すなわち、算出されたベクトルのグローバル座標系CのX軸方向成分が、クォータニオンの虚数iの成分となる。同様に、ベクトルのグローバル座標系CのY軸方向成分がクォータニオンの虚数jの成分となり、ベクトルのグローバル座標系CのZ軸方向成分がクォータニオンの虚数kの成分となる。
そして、式(39)、式(40)のクォータ二オンを用いて、以下の関数L´
F,k(t)を定義する。関数L´
F,k(t)は、
となる。ここで、tは媒介変数である。正規化のため、式(41)の両辺をsinφ
F,kで割ると、
となり、補間関数LF,k(t)が算出される。
そして、補間関数LF,k(t)でtを0から1に変化させることにより、センサユニットSk−1の最終位置PF,k−1とセンサユニットSkの最終位置PF,kとの間が曲線補間され、最終円弧LF,kが形成される。この際、最終位置PF,k−1と最終位置PF,kとの間は、媒介変数tの変化に対して等角速度で曲線補間される。例えば、tが0から0.1に変化する間に補間される距離d1と、tが0.5から0.6に変化する間に補間される距離d2は同一である(図18参照)。したがって、最終位置PF,k−1と最終位置PF,kとの間を補間する際に、角速度の変化を考慮する必要がないため、最終円弧LF,kを形成する処理が単純化される。
なお、最終円弧LF,k以外の最終円弧LF,jについても、補間関数LF,j(t)を用いて形成される。補間関数LF,j(t)は、式(37)〜式(42)のkをjで置換した式を用いて、算出される。この場合も、それぞれのセンサユニットSiの最終位置PF,iの間は、補間関数LF,j(t)の媒介変数tの変化に対して等角速度で曲線補間される。すべての最終円弧LF,jが形成されることにより、内視鏡10の挿入部11の最終曲線形状85が検出される。
図4に示すように、最終曲線形状検出部65により最終曲線形状85が検出されると、内視鏡形状検出装置1による検査が完了したかを確認する(ステップS108)。検査が完了していない場合は(ステップS108−No)、ステップS101に戻り、次の静状態での内視鏡10の挿入部11の形状検出を行う。検査が完了している場合は(ステップS108−Yes)、内視鏡10の挿入部11の形状検出は終了する。
そこで、上記構成の内視鏡形状検出装置1及び内視鏡形状検出装置1を用いた内視鏡10の挿入部11の形状検出方法では、以下の効果を奏する。すなわち、内視鏡形状検出装置1では、それぞれのセンサユニットSiの計測データから姿勢検出部30がセンサユニットSiの姿勢を検出し、それぞれのセンサユニットSiの姿勢からセンサ仮位置検出部40でそれぞれのセンサユニットSiの仮位置P0,iを検出する。そして、仮曲線形状検出部50が、それぞれのセンサユニットSiの仮位置P0,iの間を仮円弧L0,jで曲線補間を行い、仮曲線形状75を検出する。そして、センサ位置修正部55が、仮曲線形状75のそれぞれの仮円弧L0,jの弧長R0,jφ0,jとセンサ間寸法lとの差の絶対値に基づいて、それぞれのセンサユニットSiの位置を修正する。そして、最終曲線形状検出部65が位置修正されたそれぞれのセンサユニットSiの最終位置PF,iの間を最終円弧LF,jで曲線補間を行い、最終曲線形状85を検出する。以上のように、観察時に体腔内に挿入される挿入部11に配置されるセンサユニットSiの計測データから、挿入部11の最終曲線形状85が検出されるため、体外にセンスコイル等を設ける必要がない。このため、内視鏡形状検出装置1の小型化、単純化を実現することができる。
また、センサ位置順次補正部57によりそれぞれのセンサユニットSiの位置を補正する際には、センサ移動部61がセンサユニットSiを移動前位置Qt−1,iから移動後位置Qt,iまで移動する。そして、センサ移動部61によりセンサユニットSiの移動が1回行われるたびに、移動後円弧形成部62により、センサユニットSiに対して基端側に隣設されるセンサユニットSi−1の最終位置PF,i−1とセンサユニットSiの移動後位置Qt,iとの間が曲線補間され、移動後円弧Lt,jが形成される。そして、移動後円弧Lt,jが形成された後、移動制御部63により移動後円弧Lt,jの弧長Rt,jφt,jとセンサ間寸法lとの差の絶対値であるエネルギーEt,jが算出される。エネルギーEt,jが所定の閾値より大きい場合は、センサ移動部61がセンサユニットSiを位置Qt,iからさらに移動させる。エネルギーEt,jが所定の閾値以下の場合は、最終位置決定部64が、センサ移動部61によるセンサユニットSiの最終回の移動での移動後位置QF,iを、補正対象センサ81であるセンサユニットSiの最終位置PF,iとして決定する。すなわち、エネルギーEt,jが所定の閾値以下になるまで、センサ移動部61によるセンサユニットSiの移動が繰り返される。以上のように、それぞれのセンサユニットSiの間の実際の寸法であるセンサ間寸法lに基づいて、センサ位置順次補正部57によるそれぞれのセンサユニットSiの位置補正が行われるため、実際の挿入部11の形状と誤差の少ない最終曲線形状85を検出することができる。これにより、高い精度で挿入部11の最終曲線形状85を検出することができる。
また、センサ位置修正部55によりセンサユニットSiの位置を修正すると、センサユニットSiに対して基端側に隣設されるセンサユニットSi−1とセンサユニットSiとの間の形状のみが影響を受け、仮円弧L0,jが最終円弧LF,jに修正される。すなわち、1つのセンサユニットSiの位置修正が行われるたびに、挿入部11の形状全体が修正される構成でない。ここで、センサ間寸法lは、それぞれのセンサユニットSiの間の長手方向の寸法であり、挿入部11の局所的なパラメータである。すなわち、センサ間寸法lは、挿入部11全体の形状に影響を与えるパラメータではなく、挿入部11の形状に局所的に影響を与えるパラメータである。したがって、1つのセンサユニットSiの位置の修正により、位置修正されたセンサユニットSiの近傍で局所的に挿入部11の形状が修正されるため、高い精度で仮円弧L0,jから最終円弧LF,jへの修正が行われる。これにより、挿入部11の最終曲線形状85を、高い精度で検出することができる。また、1つのセンサユニットSiの位置の修正により、位置修正されたセンサユニットSiの近傍でのみ局所的に挿入部11の形状が修正されるため、挿入部11の形状を修正する処理を単純化することができる。
また、最終曲線形状検出部65では、補間関数LF,j(t)でtを0から1に変化させることにより、それぞれのセンサユニットSiの最終位置PF,iの間が曲線補間され、それぞれの最終円弧LF,jが形成される。この際、それぞれのセンサユニットSiの最終位置PF,iの間は、媒介変数tの変化に対して等角速度で曲線補間される。したがって、それぞれの最終位置PF,iの間を補間する際に、角速度の変化を考慮する必要がないため、それぞれの最終円弧LF,jを形成する処理を単純化することができる。
さらに、内視鏡形状検出装置1では、挿入部11が移動していない静状態において、加速度センサAiが重力加速度を計測し、地磁気センサBiが地磁気を計測する。そして、計測された重力加速度、地磁気から姿勢検出部30がそれぞれのセンサユニットSiの姿勢を検出する。静状態では、重力加速度及び地磁気は、常に一定の方向に一定の大きさを有する。重力加速度、地磁気からそれぞれのセンサユニットSiの姿勢を検出するため、静状態においても高い精度でセンサユニットSiの姿勢を検出することができる。これにより、高い精度で挿入部11の最終曲線形状85を検出することができる。
(第2の実施形態)
次に、本発明の第2の実施形態について図19を参照して説明する。なお、第1の実施形態と同一の部分及び同一の機能を有する部分については同一の符号を付して、その説明は省略する。
本実施形態のセンサ位置修正部55は、第1の実施形態と同様に、基端側(グローバル座標系Cの原点に近い側)のセンサユニットSiから順次に、それぞれのセンサユニットSiの補正前位置Q0,iから最終位置PF,iへの位置補正を行うセンサ位置順次補正部57と、センサ位置順次補正部57により1つのセンサユニットSiの位置補正が行われるたびに、位置補正が完了していないセンサユニットSiである未補正センサ群77を平行移動させる未補正センサ群移動部59と、を備える。
センサ位置順次補正部57は、第1の実施形態と同様に、位置補正の対象である補正対象センサ81を補正前位置Q0,iから1回以上移動させるセンサ移動部61を備える。センサ移動部61での1回の移動により、補正対象センサ81は移動前位置Qt−1,iから移動後位置Qt,iまで移動する。また、センサ位置順次補正部57は、センサ移動部61により補正対象センサ81の移動が1回行われるたびに、補正対象センサ81に対して基端側(グローバル座標系Cの原点に近い側)に隣設されるセンサユニットSiである近位側隣設センサ82の最終位置PF,i−1と補正対象センサ81の移動後位置Qt,iとの間を曲線補間する移動後円弧形成部62とを備える。移動後円弧形成部62で近位側隣設センサ82の最終位置PF,i−1と補正対象センサ81の移動後位置Qt,iとの間を曲線補間することにより、移動後円弧Lt,jが形成される。
センサ位置順次補正部57は、近位側隣設センサ82の最終位置PF,i−1と補正対象センサ81の移動前の移動前位置Qt−1,iとの間を曲線補間して形成される移動前円弧Lt−1,jの弧長Rt−1,jφt−1,jとセンサ間寸法lとの差の絶対値に対して、移動後円弧Lt,jの弧長Rt,jφt,jとセンサ間寸法lとの差の絶対値が小さくなる補正対象センサ81の移動を所定の回数だけ繰り返す状態にセンサ移動部61を制御する移動制御部63を備える。ここで、移動前円弧Lt−1,jの弧長Rt−1,jφt−1,jとセンサ間寸法lとの差の絶対値をエネルギーEt−1,jとする。同様に、移動後円弧Lt,jの弧長Rt,jφt,jとセンサ間寸法lとの差の絶対値をエネルギーEt,jとする。また、センサ位置順次補正部57は、センサ移動部61による最終回の移動での移動後位置QF,iを、補正対象センサ81の最終位置PF,iとして決定する最終位置決定部64を備える。
ここで、センサ位置修正部55で、それぞれのセンサユニットSiの位置を修正する方法について説明する。センサ位置修正部55は、第1の実施形態と同様に、仮曲線形状検出部50により検出された仮曲線形状75のそれぞれの仮円弧L0,jの弧長R0,jφ0,jとセンサ間寸法lとの差の絶対値に基づいて、それぞれのセンサユニットSiの位置を修正する(図4のステップS106)。すなわち、式(22)で求められるエネルギーE0,j基づいて、それぞれのセンサユニットSiの位置を修正する。これにより、それぞれのセンサユニットSiは、仮位置P0,iから最終位置PF,iまで修正される。
図19は、センサ位置修正部55によりそれぞれのセンサユニットSiの位置を修正する方法を示すフローチャートである。図19に示すように、それぞれのセンサユニットSiの位置を修正する際は、第1の実施形態と同様に、センサ位置順次補正部57により基端側(グローバル座標系Cの原点に近い側)のセンサユニットSiから順次に、それぞれのセンサユニットSiの補正前位置Q0,iから最終位置PF,iへの位置補正が行われる。センサ位置順次補正部57は、未補正センサ群77の中で最も基端側のセンサユニットSiの位置補正を開始する(ステップS141)。すなわち、センサユニットSk−1まで補正前位置Q0,iから最終位置PF,iへの位置補正が完了している場合には、センサ位置順次補正部57により、未補正センサ群77の中で最も基端側のセンサユニットSkの最終位置PF,kへの位置補正が開始される。この場合、センサユニットSkが位置補正の対象である補正対象センサ81となる。なお、以下の説明では、基端側から(k+1)番目のセンサユニットSkの位置補正について説明する。
補正対象センサ81であるセンサユニットSkの位置補正を開始する際、センサユニットSk−1まで最終位置PF,iへの位置補正が完了している。この際、センサユニットSkは、補正前位置Q0,kに位置している。この状態で、センサ移動部61により、センサユニットSkが位置Q0,kから位置Q1,kに移動し(ステップS142)、センサユニットSkの1回目の移動が行われる。センサ移動部61によるセンサユニットSkの移動は、1回以上行われる。そして、s回目の移動では、補正対象センサ81であるセンサユニットSkは移動前位置Qs−1,kから移動後位置Qs,kまで移動する。すなわち、センサ移動部61による1回の移動により、センサユニットSkは移動前位置Qt−1,kから移動後位置Qt,kまで移動する(ステップS142)。
そして、センサ移動部61によりセンサユニットSkの移動が1回行われるたびに、移動後円弧形成部62により、センサユニットSkに対して基端側に隣設されるセンサユニットSk−1の最終位置PF,k−1とセンサユニットSkの移動後位置Qt,kとの間が曲線補間され、移動後円弧Lt,kが形成される(ステップS143)。s回目の移動後には、センサユニットSk−1の最終位置PF,k−1とセンサユニットSkの移動後位置Qs,kとの間が曲線補間され、移動後円弧Ls,kが形成される。ここで、センサユニットSk−1は、補正対象センサ81であるセンサユニットSkに対してグローバル座標系Cの原点に近い側に隣設される近位側隣設センサ82である。
センサユニットSkのs回目に移動後に移動後円弧Ls,kを形成する際は、第1の実施形態と同様に式(23.1)〜式(28)を用いて、移動後円弧Ls,kのパラメータが算出される。そして算出されたパラメータを用いて、最終位置PF,k−1と移動後位置Qs,kとの間の移動後円弧Ls,kが形成される。
なお、センサユニットSkのs回目に移動後に移動後円弧Ls,kを形成する処理について説明したが、センサユニットSkのs回目以外の移動後についても、式(23.1)〜式(28)で、sをtで置換した式を用いて同様に、センサユニットSk−1の最終位置PF,k−1とセンサユニットSkの移動後位置Qt,kとの間の移動後円弧Lt,kが形成される。
センサ移動部61は、移動制御部63により、近位側隣設センサ82の最終位置PF,k−1と補正対象センサ81の移動前の移動前位置Qt−1,kとの間を曲線補間して形成される移動前円弧Lt−1,kの弧長Rt−1,kφt−1,kとセンサ間寸法lとの差の絶対値に対して、移動後円弧Lt,kの弧長Rt,kφt,kとセンサ間寸法lとの差の絶対値が小さくなる補正対象センサ81の移動を行う状態に制御されている。ここで、移動後円弧Lt,kの弧長Rt,kφt,kとセンサ間寸法lとの差の絶対値をエネルギーEt,kとし、第1の実施形態と同様に式(29)で与えられる。また、移動前円弧Lt−1,kの弧長Rt−1,kφt−1,kとセンサ間寸法lとの差の絶対値をエネルギーEt−1,kとし、式(29)のtをt−1で置換した式で与えられる。すなわち、センサ移動部61は、移動後のエネルギーEt,kが移動前のエネルギーEt−1,kより小さくなる状態に補正対象センサ81であるセンサユニットSkの移動を行っている(ステップS142)。なお、例えばセンサユニットSkのs回目の移動での移動前円弧Ls−1,kは、センサユニットSkの(s−1)回目の移動での移動後円弧Ls−1,kと同一の円弧である。センサユニットSkのs回目の移動での移動前円弧Ls−1,kは、式(23.1)〜式(28)でsをs−1で置換した式を用いて、形成される。
そして、移動制御部63が、補正対象センサ81であるセンサユニットSkの移動を所定の回数だけ行ったかを判断する(ステップS144)。センサユニットSkの移動を所定の回数だけ行っていない場合は(ステップS144−No)、ステップS122に戻り、センサ移動部61がセンサユニットSkを位置Qt,kからさらに移動させる。この場合、センサユニットSkのs回目の移動後に、センサ移動部61により(s+1)回目の移動が行われる。(s+1)回目の移動により、センサユニットSkは移動前位置Qs,kから移動後位置Qs+1,kに移動する。以上のように、センサ移動部61は、補正対象センサ81であるセンサユニットSkの移動前位置Qt−1,kから移動後位置Qt,kへの移動を所定の回数だけ繰り返し行う状態に、移動制御部63により制御されている。
センサユニットSkの移動が所定の回数だけ行われた場合は(ステップS144−Yes)、次のステップに進む。そして、最終位置決定部64が、センサ移動部61によるセンサユニットSkの最終回(例えばF回目)の移動での移動後位置QF,kを、補正対象センサ81であるセンサユニットSkの最終位置PF,kとして決定する(ステップS145)。以上のようにして、センサユニットSkの最終位置PF,kへの位置修正が完了する。
なお、センサユニットSk以外のセンサユニットSiについても、センサ位置順次補正部57によりセンサユニットSkと同様に最終位置Pi,kへの位置補正が行われる。すなわち、センサ移動部61により、センサユニットSiは移動前位置Qt−1,iから移動後位置Qt,iまで移動する(ステップS142)。そして、センサ移動部61によりセンサユニットSiの移動が1回行われるたびに、移動後円弧形成部62により、センサユニットSiに対して基端側に隣設されるセンサユニットSi−1の最終位置PF,i−1とセンサユニットSiの移動後位置Qt,iとの間が曲線補間され、移動後円弧Lt,jが形成される(ステップS143)。センサ移動部61は、移動前円弧Lt−1,jの弧長Rt−1,jφt−1,jとセンサ間寸法lとの差の絶対値に対して、移動後円弧Lt,jの弧長Rt,jφt,jとセンサ間寸法lとの差の絶対値が小さくなる状態に、センサユニットSiの移動を行っている(ステップS142)。すなわち、移動後のエネルギーEt,jが移動前のエネルギーEt−1,jより小さくなる状態に、補正対象センサ81であるセンサユニットSiの移動を行っている。
そして、移動後円弧Lt,jが形成された後、移動制御部63によりセンサユニットSiの移動が所定の回数だけ行われたか判断される(ステップS144)。センサユニットSiの移動が所定の回数だけ行われていない場合は(ステップS144−No)、ステップS142に戻り、センサ移動部61がセンサユニットSiを位置Qt,iからさらに移動させる。センサユニットSiの移動が所定の回数だけ行われた場合は(ステップS144−Yes)、次のステップに進む。そして、最終位置決定部64が、センサ移動部61によるセンサユニットSiの最終回の移動での移動後位置QF,iを、補正対象センサ81であるセンサユニットSiの最終位置PF,iとして決定する(ステップS145)。以上のようにして、センサユニットSiの最終位置PF,iへの位置補正が完了する。
そして、第1の実施形態と同様に、センサ位置順次補正部57により1つのセンサユニットSiの位置補正が行われるたびに、未補正センサ群移動部59により、位置補正が行われていないセンサユニットSiである未補正センサ群77が平行移動される(ステップS146)。未補正センサ群移動部59での処理は、第1の実施形態と同様であるため、詳細な説明は省略する。
そして、すべてのセンサユニットSiについて位置補正が完了したか確認する(ステップS147)。すべてのセンサユニットSiについて位置補正が完了している場合は(ステップS147−Yes)、次のステップへ進む。すべてのセンサユニットSiについて位置補正が完了していない場合は(ステップS147−No)、ステップS141に戻り、センサ位置順次補正部57により、未補正センサ群77の中で最も基端側のセンサユニットSiの位置補正が行われる。すなわち、ステップS141〜S146が、すべてのセンサユニットSiについて位置補正が完了するまで、繰り返し行われる。
そこで、上記構成の内視鏡形状検出装置1及び内視鏡形状検出装置1を用いた内視鏡10の挿入部11の形状検出方法では、第1の実施形態と同様の効果に加えて、以下の効果を奏する。すなわち、内視鏡形状検出装置1では、センサ位置順次補正部57によりそれぞれのセンサユニットSiの位置を補正する際に、センサ移動部61がセンサユニットSiを移動前位置Qt−1,iから移動後位置Qt,iまで移動する。そして、センサ移動部61によりセンサユニットSiの移動が1回行われるたびに、移動後円弧形成部62により、センサユニットSiに対して基端側に隣設されるセンサユニットSi−1の最終位置PF,i−1とセンサユニットSiの移動後位置Qt,iとの間が曲線補間され、移動後円弧Lt,jが形成される。センサ移動部61は、移動前円弧Lt−1,jの弧長Rt−1,jφt−1,jとセンサ間寸法lとの差の絶対値に対して、移動後円弧Lt,jの弧長Rt,jφt,jとセンサ間寸法lとの差の絶対値が小さくなる状態に、補正対象センサ81であるセンサユニットSiの移動を行っている。そして、移動後円弧Lt,jが形成された後、移動制御部63によりセンサユニットSiの移動が所定の回数だけ行われたか判断される。センサユニットSiの移動が所定の回数だけ行われていない場合は、センサ移動部61がセンサユニットSiを位置Qt,iからさらに移動させる。センサユニットSiの移動が所定の回数だけ行われた場合は、最終位置決定部64が、センサ移動部61によるセンサユニットSiの最終回の移動での移動後位置QF,iを、補正対象センサ81であるセンサユニットSiの最終位置PF,iとして決定する。すなわち、センサユニットSiの移動が所定の回数だけ行われるまで、センサ移動部61によるセンサユニットSiの移動が繰り返される。以上のように、それぞれのセンサユニットSiの間の実際の寸法であるセンサ間寸法lに基づいて、センサ位置順次補正部57によるそれぞれのセンサユニットSiの位置補正が行われるため、実際の挿入部11の形状と誤差の少ない最終曲線形状85を検出することができる。これにより、高い精度で挿入部11の最終曲線形状85を検出することができる。
(変形例)
なお、上述の実施形態では、それぞれのローカル座標系C
iは、Y
i軸方向がセンサユニットS
iの中心での長手方向と一致している座標系である。しかし、それぞれのローカル座標系C
iは、センサユニットS
iの中心を原点とし、X
i軸、Y
i軸、Z
i軸のいずれか1つの軸がセンサユニットS
iの中心での長手方向と軸方向が一致する長手方向軸である座標系であればよい。ただし、X
i軸が長手方向軸である場合は、式(16.1),式(16.2)の代わりに、
を用いる。同様に、Z
i軸が長手方向軸である場合は、式(16.1),式(16.2)の代わりに、
を用いる。ここで、式(43.2)のベクトルはローカル座標系Ck−1の原点での長手方向であるXk−1軸方向の単位ベクトルであり、式(44.2)のベクトルはローカル座標系Ck−1の原点での長手方向であるZk−1軸方向の単位ベクトルである。
また、上述の実施形態では、グローバル座標系Cは、最も基端側のセンサユニットS
0の中心を原点とし、Z軸が鉛直方向と一致し、X軸及びY軸が水平面上に配置される座標系である。しかし、X軸、Y軸、Z軸のいずれか1つの軸が鉛直方向と軸方向が一致する鉛直方向軸であり、鉛直方向軸以外の2つの軸が水平面上に配置される水平方向軸である座標系であればよい。これにより、加速度センサA
iにより計測される重力加速度及び地磁気センサB
iにより計測される地磁気に基づいて、姿勢検出部30はそれぞれのセンサユニットS
iの姿勢を検出することが可能である。ただし、X軸が鉛直方向軸の場合は、式(2)で示される重力加速度ベクトルのグローバル座標系CのX軸方向成分、Y軸方向成分、Z軸方向成分は、
となる。この場合、第1の実施形態では、姿勢角αi,βi,γiはヨー角γi、ピッチ角αi、ロール角βiの順で回転する(Z,X,Y)型としたが、姿勢角αi,βi,γiの回転する順序を変えて、式(1)の回転行列とは別の回転行列を用いる。これにより、加速度センサAiで計測された加速度データに基づいて、第1の角度算出部34で水平方向軸であるY軸,Z軸回りの姿勢角βi,γiが算出される。また、地磁気センサBiで計測された地磁気データに基づいて、第2の角度算出部36で鉛直方向軸であるX軸回りの姿勢角αiが算出される。Y軸が鉛直方向軸の場合についても同様であり、加速度センサAiで計測された加速度データに基づいて、第1の角度算出部34で水平方向軸であるX軸,Z軸回りの姿勢角αi,γiが算出される。また、地磁気センサBiで計測された地磁気データに基づいて、第2の角度算出部36で鉛直方向軸であるY軸回りの姿勢角βiが算出される。
さらに、上述の実施形態では、グローバル座標系Cは、最も基端側のセンサユニットS0の中心を原点としているが、最も先端側のセンサユニットSNの中心を原点としてもよい。この場合、仮リンク形成部41は、式(16.1),式(16.2)のkをj+1で置換した式を用いて、仮リンクT0,jの先端側(グローバル座標系Cの原点から近い側)のセンサユニットSjから仮リンクT0,jの基端側(グローバル座標系Cの原点から遠い側)のセンサユニットSj−1へのベクトルを求める。そして、センサユニットSjからセンサユニットSj−1へのベクトルにより、仮リンクT0,jが形成される。すなわち、仮リンク形成部41は、仮リンクT0,jが先端側(グローバル座標系Cの原点から近い側)のセンサユニットSjの中心から基端側(グローバル座標系Cの原点から遠い側)のセンサユニットSj−1の中心まで先端側のセンサユニットSjの中心での長手方向に延設されると仮定して、仮リンクT0,jを形成する。また、センサ位置修正部55のセンサ位置順次補正部57によりそれぞれのセンサユニットSiの位置補正を行う際は、先端側(グローバル座標系Cの原点から近い側)のセンサユニットSiから順次に位置補正が行われる。この場合、補正対象センサ81の先端側(グローバル座標系Cの原点に近い側)に隣設されるセンサユニットSiが近位側隣設センサ82となる。
以上、本発明の実施形態について説明したが、本発明は上記の実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲で種々の変形ができることは勿論である。