(57)【要約】      （修正有）【課題】水中航走体の現在位置に応じた適切な水底深度を取得することが可能な水中航走体および水中航走体の水底深度の取得方法を提供する。【解決手段】水中航走体１は、現在位置から水中航走体１の進行方向の複数の水底検出位置ｘｄ（ｔ）における複数の水底深度ｈ（ｔ）を格納可能な複数のバッファを有するバッファ部を有し、現在位置から水底検出位置ｘｄ（ｔ）までの水平距離に基づいて複数のバッファの少なくともいずれか１つを特定し、特定したバッファに検出された水底深度ｈ（ｔ）を格納するよう制御し、現在位置と水底取得位置ｘａ（ｔ）までの水平距離に基づいて複数のバッファの少なくともいずれか１つを特定し、特定したバッファに格納された水底深度ｈを取得する。【選択図】図５
2013178170.tif 000002
【特許請求の範囲】
【請求項１】
水中航走体の現在位置から水平方向前方の水底検出位置における水底深度を検出する水底深度検出手段と、
前記現在位置から前記水底検出位置までの水平距離を算出する算出手段と、
前記水底深度検出手段により検出された前記水底深度を格納するとともに、前記現在位置から前記水中航走体の進行方向の複数の位置における複数の前記水底深度を格納可能な複数の格納部を有する格納手段と、
前記算出手段により算出された前記水平距離に基づいて前記複数の格納部の少なくともいずれか１つを特定し、該特定した格納部に前記水底深度検出手段により検出された前記水底深度を格納するよう前記格納手段を制御する制御手段と、
前記水中航走体の現在位置から水平方向前方の水底取得位置における前記水底深度を取得する取得手段と、を備え、
前記取得手段が、前記現在位置と前記水底取得位置までの水平距離に基づいて前記複数の格納部の少なくともいずれか１つを特定し、該特定した格納部に格納された前記水底深度を取得することを特徴とする水中航走体。
【請求項２】
前記水底深度検出手段が、一定のサンプリング周期で前記水底深度を検出し、
前記格納手段が、前記水中航走体の最低航走速度に前記一定のサンプリング周期を乗算して得られる最低検出間隔を隔てた複数の位置における複数の前記水底深度を格納可能な複数の格納部を有することを特徴とする請求項１に記載の水中航走体。
【請求項３】
前記制御手段が、連続して前記水底深度が検出される第１の前記水底検出位置と第２の前記水底検出位置とが前記最低検出間隔の２倍以上離れている場合、前記第１の水底検出位置と前記第２の水底検出位置の間の位置に対応する前記格納部を特定し、該特定した格納部に前記第１の水底検出位置における第１の前記水底深度と前記第２の水底検出位置における第２の前記水底深度により補間された第３の前記水底深度を格納するよう前記格納手段を制御することを特徴とする請求項２に記載の水中航走体。
【請求項４】
前記水中航走体の現在位置における水面から該水中航走体までの深度を示す機体深度を検出する機体深度検出手段を、備え、
前記制御手段が、前記特定した格納部に前記水底深度および前記機体深度を格納するよう前記格納手段を制御し、
前記取得手段が、前記特定した格納部に格納された前記水底深度および前記機体深度を取得し、
前記水中航走体が、更に、
前記取得手段により取得された前記水底深度および前記機体深度、並びに、前記機体深度検出手段が検出する現在位置における前記機体深度に基づいて、前記水底取得位置における前記水底深度を補正する補正手段と、を備えることを特徴とする請求項１から請求項３のいずれか１項に記載の水中航走体。
【請求項５】
前記複数の格納部が、リングバッファにより構成されることを特徴とする請求項１から請求項４のいずれか１項に記載の水中航走体。
【請求項６】
前記水底深度が、前記水底検出位置における水面から水底までの距離を示すことを特徴とする請求項１から請求項５のいずれか１項に記載の水中航走体。
【請求項７】
前記水底深度が、前記水底検出位置における該水底検出位置から水底までの距離を示すことを特徴とする請求項１から請求項５のいずれか１項に記載の水中航走体。
【請求項８】
前記水底深度検出手段が、
前記水中航走体の機体軸方向より下方に向けて超音波を発射するとともに、水底から反射したエコーを受信して前記水中航走体と前記水底の直線距離を検出する直線距離検出部と、
前記直線距離検出部が検出した前記直線距離と、前記機体軸方向と前記超音波の発射方向との発射角度と、水平方向に対する前記機体軸方向のピッチ角度とに基づいて前記水底深度を検出する深度検出部、とを備えることを特徴とする請求項１から請求項７のいずれか１項に記載の水中航走体。
【請求項９】
水底深度を格納する複数の格納部を有する格納手段を備える水中航走体の水底深度の取得方法であって、
該水中航走体の現在位置から水平方向前方の水底検出位置における水底深度を検出する水底深度検出工程と、
前記現在位置から前記水底検出位置までの水平距離を算出する算出工程と、
前記算出工程にて算出された前記水平距離に基づいて、前記現在位置から前記水中航走体の進行方向の複数の位置における複数の前記水底深度を格納可能な前記複数の格納部の少なくともいずれか１つを特定する特定工程と、
前記特定工程により特定された前記格納部に前記水底深度検出工程にて検出された前記水底深度を格納するよう前記格納手段を制御する制御工程と、
前記水中航走体の現在位置から水平方向前方の水底取得位置における前記水底深度を取得する取得工程と、を備え、
前記取得工程が、前記現在位置と前記水底取得位置までの水平距離に基づいて前記複数の格納部の少なくともいずれか１つを特定し、該特定した格納部に格納された前記水底深度を取得することを特徴とする水中航走体の水底深度の取得方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、水中航走体および水中航走体の水底深度の取得方法に関する。
【背景技術】
【０００２】
従来から、水底に超音波を発射し、水底から反射したエコーを受信して水底面の深度や水底の底質を検出する装置が知られている（例えば、特許文献１参照。）。
特許文献１に記載された装置は、水面上の船体の底部に備え付けられた超音波の送受波器を用いて水底面の深度や水底の底質を検出するものである。
特許文献１に記載されたように水面上の船体にて水底の深度や水底の底質を検出する場合、船体内に深度や底質の検出に必要な機材を十分に積載するとともに、検出された水底の深度や底質を格納しておくメモリ等の格納手段を十分に備えているのが一般的である。
【０００３】
しかしながら、水中で機体の深度や方向等を変化させながら自律的に航走する水中航走体の場合、特許文献１のように水底の深度を検出するための機材を装備すると、水中航走体自体の重量が多くなり、水中航走体を小型化することができないという問題がある。そこで、水中航走体には、水底の深度等を検出するための最低限の装備を搭載することが望ましい。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１６２２９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
水中航走体の場合、水底の深度をメモリ等の格納部に格納しておく必要があるが、水中航走体自体が水中を進行しているので、水底が検出された検出位置と、その検出位置で検出された水底の深度とを、それぞれ対応付けて格納部に格納する必要がある。
例えば、メモリ等の格納手段に含まれる複数の格納部に複数の位置の水底深度を格納する場合、複数の格納部に格納された複数の水底深度を、水中航走体の進行に応じて異なる格納部に格納するように（シフトするように）すれば、水中航走体の現在位置に応じた適切な水底深度を取得することができる。
【０００６】
しかしながら、複数の格納部に格納された複数の水底深度を、水中航走体の進行に応じて異なる格納部に格納するようにすると、格納部への水底深度の格納を制御する制御部（ＣＰＵ等）の処理負荷や格納部自身の格納速度等の制約により、水中航走体の現在位置に応じた適切な水底深度を取得することができなくなる可能性がある。
【０００７】
本発明は、このような事情に鑑みてなされたものであって、複数の位置に対応する複数の水底深度を格納する複数の格納部を備えた水中航走体において、格納部への水底深度の格納を制御する制御部の処理負荷や、格納部自身の格納速度等の制約によらず、水中航走体の現在位置に応じた適切な水底深度を取得することができる水中航走体および水中航走体の水底深度の取得方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明は、以下の手段を採用する。
本発明に係る水中航走体は、水中航走体の現在位置から水平方向前方の水底検出位置における水底深度を検出する水底深度検出手段と、前記現在位置から前記水底検出位置までの水平距離を算出する算出手段と、前記水底深度検出手段により検出された前記水底深度を格納するとともに、前記現在位置から前記水中航走体の進行方向の複数の位置における複数の前記水底深度を格納可能な複数の格納部を有する格納手段と、前記算出手段により算出された前記水平距離に基づいて前記複数の格納部の少なくともいずれか１つを特定し、該特定した格納部に前記水底深度検出手段により検出された前記水底深度を格納するよう前記格納手段を制御する制御手段と、前記水中航走体の現在位置から水平方向前方の水底取得位置における前記水底深度を取得する取得手段と、を備え、前記取得手段は、前記現在位置と前記水底取得位置までの水平距離に基づいて前記複数の格納部の少なくともいずれか１つを特定し、該特定した格納部に格納された前記水底深度を取得することを特徴とする。
【０００９】
本発明に係る水中航走体は、水底深度を格納手段に格納する際には現在位置から水底検出位置までの水平距離に基づいて特定された格納部に水底深度を格納し、水底深度を格納手段から取得する際には現在位置と水底取得位置までの水平距離に基づいて特定された格納部から水底深度を取得することができる。したがって、複数の位置に対応する複数の水底深度を格納する複数の格納部を備えた水中航走体において、格納部への水底深度の格納を制御する制御部の処理負荷や、格納部自身の格納速度等の制約によらず、水中航走体の現在位置に応じた適切な水底深度を取得することができる水中航走体を提供することができる。
【００１０】
本発明の第１態様の水中航走体は、前記水底深度検出手段が、一定のサンプリング周期で前記水底深度を検出し、前記格納手段が、前記水中航走体の最低航走速度に前記一定のサンプリング周期を乗算して得られる最低検出間隔を隔てた複数の位置における複数の前記水底深度を格納可能な複数の格納部を有することを特徴とする。
【００１１】
本発明の第１態様の水中航走体は、格納手段が、水中航走体の最低航走速度に一定のサンプリング周期を乗算して得られる最低検出間隔を隔てた複数の位置における水底深度を格納可能な複数の格納部を有する。したがって、水中航走体が最低航走速度で航走する場合であっても、現在位置から水底検出位置までの水平距離に基づいて特定された格納部に水底深度を格納することができる。
【００１２】
本発明の第１態様の水中航走体においては、前記制御手段が、連続して前記水底深度が検出される第１の前記水底検出位置と第２の前記水底検出位置とが前記最低検出間隔の２倍以上離れている場合、前記第１の水底検出位置と前記第２の水底検出位置の間の第３の位置に対応する前記格納部を特定し、該特定した格納部に前記第１の水底検出位置における第１の前記水底深度と前記第２の水底検出位置における第２の前記水底深度により補間された第３の前記水底深度を格納するよう前記格納手段を制御するように構成しても良い。
【００１３】
このような構成の水中航走体は、連続して水底深度が検出される第１の水底検出位置と第２の水底検出位置の間の第３の位置に対応する格納部が特定され、特定された格納部に第１の水底検出位置における第１の水底深度と第２の水底検出位置における第２の水底深度により補間された第３の水底深度が格納される。したがって、水中航走体が最低航走速度より速い速度で航走する場合に、水底深度検出手段により検出されなかった位置における水底深度を、その前後の位置における水底深度に基づいて適切に補間することができる。
【００１４】
本発明の第２態様の水中航走体は、前記水中航走体の現在位置における水面から該水中航走体までの深度を示す機体深度を検出する機体深度検出手段を、備え、前記制御手段が、前記特定した格納部に前記水底深度および前記機体深度を格納するよう前記格納手段を制御し、前記取得手段が、前記特定した格納部に格納された前記水底深度および前記機体深度を取得し、前記水中航走体が、更に、前記取得手段により取得された前記水底深度および前記機体深度、並びに、前記機体深度検出手段が検出する現在位置における前記機体深度に基づいて、前記水底取得位置における前記水底深度を補正する補正手段と、を備えることを特徴とする。
【００１５】
本発明の第２態様の水中航走体は、水中航走体の現在位置における水面から水中航走体までの深度を示す機体深度を検出し、検出した機体深度を水底深度とともに格納する。また、水底深度を取得する際には、水底深度とともに機体深度を取得して、これらの情報と現在位置における機体深度に基づいて水底取得位置における水底深度を補正する。このようにすることで、水底深度を検出して格納した時点と、現在とで水中航走体の機体深度が変化している場合であっても、水底取得位置における水底深度を適切に補正することができる。
【００１６】
本発明の第３態様の水中航走体は、複数の格納部が、リングバッファにより構成されることを特徴とする。複数の格納部をリングバッファとすることで、限られたメモリ資源を有効に活用可能な水中航走体を提供することができる。
【００１７】
本発明の第４態様の水中航走体は、前記水底深度が、前記水底検出位置における水面から水底までの距離を示すことを特徴とする。このようにすることで、水面から水底までの距離を適切に格納部に格納し、それを取得することが可能となる。
【００１８】
本発明の第５態様の水中航走体は、前記水底深度が、前記水底検出位置における該水底検出位置から水底までの距離を示すことを特徴とする。このようにすることで、水中航走体の現在位置から水平方向前方の水底検出位置から水底までの距離を適切に格納部に格納し、それを取得することができる。
【００１９】
本発明の第６態様の水中航走体は、前記水底深度検出手段が、前記水中航走体の機体軸方向より下方に向けて超音波を発射するとともに、水底から反射したエコーを受信して前記水中航走体と前記水底の直線距離を検出する直線距離検出部と、前記直線距離検出部が検出した前記直線距離と、前記機体軸方向と前記超音波の発射方向との発射角度と、水平方向に対する前記機体軸方向のピッチ角度とに基づいて前記水底深度を検出する深度検出部、とを備えることを特徴とする。
【００２０】
本発明の第６態様の水中航走体によれば、水底深度検出手段が水中航走体の機体軸方向より下方に向けて超音波を発射して水底との直線距離を検出し、検出された直線距離と、機体軸方向と超音波の発射方向の発射角度と、水平方向に対する機体軸方向のピッチ角度に基づいて水底深度が検出される。このようにすることで、水中航走体の機体の姿勢情報と水底までの直線距離に基づいて水底深度が適切に検出される。
【００２１】
本発明に係る水中航走体の水底深度の取得方法は、水底の深度を示す水底深度を格納する複数の格納部を有する格納手段を備える水中航走体の水底深度の取得方法であって、該水中航走体の現在位置から水平方向前方の水底検出位置における水底深度を検出する水底深度検出工程と、前記現在位置から前記水底検出位置までの水平距離を算出する算出工程と、前記算出工程にて算出された前記水平距離に基づいて、前記現在位置から前記水中航走体の進行方向の複数の位置における複数の前記水底深度を格納可能な前記複数の格納部の少なくともいずれか１つを特定する特定工程と、前記特定工程により特定された前記格納部に前記水底深度検出工程にて検出された前記水底深度を格納するよう前記格納手段を制御する制御工程と、前記水中航走体の現在位置から水平方向前方の水底取得位置における前記水底深度を取得する取得工程と、を備え、前記取得工程が、前記現在位置と前記水底取得位置までの水平距離に基づいて前記複数の格納部の少なくともいずれか１つを特定し、該特定した格納部に格納された前記水底深度を取得することを特徴とする。
【００２２】
本発明に係る水中航走体の水底深度の取得方法は、水底深度を格納手段に書き込む際には現在位置から水底検出位置までの水平距離に基づいて特定された格納部に水底深度を書き込み、水底深度を格納手段から取得する際には現在位置と水底取得位置までの水平距離に基づいて特定された格納部から水底深度を取得することができる。したがって、複数の位置に対応する複数の水底深度を格納する複数の格納部を備えた水中航走体において、格納部への水底深度の書き込みを制御する制御部の処理負荷や、格納部自身の書き込み速度等の制約によらず、水中航走体の現在位置に応じた適切な水底深度を取得することができる水中航走体の水底深度の取得方法を提供することができる。
【発明の効果】
【００２３】
本発明によれば、複数の位置に対応する複数の水底深度を格納する複数の格納部を備えた水中航走体において、格納部への水底深度の書き込みを制御する制御部の処理負荷や、格納部自身の書き込み速度等の制約によらず、水中航走体の現在位置に応じた適切な水底深度を取得することが可能な水中航走体および水中航走体の水底深度の取得方法を提供することができる。
【図面の簡単な説明】
【００２４】
【図１】第１実施形態の水中航走体の構成を示す側面図である。
【図２】第１実施形態の前方水平舵及び後方水平舵の回動状態を示す図である。
【図３】第１実施形態の水中航走体の制御構成を示すブロック図である。
【図４】バッファ部の構成を示す構成図である。
【図５】水中航走体の現在位置（時刻ｔにおける位置）と水底検出位置ｘｄ（ｔ）と水底深度ｈ（ｔ）の関係を示す図である。
【図６】第１実施形態の水底深度の格納方法を示すフローチャートである。
【図７】第１実施形態の水底深度の格納方法を示すフローチャートである。
【図８】第１実施形態の水底深度の取得方法を示すフローチャートである。
【発明を実施するための形態】
【００２５】
〔第１実施形態〕
以下、第１実施形態の水中航走体について、図１を用いて説明する。図１は、第１実施形態の水中航走体の構成を示す側面図である。
第１実施形態の水中航走体１は、機体２と、推進器３と、前方水平舵４と、後方水平舵５と、前方垂直舵６と、後方垂直舵７とを備える。
【００２６】
機体２は、推進器３と、前方水平舵４と、後方水平舵５と、前方垂直舵６と、後方垂直舵７とを駆動するための駆動源を内部に備えている。駆動源としては、例えば、電力を蓄電するバッテリーと、バッテリーからの電力により駆動する電動モータなどがあるが、他の種類の駆動源であってもよい。また、機体２は、機体軸Ａ１に直交する平面における断面形状が略円形である。
【００２７】
水中航走体１は、図１中の矢印で示す方向を進行方向とし、推進器３が備えるプロペラ３ｂを機体２の内部の駆動源により回転させることにより推進力を得て水中を航走する。なお、プロペラ３ｂを正回転させる場合には図１中の矢印方向に進行し、プロペラ３ｂを逆回転させる場合には図１中の矢印方向とは反対方向に進行する。なお、プロペラ３ｂの周囲には断面形状が略円形のダクト３ａが配置されており、プロペラ３ｂの推進力を機体軸Ａ１方向に集中させる機能を果たす。
【００２８】
前方水平舵４及び後方水平舵５（「昇降舵」ともいう。）は、断面視翼型を有する板状の部材である。前方水平舵４は、機体２の前部から機体２の左右方向（幅方向）に延びる図示しない水平軸に沿って、左右に一枚ずつ設けられている。同様に、後方水平舵５は、機体２の後部から機体２の左右方向（幅方向）に延びる図示しない水平軸に沿って、左右に一枚ずつ設けられている。
【００２９】
前方水平舵４及び後方水平舵５は、機体２の内部に設けられた駆動源（不図示）により、機体２の左右方向に延びる水平軸線（不図示）まわりに回動するように構成されている。図２に示すように、前方水平舵４は、実線で示す位置ｂを中心とし、破線で示すａの位置と、同じく破線で示すｃの位置との間で回動するように構成されている。また、後方水平舵５も、実線で示す位置ｅを中心とし、破線で示すｄの位置と、同じく破線で示すｆの位置との間で回動するように構成されている。
【００３０】
ここで、前方水平舵４の位置と、後方水平舵５の位置と、水中航走体１の姿勢及び進行方向の関係は、下記に示す通りとなる。
前方水平舵４の位置 後方水平舵５の位置 姿勢 進行方向
ｂ（水平）              ｅ（水平）          水平            水平
ａ（上向）              ｄ（上向）          水平            上昇
ｃ（下向）              ｆ（下向）          水平            下降
ａ（上向）              ｆ（下向）          機首上げ        水平
ｃ（下向）              ｄ（上向）          機首下げ        水平
【００３１】
前方垂直舵６及び後方垂直舵５（「方向舵」ともいう。）は、断面視翼型を有する板状の部材である。前方垂直舵６は、機体２の前部から機体２の上下方向（高さ方向）に延びる前方水平軸Ａ３に沿って、上下に一枚ずつ設けられている。同様に、後方垂直舵７は、機体２の後部から機体２の上下方向（高さ方向）に延びる後方水平軸Ａ４に沿って、上下に一枚ずつ設けられている。
【００３２】
前方垂直舵６は、機体２の内部に設けられた駆動源（不図示）により、前方水平軸Ａ３まわりに回動するように構成されている。また、後方垂直舵７は、機体２の内部に設けられた駆動源（不図示）により、後方水平軸Ａ４まわりに回動するように構成されている。前方垂直舵６と後方垂直舵７を制御することにより、水中航走体１の左右方向の進行方向を任意に制御することができる。
【００３３】
超音波送受波器８（直線距離検出部）は、水中航走体１の機体軸Ａ１より下方に向けて超音波を発射するとともに、水底から反射したエコーを受信して水中航走体１と水底の直線距離を検出する装置である。超音波送受波器８は、機体２の内部に備えられた制御部３０から検出指示を受信した場合に超音波を発射するとともに水底から反射したエコーを受信する。そして、受信したエコーの強度に基づいて水中航走体１と水底の直線距離を検出して、制御部３０へ通知する。
【００３４】
次に、第１実施形態の水中航走体１の制御構成について図３を用いて説明する。図３は、水中航走体１の制御構成を示すブロック図である。
制御部３０は、水中航走体１の全体を制御するものであり、例えばＣＰＵ等により構成されている。制御部３０は、ＲＯＭ（ＲｅａｄＯｎｌｙＭｅｍｏｒｙ）等のプログラム格納部２０に格納されたプログラムをＲＡＭ（ＲａｎｄｏｍＡｃｃｅｓｓＭｅｍｏｒｙ）６０に読み出して実行することにより、水中航走体１の各部を制御する。なお、制御部３０から各部への制御信号の送信や、各部からの制御部３０への信号の送信は、制御バス５０を介して行われる。
【００３５】
プロペラ駆動部４０は、推進器３が備えるプロペラ３ｂを回転させる駆動モータ（不図示）を制御するものである。制御部３０は、プロペラ駆動部４０に制御信号を送信することにより、推進器３が備えるプロペラ３ｂを回転させる駆動モータ（不図示）を制御する。
【００３６】
前方水平舵駆動部４１は、前方水平舵４を回動させる駆動モータ（不図示）を制御するものである。制御部３０は、前方水平舵駆動部４１に制御信号を送信することにより、前方水平舵４を回動させる駆動モータ（不図示）を制御する。
【００３７】
後方水平舵駆動部４２は、後方水平舵５を回動させる駆動モータ（不図示）を制御するものである。制御部３０は、後方水平舵駆動部４２に制御信号を送信することにより、後方水平舵５を回動させる駆動モータ（不図示）を制御する。
【００３８】
前方垂直舵駆動部４３は、前方垂直舵６を回動させる駆動モータ（不図示）を制御するものである。制御部３０は、前方垂直舵駆動部４３に制御信号を送信することにより、前方垂直舵６を回動させる駆動モータ（不図示）を制御する。
【００３９】
後方垂直舵駆動部４４は、後方垂直舵７を回動させる駆動モータ（不図示）を制御するものである。制御部３０は、後方垂直舵駆動部４４に制御信号を送信することにより、後方垂直舵７を回動させる駆動モータ（不図示）を制御する。
【００４０】
また、前述したように、超音波送受波器８は、水中航走体１の機体軸Ａ１より下方に向けて超音波を発射するとともに、水底から反射したエコーを受信して水中航走体１と水底の直線距離を検出する装置である。制御部３０は、超音波送受波器８に制御信号を送信することにより、超音波送受波器８から水中航走体１と水底の直線距離を取得する。
【００４１】
機体深度センサ７０は、図１に示される水中航走体１の中心位置Ｃの、水面からの深度を機体深度として検出可能なセンサである。制御部３０が機体深度センサ７０に対して機体深度の取得を指示すると、機体深度センサ７０は、機体深度を検出して制御部３０に通知する。
【００４２】
機体姿勢センサ８０は、水中航走体１の姿勢を検出するセンサである。機体姿勢センサ８０は、水平方向に対する機体軸Ａ１の角度（ピッチ角度）と、機体軸Ａ１を中心とした機体２の回転角度（ロール角度）と、中心位置Ｃを通過する機体軸Ａ１に直交する中心軸Ａ２を中心とした機体軸Ａ１の角度（ヨー角度）とを検出可能である。
【００４３】
航走速度センサ９０は、水中航走体１の航走速度を検出するセンサである。後述するように、航走速度は、機体位置インデックスを算出するために用いられるが、機体位置インデックスの算出は、一定のサンプリング周期Ｔ毎に行われる。航走速度センサ９０は、制御部３０から航走速度の取得指示を受信すると、現在時刻ｔよりサンプリング１周期分の期間Ｔだけ過去の時点から、現在時刻ｔまでの、平均航走速度を算出して制御部３０に通知する。
【００４４】
バッファ部１０（格納手段）は、制御部３０が超音波送受波器８から取得した情報に基づいて算出する水底深度、機体深度センサ７０が検出する機体深度等を格納するための複数のバッファ（格納部）を備える。図４は、バッファ部１０の構成を示す構成図である。バッファ部１０は、図４に示されるように、水中航走体１の進行方向の複数の位置における複数の水底深度を格納可能な１０−１から１０−ｎまでの、ｎ個のバッファを備える。各バッファは、水底深度や機体深度を格納するために必要なメモリ容量を備えており、各バッファのメモリ容量は同一容量である。なお、図３では、水中航走体１が、バッファ部１０とＲＡＭ６０とを備えるものとしたが、他の態様であってもよい。例えば、ＲＡＭ６０の一部の領域をバッファ部１０として用いるようにしても良い。
【００４５】
次に、図５を用いて、水底深度の格納方法について説明する。図５は、水中航走体の現在位置（時刻ｔにおける位置）と水底検出位置ｘｄ（ｔ）と水底深度ｈ（ｔ）の関係を示す図である。
図５では、機体２の中心位置Ｃを原点とし、水中航走体１の進行方向を正方向とした水平方向の軸をｘ軸とする。また、機体２の中心位置を原点とし、深度が深くなる方向を正方向としたｘ軸に直交する軸をｚ軸とする。また、図５では、ｘ軸に対する機体軸Ａ１のピッチ角度がθで表されている。
【００４６】
図５では、超音波送受波器８から発射された超音波が水底にて反射し、その反射したエコーが超音波送受波器８により検出される。そして、超音波送受波器８から水底までの直線距離Ｌ（ｔ）が、超音波送受波器８により検出されることとなる。超音波送受波器８が超音波を発射する方向は、図５に示されるように、機体軸Ａ１から下方に角度αをなす方向である。超音波が到達する水底位置から鉛直方向上方のｘ軸上の位置が、水底検出位置ｘｄ（ｔ）となる。また、水底位置と水底検出位置ｘｄ（ｔ）の距離が、水底深度ｈ（ｔ）となる。
【００４７】
制御部３０（算出手段）は、現在位置（時刻ｔにおける機体２の中心位置Ｃ）を原点とした水底検出位置ｘｄ（ｔ）は、下記の式により算出する。
ｘｄ（ｔ）＝Ｌ（ｔ）ｃｏｓ（θ−α）＋Ｌｂ・ｃｏｓ（θ）      （１）
ここで、Ｌｂは、機体２の中心位置Ｃから超音波送受波器８までの距離を示す。
Ｌ（ｔ）は超音波送受波器８により検出される値であり、θは機体姿勢センサ８０により検出される値である。また、αは機体２に固有の値であり、Ｌｂも機体２に固有の値である。したがって、制御部３０は、超音波送受波器８により検出される値Ｌ（ｔ）と、機体姿勢センサ８０により検出される角度θに基づいて、水底検出位置ｘｄ（ｔ）を一意に算出することができる。
【００４８】
また、現在位置（時刻ｔにおける機体２の中心位置Ｃ）を原点とした水底深度ｈ（ｔ）は、下記の式により算出される。
ｈ（ｔ）＝Ｌ（ｔ）・ｓｉｎ（α−θ）      （２）
Ｌ（ｔ）は超音波送受波器８により検出される値であり、θは機体姿勢センサ８０により検出される値である。また、αは機体２に固有の値である。したがって、制御部３０は、超音波送受波器８により検出される値Ｌ（ｔ）と、機体姿勢センサ８０により検出される角度θに基づいて、水底深度ｈ（ｔ）を一意に算出することができる。
【００４９】
次に、図６および図７を用いて、水底深度の格納方法を説明する。図６および図７は、第１実施形態の水底深度の格納方法を示すフローチャートである。
図６および図７のフローチャートに示される各処理は、制御部３０がプログラム格納部２０に格納されたプログラムを実行することにより行われる。
【００５０】
ステップＳ６０１で、制御部３０は、水底深度ｈ（ｔ）（ｔは現在時刻）を検出可能であるかどうかを判定し、検出可能であると判定した場合はステップＳ６０２へ処理を進め、検出可能でないと判定した場合は図６の処理を終了させる。具体的には、制御部３０が、超音波送受波器８に対して水底深度を検出可能であるかどうかを問い合わせる。超音波送受波器８は、水底深度を検出可能であるかどうかを判定し、その判定結果を制御部３０に通知する。超音波送受波器８は、予め定められたＬｍａｘより遠い位置は検出できないので、Ｌｍａｘ以下の距離が検出されている場合に、水底深度を検出可能であると判定する。
【００５１】
ステップＳ６０２で、制御部３０（水底深度検出手段）は、水中航走体の現在位置から水平方向前方の水底検出位置ｘｄ（ｔ）における水底深度ｈ（ｔ）を検出する。具体的には、制御部３０が、超音波送受波器８に水底までの直線距離Ｌ（ｔ）の検出を指示する。超音波送受波器８は、直線距離Ｌ（ｔ）を検出して制御部３０に通知する。また、制御部３０が、機体姿勢センサ８０に機体２のピッチ角度θの検出を指示する。機体姿勢センサ８０は、ピッチ角度θを検出して制御部３０に通知する。そして、制御部３０は、直線距離Ｌ（ｔ）とピッチ角度θを前述した式（２）に代入して、水底深度ｈ（ｔ）を検出する。
【００５２】
ステップＳ６０３で、制御部３０は、機体深度ｄ（ｔ）を検出する。具体的には、制御部３０が、機体深度センサ７０に水面から機体２の中心位置Ｃまでの深度（機体深度）の検出を指示する。機体深度センサ７０は、機体深度ｄ（ｔ）を検出して制御部３０に通知する。
【００５３】
ステップＳ６０４で、制御部３０は、水中航走体１の航走速度ｖ（ｔ）を算出する。具体的には、制御部３０が、航走速度センサ９０に、現在時刻ｔよりサンプリング１周期分の期間Ｔだけ過去の時点から、現在時刻ｔまでの平均航走速度を算出するよう指示する。航走速度センサ９０は、サンプリング１周期分の平均航走速度を算出し、制御部３０に通知する。
【００５４】
ステップＳ６０５で、制御部３０は、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）を特定する。機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）とは、時刻ｔにおける現在位置に対応するバッファを示す数値であり、ｎ個のバッファ１０−１から１０−ｎのいずれか１つを特定する１〜ｎのいずれか１つの値である。例えば、この値が２であれば、図４に示されるバッファ１０−２が特定される。機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）は、水底深度ｈ（ｔ）を検出するサンプリング周期をＴとした場合に、下記の式にて表される。
ＡＵＶＩｎｄｅｘ（ｔ）＝
ＡＵＶＩｎｄｅｘ（ｔ−Ｔ）＋ｉｎｔ［ｖ（ｔ）／Ｖｍｉｎ］      （３）
ここで、Ｖｍｉｎとは、水中航走体１の最低航走速度をいう。最低航走速度とは、水中航走体１の推進器３のプロペラ３ｂを予め定められた最低回転数にて定常的に回転させた場合に水中航走体１が進行方向に進行する速度のことをいう。プロペラ３ｂは、前述した予め定められた最低回転数Ｒｍｉｎを下回る回転数では、定常的に回転しないものとする。つまり、プロペラ駆動部４０は、Ｒｍｉｎより低い回転数でプロペラ３ｂを回転させるように制御部３０から指示されたとしても、プロペラ３ｂを回転させずに無回転に維持するものとする。
【００５５】
また、式（３）において、ｉｎｔ［ａ］は、ａを超えない最大の整数を表す。例えば、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ−Ｔ）（現在時刻ｔからサンプリング１周期分のＴ時間だけ遡った時刻の機体位置インデックス）が“１”であり、航走速度ｖ（ｔ）が“Ｖｍｉｎ”である場合、現在時刻ｔの機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）は、式（３）から以下のように算出される。
ＡＵＶＩｎｄｅｘ（ｔ）＝１＋ｉｎｔ［Ｖｍｉｎ／Ｖｍｉｎ］＝２
この場合、“２”に対応するバッファ１０−２が特定される。
【００５６】
また、例えば、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ−Ｔ）が“１”であり、航走速度ｖ（ｔ）が３・Ｖｍｉｎである場合、現在時刻ｔの機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）は、式（３）から以下のように算出される。
ＡＵＶＩｎｄｅｘ（ｔ）＝１＋ｉｎｔ［３・Ｖｍｉｎ／Ｖｍｉｎ］＝４
この場合、“４”に対応するバッファ１０−４が特定される。
【００５７】
以上のように、航走速度ｖ（ｔ）が最低航走速度Ｖｍｉｎであれば、バッファ１０−１の次にバッファ１０−２が特定され、バッファ１０−２の次にバッファ１０−３が特定され、１つずつ隣接するバッファが特定されることとなる。一方、航走速度ｖ（ｔ）が最低航走速度Ｖｍｉｎの３倍であれば、バッファ１０−１の次にバッファ１０−４が特定され、バッファ１０−４の次にバッファ１０−７が特定され、３つおきにバッファが特定されることとなる。
【００５８】
このように、バッファ部１０は、水中航走体１の最低航走速度Ｖｍｉｎにサンプリング周期Ｔを乗算して得られる間隔（最少検出間隔）を隔てたｎ箇所の位置におけるｎ個の水底深度を格納可能なｎ個のバッファを有する。
【００５９】
ステップＳ６０６で、制御部３０は、ステップＳ６０５にて特定された機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）が、整数ｎを超えているかどうかを判定し、整数ｎを超えていると判定した場合はステップＳ６０７に処理を進める。制御部３０が、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）が整数ｎを超えていないと判定した場合、ステップＳ６１９に処理を進める。
【００６０】
ステップＳ６０７で、制御部３０は、ステップＳ６０５にて特定された機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）から整数ｎを減算する処理を行う。図４にて示したように、バッファ部１０は、１０−１から１０−ｎまでのｎ個のバッファを備える。したがって、ｎより大きい数値が機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）として特定された場合、それに対応するバッファが存在しないこととなる。そこで、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）がｎより大きい数値となる場合には、ｎを減算して、１０−１から１０−ｎまでのｎ個のバッファのいずれかを特定可能とする。
【００６１】
ステップＳ６１９で、制御部３０は、ステップＳ６０５にて特定された機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）が、０より小さい負の値かどうかを判定し、負の値であると判定した場合はステップＳ６２０に処理を進める。制御部３０が、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）が負の値でないと判定した場合、ステップＳ６０８に処理を進める。
例えば、バッファ１０−１が特定された後に水中航走体１がｘ軸の負の方向に後進した場合に、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）が負の値となる。
【００６２】
ステップＳ６２０で、制御部３０は、ステップＳ６０５にて特定された機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）に整数ｎを加算する処理を行う。図４にて示したように、バッファ部１０は、１０−１から１０−ｎまでのｎ個のバッファを備える。したがって、負の値が機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）として特定された場合、それに対応するバッファが存在しないこととなる。そこで、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）が負の値となる場合には、ｎを加算して、１０−１から１０−ｎまでのｎ個のバッファのいずれかを特定可能とする。
【００６３】
このように、１０−１から１０−ｎまでのｎ個のバッファを、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）を特定するのに応じて繰り返し用いることで、限られた個数のバッファを有効に活用することができる。また、１０−１から１０−ｎまでのｎ個のバッファが連続した物理アドレスを備えるようにメモリ領域を割り当て、バッファ１０−ｎに連続するメモリ領域に再びバッファ１０−１が割り当てるような物理アドレスの算出式を用いることで、バッファ部１０をリングバッファとして利用することが可能となる。
【００６４】
ステップＳ６０８で、制御部３０は、書込位置インデックスＷＲＩｎｄｅｘ（ｔ）を特定する。書込位置インデックスＷＲＩｎｄｅｘ（ｔ）とは、時刻ｔにおける水底検出位置ｘｄ（ｔ）に対応するバッファを示す数値であり、ｎ個のバッファ１０−１から１０−ｎのいずれか１つを特定する１〜ｎのいずれか１つの値である。例えば、この値が２であれば、図４に示されるバッファ１０−２が特定される。書込位置インデックスＷＲＩｎｄｅｘ（ｔ）は、下記の式により算出される。
ＷＲＩｎｄｅｘ（ｔ）＝
ＡＵＶＩｎｄｅｘ（ｔ）＋ｉｎｔ［ｘｄ（ｔ）／（Ｖｍｉｎ・Ｔ）］      （４）
なお、水底検出位置ｘｄ（ｔ）は、前述した式（１）により一意に算出される値である。
【００６５】
また、式（４）において、ｉｎｔ［ａ］は、ａを超えない最大の整数を表す。例えば、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）（現在時刻ｔの機体位置インデックス）が“２”であり、水底検出位置ｘ（ｔ）が“Ｖｍｉｎ・３Ｔ”である場合、現在時刻ｔの書込位置インデックスＷＲＩｎｄｅｘ（ｔ）は、式（４）から以下のように算出される。
ＷＲＩｎｄｅｘ（ｔ）＝２＋ｉｎｔ［Ｖｍｉｎ・３Ｔ／（Ｖｍｉｎ・Ｔ）］＝５
この場合、“５”に対応するバッファ１０−５が特定される。
【００６６】
ステップＳ６０９で、制御部３０は、ステップＳ６０８にて特定された書込位置インデックスＷＲＩｎｄｅｘ（ｔ）が、整数ｎを超えているかどうかを判定し、整数ｎを超えていると判定した場合はステップＳ６１０に処理を進める。制御部３０が、書込位置インデックスＷＲＩｎｄｅｘ（ｔ）が整数ｎを超えていないと判定した場合、ステップＳ６２１に処理を進める。
【００６７】
ステップＳ６１０で、制御部３０は、ステップＳ６０８にて特定された書込位置インデックスＷＲＩｎｄｅｘ（ｔ）から整数ｎを減算する処理を行う。図４にて示したように、バッファ部１０は、１０−１から１０−ｎまでのｎ個のバッファを備える。したがって、ｎより大きい数値が書込位置インデックスＷＲＩｎｄｅｘ（ｔ）として特定された場合、それに対応するバッファが存在しないこととなる。そこで、書込位置インデックスＷＲＩｎｄｅｘ（ｔ）がｎより大きい数値となる場合には、ｎを減算して、１０−１から１０−ｎまでのｎ個のバッファのいずれかを特定可能とする。
【００６８】
ステップＳ６２１で、制御部３０は、ステップＳ６０８にて特定された書込位置インデックスＷＲＩｎｄｅｘ（ｔ）が、０より小さい負の値かどうかを判定し、負の値であると判定した場合はステップＳ６２２に処理を進める。制御部３０が、書込位置インデックスＷＲＩｎｄｅｘ（ｔ）が負の値でないと判定した場合、ステップＳ６１１に処理を進める。
例えば、バッファ１０−１が特定された後に水中航走体１がｘ軸の負の方向に後進した場合に、書込位置インデックスＷＲＩｎｄｅｘ（ｔ）が負の値となる。
【００６９】
ステップＳ６２２で、制御部３０は、ステップＳ６０８にて特定された書込位置インデックスＷＲＩｎｄｅｘ（ｔ）に整数ｎを加算する処理を行う。図４にて示したように、バッファ部１０は、１０−１から１０−ｎまでのｎ個のバッファを備える。したがって、負の値が書込位置インデックスＷＲＩｎｄｅｘ（ｔ）として特定された場合、それに対応するバッファが存在しないこととなる。そこで、書込位置インデックスＷＲＩｎｄｅｘ（ｔ）が負の値となる場合には、ｎを加算して、１０−１から１０−ｎまでのｎ個のバッファのいずれかを特定可能とする。
【００７０】
ステップＳ６１１で、制御部３０は、書込位置インデックスＷＲＩｎｄｅｘ（ｔ）により特定されたバッファに、ステップＳ６０２にて検出された水底深度ｈ（ｔ）を格納するように、バッファ部１０を制御する。同様に、ステップＳ６１２で、制御部３０は、書込位置インデックスＷＲＩｎｄｅｘ（ｔ）により特定されたバッファに、ステップＳ６０３にて検出された機体深度ｄ（ｔ）を格納するように、バッファ部１０を制御する。
【００７１】
ステップＳ６１３で、制御部３０は、書込位置インデックスＷＲＩｎｄｅｘ（ｔ）により特定されたバッファに、水底深度ｈ（ｔ）及び機体深度ｄ（ｔ）を格納済みであることを示す格納済みフラグをセットする。
【００７２】
ステップＳ６１４で、制御部３０は、水底深度を補間すべきバッファがあるかどうかを判定し、補間すべきバッファがある場合はステップＳ６１５へ処理を進める。補間すべきバッファがない場合はステップＳ６１６へ処理を進める。制御部３０は、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）から機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ−Ｔ）を減算し、この値が２以上であれば、水底深度を補間すべきバッファがあると判断する。
【００７３】
ステップＳ６１５で、制御部３０は、水底深度の補間処理を行う。例えば、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）が３であり、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ−Ｔ）が１である場合を考える。この場合、バッファ１０−１に水底深度ｈ（ｔ−Ｔ）が格納された後に、バッファ１０−３に水底深度ｈ（ｔ）が格納されることとなる。そして、例えば、水底深度ｈ（ｔ−Ｔ）がＨであり、水底深度ｈ（ｔ）が２Ｈである場合、バッファ１０−２には、Ｈと２Ｈの値から線形補間された３・Ｈ／２が格納される。なお、ここでは水底深度の補間処理は線形補間により補間されるが、他の補間処理を用いても良い。
【００７４】
ステップＳ６１６で、制御部３０は、機体深度の補間処理を行う。例えば、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）が３であり、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ−Ｔ）が１である場合を考える。この場合、バッファ１０−１に機体深度ｄ（ｔ−Ｔ）が格納された後に、バッファ１０−３に機体深度ｄ（ｔ）が格納されることとなる。そして、例えば、機体深度ｈ（ｔ−Ｔ）がＤであり、機体深度ｄ（ｔ）が２Ｄである場合、バッファ１０−２には、Ｄと２Ｄの値から線形補間された３・Ｄ／２が格納される。なお、ここでは機体深度の補間処理は線形補間により補間されるが、他の補間処理を用いても良い。
【００７５】
ステップＳ６１７で、制御部３０は、ステップＳ６１４からステップＳ６１６により補間処理された水底深度及び補間処理された機体深度が格納されたバッファに、水底深度及び機体深度を格納済みであることを示す格納済みフラグをセットする。なお、ステップＳ６１７でバッファに格納する格納済みフラグは、ステップＳ６１３でバッファに格納する格納済みフラグとは異ならせるのが望ましい。例えば、ステップＳ６１３で格納する格納済みフラグは“１”とし、ステップＳ６１７で格納する格納済みフラグは“２”とするのが望ましい。このようにすることで、水底深度を取得する場合に、その水底深度がステップＳ６０２の処理により検出されたものであるのか、ステップＳ６１５の処理により補間されたものであるのかを、容易に判別することができる。
【００７６】
以上のステップＳ６１４からステップＳ６１７の処理により、制御部３０は、連続して水底深度が検出される第１の水底検出位置ｘｄ１と第２の水底検出位置ｘｄ２とが最低検出間隔（最低航走速度Ｖｍｉｎにサンプリング周期Ｔを乗算した値）の２倍以上離れている場合、第１の水底検出位置ｘｄ１と第２の水底検出位置ｘｄ２の間の位置に対応するバッファを特定する。そして、制御部３０は、特定されたバッファに、第１の水底検出位置ｘｄ１における第１の水底深度ｈ１と第２の水底検出位置ｘｄ２における第２の水底深度ｈ２により補間処理された第３の水底深度ｈ３を格納する。
【００７７】
ステップＳ６１８で、制御部３０は、サンプリング周期Ｔが経過したかどうかを判定し、経過したと判定した場合はステップＳ６０１へ処理を再び戻す。このように、サンプリング周期Ｔを１周期として、ステップＳ６０１からステップＳ６１７までの各処理が繰り返し実行される。以上のようにして、バッファ部１０への水底深度ｈ（ｔ）及び機体深度ｄ（ｔ）の格納が行われる。
【００７８】
次に、図８を用いて、図６および図７に示される水底深度の格納方法により格納された水底深度を取得する取得方法を説明する。図８の水底深度の取得方法を実行することにより、水中航走体１は、機体２の中心位置Ｃの水平方向前方の任意の位置における水底深度を取得することができる。
【００７９】
図８のステップＳ７０１で、制御部３０は、現在時刻ｔの機体深度である機体深度ｄ（ｔ）を検出する。具体的には、制御部３０が、機体深度センサ７０に水面から機体２の中心位置Ｃまでの深度（機体深度）の検出を指示する。機体深度センサ７０は、機体深度ｄ（ｔ）を検出して制御部３０に通知する。
【００８０】
ステップＳ７０２で、制御部３０は、水中航走体１の航走速度ｖ（ｔ）を算出する。具体的には、制御部３０が、航走速度センサ９０に、現在時刻ｔよりサンプリング１周期分の期間Ｔだけ過去の時点から、現在時刻ｔまでの平均航走速度を算出するよう指示する。航走速度センサ９０は、サンプリング１周期分の平均航走速度を算出し、制御部３０に通知する。
ステップＳ７０３で、制御部３０は、機体位置インデックスＡＵＶＩｎｄｅｘ（ｔ）を特定する。具体的な特定方法は、図６のステップＳ６０５と同様であるので、説明を省略する。
【００８１】
ステップＳ７０４で、制御部３０は、取得位置インデックスＲＥＩＮｄｅｘ（ｔ）を特定する。取得位置インデックスＲＥＩｎｄｅｘ（ｔ）とは、時刻ｔにおける現在位置から水平方向前方の水底取得位置ｘａ（ｔ）に対応するバッファを示す数値であり、ｎ個のバッファ１０−１から１０−ｎのいずれか１つを特定する１〜ｎのいずれか１つの値である。例えば、この値が２であれば、図４に示されるバッファ１０−２が特定される。取得位置インデックスＲＥＩｎｄｅｘ（ｔ）は、下記の式にて表される。
ＲＥＩｎｄｅｘ（ｔ）＝
ＡＵＶＩｎｄｅｘ（ｔ）＋ｉｎｔ［ｘａ（ｔ）／（Ｖｍｉｎ・Ｔ）］      （５）
ここで、水底取得位置ｘａ（ｔ）として、水中航走体１の水平方向前方の任意の取得位置を代入することで、任意の水底取得位置に対応する取得位置インデックスＲＥＩｎｄｅｘ（ｔ）が算出される。
【００８２】
ステップＳ７０５で、制御部３０は、ステップＳ７０４にて特定された取得位置インデックスＲＥＩｎｄｅｘ（ｔ）が、整数ｎを超えているかどうかを判定し、整数ｎを超えていると判定した場合はステップＳ７０６に処理を進める。制御部３０が、取得位置インデックスＲＥＩｎｄｅｘ（ｔ）が整数ｎを超えていないと判定した場合、ステップＳ７１１に処理を進める。
【００８３】
ステップＳ７０６で、制御部３０は、ステップＳ７０４にて特定された取得位置インデックスＲＥＩｎｄｅｘ（ｔ）から整数ｎを減算する処理を行う。図４にて示したように、バッファ部１０は、１０−１から１０−ｎまでのｎ個のバッファを備えるものである。したがって、ｎより大きい数値が取得位置インデックスＲＥＩｎｄｅｘ（ｔ）として特定された場合、それに対応するバッファが存在しないこととなる。そこで、取得位置インデックスＲＥＩｎｄｅｘ（ｔ）がｎより大きい数値となる場合には、ｎを減算して、１０−１から１０−ｎまでのｎ個のバッファのいずれかを特定可能とする。
【００８４】
ステップＳ７１１で、制御部３０は、ステップＳ７０４にて特定された取得位置インデックスＲＥＩｎｄｅｘ（ｔ）が、０より小さい負の値かどうかを判定し、負の値であると判定した場合はステップＳ７１２に処理を進める。制御部３０が、取得位置インデックスＲＥＩｎｄｅｘ（ｔ）が負の値でないと判定した場合、ステップＳ７０７に処理を進める。
【００８５】
ステップＳ７１２で、制御部３０は、ステップＳ７０４にて特定された取得位置インデックスＲＥＩｎｄｅｘ（ｔ）に整数ｎを加算する処理を行う。図４にて示したように、バッファ部１０は、１０−１から１０−ｎまでのｎ個のバッファを備える。したがって、負の値が取得位置インデックスＲＥＩｎｄｅｘ（ｔ）として特定された場合、それに対応するバッファが存在しないこととなる。そこで、取得位置インデックスＲＥＩｎｄｅｘ（ｔ）が負の値となる場合には、ｎを加算して、１０−１から１０−ｎまでのｎ個のバッファのいずれかを特定可能とする。
【００８６】
ステップＳ７０７で、制御部３０は、ステップＳ７０４〜Ｓ７０６で特定されたバッファを参照し、水底深度ｈを格納済みであるかどうかを判定する。制御部３０は、格納済みであると判定した場合はステップＳ７０８へ処理を進め、格納済みでないと判定した場合は図８に示す処理を終了させる。
【００８７】
ステップＳ７０８で、制御部３０（取得手段）は、取得位置インデックスＲＥＩｎｄｅｘ（ｔ）により特定されたバッファから、水底深度ｈを取得する。また、ステップＳ７０９で、制御部３０（取得手段）は、取得位置インデックスＲＥＩｎｄｅｘ（ｔ）により特定されたバッファから、機体深度ｄを取得する。
そして、ステップＳ７１０で、制御部３０（補正手段）は、下記の式に基づいてステップＳ７０８にて取得された水底深度ｈを補正する。
ｈ＝ｈ＋ｄ−ｄ（ｔ）      （６）
式（６）の右辺のｈには、ステップＳ７０８でバッファから取得された水底深度ｈが代入される。式（６）の右辺のｄには、ステップＳ７０９でバッファから取得された機体深度ｄが代入される。式（６）の右辺のｄ（ｔ）には、ステップＳ７０１で検出された機体深度ｄ（ｔ）が代入される。このようにすることで、ステップＳ７０４にて特定された取得位置インデックスＲＥＩｎｄｅｘ（ｔ）に対応するバッファに水底深度ｈを格納した際の機体深度ｄと、現在の機体深度ｄ（ｔ）とに差があったとしても、その差を補正することができる。
【００８８】
なお、制御部３０は、図６および図７に示される水底深度の格納方法の各処理と、図８に示される水底深度の取得方法の各処理を、それぞれ並列に実行することができる。つまり、制御部３０は、図６および図７の処理を実行して水底深度をバッファに格納しつつ、図８の処理を実行して任意の位置の水底深度を取得することができる。
また、図８の各処理により取得される水底深度は、種々の用途に利用可能である。例えば、プロペラ駆動部４０、前方水平舵駆動部４１、後方水平舵駆動部４２、前方垂直舵駆動部４３、後方垂直舵駆動部４４が、各部の制御対象となる駆動モータを駆動するためのパラメータとして利用可能である。
【００８９】
以上説明したように、第１実施形態の水中航走体１は、水底深度ｈ（ｔ）をバッファ部１０に格納する際には現在位置から水底検出位置ｘｄ（ｔ）までの水平距離に基づいて特定されたバッファに水底深度ｈ（ｔ）を格納し、水底深度を格納手段から取得する際には現在位置と水底取得位置ｘａ（ｔ）までの水平距離に基づいて特定されたバッファから水底深度ｈを取得することができる。したがって、複数の水底検出位置ｘｄ（ｔ）に対応する複数の水底深度ｈ（ｔ）を格納する複数のバッファを備えた水中航走体１において、バッファへの水底深度ｈ（ｔ）の格納を制御する制御部３０の処理負荷や、バッファ自身の格納速度等の制約によらず、水中航走体１の現在位置に応じた適切な水底深度ｈを取得することができる。
【００９０】
また、第１実施形態の水中航走体１は、バッファ部１０が、水中航走体１の最低航走速度Ｖｍｉｎに一定のサンプリング周期Ｔを乗算して得られる最低検出間隔を隔てた複数の位置における水底深度を格納可能な複数のバッファを有する。したがって、水中航走体１が最低航走速度Ｖｍｉｎで航走する場合であっても、現在位置から水底検出位置ｘｄ（ｔ）までの水平距離に基づいて特定されたバッファに水底深度ｈ（ｔ）を格納することができる。
【００９１】
また、第１実施形態の水中航走体１は、連続して水底深度が検出される第１の水底検出位置ｘｄ１と第２の水底検出位置ｘｄ２の間の第３の位置に対応するバッファを特定する。また、特定されたバッファに第１の水底検出位置ｘｄ１における第１の水底深度ｈ１と第２の水底検出位置ｘｄ２における第２の水底深度ｈ２により補間された第３の水底深度ｈ３が格納される。したがって、水中航走体１が最低航走速度Ｖｍｉｎより速い速度で航走する場合に、水底深度ｈ（ｔ）が検出されなかった位置における水底深度を、その前後の位置における水底深度に基づいて適切に補間することができる。
【００９２】
また、第１実施形態の水中航走体１は、水中航走体１の現在位置における水面から水中航走体１までの深度を示す機体深度ｄ（ｔ）を検出し、検出した機体深度ｄ（ｔ）を水底深度ｈ（ｔ）とともに格納する。また、水底深度ｈを取得する際には、水底深度ｈとともに機体深度ｄを取得して、これらの情報と現在位置における機体深度ｄ（ｔ）に基づいて水底取得位置ｘａ（ｔ）における水底深度ｈを補正する。このようにすることで、水底深度ｈ（ｔ）を検出して格納した時点と、現在とで水中航走体１の機体深度ｄが変化している場合であっても、水底取得位置ｘａ（ｔ）における水底深度ｈを適切に補正することができる。
【００９３】
また、第１実施形態の水中航走体１は、複数のバッファが、リングバッファにより構成されるので、限られたメモリ資源を有効に活用可能な水中航走体１を提供することができる。
【００９４】
＜他の実施形態＞
第１実施形態では、書込位置インデックスＷＲＩｎｄｅｘ（ｔ）として、バッファ部１０が備えるｎ個のバッファのいずれか１つを特定するが、他の態様であっても良い。例えば、ｎ個のバッファの隣接する２つ、あるいは３つ等、複数のバッファを特定するようにしても良い。この場合、特定された複数のバッファに対して、同一の水底深度、同一の機体深度を格納するものとする。すなわち、書込位置インデックスＷＲＩｎｄｅｘ（ｔ）として、バッファ部１０が備えるｎ個のバッファの少なくともいずれか１つを特定すればよい。このようにすることで、第１実施形態のステップＳ６１４からステップＳ６１７における補間処理を実行せずに、複数のバッファに水底深度および機体深度を格納することができる。
【００９５】
同様に、第１実施形態では、取得位置インデックスＲＥＩｎｄｅｘ（ｔ）として、バッファ部１０が備えるｎ個のバッファのいずれか１つを特定するが、他の態様であっても良い。例えば、ｎ個のバッファの隣接する２つ、あるいは３つ等、複数のバッファを特定するようにしても良い。この場合、特定された複数のバッファから読み出した、複数の水底深度、複数の機体深度をそれぞれ読み出した後にそれらを平均化する等の処理を加え、１つの値を得るようにすれば良い。すなわち、取得位置インデックスＲＥＩｎｄｅｘ（ｔ）として、バッファ部１０が備えるｎ個のバッファの少なくともいずれか１つを特定すればよい。このようにすることで、任意の水底取得位置の水底深度を取得するにあたって、水底取得位置の近傍の水底深度や機体深度を考慮して適切な水底深度を算出することができる。
【００９６】
第１実施形態では、水底深度ｈ（ｔ）は、水底検出位置ｘｄ（ｔ）における水底検出位置ｘｄ（ｔ）から水底位置までの距離を示すものであったが、他の態様であっても良い。例えば、水底深度ｈ（ｔ）が、水底検出位置ｘｄ（ｔ）における水面から水底までの距離を示すものであってもよい。この場合、第１実施形態における水底深度ｈ（ｔ）と機体深度ｄ（ｔ）を合算した距離が、他の実施形態での水底深度ｈ（ｔ）となる。
【符号の説明】
【００９７】
１    水中航走体
２    機体
３    推進器
４    前方水平陀
５    後方水平陀
６    前方垂直陀
７    後方垂直陀
８    超音波送受波器
１０  バッファ部
３０  制御部
Ａ１  機体軸
Ａ３  前方水平軸
Ａ４  後方水平軸
【図１】
2013178170.tif 000003
【図２】
2013178170.tif 000004
【図３】
2013178170.tif 000005
【図４】
2013178170.tif 000006
【図５】
2013178170.tif 000007
【図６】
2013178170.tif 000008
【図７】
2013178170.tif 000009
【図８】
2013178170.tif 000010