以下、図面を参照し、本発明の実施形態を説明する。図1は、本発明の一実施形態による内視鏡システムの構成を示している。図1に示す内視鏡システムは、先端アダプタ1、内視鏡挿入部20を有する内視鏡装置2、および表示器3で構成されている。
先端アダプタ1は、内視鏡装置2を用いた被検体の観察時や計測時における内視鏡挿入部20の方向および内視鏡挿入部20の先端から被検体までの距離を取得するためのユニットである。先端アダプタ1には各種センサが搭載されている。また、先端アダプタ1は内視鏡挿入部20に対して着脱が可能である。内視鏡装置2が有する光源や撮像素子等が発生する熱が各種センサに影響を与えたり、内視鏡挿入部20の硬質な部分を構成する金属が地磁気センサに影響を与えたりするため、先端アダプタ1が有する各種センサのキャリブレーションが行われる。
内視鏡装置2は、被検体の観察や計測を行うための機器である。先端アダプタ1が装着された内視鏡挿入部20が被検体に挿入された状態で、内視鏡挿入部20内の撮像素子により画像が撮像される。表示器3は、先端アダプタ1を制御するための機器である。表示器3は、通信線4により先端アダプタ1と接続されている。
次に、先端アダプタ1の構成を説明する。図2は先端アダプタ1の外観を示している。図2(a)は先端アダプタ1の正面図であり、図2(b)は先端アダプタ1の側面図である。先端アダプタ1はプラスチック製の外装カバー10で覆われている。後述するように、先端アダプタ1の内部には地磁気センサが搭載されているので、先端アダプタ1に金属は使用されていない。
図2(a)のように先端アダプタ1を正面から見ると、外装カバー10の周囲の一部が円形形状、他の一部が直線形状となっている。これは、後述するキャリブレーションボックスの内部に、先端アダプタ1を所定の方向に向けて固定して収納させるためである。外装カバー10の正面中央部には着脱穴11が開いており、この着脱穴11に内視鏡挿入部20が挿入されて固定される。
外装カバー10の正面上部には、センサライン12が引かれている。センサライン12は、先端アダプタ1の内部において、後述するセンサボードが配置されている位置を示すためのものある。外装カバー10の正面左には、外装カバー10の内部に設置された、後述する距離センサ300の発光レンズ301および受光レンズ302が外から見えるようになっている。
図2(b)のように、先端アダプタ1を側面から見ると、外装カバー10の後方から通信線4が伸びている。通信線4は、先端アダプタ1と表示器3との間で通信および電源供給を行うためのものである。
図3は、先端アダプタ1の外装カバー10を透過して先端アダプタ1の内部を見た場合の先端アダプタ1の構成を示している。図3(a)は先端アダプタ1の正面図であり、図3(b)は先端アダプタ1の側面図であり、図3(c)は先端アダプタ1の斜視図である。外装カバー10の内部には、2枚の基板(メインボード13、センサボード14)が配置されている。図3(a)のように、先端アダプタ1を正面から見ると、外装カバー10の内部において、中央部にメインボード13が垂直方向に配置され、上部にセンサボード14が水平方向に配置されている。
メインボード13は、先端アダプタ1の全体を制御する基板であり、主にマイコン(マイクロコンピュータ)310(MC)および距離センサ300(DS)が配置されている。メインボード13の中央部にも、着脱穴11が開いている。センサボード14は、先端アダプタ1の方向を検知するためのセンサが搭載された基板であり、ジャイロセンサ・加速度センサ・地磁気センサを含むセンサ群320が配置されている。
メインボード13とセンサボード14とがそれぞれ離れて配置されている理由は、センサボード14上の各種センサが、ノイズや熱の影響を受けやすいからである。図3(b)のように、先端アダプタ1を側面から見ると、メインボード13の後方から通信線4が伸びている。また、メインボード13とセンサボード14は、それぞれフラットケーブル15で接続されている。図3(c)のように、先端アダプタ1を斜めに見ると、センサボード14上にジャイロセンサ321(GS)、加速度センサ322(AS)、および地磁気センサ323(MS)が搭載されている。
図4は、先端アダプタ1を内視鏡挿入部20に装着する様子を示している。図4では、先端アダプタ1は、外装カバー10を透過した状態で示されている。先端アダプタ1の装着穴11に後方から内視鏡挿入部20が差し込まれることで、先端アダプタ1が内視鏡挿入部20に装着される。先端アダプタ1が内視鏡挿入部20に装着されたときの先端アダプタ1の先端の位置と内視鏡挿入部20の先端位置とがそれぞれ一致するように、先端アダプタ1の装着位置が決められている。
内視鏡挿入部20は、先端側から順に、硬質部200、湾曲部201で構成されている。先端アダプタ1の長さは、先端アダプタ1が内視鏡挿入部20に装着されたときに先端アダプタ1が硬質部200のみを覆うように、硬質部200の長さよりも短くなっている。これは、先端アダプタ1が湾曲部201まで覆ってしまうことにより、内視鏡の先端を湾曲させる際の障害にならないようにするためである。
次に、先端アダプタ1に搭載される各種センサについて説明する。ジャイロセンサ321は、センサ自体がもつ基準軸に対して、センサが回転したときの角速度を検知するセンサである。加速度センサ322は、センサ自体に加わる加速度を検知するセンサであり、重力加速度も検知可能である。地磁気センサ323は、センサ自体に加わる地磁気を検知するセンサであり、磁石等から発する磁気も検知可能である。距離センサ300は、センサから被検体までの距離を測定するセンサである。ジャイロセンサ321、加速度センサ322、地磁気センサ323はそれぞれ、X軸、Y軸、Z軸の3軸のセンサである。
以下、距離センサ300の構成を説明する。図3(c)のように、距離センサ300の前面には、発光レンズ301と受光レンズ302とが並んで配置されている。図5は、距離センサ300の構成と、距離センサ300が距離を測定する原理とを示している。発光レンズ301の内部には、赤外線を照射するLED303が搭載され、受光レンズ302の内部には、光位置センサ304が搭載されている。光位置センサ(Position Sensitive Detector、PSD)とは、入射したスポット光の光量の重心位置を求めることのできるセンサである。
以下、距離センサ300が、センサから被検体までの距離を測定する原理を説明する。距離センサ300の内部に配置されたLED303から発光レンズ301を介して赤外線が照射され、その赤外線が被検体400に当たって反射する。その反射光が受光レンズ302に入射し、距離センサ300の内部に配置された光位置センサ304に入射する。光位置センサ304は、光位置センサ304上に反射光が入射した位置(入射位置)を検知する。発光レンズ301−受光レンズ302間の距離と、光位置センサ304上の入射位置との関係から、三角測量の原理を用いて、被検体400までの距離を検知できる。
三角測量の原理から、被検体までの距離と入射位置とは、それぞれ反比例の関係にある。また、距離センサの出力(例えばアナログ電圧)と、入射位置とは比例する。そのため、距離センサ300の出力値と被検体までの距離とは、それぞれ反比例の関係にある。
図6は、先端アダプタ1のメインボード13とセンサボード14との接続を示している。メインボード13とセンサボード14とがフラットケーブル15によって電気的に接続され、メインボード13と表示器3とが通信線4によって電気的に接続される。
図6(a)は、先端アダプタ1の通信接続を示している。メインボード13上のマイコン310とセンサボード14上の各センサとの間で、フラットケーブル15を介して通信が行われ、マイコン310が各センサから各センサの出力値であるセンサデータを取得する。また、マイコン310は距離センサ300からもセンサデータを取得する。このときの通信方式は、シリアル通信(SPI、I2C)やAD変換で良い。マイコン310は、取得したセンサデータを、通信線4を介して表示器3に送信する。このときの通信方式は、シリアル通信(RS232C)で良い。
図6(b)は、先端アダプタ1における電源供給を示している。表示器3にはバッテリーが内蔵され、このバッテリーから通信線4を介してメインボード13に電源が供給される。メインボード13に供給された電源は、マイコン310および距離センサ300に供給される。さらに、電源は、フラットケーブル15を介して、センサボード14上の各センサにも供給される。
次に、内視鏡装置2の構成を説明する。図7は内視鏡装置2の構成を示している。内視鏡装置2は、内視鏡挿入部20、内視鏡装置本体21、モニタ22、およびリモコン(リモートコントローラ)23で構成されている。内視鏡挿入部20の先端には、撮像光学系30aおよび撮像素子30bが内蔵されている。また、内視鏡装置本体21には、画像信号処理装置(CCU)31、光源32、湾曲制御ユニット33、および制御用コンピュータ34が内蔵されている。
内視鏡挿入部20において、撮像光学系30aは被写体(被検体)からの光を集光し、撮像素子30bの撮像面上に被写体像を結像する。撮像素子30bは、被写体像を光電変換して撮像信号を生成する。撮像素子30bから出力された撮像信号は画像信号処理装置31に入力される。
内視鏡装置本体21において、画像信号処理装置31は、撮像素子30bからの撮像信号をNTSC信号等の映像信号に変換して制御用コンピュータ34に供給し、さらに必要に応じてアナログビデオ出力として、外部に出力する。
光源32は、光ファイバ等を通じて内視鏡挿入部20の先端に接続されており、光を外部に照射することができる。湾曲制御ユニット33は内視鏡挿入部20の先端と接続されており、先端を上下左右に湾曲させることができる。光源32および湾曲制御ユニット33の制御は、制御用コンピュータ34によって行われる。
制御用コンピュータ34は、RAM34a、ROM34b、CPU34c、外部インターフェースであるRS232C I/F34d、カード I/F34eで構成されている。RAM34aは、ソフトウェア動作に必要な画像情報等のデータを一時記憶するために使用される。ROM34bには、内視鏡装置2を制御するための一連のソフトウェア(プログラム)が記憶されている。CPU34cは、ROM34bに記憶されているソフトウェアの命令コードに従って、RAM34aに記憶されたデータを用いて各種制御のための演算等を実行する。
RS232C I/F34dは、リモコン23と接続するためのインターフェースであり、このリモコン23をユーザが操作することによって、内視鏡装置2の各種動作を制御することができる。カード I/F34eは、記録媒体である各種メモリカード90を自由に着脱できるようになっている。メモリカード90を装着することにより、CPU34cの制御によって、メモリカード90に記憶されている画像情報等のデータを取り込み、あるいは画像情報等のデータをメモリカード90に記録することができる。
次に、表示器3の構成を説明する。図8は表示器3の構成を示している。表示器3は、制御用コンピュータ40、モニタ41、および電源供給部42で構成されている。制御用コンピュータ40は、RAM40a、ROM40b、CPU40c(プロセッサ)、外部インターフェースであるRS232C I/F40dで構成されている。
RAM40aは、ソフトウェア動作に必要なセンサデータ等を一時記憶するために使用される。ROM40bには、表示器3を制御するための一連のソフトウェア(プログラム)が記憶されており、後述するセンシングソフトもROM40bに記憶されている。CPU40cは、ROM40bに記憶されているソフトウェアの命令コードに従って、RAM40aに記憶されたデータを用いて各種制御のための演算等を実行する。
RS232C I/F40dは、先端アダプタ1と表示器3を通信線4で接続し、先端アダプタ1と表示器3間でシリアル通信を行うためのインターフェースである。CPU40cからの指示により、RS232C I/F40dを介して、表示器3は先端アダプタ1からセンサデータを受信することができる。
モニタ41は、CPU40cによって生成された、センシングソフトのGUI(グラフィカルユーザインターフェース)等のグラフィック画像信号(表示信号)に基づいて画像を表示する。また、モニタ41は、タッチパネルとして構成されており、ユーザがモニタ41の画面を押下することによる操作情報をCPU40cへ出力する。電源供給部42(バッテリー)は、制御用コンピュータ40およびモニタ41に電源を供給するとともに、通信線4を介して先端アダプタ1にも電源を供給する。
次に、先端アダプタ1内の各センサのキャリブレーションを行う際に先端アダプタ1が収納されるハウジングであるキャリブレーションボックスの構成を説明する。図9はキャリブレーションボックス5の外観を示している。キャリブレーションボックス5の形状は直方体である。後述するように、キャリブレーションボックス5は、直方体の外形を構成する面のうちどの面を下にしてキャリブレーションボックス5を設置するかに応じて、異なる姿勢をとる。後述するキャリブレーション作業において、キャリブレーションボックス5を滑らかに回転させるため、キャリブレーションボックス5の角が曲面を有するように構成されていることが望ましい。先端アダプタ1、表示器3、およびキャリブレーションボックス5は、先端アダプタ1内の各センサのキャリブレーションを行うキャリブレーション装置を構成する。
キャリブレーションボックス5の側面の上部には、センサライン50が引かれている。センサライン50は、キャリブレーションボックス5の内部に先端アダプタ1を設置したときに、センサボード14が配置されている位置を示すためのものある。キャリブレーションボックス5は開閉式である。
図10は、キャリブレーションボックス5が開かれたときのキャリブレーションボックス5の斜視図である。キャリブレーションボックス5は、蝶つがい51を軸に開閉できるようになっている。キャリブレーションボックス5の内部の後方(奥側)は、先端アダプタ1の外装カバー10と同じ形をしており、図10のように、内視鏡挿入部20に先端アダプタ1が装着された状態で先端アダプタ1を設置および固定できるようになっている。このとき、先端アダプタ1は、先端アダプタ1のセンサライン12が、キャリブレーションボックス5のセンサライン50と同じ方向(平行)になるように設置される。
キャリブレーションボックス5の内部の前方(手前側)には、直方形状の空間52があり、その後方には回転板53が設置されている。回転板53は、キャリブレーションボックス5の姿勢すなわちキャリブレーションボックス5の設置方向に応じて、軸を中心に回転するように構成されている。
図11は、先端アダプタ1が設置された状態のキャリブレーションボックス5の断面を示している。図11(a)は、キャリブレーションボックス5の最も広い面が水平、かつ回転板53の軸が上側になるように設置した場合のキャリブレーションボックス5の内部を示している。このとき、回転板53は、重力方向である下方向に回転し、先端アダプタ1から前方に距離D1だけ離れた位置に静止する。後述するキャリブレーション処理の際に、先端アダプタ1内の距離センサ300は、先端アダプタ1から回転板53までの距離D1を測定する。図11(b)は、キャリブレーションボックス5を、設置された先端アダプタ1の先端側に位置するキャリブレーションボックス5の最も狭い面が水平になるように設置した場合のキャリブレーションボックス5の内部の構成を示している。このときも、回転板53は、重力方向である下方向に回転し、回転板53の主面とキャリブレーションボックス5の内壁とが略平行な状態で静止する。後述するキャリブレーション処理の際に、先端アダプタ1内の距離センサ300は、先端アダプタ1からキャリブレーションボックス5の内壁までの距離D2(D1<D2)を測定する。
このとき、回転板53は、重力方向に応じて、クリック機構により、図11(a)および(b)の回転位置に一時的に固定されるが、それ以外の位置には固定されることはない。このように、キャリブレーションボックス5の設置方向に応じて、先端アダプタ1の先端から、前方に位置する物体までの距離が距離D1,D2と変化する。これを利用することで、後述するキャリブレーション時に、キャリブレーションボックス5を回転させ、キャリブレーションボックス5の設置方向(姿勢)を変化させることによって、距離センサ300のセンサデータを2種類、取得することができる。
ここで、図9を用いて、キャリブレーションボックス5の方向軸および回転軸を定義する。図9では、キャリブレーションボックス5の内部に、内視鏡挿入部20が装着された先端アダプタ1が設置され、キャリブレーションボックス5のセンサライン50が上側を向き、かつ内視鏡挿入部20が手前側を向き、さらにキャリブレーションボックス5が水平となるように設置された状態が示されている。このとき、キャリブレーションボックス5の右方向をX軸方向、キャリブレーションボックス5の前方向をY軸方向、キャリブレーションボックス5の上方向をZ軸方向とする。さらに、X軸方向、Y軸方向、Z軸方向のそれぞれに対して、右ねじの回転方向を、それぞれX軸回転方向、Y軸回転方向、Z軸回転方向とする。
次に、表示器3で動作するセンシングソフトの画面を説明する。図12は、センシングソフトのメインウィンドウである。図12に示すメインウィンドウ1200は、ユーザがセンシングソフトを起動した際にモニタ41に表示される。CPU40cは、センシングソフトに従って、メインウィンドウ1200内の各種GUIの操作に基づく処理を行う。メインウィンドウ1200の表示は、CPU40cによる制御に従って行われる。CPU40cは、メインウィンドウ1200を表示するためのグラフィック画像信号(表示信号)を生成し、モニタ41へ出力する。ユーザは、GUI機能を利用して、メインウィンドウ1200を操作し、各種の指示を入力する。
また、メインウィンドウ1200上のGUIの表示状態を更新する場合、CPU40cは、更新後のメインウィンドウ1200に対応したグラフィック画像信号を生成し、上記と同様の処理を行う。メインウィンドウ1200以外のウィンドウの表示に係る処理も上記と同様である。以下、メインウィンドウ1200等を表示(更新も含む)するためにCPU40cがグラフィック画像信号を生成する処理のことを、メインウィンドウ1200等を表示するための処理と記載する。
以下、メインウィンドウ1200上に配置された各種GUIについて説明する。メインウィンドウ1200の左上部には、[測定結果]ボックス1210が配置されている。[測定結果]ボックス1210には、測定結果データが表示される。測定結果データとは、先端アダプタ1内のセンサボード14の湾曲方向(ヨー、ロール、ピッチ)のデータ、および先端アダプタ1から被検体までの距離のデータのことである。
メインウィンドウ1200の中央部には、[距離データ]インジケータ1220が配置されている。[距離データ]インジケータ1220は、バーによりサイズを表示するGUIであり、先端アダプタ1から被検体までの距離の大きさによって、バーの長さが変化する。
メインウィンドウ1200の下部左側には、[ヨー方向]インジケータ1230が配置されている。[ヨー方向]インジケータ1230は、コンパスにより方向を表示するGUIであり、内視鏡挿入部20のヨー方向(上下を軸とした回転方向、方位角方向)によって、コンパスの方向が変化する。
メインウィンドウ1200の下部中央には、[ロール方向]インジケータ1240が配置されている。[ロール方向]インジケータ1240は、コンパスにより方向を表示するGUIであり、内視鏡挿入部20のロール方向(前後を軸とした回転方向)によって、コンパスの方向が変化する。
メインウィンドウ1200の下部右側には、[ピッチ方向]インジケータ1250が配置されている。[ピッチ方向]インジケータ1250は、コンパスにより方向を表示するGUIであり、内視鏡挿入部20のピッチ方向(左右を軸とした回転方向)によって、コンパスの方向が変化する。
メインウィンドウ1200の右上部には、[測定開始]ボタン1260、[測定停止]ボタン1270、[キャリブレーション]ボタン1280がそれぞれ配置されている。[測定開始]ボタン1260は、各センサの測定結果である測定結果データの取得を開始するためのボタンである。[測定開始]ボタン1260が押下されると、先端アダプタ1内のセンサボード14から測定結果データが連続的に取得され、[測定結果]ボックス1210および各種インジケータに、その結果が反映される。
[測定停止]ボタン1270は、測定結果データの取得を停止するためのボタンである。[測定停止]ボタン1270が押下されると、測定状態、すなわち先端ボードから測定結果データが連続的に取得される状態が停止する。[キャリブレーション]ボタン1280は、先端アダプタ1に内蔵された各種センサのキャリブレーションを行うためのボタンである。[キャリブレーション]ボタン1280が押下されると、キャリブレーションウィンドウが表示され、ユーザはキャリブレーションウィンドウを介して、キャリブレーションを行うことができる。
次に、図13を用いて、センシングソフトの動作の流れを説明する。ステップS100では、ユーザが、センシングソフトを起動する指示を入力する。ステップS105では、CPU40cが、ユーザにより入力された指示を検出し、メインウィンドウ1200を表示する処理を行う。ステップS110では、ユーザが[キャリブレーション]ボタン1280を押下する。ステップS115では、CPU40cが、ユーザにより[キャリブレーション]ボタン1280が押下されたことを検出し、ユーザが行うキャリブレーション作業に従って処理を行う。キャリブレーション作業の詳細については、後述する。
ステップS120では、ユーザが[測定開始]ボタン1260を押下する。ステップS125では、CPU40cが、ユーザにより[測定開始]ボタン1260が押下されたことを検出し、先端アダプタ1に対して、センサデータの送信を要求する。ステップS130では、CPU40cが、先端アダプタ1から送信されたセンサデータを受信する。
ステップS135では、CPU40cが、受信したセンサデータに基づいて、先端アダプタ1の湾曲方向および先端アダプタ1から被検体までの距離を算出し、算出結果である湾曲方向データおよび距離データを生成する。ステップS140では、CPU40cが、算出した湾曲方向および距離を[測定結果]ボックス1210に表示するための処理を行う。また、CPU40cは、[距離データ]インジケータ1220のバーを、距離データの大きさに応じて変化させる。ステップS125〜S140は、ユーザが[測定停止]ボタン1270を押下するまで、繰り返される。
ステップS145では、ユーザが、センシングソフトを終了する指示を入力する。ステップS150では、CPU40cが、ユーザにより入力された指示を検出し、メインウィンドウ1200を非表示とし、全てのソフトウェア動作を終了する。
上記の処理の流れでは、キャリブレーション、測定、ソフトウェア終了の順で処理が進んでいるが、必ずしも処理の順番はこの通りではなく、キャリブレーションを行う前に測定を行うこともできるし、測定を行う前にソフトウェアを終了することもできる。
図14は、ステップS110でユーザが[キャリブレーション]ボタン1280を押下した際にモニタ41に表示されるキャリブレーションウィンドウである。図14に示すキャリブレーションウィンドウ1400の表示は、CPU40cによる制御に従って行われる。CPU40cは、キャリブレーションウィンドウ1400を表示するためのグラフィック画像信号(表示信号)を生成し、モニタ41へ出力する。ユーザは、GUI機能を利用して、キャリブレーションウィンドウ1400を操作し、各種の指示を入力する。
以下、キャリブレーションウィンドウ1400上に配置された各種GUIについて説明する。キャリブレーションウィンドウ1400の左上部には、指示メッセージ1410が表示されている。指示メッセージ1410は、先端アダプタ1のキャリブレーションをユーザが行う際に必要になる作業を指示するメッセージである。
キャリブレーションウィンドウ1400の下部には、キャリブレーションボックス5の設置方向イラスト1420が表示されている。設置方向イラスト1420は、先端アダプタ1のキャリブレーションをユーザが行う際に必要になる作業を示したイラストである。これは、指示メッセージ1410の内容を、そのままイラスト化したものである。
キャリブレーションウィンドウ1400の右上部には、[開始]ボタン1430および[停止]ボタン1440が配置されている。[開始]ボタン1430および[停止]ボタン1440は、それぞれキャリブレーションを開始、停止するためのボタンである。
キャリブレーションウィンドウ1400の中央部には、処理中メッセージ1450が表示されている。処理中メッセージ1450は、キャリブレーション計算中であることをユーザに通知するメッセージである。
次に、図15を用いて、キャリブレーション作業の流れを説明する。ステップS110でユーザが[キャリブレーション]ボタン1280を押下すると、ステップS200では、CPU40cは、キャリブレーションウィンドウ1400を表示するための処理を行う。このとき表示されるキャリブレーションウィンドウ1400はモーダルウィンドウであり、ユーザはキャリブレーションウィンドウ1400のみを操作可能な状態にある。さらに、キャリブレーションウィンドウ1400は、メインウィンドウ1200よりも常に上位(手前側)に重畳表示された状態にある。
ステップS205では、ユーザが[開始]ボタン1430を押下する。ステップS210では、CPU40cが、ユーザにより[開始]ボタン1430が押下されたことを検出し、各種センサデータの記録を開始する。これ以降、CPU40cは、ユーザにより[停止]ボタン1440が押下されたことを検出するまで、所定のサンプリング周期で先端アダプタ1からセンサデータを受信し、受信したセンサデータをRAM40aに追加記録し続ける。
ステップS215では、CPU40cが、図14のように、キャリブレーションに必要な作業をユーザに指示する指示メッセージ1410を表示するための処理を行う。ステップS220では、ユーザがキャリブレーションボックス5を設置方向1に設置する。設置方向1とは、図14の設置方向イラスト1420が示すように、センサライン50が上側を向き、かつ内視鏡挿入部20が手前側を向き、さらにキャリブレーションボックス5の最も広い面が水平となるような設置方向(姿勢)のことである。
ステップS225では、ユーザがキャリブレーションボックス5を前方向に回転させ、設置方向2に設置する。設置方向2とは、図14の設置方向イラスト1420が示すように、設置方向1から、キャリブレーションボックス5を前方向に90度(deg)回転させた設置方向(姿勢)のことである。
ステップS230では、ユーザがキャリブレーションボックス5を右方向に回転させ、設置方向3に設置する。設置方向3とは、図14の設置方向イラスト1420が示すように、設置方向2から、キャリブレーションボックス5を右方向に90度(deg)回転させた設置方向(姿勢)のことである。
ステップS235では、ユーザがキャリブレーションボックス5を手前方向に回転させ、設置方向4に設置する。設置方向4とは、図14の設置方向イラスト1420が示すように、設置方向3から、キャリブレーションボックス5を手前方向に90度(deg)回転させた設置方向のことである。
ステップS220〜S235において、ユーザは、キャリブレーションボックス5の回転・設置作業を、所定の時間をかけながら行うものとする。例えば、1secをかけてキャリブレーションボックス5の回転作業を行い、所定の設置方向にキャリブレーションボックス5を設置した後には1sec待ってから、再度回転作業を行う、などである。この理由は、CPU40cが、キャリブレーションボックス5の回転中および設置中のセンサデータを確実に用いて、後述するキャリブレーション処理を行う必要があるからである。
ステップS240では、ユーザが[停止]ボタン1440を押下する。ステップS245では、CPU40cが、ユーザにより[停止]ボタン1440が押下されたことを検出し、各種センサデータの記録を停止する。ステップS250では、CPU40cが、図14のように、キャリブレーション計算中であることをユーザに通知する処理中メッセージ1450を表示するための処理を行う。
ステップS255では、CPU40cが、RAM40aに記録された各種センサデータに基づいてキャリブレーション処理を行う。キャリブレーション処理の詳細については、後述する。ステップS260では、CPU40cが、キャリブレーションが終了したことをユーザに通知するメッセージを表示するための処理を行い、キャリブレーション作業を終了する。
次に、図16を用いて、ステップS255における、キャリブレーション処理の流れを説明する。ステップS300では、CPU40cが、ジャイロセンサ321のセンサデータに基づいてジャイロセンサ321のキャリブレーション処理を行う。ジャイロセンサ321のキャリブレーション処理の詳細については、後述する。ステップS305では、CPU40cが、加速度センサ322のセンサデータに基づいて加速度センサ322のキャリブレーション処理を行う。加速度センサ322のキャリブレーション処理の詳細については、後述する。
ステップS310では、CPU40cが、地磁気センサ323のセンサデータに基づいて地磁気センサ323のキャリブレーション処理を行う。地磁気センサ323のキャリブレーション処理の詳細については、後述する。ステップS315では、CPU40cが、距離センサ300のセンサデータに基づいて距離センサ300のキャリブレーション処理を行い、キャリブレーション処理を終了する。距離センサ300のキャリブレーション処理の詳細については、後述する。
次に、図17を用いて、ステップS300における、ジャイロセンサ321のキャリブレーション処理の流れを説明する。ステップS400では、CPU40cが、RAM30aに記録されたジャイロセンサ321のセンサデータを読み出す。ステップS405では、CPU40cが、読み出したセンサデータに基づいて、キャリブレーションボックス5の回転・静止タイミングを算出する。キャリブレーションボックス5の回転・静止タイミングとは、ステップS220〜S235において、ユーザがキャリブレーションボックス5を回転および設置(静止)させた期間のことである。
以下、図18〜図20を用いて、CPU40cが、ジャイロセンサ321のセンサデータに基づいて、キャリブレーションボックス5の回転・静止タイミングをどのように算出しているのかを説明する。図18(a)は、RAM40aに記録されたジャイロセンサ321のセンサデータのグラフである。横軸が時間(センサデータの取得時間)、縦軸が出力値である。ジャイロセンサ321は角速度を検出するセンサであるので、ジャイロセンサ321が静止していれば、センサデータはほとんど変化せず一定であり、ジャイロセンサ321が回転していれば、センサデータが大きく変化するはずである。
以下、図18(b)を用いながら、ジャイロセンサ321のセンサデータを時系列順(横軸方向)に説明していく。まず、最初の期間に注目する。この期間は、3軸の全てについて、センサデータが変化している。これは、ユーザが、キャリブレーションを開始してからキャリブレーションボックス5を設置方向1に設置するまでの準備期間である。
次の期間では、3軸の全てについて、センサデータが変化せずほぼ一定である。この期間は、ユーザがキャリブレーションボックス5を設置方向1に設置している期間(キャリブレーションボックス5が所定の姿勢で静止している静止期間)である。しかし、キャリブレーションボックス5が静止しているにも関わらず、センサデータは必ずしも0ではなく、所定の大きさの出力を示している。これはジャイロセンサ321の静止時のドリフト(変動)によるものである。
次の期間では、X軸のみのセンサデータが大きく変化している。この期間は、ユーザがキャリブレーションボックス5を、設置方向1から設置方向2へ回転させている期間(キャリブレーションボックス5の姿勢が次の姿勢へ移行している移行期間)である。キャリブレーションボックス5は前方向に回転しているので、X軸のみのセンサデータが変化することになる。
次の期間では、3軸の全てについて、センサデータが変化せずほぼ一定である。この期間は、ユーザがキャリブレーションボックス5を設置方向2に設置している期間(静止期間)である。
次の期間では、Z軸のみについて、センサデータが大きく変化している。この期間は、ユーザがキャリブレーションボックス5を設置方向2から設置方向3へ回転させている期間(移行期間)である。キャリブレーションボックス5は右方向に回転しているので、Z軸のみのセンサデータが変化することになる。
次の期間では、3軸の全てについて、センサデータが変化せずほぼ一定である。この期間は、ユーザがキャリブレーションボックス5を設置方向3に設置している期間(静止期間)である。
次の期間では、Y軸のみについて、センサデータが大きく変化している。この期間は、ユーザがキャリブレーションボックス5を設置方向3から設置方向4へ回転させている期間(移行期間)である。キャリブレーションボックス5は手前方向に回転しているので、Y軸のみのセンサデータが変化することになる。
最後の期間では、3軸の全てについて、センサデータが変化せずほぼ一定である。この期間は、ユーザがキャリブレーションボックス5を設置方向4に設置し、キャリブレーションを停止するまでの期間(静止期間)である。
このように、センサデータが、いつ、どのように変化しているのかを解析することによって、キャリブレーションボックス5がどのように回転・静止したのかを判別することができる。
CPU40cは、図19(a)のように、センサデータに基づいて、キャリブレーションボックス5の回転・静止タイミングを、期間Ph1〜Ph8として算出する。以下は、各期間に関する説明である。
Ph1:ユーザがキャリブレーションボックス5の設置の準備を行っている。
Ph2:キャリブレーションボックス5が設置方向1に設置され、静止している。
Ph3:キャリブレーションボックス5が前方向に回転中である。
Ph4:キャリブレーションボックス5が設置方向2に設置され、静止している。
Ph5:キャリブレーションボックス5が右方向に回転中である。
Ph6:キャリブレーションボックス5が設置方向3に設置され、静止している。
Ph7:キャリブレーションボックス5が手前方向に回転中である。
Ph8:キャリブレーションボックス5が設置方向4に設置され、静止している。
期間Ph1〜Ph8の情報はRAM40aに記録される。後述するように、CPU40cは、ここで得られた期間Ph1〜Ph8を、他のセンサのキャリブレーション処理においても使用することになる。各センサのセンサデータは、その取得時間に応じて、期間Ph1〜Ph8のいずれかと関連付けられる。
続いて、ステップS410では、CPU40cが、ジャイロセンサ321の3軸のそれぞれのセンサデータのオフセット値を算出する。オフセット値とは、ジャイロセンサ321の静止時のドリフトによって、ジャイロセンサ321のセンサデータに加算されてしまう値のことである。CPU40cは、図19(b)のように、期間Ph2におけるジャイロセンサ321の3軸のセンサデータをそれぞれ時間平均することによって3軸のそれぞれのオフセット値を算出する。オフセット値は、期間Ph4または期間Ph6におけるジャイロセンサ321のセンサデータを時間平均することによって算出してもよい。
ステップS415では、CPU40cが、ジャイロセンサ321の3軸のそれぞれのセンサデータのオフセットを除去する。オフセットの除去は、全期間に渡って、ジャイロセンサ321のセンサデータからオフセット値を除算することによって行う。図20(a)は、オフセットの除去後のジャイロセンサ321のセンサデータである。ジャイロセンサ321が静止している期間のセンサデータがほぼ0で一定となっていることがわかる。
ステップS420では、CPU40cが、ジャイロセンサ321の補正パラメータを算出する。ジャイロセンサ321の補正パラメータとは、ジャイロセンサ321のセンサデータを、ジャイロセンサ321が実際に回転した角度(以下、ジャイロセンサ回転角速度)に変換する際に使用する補正係数のことである。
ここで、ジャイロセンサ321のX軸の補正パラメータの算出方法について説明する。ジャイロセンサの出力値をジャイロセンサ回転角速度に変換するための変換係数であるジャイロセンサ変換係数をジャイロセンサの出力値に乗算すると、ジャイロセンサ回転角速度(deg/sec)が算出される。ジャイロセンサ変換係数は、ジャイロセンサに固有の値であり、仕様として定義されている。CPU40cは、期間Ph3におけるX軸のセンサデータを、サンプリング周期ごとに時間積分し、その積分値にジャイロセンサ変換係数を乗算することで、X軸のジャイロセンサ角速度(deg)を算出する。
ここで、期間Ph3におけるX軸のジャイロセンサ回転角度は、キャリブレーションボックス5の外形状から、90degであるはずである。しかし、実際に算出される回転角度は、90degと少し異なる値になることが多い。これは、ジャイロセンサ321の回転時のドリフト等によるものである。そこで、CPU40cは、X軸のジャイロセンサ回転角度と90degとの比を計算し、この比をX軸の補正パラメータとして算出する。同様に、CPU40cは、期間Ph7におけるY軸のセンサデータを用いてY軸の補正パラメータを算出し、期間Ph5におけるZ軸のセンサデータを用いてZ軸の補正パラメータを算出する(図20(b))。
ステップS425では、CPU40cが、3軸分のオフセット値および補正パラメータを、ジャイロセンサ321のキャリブレーション結果として、RAM40aに記録し、ジャイロセンサ321のキャリブレーション処理を終了する。キャリブレーション後、CPU40cは、ジャイロセンサ321のセンサデータを用いる際、上記のように算出した、ジャイロセンサ321のキャリブレーション結果を用いて校正を行うことになる。すなわち、CPU40cは、まず全期間に渡ってジャイロセンサ321のセンサデータからオフセットを除去する。そして、ジャイロセンサ回転角度を算出する際には、ジャイロセンサ321のセンサデータにジャイロセンサ変換係数および補正パラメータを乗算する。
次に、図21を用いて、ステップS305における、加速度センサ322のキャリブレーション処理の流れを説明する。ステップS500では、CPU40cが、RAM40cに記録された加速度センサ322のセンサデータを読み出す。図22(a)は、RAM40aに記録された加速度センサ322のセンサデータのグラフである。横軸が時間(センサデータの取得時間)、縦軸が出力値である。
ステップS505では、CPU40cが、読み出したセンサデータに基づいて、加速度センサ322の3軸のそれぞれのセンサデータのオフセット値を算出する。オフセット値とは、加速度センサ322の静止時のドリフトによって、加速度センサ322のセンサデータに加算されてしまう値のことである。CPU40cは、図22(b)のように、期間Ph2,Ph4における加速度センサ322のセンサデータを時間平均することによってオフセット値を算出する。より具体的には、CPU40cは、期間Ph2の加速度センサ322のX軸およびY軸のセンサデータに基づいてX軸およびY軸のオフセット値を算出し、期間Ph4の加速度センサ322のZ軸のセンサデータに基づいてZ軸のオフセット値を算出する。
ステップS510では、CPU40cが、加速度センサ322の3軸のそれぞれのセンサデータのオフセットを除去する。オフセットの除去は、全期間に渡って、加速度センサ322のセンサデータからオフセット値を除算することによって行う。図23(a)は、オフセットの除去後の加速度センサ322のセンサデータである。加速度センサ322の各軸について、重力方向を向いていない期間のセンサデータがほぼ0で一定となっていることがわかる。
ステップS515では、CPU40cが、加速度センサ322の補正パラメータを算出する。加速度センサ322の補正パラメータとは、加速度センサ322のセンサデータを、加速度センサ322が実際に受けた加速度(以下、加速度センサ加速度)に変換する際に使用する補正係数のことである。
ここで、加速度センサ322のX軸の補正パラメータの算出方法について説明する。加速度センサ322の出力値を加速度センサ加速度に変換するための変換係数である加速度センサ変換係数を加速度センサ322の出力値に乗算すると、加速度センサ加速度(m/sec2)が算出される。加速度センサ変換係数は、加速度センサに固有の値であり、仕様として定義されている。CPU40cは、期間Ph6におけるX軸のセンサデータの時間平均を求め、求めた時間平均に加速度センサ変換係数を乗算することで、X軸の加速度センサ加速度を算出する。
ここで、期間Ph6におけるX軸の加速度センサ加速度は、重力加速度と一致するので、1Gすなわち9.8(m/sec2)であるはずである。しかし、実際に算出される加速度は、1Gと少し異なる値になることが多い。これは、加速度センサ322の回転時のドリフト等によるものである。そこで、CPU40cは、X軸の加速度センサ加速度と1Gとの比を計算し、この比をX軸の補正パラメータとして算出する。同様に、CPU40cは、期間Ph4におけるY軸のセンサデータを用いてY軸の補正パラメータを算出し、期間Ph2におけるZ軸のセンサデータを用いてZ軸の補正パラメータを算出する(図23(b))。
ステップS520では、CPU40cが、3軸分のオフセット値および補正パラメータを、加速度センサ322のキャリブレーション結果として、RAM40aに記録し、加速度センサ322のキャリブレーション処理を終了する。キャリブレーション後、CPU40cは、加速度センサ322のセンサデータを用いる際、上記のように算出した、加速度センサ322のキャリブレーション結果を用いて校正を行うことになる。すなわち、CPU40cは、まず全期間に渡って加速度センサ322のセンサデータからオフセットを除去する。そして、加速度センサ加速度を算出する際には、加速度センサ322のセンサデータに加速度センサ変換係数および補正パラメータを乗算する。
次に、図24を用いて、ステップS310における、地磁気センサ323のキャリブレーション処理の流れを説明する。ステップS600では、CPU40cが、RAM40aに記録された地磁気センサ323のセンサデータを読み出す。図25(a)は、RAM40aに記録された地磁気センサ323のセンサデータのグラフである。横軸が時間(センサデータの取得時間)、縦軸が出力値である。
ステップS605では、CPU40cが、読み出したセンサデータに基づいて、地磁気センサ323の3軸のそれぞれのセンサデータのオフセット値を算出する。オフセット値とは、地磁気センサ323の静止時のドリフトによって、地磁気センサ323のセンサデータに加算されてしまう値のことである。CPU40cは、図25(b)のように、期間Ph2,Ph4,Ph6における地磁気センサ323のセンサデータを時間平均することによってオフセット値を算出する。より具体的には、CPU40cは、期間Ph2の地磁気センサ323のZ軸のセンサデータに基づいてZ軸のオフセット値を算出し、期間Ph4の地磁気センサ323のY軸のセンサデータに基づいてY軸のオフセット値を算出し、期間Ph6の地磁気センサ323のX軸のセンサデータに基づいてX軸のオフセット値を算出する。
ステップS600では、CPU40cが、地磁気センサ323の3軸のそれぞれのセンサデータのオフセットを除去する。オフセットの除去は、全期間に渡って、地磁気センサ323のセンサデータからオフセット値を除算することによって行う。図26(a)は、オフセットの除去後の地磁気センサ323のセンサデータである。地磁気センサ323の各軸について、重力方向を向いている期間のセンサデータがほぼ0で一定となっていることがわかる。
ステップS615では、CPU40cが、地磁気センサ323の補正パラメータを算出する。地磁気センサ323の補正パラメータとは、地磁気センサ323のセンサデータを、地磁気センサ323が実際に受けた地磁気(以下、地磁気センサ地磁気)に変換する際に使用する補正係数のことである。
ここで、地磁気センサ323の補正パラメータの算出方法について説明する。まず、図26(b)のように、期間Ph2における地磁気センサ323のX軸のセンサデータの時間平均をMx1、Y軸のセンサデータの時間平均をMy1とする。同様に、期間Ph4における地磁気センサ323のX軸のセンサデータの時間平均をMx1、Z軸のセンサデータの時間平均をMz1とする。このとき、地磁気センサ323のX軸のセンサデータの時間平均は、期間Ph2,Ph4のいずれにおいても、同様の値Mx1である。これは、期間Ph2,Ph4でキャリブレーションボックス5のX軸方向は変化していないからである。
さらに、期間Ph6における地磁気センサ323のY軸のセンサデータの時間平均をMy2、Z軸のセンサデータの時間平均をMz1とする。このとき、地磁気センサ323のZ軸のセンサデータの時間平均は、期間Ph4,Ph6のいずれにおいても、同様の値Mz1である。これは、期間Ph4,Ph6でキャリブレーションボックス5のZ軸方向は変化していないからである。
地磁気センサ323の出力値を地磁気センサ地磁気に変換するための変換係数である地磁気センサ変換係数に地磁気センサ323の出力値を乗算すると、地磁気センサ地磁気(T、テスラ)が算出される。地磁気センサ変換係数は、地磁気センサに固有の値であり、仕様として定義されている。CPU40cは、期間Ph2,Ph4,Ph6における3軸のそれぞれのセンサデータに地磁気センサ変換係数を乗算することで、3軸のそれぞれの地磁気センサ地磁気を算出する。
ここで、期間Ph2において、Mx1とMy1に地磁気センサ変換係数を乗算し、それらの乗算結果の2乗和をとると、実際の地磁気E(T)の2乗となるはずである。しかし、実際に算出される値は、地磁気Eと少し異なる値になることが多い。これは、地磁気センサ323の回転時のドリフト等によるものである。そこで、CPU40cは、地磁気センサ323のX軸のセンサデータおよびY軸のセンサデータに乗算する補正係数を算出し、これらをX軸の補正パラメータおよびY軸の補正パラメータとする。期間Ph4,Ph6においても、同様の考え方で、CPU40cは、地磁気センサ323のZ軸のセンサデータに乗算する補正係数を算出し、これをZ軸の補正パラメータとする。
ここで、X軸、Y軸、Z軸のそれぞれの地磁気センサ変換係数をCx、Cy、Cz、X軸、Y軸、Z軸のそれぞれの補正パラメータをγx、γy、γzとすると、以下の関係式((1)式、(2)式、(3)式)が成り立つ。
地磁気センサ変換係数Cx,Cy,Czおよび地磁気Eは既知であるので、上記の関係式から地磁気センサ323の補正パラメータγx,γy,γzを求めることができる。
続いて、ステップS620では、CPU40cが、3軸分のオフセット値および補正パラメータを、地磁気センサ323のキャリブレーション結果として、RAM40aに記録し、地磁気センサ323のキャリブレーション処理を終了する。キャリブレーション後、CPU40cは、地磁気センサ323のセンサデータを用いる際、上記のように算出した、地磁気センサ323のキャリブレーション結果を用いて校正を行うことになる。すなわち、CPU40cは、まず全期間に渡って地磁気センサ323のセンサデータからオフセットを除去する。そして、地磁気センサ地磁気を算出する際には、地磁気センサ323のセンサデータに地磁気センサ変換係数および補正パラメータを乗算する。
次に、図27を用いて、ステップS315における、距離センサ300のキャリブレーション処理の流れを説明する。ステップS700では、CPU40cが、RAM40aに記録された距離センサ300のセンサデータを読み出す。図28(a)は、RAM40aに記録された距離センサ300のセンサデータのグラフである。横軸が時間(センサデータの取得時間)、縦軸が出力値である。前述したように、距離センサにおいて、出力値と測定した距離とは反比例の関係にある。そのため、測定した距離が小さいほど、出力値は大きくなり、測定した距離が大きいほど、出力値は小さくなる。
ステップS705では、CPU40cが距離センサ300のセンサデータのサンプル値を算出する。このとき、CPU40cは、図28(b)のように、期間Ph2,Ph4のそれぞれにおける距離センサ300のセンサデータを時間平均することによってサンプル値を算出する。期間Ph2では、図11(a)のように、回転板53が、先端アダプタ1から前方に距離D1だけ離れた位置に静止している。また、期間Ph4では、図11(b)のように、回転板53が、回転板53の主面とキャリブレーションボックス5の内壁とが略平行な状態で静止している。期間Ph2の距離センサ300のセンサデータからサンプル値1が算出され、期間Ph4の距離センサ300のセンサデータからサンプル値2が算出される。
図29(a)は、算出された2つのサンプル値をプロットしたグラフである。横軸が距離、縦軸が出力値である。
ステップS710では、CPU40cが、算出した2つのサンプル値に基づいて、出力値と距離との関係式を算出する。図29(b)は、出力値と距離との関係をプロットしたグラフである。上記の通り、両者は反比例の関係にあるので、2つのサンプル値のみで、両者の関係式を算出できる。
ステップS715では、CPU40cが、出力値と距離との関係式を、距離センサ300のキャリブレーション結果として、RAM40aに記録し、距離センサ300のキャリブレーション処理を終了する。キャリブレーション後、CPU40cは、距離センサ300のセンサデータを用いる際、上記のように算出した距離センサ300のキャリブレーション結果を用いて校正を行うことになる。すなわち、CPU40cは、上記の関係式を用いて、距離センサ300のセンサデータを距離データに変換する。
本実施形態では、ジャイロセンサ321、加速度センサ322、地磁気センサ323、および距離センサ300が先端アダプタ1に搭載されているが、先端アダプタ1に搭載されるセンサは、ジャイロセンサ321と、加速度センサ322、地磁気センサ323、および距離センサ300のうちの1つ以上とであればよい。また、本実施形態では、センシングソフトが表示器3に搭載されているが、センシングソフトが先端アダプタ1または内視鏡装置2に搭載されていてもよい。
上述したように、本実施形態によれば、表示器3のCPU40cが、ジャイロセンサ321のセンサデータに基づいて、ハウジングであるキャリブレーションボックス5の複数の姿勢に対応した複数の期間を算出し、複数の期間における加速度センサ322、地磁気センサ323、および距離センサ300のセンサデータに基づいて各センサのキャリブレーションを行う。本実施形態では、ユーザがキャリブレーションボックス5を所定の手順で回転させることによって、各センサを回転させるための機構や回転軸の方向を検出するための機構が不要となるので、各センサのキャリブレーションを行うための構成をより簡易にすることができる。
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。