(57)【要約】【課題】  計算負荷を増大することなく、検出の精度及び感度を向上し、目的とする動体のみを正確に検出することができる動体検出装置、動体検出方法、及びロボット装置を提供する。【解決手段】  ロボット装置１は自身が動いていないと判断した場合、動体検出処理を開始し（ステップＳ１）、輝度画像として入力される前画像と時間軸上で隣接する現画像とを複数の画素からなるブロックに分割し、各ブロック毎の差分二乗和を求め、この差分二乗和が一定値以上である場合（ステップＳ２）動体候補としてそれらのブロックにラベリングを行う（ステップＳ３）。ラベリングした動体候補ブロックが隣接する領域を連結し、そのサイズが所定値以上であるか場合（ステップＳ４）であって、最も大きい領域を検出するターゲットとして選択する（ステップＳ５）。最後に、ターゲットとされたブロック連結領域が動体であるか否かの最終判定を行う（ステップＳ６）。【選択図】  図１０
2005078377.tif 000002
【特許請求の範囲】
【請求項１】
撮像手段によって撮像された時間軸上で隣接する画像間の差分を複数の画素からなるブロック毎に求めたブロック差分値を算出するブロック差分値算出手段と、
上記ブロック差分値が所定の閾値以上であるブロックを動体候補ブロックとし、該動体候補ブロックが隣接してなるブロック連結領域を動体領域として検出する動体検出手段とを有する
ことを特徴とする動体検出装置。
【請求項２】
上記動体検出手段は、上記ブロック連結領域に含まれるブロック数が所定の閾値以上であるか否かを判定し、該所定の閾値以上であるブロック連結領域を上記動体領域とする
ことを特徴とする請求項１記載の動体検出装置。
【請求項３】
上記動体検出手段は、上記ブロック連結領域が複数存在する場合、最も大きい領域を上記動体領域として検出する
ことを特徴とする請求項１記載の動体検出装置。
【請求項４】
上記動体検出手段は、上記画像に占める上記動体領域の大きさが所定の閾値以上である場合に当該動体領域を検出対象とせず、動体検出を終了する
ことを特徴とする請求項１記載の動体検出装置。
【請求項５】
上記動体検出手段は、上記動体領域の水平方向又は垂直方向の大きさが所定の閾値以上である場合に当該動体領域を検出対象とせず、動体検出を終了する
ことを特徴とする請求項１記載の動体検出装置。
【請求項６】
上記動体検出手段は、上記動体候補ブロック数が所定の閾値以上である場合に当該動体領域を検出対象とせず、動体検出を終了する
ことを特徴とする請求項１記載の動体検出装置。
【請求項７】
撮像手段によって撮像された時間軸上で隣接する画像間の差分を複数の画素からなるブロック毎に求めたブロック差分値を算出するブロック差分値算出工程と、
上記ブロック差分値が所定の閾値以上であるブロックを動体候補ブロックとし、該動体候補ブロックが隣接してなるブロック連結領域を動体領域として検出する動体検出工程とを有する
ことを特徴とする動体検出方法。
【請求項８】
上記動体検出工程では、上記ブロック連結領域に含まれるブロック数が所定の閾値以上であるか否かを判定し、該所定の閾値以上であるブロック連結領域を上記動体領域とする
ことを特徴とする請求項７記載の動体検出方法。
【請求項９】
上記動体検出工程では、上記ブロック連結領域が複数存在する場合、最も大きい領域を上記動体領域として検出する
ことを特徴とする請求項７記載の動体検出方法。
【請求項１０】
上記動体検出工程では、上記画像に占める上記動体領域の大きさが所定の閾値以上である場合に当該動体領域を検出対象とせず、動体検出を終了する
ことを特徴とする請求項７記載の動体検出方法。
【請求項１１】
上記動体検出工程では、上記動体領域の水平方向又は垂直方向の大きさが所定の閾値以上である場合に当該動体領域を検出対象とせず、動体検出を終了する
ことを特徴とする請求項７記載の動体検出方法。
【請求項１２】
上記動体検出工程では、上記動体候補ブロック数が所定の閾値以上である場合に当該動体領域を検出対象とせず、動体検出を終了する
ことを特徴とする請求項７記載の動体検出方法。
【請求項１３】
行動を自律的に決定して発現するロボット装置において、
画像を撮像する撮像手段と、
上記撮像手段により撮像された時間軸上で隣接する画像間の差分に基づき動体を検出する動体検出手段とを有し、
上記動体検出手段は、複数の画素からなるブロック毎に、上記画像間の差分を求めたブロック差分値を算出するブロック差分値算出手段と、上記ブロック差分値が所定の閾値以上であるブロックを動体候補ブロックとし、該動体候補ブロックが隣接してなるブロック連結領域を動体領域として検出する動体検出手段とを有する
ことを特徴とするロボット装置。
【請求項１４】
上記動体検出手段は、上記ブロック連結領域に含まれるブロック数が所定の閾値以上であるか否かを判定し、該所定の閾値以上であるブロック連結領域を上記動体領域とする
ことを特徴とする請求項１３記載のロボット装置。
【請求項１５】
上記動体検出手段は、上記ブロック連結領域が複数存在する場合、最も大きい領域を上記動体領域として検出する
ことを特徴とする請求項１３記載のロボット装置。
【請求項１６】
上記動体検出手段は、上記画像に占める上記動体領域の大きさが所定の閾値以上である場合に当該動体領域を検出対象とせず、動体検出を終了する
ことを特徴とする請求項１３記載のロボット装置。
【請求項１７】
上記動体検出手段は、上記動体領域の水平方向又は垂直方向の大きさが所定の閾値以上である場合に当該動体領域を検出対象とせず、動体検出を終了する
ことを特徴とする請求項１３記載のロボット装置。
【請求項１８】
上記動体検出手段は、上記動体候補ブロック数が所定の閾値以上である場合に当該動体領域を検出対象とせず、動体検出を終了する
ことを特徴とする請求項１３記載のロボット装置。
【請求項１９】
上記動体検出手段の検出結果を上記行動に反映させる制御手段を有する
ことを特徴とする請求項１３記載のロボット装置。
【請求項２０】
上記制御手段は、検出された上記動体領域の大きさに応じた異なる行動を発現させる
ことを特徴とする請求項１９記載のロボット装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動体を検出する動体検出装置、動体検出方法、及びこれを搭載したロボット装置に関し、特に、正確且つ高速に目標とする物体のみの検出を計った図った動体検出装置、動体検出方法、及びこれを搭載したロボット装置に関する。
【背景技術】
【０００２】
電気的又は磁気的な作用を用いて人間（生物）の動作に似た運動を行う機械装置を「ロボット装置」という。我が国においてロボット装置が普及し始めたのは、１９６０年代末からであるが、その多くは、工場における生産作業の自動化・無人化等を目的としたマニピュレータや搬送ロボット装置等の産業用ロボット装置（Industrial Robot）であった。
【０００３】
最近では、人間のパートナーとして生活を支援する、すなわち住環境その他の日常生活上の様々な場面における人的活動を支援する実用ロボット装置の開発が進められている。このような実用ロボット装置は、産業用ロボット装置とは異なり、人間の生活環境の様々な局面において、個々に個性の相違した人間、又は様々な環境への適応方法を自ら学習する能力を備えている。例えば、犬、猫のように４足歩行の動物の身体メカニズムやその動作を模した「ペット型」ロボット装置、或いは、２足直立歩行を行う動物の身体メカニズムや動作をモデルにしてデザインされた「人間型」又は「人間形」ロボット装置（Humanoid Robot）等の脚式移動型のロボット装置は、既に実用化されつつある。
【０００４】
これらの脚式移動型のロボット装置は、産業用ロボット装置と比較して、エンターテインメント性を重視した様々な動作を行うことができるため、エンターテインメントロボット装置と呼称される場合もある。
【０００５】
脚式移動型のロボット装置は、動物や人間の容姿にできる限り近い外観形状とされ、動物や人間の動作にできる限り近い動作を行うように設計されている。例えば、上述した４足歩行の「ペット型」ロボット装置の場合は、一般家庭において飼育される犬や猫に似た外観形状を有し、ユーザ（飼い主）からの「叩く」や「撫でる」といった働きかけや、周囲の環境等に応じて自律的に行動する。例えば、自律的な行動として、実際の動物と同様に、「吠える」、「寝る」等といった行動をする。
【０００６】
ところで、脚式移動型のロボット装置の中には、ＣＣＤ（Charge Coupled Device）カメラによって撮像した画像に基づいて周囲の状況を判断し、この判断結果に基づいて自律的に行動するものがある。このような脚式移動型のロボット装置によれば、例えば、周囲に存在する動体を検出し、その動体をトラッキング（追尾）することができる。
【０００７】
ここで、画像処理によって画像内の動体を検出する手法としては、従来から種々の手法が提案され、実用化されている。これらの手法は、大別して、フレーム画像間で画素の差分をとる第１の手法、時空間フィルタを用いて画像上の任意の点におけるオプティカルフローを求める第２の手法、及びフレーム間で小領域のマッチングを行い、その領域の動きを求める第３の手法に分けられる。これらの手法は、画像を撮像するためのカメラが固定されており、検出された動きが外界の動きであることが前提となっている。
【０００８】
しかしながら、上述した脚式移動型のロボット装置のように、ロボット装置自身が動作するものでは、搭載されたＣＣＤカメラが自己の動作に伴って大きく且つ複雑に動いてしまう。このため、上述した第１乃至第３の手法によって画像内の動体を検出しようとすると、フレーム間で画像全体が大きく動くことから、実際に動体を撮像していても、その動きを検出することは困難であった。
【０００９】
そこで、本件出願人は、下記特許文献１において、自己の動作の有無に関わりなく、周囲に存在する動体を精度よく検出する技術を提案している。この特許文献１記載の技術によれば、現フレーム画像から前フレーム画像の中心部分と相関の高い画像領域を抽出して画像全体の動きを検出することで、ロボット装置の動作に伴う撮像装置の動きの有無に関わりなく、画像内の動体を精度よく検出することができる。
【００１０】
【特許文献１】特開２００２−２５１６１５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、上記特許文献１記載の技術では、前フレーム画像の中心部分と相関の高い画像領域を抽出するために、前フレーム画像の中心部分を分割した各テンプレート分割領域と、現フレーム画像を所定画素分だけオーバーラップさせながら分割した各検索画像分割領域との間で、水平方向及び垂直方向に１画素単位でずらしながら、順次マッチングスコアを演算する必要あり、演算負荷が高いとう問題点がある。一方で、上述した如く、自律型の脚式移動ロボット装置等においては、自身の動きと動体の動きの区別が難しく、例えば処理工程を省略する等して演算量を下げると動体ではないものを動体としてしまうような誤検出が多発してしまう。
【００１２】
また、動体を検出するのは通常その動体をトラッキングするためであり、動体が例えば複数ある場合等、トラッキング対象としては適切ではなく、従って動体であっても、ロボット装置としては検出する必要のない場合がある。特にエンターテイメント用のロボット装置等においては、リソースが限られているため、誤検出及びトラッキング不可能な動体検出を防止しつつ、演算負荷をできるだけ小さくし、トラッキング対象となる動体のみを高速に検出することが望ましい。
【００１３】
本発明は、このような従来の実情に鑑みて提案されたものであり、計算負荷を増大することなく、検出の精度及び感度を向上し、目的とする動体のみを正確に検出することができる動体検出装置、動体検出方法、及びロボット装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した目的を達成するために、本発明に係る動体検出装置は、撮像手段によって撮像された時間軸上で隣接する画像間の差分を、複数の画素からなるブロック毎に求めたブロック差分値を算出するブロック差分値算出手段と、上記ブロック差分値が所定の閾値以上であるブロックを動体候補ブロックとし、該動体候補ブロックが隣接してなるブロック連結領域を動体領域として検出する動体検出手段とを有することを特徴とする。
【００１５】
本発明においては、隣接フレーム画像間において、画素毎の差分を求めて動体検出するのではなく、複数の画素をまとめたブロック単位として解像度を下げ、ブロック毎に差分値を算出するため、動体か否かの判定をブロック単位で行うことができ、従って動体候補ブロックと判定する閾値を低くしてもピクセル単位で処理するのに比してノイズ等を検出することを抑制でき、且つ演算量を低減することができる。
【００１６】
また、上記動体検出手段は、上記ブロック連結領域に含まれるブロック数が所定の閾値以上であるか否かを判定し、該所定の閾値以上であるブロック連結領域を上記動体領域とすることができ、検出したブロック連結領域が小さい場合には、動体としてトラッキング等をするには小さい領域又はノイズとしてキャンセルすることで、更に目的とする動体領域の検出精度を向上する。
【００１７】
更に、上記動体検出手段は、上記ブロック連結領域が複数存在する場合、最も大きい領域を上記動体領域として検出することができ、最も大きいものをトラッキング対象とすることができる。
【００１８】
更にまた、上記動体検出手段は、上記画像に占める上記動体領域の大きさが所定の閾値以上である場合に当該動体領域を検出対象とせず、動体検出を終了することができ、動体領域の占有率が例えば３０％を超えるような場合等は、トラッキング対象としては大きくトラッキングする必要がない等として検出を停止することができる。
【００１９】
また、上記動体検出手段は、上記動体領域の水平方向又は垂直方向の大きさが所定の閾値以上である場合に当該動体領域を検出対象とせず、動体検出を終了することができ、動体領域の占有率が所定の範囲内であったとしても、動体領域が広域に亘っているような場合は、ノイズであるとして動体検出を停止することができる。
【００２０】
更に、上記動体検出手段は、上記動体候補ブロック数が所定の閾値以上である場合に当該動体領域を検出対象とせず、動体検出を終了することができ、複数の動体候補ブロックが検出された場合には、動体が複数存在するか、又はノイズである等として動体検出を停止することができる。
【００２１】
本発明に係る動体検出方法は、撮像手段によって撮像された時間軸上で隣接する画像間の差分を、複数の画素からなるブロック毎に求めたブロック差分値を算出するブロック差分値算出工程と、上記ブロック差分値が所定の閾値以上であるブロックを動体候補ブロックとし、該動体候補ブロックが隣接してなるブロック連結領域を動体領域として検出する動体検出工程とを有することを特徴とする。
【００２２】
本発明に係るロボット装置は、行動を自律的に決定して発現するロボット装置において、画像を撮像する撮像手段と、上記撮像手段により撮像された時間軸上で隣接する画像間の差分に基づき動体を検出する動体検出手段とを有し、上記動体検出手段は、複数の画素からなるブロック毎に、上記画像間の差分を求めたブロック差分値を算出するブロック差分値算出手段と、上記ブロック差分値が所定の閾値以上であるブロックを動体候補ブロックとし、該動体候補ブロックが隣接してなるブロック連結領域を動体領域として検出する動体検出手段とを有することを特徴とする。
【００２３】
本発明においては、自律的に動作するようなロボット装置において、ブロック毎に差分を算出して動体判定する動体検出装置を搭載することで、解像度を下げて感度を上げることで高速且つ高精度に動体を検出することができる。
【００２４】
また、上記動体検出手段の検出結果を上記行動に反映させる制御手段を有することができ、例えば上記制御手段は、検出された上記動体領域の大きさに応じた異なる行動を発現させるようにする等することで、ロボット装置が動体の大きさに基づき、動体をトラッキングする動作に加えて、各種動作を組み合わせた行動を発現することで、更にエンターテイメント性を向上させる。
【発明の効果】
【００２５】
本発明によれば、動体検出する際に、時間軸上で連続する２つの画像間において、各画像を複数の画素を単位とするブロックに分割したブロック単位の差分値を算出し、このブロック毎に、ブロック毎の差分値により、動体候補か否かを判定するようにしたので、ピクセル単位で動体か否かを判定するに比して解像度が下がるため、判定基準とする閾値を下げて動体候補となる動体候補ブロックを抽出する処理量が少なく、結果として動体検出感度を向上すると共に動体検出処理速度を高速化することができる。
【００２６】
また、そのような動体検出装置を搭載したロボット装置によれば、高速且つ正確にトラッキング目的となる動体のみを検出でき、更にエンターテイメント性を向上させることができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、入力画像に含まれる動体を検出する動体検出装置を搭載し、外部環境（外部刺激）や内部状態に応じて自律的に行動を発現する自律型のロボット装置に適用したものである。ここでは、先ず、ロボット装置について説明し、次に、ロボット装置における動体検出処理について説明する。
【００２８】
（１−１）ロボット装置の構成
図１は、本実施の形態におけるロボット装置を示す斜視図である。図１に示すように、本実施の形態によるロボット装置１は、４足歩行の脚式移動ロボット装置とされ、胴体部ユニット２の前後左右にそれぞれ脚部ユニット３Ａ，３Ｂ，３Ｃ，３Ｄが連結されると共に、胴体部ユニット２の前端部に頭部ユニット４が連結されて構成されている。
【００２９】
胴体部ユニット２には、図２に示すように、ＣＰＵ（Central Processing Unit）１０、ＤＲＡＭ（Dynamic Random Access Memory）１１、フラッシュＲＯＭ（Read Only Memory）１２、ＰＣ（Personal Computer）カードインターフェース回路１３及び信号処理回路１４が内部バス１５を介して相互に接続されることにより形成されたコントロール部１６と、このロボット装置１の動力源としてのバッテリ１７とが収納されている。また、胴体部ユニット２には、ロボット装置１の向きや動きの加速度を検出するための角速度センサ１８及び加速度センサ１９なども収納されている。また、胴体部ユニット２の頭部とは反対方向に位置する後端部には尻尾部５が形成されている。
【００３０】
また、頭部ユニット４には、外部の状況を撮像するとともに、周囲の明るさを検出するためのＣＣＤ（Charge Coupled Device）カメラ２０と、前後に倒すといった使用者からの物理的な働きかけを検出するためのタッチセンサ２１と、前方に位置する物体までの距離を測定するための距離センサ２２と、外部音を集音するためのマイクロホン２３と、各種音声を出力するためのスピーカ２４と、頭部ユニット４内に格納可能とされたヘッドライト２５と、ロボット装置１の「目」に相当するＬＥＤ（Light Emitting Diode）（図示せず）などがそれぞれ所定位置に配置されている。なお、ロボット装置１においては、タッチセンサ２１以外にも、胴体部ユニット２及び頭部ユニット４の所定位置に複数のタッチセンサが配置されている。
【００３１】
さらに、各脚部ユニット３Ａ〜３Ｄの関節部分や各脚部ユニット３Ａ〜３Ｄ及び胴体部ユニット２の各連結部分、並びに頭部ユニット４及び胴体部ユニット２の連結部分などにはそれぞれ自由度数分のアクチュエータ２６１〜２６ｎ及びポテンショメータ２７１〜２７ｎが配設されている。例えば、アクチュエータ２６１〜２６ｎはサーボモータを構成として有している。サーボモータの駆動により、脚部ユニット３Ａ〜３Ｄが制御されて、目標の姿勢或いは動作に遷移する。
【００３２】
そして、これら角速度センサ１８、加速度センサ１９、タッチセンサ２１、距離センサ２２、マイクロホン２３、スピーカ２４、及び各ポテンショメータ２７１〜２７ｎなどの各種センサ並びにヘッドライト２５、ＬＥＤ及び各アクチュエータ２６１ 〜２６ｎは、それぞれ対応するハブ２８１〜２８ｎを介してコントロール部１６の信号処理回路１４と接続され、ＣＣＤカメラ２０及びバッテリ１７は、それぞれ信号処理回路１４と直接接続されている。
【００３３】
信号処理回路ｌ４は、上述の各センサから供給されるセンサデータや画像データ及び音声データを順次取り込み、これらをそれぞれ内部バス１５を介してＤＲＡＭ１１内の所定位置に順次格納する。また信号処理回路１４は、これと共にバッテリ１７から供給されるバッテリ残量を表すバッテリ残量データを順次取り込み、これをＤＲＡＭ１１内の所定位置に格納する。
【００３４】
このようにしてＤＲＡＭ１１に格納された各センサデータ、画像データ、音声データ及びバッテリ残量データは、この後ＣＰＵ１０がこのロボット装置１の動作制御を行う際に利用される。
【００３５】
実際上ＣＰＵ１０は、ロボット装置１の電源が投入された初期時、胴体部ユニット２の図示しないＰＣカードスロットに装填されたメモリカード２９又はフラッシュＲＯＭ１２に格納された制御プログラムをＰＣカードインターフェース回路１３を介して又は直接読み出し、これをＤＲＡＭ１１に格納する。
【００３６】
また、ＣＰＵ１０は、この後上述のように信号処理回路１４よりＤＲＡＭ１１に順次格納される各センサデータ、画像データ、音声データ及びバッテリ残量データに基づいて自己及び周囲の状況や、使用者からの指示及び働きかけの有無などを判断する。
【００３７】
ここで、例えば本実施の形態における顔検出タスクを実行する際には、ＣＣＤにより撮像された入力画像から顔候補を検出し、距離センサ等の値を使用し、上述した４つの条件に当てはめて非顔候補を検出し、顔候補から非顔候補を排除したものを顔領域として出力する。
【００３８】
さらに、ＣＰＵ１０は、この判断結果及びＤＲＡＭ１１に格納した制御プログラムに基づいて続く行動を決定すると共に、当該決定結果に基づいて必要なアクチュエータ２６１〜２６ｎを駆動させることにより、頭部ユニット４を上下左右に振らせたり、各脚部ユニット３Ａ〜３Ｄを駆動させて歩行させるなどの行動を行わせる。
【００３９】
また、この際ＣＰＵ１０は、必要に応じて音声データを生成し、これを信号処理回路１４を介して音声信号としてスピーカ２４に与えることにより当該音声信号に基づく音声を外部に出力させたり、上述のＬＥＤを点灯、消灯又は点滅させる。また、ＣＰＵ１０は、後述するように、ＣＣＤカメラ２０を用いて周囲の明るさを検出させ、その検出結果に応じてヘッドライト２５を点灯させる。
【００４０】
このようにしてこのロボット装置１においては、自己及び周囲の状況や、使用者からの指示及び働きかけに応じて自律的に行動し得るようになされている。
【００４１】
（１−２）制御プログラムのソフトウェア構成
ここで、ロボット装置１における上述の制御プログラムのソフトウェア構成は、図３に示すようになる。この図３において、デバイス・ドライバ・レイヤ３０は、この制御プログラムの最下位層に位置し、複数のデバイス・ドライバからなるデバイス・ドライバ・セット３１から構成されている。この場合、各デバイス・ドライバは、ＣＣＤカメラ２０（図２）やタイマ等の通常のコンピュータで用いられるハードウェアに直接アクセスすることを許されたオブジェクトであり、対応するハードウェアからの割り込みを受けて処理を行う。
【００４２】
また、ロボティック・サーバ・オブジェクト３２は、デバイス・ドライバ・レイヤ３０の最下位層に位置し、例えば上述の各種センサやアクチュエータ２６１〜２６ｎ等のハードウェアにアクセスするためのインターフェースを提供するソフトウェア群でなるバーチャル・ロボット装置３３と、電源の切換えなどを管理するソフトウェア群でなるバワーマネージャ３４と、他の種々のデバイス・ドライバを管理するソフトウェア群でなるデバイス・ドライバ・マネージャ３５と、ロボット装置１の機構を管理するソフトウェア群でなるデザインド・ロボット装置３６とから構成されている。
【００４３】
マネージャ・オブジェクト３７は、オブジェクト・マネージャ３８及びサービス・マネージャ３９から構成されている。オブジェクト・マネージャ３８は、ロボティック・サーバ・オブジェクト３２、ミドル・ウェア・レイヤ４０、及びアプリケーション・レイヤ４１に含まれる各ソフトウェア群の起動や終了を管理するソフトウェア群であり、サービス・マネージャ３９は、メモリカード２９（図２）に格納されたコネクションファイルに記述されている各オブジェクト間の接続情報に基づいて各オブジェクトの接続を管理するソフトウェア群である。
【００４４】
ミドル・ウェア・レイヤ４０は、ロボティック・サーバ・オブジェクト３２の上位層に位置し、画像処理や音声処理などのこのロボット装置１の基本的な機能を提供するソフトウェア群から構成されている。また、アプリケーション・レイヤ４１は、ミドル・ウェア・レイヤ４０の上位層に位置し、当該ミドル・ウェア・レイヤ４０を構成する各ソフトウェア群によって処理された処理結果に基づいてロボット装置１の行動を決定するためのソフトウェア群から構成されている。
【００４５】
なお、ミドル・ウェア・レイヤ４０及びアプリケーション・レイヤ４１の具体なソフトウェア構成をそれぞれ図４に示す。
【００４６】
ミドル・ウェア・レイヤ４０は、図４に示すように、騒音検出用、温度検出用、明るさ検出用、音階認識用、距離検出用、姿勢検出用、タッチセンサ用、動き検出用及び色認識用の各信号処理モジュール５０〜５８並びに入力セマンティクスコンバータモジュール５９などを有する認識系６０と、出力セマンティクスコンバータモジュール６８並びに姿勢管理用、トラッキング用、モーション再生用、歩行用、転倒復帰用、ライト点灯用及び音再生用の各信号処理モジュール６１〜６７などを有する出力系６９とから構成されている。
【００４７】
認識系６０の各信号処理モジュール５０〜５８は、ロボティック・サーバ・オブジェクト３２のバーチャル・ロボット装置３３によりＤＲＡＭ１１（図２）から読み出される各センサデータや画像データ及び音声データのうちの対応するデータを取り込み、当該データに基づいて所定の処理を施して、処理結果を入力セマンティクスコンバータモジュール５９に与える。ここで、例えば、バーチャル・ロボット装置３３は、所定の通信規約によって、信号の授受或いは変換をする部分として構成されている。
【００４８】
入力セマンティクスコンバータモジュール５９は、これら各信号処理モジュール５０〜５８から与えられる処理結果に基づいて、「うるさい」、「暑い」、「明るい」、「ボールを検出した」、「転倒を検出した」、「撫でられた」、「叩かれた」、「ドミソの音階が聞こえた」、「動く物体を検出した」又は「障害物を検出した」などの自己及び周囲の状況や、使用者からの指令及び働きかけを認識し、認識結果をアプリケーション・レイヤ４１（図２）に出力する。
【００４９】
アプリケーション・レイヤ４ｌは、図５に示すように、行動モデルライブラリ７０、行動切換モジュール７１、学習モジュール７２、感情モデル７３及び本能モデル７４の５つのモジュールから構成されている。
【００５０】
行動モデルライブラリ７０には、図６に示すように、「バッテリ残量が少なくなった場合」、「転倒復帰する場合」、「障害物を回避する場合」、「感情を表現する場合」、「ボールを検出した場合」などの予め選択された複数の条件項目にそれぞれ対応させて、それぞれ独立した行動モデル７０１〜７０ｎが設けられている。
【００５１】
そして、これら行動モデル７０１〜７０ｎは、それぞれ入力セマンティクスコンバータモジュール５９から認識結果が与えられたときや、最後の認識結果が与えられてから一定時間が経過したときなどに、必要に応じて後述のように感情モデル７３に保持されている対応する情動のパラメータ値や、本能モデル７４に保持されている対応する欲求のパラメータ値を参照しながら続く行動をそれぞれ決定し、決定結果を行動切換モジュール７１に出力する。
【００５２】
なお、この実施の形態の場合、各行動モデル７０１〜７０ｎは、次の行動を決定する手法として、図７に示すような１つのノード（状態）ＮＯＤＥ０〜ＮＯＤＥｎから他のどのノードＮＯＤＥ０〜ＮＯＤＥｎに遷移するかを各ノードＮＯＤＥ０〜ＮＯＤＥｎに間を接続するアークＡＲＣ１〜ＡＲＣｎに対してそれぞれ設定された遷移確率Ｐ１〜Ｐｎに基づいて確率的に決定する有限確率オートマトンと呼ばれるアルゴリズムを用いる。
【００５３】
具体的に、各行動モデル７０１〜７０ｎは、それぞれ自己の行動モデル７０１〜７０ｎを形成するノードＮＯＤＥ０〜ＮＯＤＥｎにそれぞれ対応させて、これらノードＮＯＤＥ０〜ＮＯＤＥｎごとに図８に示すような状態遷移表８０を有している。
【００５４】
この状態遷移表８０では、そのノードＮＯＤＥ０〜ＮＯＤＥｎにおいて遷移条件とする入力イベント（認識結果）が「入力イベント名」の列に優先順に列記され、その遷移条件についてのさらなる条件が「データ名」及び「データ範囲」の列における対応する行に記述されている。
【００５５】
したがって、図８の状態遷移表８０で表されるノードＮＯＤＥ１００では、「ボールを検出（ＢＡＬＬ）」という認識結果が与えられた場合に、当該認識結果と共に与えられるそのボールの「大きさ（ＳＩＺＥ）」が「0から1000」の範囲であることや、「障害物を検出（ＯＢＳＴＡＣＬＥ）」という認識結果が与えられた場合に、当該認識結果と共に与えられるその障害物までの「距離（ＤＩＳＴＡＮＣＥ）」が「0から100」の範囲であることが他のノードに遷移するための条件となっている。
【００５６】
また、このノードＮＯＤＥ１００では、認識結果の入力がない場合においても、行動モデル７０１〜７０ｎが周期的に参照する感情モデル７３及び本能モデル７４にそれぞれ保持された各情動及び各欲求のパラメータ値のうち、感情モデル７３に保持された「喜び（ＪＯＹ）」、「驚き（ＳＵＲＰＲＩＳＥ）」若しくは「悲しみ（ＳＵＤＮＥＳＳ）」のいずれかのパラメータ値が「50から100」の範囲であるときには他のノードに遷移することができるようになっている。
【００５７】
また、状態遷移表８０では、「他のノードヘの遷移確率」の欄における「遷移先ノード」の行にそのノードＮＯＤＥ０〜 ＮＯＤＥｎから遷移できるノード名が列記されていると共に、「入力イベント名」、「データ値」及び「データの範囲」の列に記述された全ての条件が揃ったときに遷移できる他の各ノードＮＯＤＥ０〜ＮＯＤＥｎへの遷移確率が「他のノードヘの遷移確率」の欄内の対応する箇所にそれぞれ記述され、そのノードＮＯＤＥ０〜ＮＯＤＥｎに遷移する際に出力すべき行動が「他のノードヘの遷移確率」の欄における「出力行動」の行に記述されている。なお、「他のノードヘの遷移確率」の欄における各行の確率の和は１００［％］となっている。
【００５８】
したがって、図７の状態遷移表８０で表されるノードＮＯＤＥ１００では、例えば「ボールを検出（ＢＡＬＬ）」し、そのボールの「ＳＩＺＥ（大きさ）」が「0から1000」の範囲であるという認識結果が与えられた場合には、「30［％］」の確率で「ノードＮＯＤＥ１２０（node 120）」に遷移でき、そのとき「ＡＣＴＩＯＮ１」の行動が出力されることとなる。
【００５９】
各行動モデル７０１〜７０ｎは、それぞれこのような状態遷移表８０として記述されたノードＮＯＤＥ０〜ＮＯＤＥｎがいくつも繋がるようにして構成されており、入力セマンティクスコンバータモジュール５９から認識結果が与えられたときなどに、対応するノードＮＯＤＥ０〜ＮＯＤＥｎの状態遷移表を利用して確率的に次の行動を決定し、決定結果を行動切換モジュール７１に出力するようになされている。
【００６０】
図５に示す行動切換モジュール７１は、行動モデルライブラリ７０の各行動モデル７０１〜７０ｎからそれぞれ出力される行動のうち、予め定められた優先順位の高い行動モデル７０１〜７０ｎから出力された行動を選択し、当該行動を実行すべき旨のコマンド（以下、これを行動コマンドという。）をミドル・ウェア・レイヤ４０の出力セマンティクスコンバータモジュール６８に送出する。なお、この実施の形態においては、図６において下側に表記された行動モデル７０１〜７０ｎほど優先順位が高く設定されている。
【００６１】
また、行動切換モジュール７１は、行動完了後に出力セマンティクスコンバータモジュール６８から与えられる行動完了情報に基づいて、その行動が完了したことを学習モジュール７２、感情モデル７３及び本能モデル７４に通知する。
【００６２】
一方、学習モジュール７２は、入力セマンティクスコンバータモジュール５９から与えられる認識結果のうち、「叩かれた」や「撫でられた」など、使用者からの働きかけとして受けた教示の認識結果を入力する。
【００６３】
そして、学習モジュール７２は、この認識結果及び行動切換モジュール７１からの通知に基づいて、「叩かれた（叱られた）」ときにはその行動の発現確率を低下させ、「撫でられた（誉められた）」ときにはその行動の発現確率を上昇させるように、行動モデルライブラリ７０における対応する行動モデル７０１〜７０ｎの対応する遷移確率を変更する。
【００６４】
他方、感情モデル７３は、「喜び（joy）」、「悲しみ（sadness）」、「怒り（anger）」、「驚き（surprise）」、「嫌悪（disgust）」及び「恐れ（fear）」の合計６つの情動について、各情動ごとにその情動の強さを表すパラメータを保持している。そして、感情モデル７３は、これら各情動のパラメータ値を、それぞれ入力セマンティクスコンバータモジュール５９から与えられる「叩かれた」及び「撫でられた」などの特定の認識結果と、経過時間及び行動切換モジュール７１からの通知などに基づいて周期的に更新する。
【００６５】
具体的には、感情モデル７３は、入力セマンティクスコンバータモジュール５９から与えられる認識結果と、そのときのロボット装置１の行動と、前回更新してからの経過時間などに基づいて所定の演算式により算出されるそのときのその情動の変動量を△Ｅ［ｔ］、現在のその情動のパラメータ値をＥ［ｔ］、その情動の感度を表す係数をｋｅとして、（１）式によって次の周期におけるその情動のパラメータ値Ｅ［ｔ＋１］を算出し、これを現在のその情動のパラメータ値Ｅ［ｔ］と置き換えるようにしてその情動のパラメータ値を更新する。また、感情モデル７３は、これと同様にして全ての情動のパラメータ値を更新する。
【００６６】
【数１】
2005078377.tif 000003
【００６７】
なお、各認識結果や出力セマンティクスコンバータモジュール６８からの通知が各情動のパラメータ値の変動量△Ｅ［ｔ］にどの程度の影響を与えるかは予め決められており、例えば「叩かれた」といった認識結果は「怒り」の情動のパラメータ値の変動量△Ｅ［ｔ］に大きな影響を与え、「撫でられた」といった認識結果は「喜び」の情動のパラメータ値の変動量△Ｅ［ｔ］に大きな影響を与えるようになっている。
【００６８】
ここで、出力セマンティクスコンバータモジュール６８からの通知とは、いわゆる行動のフィードバック情報（行動完了情報）であり、行動の出現結果の情報であり、感情モデル７３は、このような情報によっても感情を変化させる。これは、例えば、「吠える」といった行動により怒りの感情レベルが下がるといったようなことである。なお、出力セマンティクスコンバータモジュール６８からの通知は、上述した学習モジュール７２にも入力されており、学習モジュール７２は、その通知に基づいて行動モデル７０１〜７０ｎの対応する遷移確率を変更する。
【００６９】
なお、行動結果のフィードバックは、行動切換モジュール７１の出力（感情が付加された行動）によりなされるものであってもよい。
【００７０】
一方、本能モデル７４は、「運動欲（exercise）」、「愛情欲（affection）」、「食欲（appetite）」及び「好奇心（curiosity）」の互いに独立した４つの欲求について、これら欲求ごとにその欲求の強さを表すパラメータを保持している。そして、本能モデル７４は、これらの欲求のパラメータ値を、それぞれ入力セマンティクスコンバータモジュール５９から与えられる認識結果や、経過時間及び行動切換モジュール７１からの通知などに基づいて周期的に更新する。
【００７１】
具体的には、本能モデル７４は、「運動欲」、「愛情欲」及び「好奇心」については、認識結果、経過時間及び出力セマンティクスコンバータモジュール６８からの通知などに基づいて所定の演算式により算出されるそのときのその欲求の変動量をΔＩ［ｋ］、現在のその欲求のパラメータ値をＩ［ｋ］、その欲求の感度を表す係数ｋｉとして、所定周期で（２）式を用いて次の周期におけるその欲求のパラメータ値Ｉ［ｋ＋１］を算出し、この演算結果を現在のその欲求のパラメータ値Ｉ［ｋ］と置き換えるようにしてその欲求のパラメータ値を更新する。また、本能モデル７４は、これと同様にして「食欲」を除く各欲求のパラメータ値を更新する。
【００７２】
【数２】
2005078377.tif 000004
【００７３】
なお、認識結果及び出力セマンティクスコンバータモジュール６８からの通知などが各欲求のパラメータ値の変動量△Ｉ［ｋ］にどの程度の影響を与えるかは予め決められており、例えば出力セマンティクスコンバータモジュール６８からの通知は、「疲れ」のパラメータ値の変動量△Ｉ［ｋ］に大きな影響を与えるようになっている。
【００７４】
なお、本実施の形態においては、各情動及び各欲求（本能）のパラメータ値がそれぞれ0から100までの範囲で変動するように規制されており、また係数ｋｅ、ｋｉの値も各情動及び各欲求ごとに個別に設定されている。
【００７５】
一方、ミドル・ウェア・レイヤ４０の出力セマンティクスコンバータモジュール６８は、図４に示すように、上述のようにしてアプリケーション・レイヤ４１の行動切換モジュール７１から与えられる「前進」、「喜ぶ」、「鳴く」又は「トラッキング（ボールを追いかける）」といった抽象的な行動コマンドを出力系６９の対応する信号処理モジュール６１〜６７に与える。
【００７６】
そしてこれら信号処理モジュール６１〜６７は、行動コマンドが与えられると当該行動コマンドに基づいて、その行動を行うために対応するアクチュエータ２６１〜２６ｎ（図２）に与えるべきサーボ指令値や、スピーカ２４（図２）から出力する音の音声データ及び又は「目」のＬＥＤに与える駆動データを生成し、これらのデータをロボティック・サーバ・オブジェクト３２のバーチャル・ロボット装置３３及び信号処理回路１４（図２）を順次介して対応するアクチュエータ２６１〜２６ｎ又はスピーカ２４又はＬＥＤに順次送出する。
【００７７】
このようにしてロボット装置１においては、制御プログラムに基づいて、自己（内部）及び周囲（外部）の状況や、使用者からの指示及び働きかけに応じた自律的な行動を行うことができるようになされている。
【００７８】
（２）動体検出
上述のロボット装置１においては、上述したミドル・ウェア・レイヤ４０における動き検出用モジュール５７において、撮像手段としてのカメラ２０にて撮像された画像から動体を検出することができる。
【００７９】
図９は、上述のロボット装置１における動体検出処理に関わる要部のみを示すブロック図である。図９に示すように、カメラ２０からの入力画像は、信号処理回路１４（図２）により順次取り込まれ、内部バス１５を介してＤＥＲＡＭ１１内の所定位置に順次格納される。動体検出に使用される画像は輝度画像であり、ＤＲＡＭ１１に格納される際、撮像画像が輝度画像に変換される。
【００８０】
上述したように、ロボティック・サーバ・オブジェクト３２は、デバイス・ドライバ・レイヤ３０の最下位層に位置し、各種センサやアクチュエータ２６１〜２６ｎ等のハードウェアにアクセスするためのインターフェースを提供するソフトウェア群でなるバーチャル・ロボット装置３３を有する。
【００８１】
また、ミドル・ウェア・レイヤ４０は、ロボティック・サーバ・オブジェクト３２の上位層に位置し、動き検出等の画像処理や音声処理等のこのロボット装置１の基本的な機能を提供するソフトウェア群から構成されている。
【００８２】
更に、アプリケーション・レイヤ４１は、ミドル・ウェア・レイヤ４０の上位層に位置し、当該ミドル・ウェア・レイヤ４０を構成する各ソフトウェア群によって処理された処理結果に基づいてロボット装置１の行動を決定するためのソフトウェア群から構成されている。
【００８３】
動体検出処理では、先ず、ＣＰＵ１０（図２）がロボティック・サーバ・オブジェクト３２及びバーチャル・ロボット装置３３、並びにミドル・ウェア・レイヤ４０を構成する画像処理オブジェクトを順次起動する。そして、ロボティック・サーバ・オブジェクト３２のバーチャル・ロボット装置３３によりＤＲＡＭ１１から輝度画像データを取り込み、この輝度画像データが動き検出オブジェクト５７に送られる。動き検出オブジェクト５７は、時間軸上で隣接する画像間の差分を、複数の画素からなるブロック毎に求めたブロック差分値を算出し、そのブロック差分値が所定の閾値以上であるブロックを動体候補であるブロックと判断し、更に該動体候補ブロックが隣接してなるブロック連結領域を動体領域として検出する処理を実行する。そして、この検出結果をアプリケーション・レイヤ４１の行動モデルライブラリ７０に出力する。行動モデルライブラリ７０は、動体を検出したという情報に基づき行動を決定し、決定結果を行動切換モジュール７１に出力する。
【００８４】
行動切り替えモジュール７１は、当該行動を実行すべき旨のコマンド（以下、これを行動コマンドという。）をミドル・ウェア・レイヤ４０の出力セマンティクスコンバータモジュール６８に送出する・出力セマンティックスコンバータモジュール６８は、「トラッキング（ボールを追いかける）」といった抽象的な行動コマンドを対応する信号処理モジュールであるトラッキングモジュール６２に与える。
【００８５】
そしてトラッキングモジュール６２は、行動コマンドが与えられると当該行動コマンドに基づいて、その行動を行うために対応するアクチュエータ２６１〜２６ｎに与えるべきサーボ指令値を生成し、これらのデータをロボティック・サーバ・オブジェクト３２のバーチャル・ロボット装置３３及び信号処理回路１４（図２）を順次介して対応するアクチュエータ２６１〜２６ｎに順次送出する。
【００８６】
このようにしてロボット装置１においては、制御プログラムに基づいて、自律的に動体検出結果を使用して動体をトラッキングすることができ、リアルタイムに正確な動体検出を可能とし、ユーザとの円滑なコミュニケーションを実現することができる。
【００８７】
次に、動き検出モジュール５７における動体検出処理について詳細に説明する。図１０は、動体検出方法を示すフローチャートである。図１０に示すように、先ず、動体検出処理を開始するか否かの判断を行う（ステップＳ１）。この開始判定としては、例えば
１：姿勢遷移中
２：歩行中
３：首が動作中
であるか否かにより、判断することができる。即ち、ロボット装置１自身が動いている場合には、カメラ２０も動いてしまうため、本実施の形態においては、例えば伏せをしていた状態から立ち上がった時等の姿勢遷移中、歩行中、及び頭部ユニット４を回転させる等の首動作中においては、動体検出処理を行わないものとする。
【００８８】
次に、輝度画像として入力される前画像（前フレーム画像）と、この前画像に時間軸上で隣接し、同じく輝度画像である現画像（現フレーム画像）とを比較し、その差分値を求める。この際、前画像及び現画像共に、複数の画素からなるブロックに分割し、各画像間でブロック毎の差分二乗和を求める。そして、この差分二乗和が一定値以上である場合、そのブロックは動きがあると判断する（ステップＳ２）。以下、動きありと判断したブロックを動体候補ブロックという。
【００８９】
図１１は、ステップＳ２において動体候補ブロックを検出する方法を説明するための図である。図１１に示すように、現画像Ｃ及び前画像Ｐは、例えば水平方向が１０４、垂直方向が８０の画素からなる。これらの現画像Ｃと前画像Ｐとの輝度差分値を画素単位で算出し、複数の画素からなるブロック単位の差分値を求める。先ず、各画像を水平方向をｉ個、垂直方向をｊ個に分割したブロックとし、図１２に示すように、各ブロック毎に、現画像ブロックＢＣｉｊと前画像ブロックＢＰｉｊとの差分二乗和を算出する。そして、各ブロック毎の差分二乗和が所定の閾値以上であるか否かを判定する。ここでは、現画像Ｃ及び前画像Ｐにおける１ブロックは、水平方向が４画素、垂直方向が４画素のそれぞれブロックＢＣｉｊ及びブロックＢＰｉｊ（１≦ｉ≦２６、１≦ｊ≦２０）とする。
【００９０】
ここで、例えは、差分値が所定の閾値以上であるものを各画素毎に抽出する場合、１０４×８０＝８３２０画素数分だけ判断する必要があるのに対し、このようにブロックに分割することで、判定対象が図１１に示す場合は、２６×２０＝５２０ブロック数分となる。即ち、このように解像度を下げることで、従来はノイズ等であるのに検出されてしまっていたような画素単位の検出をなくすと共に、処理を迅速化することができる。また、ブロック毎に判断する閾値をある程度下げ、検出感度を大きくしても検出対象となるのはブロック単位であるため、ノイズを効率的に排除しつつちょっとした動体の動きについても検出可能とすることができる。
【００９１】
なお、ここでは、４×４画素からなるブロックとして説明するが、ブロックの大きさは、カメラの性能や、周囲の明るさ等の環境に応じて適宜設定するものとする。また、動体候補ブロックと判定するための閾値においても、カメラや環境に応じて適宜設定するものとする。
【００９２】
図１０に戻って、ステップＳ２にて検出された、各ブロックＢＣｉｊのうち差分二乗和が閾値以上であった動体候補ブロックにラベリングを行う（ステップＳ３）。ラベリングは、動体候補となるブロックにフラグを立てることにより行うことができる。
【００９３】
そして、ラベリングしたブロックである動体候補ブロックが隣接する領域を１つ領域（以下、ブロック連結領域という。）として連結し、このブロック連結領域のサイズが所定値以上であるか否かを判断する（ステップＳ４）。
【００９４】
このステップＳ４では、サイズが所定値未満であるブロック連結領域は、動体を示す領域ではないと判断する。即ち、ブロック連結領域の大きさが全て所定値未満である場合には、動体検出処理を終了する。ここでブロック連結領域の大きさとして、該領域に含まれる動体候補ブロックの合計ブロック数（ラベル数）を使用することができる。
【００９５】
そして、このステップＳ４にて所定の大きさ以上であるブロック連結領域が複数検出された場合には、そのなかで最も大きい領域を動体が存在する領域として検出するためのターゲットとして選択する（ステップＳ５）。
【００９６】
通常の画素単位でラベリングを行う場合では、ラベリングされた領域の細かい凹凸や溝の削除をするため、ラベリングされた画素の例えば４近傍又は８近傍を連結させたり削除したりする膨張・収縮処理等が必要となり、計算量が大きくなってしまう。一方、本実施の形態においては、ブロック単位でラベリングするため、ラベリングされた動体候補ブロックの連結性を改善すると共に、上述の膨張・収縮処理等が不要となり、ラベリング等に要する時間を低減することができる。
【００９７】
図１３は、ラベリング結果の一例を示す図である。図１３に示すように、ラベリングの結果、隣接する動体候補ブロックを連結させたブロック連結領域Ｓ１〜Ｓ３が検出され、例えばブロック連結領域Ｓ１が１０ブロック、ブロック連結領域Ｓ２が３ブロック、ブロック連結領域が１ブロックからなる場合、ブロック連結領域Ｓａが最も大きく、動体領域として動体領域とすべきターゲット（動体候補領域）としてステップＳ５にて選択される。
【００９８】
ここで、例えばブロック連結領域Ｓｃは、動体とするには小さすぎ、ノイズと判断されステップＳ４にてキャンセルされる領域となり、ブロック連結領域Ｓｂは、ステップＳ４にてキャンセルはされなかったものの、ステップＳ５において、ブロック連結領域Ｓａより小さいため、例えば分離されたその他の動体とされてターゲットから除かれる。
【００９９】
図１０に戻って、最後に、ターゲットとされたブロック連結領域が動体であるか否かの最終判定を行う（ステップＳ６）。この判定では、例えば、
条件１：ブロック連結領域の画像に対する占有率が３０％より大きい
条件２：ターゲットの縦又は横の広がりが画像の縦又は横の大きさの７０％以上
条件３：ラベル数が極端に多い
の３つの条件に合致する場合にステップＳ５にてターゲットとしたブロック連結領域を検出対象とせず、動体検出処理を終了する。一方、ブロック連結領域が以上の条件に当てはまらない場合には、当該ブロック連結領域を動体領域として検出する。
【０１００】
ここで、上記条件１において、ブロック連結領域が画像に占める割合が３０％より大きい場合は、例えばロボット装置１のカメラ２０の前で物体が動いたような場合が想定でき、そのように近くの物体をトラッキングのターゲットとしないよう、検出対象とせずにキャンセルするものである。
【０１０１】
また、条件２において、ブロック連結領域の画像に対する占有率が３０％以下であったとしても、そのブロック連結領域の水平方向の広がりが画像の水平方向の大きさの７０％より大きかったり、ブロック連結領域の垂直方向の広がりが画像の垂直方向の大きさの７０％より大きく、ブロック連結領域が高域に広がっているような場合を示す。これは、例えば、上述のような歩行可能なロボット装置１であると、サーボモータ等が微振動し、それがカメラ２０等に伝わり、結果として、画像のエッジ部分のブロックが動体候補として検出されてしまうことにより、これらが連結された場合等が挙げられる。従って、このようにブロック連結領域の水平方向及び垂直方向の広がりが大きいものもターゲットとすべきではないとして検出対象とせずにキャンセルする。
【０１０２】
更に、条件３においては、ステップＳ２にて動体候補ブロックと判定されたものについてステップＳ３にてラベリングを行うが、このラベリングされた動体候補ブロックの数が極端に多い場合、例えば、複数の動体が撮像範囲内に含まれるような場合が想定されるが、そのような場合も、ロボット装置１として、ブロック連結領域をトラッキングするには適切ではない判断とし、検出対象とせずにキャンセルするようにする。
【０１０３】
そして、キャンセルされずに残ったロック隣接領域を動体が存在する動体領域として検出する。このように、ラベリングを行い、検出対象としない各条件に当てはめることにより、複数の動体を分離し、ノイズを除去すると共に、画面全体を占めるような大きな動体や、複数の小さな動体をトラッキング対象から排除し、モータの微振動による誤検出を防止することができる。
【０１０４】
こうして検出された動体領域の情報が、上述したように行動モデルライブラリ７０に伝えられ、行動切替モジュール７１にて行動が決定され、例えばトラッキングモジュールに対して、上記動体領域（動体）をトラッキングするよう行動コマンドが出力される。
【０１０５】
図１４は、検出された動体領域を説明するための図である。図１４に示すように、画像１１０は、動体候補ブロックが連結され、ステップＳ４にて動体を示す領域と判断されたブロック連結領域１１１、１１２、１１３を有するものとする。これら３つのブロック隣接領域１１１、１１２、１１３は、上述したように、ステップ５にて、最も大きい領域であるブロック連結領域１１１が動体候補領域とされ、ステップＳ６に示す所定の条件を満たすとして動体として検出されたものとする。
【０１０６】
ここで、トラッキングモジュール７１は、この動体領域１１１における重心位置を求め、その重心位置の水平方向位置及び垂直方向位置を検出し、頭部ユニット４を回転して上記重心位置がカメラ２０の撮像画像の中心となるよう、カメラトラッキングを開始することができる。即ち、トラッキングモジュール７１は、上記重心位置に応じて、首等を回転させるアクチュエータ２６ｎを制御する制御信号を生成し、トラッキングを制御するものである。
【０１０７】
ここで、例えばロボット装置１において、ミドル・ウェア・レイヤ４０における他の機能が使用されておらず、動体検出のみを実行している場合、又は演算処理に余裕があるような場合であってリソースが競合しない範囲で他の動作を発現することができるような状態である場合等において、検出した動体領域の大きさに応じて異なる動作を発現するようにしておいてもよい。
【０１０８】
例えば、動体領域の大きさと、それに応じて発現する行動とを下記表１のように設定することができる。
【０１０９】
【表１】
2005078377.tif 000005
【０１１０】
上記表１に示すように、ステップＳ３にてラベリングされステップＳ４にて連結されたブロック連結領域の画像に占める占有率が６％未満である場合（レベルＬ１）は、ステップＳ４にてターゲットとしてふさわしくないものとしてキャンセルされる。また、占有率が３０％より大きい場合（レベルＬ６）にも、ステップＳ６にてターゲットとして不適当とされキャンセルされる。
【０１１１】
一方、占有率が６％以上１２％未満である場合（レベルＬ２）は、トラッキングモジュール６２により首による動体のカメラトラッキングを開始する。更に、動体領域が１２％以上１８％未満である場合（レベルＬ３）には、首による動体トラッキングに加え、例えば図１に示す尻尾部５を振ったり、耳をパタパタしたりする等、興味を示している仕草等を示す動作を合わせて発現するようにする。
【０１１２】
また、占有率が１８％以上２４％未満である場合（レベルＬ４）は、首による動体のカメラトラッキングに加え、動体を発見したことを示す反応として、スピーカ２４等から音を出力したり、ＬＥＤ等の発光手段を発光させる等の動作を発現する。
【０１１３】
更に、占有率が２４％以上３０％未満である場合（レベルＬ５）は、例えば、実際に動体の移動方向に移動したり、動体に近づいて動体に触れたり、動体を蹴ったりする等の動作を発現することで、更に積極的なインタラクションを図るようにする。または、首による動体のカメラトラキングに加え、レベルＬ２により発現される動作及びレベルＬ３により発現される動作を合わせて行うようにしたり、尻尾部５の振り方を大きくしたり、発光手段により複数色の光を順次点灯させるようにしてもよい。なお、動体の移動方向に移動したり、動体に近づいたりする場合は、ロボット装置１自体が移動するため、動体検出が困難になる。そのような場合には、動体に近づいた時点、動体に触れた時点等、ロボット装置１が移動を停止した時点で再び動体検出を開始するようにすればよい。例えば動体に近づく動作等により動体検出を停止した後、次に動体検出を再開するまでの間が短い場合等は、例えば自身の移動速度と検出されていた動体の移動速度とから、再び動体が検出可能とされる位置を予測する等して動体検出を開始するようにしてもよい。
【０１１４】
本実施の形態においては、現画像と１つ前のフレームである前画像との画素毎の差分値を求め、これをブロック単位で閾値処理し、所定の閾値以上であるブロックにフラグを付してラベリングする。そして、ラベリングした動体候補ブロックのうち隣接するブロックを連結したブロック連結領域とし、所定の大きさのもののみ動体領域として検出すべきターゲットとする。このように、ブロック単位で閾値処理し、ラベリングを行うことにより、画素単位で行う場合に比して、閾値判定する対象が少なく、連結処理の際に膨張・収縮等も不要となり演算量を削減することができる。
【０１１５】
更に、ターゲットとするブロック連結領域が複数ある場合は、最も大きいもの選択し、更にその選択したターゲットが、所定の大きさ未満であって、画面全体に広がりすぎず、更に先に判定された動体候補ブロックの数が所定数以下である場合にのみ、ターゲットを動体領域として検出するため、トラッキング対象として適切な動体のみを正確に検出することができる。更に、上述のブロック単位で閾値処理をする際に、閾値を下げて感度を上げても、後段において、ラベリングされたブロック数が多すぎたり、ターゲットとする領域が大きすぎたり、広がりすぎたりするような場合にはこれをキャンセルする処理を有するので、ちょっとした動きでも検出できると共に、トラッキングするのみふさわしい動体領域のみを正確に検出することができる。
【０１１６】
更に、ロボット装置が検出された結果に応じ、カメラで動体をトラッキングするのみでなく更に異なる動作を合わせて発現するようにすることで、ロボット装置１の近くで動いている動体に対してより自然で生物らしいインタラクションが可能となる。
【図面の簡単な説明】
【０１１７】
【図１】本発明の実施の形態におけるロボット装置の外観構成を示す斜視図である。
【図２】同ロボット装置の回路構成を示すブロック図である。
【図３】同ロボット装置のソフトウェア構成を示すブロック図である。
【図４】同ロボット装置のソフトウェア構成におけるミドル・ウェア・レイヤの構成を示すブロック図である。
【図５】同ロボット装置のソフトウェア構成におけるアプリケーション・レイヤの構成を示すブロック図である。
【図６】同アプリケーション・レイヤの行動モデルライブラリの構成を示すブロック図である。
【図７】同ロボット装置の行動決定のための情報となる有限確率オートマトンを説明するために使用した図である。
【図８】有限確率オートマトンの各ノードに用意された状態遷移表を示す図である。
【図９】同ロボット装置における動体検出処理に関わる要部のみを示すブロック図である。
【図１０】本発明の実施の形態における動体検出方法を示すフローチャートである。
【図１１】同動体検出処理において動体候補ブロックを検出する方法を説明するための図である。
【図１２】同動体検出処理において、各ブロック毎に差分を算出する方法を説明する図である。
【図１３】同動体検出処理において、ブロック分割された後、動体候補ブロックとしてラベリングされた結果の一例を示す図である。
【図１４】同動体検出処理において検出された動体領域を説明するための図である。
【符号の説明】
【０１１８】
１  ロボット装置、１０  ＣＰＵ、１１  ＤＲＡＭ、１４  信号処理部、  ２０  ＣＣＤカメラ、２６１〜２６ｎ  アクチュエータ、３０  デバイス・ドライバ・レイヤ、３２  ロボティック・サーバ・オブジェクト３３  バーチャル・ロボット装置、４０  ミドル・ウェア・レイヤ、４１  アプリケーション・レイヤ、５７  動き検出オブジェクト、６２  トラッキングモジュール、６８  出力セマンティクスコンバータモジュール、７０  行動モデルライブラリ、７１  行動切り替えモジュール
【図１】
2005078377.tif 000006
【図２】
2005078377.tif 000007
【図３】
2005078377.tif 000008
【図４】
2005078377.tif 000009
【図５】
2005078377.tif 000010
【図６】
2005078377.tif 000011
【図７】
2005078377.tif 000012
【図８】
2005078377.tif 000013
【図９】
2005078377.tif 000014
【図１０】
2005078377.tif 000015
【図１１】
2005078377.tif 000016
【図１２】
2005078377.tif 000017
【図１３】
2005078377.tif 000018
【図１４】
2005078377.tif 000019