以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。
図1は、第1の実施の形態に係る情報処理システムの一例を示す図である。図1の例では、情報処理装置10が、スピーカ1の向きを決定する回転軸3の回転の角変位を算出する。情報処理装置10は、角変位算出の処理手順が記述されたプログラムを実行することにより、角変位算出処理を実施することができる。
情報処理装置10には、スピーカ1とホストコンピュータ2とが接続されている。また、スピーカ1とホストコンピュータ2とが接続されている。なお、スピーカ1とホストコンピュータ2とは、情報処理装置10を介して接続されていてもよい。
スピーカ1は、回転軸3を中心とした回転の角変位によって音を発する方向が決定される。なお以下では、回転軸3を中心とした回転を軸回転ということがある。スピーカ1は例えば、超音波によって音を発するパラメトリックスピーカである。スピーカ1は、軸回転によって向きが変わり、回転軸3に垂直な方向に音を発する。一例として回転軸3は、天井から鉛直下方向に延びる回転軸であり、例えばステッピングモータなどのモータの軸の回転に伴って回転する。またスピーカ1には、軸回転に伴って移動するカメラ4が取り付けられている。カメラ4は、例えば天井を撮影できるようにスピーカ1に取り付けられる。
マーカ5は、天井に設置されたマーカである。マーカ5は、軸回転の角変位が所定の角度(例えば、0[°])の場合に、カメラ4によって撮影される画像に写る位置に設置される。
ホストコンピュータ2は、軸回転を制御する。例えばホストコンピュータ2は、軸回転の角変位が目的の角度になるように(すなわち、スピーカ1が目的方向を向くように)、軸回転の角変位を変動させる。このときホストコンピュータ2は、軸回転の現在の角変位を記憶しておき、現在の角変位と目的の角度との差だけ軸回転の角変位を変動させる。軸回転の現在の角変位は、スピーカ1の現在の向きを示す情報ということもできる。ホストコンピュータ2によって軸回転の角変位を変動させる命令は、例えばパルス信号で回転量や回転速度を設定して行われる。
ここで脱調などにより、ホストコンピュータ2から指示された回転量と実際の軸回転の回転量とがずれることがある。すると、ホストコンピュータ2が記憶する軸回転の現在の角変位と実際の軸回転の角変位とに差異が生じる。そこでホストコンピュータ2と情報処理装置10とが連携して、軸回転の較正を行う。以下に示す情報処理装置10による処理は、ホストコンピュータ2に記憶されている現在の軸回転の角変位が0[°]になるように、ホストコンピュータ2が軸回転の角変位を変動させてから行われる。
情報処理装置10は、記憶部11と処理部12とを有する。記憶部11は、例えば情報処理装置10が有するメモリまたはストレージ装置である。処理部12は、例えば情報処理装置10が有するプロセッサ、または演算回路である。
記憶部11は、基準座標11aと回転軸座標11bとを記憶する。基準座標11aは、軸回転の角変位が0[°]でカメラ4によって画像が撮影される場合にマーカ5が写る位置の位置座標である。回転軸座標11bは、カメラ4によって撮影される画像を含む座標系における回転軸3の位置座標である。なお第1の実施の形態では、軸回転の角変位がいずれの角度でも、回転軸座標11bは共通である。回転軸座標11bは、例えば軸回転の角変位が0[°]でカメラ4によって撮影された画像に写ったマーカ5などを基に算出される。
処理部12は、カメラ4から、カメラ4によって撮影されたカメラ画像6を取得する。処理部12は、取得したカメラ画像6のマーカ5が写った位置に基づいて、軸回転の角変位を算出する。例えば処理部12は、カメラ画像6に写ったマーカ5をパターンマッチングにより検出する。そして処理部12は、取得したカメラ画像6にマーカ5が写った位置と、基準座標11aに示される位置とのずれに基づいて軸回転の角変位を算出する。
一例として基準座標11aは、カメラ画像6を含む座標系7における座標(xc,y0)を示し、回転軸座標11bは、座標系7における座標(xc,yc)を示すものとする。ここで座標系7におけるカメラ画像6のマーカ5の位置座標が(x,y)であったものとする。このとき軸回転の角変位は、マーカ5の位置座標と回転軸座標11bとを結ぶ直線と、基準座標11aと回転軸座標11bとを結ぶ直線とがなす角θであり、θ=tan-1((xc−x)/(yc−y))の式で算出される。
処理部12は、算出した角変位θをホストコンピュータ2に通知する。ホストコンピュータ2は、算出された角変位θに基づいて軸回転の角変位を較正する。例えばホストコンピュータ2は、軸回転の角変位を角度θだけ変動させ、記憶している軸回転の現在の角変位を0[°]に設定してもよい。また例えばホストコンピュータ2は、記憶している軸回転軸の現在の角変位をθに設定してもよい。
このような情報処理装置10によれば、スピーカ1に取り付けられたカメラ4から、カメラ画像6が取得される。そしてカメラ画像6に写ったマーカ5の位置に基づいて、軸回転の角変位が算出される。スピーカ1の音を発する方向は、軸回転の角変位によって決定されるため、軸回転の角変位が算出されることでスピーカ1の現在の向きを示す情報の精度が向上する。
また、カメラ画像6に写ったマーカ5の位置と基準座標11aとのずれに基づいて、軸回転の角変位が算出される。これにより、スピーカ1の向きを制御するために保持されている軸回転の現在の角変位と、実際の軸回転の角変位とのずれを検知することができるようになる。
また座標系7によって、回転軸3の位置が示される。そして座標系7において、カメラ画像6に写ったマーカ5の位置と回転軸3の位置とを結ぶ直線と、基準座標11aと回転軸3の位置とを結ぶ直線とがなす角が算出される。これにより、角変位の所定の角度からのずれを算出する精度が向上する。
なお上記の例では、カメラ画像6に写った領域に垂直な回転軸3の位置が座標系7で示され、回転軸3の位置に基づいて軸回転の角変位が算出されていた。これに対して処理部12は、基準座標11aと、取得したカメラ画像6に写ったマーカ5の位置との変位に基づいて、軸回転の角変位を算出してもよい。これにより、回転軸3がカメラ画像6に写った領域に垂直でない場合でも、軸回転の角変位を算出することができるようになる。
また処理部12は、軸回転の角変位が変動すると、軸回転の角変位を算出し、算出した角変位を、ホストコンピュータ2に通知してもよい。これにより、スピーカ1を利用しながら、軸回転の角変位の較正ができるようになる。
また処理部12は、軸回転の角変位の変動中に、軸回転の角変位を算出し、算出した角変位と目的の角度との差の絶対値が閾値以下の場合、軸回転の角変位の変動を停止させてもよい。これにより、情報処理装置10によって軸回転を制御することができるようになる。
またスピーカ1がパラメトリックスピーカである場合、スピーカ1が発する音声は直進する。よってスピーカ1の向きを示す情報が精度良く算出されることによって、スピーカ1が音声を届ける方向が精度良く算出される。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、2つの回転軸によって向きが決定されるスピーカを較正するものである。
図2は、第2の実施の形態のシステム構成の一例を示す図である。図2に示される情報処理システムは、例えば店舗などの施設に設置される。情報処理システムが設置された施設内の対象人物21は、例えば施設内で怪しい挙動を示す人物である。また情報処理システムが設置された施設内には、カメラ42とスピーカ33とが設置されている。図2に示される情報処理システムは、カメラ42によって対象人物21を検知し、スピーカ33によって対象人物21に向けて音声を出力する。
回転制御装置100は、ホストコンピュータ300の指示に応じて、スピーカ33の向きを決定するためのモータを回転させる。例えば回転制御装置100は、ホストコンピュータ300から通知された回転速度で、ホストコンピュータ300から通知された回転数だけ、モータを回転させる。また回転制御装置100は、スピーカ33に取り付けられたカメラが撮影する画像を用いて、スピーカ33の向き(モータの角変位)を算出し、ホストコンピュータ300に通知する。回転制御装置100は、コントローラ200を介してホストコンピュータ300に接続されている。
ホストコンピュータ300は、対象人物21の検出とスピーカ33の制御とを行う。ホストコンピュータ300は、カメラ42の撮影した画像(映像でもよい)を取得し、対象人物21を検出する。またホストコンピュータ300は、コントローラ200を介してスピーカ33から出力する音声を制御する。例えばホストコンピュータ300は、スピーカ33から出力する音声の大きさや内容(音声ファイル)を決定する。
またホストコンピュータ300は、コントローラ200と回転制御装置100とを介してスピーカ33の向きを制御する。ホストコンピュータ300は、スピーカ33が対象人物21の方向を向くようなモータの回転数を算出する。そしてホストコンピュータ300は、回転速度や、スピーカ33が対象人物21の方向を向くようにするための回転数を回転制御装置100に通知する。
図3は、回転制御装置およびコントローラのハードウェアの一構成例を示す図である。回転制御装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス107を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、回転制御装置100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス107に接続されている周辺機器としては、ストレージ装置103、機器接続インタフェース104、モータドライバ105および接続インタフェース106がある。
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばフラッシュメモリを使用することができる。
機器接続インタフェース104には、カメラ31が接続されている。カメラ31は、例えばスピーカ33に設置される、撮影装置である。カメラ31は、プロセッサ101からの命令に従って、カメラ31のレンズを向けた先の光景の静止画または動画のデータを生成し、メモリ102に格納する。
モータドライバ105には、モータ32a,32bが接続されている。モータドライバ105は、プロセッサ101からパルス信号を受け取りモータ32a,32bの軸を回転させる。モータ32a,32bは、例えばパルス数に比例した量だけ軸が回転するステッピングモータである。
接続インタフェース106は、コントローラ200と接続するためのインタフェースである。接続インタフェース106が用いる規格としては、例えばRS−485などがある。
回転制御装置100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した情報処理装置10も、図3に示した回転制御装置100と同様のハードウェアにより実現することができる。またプロセッサ101は、第1の実施の形態に示した処理部12の一例である。またメモリ102またはストレージ装置103は、第1の実施の形態に示した記憶部11の一例である。またカメラ31は、第1の実施の形態に示したカメラ4の一例である。
回転制御装置100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。回転制御装置100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、回転制御装置100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また回転制御装置100に実行させるプログラムを、光ディスク、メモリ装置、メモリカードなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。
コントローラ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と同様である。
図4は、ホストコンピュータのハードウェアの一例を示す図である。ホストコンピュータ300は、プロセッサ301によって装置全体が制御されている。プロセッサ301には、バス311を介してメモリ302と複数の周辺機器が接続されている。プロセッサ301は、マルチプロセッサであってもよい。プロセッサ301は、例えばCPU、MPU、またはDSPである。プロセッサ301がプログラムを実行することで実現する機能の少なくとも一部を、ASIC、PLDなどの電子回路で実現してもよい。
メモリ302は、ホストコンピュータ300の主記憶装置として使用される。メモリ302には、プロセッサ301に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ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−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース308は、ホストコンピュータ300に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース308には、メモリ装置46やメモリリーダライタ47を接続することができる。メモリ装置46は、機器接続インタフェース308との通信機能を搭載した記録媒体である。メモリリーダライタ47は、メモリカード48へのデータの書き込み、またはメモリカード48からのデータの読み出しを行う装置である。メモリカード48は、カード型の記録媒体である。
接続インタフェース309は、コントローラ200と接続するためのインタフェースである。接続インタフェース309が用いる規格は、ハブ201が用いる規格と同様である。
ネットワークインタフェース310は、ネットワーク20に接続されている。ネットワークインタフェース310は、ネットワーク30を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
ホストコンピュータ300は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。ホストコンピュータ300は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。ホストコンピュータ300に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、ホストコンピュータ300に実行させるプログラムをストレージ装置303に格納しておくことができる。プロセッサ301は、ストレージ装置303内のプログラムの少なくとも一部をメモリ302にロードし、プログラムを実行する。またホストコンピュータ300に実行させるプログラムを、光ディスク45、メモリ装置46、メモリカード48などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ301からの制御により、ストレージ装置303にインストールされた後、実行可能となる。またプロセッサ301が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
次に、スピーカ33の性質について説明する。
図5は、スピーカに対する位置と音圧レベルとの関係の一例を示す図である。以下では、指向性のないスピーカ40とパラメトリックスピーカであるスピーカ33との違いについて説明する。なお図5では、スピーカ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の回転に伴って変動する。ホストコンピュータ300は、2つの軸回転の現在の角変位を記憶しておき、現在の角変位と目的の角度との差だけ軸回転の角変位が変動するように、モータ32a,32bの軸を回転させる。
このとき、ホストコンピュータ300から指示された回転量と実際のモータ32a,32bの回転量とが脱調などによりずれることがある。すると、ホストコンピュータ300が記憶する軸回転の現在の角変位と実際の軸回転の角変位とに差異が生じる。そして、このように生じた差異だけスピーカ33の向きが目的の方向からずれる。スピーカ33の向きが目的の方向からずれると、スピーカ33が音声を届けられる幅は小さいため、対象人物21に音声を届けられなくなることがある。
そこで第2の実施の形態では、回転制御装置100とホストコンピュータ300とが連携して、スピーカ33の向きのずれをキャリブレーション(較正)する。以下では一例として、ホストコンピュータ300が記憶する2つの軸回転の角変位と、2つの軸回転の実際の角変位とが0[°]になるように較正される。
次に、スピーカ33の設置方法について説明する。
図6は、スピーカの設置方法の一例を示す図である。スピーカ33は、土台34と支柱35とによって天井に設置されている。土台34は、天井に設置された円形の土台である。土台34には、支柱35とマーカ36とが設置されている。
支柱35は、土台34の中心から鉛直下方向に伸びる円柱状の支柱である。支柱35は、モータ32aによって回転する。モータ32aによる支柱35の回転は、土台34の中心を通り鉛直方向に伸びる回転軸37aを中心とする回転の角変位の変動である。なお、回転軸37aを中心とする回転の角変位の変動を水平方向の回転といい、回転軸37aを中心とする回転の角変位を水平方向の角変位ということがある。
支柱35には、スピーカ33が設置されている。スピーカ33は、モータ32bの軸によって回転する。モータ32bによるスピーカ33の回転は、支柱35に対して垂直に伸びる回転軸37bを中心とする回転の角変位の変動である。なお、回転軸37bを中心とする回転の角変位の変動を垂直方向の回転といい、回転軸37bを中心とする回転の角変位を垂直方向の角変位ということがある。またスピーカ33には、カメラ31が設置されている。ここでカメラ31は、垂直方向の角変位が0[°]の場合に、レンズが土台34および天井を向くようにスピーカ33に設置される。
マーカ36は、土台34のマーカ36が設置されていない部分とは異なる模様のマーカである。マーカ36は、水平方向の角変位および垂直方向の角変位が共に0[°]である場合に、カメラ31で撮影される画像(基準画像)に写る位置に設置される。
以下、回転制御装置100およびホストコンピュータ300の機能について詳細に説明する。
図7は、回転制御装置およびホストコンピュータの機能例を示すブロック図である。回転制御装置100は、記憶部120、モータ制御部130、画像解析部140および角度算出部150を有する。
記憶部120は、座標テーブル121を記憶する。座標テーブル121は、基準画像におけるマーカ36の位置座標を記憶する。また座標テーブル121は、基準画像における回転軸37aの位置座標を記憶する。モータ制御部130は、ホストコンピュータ300からの指示に応じてモータ32a,32bを回転させる。
画像解析部140は、カメラ31から画像を取得し、マーカ36の位置座標を特定する。例えば画像解析部140は、カメラ31が撮影した画像を取得する。画像解析部140は、取得した画像からパターンマッチングによってマーカ36を検出し、マーカ36の位置座標を特定する。
角度算出部150は、水平方向の角変位および垂直方向の角変位を算出する。角度算出部150は、基準画像におけるマーカ36の位置座標と、回転軸37aの位置座標と、画像解析部140が特定したマーカ36の位置座標とに基づいて、水平方向の角変位を算出する。また角度算出部150は、基準画像におけるマーカ36の位置座標と、画像解析部140が特定したマーカ36の位置座標とに基づいて、マーカ36の画像上の変位を算出する。角度算出部150は、マーカ36の画像上の変位を実空間上の変位に変換する。そして角度算出部150は、実空間上の変位と土台34から回転軸37bまでの距離とに基づいて垂直方向の角変位を算出する。
ホストコンピュータ300は、記憶部320および回転命令部330を有する。記憶部320は、現在角変位321を記憶する。現在角変位321は、回転命令部330が過去に回転制御装置100に送った回転命令に基づいて記録されている、現在の水平方向の角変位および垂直方向の角変位である。
回転命令部330は、回転数や回転速度を指定し、回転制御装置100にモータ32a,32bを回転させる。例えば回転命令部330は、現在角変位321を参照し、目的の角度との差の角度を算出する。回転命令部330は、算出した差の角度だけ、水平方向の回転および垂直方向の回転が起こるような、モータ32a,32bの回転数を算出する。回転命令部330は、算出した回転数を回転制御装置100に通知し、回転制御装置100にモータ32a,32bを回転させる。回転命令部330は、現在角変位321を目的の角度に設定する。
なお、図7に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図7に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次に、カメラ31によって撮影された画像を用いた角変位の算出方法について説明する。
図8は、基準画像の一例を示す図である。基準画像51は、水平方向の角変位および垂直方向の角変位が0[°]の場合に、カメラ31によって撮影される画像である。基準画像51における、マーカ36および回転軸37aの位置座標を示すための座標系の一例として、基準画像51の左上を原点とし、基準画像51の右方向に伸びる軸をx軸、基準画像51の下方向に伸びる軸をy軸とした座標系50が定義される。
基準画像51に写るマーカ36の座標系50における位置座標(基準座標)は、(xc,y0)である。ここで、回転軸37aを示す位置が基準画像51上にない場合(すなわち、土台34の中心が基準画像51に写っていない場合)がある。その場合、例えば基準画像51に写ったマーカ36や土台34を基に回転軸37aの位置座標が算出される。このように算出された回転軸37aの位置座標(回転軸座標)を(xc,yc)とする。
以下では、現在角変位321に示される水平方向の角変位および垂直方向の角変位が共に0[°]である場合に、カメラ31によって撮影される画像に写るマーカ36の位置座標のずれに基づいて、水平方向の角変位および垂直方向の角変位が算出される。まず水平方向の角変位の算出方法について説明する。
図9は、水平方向の角変位を算出するためのカメラ画像の一例を示す図である。カメラ画像52は、水平方向の角変位がθhである場合に、カメラ31によって撮影される画像である。なお、図9に示す例では、垂直方向の角変位にずれがない(すなわち、垂直方向の角変位は0[°]である)ものとする。
カメラ画像52に写るマーカ36の座標系50における位置座標は、(xh,yh)である。この場合、水平方向の角変位θhは、基準座標と回転軸座標とを結ぶ直線と、カメラ画像52に写るマーカ36の位置座標と回転軸座標とを結ぶ直線とがなす角である。よって水平方向の角変位θhは、以下の式で算出される。
次に、垂直方向の角変位の算出方法について説明する。
図10は、垂直方向の角変位と撮影位置の関係の一例を示す図である。図10の例では、垂直方向の角変位が0[°]の場合とθvの場合でのカメラ31が撮影する位置の違いが示される。
垂直方向の角変位が0[°]の場合、カメラ31は、撮影位置38aを中心に撮影する。つまり、基準画像51の中心には、撮影位置38aが写る。このときカメラ31のレンズの中央と撮影位置38aを通る直線は、土台34に垂直である。ここでスピーカ中心39は、カメラ31のレンズの中央と撮影位置38aを通る直線に対して、回転軸37bから下ろした垂線の足であるものとする。
垂直方向の角変位がθvの場合、カメラ31は、撮影位置38bを中心に撮影する。つまり、撮影位置38bは、スピーカ中心39とカメラ31のレンズの中央とを通る直線と土台34とが交わる位置である。このとき、垂直方向の角変位θvは、スピーカ中心39から土台34に下ろした垂線と、撮影位置38bとスピーカ中心39とを結ぶ直線とがなす角に等しい。よって垂直方向の角変位θvは、以下の式で算出される。
式(2)の上側の式の「D*」は、土台34とスピーカ中心39との距離である。また、式(2)の上側の式の「d*」は、スピーカ中心39から土台34に下ろした垂線の足と撮影位置38bとの距離である。ここで、式(2)の上側の式は、式(2)の下側の式で近似される。
式(2)の下側の式の「D」は、土台34と回転軸37bとの距離である。つまり「D」は、垂直方向の角変位が0[°]の場合の、土台34とスピーカ中心39との距離である。また、式(2)の下側の式の「d」は、撮影位置38aと撮影位置38bとの距離である。つまり「d」は、垂直方向の角変位が0[°]の場合にスピーカ中心39から土台34に下ろした垂線の足と撮影位置38bとの距離である。
つまり、式(2)の上側の式の「D*」が式(2)の下側の式の「D」で近似され、式(2)の上側の式の「d*」が式(2)の下側の式の「d」で近似される。「D*」と「D」との差および「d*」と「d」との差は、垂直方向の角変位θvが小さくなるに連れて小さくなる。そこでモータ制御部130は、垂直方向の角変位の較正をθvが閾値以下になるまで繰り返す。これにより、「D*」と「D」との差および「d*」と「d」との差による誤差が小さくなる。
土台34と回転軸37bとの距離Dは、回転軸37bの位置からあらかじめ特定される。また、撮影位置38aと撮影位置38bとの距離dは、カメラ31が撮影する画像を用いて、次のように算出される。
図11は、垂直方向の角変位を算出するためのカメラ画像の一例を示す図である。カメラ画像53は、垂直方向の角変位がθvである場合に、カメラ31によって撮影される画像である。なお、図11に示す例では、水平方向の角変位にずれがない(すなわち、水平方向の角変位は0[°]である)ものとする。
カメラ画像53に写るマーカ36の座標系50における位置座標は、(xc,yv)である。この場合、カメラ31によって撮影される画像におけるマーカ36の変位dvは、以下の式で算出される。
ここでカメラ画像53では、撮影位置38aも、中心からマーカ36の変位だけずれた位置に写る。つまり、撮影位置38aと撮影位置38bとの距離dは、変位dvを実空間における変位に変換したものに等しい。よって、撮影位置38aと撮影位置38bとの距離dは、以下の式で算出される。
式(4)の「k」は、カメラ31によって撮影される画像における変位と実空間上の変位との比であり、カメラ31の解像度などからあらかじめ算出される。このように算出された撮影位置38aと撮影位置38bとの距離dを式(2)に代入することで、垂直方向の角変位θvが算出される。
次に、水平方向の角変位および垂直方向の角変位の両方がずれている場合の、水平方向の角変位および垂直方向の角変位の算出方法について説明する。
図12は、水平方向の角変位および垂直方向の角変位を算出するためのカメラ画像の一例を示す図である。カメラ画像54は、水平方向の角変位がθh、垂直方向の角変位がθvである場合に、カメラ31によって撮影される画像である。
カメラ画像54に写るマーカ36の座標系50における位置座標は、(xhv,yhv)である。ここで垂直方向の角変位のずれにより、カメラ画像54に写るマーカ36の位置に対する回転軸37aの位置と基準座標とにずれが生じる。ただし計算を簡単にするため、水平方向の角変位θhは、基準座標と回転軸座標とを結ぶ直線と、カメラ画像54に写るマーカ36の位置座標と回転軸座標とを結ぶ直線とがなす角で近似される。つまり基準座標が、カメラ画像54に写るマーカ36の位置に対する回転軸37aの位置とみなされる。
カメラ画像54に写るマーカ36の位置に対する回転軸37aの位置と基準座標との差は、水平方向の角変位θhが小さくなるに連れて小さくなる。そこでモータ制御部130は、垂直方向の角変位の較正をθhが閾値以下になるまで繰り返す。これにより、カメラ画像54に写るマーカ36の位置に対する回転軸37aの位置と基準座標との差による誤差が小さくなる。
水平方向の角変位θhは、以下の式で算出される。
また、垂直方向の角変位θvは、カメラ31によって撮影される画像におけるマーカ36のy軸方向の変位dhvを基に算出される。変位dhvは、カメラ画像54において、水平方向の角変位θhを0[°]にした場合のマーカ36の位置(すなわち、マーカ36を回転軸座標を中心にθhだけ回転させた位置)と基準座標との距離である。カメラ画像54において、水平方向の角変位θhを0[°]にした場合のマーカ36の位置は、基準座標と回転軸座標とを結ぶ直線上で、回転軸座標とカメラ画像54に写るマーカ36の位置座標との距離rだけ、回転軸座標から離れた位置である。回転軸座標とカメラ画像54に写るマーカ36の位置座標との距離rは、以下の式で算出される。
よって変位dhvは、以下の式で算出される。
このように算出された変位dhvを用いて、撮影位置38aと撮影位置38bとの距離dが、式(4)と同様に以下の式で算出される。
このように算出された撮影位置38aと撮影位置38bとの距離dを式(2)に代入することで、垂直方向の角変位θvが算出される。
次に、記憶部120に記憶されるデータについて詳細に説明する。
図13は、座標テーブルの一例を示す図である。座標テーブル121には、「箇所」および「座標」の欄が設けられている。「箇所」の欄には、角変位の算出に用いられる箇所が設定される。「座標」の欄には、角変位の算出に用いられる箇所の位置座標が設定される。
例えば座標テーブル121には、「箇所」の欄が「回転軸中心」で、「座標」の欄が「(xc,yc)」である、回転軸座標を示すレコードが登録されている。また例えば座標テーブル121には、「箇所」の欄が「基準位置」で、「座標」の欄が「(xc,y0)」である、基準座標を示すレコードが登録されている。
以下、回転制御装置100およびホストコンピュータ300による較正の手順について、詳細に説明する。
図14は、水平方向較正の手順の一例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
[ステップS101]回転命令部330は、現在角変位321を記憶部320から取得する。
[ステップS102]回転命令部330は、現在角変位321が0[°]になるようなモータ32a,32b(水平・垂直モータ)の回転数を算出する。そして回転命令部330は、算出した回転数だけモータ32a,32bを回転させるように、回転制御装置100に命令する。また回転命令部330は、現在角変位321を0[°]に設定する。
[ステップS103]モータ制御部130は、ステップS102で指定された回転数だけ、モータ32a,32bを回転する。
[ステップS104]画像解析部140は、カメラ31が撮影した画像(例えば、カメラ画像52)を取得する。
[ステップS105]画像解析部140は、カメラ画像52からパターンマッチングによってマーカ36を検出する。そして画像解析部140は、座標系50におけるマーカ36の位置座標(例えば、(xh,yh))を特定する。
[ステップS106]角度算出部150は、水平方向の角変位θhを算出する。例えば角度算出部150は、座標テーブル121に示される基準座標と、ステップS105で特定したマーカ36の位置座標とを式(1)に代入することで、水平方向の角変位θhを算出する。
[ステップS107]角度算出部150は、ステップS106で算出した水平方向の角変位θhをホストコンピュータ300に通知する。
[ステップS108]回転命令部330は、−θhだけ水平方向の回転が起こるような、モータ32a(水平モータ)の回転数を算出する。そして回転命令部330は、算出した回転数だけモータ32aを回転させるように、回転制御装置100に命令する。
[ステップS109]モータ制御部130は、ステップS108で指定された回転数だけ、モータ32aを回転する。
このように、スピーカ33に設置されたカメラ31で撮影された画像にマーカ36が写った位置と、水平方向の角変位が0[°]でカメラ31で画像が撮影される場合にマーカ36が写る位置とのずれによって水平方向の角変位が算出される。水平方向の角変位の算出は、現在角変位321に示される水平方向の角変位が0[°]となるようにモータ32aが回転してから行われる。よって、現在角変位321に示される水平方向の角変位と、実際の水平方向の角変位とのずれが算出される。
そして算出された水平方向の角変位だけ、モータ32aが回転することで現在角変位321に示される水平方向の角変位と、実際の水平方向の角変位とのずれが解消される。これにより、スピーカ33の向きが精度良く設定されるようになる。
図15は、垂直方向較正の手順の一例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
[ステップS111]回転命令部330は、現在角変位321を記憶部320から取得する。
[ステップS112]回転命令部330は、現在角変位321が0[°]になるようなモータ32a,32b(水平・垂直モータ)の回転数を算出する。そして回転命令部330は、算出した回転数だけモータ32a,32bを回転させるように、回転制御装置100に命令する。また回転命令部330は、現在角変位321を0[°]に設定する。
[ステップS113]モータ制御部130は、ステップS112で指定された分だけ、モータ32a,32bを回転する。
[ステップS114]モータ制御部130は、繰り返し回数aを0に設定する(a=0)。
[ステップS115]モータ制御部130は、繰り返し回数aの値を1だけ増加させる(a=a+1)。
[ステップS116]画像解析部140は、カメラ31が撮影した画像(例えば、カメラ画像53)を取得する。
[ステップS117]画像解析部140は、カメラ画像53からパターンマッチングによってマーカ36を検出する。そして画像解析部140は、座標系50におけるマーカ36の位置座標(例えば、(xc,yv))を特定する。
[ステップS118]角度算出部150は、座標テーブル121に示される基準座標と、ステップS117で特定したマーカ36の位置座標とを式(3)に代入することで、カメラ31によって撮影される画像におけるマーカ36の変位dvを算出する。
[ステップS119]角度算出部150は、垂直方向の角変位θvを算出する。例えば角度算出部150は、ステップS118で算出した変位dvを式(4)に代入することで、撮影位置38aと撮影位置38bとの距離dを算出する。そして角度算出部150は、算出した距離dと土台34と回転軸37bとの距離Dとを式(2)に代入することで、垂直方向の角変位θvを算出する。
[ステップS120]角度算出部150は、ステップS118で算出した垂直方向の角変位θvをホストコンピュータ300に通知する。
[ステップS121]回転命令部330は、−θvだけ垂直方向の回転が起こるような、モータ32b(垂直モータ)の回転数を算出する。そして回転命令部330は、算出した回転数だけモータ32bを回転させるように、回転制御装置100に命令する。
[ステップS122]モータ制御部130は、ステップS121で指定された回転数だけ、モータ32bを回転する。
[ステップS123]モータ制御部130は、垂直方向の角変位θvが閾値以下または繰り返し回数aが規定値以上であるか否かを判定する。モータ制御部130は、垂直方向の角変位θvが閾値以下または繰り返し回数aが規定値以上であると判定した場合、処理を終了する。またモータ制御部130は、垂直方向の角変位θvが閾値より大きいかつ繰り返し回数aが規定値未満であると判定した場合、処理をステップS115に進める。
このようにして、カメラ画像に写ったマーカ36の変位が、実空間上の撮影位置の変位に変換される。そして、実空間上の撮影位置の変位と、土台34と回転軸37bとの距離とに基づいて垂直方向の角変位が算出される。これにより、土台34に平行である回転軸37bを中心とする回転の角変位を算出することができるようになる。なお、算出される垂直方向の角変位は近似値であるが、較正が繰り返されることで誤差が解消される。
図16は、両方向較正の手順の一例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
[ステップS131]回転命令部330は、現在角変位321を記憶部320から取得する。
[ステップS132]回転命令部330は、現在角変位321が0[°]になるようなモータ32a,32b(水平・垂直モータ)の回転数を算出する。そして回転命令部330は、算出した回転数だけモータ32a,32bを回転させるように、回転制御装置100に命令する。また回転命令部330は、現在角変位321を0[°]に設定する。
[ステップS133]モータ制御部130は、ステップS132で指定された回転数だけ、モータ32a,32bを回転する。
[ステップS134]モータ制御部130は、繰り返し回数aを0に設定する(a=0)。
[ステップS135]モータ制御部130は、繰り返し回数aの値を1だけ増加させる(a=a+1)。
[ステップS136]画像解析部140は、カメラ31が撮影した画像(例えば、カメラ画像54)を取得する。
[ステップS137]画像解析部140は、カメラ画像54からパターンマッチングによってマーカ36を検出する。そして画像解析部140は、座標系50におけるマーカ36の位置座標(例えば、(xhv,yhv))を特定する。
[ステップS138]角度算出部150は、水平方向の角変位θhを算出する。例えば角度算出部150は、座標テーブル121に示される基準座標と、ステップS137で特定したマーカ36の位置座標とを式(5)に代入することで、水平方向の角変位θhを算出する。
[ステップS139]角度算出部150は、マーカ36の画像上の変位dhvを算出する。例えば角度算出部150は、座標テーブル121に示される基準座標と、ステップS137で特定したマーカ36の位置座標とを式(6)に代入することで、回転軸座標とカメラ画像54に写るマーカ36の位置座標との距離rを算出する。角度算出部150は、算出した距離rと座標テーブル121に示される基準座標と回転軸座標とを式(7)に代入することで、カメラ31によって撮影される画像におけるマーカ36のy軸方向の変位dhvを算出する。
[ステップS140]角度算出部150は、垂直方向の角変位θvを算出する。例えば角度算出部150は、ステップS139で算出した変位dhvをを式(8)に代入することで、撮影位置38aと撮影位置38bとの距離dを算出する。そして角度算出部150は、算出した距離dを式(2)に代入することで、垂直方向の角変位θvを算出する。
[ステップS141]角度算出部150は、ステップS138で算出した水平方向の角変位θhおよびステップS140で算出した垂直方向の角変位θvをホストコンピュータ300に通知する。
[ステップS142]回転命令部330は、−θhだけ水平方向の回転が起こるような、モータ32a(水平モータ)の回転数を算出する。また回転命令部330は、−θvだけ垂直方向の回転が起こるような、モータ32b(垂直モータ)の回転数を算出する。そして回転命令部330は、算出した回転数だけモータ32a,32bを回転させるように、回転制御装置100に命令する。
[ステップS143]モータ制御部130は、ステップS142で指定された回転数だけ、モータ32a,32bを回転する。
[ステップS144]モータ制御部130は、水平方向の角変位θhが閾値以下かつ垂直方向の角変位θvが閾値以下であるか否かを判定する。モータ制御部130は、水平方向の角変位θhが閾値以下かつ垂直方向の角変位θvが閾値以下であると判定した場合、処理をステップS145に進める。またモータ制御部130は、水平方向の角変位θhが閾値より大きいまたは垂直方向の角変位θvが閾値より大きいと判定した場合、処理をステップS135に進める。
[ステップS145]モータ制御部130は、繰り返し回数aが規定値以上であるか否かを判定する。モータ制御部130は、繰り返し回数aが規定値以上であると判定した場合、処理を終了する。またモータ制御部130は、繰り返し回数aが規定値未満であると判定した場合、処理をステップS135に進める。
このようにして、水平方向の角変位および垂直方向の角変位の両方が算出される。なお、算出される水平方向の角変位および垂直方向の角変位は近似値であるが、較正が繰り返されることで誤差が解消される。
第2の実施の形態の回転制御装置100によれば、カメラ画像52,53,54に写ったマーカ36の位置に基づいて、角変位が算出される。これにより、スピーカ33の現在の向きを示す情報の精度が向上する。
また、カメラ画像52,53,54に写ったマーカ36の位置と基準座標とのずれに基づいて、軸回転の角変位が算出される。これにより、現在角変位321と実際の軸回転の角変位とのずれを検知することができるようになる。
また座標系50において、カメラ画像52に写ったマーカ36の位置と回転軸37aの位置とを結ぶ直線と、基準座標と回転軸37aの位置とを結ぶ直線とがなす角が算出される。これにより、水平方向の角変位の所定の角度からのずれを算出する精度が向上する。
また、基準座標とカメラ画像53に写ったマーカ36の位置との変位に基づいて、垂直方向の角変位が算出される。これにより、回転軸37bがカメラ画像53に写った領域に垂直でない場合でも角変位を算出することができるようになる。
またスピーカ33がパラメトリックスピーカである。パラメトリックスピーカであるスピーカ33の向きを示す情報が精度良く算出されることによって、スピーカ33が音声を届ける方向が精度良く算出される。
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、角変位を所定の角度に戻さずに較正を行うものである。
第2の実施の形態では、水平方向の角変位が0[°]で撮影される画像に写る位置にマーカ36が設置されていた。第3の実施の形態では、水平方向の角変位が0[°]以外でもマーカによる較正ができるように、複数(一例として、4つ)のマーカが土台に設置される。なお第3の実施の形態では、水平方向の角変位の較正が行われる。
図17は、スピーカの設置方法の他の一例を示す図である。第3の実施の形態では、図6に示した土台34に代えて土台34aが使用される。土台34aは、天井に設置された円形の土台である。土台34aには、支柱35とマーカ36a,36b,36c,36dとが設置されている。
マーカ36a,36b,36c,36dは、土台34aのマーカ36a,36b,36c,36dが設置されていない部分とは異なる模様のマーカである。また、マーカ36a,36b,36c,36dの模様は、それぞれ異なる。マーカ36aは、水平方向の角変位0[°]である場合に、カメラ31で撮影される画像に写る位置に設置される。マーカ36bは、水平方向の角変位90[°]である場合に、カメラ31で撮影される画像に写る位置に設置される。マーカ36cは、水平方向の角変位180[°]である場合に、カメラ31で撮影される画像に写る位置に設置される。マーカ36dは、水平方向の角変位270[°]である場合に、カメラ31で撮影される画像に写る位置に設置される。
第2の実施の形態では、カメラ画像に写ったマーカ36のずれによって、水平方向の角変位の0[°]からのずれが算出された。一方第3の実施の形態では、カメラ画像に写ったマーカ36a,36b,36c,36dのずれによって、水平方向の角変位のカメラ画像に写ったマーカに対応する角度からのずれが算出される。
第3の実施の形態で用いられる回転制御装置は、第2の実施の形態の回転制御装置100と同様に図3のハードウェア構成によって実現される。以下では、第3の実施の形態で用いられる回転制御装置のハードウェアとして回転制御装置100のハードウェアと同じ符号が用いられる。
次に、第3の実施の形態で用いられる回転制御装置の機能について説明する。
図18は、回転制御装置およびホストコンピュータの他の機能例を示すブロック図である。回転制御装置100aは、記憶部120a、モータ制御部130、画像解析部140aおよび角度算出部150aを有する。
記憶部120aは、座標テーブル121とマーカテーブル122とを記憶する。マーカテーブル122は、マーカ36a,36b,36c,36dそれぞれを区別するための情報(例えば、特徴量)を記憶する。
画像解析部140aは、カメラ画像に写るマーカの種類と位置座標を特定する。例えば画像解析部140aは、カメラ31が撮影した画像を取得する。画像解析部140aは、マーカテーブル122に示される特徴量を用いたパターンマッチングによって、取得した画像からマーカ36a,36b,36c,36dのいずれかを検出する。画像解析部140aは、検出したマーカの種類と位置座標を特定する。
角度算出部150aは、水平方向の角変位を算出する。例えば角度算出部150aは、基準座標と回転軸座標とを結ぶ直線と、回転軸座標と画像解析部140aが特定したマーカの位置座標とを結ぶ直線とのなす角の角度を算出する。そして、角度算出部150aは、算出した角度に、画像解析部140aが特定したマーカに対応する角度を足すことで、水平方向の角変位を算出する。
なお、図18に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図18に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次に、記憶部120aに記憶されるデータについて詳細に説明する。
図19は、マーカテーブルの一例を示す図である。マーカテーブル122には、「特徴量」および「角度」の欄が設けられている。「特徴量」の欄には、マーカ36a,36b,36c,36dそれぞれをパターンマッチングによって検出するための特徴量が設定される。「角度」の欄には、マーカ36a,36b,36c,36dそれぞれがカメラ31に写る角度が設定される。
以下、回転制御装置100aおよびホストコンピュータ300による較正の手順について、詳細に説明する。
図20は、水平方向較正の手順の他の一例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。
[ステップS151]回転命令部330は、現在角変位321が目的角度になるようなモータ32a,32b(水平・垂直モータ)の回転数を算出する。そして回転命令部330は、算出した回転数だけモータ32a,32bを回転させるように、回転制御装置100に命令する。また回転命令部330は、現在角変位321を目的角度に設定する。
[ステップS152]モータ制御部130は、ステップS151で指定された回転数だけ、モータ32a,32bを回転する。
[ステップS153]画像解析部140aは、カメラ31が撮影したカメラ画像を取得する。
[ステップS154]画像解析部140aは、マーカテーブル122に示される特徴量を用いたパターンマッチングによって、ステップS153で取得した画像からマーカ36a,36b,36c,36dのいずれかを検出する。画像解析部140aは、検出したマーカの種類と位置座標を特定する。
[ステップS155]角度算出部150aは、基準座標と回転軸座標とを結ぶ直線と、回転軸座標とステップS154で特定されたマーカの位置座標とを結ぶ直線とのなす角の角度(マーカの中心からのずれを示す角度)を算出する。
[ステップS156]角度算出部150aは、ステップS155で算出した角度に、ステップS154で特定されたマーカの種類に対応する角度を足すことで、水平方向の角変位θhを算出する。
[ステップS157]角度算出部150aは、ステップS156で算出した水平方向の角変位θhをホストコンピュータ300に通知する。
[ステップS158]回転命令部330は、現在角変位321に示される水平方向の角変位θh *を取得する。
[ステップS159]回転命令部330は、θhとθh *との差の絶対値(|θh−θh *|)が閾値以上であるか否かを判定する。回転命令部330は、θhとθh *との差の絶対値が閾値以上であると判定した場合、処理をステップS160に進める。また回転命令部330は、θhとθh *との差の絶対値が閾値未満と判定した場合、処理を終了する。
[ステップS160]回転命令部330は、現在角変位321に示される水平方向の角変位をθhに設定する。
このように、モータ32a,32bが回転するごとに、水平方向の角変位が算出され、算出された角変位によって水平方向の角変位の較正が行われる。これにより、水平方向の角変位を0[°]に戻すことなく水平方向の角変位の較正が行われる。よって、スピーカ33を利用しながら、角変位の較正ができるようになる。
第3の実施の形態によれば、第2の実施の形態と同様に、スピーカ33の現在の向きを示す情報の精度が向上する。さらに第3の実施の形態では、水平方向の回転が起こると、水平方向の角変位を算出し、算出した角変位をホストコンピュータ300に通知する。これにより、スピーカ33を利用しながら、角変位の較正ができるようになる。
〔第4の実施の形態〕
次に第4の実施の形態について説明する。第4の実施の形態は、回転制御装置によって水平方向の角変位の制御を行うものである。以下、第3の実施の形態と同様の符号を用いて、第4の実施の形態の手順について説明する。
図21は、角変位制御の手順の一例を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。
[ステップS171]回転命令部330は、目的角度φhを回転制御装置100aに通知する。
[ステップS172]モータ制御部130は、モータ32aの回転を開始させる。
[ステップS173]画像解析部140aは、カメラ31が撮影したカメラ画像を取得する。
[ステップS174]画像解析部140aは、マーカテーブル122に示される特徴量を用いたパターンマッチングによって、ステップS173で取得した画像からマーカ36a,36b,36c,36dのいずれかを検出する。画像解析部140aは、検出したマーカの種類と位置座標を特定する。
[ステップS175]角度算出部150aは、基準座標と回転軸座標とを結ぶ直線と、回転軸座標とステップS174で特定されたマーカの位置座標とを結ぶ直線とのなす角の角度(マーカの中心からのずれを示す角度)を算出する。
[ステップS176]角度算出部150aは、ステップS175で算出した角度に、ステップS174で特定されたマーカの種類に対応する角度を足すことで、水平方向の角変位θhを算出する。
[ステップS177]角度算出部150aは、φhとθhとの差の絶対値(|φh−θh|)が閾値以下であるか否かを判定する。角度算出部150aは、φhとθhとの差の絶対値が閾値以下であると判定した場合、処理をステップS178に進める。また角度算出部150aは、φhとθhとの差の絶対値が閾値より大きいと判定した場合、処理をステップS173に進める。
[ステップS178]モータ制御部130は、モータ32aの回転を停止させる。
[ステップS179]角度算出部150aは、ステップS176で算出した水平方向の角変位θhをホストコンピュータ300に通知する。
[ステップS180]回転命令部330は、現在角変位321に示される水平方向の角変位をθhに設定する。
このように、モータ32aの回転中に水平方向の角変位が算出され、算出された水平方向の角変位が目的の角度になるとモータ32aが停止する。これにより、回転制御装置100aによって、水平方向の角変位を目的の角度にするための制御をすることができるようになる。
第4の実施の形態によれば、第2の実施の形態と同様に、スピーカ33の現在の向きを示す情報の精度が向上する。さらに第4の実施の形態では、水平方向の回転中に、水平方向の角変位を算出し、算出した角変位と目的の角度との差の絶対値が閾値以下の場合、水平方向の回転を停止させる。これにより、回転制御装置100aによって水平方向の回転を制御できるようになる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。