以下、図面を参照して本発明を詳細に説明する。本発明では、予め所定の送信回数及び送信間隔を設定しておき、当該設定に従うパルス状の音波を送信端末がスピーカ等にて送信し、受信端末がマイク等にて受信し録音する。各パルス音波は波形情報が送信端末及び受信端末で既知であるものとする。
受信端末は前記既知の波形情報を利用して、相関処理負荷低減の手法を用いて相関関数を算出することによって、録音の中から送信端末が送信したパルスの受信時刻を求め、当該受信時刻を送信端末に伝える。送信端末は当該受信時刻を用いて、自身で保持していた送信時刻との比較により、受信端末との位置関係を推定する。推定される位置関係としては、後述するように端末間の距離や端末同士の相対的な向きなどがある。
以下、上記のような位置関係の推定を行う側と受ける側という意味で、音波の送信端末を探索側(端末)、音波の受信端末を被探索側(端末)と呼ぶこととする。
図1に本発明による相関処理負荷低減の原理を、前述の通常手法を示す図12と対比させる形で示す。図12の(a)及び(b)がそれぞれ、図1の(A)及び(B)に対応する。図1(A)がリファレンス信号であり、図12と同様にサンプル長がref_sizeであるが、相関処理(1回目)を行うに際しては、その各時刻t=0,1,2,3,…ref_sizeの全ての点で信号値を利用するのではなく、より粗いサンプリング間隔で、例えば(A)に示すように3点毎に、t=0,3,6,9…と間引いた値を利用する。
また、図1の(B)に実線で示す受信信号も、リファレンス信号と等しい粗さのサンプリング間隔で、例えば3点毎に間引いた値をサンプル長rec_sizeに渡って用いて、相関処理を行う。よって、図12及び式(1)では全ての点t=0,1,2,…rec_sizeについて与えられていた相関値correlation(t)が、図1(B)に示すように、t=0,3,6,…と例えば3点毎に求められる。
また、当該相関処理を行うに際してさらに、図1の(B)に点線で示すように、ウィンドウサイズw_sizeは、リファレンス信号(A)のサンプル長ref_sizeよりも短い値とする。すなわち、必ずしもリファレンス信号の全長分を相関処理には用いず、例えば信号開始時から所定割合(例えば半分すなわち、w_size=ref_size/2)を用いるなどする。
さらに、図1(A)(B)では示されていないが、同図の縦軸方向に相当する、信号値のデータビット数も、横軸のサンプリング間隔を粗く取ったのと同様に、粗く取る。以上のように、本発明の相関処理負荷低減では、最初に、サンプリング間隔、ウィンドウサイズ及びデータビット数という3つのパラメータを計算負荷を減らすよう調整してから、受信信号の全長に渡って1回目の相関処理を行い最大値を与える箇所を求め、図1の(B)の(1)に示すように、当該箇所をピーク位置の候補(暫定位置)とする。
次に、(2)に示すようにピーク位置候補(暫定位置)を含む所定の周辺範囲内の受信信号に対して、再度、相関処理を行う。当該2回目の相関処理においては、サンプリング間隔及びデータビット数は元の細かい値を用い、且つウィンドウサイズもリファレンス信号のサンプル長に戻す。すなわちt=0,3,6…ではなく、t=0,1,2…,ref_sizeとして相関値を求める。図1(2)の相関処理の図12の(b)との相違点として、受信信号を全長に渡って用いるのではなく、(1)で求めたピーク位置周囲に限定する、という点がある。そして、当該2回目の相関処理で求めた最大値ピークを、(3)に示すように、最終的に求められるピーク位置とする。
なお、2回目の相関処理における「細かい」サンプリング間隔及びデータビット数には、基本的には、探索側端末から音波を再生して送信するのに必要な所与の波形情報を記述するために与えられている、所定のサンプリング間隔及び所定のデータビット数を用いればよい。1回目の相関処理における粗いサンプリング間隔及びデータビット数とは、このような2回目の相関処理における値との比較で「粗い」値として与えられる。
なお、本発明では、3つのパラメータすなわちサンプリング間隔、ウィンドウサイズ及びデータビット数を全て調整するものとして説明するが、調整するのはこのうち少なくとも1つ(あるいは2つ)のパラメータであってもよい。
また、図1(及び図12)では相関処理負荷低減の説明にフォーカスするため、送信パルスは1個のみであると暗に仮定して説明した。本発明による位置推定のうち、距離推定は単一パルスでも実施可能であるが、方向推定には複数のパルスが必要となる。複数のパルスの抽出に関しては後述するが、当該相関処理負荷低減の手法を用いた上で各々のパルスを抽出する。なおまた、図1(及び図12)における相関関数の波形は、負荷低減処理を説明するための便宜上の波形に過ぎない。
以下、上記のような概要による相関処理負荷低減が役立つ、探索側端末と被探索側端末との位置関係の推定に関して説明してから、相関処理負荷低減の詳細について説明する。
図2は本発明に係る探索側端末又は被探索側端末として機能することのできる、一般的な携帯情報端末(スマートフォン、タブレット、携帯電話など)の構成の一例を示した機能ブロック図である。
携帯情報端末100は、制御部101、記憶部102、入力部103、表示部104、通信部105、マイク(受波器)107及びスピーカ(送波器)108を含む音声入出力部106、計時部109、付加機能部110並びにバス200を備える。
制御部101は各部および各部間の制御を行い、記憶部102は当該制御部等の動作に必要な一時的又は固定的な情報を記憶する。入力部103はキーパッドやタッチパネルなどを含みユーザ入力を受け取る。表示部104はディスプレイなどを含み、各種情報をユーザに向けて表示する。通信部105はアンテナ等を含み各種の形態における無線通信を担う。
音声入出力部106はマイク107とスピーカ108とを含み、携帯情報端末100が通話機能を備える場合であれば通話時に利用され、その他、本発明で実施される音声データの再生や録音などにも用いられる。計時部109は時計の役割を果たす。付加機能部110はその他各種のユーザ用途に応じた機能を提供する。バス200は各部間のデータ転送を担う。なお、付加機能部110は制御部101に含まれていてもよい。
以下に説明するように、本発明の探索側端末及び被探索側端末はこのような一般的な携帯情報端末100を用いて部分的機能として、または追加的機能として実現できる。また以下の説明より明らかなように、本発明の探索側端末及び被探索側端末の両端末機能を一端末において同時に備え、探索側/被探索側の各立場となる場合毎に機能を使い分ける端末も一般的な携帯情報端末100にて実現できる。なおまた、携帯情報端末100は、同等の機能を実現できる一般の情報端末(PCなど)であってもよい。
図3は本発明に係る探索側端末と被探索側端末との、位置関係の推定を行う際の関係を含んだ機能ブロック図である。探索側端末10は相対方向推定部11、向き取得部12、入力部13、無線通信部14、音波設定・送信部15、距離推定部16及びこれら各部間のデータ転送を担うバス17を備える。被探索側端末20は無線通信部21、音波受信・識別部22、入力部23及びこれら各部間のデータ転送を担うバス24を備える。
当該機能ブロック図において、推定する位置関係として、探索側端末から見た被探索側端末の相対方向を推定する場合は距離推定部16を利用せずに相対方向推定11及び向き取得部12を利用する。距離を推定する場合には逆に、相対方向推定11及び向き取得部12を利用せず、距離推定部16を利用する。
以下、相対方向の推定を主に説明し、適宜、距離の推定を行う場合も追加で説明することとする。図4は相対方向推定の概要を説明する図である。図4では屋外の待ち合わせ広場といったような、音波到達可能な例えば数十メートル程度の平面的な場所領域にて本発明に係る探索側(a)の端末から被探索側(b)の端末の方向を推定する。なお、ここで音波到達可能とは、広場にいる人などの(音にとっての)障害物による減衰などによる制約、図2の携帯情報端末100におけるマイク107の制約、当該携帯情報端末100で利用可能なバッテリによる制約、当該携帯情報端末100を利用するユーザが不快にならないような範囲での音を用いることによる制約(もし超音波を利用するならば、当該制約はない)、などによって定まるものである。
図4においてまず、探索側(a)と被探索側(b)は無線通信可能であり、且つ当該無線により今から(a)から(b)に対して相対方向推定を行うということを互いに認識している状態にあるとする。
次に(a1)に示すように、例えば探索側端末のユーザが探索側端末を手に持って肘の回りに回転させる等して探索側端末をほぼ水平面上にスウィングさせる。このとき、図示しているように回転の時間経過と共に、例えば5回といったような複数回のパルス状の音波S(1)〜S(5)を探索側端末より送信する。そして探索側端末は各音波を発生した各時刻と各時刻における探索側端末の方向とを記録する。
被探索側(b)の端末では当該方向推定の開始にあたって、(a1)にて探索側(a)の送信する音波パルスの所定の送信回数および間隔の情報を探索側(a)より受け取り、適宜録音を開始し、さらに音波送信を終えた旨の通知を探索側(a)より受け取って録音を終了する。被探索側(b)は録音より既知のパルス波形情報を用いて相関関数のピーク箇所を送信回数分求め、各音波S(1)〜S(5)に対応する受信時刻を求め、探索側(a)に当該時刻を無線送信する。
探索側(a)は受信時刻を受け取って受信間隔を算出し、記録してある送信時刻より算出される送信間隔と比較し、相対方向を推定する。図5に当該推定に用いる各音波送信時の端末向き、送信間隔及び受信間隔の一例を示す。図5では音波S(1)、S(2)を送信した間の区間では送信間隔(100ms)のほうが受信間隔(99ms)より長く、それ以降の区間では逆の関係となっている。
図5の例における上記結果の得られるメカニズムは次の通りである。すなわち、図4に示すように、探索側(a)と被探索側(b)との相対方向および端末のスウィング領域の関係においてドップラー効果と同様の原理により、送信間隔より受信間隔が狭い区間(a2)[音波S(1)、S(2)送信区間]と送信間隔より受信間隔が広い区間(a3)[音波S(3)、S(4)、S(5)送信区間]との区別が生じるためである。
探索側(a)は送信間隔と受信間隔とのこのような原理による差異を抽出して、受信間隔と送信間隔との大小関係の逆転が生ずる方向である、音波S(2)とS(3)とを送信した間における端末の方向(45°と90°の間の方向)を被探索側(b)の存在する相対方向であると推定する。
なおまた、図4及び図5を用いて相対方向推定の場合を説明したが、距離を推定する場合には、図4のようなスウィングを加える必要はなく、より単純に次のようにすればよい。すなわち、距離推定を開始する旨の情報を探索側から被探索側へ無線で伝えて同期を取り、被探索側は録音を開始する。ここで特に、距離推定においては単に通信のための同期を取るだけではなく、両端末において所定のプロトコルを用いるなどして時刻を正確に同期させる。
探索側は所定回数及び間隔の音波パルスを送信し、当該各パルスの送信時刻を記録する。ここで距離推定においては、音波パルス送信時の探索側端末は静止させておけばよく、相対方向推定の場合のようにスウィング動作は不要である。むしろ受信間隔に誤差が生じるので、音波パルス送信時に探索側端末は極力動かさない方がよい。
被探索側は録音に対して相関処理を行い、送信パルスに対応する受信パルスを抽出し、録音にて記録されているその各受信時刻を探索側に返信する。ここで、相関処理により求められた受信時刻が妥当であるかの確認に、送信パルスに所定回数及び間隔が設けられているという情報を利用することもできる。探索側は送信/受信の順番が互いに対応する送信パルスと受信パルスとの記録時刻の差に音速を乗じることによって、被探索側への距離を推定する。当該乗ずる音速としては、例えば340m/sのように所定値を設けておけばよい。
図3(あるいは図2)に戻り、全体として上記図4及び図5のような相対方向推定又は距離推定を行う探索側端末10及び被探索側端末20の各機能ブロックについて説明する。
相対方向推定部11は各種情報を用いて被探索側端末20の存在している相対的な向きを推定する。距離推定部16も各種情報を用いて被探索側端末20との距離を推定する。相対方向推定部11及び距離推定部16は例えば付加機能部110に含めることができる。
向き取得部12は探索側端末10の向きを計時部109が取得する時刻と連動して取得し、例えば付加機能部110に含めることができる。一実施形態では向き取得部12は地磁気センサを用いて向きを取得する。
入力部13(探索側端末10側)はボタンなどからなり、ユーザが探索側端末10を起動して相対方向推定又は距離推定を開始させる旨や、推定の各段階の完了等をボタン押下などにより探索側端末10に通知する。入力部13には携帯端末100の入力部103を利用することができる。
探索側端末10の無線通信部14および被探索側端末20の無線通信部21はBluetooth(登録商標)、無線LAN、3G、Zigbee(登録商標)等により空間中やネットワーク等を介して互いに無線通信し、音波の送信時刻・送信間隔や受信時刻・受信間隔といったような相対方向及び距離推定に用いるデータや、推定フローにおける各段階での端末間同期信号を端末間で送受信する。無線通信部14および無線通信部21には、携帯端末100の通信部105を利用することができる。
音波設定・送信部15はパルス状音波の送信回数及び間隔を設定し、スピーカなどにより当該音波を設定通りに再生して送信する。音波設定・送信部15にはスピーカ108、付加機能部110及び計時部109などを利用することができる。実際に送信する音波には、例えば、一般的な携帯端末100の備えるスピーカ108により送信可能であるサンプル長が50ms、周波数帯が2-6kHzであるチャープ信号を用いることで、フェーディングの影響を低減できる。スピーカ/マイクが対応していれば、超音波を用いることもできる。
音波受信・識別部22はマイクなどにより音波を受信、録音し、無線通信部21を介してあらかじめ受け取っている送信回数・間隔などの情報を必要に応じて用いて、本発明の相関負荷低減を利用して当該録音の中から音波設定・送信部15より送信された音波パルスを抽出して受信時刻を求める。音波受信・識別部22にはマイク107、付加機能部110及び計時部109などを利用することができる。
入力部23(被探索側端末20側)は、位置関係推定の各段階における探索側端末10からの同期確認への応答などからなる被探索側端末20のユーザの入力を受け付けるが、当該入力部23を用いず被探索側端末20が自動応答してもよい。入力部23にも携帯端末100の入力部103を利用することができる。
図6に、図4で説明したような相対方向及び距離の両方の場合を含む位置関係の推定を行うための、探索側端末10と被探索側端末20との間のやりとりの手順を示す。また当該手順において探索側端末10で実施される各ステップのフローチャートを図7に、被探索側端末20で実施される各ステップのフローチャートを図8に示す。図6に示す各端末自身および端末間の手順には手順(1)〜(14)と番号を付しているが、対応するステップの説明においては図7および図8においても同様にブロック内に手順の番号(i)[i=1〜14]を付して参照している。当該手順の説明により、図3の各機能ブロックの処理の説明も行う。
手順(1)において、探索側端末10を持っているユーザが入力部13に含まれるボタンを押下することで、端末上にインストールされている位置関係推定アプリケーションが立ち上がるなどして、位置関係推定が開始される。手順(2)にて、被探索側端末20に対して無線通信を介して相対方向推定開始を通知し、被探索側端末20においても所定のアプリケーションを立ち上げるなど準備した後、承認の返信(ACK)を受ける。
手順(3)にて、音波設定・送信部15がパルス音波の送信回数及び間隔を決定する。相対方向の推定に際しては、前述のようにパルス送信間隔と受信間隔とで1ms程度の差が生ずることを積極的に利用する必要があるので、例えば次のように決定する。
n個のパルス状音波S(i) (i=1、2、…、n)を送信する際の(n-1)個の送信間隔I_t(i)(i=1、2、…、n-1)を不定期間隔とし、当該送信間隔を次式(2)を用いて決定する。
I_t(i)=rand(m)×50ms …式(2)
ここで、rand(m)はm以下の自然数をランダムに発生させる変数である。例えばm=3として、順次I_t(i)を定め、当該間隔の総和が所定値(例えば1sや500ms)を超えた時点を最後の音波パルスとして個数nを定める。このようにして、図5の例のような送信回数および間隔を定めることができる。あるいは同様に、何通りかこのような送信回数及び間隔を所定のものとして求めておき、2通り以上定めている場合はその中からランダムに選ぶようにしてもよい。式(2)のように乱数を用いずに、100ms間隔で5回といったように所定間隔及び所定回数を定めておいてもよい。距離推定の場合も、相対方向推定における上記のような手法で回数及び間隔を定めることができる。
なお、各音波パルス自体の情報は、図6の各手順自体の開始前に、あらかじめ探索側端末10及び被探索側端末20にて波形情報(パルス継続時間及び当該時間内での時間変化)として既知であり、上記n個のパルスは全て同じ波形のパルスであるとする。なおまた、当該パルスに用いる波形情報を複数種類設けておいて、n回同じ波形でパルスを送る際に、そのうちいずれの種類を用いるかを上記手順(3)にて決定して通知してもよい。
手順(4)にて、当該決定した送信回数及び間隔の情報を、被探索側端末20に無線送信する。なお、上記のように所定の波形情報を有する音波パルスに対して、毎回所定の範囲内でランダムに回数及び間隔を定めることにより、手順(12)の相関処理で複数パルスを検出した際、受信回数・間隔を送信回数・間隔と比較して誤検出を防ぐこともできる。被探索側端末20は受信確認メッセージ(ACK)を返信すると共に、手順(5)に進み音波受信・識別部22がマイクを起動して音波受信すなわち録音を開始する。
次の手順(6)〜(9)は、まず相対方向推定の場合から説明する。探索側端末10は受信確認(ACK)を受けると手順(6)にてユーザが入力部13のボタンを押下して方向推定のスウィング動作を開始する旨を探索側端末10に伝え、押下と同時にスウィング動作を加える。当該スウィング動作と共に手順(7)にて音波設定・送信部15によって、所定の波形情報を所定回数及び間隔を設けて再生した音波が発信されると共に、同時に手順(8)にて当該音波発生の各時点においてスウィング動作により変化している探索側端末10の向きを向き取得部12が取得する。
当該手順(6)後のスウィング開始と同時に手順(6)のボタン押下により起動される手順(7)及び手順(8)を行うことにより、探索側端末10において各音波パルス送信時刻と当該各時刻における端末の向きとが得られる。スウィングを終えると手順(9)にてユーザが入力部13のボタンを押下して探索側端末10にスウィング動作の終了を伝える。当該手順(9)は送信音波を全て送信した時点又はその所定時間後に探索側端末10が自動で終了判断するようにしてもよい。
以上、相対方向推定の場合について説明した手順(6)〜(9)につき、距離推定の場合にはスウィング動作を省略して、好ましくは静止状態で同様にして実行すればよい。距離推定の場合は、上記のボタン押下が探索側端末10に所定のパルス音波を発生させる合図となる。なお、距離推定の場合には前述の手順(2)の際に、ネットワーク・タイム・プロトコルなどを用いて、探索側端末10及び被探索側端末20の時計を正確に合わせておく。
手順(10)にて無線通信により探索側端末10より被探索側端末20に位置関係推定の終了(推定に必要な準備作業の終了)を通知し、被探索側端末20は確認応答(ACK)した後、手順(11)にてマイクを停止して録音(音波受信)を終了する。さらに被探索側端末20は手順(12)にて、予め既知の音波パルスの波形情報と自身での手順(5)~(11)における録音データとに対して音波受信・識別部22によって相関処理を行い、送信パルスに相当する箇所の受信時刻情報を抽出する。当該抽出処理の詳細については後述する。
手順(13)にて、当該抽出された受信時刻は探索側端末10に無線送信され、確認応答メッセージ(ACK)を返信する。手順(14)にて探索側端末10は送信した音波パルスの間隔あるいは時刻と、無線受信した受信時刻と、相対方向推定においては各送信時点における端末の向きとを用いて被探索側端末20の位置関係を推定する。当該推定は、相対方向推定であれば相対方向推定部11が、距離推定であれば距離推定部16が行う。
以上の手順(2)、(4)、(10)及び(13)における無線通信は、探索側端末10の無線通信部14及び被探索側端末20の無線通信部21を介して、必要に応じてその間にさらに所定のネットワークを介して行われる。
なお、本発明においては、上述のように探索側端末10と被探索側端末20とで位置関係推定を開始する旨を伝える同期処理を行うことによって、音波送信を行う時間区間を含みその他の余分な時間を極力含まない区間として手順(5)〜(11)間の録音が行われるため、被探索端末20側で音波受信・識別部22が録音から送信音波に対応する音を相関処理で識別抽出するのが容易になるという効果がある。
また以上図6の手順における探索側端末10の各ステップのフローチャートである図7を説明する。ステップS0にて相対方向推定開始するとステップS1[手順(1)]にて入力部13のボタンをユーザが押下する。ステップS2[手順(2)]では被探索側端末20に対して相対方向推定の開始を無線通知し、処理の同期を促す。ステップS3[手順(3)]では送信回数及び間隔を音波設定・送信部15が決定し、ステップS4[手順(4)]では当該決定情報(送信間隔など)を被探索側端末20に無線通知する。
ステップS5[手順(6)]に進みユーザによるスウィング動作開始の合図であるボタン押下を入力部13が検知する。ステップS5と同時に、相対方向推定の場合、ユーザが探索側端末10にスウィング動作を加える(距離推定では省略)と共に、ステップS6[手順(6),(7)]において設定通りの音波送信および端末向き取得を行う。相対方向推定の場合、スウィング動作を終えたユーザはステップS7[手順(9)]にて入力部13のボタンを押下することによりスウィング動作終了を探索側端末10に伝える。距離推定であれば単に音波送信終了を探索側端末10に伝える。前述のように当該ステップS7はユーザによるボタン押下ではなく音波送信終了後自動で行うようにしてもよい。
ステップS8[手順(10)]では無線通信により位置関係推定の終了(被探索側へ促す処理の終了)を被探索側端末20に伝える。ステップS9[手順(13)]では被探索側端末20が抽出した時刻情報を無線にて送信し、探索側端末10が受信する。ステップS10[手順(14)]にて送信時刻、受信時刻、(さらに相対方向推定であれば)取得向きに基づいて被探索側端末20の存在する相対方向又は該端末との距離を推定し、ステップS11にてフローは終了する。またステップS5、S7及びS9にてボタン押下が検出されなかった場合や、被探索側端末20から必要な情報が送信されてこなかった場合はフロー中にてエラーが発生したと判定し、再度ステップS1よりやり直す。
なお、図6および図7で探索側端末10に対するユーザのボタン押下として説明した部分は、入力部13が例えばタッチパネル等のその他のインタフェースであってもよく、同様に各種の開始合図などの入力検知として用いられる。相対方向推定の場合であれば、インタフェースとしては手順(6)のユーザ入力検知後に探索側端末10に余分な動作を加えることなく迅速且つスムーズにスウィング動作を開始でき、スウィング終了時も手順(9)にて探索側端末10に余分な動作を加えることなく迅速且つスムーズに端末にユーザ入力を伝えることのできるインタフェースが好ましく、ボタン押下はその一例である。
さらに以上図6の手順における被探索側端末20で実行される各ステップのフローチャートである図8を説明する。ステップS20で相対方向推定を開始すると、まずステップS21[手順(2)]にて探索側端末10からの位置関係推定開始通知すなわち同期リクエストを受信し、位置関係推定に応じられるよう準備を行い応答返信する。ステップS22[手順(4)]では探索側端末10より送信回数及び間隔の情報を無線にて受信し、当該情報は音波受信・識別部22に後の相関処理での抽出パルス数決定及び抽出結果確認のために渡される。その後ステップS23[手順(5)]にて音波受信・識別部22がマイクを起動し音波受信すなわち録音を開始する。ステップS24[手順(10)]にて探索側端末10より音波送信の終了通知を受信し、応答すると共に状態を同期させる。すなわちステップS25[手順(11)]に進んで音波受信・識別部22において起動したマイクを停止し、録音を終了する。
ステップS26[手順(12)]に進み、音波受信・識別部22はステップS22にて通知された送信回数に等しい個数のパルス受信箇所を、録音と既知の波形情報との相関処理により求める。また求めた受信箇所がステップS22にて通知された送信間隔と概ね等しいことを確認する。ステップS27[手順(13)]に進み、当該算出結果を探索側端末10に通知するとステップS28にてフローは終了する。また、当該フローにおいてステップS22、S24などにて、探索側端末10より推定フローが順調に進んでいる旨の情報を所定時間待っても受信できない場合にはエラーが発生しているので、再度ステップS21に戻る。
なお、被探索側端末20における、探索側端末10からの各種同期要求に対する応答の処理ステップS21[手順(2)のACK]、S22[手順(4)のACK]及びS24[手順(10)のACK]は、全て自動で行うようにしてもよい。また、当該位置関係推定の利用用途に応じて、最初のステップS21を被探索側端末20を持っているユーザによる承認の入力によって行うようにしてもよい。
次に、音波受信・識別部22において相関処理を行い、送信回数分の各受信時刻が算出できていて且つその受信間隔が概ね送信間隔に等しい前提で、相対方向推定部11が探索側端末10からみて被探索側端末20が存在する相対方向を推定する詳細につき説明する。なお、同様の前提の元で距離推定部16が両端末間の距離を推定する場合には、あるパルスの送信時刻と対応する受信時刻との差を求め、音速を乗ずればよい。
図4で概略的に説明したように、音波設定・送信部15が設定した音波を送信している間、同時に探索側端末10はユーザが当該端末を手に持つなどして概ね水平に且つ当該ユーザの腕の長さなどに対応する概ね一定の半径の円状に、当該ユーザの位置する静止位置を中心にスウィング動作を受ける。そして当該スウィング動作中の各パルス音波送信時における探索側端末10の向きが向き取得部12により時刻と共に取得される。
なお、当該スウィング動作が所定の半径を伴い端末の向き変化と共に位置移動があることは本発明が波源の移動によるドップラー効果に対応する原理を利用していることから必須である。たとえば端末を固定位置で回転させるだけでは位置移動が(ほとんど)ないので相対方向推定は困難となる。
当該スウィング動作に伴う音波送信終了後、被探索側端末20において上述の音波受信・識別部22の相関処理によって受信時刻が算出され、無線通信を介して相対方向推定部11に渡される。相対方向推定部11は当該受信時刻より受信間隔を求め、予め設定し音波受信・識別部22より送信した音波の送信間隔、および各パルス送信時刻に取得された向きを用いて、ドップラー原理に対応するメカニズムを利用して被探索側端末20の相対方向を推定する。すなわち、スウィング中に探索側が被探索側に近づいている区間に送信した音波の受信間隔は送信間隔より狭くなり、反対に遠ざかっている区間に送信した音波の受信間隔は送信間隔より広くなる。これより、両区間の境界となる音波を特定し、その音波を送信した際の端末向きを相対方向と推定できる。
具体的には次のように推定する。n個の音波S(i)(i=1、2、…、n)を送信した際の送信間隔をI_t(i)(i=1、2、…、n-1)、受信間隔をI_r(i)(i=1、2、…、n-1)、端末向きをD(i)(i=1、2、…、n)とし、相対方向RDは次式(3)で求められる。
RD=D(i+1) (iはI_t(i)>I_r(i)かつI_t(i+1)≦I_r(i+1)を満たす) …式(3)
ここで、被探索側端末20が探索側端末10をスウィングした方向の後ろ側に位置する場合、式(3)の条件を満たす端末向きは得られない。その場合は次式(4)により、受信間隔が送信間隔より広くなる区間と、受信間隔が送信間隔より広く区間の境界となる音波を特定し、その音波を送信した際の端末向きの真後ろを相対方向RDと推定する。
RD=D(i+1) (iはI_t(i)<I_r(i)かつI_t(i+1)≧I_r(i+1)を満たす) …式(4)
前述の図5のデータを例に相対方向推定を示す。5個の音波S(1)〜S(5)を送信し、各音波S(i)送信時における端末向きD(i)、音波S(i)とS(i+1)との送信間隔I_t(i)、受信音波R(i)とR(i+1)との受信間隔I_r(i)がそれぞれ図中に示すようになったとする。この場合、式(2)より相対方向RD=D(2)=45°と推定する。なおまた上記の例であれば推定方向はD(2)=45°とその次のD(3)=90°の間の方向、としてもよいが、一般には送信間隔を細かく取ることで既に探索側端末10側に角度のデータが存在してユーザに即座に結果表示できるD(2)(またはD(3))と決定しても問題はない。
ここで、相対方向推定により実現できる各種アプリケーション、サービスの一例として、オフ会の待合わせにおける相手特定支援を紹介する。SNS(Social Network Service)のオフ会等、ネットワーク上で仲良くなった人と実際に待合わせする場合に、面識がないため、待合わせ場所に無関係な人が複数いると、待合わせ相手を特定することが容易ではない。その際に、相手との相対方向を提供することで相手特定を支援することができる。
なお特に、こうした待ち合わせにおける相手の相対方向推定に際しては、ユーザは移動しながら立ち止まりつつ適宜相対方向推定を繰り返すことなどが想定されるので、結果が数秒以内で得られることが好ましく、本発明が有用となる。
次に、音波受信・識別部22による、パルス受信箇所を抽出するための前記手順(12)における相関処理について説明する。ここで前提として、次の各事項がある。探索側端末10は音波パルスの各々を、各々に共通の既知の波形情報を再生して送信している。つまり、例えば3回音波パルスを送信するのであれば、所定間隔を設けた上で3回全て同じ波形情報を再生して送信している。
当該波形情報はサンプル長をref_sizeとして、サンプリング間隔がs_interval_0、データビット数がd_bit_0によって与えられている。当該既知の波形情報は、例えば固定データとして、予め探索側端末10及び被探索側端末20にて保持されている。被探索側端末20では、当該既知の波形情報と同じサンプリング間隔s_interval_0及びデータビット数d_bit_0によって録音を行い、サンプル長rec_sizeの録音が得られている。
受信箇所抽出のための相関処理のフローチャートを図9に示す。当該相関処理は、図1によって原理を説明したように、相関処理負荷を低減しつつ、大体の受信時刻を算出してピーク位置の暫定位置を求める第一の抽出段階(ステップS31及びS32)と、当該暫定位置の周囲の所定範囲で第一の抽出段階における相関関数よりも細かい相関関数を用いて、ピーク位置を求める第二の抽出段階(ステップS33及びS34)からなる。
ステップS31では、1回目の相関処理を行うためのパラメータ、すなわちウィンドウサイズw_size_1、データビット数d_bit_1及びサンプリング間隔s_interval_1を決定する。そして、ステップS32で当該パラメータを用いて1回目の相関処理を行い、ピーク位置の暫定位置t_1を求める。
ステップS32を行うに際して、データビット数d_bit_1及びサンプリング間隔s_interval_1に従う形で前記波形情報が既知のリファレンス信号ref(t)、及び録音すなわち受信信号rec(t)を用意する。なお、前述のサンプリング間隔s_interval_0=1として、これをtのステップ幅の基準として用いることとする。すなわち、基準となるs_interval_0=1ではt=0,1,2,3,…と最も細かい時刻幅となる。リファレンス信号ref(t)及び受信信号rec(t)はまず、サンプリング間隔s_interval_0及びデータビット数d_bit_0として与えられているので、ステップS32を行う前に、変換を行う。
例えばサンプリング間隔s_interval_1=4と決定すると、リファレンス信号は変換前の{ref(t)|t=0,1,2,…ref_size}から{ref(t)|t=0,4,8,…ceiling(ref_size/4)}に変換される。受信信号も同様に、変換前の{rec(t)|t=0,1,2,…rec_size}から{rec(t)|t=0,4,8,…ceiling(rec_size/4)}に変換される。なお、ceiling(x)は天井関数であり、x以上の最小の整数を表す。以下、相関関数の数式内では次の慣用表記で天井関数を表す。
同様に、データビット数についても両信号共に変換前のd_bit_0からd_bit_1へと変換する。なお、代表的なデータビット数は32bit、16bit及び8bitと種類が限られているので、各ビット数に対するリファレンス信号ref(t)を予め用意しておき、変換の手間を省いてもよい。受信信号rec(t)については、録音段階では最大データビット数(d_bit_0)で用意しておき、d_bit_1が当該最大データビット数よりも小さい場合には動的に変換する。
以上、各パラメータに従う信号を準備してから、ステップS32の1回目の相関処理を行う。すなわち、次の式(5)のように1回目の相関関数correlation_1(at)を求めて、その最大値を与える箇所t_1を求めてピーク位置の暫定位置とする。
ここで式(5)にて、
a=s_interval_1
t=0,1,2,…,ceiling(rec_size/a)
すなわち、式(5)のように、サンプリング間隔s_interval_1毎に、リファレンス信号ref(t)のうちウィンドウサイズw_size_1分の部分と受信信号rec(t)の全長rec_sizeとの相関関数を求める。なお、リファレンス信号のうちウィンドウサイズw_size_1分の部分を切り出すに際しては、任意の継続部分を切り出すことができ、式(5)ではリファレンス信号の開始箇所を含む切り出しの場合を示しているが、式(5)の場合に限定されず任意の継続部分を切り出すようにしてもよい。また式(5)では表現されていないが、前述の通り当該相関関数は決定したデータビット数d_bit_1にて求める。
次に、ステップS33では、2回目の相関処理を行うためのパラメータ、すなわちウィンドウサイズw_size_2、データビット数d_bit_2及びサンプリング間隔s_interval_2を決定する。そして、ステップS34で当該パラメータを用いて、ピーク位置の暫定位置t_1の周囲で2回目の相関処理を行うことでピーク位置t_2を求める。
1回目と2回目のパラメータの関係は次の通りである。
w_size_1<w_size_2, s_interval_1>s_interval_2, d_bit_1<d_bit_2
また2回目のパラメータと、リファレンス信号及び録音の最初の状態のパラメータとの関係は次の通りである。
w_size_2≦ref_size, s_interval_2≧s_interval_0, d_bit_2≦d_bit_0
最も受信時刻を正確に算出するには、上記不等式の全てで等号となるよう2回目のパラメータを決定すればよい。すなわち、最初にリファレンス信号を与えるために用いている所定のサンプリング間隔及びデータビット数を2回目の相関関数算出時に利用し、ウィンドウ幅は通常通りリファレンス信号のサンプル長に合わせればよい。基本的には当該最も正確な算出が可能なパラメータを用いればよい。しかし、複数のパルスを抽出する必要がある場合など、2回目の相関関数もある程度計算負荷を下げるように調整してもよい。
以上のように決定したパラメータに従い、ステップS34を行うに際して、前述のステップS32の前処理の説明と同様に、データビット数d_bit_2及びサンプリング間隔s_interval_2に従う形で前記波形情報が既知のリファレンス信号ref(t)、及び録音すなわち受信信号rec(t)を用意する。
ステップS34では、2回目の相関処理を行う。すなわち、次の式(6)のように2回目の相関関数correlation_1(bt)を求めて、その最大値を与える箇所t_2を求めてパルスの受信時刻とする。
ここで式(6)にて、
b=s_interval_2
相関関数を求める範囲は、暫定位置t_1を中心とする幅2wの所定範囲であり、
|bt−t_1|≦w すなわち、
t=t_1−ceiling(w/b), t_1−ceiling(w/b)+1,…,t_1,…, t_1+ceiling(w/b)1
すなわち、式(6)のように、サンプリング間隔s_interval_2毎に、リファレンス信号ref(t)のうちウィンドウサイズw_size_2分の部分と、受信信号rec(t)のうち暫定位置t_1を中心とする所定範囲の部分との相関関数を求め、最大値を与える箇所t_2を求め、最終的な音波受信箇所とする。リファレンス信号からウィンドウサイズ分を切り出すに際しては1回目の相関関数の説明と同様に任意の継続部分を用いることができる。
なお、2回目の相関関数を前述のように最も精度よく計算する場合は、次の式(7)のようになる。
ここで式(7)にて、
t=t_1−w, t_1−w+1,…, t_1,…, t_1+w
図10は、本発明の上記図9のフローによる相関処理負荷低減の効果の具体例を示す図表である。ここでは、式(1)で説明した通常の手法(一般的な方法)と、特許文献1に開示された方法(特許文献1の方法)と、上記本発明による方法(本願の方法)とを、同一のリファレンス信号及び同一の受信信号に適用した結果を比較してある。
当該各信号は、サンプリング周波数44.1kHzで与えてあり、リファレンス信号のサンプル長ref_sizeは2210個(50ms相当)、受信信号のサンプル長はrec_size221000個(5秒相当)である。当該パラメータをそのまま未調整で用いてパルス受信時刻を求めた、「一般的な方法」では所用時間53秒、乗算回数がrec_size*ref_sizeとなる。
「特許文献1の方法」では、inteval=50、range=500とすることで所要時間が5.8秒に低減され、乗算回数が「一般的な方法」の0.025倍に減っている。
しかし「本願の方法」ではさらに、所要時間及び乗算回数が低減される。すなわち、所要時間が3.2秒となり、乗算回数が「一般的な方法」の0.015倍に減っている。当該例では、1回目の相関処理でw_size_1=ref_size/10すなわちウィンドウサイズをリファレンス信号のサンプル長の1/10に、サンプリング間隔を10に(サンプリング周波数を1/10に)設定してピーク暫定位置を求める。そして、2回目の相関処理で、w_size_2=ref_sizeすなわちウィンドウサイズをリファレンス信号のサンプル長に一致させ、サンプリング間隔を1にして(元のサンプリング周波数に戻して)設定し、ピーク暫定位置を中心とした500サンプル範囲の相関関数を求めている。
なお、全ての方法につき算出はandroid2.1スマートフォンで実施しており、データビット数に関しては、「一般的な方法」、「特許文献1の方法」及び「本願の方法」における2回目の相関処理にて32bitであり、「本願の方法」における1回目の方法にて16bitである。
図9の説明では、1つの音波パルスに対する受信時刻を求める場合として説明した。本発明の相対方向推定では所定回数の音波パルスを用いるので、対応する複数の受信時刻を求める必要がある。この場合、次のようにしてステップS32の暫定位置t_1を送信音波パルスの所定送信回数分求め、それぞれにつき最終的なピーク位置t_2を求める。
すなわち、一実施形態ではステップS32の1回目の相関関数において、包絡線を求め、当該包絡線のピークの値が大きい方から順に所定の送信回数分の暫定位置t_1を求める。包絡線は正負両側に生じるが、値の大きい方すなわち正の側の包絡線を用いればよい。
あるいは別の一実施形態では、ステップS32の1回目の相関関数において、相関値が最大となる箇所を1個目の暫定位置として求め、当該暫定位置から所定範囲分だけ離れている範囲で、最大値を与える箇所を2個目の暫定位置として求め、さらに1番目及び2番目の暫定位置の各々から所定範囲だけ離れている範囲で、最大値を与える箇所として3個目の暫定位置を求め、以下同様にして所定の送信回数に個数が達するまで暫定位置を求める。
すなわちk個目の暫定位置は、1,2,…k-1個目の暫定位置の各々から所定範囲だけ離れている範囲で、最大値を与える位置として求める。ここで、離すべき所定範囲としては例えば、暫定位置とされた箇所を中心として幅が所定の複数の送信間隔のうちの最小値となる範囲を、以降のピーク探索から除外するという形で設定することができる。
一般に、相関関数において音波パルス1個の受信箇所に相当する最大値ピークの周囲には、値が徐々に減ずるサブピークが存在するので、複数の音波パルスの各受信箇所を正しく区別して求めるには、このようなサブピークを避けて最大値を選ぶ必要がある。上記の二実施形態によって、サブピークを誤って選ぶことなく、各音波パルスの受信位置付近の暫定位置を選ぶことができる。
図11に、以上の二実施形態を例を用いて概念的に示す。当該例では、2つの音波を送信している場合を想定し、(a)に示すような1回目の相関関数が得られ、1個目の音波受信時刻がピーク(2)、2個目の音波受信時刻がピーク(3)であるとする。(a)に示すように、例えば、1個目の音波の受信部分はさらに受信時刻ではないが値がピーク(2)に近いサブピーク(1)を有する場合がある。
この(a)の例において最大値から順に送信回数分のピークを求めると、誤ってピーク(2)と(1)とが求められ、求めるべき(3)が得られない。そこで前述のように一実施形態では、(b)に示すように相関関数の包絡線(正の側)を取ってそのピークを大きい方から順に送信回数の2個分求めると、ピーク(2)に相当する包絡線ピーク(2b)と、ピーク(3)に相当する包絡線ピーク(3b)とが得られ、サブピーク(1)の誤検出を防ぐことができる。
また前述のように別の一実施形態では、(c)に示すように、まず相関関数の最大値を与えるピーク(2)を求める。そして、次に2番目の最大値を求める際に、(2)を含む所定範囲(2c)を探索範囲から除外することで、2番目の最大値(探索範囲内では1番目の最大値)として、ピーク(3)が得られ、やはり同様にサブピーク(1)の誤検出を防ぐことができる。ここで、所定範囲(2c)には例えば、送信間隔はパルス幅よりも充分広いという前提のもと、送信間隔のうちの最小値を設定することができる。
また、上記所定範囲(2c)は、既に求めた暫定位置(2)等を用いて次の2回目の相関関数によりピーク位置を確定させる際に用いる、各暫定位置における受信波形の範囲同士が重ならないように設定することもできる。
あるいはそもそも、図11のような上記二実施形態の処理を経ずに、各音波パルス同士がその他のノイズ等の影響を受けず互いに同じような波形で受信されるような状況が想定される場合であれば、単純に相関値の大きい方から順に所定の送信回数分のピーク位置を暫定位置として求めてもよい。
以上のような各実施形態により、ステップS32の1回目の相関関数で送信回数分の暫定位置を求めた後、ステップS34の2回目の相関関数については、各々の暫定位置の周辺の所定範囲で相関値の最大値を与えるピーク位置として、t_2の各々を求めればよい。当該所定範囲も、送信間隔はパルス幅よりも充分狭いという前提のもと、各暫定位置を中心として幅(すなわち、前述の式(6)や(7)における幅2w)が送信間隔の最小値となる範囲を用いることができる。
以上、本発明によれば音波パルスを用いた端末間の位置推定に際して必要となるパルス抽出負荷を低減し、両端末が携帯情報端末などで機能的な制限がある場合でも、ほぼリアルタイムの位置推定を行うようことができる。
また本発明によれば上記のような制限を課せられた端末間で利用可能な音声入出力デバイスを用いて、位置推定の一種として有用な端末間の相対方向の推定をほぼリアルタイムで行うことができる。特に当該方向推定は、特殊なハードウェア等を必要とせず、通常の携帯端末で通話用に利用される単一のマイク及び通話用に利用される通常のスピーカで実施可能である。