以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。第1の実施の形態は、加速度センサまたは地磁気センサを用いて、スピーカの向きを検出できるようにしたスピーカ装置である。
図1は、第1の実施の形態に係るスピーカ装置の一例を示す図である。スピーカ装置10は、スピーカ11、第1のモータ12、第2のモータ13、加速度センサ14、地磁気センサ15、および回転制御装置16を有している。
スピーカ11は、例えば超指向性を有するパラメトリックスピーカである。
第1のモータ12は、水平な第1の回転軸を中心としてスピーカ11を回転させる。水平な第1の回転軸を中心とする回転は、重力の方向(垂直とも呼ばれる)と平行な平面内での回転となるため重力の方向の回転と呼ぶこともできる。
第2のモータ13は、重力の方向と平行な第2の回転軸を中心としてスピーカ11を回転させる。重力の方向と平行な第2の回転軸を中心とする回転は、水平平面内での回転となるため水平方向の回転と呼ぶこともできる。
加速度センサ14は、所定の軸方向の加速度を測定する。図1の例では、加速度センサ14は、X,Y,Zの3軸方向の加速度を測定している。また加速度センサ14は、スピーカ11に伴って回転する位置に取り付けられている。そのためスピーカ11の向きに応じて、加速度センサ14で計測される重力加速度の方向が変わる。
地磁気センサ15は、スピーカ11に伴って回転する位置に取り付けられ、地磁気の方向を測定する。
回転制御装置16は、例えば記憶部16aと処理部16bとを有する。記憶部16aは、メモリまたはストレージ装置である。処理部16bは、プロセッサまたは演算回路である。記憶部16aには、例えば加速度センサ14から取得した加速度を示す情報、地磁気センサ15から取得した地磁気の方向を示す情報、原点方位を示す情報などを記憶する。また記憶部16aは、処理部16bが実行する処理を記述した回転制御プログラムを記憶することができる。例えば処理部16bは、記憶部16a内の回転制御プログラムを実行することで、スピーカ11の回転を制御する。すなわち、以下の説明において回転制御装置16が実行する処理は、処理部16bが回転制御プログラムを実行することによって実現される。
回転制御装置16は、第1のモータ12と第2のモータ13との回転を制御する。また回転制御装置16は、加速度センサ14の測定値に基づいて、スピーカ11の重力の方向の角度差を計算する。また回転制御装置16は、地磁気センサ15の測定値に基づいて、スピーカ11の水平方向の角度差を計算する。ここでスピーカ11の向きは、例えばスピーカ11の放射面前方(法線方向)である。スピーカ11の重力の方向の角度差は、例えばスピーカ11の向きと重力の方向との成す角(角度差)で表される。またスピーカ11の水平方向の角度差は、例えばスピーカ11の向きを水平にした場合のスピーカ11の向きと、予め設定された原点方位との成す角(角度差)で表される。
例えば回転制御装置16は、第1のモータ12に回転を指示し、指示に従った第1のモータ12の回転が停止した後に加速度センサ14から加速度を示す情報を取得する。そして回転制御装置16は、取得した加速度を示す情報に基づいて、スピーカ11の重力の方向の角度差(θy)を算出する。重力の方向の角度差(θy)の算出方法については、第2の実施の形態において詳細に説明する。
このようにして、スピーカ11の重力の方向の角度差が、加速度センサ14の測定値に基づいて検知可能となる。加速度センサ14は、例えば1つのIC(Integrated Circuit)チップに収まる大きさであり、実装場所についての自由度が高い。すなわち加速度センサ14を、スピーカ11に伴って回転する位置に取り付けることは容易である。従って、加速度センサ14の測定値に基づいてスピーカ11の重力の方向の角度差を検知できるようにしたことで、スピーカ装置10へのスピーカ11の向きの検知機能の実装が容易となっている。
また回転制御装置16は、スピーカ11の重力の方向の角度差に基づいて、スピーカ11の重力の方向の回転角と、スピーカ11の第1の回転指示の角度である第1の指定角度との誤差(第1の誤差)を算出することもできる。例えば回転制御装置16は、第1の指定角度だけスピーカ11を第1の回転軸を中心として回転させる第1の回転指示を第1のモータ12に対して出力する。回転制御装置16は、回転終了後のスピーカ11の重力の方向の角度差に基づいて、第1の回転指示に応じたスピーカ11の回転角と第1の指定角度との第1の誤差を算出する。例えばスピーカ11が重力の方向の向いている状態が初期状態の場合において、回転制御装置16は、初期状態からの第1の回転指示を第1のモータ12に対して出力する。この場合、回転制御装置16は、回転終了後のスピーカ11の重力の方向の角度差と第1の指定角度との差分を、第1の誤差として算出する。
これにより、スピーカ11を重力の方向に回転させたときの回転誤差を容易に算出可能となる。第1の誤差を算出した場合、回転制御装置16は、その第1の誤差を減少させる方向へ第1の誤差の分だけスピーカ11を回転させる補正回転指示を、第1のモータ12に出力してもよい。これにより、回転誤差が補正され、スピーカ11の向きを目的の方向に正確に合わせることが可能となる。
回転制御装置16は、第1の誤差の補正を、例えばスピーカ11の向きを原点復帰(原点方向に向けること)させる際に実施する。原点復帰の場合、原点復帰のための回転指示後のスピーカ11の重力の方向の角度差が、第1の誤差となる。
回転制御装置16は、スピーカ11の水平方向の角度差の計算を、例えば次のような手順で実施する。まず回転制御装置16は、第2のモータ13に回転を指示し、指示に従った第2のモータ13の回転が停止した後に地磁気センサ15から地磁気の方向(N極またはS極の方向)を示す情報を取得する。そして回転制御装置16は、地磁気の方向を示す情報に基づいて、スピーカ11の向きを水平にした場合のスピーカ11の向きと、水平方向に予め設定された原点方位との角度差(水平方向の角度差)を算出する。
例えば原点方位が磁南(S極方向)であるものとする。また地磁気センサ15は磁北(N極)方向を示す情報を出力するものとする。この場合、回転制御装置16は、地磁気センサ15が出力する地磁気の方向と「180°」反対の方向を原点方位と認識する。また地磁気センサ15が出力する地磁気の方向を示す情報は、スピーカ11の向きに対する相対的な地磁気の方向が示されている。すなわちスピーカ11の水平方向の角度差が示されている。従って回転制御装置16は、地磁気の方向を示す情報に基づいて、原点方位(地磁気の方向と180°の差がある)と、スピーカ11の向きを水平にした場合のスピーカ11の向きとの角度差を算出することができる。例えば反時計回りを正の回転方向としたとき、スピーカ11の向きを水平にした場合のスピーカ11の向きに対する地磁気(N極)の方向が「100°」の方向であれば、スピーカ11の向きに対する原点方位の方向は「−80°」の方向となる。すなわち原点方位とスピーカ11の向きとの角度差(水平方向の角度差)は「80°」となる。
このようにして、スピーカ11の水平方向の角度差が、地磁気センサ15の測定値に基づいて検知可能となる。地磁気センサ15は、加速度センサ14と同様に、例えば1つのICチップに収まる大きさであり、実装場所についての自由度が高い。すなわち地磁気センサ15を、スピーカ11に伴って回転する位置に取り付けることは容易である。従って、地磁気センサ15の測定値に基づいてスピーカ11の水平方向の角度差を検知できるようにしたことで、スピーカ11の向きの検知機能の実装が容易となっている。
また回転制御装置16は、スピーカ11の水平方向の角度差に基づいて、スピーカ11の水平方向の回転角と、スピーカ11の水平方向の第2の回転指示の角度である第2の指定角度との誤差(第2の誤差)を算出することもできる。例えば回転制御装置16は、第2の指定角度だけスピーカ11を第2の回転軸を中心として回転させる第2の回転指示を第2のモータ13に対して出力する。そして回転制御装置16は、スピーカ11の水平方向の角度差に基づいて、第2の回転指示に応じたスピーカ11の回転角と第2の指定角度との第2の誤差を算出する。
これにより、スピーカ11を水平方向に回転させたときの回転誤差を容易に算出可能となる。第2の誤差を算出した場合、回転制御装置16は、その第2の誤差を減少させる方向へ第2の誤差の分だけスピーカ11を回転させる補正回転指示を第2のモータ13に出力してもよい。これにより、回転誤差が補正され、スピーカ11の向きを目的の方向に正確に合わせることが可能となる。
スピーカ装置10には、回転の角速度を計測するジャイロセンサを取り付けることも可能である。ジャイロセンサは、スピーカ11に伴って回転する位置に取り付けられる。回転制御装置16は、ジャイロセンサを用いて、スピーカ11の回転中に回転角を計算し、誤差を補正することができる。
例えば回転制御装置16は、第1の指定角度に応じた数のパルス信号を第1のモータ12に出力する。次に回転制御装置16は、スピーカ11の第1の回転軸を中心とした回転中にジャイロセンサから定期的に角速度を示す情報を取得する。そして回転制御装置16は、取得した角速度を示す情報に基づいて、スピーカ11の第1の回転軸を中心とした回転角を算出する。回転制御装置16は、所定のタイミングまでに出力したパルス信号の数に1パルス当りの第1のモータ12の回転角を乗算して得られる角度と、算出した回転角との差分を計算する。そして回転制御装置16は、算出した差分に応じて、所定のタイミング以後に出力するパルス数を補正する。例えば回転制御装置16は、算出した回転角が、出力したパルス信号の数に応じた角度に満たない場合、その後に出力するパルス数を増加させることで、誤差を補正する。
このようにジャイロセンサの測定値を用いることで、スピーカ11の回転中であっても回転角を算出でき、回転中に誤差を補正することができる。しかもジャイロセンサは、加速度センサ14または地磁気センサ15と同様にICチップに収まる程度の大きさであり、実装が容易である。
回転制御装置16は、例えば重力の方向の回転の第1の指定角度に応じた回転を加速区間、等速区間、および減速区間に分けて制御してもよい。この場合、回転制御装置16は、加速区間では、パルス信号の出力間隔を時間経過と共に短くする。また回転制御装置16は、等速区間では、一定間隔でパルス信号を出力する。さらに回転制御装置16は、減速区間では、パルス信号の出力間隔を時間経過と共に長くする。
回転制御装置16は、例えば加速区間、等速区間、および減速区間の少なくとも1つの区間に応じたパルス信号の出力完了時を、誤差の補正を行う所定のタイミングとする。これにより、回転誤差が生じても、スピーカ11を滑らかに回転させることができる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、パラメトリックスピーカを用いて特定の人物に声かけを行う情報処理システムにおいて、パラメトリックスピーカの向きの誤差を適切に補正するものである。
図2は、声かけを行う情報処理システム構成の一例を示す図である。図2に示される情報処理システムは、例えば店舗などの施設に設置される。情報処理システムが設置された施設内の対象人物21は、例えば施設内で怪しい挙動を示す人物である、声かけの対象となる人物である。また情報処理システムが設置された施設内には、カメラ42とスピーカ装置30とが設置されている。図2に示される情報処理システムは、カメラ42によって対象人物21を検知し、スピーカ装置30が有するスピーカによって対象人物21に向けて音声を出力する。
ホストコンピュータ300は、対象人物21の検出とスピーカ装置30の制御とを行う。ホストコンピュータ300は、カメラ42の撮影した画像(映像でもよい)を取得し、対象人物21を検出する。またホストコンピュータ300は、コントローラ200を介してスピーカ装置30から出力する音声を制御する。例えばホストコンピュータ300は、スピーカ装置30から出力する音声の大きさや内容(音声ファイル)を決定し、対応する音声信号をスピーカ装置30に送信する。
またホストコンピュータ300は、コントローラ200を介してスピーカ装置30が有するスピーカの放射部の向きを指示する。例えばホストコンピュータ300は、対象人物21を撮影した画像に基づいて、対象人物21とスピーカ装置30との相対的な位置関係(相対位置)を特定する。なおスピーカ装置30が設置された位置とスピーカ装置30の水平方向の回転における正面の方向(方位)とは、予めホストコンピュータ300に設定されている。次にホストコンピュータ300は、対象人物21とスピーカ装置30との相対位置に基づいて、スピーカ装置30が有するスピーカを対象人物21に向けるための回転角を算出する。ホストコンピュータ300は、算出した回転角をスピーカ装置30に通知する。スピーカ装置30は、通知された回転角に応じた回転数だけモータを回転させる。そしてホストコンピュータ300は、回転指示に応じたモータの回転終了後に、スピーカから対象人物21向けに出力する音声の音声信号を、スピーカ装置30に送信する。
次に、スピーカ装置30の構造について説明する。
図3は、スピーカ装置の構造の一例を示す図である。スピーカ装置30は、土台34と支柱35とによって天井に設置されている。支柱35は、土台34の中心から鉛直下方向に伸びる円柱状の支柱である。支柱35は、モータ32aによって回転する。モータ32aによる支柱35の回転は、土台34の中心を通り鉛直方向に伸びる水平回転軸37aを中心とする回転の角変位の変動である。水平回転軸37aを中心とする回転の角変位の変動を水平方向の回転といい、水平回転軸37aを中心とする回転の角変位を水平方向の角変位ということがある。なおモータ32aは、第1の実施の形態における第2のモータ13(図1参照)の一例である。
支柱35には、スピーカ33が設置されている。スピーカ33は、モータ32bの軸によって回転する。モータ32bによるスピーカ33の回転は、支柱35に対して垂直に伸びる垂直回転軸37bを中心とする回転の角変位の変動である。なお、垂直回転軸37bを中心とする回転の角変位の変動を重力の方向の回転といい、垂直回転軸37bを中心とする回転の角変位を重力の方向の角変位ということがある。なおモータ32bは、第1の実施の形態における第1のモータ12(図1参照)の一例である。
スピーカ33は、超指向性を有するパラメトリックスピーカである。スピーカ33は、放射部33aとスピーカ基板33bとセンサユニット31とを有する。放射部33aは、振動板を振動させ音声を出力する。スピーカ基板33bは、放射部33aの振動板を振動させる電気信号を放射部33aに入力する電子回路基板である。なおスピーカ33の向きとは、具体的には放射部33aの前面側の法線方向を指す。
センサユニット31は、スピーカ基板33b上に実装されている。センサユニット31は、スピーカ33の向きを測定するための複数のセンサを内蔵している。センサユニット31は、例えばIC化されており、スピーカ基板33b上の狭いスペースにも実装可能である。
土台34には、回転制御装置100が収納されている。回転制御装置100は、例えばコンピュータの機能が実装されたプリント基板である。回転制御装置100は、コントローラ200を介してホストコンピュータ300に接続されている。回転制御装置100は、ホストコンピュータ300の指示に応じて、スピーカ33の向きを変えるためのモータ32a,32bを回転させる。例えば回転制御装置100は、ホストコンピュータ300から通知された角度分だけ、モータ32a,32bを回転させる。
なお第2の実施の形態では、モータ32a,32bはステッピングモータであるものとする。この場合、回転制御装置100は、ホストコンピュータ300から通知された角度分のパルス信号をモータ32a,32bに出力することで、モータ32a,32bを回転させる。
図4は、回転制御装置およびコントローラのハードウェアの一構成例を示す図である。回転制御装置100は、マイクロコントローラ(マイコン)101によって装置全体が制御されている。マイコン101は、プロセッサ101aとRAM(Random Access Memory)101bとROM(Read Only Memory)101cとを有する。プロセッサ101aは、ROM101cに格納されたファームウェア(制御用のソフトウェア)をRAM101bに読み込み、ファームウェアに従ってスピーカ33の回転制御を行う。プロセッサ101aは、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101aがプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
RAM101bは、回転制御装置100の主記憶装置として使用される、揮発性の半導体記憶装置である。RAM101bには、プロセッサ101aに実行させるプログラムの少なくとも一部が一時的に格納される。また、RAM101bには、プロセッサ101aによる処理に利用する各種データが格納される。
ROM101cは、ファームウェアを記憶する不揮発性の半導体記憶装置である。ROM101cとしては、EPROM(Erasable Programmable Read Only Memory)またはEEPROM(Electrically Erasable Programmable Read-Only Memory)を用いることができる。
マイコン101には、機器接続インタフェース102、モータドライバ103,104および接続インタフェース105が接続されている。
機器接続インタフェース102には、センサユニット31が接続されている。センサユニット31は、例えば、加速度センサ31a、ジャイロセンサ31b、および地磁気センサ31cを有する。加速度センサ31aは、3軸方向の加速度を測定するセンサである。ジャイロセンサ31bは、3軸方向の回転速度(角速度)を計測するセンサである。ジャイロセンサ31bは、角速度センサとも呼ばれる。地磁気センサ31cは、地磁気の3次元での方向(例えばS極の方向)を計測するセンサである。地磁気の方向は、例えば3軸方向の成分を有するベクトルで表される。機器接続インタフェース102は、センサユニット31内の各センサが測定した値を、マイコン101に送信する。
モータドライバ103は、スピーカ33を水平方向に回転させるためのモータ32aに接続されている。モータドライバ103は、マイコン101からパルス信号を受け取りモータ32aの軸を回転させる。
モータドライバ104は、スピーカ33を重力の方向に回転させるためのモータ32bに接続されている。モータドライバ104は、マイコン101からパルス信号を受け取りモータ32bの軸を回転させる。
接続インタフェース105は、コントローラ200と接続するためのインタフェースである。接続インタフェース106が用いる規格としては、例えばRS−485などがある。
回転制御装置100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した回転制御装置16も、図4に示した回転制御装置100と同様のハードウェアにより実現することができる。またプロセッサ101aは、第1の実施の形態に示した処理部16bの一例である。RAM101bまたはROM101cは、第1の実施の形態に示した記憶部16aの一例である。センサユニット31は、第1の実施の形態に示した加速度センサ14、地磁気センサ15などの複数のセンサを内蔵するセンサの一例である。
回転制御装置100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。回転制御装置100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、回転制御装置100のプロセッサ101aに実行させるプログラムを、ROM101cにファームウェアとして格納しておくことができる。またプロセッサ101aに実行させるプログラムを、光ディスク、メモリ装置、メモリカードなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101aからの制御により、ROM101cに書き込まれた後、実行可能となる。
コントローラ200は、ホストコンピュータ300と周辺機器とを接続するためのハブ201を有する。ハブ201は、例えばUSB(Universal Serial Bus)などの規格によってホストコンピュータ300と接続されている。ハブ201に接続されている周辺機器としては、シリアルバス202、DAC(Digital Analog Converter)204および接続インタフェース206がある。
シリアルバス202は、ハブ201とDPOT(Digital POTentiometer)203とを接続するためのバスである。シリアルバス202が用いる規格としては、例えばI2C(登録商標)などがある。DPOT203は、信号に応じて抵抗値が変化する可変抵抗器である。DPOT203の抵抗値によってAMP(AMPlifier)205に流れる電流が制御される。
DAC204は、ホストコンピュータ300からのデジタル信号をアナログ信号に変換し、AMP205に出力する。AMP205は、DAC204から入力されたアナログ信号を電流によって増幅しスピーカ33に出力する。
スピーカ33は、AMP205から入力された信号に応じた音声を出力する。スピーカ33は、例えばパラメトリックスピーカであり、超音波によって音声を出力する。
接続インタフェース206は、回転制御装置100と接続するためのインタフェースである。接続インタフェース206が用いる規格は、接続インタフェース106と同様である。
図5は、ホストコンピュータのハードウェアの一例を示す図である。ホストコンピュータ300は、プロセッサ301によって装置全体が制御されている。プロセッサ301には、バス311を介してメモリ302と複数の周辺機器が接続されている。プロセッサ301は、マルチプロセッサであってもよい。プロセッサ301は、例えばCPU、MPU、またはDSPである。プロセッサ301がプログラムを実行することで実現する機能の少なくとも一部を、ASIC、PLDなどの電子回路で実現してもよい。
メモリ302は、ホストコンピュータ300の主記憶装置として使用される。メモリ302には、プロセッサ301に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ302には、プロセッサ301による処理に利用する各種データが格納される。メモリ302としては、例えばRAMなどの揮発性の半導体記憶装置が使用される。
バス311に接続されている周辺機器としては、ストレージ装置303、グラフィック処理装置304、機器接続インタフェース305、入力インタフェース306、光学ドライブ装置307、機器接続インタフェース308、接続インタフェース309およびネットワークインタフェース310がある。
ストレージ装置303は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置303は、コンピュータの補助記憶装置として使用される。ストレージ装置303には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置303としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
グラフィック処理装置304には、モニタ41が接続されている。グラフィック処理装置304は、プロセッサ301からの命令に従って、画像をモニタ41の画面に表示させる。モニタ41としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
機器接続インタフェース305には、カメラ42が接続されている。カメラ42は、プロセッサ301からの命令に従って、カメラ42のレンズを向けた先の光景の静止画または動画のデータを生成し、メモリ302に格納する。
入力インタフェース306には、キーボード43とマウス44とが接続されている。入力インタフェース306は、キーボード43やマウス44から送られてくる信号をプロセッサ301に送信する。なお、マウス44は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置307は、レーザ光などを利用して、光ディスク45に記録されたデータの読み取りを行う。光ディスク45は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク45には、DVD(Digital Versatile Disc)、DVD−RAM、CD(Compact Disc)−ROM、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース308は、ホストコンピュータ300に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース308には、メモリ装置46やメモリリーダライタ47を接続することができる。メモリ装置46は、機器接続インタフェース308との通信機能を搭載した記録媒体である。メモリリーダライタ47は、メモリカード48へのデータの書き込み、またはメモリカード48からのデータの読み出しを行う装置である。メモリカード48は、カード型の記録媒体である。
接続インタフェース309は、コントローラ200と接続するためのインタフェースである。接続インタフェース309が用いる規格は、ハブ201が用いる規格と同様である。
ネットワークインタフェース310は、ネットワーク20に接続されている。ネットワークインタフェース310は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
ホストコンピュータ300は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。ホストコンピュータ300は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。ホストコンピュータ300に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、ホストコンピュータ300に実行させるプログラムをストレージ装置303に格納しておくことができる。プロセッサ301は、ストレージ装置303内のプログラムの少なくとも一部をメモリ302にロードし、プログラムを実行する。またホストコンピュータ300に実行させるプログラムを、光ディスク45、メモリ装置46、メモリカード48などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ301からの制御により、ストレージ装置303にインストールされた後、実行可能となる。またプロセッサ301が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
次に、スピーカ33の性質について説明する。
図6は、スピーカに対する位置と音圧レベルとの関係の一例を示す図である。以下では、指向性のないスピーカ40とパラメトリックスピーカであるスピーカ33との違いについて説明する。なお図6では、スピーカ33,40が発する音声の音圧レベルの値の高低が点の濃淡で表され、点が濃い箇所は音圧レベルが高いことを示し、点が薄い箇所は音圧レベルが低いことを示す。
スピーカ40が発する音声は、全方向に伝わり、距離が遠くなるほど減衰していく。よってスピーカ40の近辺では音圧レベルが高く、スピーカ40からの距離が大きくなるに連れて音圧レベルは低くなる。この場合、スピーカ40が対象人物21に向いていたとしても、スピーカ40と対象人物21との距離が大きいと、対象人物21は、スピーカ40が発する音声を聞き取りづらいことや聞き取れない場合がある。
一方スピーカ33が発する音声は、原音に超音波の変調をかけて出力される。この音声は、超音波の特性によって直進する。ここで、超音波は広がらないため、距離が遠くなることによる音声の減衰量は小さい。よってスピーカ33が向いている方向の直線上では音圧レベルが高く、スピーカ33が向いている方向以外の方向では音圧レベルは低くなる。そのため、スピーカ33が対象人物21に向いていると、スピーカ33と対象人物21との距離が大きくても、対象人物21はスピーカ33が発する音声を聞き取ることができる。このようにして、スピーカ33によって特定の人物(対象人物21)のみに音声が届けられる。
ここで、スピーカ33の向きは、2つの回転軸を中心とする回転(2つの軸回転)それぞれの角変位によって決定される。2つの軸回転の角変位は、それぞれモータ32a,32bの回転に伴って変動する。スピーカ33の水平方向の向きが原点方位と一致する状態からのモータ32aの回転によって生じた角変位は、スピーカ33の水平方向の角度差を表している。スピーカ33を重力の方向に向けた状態からのモータ32bの回転によって生じた角変位は、スピーカ33の重力の方向の角度差を表している。ホストコンピュータ300は、例えばモータ32a,32bへの回転指示を出力し、モータ32a,32bを回転させたとき、その回転で生じると期待される角変位(回転指示で指定した指定角度)を記憶しておく。そしてホストコンピュータ300は、次の回転指示では、記憶している角変位と目的の角度との差だけ軸回転の角変位が変動するように、モータ32a,32bの軸を回転させる。
このとき、ホストコンピュータ300から指示された回転量と実際のモータ32a,32bの回転量とが脱調などによりずれることがある。すると、ホストコンピュータ300が記憶する各軸方向の回転の現在の角変位と、実際の軸回転で生じた重力の方向の角度差または水平方向の角度差とに差異が生じる。そして、このように生じた差異だけスピーカ33の向きが目的の方向からずれる。スピーカ33の向きが目的の方向からずれると、スピーカ33が音声を届けられる幅は狭いため、対象人物21に音声を届けられなくなることがある。
そこで第2の実施の形態では、回転制御装置100が、スピーカ33の向きのずれをキャリブレーション(較正)する。例えば回転制御装置100は、ホストコンピュータ300からの指示に従いスピーカ33を対象人物21に向ける。回転制御装置100は、音声の出力が完了したことを確認すると、スピーカ33の向きを原点方向(初期状態での向き)に復帰させる。その後、回転制御装置100は、原点復帰のための回転後のスピーカ33の向きを計測し、スピーカ33の向きと原点の方向とのずれを検知する。ずれがある場合、回転制御装置100は、ずれ量に応じて、スピーカ33の向きを原点方向にさらに回転させる。
回転制御装置100による重力の方向の誤差の補正の概略の手順は以下の通りである。
回転制御装置100は、原点方向を、下向き(重力の方向)に定める。回転制御装置100は、電源投入時、加速度センサ31aの測定値に基づいて、スピーカ33の傾き(原点方向からのずれ)を算出する。回転制御装置100は、傾きが「0」になる角度分、モータ32bを回転させる。傾きが「0」の状態とは、重力加速度がZ軸のみに作用している状態である。
その後、回転制御装置100は、ホストコンピュータ300から対象人物21までの回転角度(指定角度)を受け取ると、モータ32bを回転させる。回転制御装置100は、モータ32bを回転させながらジャイロセンサ31bで回転角を算出する。回転制御装置100は、対象人物21への声かけが終了すると、ジャイロセンサ31bで検出した回転角分を戻すようにモータ32bを回転させる。回転制御装置100は、スピーカ33の向きを戻す制御が終わると、加速度センサ31aの測定値に基づいて、スピーカ33の重力の方向の傾きを検出する。回転制御装置100は、傾きが「0」でなければ、その傾きを誤差と捉え、誤差が「0」となるまで、モータ32bの補正移動の回転を指示する。
回転制御装置100による水平方向の誤差の補正の概略の手順は以下の通りである。
回転制御装置100は、原点方向(原点方位)は、予め地磁気センサ31cで測定した方位とする。例えば回転制御装置100は、電源投入時、水平方向の一方へ、モータ32aをゆっくり回転させながらジャイロセンサ31bで測定した角速度に基づいて回転角を算出する。回転制御装置100は、回転の限界に達して脱調が発生したら、モータ32aを逆方向へ「90°」回転させる。回転制御装置100は、「90°」回転後のスピーカ33の水平方向の向き(方位)を地磁気センサ31cで検出する。そして回転制御装置100は、検出した方位を水平方向の原点方位とする。
その後、回転制御装置100は、ホストコンピュータ300から対象人物21までの回転角度(指定角度)を受け取ると、モータ32aを回転させる。回転制御装置100は、モータ32aを回転させながらジャイロセンサ31bで回転角を算出する。回転制御装置100は、対象人物21への声かけが終了すると、ジャイロセンサ31bで検出した回転角分を戻すようにモータ32aを回転させる。回転制御装置100は、スピーカ33の向きを戻す制御が終わると、地磁気センサ31cの測定値に基づいて、スピーカ33の水平方向の向き(方位)を検出する。回転制御装置100は、検出した方位と原点方位とのずれが「0」でなければ、そのずれを誤差と捉え、誤差が「0」となるまで、モータ32aの補正移動の回転を指示する。
このように、スピーカ装置30では、スピーカ33の向きを検知するのに、センサユニット31内の各センサの測定値を用いている。ここでセンサの測定値を用いてスピーカ33の向きを検知する利点について説明する。
一般に、ステッピングモータ自身では、回転角が分からず、脱調により回転角にずれが生じても検知できない。そこでステッピングモータとは別に、回転角の検知機構を実装することが考えられる。位置検出に利用できるものとして、エンコーダ、フォトインタラプタ、メカスイッチなどが考えられるが、これらの部品の取り付けは、構造設計上の制約が大きい。例えば、エンコーダはサイズが大きく、十分な設置スペースが求められる。またフォトインタラプタは、モータごとに設けることとなり数が多くなると共に、設置位置にも制約がある。メカスイッチもモータごとに設けられることとなり数が多くなると共に、モータに機械的負荷を与えてしまう。
それに対して、加速度センサ31a、ジャイロセンサ31b、地磁気センサ31cなどの各種センサは、それらを1つのIC内に収めることが可能であり、非常にサイズが小さい。そのため、設置スペースが少なくて済む。しかも、設置位置がモータの近傍に制限されることもないため、構造設計上の制約も最小限となる。さらにモータに対する余分な負荷の増加にもならない。
このように、センサには実装上の制約は少ないという利点がある。しかも加速度センサ31aなどのセンサは、各種分野で利用されており、安価に入手可能である。そのため、センサの測定値を用いてスピーカ33の向きを検知できるようにすることで、スピーカ装置30へのスピーカ33の向きの検知機構の実装が容易となる。
次にスピーカ33の向きの検知と、検知した向きのずれの較正とを実施するために回転制御装置100が有する機能について説明する。
図7は、回転制御装置の機能の一例を示すブロック図である。回転制御装置100は、記憶部110、回転指示部120、および角度算出部130を有する。
記憶部110は、水平方向の原点となる方角を示す原点方位情報を記憶する。水平方向の原点となる方角は、スピーカ装置30を設置した際に、記憶部110に設定される。記憶部110は、例えば回転制御装置100のROM101cによって実現される。
回転指示部120は、ホストコンピュータ300からの指示に従って、モータ32a,32bへの回転を指示する。例えば回転指示部120は、回転角度に応じた数のパルス信号をモータ32a,32bに出力する。また回転指示部120は、角度算出部130が算出した角度に基づいて、原点方向とのずれの有無を判断し、ずれがある場合には、ずれ量に応じた回転指示をモータ32a,32bに出力する。
角度算出部130は、センサユニット31内の各センサの測定値に基づいて、スピーカ33の重力の方向または水平方向の角度を算出する。また角度算出部130は、算出した角度と原点方向との成す角度(ずれ量)を算出することもできる。例えば角度算出部130は、原点復帰制御後に、重力の方向または水平方向のずれ量を算出する。なお重力の方向回転の原点方向は、例えば重力の方向である。また水平方向回転の原点方向は、記憶部110に設定されている原点方位情報に示される方向である。
なお、図7に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図7に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次に角度算出部130による角度の算出方法について、詳細に説明する。
図8は、重力の方向に回転したときの加速度センサの回転軸の一例を示す図である。加速度センサ31aは、ローカルな3次元の座標系において加速度を計測する。加速度センサ31aのローカル座標系は、スピーカ33の回転に伴ってグローバル座標系に対して回転する。ここでグローバル座標系とは、重力の方向をZ軸とする座標系である。
スピーカ33が、重力の方向の回転における原点方向(重力の方向)を向いているとき、加速度センサ31aのX軸とY軸は水平となり、Z軸は垂直となる。図8の例では、加速度センサ31aのZ軸は、重力と反対方向が正の方向である。すなわち、スピーカ33が重力の方向の回転の原点方向を向いているとき、加速度センサ31aで測定されるZ軸の値(加速度のZ軸成分Az)は、重力加速度「9.80665」となる。
ここで垂直回転軸37b(図3参照)と加速度センサ31aのY軸とが平行であるものとする。その場合、スピーカ33の重力の方向の回転は、加速度センサ31aのY軸を中心とした回転となる。このとき加速度のX軸成分AxとZ軸成分Azとに基づいて、スピーカ33の重力の方向の角度差θyを算出することができる。
図9は、加速度センサの測定値を用いた重力の方向の角度差の算出方法の一例を示す図である。なお、図9では重力加速度を「9.8」と近似している。また、加速度センサ31aのローカル座標系におけるX軸とグローバル座標系のX軸との差をθxとする。
このとき、「cosθx=Ax/9.8」、「sinθx=Az/9.8」、「tanθx=Az/Ax」となる。「cosθx=Ax/9.8」の逆関数を用いれば、加速度のX軸成分Axのみからθxを算出できる。「sinθx=Az/9.8」の逆関数を用いれば、加速度のZ軸成分Azのみからθxを算出できる。ただし一軸の成分のみを用いた計算だと、加速度センサ31aの分解能に基づく誤差が大きくなる。そこで角度算出部130は、「tanθx=Az/Ax」の逆関数を用い、加速度のX軸成分AxとZ軸成分Azとからθxを算出する。具体的には、以下の式(1)で算出できる。
θx=tan-1(Az/Ax) (1)
θxに基づいて、重力の方向の角度差θyは「θy=90−|θx|」と表すことができる。この式のθxを式(1)の右辺で置き換えると、重力の方向の角度差θyは以下の式(2)で表される。
θy=90−|tan-1(Az/Ax)| (2)
重力の方向の角度差θyは、ジャイロセンサ31bの測定値から算出することもできる。
図10は、ジャイロセンサの測定値を用いた重力の方向の角度差の算出方法の一例を示す図である。ジャイロセンサ31bは、ローカルな3次元の座標系において角速度ωを計測する。ジャイロセンサ31bのローカル座標系は、スピーカ33の回転に伴ってグローバル座標系に対して回転する。スピーカ33が、重力の方向の回転における原点方向(重力の方向)を向いているとき、ジャイロセンサ31bのX軸とY軸は水平となり、Z軸は垂直となる。
ここで垂直回転軸37b(図3参照)とジャイロセンサ31bのY軸とが平行であるものとする。その場合、スピーカ33の重力の方向の回転は、ジャイロセンサ31bのY軸を中心とした回転となる。ジャイロセンサ31bを用いるとY軸を中心とした回転の回転角Gyを算出することができる。原点方向からの回転角Gyを求めれば、その回転角Gyは原点方向からの重力の方向の角度差θyに等しくなる。すなわち、ジャイロセンサ31bでは、以下の式(3)により、重力の方向の回転における原点方向を向いた状態からの重力の方向の角度差θyを算出することができる。
θy=Gy=Σωyt (3)
式(3)におけるωyは、Y軸を中心とした回転の角速度であり、tは角速度を計測した時間間隔である。例えばスピーカ33が重力の方向の回転における原点方向を向いた状態から、ω1の角速度で時間t1だけ回転し、ω2の角速度で時間t2だけ回転し、ω3の角速度で時間t3だけ回転し、ω4の角速度で時間t4だけ回転したものとする。この場合、重力の方向の角度差θyは、「θy=ω1t1+ω2t2+ω3t3+ω4t4」となる。
このように重力の方向の角度差θyは、加速度センサ31aまたはジャイロセンサ31bの測定値から算出できる。加速度センサ31aの測定値を用いた重力の方向の角度差θyは現在の加速度の状態のみから高精度に算出できる。他方、加速度センサ31aの測定値を用いた重力の方向の角度差θyの計算は、スピーカ33が回転している間は、回転運動の影響を受け、正確な計算が困難となる。それに対して、ジャイロセンサ31bの測定値を用いた重力の方向の角度差θyの計算は、スピーカ33が回転している間であっても計算精度が落ちることはない。
従って、重力の方向の回転を停止した状態で計測できるのであれば、加速度センサ31aの測定値を用いて重力の方向の角度差θyを計算するのが適切となる。またスピーカ33を回転させながら重力の方向の角度差θyを求めるのであれば、ジャイロセンサ31bの測定値を用いて重力の方向の角度差θyを計算するのが適切となる。
図11は、原点復帰時の重力の方向の角度差の誤差の計算例を示す図である。スピーカ33が重力の方向の原点方向を向いている場合、加速度センサ31aで計測される加速度のX軸成分は「0.0」、Y軸成分は「0.0」、Z軸成分は「−9.8」となる。またジャイロセンサ31bで計測される角速度に基づいて計算した各軸を中心とした回転で生じる角度差はすべて「0.0」である。
この状態で、ホストコンピュータ300から重力の方向に「40°」回転させる指示が入力されたものとする。すると回転指示部120は、モータ32bに対して「40°」分の回転を指示する。
スピーカ33が重力の方向に「40°」回転すると、加速度センサ31aで計測される加速度のX軸成分は「7.507」、Y軸成分は「0.0」、Z軸成分は「−6.299」となる。またジャイロセンサ31bで計測される角速度に基づいて計算したY軸を中心とした回転で生じる角度差は「40.0」となる。
回転指示部120は、指定された角度の回転が終了すると、ホストコンピュータ300に回転終了を通知する。するとホストコンピュータ300は、音声信号をスピーカ装置30に送信し、スピーカ33から対象人物21に対する音声を出力させる(声かけを行う)。声かけが終了すると、ホストコンピュータ300は、回転制御装置100に対して、ジャイロセンサ31bの測定値に基づいて計算した移動角度(角度差「40.0」)だけ、反対方向に回転するように指示する。すなわちホストコンピュータ300は、「−40°」の回転を指示する。すると、回転制御装置100の回転指示部120は、モータ32bに対して「−40°」分の回転を指示する。
このときモータ32bにおいて脱調が発生し、スピーカ33の回転角は「−40°」に達していないものとする。そのため、原点復帰の処理を実施した後においても、スピーカ33の向きが原点方向からずれている。
図11の例では、加速度センサ31aで計測される加速度のX軸成分は「0.854」、Y軸成分は「0.0」、Z軸成分は「−9.762」となっている。このとき、角度算出部130が誤差を計算する。すなわち角度算出部130は、式(2)に基づいて、現在の重力の方向の角度差θyを計算する。すると「角度差θy=5°」となる。この角度が、角度差の誤差である。
次に水平方向の角度差の算出方法について説明する。水平方向の回転における原点方向(原点方位)は、例えばスピーカ装置30の正面の方角である。
図12は、水平方向の回転における原点方向の一例を示す図である。図12は、スピーカ装置30の下面図である。すなわち天井に取り付けられたスピーカ装置30を下から見上げたときの様子が図12に示されている。スピーカ33は、水平方向を向いているものとする。
ここで、スピーカ33が水平方向に「180°」回転可能な場合を想定する。この場合、スピーカ33の回転可能範囲の中間の方向をスピーカ33が向いているときの正面(放射面前方)の方位を原点方位とする。原点方位を示す原点方位情報は、例えば電源投入時の初期化処理の際に角度算出部130によって地磁気センサ31cから取得され、記憶部110に格納される。
スピーカ33の水平方向の角度差は、ジャイロセンサ31bの測定値に基づいて算出することができる。
図13は、ジャイロセンサの測定値を用いた水平方向の角度差の算出方法の一例を示す図である。スピーカ33が、重力の方向の回転における原点方向(重力の方向)を向いているとき、ジャイロセンサ31bのX軸とY軸は水平となり、Z軸は垂直となる。
ここで水平回転軸37a(図3参照)とジャイロセンサ31bのZ軸とが平行であるものとする。その場合、スピーカ33の水平方向の回転は、ジャイロセンサ31bのZ軸を中心とした回転となる。ジャイロセンサ31bを用いるとZ軸を中心とした回転の回転角Gzを算出することができる。原点方位からの回転角Gzを求めれば、その回転角Gzは水平方向の角度差θzに等しくなる。すなわち、ジャイロセンサ31bでは、以下の式(4)により、重力の方向の回転における原点方向を向いた状態からの水平方向の角度差θzを算出することができる。
θz=Gz=Σωzt (4)
式(4)におけるωzは、Z軸を中心とした回転の角速度であり、tは角速度を計測した時間間隔である。例えばスピーカ33が重力の方向の回転における原点方向を向いた状態から、ω1の角速度で時間t1だけ回転し、ω2の角速度で時間t2だけ回転し、ω3の角速度で時間t3だけ回転し、ω4の角速度で時間t4だけ回転したものとする。この場合、水平方向の角度差θzは、「θz=ω1t1+ω2t2+ω3t3+ω4t4」となる。
ジャイロセンサ31bの測定値を用いれば、スピーカ33を回転させるごとの実際の回転角が分かる。スピーカ33の回転の指定角度と実際の回転角との誤差を求めれば、脱調の有無を判定することができる。
図14は、水平方向の角度差の誤差の計算例を示す図である。図14の例では、原点方位から「90°」を指定角度とした回転指示が、ホストコンピュータ300から入力された場合を想定している。この場合、回転指示部120は、モータ32aに対して「90°」分のパルス信号を出力する。そのパルス信号に応じてモータ32aが回転する。角度算出部130は、ジャイロセンサ31bが測定した角速度を取得し、回転角を算出する。図14の例では、回転角は「80°」となっている。この場合、指定角度である「90°」と、回転角「80°」との差分が、脱調による誤差である。
回転指示部120は、脱調による誤差の量が分かれば、誤差の分だけさらにスピーカ33を回転させることで、誤差を補正することができる。また可動範囲の限界に達したことを、脱調の有無で判断することもできる。
次に、図15〜図18を参照し、スピーカ33を用いた対象人物21への声かけの手順について詳細に説明する。
図15は、電源投入時のスピーカ装置初期化処理の手順の一例を示すフローチャート(1/2)である。以下、図15に示す処理をステップ番号に沿って説明する。
[ステップS101]スピーカ装置30は、電源ONの操作が行われると、回転制御装置100およびスピーカ33に対して電源を供給する。すると回転制御装置100は初期化処理を開始する。
[ステップS102]回転制御装置100の角度算出部130は、加速度センサ31aの測定値を取得する。そして角度算出部130は、加速度のX軸成分「Ax」とZ軸成分「Az」とに基づいて、上記の式(2)に従って重力の方向の角度差θy(傾き)を算出する。角度算出部130は、算出した重力の方向の角度差θyを、回転指示部120に通知する。
[ステップS103]回転指示部120は、ステップS102で算出された重力の方向の角度差θyに基づいて、スピーカ33の原点方向への重力の方向の回転制御を行う。例えば角度算出部130で算出された重力の方向の角度差θyが「55°」であったものとする。この場合、回転指示部120は、モータ32bを「−55°」だけ回転するように制御する。すなわち回転指示部120は、回転方向を負の方向に設定し、「55°」分のパルス信号をモータ32bに出力する。
[ステップS104]角度算出部130は、回転指示部120によるモータ32bへのパルス信号の出力が終了すると、加速度センサ31aの測定値を取得する。そして角度算出部130は、加速度のX軸成分「Ax」とZ軸成分「Az」とに基づいて、上記の式(2)に従って重力の方向の角度差θy(傾き)を算出する。角度算出部130は、算出した重力の方向の角度差θyを、回転指示部120に通知する。
[ステップS105]回転指示部120は、重力の方向の角度差θyが「0°」か否かを判定する。なお回転指示部120は、重力の方向の角度差θyが「0°」か否かの判定において、ある程度の許容範囲を持たせてもよい。例えば回転指示部120は、重力の方向の角度差θyが「0°」から許容誤差の範囲内であれば、重力の方向の角度差θyが「0°」であると判定する。回転指示部120は、重力の方向の角度差θyが「0°」であれば、処理をステップS111(図16参照)に進める。回転指示部120は、重力の方向の角度差θyが「0°」でなければ、処理をステップS106に進める。
[ステップS106]回転指示部120は、ステップS104で算出された重力の方向の角度差θyに基づいて、スピーカ33の重力の方向の回転制御を行う。例えば回転指示部120は、重力の方向の角度差θyに相当する数のパルス信号をモータ32bに出力する。回転指示部120は、その後、処理をステップS104に進める。
図16は、電源投入時のスピーカ装置初期化処理の手順の一例を示すフローチャート(2/2)である。以下、図16に示す処理をステップ番号に沿って説明する。
[ステップS111]回転指示部120は、ジャイロセンサ31bの測定値に基づく計算によって得られる回転角の保存値(Gx,Gy,Gz)を(0,0,0)に初期化する。
[ステップS112]回転指示部120は、スピーカ33の、水平方向への所定の角度の等速回転制御を行う。例えば、初期化処理時の水平方向の基準回転角ZHが「10°」に設定されているものとする。この場合、回転指示部120は、モータ32aを「10°」だけ回転するように制御する。すなわち回転指示部120は、「10°」分のパルス信号をモータ32aに出力する。
[ステップS113]角度算出部130は、回転指示部120によるモータ32aへのパルス信号の出力が終了すると、ジャイロセンサ31bの測定値を取得する。そして角度算出部130は、ジャイロセンサ31bの測定値に基づいて、式(4)に従って回転角Gzを算出する。角度算出部130は、算出した回転角Gzを、回転指示部120に通知する。
[ステップS114]回転指示部120は、回転角Gzが基準回転角ZH「10°」に等しいか否かを判定する。なお回転指示部120は、回転角Gzが基準回転角ZH「10°」に等しいか否かの判定において、ある程度の許容範囲を持たせてもよい。例えば回転指示部120は、回転角Gzが「10°」から許容誤差の範囲内であれば、回転角Gzが「10°」であると判定する。回転指示部120は、回転角Gzが「10°」であれば、処理をステップS112に進める。回転指示部120は、回転角Gzが「10°」でなければ、処理をステップS115に進める。
このようにして、スピーカ33の「10°」ずつの水平方向の回転が、脱調により回転角Gzと基準回転角ZHとが不一致となるまで繰り返される。スピーカ33の水平方向の可動範囲は制限があり(例えば「180°」)、可動範囲の端部まで回転すると、スピーカ33はそれ以上回転できず、脱調が発生する。この場合、実際の回転角Gzが、回転制御で指示した基準回転角ZHに満たなくなる。そこで回転指示部120は、回転角Gzが基準回転角ZHとならないことを確認することで、スピーカ33の向きが水平方向の可動範囲の一方の端部まで回転したものと認識する。回転指示部120は、スピーカ33の向きが水平方向の可動範囲の一方の端部まで回転したら、ステップS115以降の処理を実行する。
なお、回転指示部120は、ステップS114において、少しずつ(例えば「10°」ずつ)回転させることで、モータ32aへの負荷の軽減を図っている。すなわち、スピーカ33の向きが水平方向の可動範囲の端部に達した後も、パルス信号をモータ32aに送信し続けると、モータ32aに余計な負荷をかけ続けることとなる。そのため回転指示部120は、基準回転角ZHずつ回転させ、回転させるごとに脱調の有無を確認することで、モータ32aにかかる余分な負荷を最小限に抑止している。
[ステップS115]回転指示部120は、スピーカ33の、水平方向への所定の角度(例えば水平方向の回転の可動範囲の角度の半分)の等速回転制御を行う。例えば、水平方向の回転の可動範囲が「180°」であり、ステップS112〜S114の処理により正の回転方向の端部までスピーカ33が回転しているものとする。この場合、回転指示部120は、モータ32aを「−90°」だけ回転するように制御する。すなわち回転指示部120は、回転方向を負の方向に設定し、「90°」分のパルス信号をモータ32aに出力する。
[ステップS116]角度算出部130は、回転指示部120によるモータ32aへのパルス信号の出力が終了すると、地磁気センサ31cの測定値を取得する。そして角度算出部130は、地磁気センサ31cの測定値に基づいて原点方位M0を決定する。すなわち角度算出部130は、現時点のスピーカ33の水平方向の向きを原点方位M0とする。角度算出部130は、取得した地磁気センサ31cの測定値を、原点方位情報として記憶部110に格納する。
[ステップS117]回転指示部120は、ジャイロセンサ31bの測定値に基づく計算によって得られる回転角の保存値(Gx,Gy,Gz)を(0,0,0)に初期化する。
このようにして、スピーカ装置30への電源投入時に初期化処理が行われ、スピーカ33は、重力の方向回転の原点方向(鉛直真下)と水平方向回転の原点方位(スピーカ装置30の正面)とを向いた状態となる。また原点方位情報が記憶部110に格納される。
その後、ホストコンピュータ300は、不審人物を検出すると、その人物を対象人物21とする。そしてホストコンピュータ300は、対象人物21の位置を特定し、その位置に向けたスピーカ33の回転をスピーカ装置30に指示する。スピーカ装置30の回転制御装置100は、声かけ用回転制御および原点復帰処理を行う。
図17は、声かけ用回転制御および原点復帰処理の手順の一例を示すフローチャート(1/2)である。以下、図17に示す処理をステップ番号に沿って説明する。
[ステップS201]回転制御装置100の回転指示部120は、ホストコンピュータ300から回転指示を取得する。例えばホストコンピュータ300から、水平方向に「−60°(H=−60°)」、重力の方向に「40°(V=40°)」の回転指示を取得したものとする。
[ステップS202]回転指示部120は、水平方向への指定された角度の回転制御を行う。例えば水平方向に「−60°(H=−60°)」の回転指示を取得している場合、回転指示部120は、モータ32aを「−60°」だけ回転するように制御する。すなわち回転指示部120は、回転方向を負の方向に設定し、「60°」分のパルス信号をモータ32aに出力する。
[ステップS203]角度算出部130は、回転指示部120によるモータ32aへのパルス信号の出力が終了すると、ジャイロセンサ31bの測定値を取得する。そして角度算出部130は、ジャイロセンサ31bの測定値に基づいて、式(4)に従って回転角Gzを算出する。脱調が発生していなければ、回転角Gzは「−60°」となる。角度算出部130は、算出した回転角Gzを、回転指示部120に通知する。
[ステップS204]回転指示部120は、重力の方向への指定された角度の回転制御を行う。例えばホストコンピュータ300から、重力の方向に「40°(V=40)」の回転指示を取得している場合、回転指示部120は、モータ32bを「40°」だけ回転するように制御する。すなわち回転指示部120は、回転方向を正の方向に設定し、「40°」分のパルス信号をモータ32bに出力する。
[ステップS205]角度算出部130は、回転指示部120によるモータ32bへのパルス信号の出力が終了すると、ジャイロセンサ31bの測定値を取得する。そして角度算出部130は、ジャイロセンサ31bの測定値に基づいて、式(3)に従って回転角Gyを算出する。脱調が発生していなければ、回転角Gyは「40°」となる。角度算出部130は、算出した回転角Gyを、回転指示部120に通知する。
[ステップS206]回転指示部120は、ホストコンピュータ300に、回転完了を通知する。するとホストコンピュータ300は、スピーカ33を用いて対象人物21向けの音声出力(声かけ)を行う。その間、回転指示部120は、ホストコンピュータ300による声かけ完了を待つ。ホストコンピュータ300は、声かけが完了すると、原点復帰指示をスピーカ装置30に送信する。回転指示部120は、原点復帰指示を受信すると、声かけが完了したものと認識し、処理をステップS211(図18参照)に進める。
図18は、声かけ用回転制御および原点復帰処理の手順の一例を示すフローチャート(2/2)である。以下、図18に示す処理をステップ番号に沿って説明する。
[ステップS211]回転指示部120は、ホストコンピュータ300からの原点復帰指示を取得する。例えば回転指示部120は、ホストコンピュータ300から、原点復帰指示として、水平方向に「−Gz」、重力の方向に「−Gy」の回転指示を取得する。この原点復帰指示は、ジャイロセンサ31bの測定値に基づいて計算した回転角の分だけの、反対方向への回転指示である。
[ステップS212]回転指示部120は、重力の方向への指定された角度「−Gy」の回転制御を行う。例えば回転角Gyが「40°」の場合、回転指示部120は、モータ32bを「−40°」だけ回転するように制御する。すなわち回転指示部120は、回転方向を負の方向に設定して、「40°」分のパルス信号をモータ32bに出力する。
[ステップS213]角度算出部130は、加速度センサ31aの測定値を取得する。そして角度算出部130は、加速度のX軸成分「Ax」とZ軸成分「Az」とに基づいて、上記の式(2)に従って重力の方向の角度差θy(傾き)を算出する。角度算出部130は、算出した重力の方向の角度差θyを、回転指示部120に通知する。
[ステップS214]回転指示部120は、重力の方向の角度差θyが「0°」か否かを判定する。なお回転指示部120は、重力の方向の角度差θyが「0°」か否かの判定において、ある程度の許容範囲を持たせてもよい。回転指示部120は、重力の方向の角度差θyが「0°」であれば、処理をステップS216に進める。回転指示部120は、重力の方向の角度差θyが「0°」でなければ、処理をステップS215に進める。
[ステップS215]回転指示部120は、現在の重力の方向の角度差θyと原点方向「θy=0」との差分に応じた回転角の重力の方向の回転制御を行う。例えば「重力の方向の角度差θy=5°」であれば、回転指示部120は、モータ32bを「−5°」だけ回転するように制御する。すなわち回転指示部120は、回転方向を負の方向に設定して、「5°」分のパルス信号をモータ32bに出力する。その後、回転指示部120は、処理をステップS213に進める。
[ステップS216]回転指示部120は、水平方向への指定された角度「−Gz」の回転制御を行う。例えば回転角Gzが「−60°」の場合、回転指示部120は、モータ32aを「60°」だけ回転するように制御する。すなわち回転指示部120は、回転方向を正の方向に設定して、「60°」分のパルス信号をモータ32aに出力する。
[ステップS217]角度算出部130は、地磁気センサ31cの測定値に基づいて、スピーカ33の水平方向の角度差θzを検出する。例えば角度算出部130は、地磁気センサ31cの測定値を取得する。そして角度算出部130は、取得した測定値に応じたスピーカ33の水平方向の角度差θzを回転指示部120に通知する。
[ステップS218]回転指示部120は、スピーカ33の水平方向の角度差θzが「0°」か否か、の判定において、ある程度の許容範囲を持たせてもよい。回転指示部120は、スピーカ33の水平方向の角度差θzが「0°」の場合、声かけ用回転制御および原点復帰処理を終了する。回転指示部120は、スピーカ33の水平方向の角度差θzが「0°」ではない場合、処理をステップS219に進める。
[ステップS219]回転指示部120は、現在のスピーカ33の水平方向の角度差に応じた回転角の水平方向の回転制御を行う。例えばスピーカ33を水平に向けた場合のスピーカの向きMと原点方位M0とは、地磁気センサの3軸方向の値を成分とするベクトルで表すことができる。この場合、回転指示部120は、スピーカ33を水平に向けた場合のスピーカの向きMのベクトルとM0のベクトルとの成す角を、スピーカ33の水平方向の角度差θzとする。算出したベクトル間の成す角が「5°」であれば、回転指示部120は、モータ32aを「−5°」だけ回転するように制御する。すなわち回転指示部120は、回転方向を負の方向に設定して、「5°」分のパルス信号をモータ32aに出力する。その後、回転指示部120は、処理をステップS217に進める。
このようにして、声かけ処理の後に、スピーカ33の向きが原点に復帰する。回転制御装置100は、原点に復帰する際には、加速度センサ31aの測定値に基づいて、スピーカ33の向きを原点方向(重力の方向)に一致させる。また回転制御装置100は、原点に復帰する際には、地磁気センサ31cの測定値に基づいて、水平向の向きを原点方位(スピーカ装置30の正面)に一致させる。これにより、回転の際に脱調が生じても、スピーカ33の向きを正しい向きに修正することができる。
また声かけの度に原点復帰処理を行うことで、脱調によるスピーカ33の向きのずれが累積せずに済み、次の声かけにおいて、対象人物21に正確に声かけを行うことができる。
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、原点復帰の際にスピーカ33の向きの誤差を補正するだけでなく、スピーカ33を対象人物21の方向に向けるとき(声かけ前)にもスピーカ33の向きの誤差を補正するものである。以下、第3の実施の形態における第2の実施の形態との相違点について説明する。
図19は、声かけ前におけるスピーカの向きの補正方法の一例を示す図である。図19の例では、回転制御装置100は、スピーカ33の方向を対象人物21に向ける場合、回転角を、加速区間、等速区間、および減速区間の3つの区間に分ける。加速区間は、回転速度(角速度)を徐々に速くする区間である。等速区間は、回転速度を一定に保つ区間である。減速区間は、回転速度を徐々に遅くする区間である。このようなモータ制御は、横軸に時間、縦軸に回転速度を採ったグラフを生成すると、図19に示す様な台形のグラフとなるため、台形制御と呼ばれる。
図19の例では、加速区間は、モータ32a,32bにおける1パルス分の回転角の100倍の角度に予め指定されている。モータ32a,32bが、1パルスのパルス信号の入力ごとに「0.1°」だけ回転する場合、加速区間の角度は「10°」となる。1パルスのパルス信号当りのモータ32a,32bの回転角は、ステップ角とも呼ばれ、モータ32a,32bの固有値である。回転指示部120は、加速区間において、1パルスのパルス信号の出力ステップを100ステップ分繰り返すことになる。その際、回転指示部120は、パルス信号の出力間隔を、徐々に短くする。
減速区間も、モータ32a,32bにおける1パルス分の回転角の100倍の角度に予め指定されている。モータ32a,32bが、1パルスのパルス信号の入力ごとに「0.1°」だけ回転する場合、減速区間の角度は「10°」となる。回転指示部120は、等速区間において脱調が発生していなければ、減速区間において、1パルスのパルス信号の出力ステップを100ステップ分繰り返すことになる。その際、回転指示部120は、パルス信号の出力間隔を、徐々に長くする。
等速区間は、指定された角度から加速区間の角度と減速区間の角度を除いた残りの角度となる。図19の例では、ホストコンピュータ300から指示された回転角が「60°」であるため、等速区間は「40°」となる。この場合、回転指示部120は、加速区間において脱調が発生していなければ、等速区間において、1パルスのパルス信号の出力ステップを400ステップ分繰り返すことになる。その際、回転指示部120は、パルス信号の出力間隔を一定に保つ。
なお脱調が発生しない場合の等速区間でのパルス信号出力のステップ数は、以下の式で求められる。
ステップ数=(指定された角度/ステップ角)−(加速区間のステップ数×2)
このように回転角を3つの区間に分けることで、スピーカ33のスムーズな回転が可能となる。
そして回転制御装置100は、各区間の終了時点で、回転角の誤差を補正する。すなわち回転制御装置100は、加速区間から等速区間に移行するときに回転角の誤差を補正し、等速区間から減速区間に移行するときの回転角の誤差を補正し、減速区間後に停止したときにも回転角の誤差を補正する。
加速区間、等速区間、および減速区間それぞれでの実際の回転角は、ジャイロセンサ31bの測定値を用いて計算することで、高精度に計算することができる。回転制御装置100は、ジャイロセンサ31bの測定値を用いて計算した各区間の回転角と、回転指示で指定された指定角度に応じて決定された角区間の回転角との誤差を計算して、誤差の分の補正を行う。
停止後は、回転制御装置100は、加速度センサ31aの測定値を用いて、重力の方向の角度差θyを計算する。そして回転制御装置100は、計算した重力の方向の角度差θyと指定角度との誤差を計算して、誤差の分の補正を行う。
図19の例では、加速区間の終了時点において、ジャイロセンサ31bの測定値を用いて計算した回転角Gyは「8°」である。すると加速区間における本来の回転角「10°」に「2°」不足している。この場合、回転制御装置100は、等速区間におけるパルス信号の出力ステップ数を、「2°」の回転分だけ増加させる補正を行う。図19の例では、ステップ角が「0.1°」なので、等速区間に20ステップ追加される。その結果、回転制御装置100は、等速区間において420ステップのパルス信号の出力を行う。
図19の例では、等速区間の終了時点において、ジャイロセンサ31bの測定値を用いて計算した回転角Gyは「50°」である。この場合、誤差がないため、補正は行われない。従って、回転制御装置100は、減速区間において100ステップのパルス信号の出力を行う。
減速区間の終了時点において、加速度センサ31aの測定値が「Ax=8.027,Az=−5.62」であったものとする。この場合、式(2)に従って重力の方向の角度差θyを計算すると「55°」となる。すると、指定された角度「60°」に対して「5°」の誤差がある。この場合、回転制御装置100は、さらに「5°」分の回転制御(50ステップのパルス信号の出力)を行う。
区間の終了時点で補正を行うことで、減速区間の終了時点での誤差を少なく抑えることができる。例えば回転制御装置100は、スピーカ33を対象人物21に向けるときの回転制御においては、減速区間の終了時点での誤差が「3°」以下の場合には補正を行わないようにする。これにより、スピーカ33の回転を停止させた後に、再度、小刻みに回転させるような補正を抑止することができる。なお回転制御装置100は、原点復帰の際には、停止後にさらに高精度(例えば誤差「1°」以下)にスピーカ33の向きを補正する。
図20は、声かけ前におけるスピーカの向きの制御手順の一例を示すフローチャートである。図20に示す処理のうち、ステップS301,S306の処理は、それぞれ図17に示した第2の実施の形態のステップS201,S206の処理と同様である。またステップS306の終了後は、第2の実施の形態と同様に、図18に示すステップS211〜S219の処理が実行される。以下、第2の実施の形態と異なる処理について、ステップごとに説明する。
[ステップS302]回転指示部120は、加速区間の角度「10°」分の水平方向への回転制御を行う。例えば指定角度が「−60°」であれば、回転指示部120は、モータ32aを「−10°」だけ回転するように制御する。すなわち回転指示部120は、回転方向を負の方向に設定し、「10°」分のパルス信号(100ステップ)をモータ32aに出力する。
[ステップS303]回転制御装置100内の回転指示部120と角度算出部130とは協働して、回転途中での補正を伴う水平方向回転処理を実施する。水平方向回転処理の詳細は後述する(図21参照)。
[ステップS304]回転指示部120は、加速区間の角度「10°」分の重力の方向への回転制御を行う。例えば指定角度が「60°」であれば、回転指示部120は、モータ32bを「10°」だけ回転するように制御する。すなわち回転指示部120は、回転方向を正の方向に設定し、「10°」分のパルス信号をモータ32bに出力する。
[ステップS305]回転制御装置100内の回転指示部120と角度算出部130とは協働して、回転途中での補正を伴う重力の方向回転処理を実施する。重力の方向回転処理の詳細は後述する(図22参照)。
次に、水平方向回転処理について詳細に説明する。
図21は、回転途中での補正を伴う水平方向回転処理の手順の一例を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。
[ステップS401]角度算出部130は、ジャイロセンサ31bの測定値に基づいて回転角Gzを算出する。ステップS302(図20参照)において100ステップのパルス信号出力が行われており、脱調が発生していなければ、回転角Gzは「−10°」となる。
[ステップS402]回転指示部120は、回転角Gzの絶対値が「ステップ角×加速区間におけるステップ数(100)」と等しいか否かを判定する。なお回転指示部120は、回転角Gzの絶対値が「ステップ角×加速区間におけるステップ数(100)」と等しいか否かの判定において、ある程度の許容範囲を持たせてもよい。回転指示部120は、回転角Gzの絶対値が「ステップ角×加速区間におけるステップ数(100)」と等しい場合、処理をステップS403に進める。また回転指示部120は、回転角Gzの絶対値が「ステップ角×加速区間におけるステップ数(100)」と等しくない場合、処理をステップS404に進める。
[ステップS403]回転指示部120は、現在の回転角と加速区間の角度とにずれがないため、回転角の補正を行わずに等速区間における水平方向の等速回転制御を行う。すなわち回転指示部120は、「指定角度/ステップ角−加速区間のステップ数(100ステップ)×2」に相当する回数だけ、モータ32aへのパルス信号の出力ステップを実行する。例えば指定角度が「−60°」であれば、回転指示部120は、400ステップ分のパルス信号の出力を行う。その後、回転指示部120は処理をステップS406に進める。
[ステップS404]回転指示部120は、回転誤差分のステップ数「αH」を計算する。回転誤差分のステップ数は、「{ステップ角×加速区間におけるステップ数(100)−|Gz|}×100」で求められる。
[ステップS405]回転指示部120は、回転角の補正を伴う、等速区間における水平方向の等速回転制御を行う。すなわち回転指示部120は、「指定角度/ステップ角−加速区間のステップ数(100ステップ)×2+αH」に相当する回数だけ、モータ32aへのパルス信号の出力ステップを実行する。
[ステップS406]角度算出部130は、ジャイロセンサ31bの測定値に基づいて回転角Gzを算出する。例えば等速区間が「−40°」分の区間の場合、等速区間で脱調が生じていなければ、回転角Gzは「−50°」となる。
[ステップS407]回転指示部120は、回転角Gzの絶対値が「|指定角度|−ステップ角×減速区間におけるステップ数(100)」と等しいか否かを判定する。なお回転指示部120は、回転角Gzの絶対値が「|指定角度|−ステップ角×減速区間におけるステップ数(100)」と等しいか否かの判定において、ある程度の許容範囲を持たせてもよい。回転指示部120は、回転角Gzの絶対値が「|指定角度|−ステップ角×減速区間におけるステップ数(100)」と等しい場合、処理をステップS408に進める。また回転指示部120は、回転角Gzの絶対値が「|指定角度|−ステップ角×減速区間におけるステップ数(100)」と等しくない場合、処理をステップS409に進める。
[ステップS408]回転指示部120は、減速区間の角度「10°」分の水平方向への回転制御を行う。例えば指定角度が「−60°」であれば、回転指示部120は、モータ32aを「−10°」だけ回転するように制御する。すなわち回転指示部120は、回転方向を負の方向に設定し、「10°」分のパルス信号(100ステップ)をモータ32aに出力する。その後、回転指示部120は、処理をステップS411に進める。
[ステップS409]回転指示部120は、回転誤差分のステップ数「βH」を計算する。回転誤差分のステップ数は、「{|指定角度|−ステップ角×減速区間におけるステップ数(100)−|Gz|}×100」で求められる。
[ステップS410]回転指示部120は、回転角の補正を伴う、減速区間における水平方向の等速回転制御を行う。すなわち回転指示部120は、「減速区間のステップ数(100ステップ)+βH」に相当する回数だけ、モータ32aへのパルス信号出力ステップを実行する。
[ステップS411]角度算出部130は、ジャイロセンサ31bの測定値に基づいて回転角Gzを算出する。例えば指定角度が「−60°」の場合、減速区間で脱調が生じていなければ、回転角Gzは「−60°」となる。
[ステップS412]回転指示部120は、回転角Gzの絶対値が指定角度と等しいか否かを判定する。なお回転指示部120は、回転角Gzの絶対値が指定角度と等しいか否かの判定において、ある程度の許容範囲を持たせてもよい。回転指示部120は、回転角Gzの絶対値が指定角度と等しい場合、水平方向回転処理を終了する。また回転指示部120は、回転角Gzの絶対値が指定角度と等しくない場合、処理をステップS413に進める。
[ステップS413]回転指示部120は、誤差分の水平方向への回転制御を行う。例えば回転指示部120は、「指定角度−回転角Gz」を誤差の角度とし、誤差の角度だけ回転するように、モータ32aを制御する。すなわち回転指示部120は、誤差の角度分のパルス信号(誤差の角度×100ステップ)をモータ32aに出力する。その後、回転指示部120は、処理をステップS411に進める。
このようにして、回転途中で回転角の補正を行いながら、水平方向の回転処理を行うことができる。
図22は、回転途中での補正を伴う重力の方向回転処理の手順の一例を示すフローチャートである。以下、図22に示す処理をステップ番号に沿って説明する。
[ステップS501]角度算出部130は、ジャイロセンサ31bの測定値に基づいて回転角Gyを算出する。ステップS304(図20参照)において100ステップのパルス信号出力が行われており、脱調が発生していなければ、回転角Gyは「10°」となる。
[ステップS502]回転指示部120は、回転角Gyの絶対値が「ステップ角×加速区間におけるステップ数(100)」と等しいか否かを判定する。なお回転指示部120は、回転角Gyの絶対値が「ステップ角×加速区間におけるステップ数(100)」と等しいか否かの判定において、ある程度の許容範囲を持たせてもよい。回転指示部120は、回転角Gyの絶対値が「ステップ角×加速区間におけるステップ数(100)」と等しい場合、処理をステップS503に進める。また回転指示部120は、回転角Gyの絶対値が「ステップ角×加速区間におけるステップ数(100)」と等しくない場合、処理をステップS504に進める。
[ステップS503]回転指示部120は、現在の回転角と加速区間の角度とにずれがないため、回転角の補正を行わずに等速区間における重力の方向の等速回転制御を行う。すなわち回転指示部120は、「指定角度/ステップ角−加速区間のステップ数(100)×2」に相当する回数だけ、モータ32bへのパルス信号出力ステップを実行する。例えば指定角度が「60°」であれば、回転指示部120は、400ステップ分のパルス信号の出力を行う。その後、回転指示部120は処理をステップS506に進める。
[ステップS504]回転指示部120は、回転誤差分のステップ数「αV」を計算する。回転誤差分のステップ数は、「{ステップ角×加速区間におけるステップ数(100)−|Gy|}×100」で求められる。
[ステップS505]回転指示部120は、回転角の補正を伴う、等速区間における重力の方向の等速回転制御を行う。すなわち回転指示部120は、「指定角度/ステップ角−加速区間のステップ数(100)×2+αV」に相当する回数だけ、モータ32bへのパルス信号出力ステップを実行する。
[ステップS506]角度算出部130は、ジャイロセンサ31bの測定値に基づいて回転角Gyを算出する。例えば等速区間が「40°」分の区間の場合、等速区間で脱調が生じていなければ、回転角Gyは「50°」となる。
[ステップS507]回転指示部120は、回転角Gyの絶対値が「|指定角度|−ステップ角×減速区間におけるステップ数(100)」と等しいか否かを判定する。なお回転指示部120は、回転角Gyの絶対値が「|指定角度|−ステップ角×減速区間におけるステップ数(100)」と等しいか否かの判定において、ある程度の許容範囲を持たせてもよい。回転指示部120は、回転角Gyの絶対値が「|指定角度|−ステップ角×減速区間におけるステップ数(100)」と等しい場合、処理をステップS508に進める。また回転指示部120は、回転角Gyの絶対値が「|指定角度|−ステップ角×減速区間におけるステップ数(100)」と等しくない場合、処理をステップS509に進める。
[ステップS508]回転指示部120は、減速区間の角度「10°」分の重力の方向への回転制御を行う。例えば指定角度が「60°」であれば、回転指示部120は、モータ32bを「10°」だけ回転するように制御する。すなわち回転指示部120は、回転方向を正の方向に設定し、「10°」分のパルス信号(100ステップ)をモータ32bに出力する。その後、回転指示部120は、処理をステップS511に進める。
[ステップS509]回転指示部120は、回転誤差分のステップ数「βV」を計算する。回転誤差分のステップ数は、「{|指定角度|−ステップ角×減速区間におけるステップ数(100)−|Gy|}×100」で求められる。
[ステップS510]回転指示部120は、回転角の補正を伴う、減速区間における重力の方向の等速回転制御を行う。すなわち回転指示部120は、「加速区間のステップ数(100ステップ)+βV」に相当する回数だけ、モータ32bへのパルス信号出力ステップを実行する。
[ステップS511]角度算出部130は、ジャイロセンサ31bの測定値に基づいて回転角Gyを算出する。例えば指定角度が「60°」の場合、減速区間で脱調が生じていなければ、回転角Gyは「60°」となる。
[ステップS512]回転指示部120は、回転角Gyの絶対値が指定角度と等しいか否かを判定する。なお回転指示部120は、回転角Gyの絶対値が指定角度と等しいか否かの判定において、ある程度の許容範囲を持たせてもよい。回転指示部120は、回転角Gyの絶対値が指定角度と等しい場合、重力の方向回転処理を終了する。また回転指示部120は、回転角Gyの絶対値が指定角度と等しくない場合、処理をステップS513に進める。
[ステップS513]回転指示部120は、誤差分の重力の方向への回転制御を行う。例えば回転指示部120は、「指定角度−回転角Gy」を誤差の角度とし、誤差の角度だけ回転するように、モータ32bを制御する。すなわち回転指示部120は、誤差の角度分のパルス信号(誤差の角度×100ステップ)をモータ32bに出力する。その後、回転指示部120は、処理をステップS511に進める。
このようにして、回転途中で回転角の補正を行いながら、重力の方向の回転処理を行うことができる。
このように、対象人物21にスピーカ33を向ける際にも回転角の補正を行うことで、スピーカ33から出力された音声を正確に対象人物21に届けることができる。またスピーカ33の回転動作中にも回転角の補正を行うことで、補正を行いながらも、スピーカ33を滑らかに回転させることができる。
〔第4の実施の形態〕
次に第4の実施の形態について説明する。第4の実施の形態は、ジャイロセンサ31bを用いずに、回転角のずれを補正するものである。
図23は、ジャイロセンサを用いない場合の初期化処理の手順の一例を示すフローチャートである。なお、図23に示すステップS601〜S606の処理は、それぞれ図15に示す第2の実施の形態のステップS101〜S106と同様である。そこで第2の実施の形態と異なるステップS607以降の処理について、以下にステップ番号に沿って説明する。
[ステップS607]角度算出部130は、地磁気センサ31cの測定値を取得する。そして角度算出部130は、地磁気センサ31cの測定値に基づいて、現在のスピーカ33の向きの方位M1を決定する。
[ステップS608]回転指示部120は、スピーカ33の、水平方向への所定の角度の等速回転制御を行う。例えば、初期化処理時の水平方向の基準回転角ZHが「10°」に設定されているものとする。この場合、回転指示部120は、モータ32aを「10°」だけ回転するように制御する。すなわち回転指示部120は、「10°」分のパルス信号をモータ32aに出力する。
[ステップS609]角度算出部130は、地磁気センサ31cの測定値を取得する。そして角度算出部130は、地磁気センサ31cの測定値に基づいて、現在のスピーカ33の向きの方位M1’を決定する。
[ステップS610]回転指示部120は、方位M1’と方位M1との差分(|M1’−M1|)が基準回転角ZH「10°」に等しいか否かを判定する。なお回転指示部120は、方位M1’と方位M1との差分が基準回転角ZH「10°」に等しいか否かの判定において、ある程度の許容範囲を持たせてもよい。回転指示部120は、方位M1’と方位M1との差分が「10°」であれば、処理をステップS608に進める。回転指示部120は、方位M1’と方位M1との差分が「10°」でなければ、処理をステップS611に進める。
[ステップS611]回転指示部120は、スピーカ33の、水平方向への所定の角度(例えば水平方向の回転の可動範囲の角度の半分)の等速回転制御を行う。例えば、水平方向の回転の可動範囲が「180°」であり、ステップS608〜S610の処理により正の回転方向の端部までスピーカ33が回転しているものとする。この場合、回転指示部120は、モータ32aを「−90°」だけ回転するように制御する。すなわち回転指示部120は、回転方向を負の方向に設定し、「90°」分のパルス信号をモータ32aに出力する。
[ステップS612]角度算出部130は、回転指示部120によるモータ32aへのパルス信号の出力が終了すると、地磁気センサ31cの測定値を取得する。そして角度算出部130は、地磁気センサ31cの測定値に基づいて原点方位M0を決定する。すなわち角度算出部130は、現時点のスピーカ33の向きを水平にした場合にスピーカ33が向く方位を原点方位M0とする。角度算出部130は、取得した地磁気センサ31cの測定値を、原点方位情報として記憶部110に格納する。
このようにして、初期化時に、ジャイロセンサ31bを用いずに、原点方位M0を定めることができる。その後、角度算出部130は、スピーカ33の水平方向の回転時の回転角を、その時点でスピーカ33の向きを水平にした場合のスピーカ33の向きと原点方位M0との差分によって算出する。また、角度算出部130は、スピーカ33の重力の方向の回転時の回転角を、加速度センサ31aの測定値に基づいて得られる傾きによって算出する。これにより、ジャイロセンサ31bを用いなくても、水平方向の回転角および重力の方向の回転角の誤差の補正が可能となる。
〔その他の実施の形態〕
第2〜第4の実施の形態では、各センサは3次元のセンサであるが、例えば加速度センサ31aで測定した加速度のY軸成分は使用していないため、加速度センサ31aとしては2次元のセンサを使用することもできる。またスピーカ33の正面方向の重力方向からの傾きは、例えば1つの軸(例えば図8に示すX軸またはZ軸)の成分の値の変化によって算出することも可能である。そのため、加速度センサ31aとして1次元のセンサを用いることも可能である。
また地磁気センサ31cとしては、水平方向での方位を検出できればよいため、2次元のセンサを用いることも可能である。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。