以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、外部環境中に存在する物体を学習する2足歩行タイプのロボット装置に適用したものである。このロボット装置は、住環境その他の日常生活上の様々な場面における人的活動を支援する実用ロボットであり、人間が行う基本的な動作を表出できるエンターテインメントロボットでもある。
(1)ロボット装置の構成
図1に示すように、本実施の形態におけるロボット装置1は、体幹部ユニット2の所定の位置に頭部ユニット3が連結されると共に、左右2つの腕部ユニット4R/Lと、左右2つの脚部ユニット5R/Lが連結されて構成されている(但し、R及びLの各々は、右及び左の各々を示す接尾辞である。以下において同じ。)。
このロボット装置1が具備する関節自由度構成を図2に模式的に示す。頭部ユニット3を支持する首関節は、首関節ヨー軸101と、首関節ピッチ軸102と、首関節ロール軸103という3自由度を有している。
また、上肢を構成する各々の腕部ユニット4R/Lは、肩関節ピッチ軸107と、肩関節ロール軸108と、上腕ヨー軸109と、肘関節ピッチ軸110と、前腕ヨー軸111と、手首関節ピッチ軸112と、手首関節ロール軸113と、手部114とで構成される。手部114は、実際には、複数本の指を含む多関節・多自由度構造体である。但し、手部114の動作は、ロボット装置1の姿勢制御や歩行制御に対する寄与や影響が少ないので、本明細書ではゼロ自由度と仮定する。したがって、各腕部は7自由度を有するとする。
また、体幹部ユニット2は、体幹ピッチ軸104と、体幹ロール軸105と、体幹ヨー軸106という3自由度を有する。
また、下肢を構成する各々の脚部ユニット5R/Lは、股関節ヨー軸115と、股関節ピッチ軸116と、股関節ロール軸117と、膝関節ピッチ軸118と、足首関節ピッチ軸119と、足首関節ロール軸120と、足部121とで構成される。本明細書中では、股関節ピッチ軸116と股関節ロール軸117の交点は、ロボット装置1の股関節位置を定義する。人体の足部121は、実際には多関節・多自由度の足底を含んだ構造体であるが、ロボット装置1の足底は、ゼロ自由度とする。したがって、各脚部は、6自由度で構成される。
以上を総括すれば、ロボット装置1全体としては、合計で3+7×2+3+6×2=32自由度を有することになる。但し、エンターテインメント向けのロボット装置1が必ずしも32自由度に限定されるわけではない。設計・制作上の制約条件や要求仕様等に応じて、自由度すなわち関節数を適宜増減することができることはいうまでもない。
上述したようなロボット装置1がもつ各自由度は、実際にはアクチュエータを用いて実装される。外観上で余分な膨らみを排してヒトの自然体形状に近似させること、2足歩行という不安定構造体に対して姿勢制御を行うことなどの要請から、アクチュエータは小型且つ軽量であることが好ましい。
図3には、ロボット装置1の制御システム構成を模式的に示している。図3に示すように、制御システムは、ユーザ入力などに動的に反応して情緒判断や感情表現を司る思考制御モジュール200と、アクチュエータ350の駆動などロボット装置1の全身協調運動を制御する運動制御モジュール300とで構成される。
思考制御モジュール200は、情緒判断や感情表現に関する演算処理を実行するCPU(Central Processing Unit)211や、RAM(Random Access Memory)212、ROM(Read Only Memory)213、及び外部記憶装置(ハード・ディスク・ドライブなど)214で構成され、モジュール内で自己完結した処理を行うことができる独立駆動型の情報処理装置である。
この思考制御モジュール200は、画像入力装置251から入力される画像データや音声入力装置252から入力される音声データなど、外界からの刺激などに従って、ロボット装置1の現在の感情や意思を決定する。ここで、画像入力装置251は、例えばCCD(Charge Coupled Device)カメラを左右に1つずつ備えており、また、音声入力装置252は、例えばマイクロホンを複数備えている。また、思考制御モジュール200は、スピーカを備える音声出力装置253を介して、音声を出力することができる。
また、思考制御モジュール200は、意思決定に基づいた動作又は行動シーケンス、すなわち四肢の運動を実行するように、運動制御モジュール300に対して指令を発行する。
一方の運動制御モジュール300は、ロボット装置1の全身協調運動を制御するCPU311や、RAM312、ROM313、及び外部記憶装置(ハード・ディスク・ドライブなど)314で構成され、モジュール内で自己完結した処理を行うことができる独立駆動型の情報処理装置である。外部記憶装置314には、例えば、オフラインで算出された歩行パターンや目標とするZMP軌道、その他の行動計画を蓄積することができる。ここで、ZMPとは、歩行中の床反力によるモーメントがゼロとなる床面上の点のことであり、また、ZMP軌道とは、例えばロボット装置1の歩行動作期間中にZMPが動く軌跡を意味する。なお、ZMPの概念並びにZMPを歩行ロボットの安定度判別規範に適用する点については、Miomir Vukobratovic 著“LEGGED LOCOMOTION ROBOTS”(加藤一郎外著『歩行ロボットと人工の足』(日刊工業新聞社))に記載されている。
運動制御モジュール300には、図2に示したロボット装置1の全身に分散するそれぞれの関節自由度を実現するアクチュエータ350、体幹部ユニット2の姿勢や傾斜を計測する姿勢センサ351、左右の足底の離床又は着床を検出する接地確認センサ352,353、バッテリなどの電源を管理する電源制御装置354などの各種の装置が、バス・インターフェース(I/F)301経由で接続されている。ここで、姿勢センサ351は、例えば加速度センサとジャイロ・センサの組み合わせによって構成され、接地確認センサ352,353は、近接センサ又はマイクロ・スイッチなどで構成される。
思考制御モジュール200と運動制御モジュール300は、共通のプラットフォーム上で構築され、両者間はバス・インターフェース201,301を介して相互接続されている。
運動制御モジュール300では、思考制御モジュール200から指示された行動を体現すべく、各アクチュエータ350による全身協調運動を制御する。すなわち、CPU311は、思考制御モジュール200から指示された行動に応じた動作パターンを外部記憶装置314から取り出し、又は内部的に動作パターンを生成する。そして、CPU311は、指定された動作パターンに従って、足部運動、ZMP軌道、体幹運動、上肢運動、腰部水平位置及び高さなどを設定すると共に、これらの設定内容に従った動作を指示する指令値を各アクチュエータ350に転送する。
また、CPU311は、姿勢センサ351の出力信号によりロボット装置1の体幹部ユニット2の姿勢や傾きを検出すると共に、各接地確認センサ352,353の出力信号により各脚部ユニット5R/Lが遊脚又は立脚の何れの状態であるかを検出することによって、ロボット装置1の全身協調運動を適応的に制御することができる。
また、CPU311は、ZMP位置が常にZMP安定領域の中心に向かうように、ロボット装置1の姿勢や動作を制御する。
さらに、運動制御モジュール300は、思考制御モジュール200において決定された意思通りの行動がどの程度発現されたか、すなわち処理の状況を、思考制御モジュール200に返すようになっている。
このようにしてロボット装置1は、制御プログラムに基づいて自己及び周囲の状況を判断し、自律的に行動することができる。
(1−2)ロボット装置の音声対話機能
次に、上述したロボット装置1が有する音声対話機能について、図4の機能ブロック図を用いて説明する。
図4に示すように、ロボット装置1の音声対話機能に関する部分は、ユーザの発話を音声認識する音声認識部400と、この音声認識部400の認識結果に基づいて、複数種類の応答を生成する応答生成部410と、応答生成部410が生成した複数種類の応答の中から1つの応答を選択する対話制御部420と、対話制御部420により選択された応答の音声信号を生成する音声合成部430とで構成される。
音声認識部400は、音声入力装置252(図3)から入力される音声データD1に基づいてユーザの発話内容を音声認識し、この認識結果を文字列のデータ(以下、「認識文字列データ」という。)D2として対話制御部420を介して応答制御部410に供給する。なお、認識文字列データD2には、認識処理時に得られたイントネーションやアクセント等の韻律情報などのパラ原語も含まれ、例えばユーザ発話の語尾の韻律が何かの質問をするときの韻律であると判断された場合には、「?」という文字がその発話に対する一連の文字列の最後尾に付加される。
応答生成部410は、ユーザの発話に対して各種応答を生成する応答生成モジュール410a,410b・・・から構成される。各応答生成モジュール410a,410b・・・は、それぞれユーザの発話内容に応じてどのような応答を返すべきかを予め規定したルール(以下、「応答生成ルール」という。)のデータを有しており、音声認識部400から認識文字列データD2が供給されると、対応する応答生成ルールに従って、この認識文字列データD2に基づき得られるユーザの発話内容に対する応答を生成し、その文字列データ(以下、「応答文字列データ」という。)D3a,D3b・・・を対話制御部420に供給する。
対話制御部420は、応答生成部410の応答生成モジュール410a,410b・・・から応答文字列データD3a,D3b・・・が供給されると、そのうちの1つを選択し、応答データD4として音声合成部430に供給する。
音声合成部430は、対話制御部420から供給される応答データD4に基づいて音声合成処理を行うことにより音声信号D5を生成し、これを音声出力装置(図3)に出力する。この結果、この音声信号D5に基づいて、かかる応答データD4に応じた応答がロボット装置1から外部に出力される。
(1−3)ロボット装置の自律行動機能
続いて、上述したロボット装置1が有する自律行動機能について、図5の模式図を用いて説明する。図5において、丸で表されているのがオブジェクト又はプロセスと呼ばれるエンティティである。このオブジェクト同士が非同期に通信し合うことで、システム全体が動作する。各オブジェクトは、メッセージ通信と共有メモリを使用したオブジェクト間通信とにより、データの受け渡し及びInvokeを行っている。
図5に示すように、ロボット装置1の自律行動機能に関する部分は、キネマティックオドメトリ(Kinematics Odometry)KINE500と、平面抽出部(Plane Extractor)PLEX510と、グリッド占有率算出部(Occupancy Grid)OG520と、ランドマークセンサ部(Landmark Sensor)CLS530と、絶対座標算出部(Localization)LZ540と、経路計画決定部(Situated Behavior Layer)SBL550とで構成され、各オブジェクト単位にて処理がなされる。この各オブジェクトの動作について、図6のフローチャートを用いて詳細に説明する。
図5に示すキネマティックオドメトリKINE500には、左右のCCDカメラで撮像した画像データD11及びロボット装置1の関節角等のセンサデータD12が入力される。ステップS1において、キネマティックオドメトリKINE500は、これらの画像データD11及びセンサデータD12を受け取り、メモリに格納されていたそれまでの画像データ及びセンサデータを更新する。
次にステップS2において、キネマティックオドメトリKINE500は、画像データD11とセンサデータD12との時間的な対応を取る。具体的には、画像データD11の画像が撮像された時間におけるセンサデータD12の関節角を割り出す。
続いてステップS3において、キネマティックオドメトリKINE500は、この関節角のデータを使用してロボット装置1を中心としたロボット中心座標系を頭部ユニット3に設けられたCCDカメラを中心としたカメラ座標系に変換する。この際、キネマティックオドメトリKINE500は、ロボット中心座標系からカメラ座標系の同次変換行列等を導出し、この同次変換行列D13とこれに対応する画像データとを画像認識を行うオブジェクトに供給する。具体的には、同次変換行列D13及び左右の画像データから得られた視差画像データD14を平面抽出部PLEX510に供給し、同次変換行列D13及び画像データD15をランドマークセンサ部CLS530に供給する。また、キネマティックオドメトリKINE500は、センサデータD12から得られる歩行パラメータと接地確認センサ352,353(図3)を使用した歩数のカウント値とからロボット装置1の移動量を求め、ロボット装置1のロボット中心座標系における移動量(以下、「オドメトリ」ともいう。)を算出する。キネマティックオドメトリKINE500は、このオドメトリD16をグリッド占有率算出部OG520及び絶対座標算出部LZ540に供給する。
続いてステップS4,S5において、平面抽出部PLEX510及びグリッド占有率算出部OG520は、障害物のグリッド占有率(環境地図)を算出・更新し、ランドマークセンサ部CLS510及び絶対座標算出部LZ540は、絶対座標を算出・更新する。
ここで、このステップS4,S5での平面抽出部PLEX510及びグリッド占有率算出部OG520における処理と、ランドマークセンサ部CLS530及び絶対座標算出部LZ540における処理とは、それぞれ図7(A),(B)に示すように、同時並行的に行われるものである。
すなわち、障害物グリッドを算出・更新する場合、平面抽出部PLEX510は、先ず図7(A)のステップS11において、キネマティックオドメトリKINE500にて算出されたキネマティックスデータである同次変換行列D13と、これに対応する視差画像データD14とが入力されると、それまでメモリに格納されていたこれらのデータを更新する。
次にステップS12において、平面抽出部PLEX510は、CCDカメラのキャリブレーションパラメータ等を使用して視差画像データD14から3次元の位置データ(レンジデータ)を算出する(例えば特開2000−350239号公報を参照)。平面抽出部PLEX510は、このレンジデータからハフ変換等を使用して、例えば壁やテーブル等の平面を除く平面を平面として抽出する。そしてステップS13において、平面抽出部PLEX510は、同次変換行列D13からロボット装置1の足底が接地している平面との対応を取って床面を選択し、床面上にない点、例えば所定の閾値よりも高い位置にあるもの等を障害物として検出し、この障害物情報D17をグリッド占有率算出部520に供給する。
続いてステップS14において、グリッド占有率算出部OG520は、キネマティックオドメトリKINE500にて算出されたオドメトリと、平面抽出部PLEX510にて算出された障害物の観測情報(障害物情報)とが入力されると、メモリに格納されていたそれまでのデータを更新する。そしてステップS15において、グリッド占有率算出部OG520は、床面上に障害物があるか否かの確率を保持する障害物のグリッド占有率を確率的手法により更新する。
このグリッド占有率算出部OG520は、ロボット装置1を中心とした例えば周囲4mの障害物情報(障害物のグリッド占有率)を示す環境地図と、ロボット装置1が向く方角を示す姿勢情報とを保持している。ここで、環境地図は、例えば図8に示すように、ロボット装置1を中心とした周囲の環境が複数のグリッドに分割されたものであり、各グリッドは、障害物が存在するグリッド(図中黒色で表されるグリッド)と、障害物が存在しないグリッド(図中白色で表されるグリッド)と、未観測のグリッド(図中斜線で表されるグリッド)とに分類される。グリッド占有率算出部OG520は、このような環境地図を更新し、更新した認識結果(障害物情報D19)を経路計画決定部SBL550に供給することにより、上位レイヤ、すなわち経路計画決定部SBL550にて障害物を回避する計画を作成することができる(例えば「佐部、大橋、河本、グットマン、福地、芦ヶ原、『二足歩行ロボットによるステレオ画像を用いた障害物回避と歩行計画』、第8回画像センシングシンポジウム講演論文集 p.237−242」を参照)。
一方、絶対座標を算出・更新する場合、ランドマークセンサ部CLS530は、先ずステップS21において、キネマティックオドメトリKINE500からキネマティックスデータである同次変換行列D13及び画像データD15が入力されると、予めメモリ内に格納されていたこれらのデータを更新する。そして、画像データD15の画像処理を行って、予め認識しているカラーランドマークを検出する。このカラーランドマークの画像データD15上での位置及び大きさをカメラ座標系での位置に変換する。さらにステップS22において、ランドマークセンサ部CLS530は、同次変換行列D13を使用してカラーランドマークのカメラ座標系での位置をロボット中心座標系における位置に変換し、ロボット中心座標系におけるカラーランドマーク位置の情報(カラーランドマーク相対位置情報)D18を絶対座標算出部LZ540に供給する。
すなわち、ランドマークセンサ部CLS530は、例えば、グリーン、ピンク、又はブルー等のカラーを有する人工的なカラーランドマークを含む環境において、ロボット装置1のセンサ情報とロボット装置1が行った動作情報とによって、ロボット装置1の自己位置(位置及び姿勢)を同定する。
続いてステップS23において、絶対座標算出部LZ540は、キネマティックオドメトリKINE500からのオドメトリD16とランドマークセンサ部CLS530からのカラーランドマーク相対位置情報D18とが入力されると、予めメモリ内に格納されていたこれらのデータを更新する。
続いてステップS24において、絶対座標算出部LZ540は、予め認識しているカラーランドマークの絶対座標(カメラ座標系での位置)、カラーランドマーク相対位置情報D18及びオドメトリD16を使用し、確率的手法によりロボット装置1の絶対座標(カメラ座標系での位置)を算出する。そして、この絶対座標位置D20を経路計画決定部SBL550に供給する。
図6に戻って、経路計画決定部SBL550は、グリッド占有率算出部OG520から障害物情報D19が入力され、絶対座標算出部LZ540から絶対座標位置D20が入力されると、予めメモリに格納されていたこれらのデータを更新する。そして、ステップS6において、経路計画決定部SBL550は、グリッド占有率算出部OG520からの障害物情報D19により、ロボット装置1の周囲に存在する障害物に関する認識結果を取得し、絶対座標算出部LZ540から現在のロボット装置1の絶対座標を取得することにより、カメラ座標系又はロボット中心座標系で与えられた目標地点に対して障害物に衝突せずに歩行可能な経路を生成し、経路に応じて経路を遂行する動作コマンドを発行する。すなわち、入力データから状況に応じてロボット装置1が取るべき行動を決定し、その行動列を出力する。
(2)物体認識システム
次に、上述したロボット装置1に搭載される物体認識システムについて説明する。この物体認識システムの動作には、未知の物体の視覚的特徴を学習する物体学習フェーズと、この学習結果に基づいて学習済みの物体を認識する物体認識フェーズとがある。
ここで、ロボット装置1が行動するような実環境において物体を学習・認識する場合には、視点や照明環境の変化に頑強な物体認識手法が必要とされる。そこで、本実施の形態では、このような物体認識手法の一例として、本件出願人が先に提案した特願2003−124225の明細書及び図面に記載された手法を用いることとし、これから学習しようとする物体の画像(以下、適宜「モデル画像」という。)と入力画像(以下、適宜「オブジェクト画像」という。)とから特徴点及びその特徴量を抽出し、類似する特徴量を有する特徴点のペア(候補対応特徴点ペア)を生成して、生成された候補対応特徴点ペア群を用いてオブジェクト画像中のモデル、すなわち入力画像中の既学習物体を認識する。
なお、実際には、物体学習フェーズにおいて、複数のモデル画像の各特徴点における特徴量を予め学習しておき、物体認識フェーズにおいて、入力されたオブジェクト画像の特徴点における特徴量と複数のモデル画像についての特徴量とを比較し、オブジェクト画像中のモデルを検出するが、以下では、先ず、物体学習フェーズにおけるモデル画像からの特徴量抽出と物体認識フェーズにおけるオブジェクト画像からの特徴量抽出とを並行して行うものとして説明する。
本実施の形態における物体認識システムの概略構成を図9に示す。図9に示す物体認識システム600において、特徴点抽出部610a,610bは、モデル画像及びオブジェクト画像からそれぞれモデル特徴点及びオブジェクト特徴点を抽出し、特徴量保持部620a,620bは、抽出された各特徴点について後述する特徴量を抽出し、特徴点の位置情報と共に保持する。そして特徴量比較部630は、各モデル特徴点の特徴量と各オブジェクト特徴点の特徴量とを比較して類似度又は相違度を計算し、この類似尺度を用いて特徴量が類似する、すなわち対応する可能性の高いモデル特徴点及びオブジェクト特徴点のペア(候補対応特徴点ペア)を生成する。
モデル姿勢推定部640は、生成された候補対応特徴点ペア群を用いてオブジェクト画像上のモデルの有無を検出し、「モデル有」の判定結果の場合には、「検出されるモデルはオブジェクト画像上へのアフィン変換による画像変形が施されている」という拘束条件の下、候補対応特徴点ペア群からランダムに選択した3ペアにより決定されるアフィン変換パラメータをパラメータ空間に投射する操作を繰り返し、パラメータ空間上で形成されたクラスタのうち最多メンバ数を持つクラスタの各メンバを真の特徴点ペア(インライヤ)とし、このインライヤを用いた最小自乗推定によりアフィン変換パラメータを求める。そして、モデル姿勢推定部640は、このアフィン変換パラメータで決定されるモデル姿勢をモデル認識結果として出力する。
以下、上記物体認識システム600の各ブロックについて詳細に説明する。なお、以下では、画像の水平方向をX軸、垂直方向をY軸として説明する。
特徴点抽出部610a,610bは、特徴点抽出対象画像(モデル画像又はオブジェクト画像)に対し、先ず平滑化フィルタリング、例えば以下の式(1)で示す2次元ガウス関数による畳み込み積(ガウスフィルタリング)と、双2次線形補間リサンプリングによる画像縮小とを繰り返し交互に適用することで、画像の多重解像度ピラミッド構造を構築する。ここで、リサンプリングファクタとしては、式(1)のガウスフィルタで用いたσを用いる。
すなわち、図10に示すように、例えば入力画像Iにσ=√2であるガウスフィルタg(x、y)を施すことにより第1レベル(最高解像度)の画像I1を生成し、さらにガウスフィルタを施すことにより画像g*I1を生成する。そして、この画像g*I1をリサンプリングしてガウスフィルタを施すことにより第2レベルの画像I2,g*I2を生成し、同様にして画像g*I2から第3レベルの画像I3,g*I3を生成する。
続いて、特徴点抽出部610a,610bは、各レベル(各解像度)の画像に対して、DoG(Difference of Gaussian)フィルタを適用する。このDoGフィルタは、画像の輪郭強調のために用いられる2次微分フィルタの一種であり、人間の視覚系で網膜からの情報が外側膝状体で中継されるまでに行われている処理の近似モデルとして、LoG(Laplacian of Gaussian)フィルタと共によく用いられるものである。DoGフィルタの出力は、2つのガウスフィルタ出力画像の差分を取ることにより容易に得られる。すなわち、図10に示すように、第1レベルの画像について画像DI1(=I1−g*I1)が得られ、第2レベル,第3レベルの画像について画像DI2(=I2−g*I2),画像DI3(=I3−g*I3)が得られる。
そして、特徴点抽出部610a,610bは、各レベルにおけるDoGフィルタ出力画像DI1,DI2,DI3・・・の局所点(局所極大点及び局所極小点)のうち、所定の範囲内の解像度変化によって位置の変化がないような点を特徴点として検出する。これにより、画像の拡大縮小操作に対してロバストな特徴点間のマッチングが実現できる。
ここで、多重解像度ピラミッド構造の第Lレベル、すなわちσの(L−1)乗ファクタまでの解像度変化によって位置の変化がないような特徴点を検出する際の処理について図11のフローチャートを用いて説明する。
先ずステップS31において、第1レベル(最高解像度)におけるDoGフィルタ出力画像DI1の局所点(局所極大点及び局所極小点)を検出する。なお、局所近傍としては、例えば3×3直接近傍を用いることができる。
次にステップS32において、検出された各局所点について、その1つ上位レベル(解像度の1つ低い層)における対応点を解像度減少に伴う画像縮小を考慮して求め、この対応点が局所点か否かを判別する。局所点である場合(Yes)にはステップS33に進み、局所点でない場合(No)には探索を終了する。
続いてステップS33では、第Lレベルまで探索が成功したか否かを判別する。第Lレベルまで探索を行っていない場合(No)にはステップS32に戻ってさらに上位レベルの探索を行い、第Lレベルまで探索が成功した場合(Yes)には特徴点であるとして、ステップS34においてその位置情報を保持する。
例えば第3レベルまでの解像度変化によって位置の変化がないような特徴点を検出する場合、図12に示すように、第1レベルの画像DI1において検出された局所点FP1,FP2のうち、FP1は第3レベルの画像DI3まで対応点が存在するため特徴点とされ、FP2は第2レベルまでしか対応点が存在しないため特徴点でないとされる。
なお、この特徴点抽出部610a,610bでは、DoGフィルタの代わりにLoGフィルタを用いるようにしても構わない。また、文献「Harris C. and Stephens M.,“A combined corner and edge detector.”, in Proc. Alvey Vision Conf., pp.147-151, 1988」で物体のコーナー検出に用いられているcorner-ness 関数の出力値をDoGフィルタ出力の代わりに用いるようにしても構わない。
次に、特徴量保持部620a,620b(図9)は、特徴点抽出部610a,610bにて抽出された各特徴点について特徴量を抽出し、保持する。特徴量としては、多重解像度ピラミッド構造の各レベルの画像(Il,l=1,・・・,L)の画像情報から導出される特徴点の近傍領域各点の濃度勾配情報(勾配強度及び勾配方向)を用いる。点(x、y)における勾配強度Mx,y及び勾配方向Rx,yは以下の式(2),(3)により与えられる。
ここで、特徴量を算出する特徴点近傍領域としては、回転変化に対して構造の変わらないような、特徴点に関して対称なものを選択することが好ましい。これにより、回転変化に対するロバスト性を実現することができる。例えば、(i)特徴点から半径rピクセルの範囲内を特徴点近傍領域とする手法や、(ii)特徴点を中心に幅σの特徴点に関して対称な2次元ガウス重みを濃度勾配に掛ける手法を用いることができる。
特徴点から半径3.5ピクセルの範囲内を近傍領域とした場合における特徴点近傍領域の濃度勾配情報の例を図13(A)に示す。ここで、図13(A)において矢印の長さは勾配強度を表し、矢印の方向は勾配方向を表す。
また、特徴量保持部620a,620bは、特徴点近傍の勾配方向に関するヒストグラム(方向ヒストグラム)も特徴量として保持する。図13(A)の濃度勾配情報から得られる勾配方向ヒストグラムの例を図13(B)に示す。ここで、図13(B)における階級幅Δθは10deg であり、階級数Nは36(=360deg /10deg )である。
続いて、特徴量比較部630(図9)は、各モデル特徴点の特徴量と各オブジェクト特徴点の特徴量とを比較し、類似する特徴量を有するモデル特徴点及びオブジェクト特徴点のペア(候補対応特徴点ペア)を生成する。
この特徴量比較部630における処理の詳細について、図14のフローチャートを用いて説明する。先ず、ステップS41において、特徴量比較部630は、各モデル特徴点の方向ヒストグラムと各オブジェクト特徴点の方向ヒストグラムとを比較してヒストグラム間の距離(相違度)を計算すると共に、モデル−オブジェクト間の推定回転角度を求める。
ここで、階級幅Δθと階級数Nとが同一である2つの方向ヒストグラムH1={h1(n),n=1,・・・,N}及びH2={h2(n),n=1,・・・,N}を想定し、h1(n),h2(n)が階級nにおける度数を示すものとすると、ヒストグラムH1とヒストグラムH2との間の距離d(H1,H2)は、例えば以下の式(4)で与えられる。ここで、式(4)におけるrとしては、r=1,2,∞が一般的に用いられる。
この式(4)を用いて各モデル特徴点及び各オブジェクト特徴点の方向ヒストグラム間の相違度を計算するが、(i)モデル−オブジェクト間のスケール比がマッチング段階で未知であるため、モデル特徴点の各レベルとオブジェクト特徴点の各レベル間で方向ヒストグラム間のマッチングを行う必要がある。また、(ii)方向ヒストグラム間のマッチングに関しては、モデル−オブジェクト間の回転変換量を考慮する必要がある。
モデル特徴点mのレベルLVにおける方向ヒストグラムHm LV={hm LV(n),n=1,・・・,N}と、オブジェクト特徴点oのレベルlvにおける方向ヒストグラムHo lv={ho lv(n),n=1,・・・,N}との相違度を求める場合を考える。方向ヒストグラムは回転変換に対して巡回的に変化するため、Ho lvを巡回的に階級を1つずつシフトさせながら式(4)の計算を行い、その最小値をHm LVとHo lvとの間の相違度とする。このとき、相違度の最小値を与えた時のシフト量(ずらした階級数)からオブジェクト特徴点の回転角度を推定することができる。なお、この手法は方向ヒストグラム交差法として知られている。
Ho lvをk階級分シフトさせた方向ヒストグラムをHo lv(k)とすると、方向ヒストグラム交差法による方向ヒストグラム間相違度dissimilarity(Hm LV,Ho lv(k))は、以下の式(5)で与えられる。
また、最小のd(Hm LV,Ho lv(k))を与えるkをk’とすると、オブジェクト特徴点oの近傍領域における推定回転角度θ(m,LV,o,lv)は以下の式(6)で与えられる。
上述の(i)を考慮すると、モデル特徴点mとオブジェクト特徴点oとの方向ヒストグラム間相違度dissimilarity(Hm,Ho)は、以下の式(7)のようになる。
特徴量比較部630は、モデル特徴点mとオブジェクト特徴点oとの各ペア(m、n)に対し、最小の方向ヒストグラム間相違度dissimilarity(Hm,Ho)を与えるレベルLV,lv(以下、それぞれLVm *,lvo *と表記する。)と、その推定回転角度θ(m,LVm *,o,lvo *)とを、方向ヒストグラム間相違度dissimilarity(Hm,Ho)と共に保持する。
次にステップS42(図14)において、特徴量比較部630は、各モデル特徴点mに対し方向ヒストグラム間相違度の小さい順にK個のオブジェク特徴点om1,・・・,omKを選択し、候補対応特徴点ペアを組ませる。すなわち、各モデル特徴点mに対してK個の候補対応特徴点ペア(m、om1),・・・,(m、omk),・・・,(m、omK)が組まれる。また、各候補対応特徴点ペア(m、omk)には対応するレベルLVm *,lvomk *と推定回転角度θ(m,LVm *,o,lvomk *)との情報が保持される。
以上のようにして、全モデル特徴点に対し候補対応特徴点ペアを組ませることで得られたペア群が、候補対応特徴点ペア群となる。
このように、特徴量比較部630では、ヒストグラム度数に勾配強度を累積しておらず、単に勾配方向のみに注目しているため、明度変化に対してロバストな特徴量マッチングが可能になる。また、方向ヒストグラムの形状を考慮したより安定なマッチングを行うことができ、二次的に安定した特徴量(推定回転角度)を得ることもできる。
なお、上述のステップS42では、各モデル特徴点mに対してK個の候補対応特徴点ペアを選択するものとして説明したが、これに限定されるものではなく、方向ヒストグラム間相違度が閾値を下回るペア全てを選択するようにしても構わない。
ここで、上述の操作で生成された候補対応特徴点ペア群は、方向ヒストグラムが類似するものの濃度勾配の空間的特徴が異なっているような対応点ペアも含んでいる。そこで、続くステップS43(図14)では、濃度勾配ベクトル間類似度によるペアの選択、候補対応特徴点ペア群の更新を行う。
具体的には、モデル特徴点mの近傍のレベルLVm *における濃度勾配ベクトルをUmとし、このモデル特徴点mと対応点ペアを組むオブジェクト特徴点oの近傍のレベルlvomk *における濃度勾配ベクトルをUoとしたとき、UmとUoとの類似度が閾値を下回るペアを排除し、候補対応特徴点ペア群を更新する。
濃度勾配ベクトルUm,Uo間の類似度の計算手法を図15に示す。先ず、Umを空間的に4領域Ri(i=1,・・・,4)に分割し、各領域の平均濃度勾配ベクトルvi(i=1,・・・,4)を求める。このviをまとめた8次元ベクトルVでUmが表現される。一方、回転変換を考慮した濃度勾配情報のマッチングを行うために、Uoの勾配方向を先に求めた推定回転角度θ(m,LVm *,o,lvomk *)で補正し、Uo *を得る。この際、中間位置の値は、双2次線形補間により求める。先と同様にUo *を4領域Ri(i=1,・・・,4)に分割し、各領域の平均濃度勾配ベクトルwi(i=1,・・・,4)を求める。このwiをまとめた8次元ベクトルWでUoが表現される。このとき、UmとUoとの類似度similarity(Um、Uo)∈[0,1]は、平均濃度勾配ベクトルVとWとの類似度として解釈され、例えばコサイン相関値を用いて以下の式(8)により求められる。ここで、式(8)において(V・W)はVとWとの内積を表す。
特徴量比較部630は、各候補対応特徴点ペアに対して上記式(8)で得られる平均濃度勾配ベクトル間の類似度を求め、類似度が閾値δを下回るペアを候補対応特徴点ペア群から排除し、候補対応特徴点ペア群を更新する。
このように、特徴量比較部630では、部分領域の平均濃度勾配ベクトルを用いて特徴量の比較を行っているため、特徴点位置や推定回転角度の微妙なずれや、明度の変化による濃度勾配情報の変化に対してロバストなマッチングを実現することができ、計算量の削減にもなる。
以上の操作により、特徴点近傍の局所的な濃度勾配情報が類似する(モデル特徴点−オジェクト特徴点)ペア群を抽出することができるが、巨視的に見ると、このように得られたペア群は、対応特徴点間の空間的位置関係がモデルのオブジェクト画像上での姿勢(モデル姿勢)と矛盾するような「偽の特徴点ペア(アウトライヤ)」を含んでしまっている。
ここで、候補対応特徴点ペアが3組以上ある場合には、最小自乗推定により近似アフィン変換パラメータの推定が可能であり、推定モデル姿勢と空間的位置関係の矛盾する対応ペアを排除し、残ったペアで再びモデル姿勢推定を行うという操作を繰り返すことで、モデル姿勢を認識することができる。
しかしながら、候補対応特徴点ペア群中のアウトライヤが多い場合や真のアフィン変換パラメータから極端に逸脱したアウトライヤが存在する場合には、最小自乗推定による推定結果は一般的に満足のいくものではないことが知られている(Hartley R., Zisserman A.,“Multiple View Geometry in Computer Vision.”, Chapter 3, pp.69-116, Cambridge University Press, 2000)ため、本実施の形態におけるモデル姿勢推定部640(図9)では、アフィン変換拘束の下、候補対応特徴点ペア群の空間的位置関係から「真の特徴点ペア(インライヤ)」を抽出し、抽出されたインライヤを用いてモデル姿勢(平行移動量,回転,拡大縮小,ストレッチを決定するアフィン変換パラメータ)を推定する。
以下、このモデル姿勢推定部640における処理について説明する。上述したように、候補対応特徴点ペアが3組以上なければアフィン変換パラメータを決定できないため、候補対応特徴点ペアが2組以下の場合、モデル姿勢推定部640は、オブジェクト画像中にモデルが存在しない、又はモデル姿勢検出に失敗したとして、「認識不可」と出力し処理を終了する。一方、候補対応特徴点ペアが3組以上ある場合、モデル姿勢推定部640は、モデル姿勢を検出可能であるとし、アフィン変換パラメータの推定を行う。なお、モデル姿勢推定部640は、モデル画像及びオブジェクト画像の例えば第1レベル(最高解像度)における特徴点の空間的位置を元にモデル姿勢を推定するものとする。
ここで、モデル特徴点[x y]Tのオブジェクト特徴点[u v]Tへのアフィン変換は、以下の式(9)で与えられる。
この式(9)において、ai(i=1,・・・,4)は回転,拡大縮小,ストレッチを決定するパラメータを表し、[b1 b2]Tは平行移動パラメータを表す。決定すべきアフィン変換パラメータはa1,・・・,a4及びb1,b2の6つであるため、候補対応特徴点ペアが3組あればアフィン変換パラメータを決定することができる。
3組の候補対応特徴点ペアで構成されるペア群Pを([x1 y1]T,[u1 v1]T),([x2 y2]T,[u2 v2]T),([x3 y3]T,[u3 v3]T)とすると、ペア群Pとアフィン変換パラメータとの関係は、以下の式(10)に示す線形システムで表現することができる。
この式(10)をRx=sのように書き直すと、アフィン変換パラメータxの最小自乗解は以下の式(11)で与えられる。
さて、候補対応特徴点ペア群からアウトライヤが1つ以上混入するように繰り返しランダムにペア群Pを選択した場合、そのアフィン変換パラメータはパラメータ空間上に散らばって投射される。一方、インライヤのみから構成されるペア群Pを繰り返しランダムに選択した場合、そのアフィン変換パラメータは、何れもモデル姿勢の真のアフィン変換パラメータに極めて類似した、すなわちパラメータ空間上で距離の近いものとなる。したがって、候補対応特徴点ペア群からランダムにペア群Pを選択し、そのアフィン変換パラメータをパラメータ空間上に投射していく操作を繰り返すと、インライヤはパラメータ空間上で密度の高い(メンバ数の多い)クラスタを形成し、アウトライヤは散らばって出現することになる。このことから、パラメータ空間上でクラスタリングを行い、最多メンバ数を持つクラスタの要素がインライヤとなる。
モデル姿勢推定部640における処理の詳細を図16のフローチャートを用いて説明する。なお、このモデル姿勢推定部640におけるクラスタリング手法としては、NN(Nearest Neighbor)法を用いるものとする。この際、上述したb1,b2は、認識対象画像により様々な値を取り得るため、x空間でもクラスタリングにおいてクラスタリング閾値の選択が認識対象に依存してしまう。そこで、モデル姿勢推定部640では、「真のパラメータとa1,・・・,a4は類似するがb1,b2が異なるようなアフィン変換パラメータを与えるペア群Pは殆ど存在しない」という仮定の下、パラメータa1,・・・,a4(以下、Aと表記する。)で張られるパラメータ空間上のみでクラスタリングを行う。なお、上記仮定が成り立たない状況が生じたとしても、A空間とは独立にb1,b2で張られるパラメータ空間でクラスタリングを行いその結果を考慮することで、容易に問題を回避することができる。
先ず図16のステップS51において初期化を行う。具体的には、繰り返し数のカウント値cntをcnt=1とし、候補対応特徴点ペア群からランダムにペア群P1を選択し、アフィン変換パラメータA1を求める。また、クラスタ数NをN=1とし、アフィン変換パラメータ空間A上でA1を中心とするクラスタZ1を作る。このクラスタZ1のセントロイドC1をC1=A1とし、メンバ数nz1をnz1=1とする。カウンタをcnt=2にし、ステップS52に進む。
次にステップS52において、モデル姿勢推定部640は、候補対応特徴点ペア群からランダムにペア群Pcntを選択し、アフィン変換パラメータAcntを求める。
続いてステップS53において、モデル姿勢推定部640は、NN法を用いてアフィン変換パラメータ空間のクラスタリングを行う。具体的には、先ず以下の式(12)に従ってアフィン変換パラメータAcntと各クラスタZiのセントロイドCi(i=1,・・・,N)との距離d(Acnt、Ci)のうち、最小の距離dminを求める。
そして、所定の閾値τ(例えばτ=0.1)に対してdmin<τであればdminを与えるクラスタZiにAcntを属させ、Acntを含めた全メンバでクラスタZiのセントロイドCiを更新する。また、クラスタZiのメンバ数nziをnzi=nzi+1とする。一方、dmin≧τであればアフィン変換パラメータ空間A上でAcntをセントロイドCN+1とする新しいクラスタZN+1を作り、メンバ数nzN+1をnzN+1=1とし、クラスタ数NをN=N+1とする。
続いてステップS54では、繰り返し終了条件を満たすか否かが判別される。ここで、繰り返し終了条件としては、例えば最多メンバ数が所定の閾値(例えば15)を超え、且つ最多メンバ数と2番目に多いメンバ数との差が所定の閾値(例えば3)を超える場合、或いは繰り返し数カウンタのカウント値cntが所定の閾値(例えば5000回)を超える場合に終了するように設定することができる。ステップS54において、繰り返し終了条件を満たさない場合(No)には、ステップS55で繰り返し数のカウント値cntをcnt=cnt+1とした後、ステップS52に戻る。一方、繰り返し終了条件を満たす場合(Yes)にはステップS56に進む。
最後にステップS56において、モデル姿勢推定部640は、以上で得られたインライヤを用いて、最小自乗法によりモデル姿勢を決定するアフィン変換パラメータを推定する。
ここで、インライヤを([xIN1 yIN1]T,[uIN1 vIN1]T),([xIN2 yIN2]T,[uIN2 vIN2]T),・・・とすると、インライヤとアフィン変換パラメータとの関係は、以下の式(13)に示す線形システムで表現することができる。
この式(13)をRINxIN=sINのように書き直すと、アフィン変換パラメータxINの最小自乗解は以下の式(14)で与えられる。
そしてステップS56では、このアフィン変換パラメータxINで決定されるモデル姿勢をモデル認識結果として出力する。
なお、以上の説明では、閾値τが定数値であるものとしたが、ステップS52乃至ステップS55の繰り返し処理を行う際に、始めは比較的大きな閾値τを用いて大雑把なインライヤ抽出を行い、繰り返し回数が増える毎に次第に小さい閾値τを用いる、いわゆる「焼きなまし法」のような手法を適用してもよい。これにより、精度よくインライヤを抽出することができる。
また、以上の説明では、候補対応特徴点ペア群からランダムにペア群Pを選択し、そのアフィン変換パラメータをパラメータ空間上に投射していく操作を繰り返し、パラメータ空間上で最多メンバ数を持つクラスタの要素をインライヤとして、最小自乗法によりモデル姿勢を決定するアフィン変換パラメータを推定したが、これに限定されるものではなく、例えば最多メンバ数を持つクラスタのセントロイドを、モデル姿勢を決定するアフィン変換パラメータとしても構わない。
実際のオブジェクト画像からのモデル抽出の一例を図17に示す。図17(A)はモデル画像、図17(B)はモデル画像から抽出された特徴点、図17(C)はオブジェクト画像、図17(D)はオブジェクト画像から抽出された特徴点、図17(E)は最終的な候補対応特徴点ペア、図17(F)はオブジェクト画像中のモデルの姿勢を示す。
(2−2)物体学習フェーズ
上述したロボット装置1が環境中を移動しながら未知の物体を自律的に学習する物体学習フェーズについてさらに説明する。この物体学習フェーズでは、ロボット装置1がユーザに対して物体学習の手続きを音声で指示し、学習対象物体をロボット装置1の画像入力装置251が備える左右のCCDカメラの前で動かしてもらう。そして、ロボット装置1は、学習対象物体を動かしている様子を撮像し、その撮像画像から学習対象物体のモデル画像(後述する物体領域画像)を切り出し、そのモデル画像から特徴量(後述するモデル特徴量セット)を抽出して物体モデルデータベースに登録する。
物体学習フェーズにおける処理を図18のフローチャートに示す。この物体学習フェーズは、予め設定されてある物体学習フェーズを開始するためのワード(以下、「トリガワード」という。)をユーザが発話することで開始される。
先ずステップS61において、ロボット装置1は、音声入力装置252から入力された音イベントとそのトリガワードとのマッチングをリアルタイムで行い、トリガワードが発話されたか否かを判別する。ここで、トリガワードが発話されていない場合(No)にはステップS61の処理を繰り返し、トリガワードが発話された場合(Yes)には物体学習フェーズを開始し、ステップS62以降の処理を行う。
次にステップSS62において、ロボット装置1は、ユーザに対して物体学習フェーズの手続きを発話する。本実施の形態では、ユーザがロボット装置1のCCDカメラの前で学習対象物体を動かすことを前提としているため、ロボット装置1は、例えば「憶えさせたい物体を私の目の前で少しの間動かして」という音声を出力することで、ユーザに対して物体学習の手続きを明示する。これにより、この発話の後、ユーザがロボット装置1のCCDカメラの前で学習対象物体を動かすことが想定される。
続いてステップS63において、後述するカウンタのカウント値cnt_OK、cnt_NG、cnt_exceed、cnt_close、cnt_fast、cnt_against及びcnt_farを0に初期化する。
続いてステップS64において、ロボット装置1は、ユーザが学習対象物体を動かした際の動画像情報(時間的に隣接する2枚の静止画像)から動き領域の抽出を行う。ここで、ロボット装置1の頭部ユニット3に設けられた左右のCCDカメラからは、各時刻における左右のカメラ画像が得られる。そして、この左右のカメラ画像から得られたステレオ画像データからは、上述したように、各画素の距離値が導出可能である。現時刻と1つ前の時刻のカメラ画像の差分から輝度値の変化のあった画素、つまり差分画像が検出される。これらの画素は、動き領域のエッジ近傍に検出される傾向があり、動き領域の一部分のみがこの操作によって抽出されることになる。したがって、これらの画素に関して距離値を横軸、画素数を縦軸とするヒストグラムを作成した場合、大きいピークを与える距離dを持つ画素群が動き領域となる。そこで、ステップS64では、先の距離画像においてdから所定の閾値の範囲内の距離値を持つ画素を抽出し、領域面積の大きい連結領域のみを動き領域画像として抽出する。
このステップS64で抽出された動き領域画像には、学習対象物体とこの学習対象物体を動かしたユーザの手の一部が含まれている。そこで、ステップS65において、ロボット装置1は、ユーザの手部に相当する領域をマスキングし、物体領域画像のみを抽出する。この際、本実施の形態では、肌色領域をユーザの手部と見なし、ステップS64で抽出した動き領域画像から肌色領域をマスキングすることで、物体領域画像のみを抽出する。
ここで、画像中の肌色領域は、例えば特開2002−157596号公報に記載された技術を用いて抽出することができる。簡単には、以下の通りである。
Yangらの報告(J.Yang, W.Lu, A.Waibel,“Skin-Color Modeling and Adaptation”, Technical Report of CMU, CMU-CS-97-146, 1997)によれば、肌色の分布は輝度で正規化された以下の式(15)及び式(16)により得られる(r,g)平面上で、人物や人種によらず正規分布に近い分布となることが実験的に知られている。
また、上述のYangらはこの色空間において肌色を表す正規分布のパラメータ推定値を、過去に測定されたデータの線形和の式(17)式及び式(18)として表現し、重み係数αj,βjの更新規則を最尤推定により導出している。ここで、式(17)式は平均であり、式(18)は分散である。また、mj,sjはそれぞれ、過去のjステップ前の平均値と分散値である。また、rは最大履歴数である。
本実施の形態では、この定式化に基づいて動き領域画像の肌色領域を求め、この肌色領域をユーザの手部と見なしてマスキングする。
ステップS64,ステップS65における操作の例を図19に示す。図19(A)は前時刻における左のCCDカメラによるカメラ画像、図19(B)は現時刻における左のCCDカメラによるカメラ画像をそれぞれ示し、共に学習対象物体SObとユーザの手部Hdが撮像されている。また、図19(C)は現時刻におけるレンジデータ、図19(D)は差分画像、図19(E)は差分画像に関する距離値のヒストグラムをそれぞれ示す。図19(F)は、図19(E)に示すヒストグラムのうち、大きいピークを与える距離近傍の画素群、具体的には図中矢印で示す範囲の距離値を有する画素群を抽出した動き領域画像を示し、図19(G)はステップS65で抽出された物体領域画像を示す。
続いてステップS66において、ロボット装置1は、物体認識システム(図9)の特徴点抽出部610a及び特徴量保持部620aを用いて物体領域画像の特徴点及びその特徴量(以下、特徴点及びその特徴量を総称して「特徴量」という。)を抽出する。
続いてステップS67において、ロボット装置1は、特徴量抽出結果の評価を行い、抽出された特徴量がモデル画像の特徴量生成に適していれば時系列データメモリに保存し、そうでなければ、よりよい特徴量が抽出できるように、ユーザに対して学習対象物体の提示の仕方を指示する。そして、その評価結果に応じてステップS68(case1)、ステップS64(case2)、又はステップS72(case3)に進む。
このステップS67における処理について、図20A乃至図20Cのフローチャートを用いて説明する。先ずステップS81において、ロボット装置1は、ステップS65(図18)で得られた物体領域の輪郭線上の画素のうち、画像のエッジと重なっている画素の割合が充分大きいか否かを判別する。ここで、画像のエッジと重なっている画素の割合が充分大きくない場合(No)には、学習対象物体が視野内に収まっていると見なし、ステップS89に進む。一方、画像のエッジと重なっている画素の割合が充分大きい場合(Yes)には、学習対象物体の一部が視野外にある状況と見なし、ステップS82に進む。
次にステップS82において、ロボット装置1は、物体領域が充分大きいか否かを判別し、物体領域が充分大きい場合(Yes)には、ユーザによる学習対象物体の提示位置が近すぎると判断する。この場合、抽出された特徴量はモデル生成には不適当であるため時系列データメモリには保存せず、ステップS83でcnt_closeをインクリメントする。そして、ステップS84においてcnt_closeが閾値を超えたか否かを判別し、超えていない場合(No)にはcase2であるとして、図18のステップS64に戻る。一方、cnt_closeが閾値を超えた場合(Yes)、すなわち学習対象物体の提示位置が近すぎる状況が一定回数以上再現された場合には、ステップS85において、ユーザに対して「少し離れて動かして」と発話した後、case2であるとして、図18のステップS64に戻る。これによりユーザが物体提示の仕方を修正することが期待される。
一方、物体領域が充分大きくない場合(No)には、ユーザによる学習対象物体の提示位置がずれていると判断する。この場合、抽出された特徴量はモデル生成には不適当であるため時系列データメモリには保存せず、ステップS86でcnt_exceedをインクリメントする。そして、ステップS87においてcnt_exceedが閾値を超えたか否かを判別し、超えていない場合(No)にはcase2であるとして、図18のステップS64に戻る。一方、cnt_exceedが閾値を超えた場合(Yes)、すなわち学習対象物体の提示位置がずれている状況が一定回数以上再現された場合には、ステップS88において、ユーザに対して「もう少し上(下、右、左)で動かして」と発話した後、case2であるとして、図18のステップS64に戻る。これによりユーザが物体提示の仕方を修正することが期待される。
ステップS81における判別がNoとなりステップS89に進んだ場合、ロボット装置1は、物体領域から抽出された特徴点の数が充分大きいか否かを判別する。ここで、物体領域から抽出された特徴点の数が充分大きくない場合(No)、1)物体が逆光状況下で提示されている、2)物体が激しく動かされて提示された結果、ぼけた物体領域画像が抽出されてしまった、3)物体提示位置が離れすぎている、の何れかの状況と考えられる。そこで、先ずステップS90において逆光であるか否かを判別する。この際、本実施の形態では、物体領域内の画素の濃淡値平均がある閾値以下の場合に逆光状況と見なす。例えば、濃淡値が0(黒)から255(白)の値を取る場合、閾値を50とすることができる。ステップS90で逆光と判断された場合(Yes)、抽出された特徴量はモデル生成には不適当であるため時系列データメモリには保存せず、ステップS91でcnt_againstをインクリメントする。そして、ステップS92においてcnt_againstが閾値を超えたか否かを判別し、超えていない場合(No)にはcase2であるとして、図18のステップS64に戻る。一方、cnt_againstが閾値を超えた場合(Yes)、すなわち逆光である状況が一定回数以上再現された場合には、ステップS93において、ユーザに対して「逆光だから場所を移動してやり直して」と発話した後、case3であるとして、図18のステップS72に進む。
一方、ステップS90で逆光ではない場合(No)には、ステップS94において、物体領域が充分大きいか否かを判別する。ここで、物体領域が充分大きい場合(Yes)には、学習対象物体が激しく動かされて提示された状態と判断する。この場合、抽出された特徴量はモデル生成には不適当であるため時系列データメモリには保存せず、ステップS95でcnt_fastをインクリメントする。そして、ステップS96においてcnt_fastが閾値を超えたか否かを判別し、超えていない場合(No)にはcase2であるとして、図18のステップS64に戻る。一方、cnt_fastが閾値を超えた場合(Yes)、すなわち学習対象物体が激しく動かされて提示された状況が一定回数以上再現された場合には、ステップS97において、ユーザに対して「少しゆっくり動かして」と発話した後、case2であるとして、図18のステップS64に戻る。これによりユーザが物体提示の仕方を修正することが期待される。
ステップS94で物体領域が充分大きくない場合(No)には、学習対象物体を提示する位置が遠すぎたと判断する。この場合、抽出された特徴量はモデル生成には不適当であるため時系列データメモリには保存せず、ステップS98でcnt_farをインクリメントする。そして、ステップS99においてcnt_farが閾値を超えたか否かを判別し、超えていない場合(No)にはcase2であるとして、図18のステップS64に戻る。一方、cnt_farが閾値を超えた場合(Yes)、すなわち学習対象物体を提示する位置が遠すぎた状況が一定回数以上再現された場合には、ステップS100において、ユーザに対して「少し近づけて動かして」と発話した後、case2であるとして、図18のステップS64に戻る。これによりユーザが物体提示の仕方を修正することが期待される。
一方、ステップS89で充分な数の特徴点が抽出されている場合(Yes)には、抽出された特徴量はモデル生成に適当なものと判断し、ステップS101において、時系列メモリに特徴量を保存する。そして、ステップS102においてcnt_OKをインクリメントし、ステップS103において、cnt_OKが既定数N(例えばN=10)を超えたか否かを判別する。ここで、cnt_OKが既定数Nを超えていない場合(No)には、case2であるとして、図18のステップS64に戻る。一方、cnt_OKが既定数Nを超えた場合(No)には、case1であるとして、図18のステップS68に進む。
図18に戻って、ステップS64乃至ステップS67の繰り返し終了後には、時系列データメモリにはN枚の物体領域画像の特徴量セットが保持されている。そこでステップS68において、ロボット装置1は、この時系列特徴量セットから学習対象物体のモデルとなるモデル特徴量セットを抽出する。
ここで、モデル特徴量セットの抽出は、時系列データメモリ内の各時刻の特徴量セット同士を全ての組み合わせで特徴量マッチングしたときに、マッチした、すなわち他の時刻における特徴量と類似し対応の取れる特徴量をより多く有する特徴量セットの中から、より多くマッチした特徴量のみを選択することで実現することができる。
以下、このモデル特徴量セットの抽出アルゴリズムについて説明する。時系列データメモリ内のN枚の物体領域画像の特徴量セットをF1,F2,・・・,FNとする。i=1,・・・,N、j=1,・・・,Nのi≠jである全ての組み合わせ(Fi,Fj)に関して、Fiをモデル画像の特徴量群、Fjをオブジェクト画像の特徴量群と仮に見なして物体認識システム(図9)の特徴量比較部630にかけ、(Fi,Fj)の候補対応特徴点ペア群を抽出する。そして、(Fi,Fj)の候補対応特徴点ペアの数をpijとし、j≠iである全てのjについてのpijの総和をPiとしたとき、Max{Pi}を満たすiを求め、以下ではFiに注目する。
具体的にN=5の場合、図21(A)に示すように、特徴量セットF1,F2,・・・,F5のi≠jである全ての組み合わせ(Fi,Fj)に関して候補対応特徴点ペア群を抽出する。例えば特徴量セットF4について、(F4,F1),(F4,F2),(F4,F3),(F4,F5)の組み合わせに関して候補対応特徴点ペア群を抽出する。この結果、候補対応特徴点ペアの数pijが例えばp41=3,p42=1,p43=2,p45=2となった場合、その総和P4は8となる。ここで、例えばp41=3とは、特徴量セットF4と特徴量セットF1との間の候補対応特徴点ペアが3組存在することを意味する。同様にして、P1=6,P2=5,P3=6,P5=7であった場合、その最大値を示すiは4であり、以下ではF4に注目する。
次に、Fiの特徴量をvi1,vi2,・・・,viLとする。各特徴量vil(l=1,・・・,L)が他の特徴点とペア組みされた回数をq_vilとし、q_vilが充分大きい特徴量vil、例えば以下の式(19)を満たす特徴量vilのみを抽出し、学習対象物体のモデル特徴量セットMとする。
同様にN=5の場合、図21(B)に示すように、注目している特徴量セットF4の特徴量v41は、特徴量セットF1,F2,F3,F5の特徴点とペア組みされているため、q_v41=4となる。同様にして、q_v42=2,q_v43=3となった場合、上述した式(15)を満たす特徴量v41,v43を学習対象物体のモデル特徴量セットMとする。
再び図18に戻って、ステップS69では、モデル特徴量セットMの特徴量数が充分多いか否かを判別する。そして、特徴量数が充分に多ければ、ステップS70でモデル特徴量セットMを物体モデルデータベースに登録し、ステップS71において、例えば「物体の学習が終了しました」という既定のセンテンスを発話することで物体学習が終了した旨をユーザに伝える。一方、ステップS69で特徴量数が充分多くない場合(No)にはステップ72に進み、例えば「物体学習が失敗しました。学習を終了します。もう一度学習させたい場合は『これを憶えて』と言ってください」という既定のセンテンスを発話することで物体学習が失敗した旨をユーザに伝える。
(2−3)物体認識フェーズ
上述したロボット装置1が環境中を移動しながら学習済みの物体を認識する物体認識フェーズについてさらに説明する。この物体認識フェーズでは、ロボット装置1の頭部ユニット3に設けられたCCDカメラで撮像した入力画像の特徴量を抽出し、その特徴量を物体モデルデータベースに登録されている既学習物体の特徴量と比較することで、入力画像中に存在する物体をリアルタイムに検出する。
物体認識フェーズにおける処理を図22のフローチャートに示す。先ずステップS111において、物体認識システム(図9)の特徴点抽出部610b及び特徴量保持部620bを用いて入力画像の特徴量セットFを抽出する。一方、物体モデルデータベースにはK個の既学習物体に対応するK個のモデル特徴量セットM1,M2,・・・,MKが登録されているとする。
次にステップS112において、物体認識システムの特徴量比較部630及びモデル姿勢推定部640を用いて、特徴量セットFと各モデル特徴量セットMiとのマッチングをし、入力画像中の物体Miの検出を行う。このとき、モデル特徴量セットMiの要素数、すなわち特徴量数をmiとし、特徴量セットMiのうち特徴量セットFと対応がとれた要素数をmfiとして、以下の式(20)に示すように、mfiのmiに対する比率を物体Miの検出結果の確信度Ciと定義する。
続いてステップS113において、入力画像中の既学習物体の認識結果を出力する。このとき、各既学習物体の認識結果は、確信度Ciと、mfiが3以上の場合は既学習物体の入力画像中での推定姿勢(アフィン変換パラメータ:既学習物体の平行移動量、回転角度、拡大率)により出力される。
この手法では、各既学習物体に対応するモデル特徴量セットMiが独立してマッチングにかけられるため、入力画像中に複数の既学習物体が存在する場合にも対応することができる。また、この確信度Ciを、例えば複数の物体がオーバーラップして検出された場合の状況判断に用いることができる。例えば、A及びBの2物体が共に高い確信度でオーバーラップして検出された場合には、一方が他方を部分的に隠していると判断できる。一方、Aのみが高い確信度を持つ場合には、Bの大部分がAによって隠されているか、或いはBが誤検出である可能性が高いと推定できる。また、A,B共に低い確信度の場合には、何れの物体も誤検出である可能性が高いと推定できる。このようにファジィな認識結果を出力することにより、この認識結果に基づいて行われるロボット装置1の行動選択などに柔軟性を与えることが可能となる。
(3)変形例
以上、本発明を実施するための最良の形態について説明したが、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
例えば、上述した実施の形態では、2足歩行型のロボット装置に適用する場合について説明したが、これに限定されるものではなく、この他種々の構成のロボット装置及びロボット装置以外の他の装置に広く適用することができる。
また、上述した実施の形態では、既定のトリガワードを認識することで物体学習フェーズが開始されるものとして説明したが、これに限定されるものではなく、例えばロボット装置に設けられた特定のスイッチ等によるセンサ入力をトリガとして物体学習フェーズを開始するようにしても構わない。この手法は、音声認識手段を有さないロボット装置に本発明を適用する場合に有効である。
また、上述した実施の形態では、動領域を抽出する際に差分画像と距離情報とを用いるものとして説明したが、これに限定されるものではなく、例えばオプティカルフローを用いた手法(「岡田,白井,三浦,久野、『オプティカルフローと距離情報に基づく動物体追跡』、電子情報通信学会論文誌 D-II, Vol.J80-D-II, No.6, pp.1530-1538, 1997」参照)や、watershed法を用いた手法(「境田,苗村,金次、『背景差分法と時空間watershedによる領域成長法を併用した動画像オブジェクトの抽出』、電子情報通信学会論文誌 D-II, Vol.J84-D-II, No.12, pp.2541-2555, 2001」参照)など、種々の動領域抽出手法を適用することができる。
また、上述した実施の形態では、物体認識の基本技術として特許願2003−124225の明細書及び図面で提案した手法をベースとした場合について説明したが、これに限定されるものではなく、種々の物体認識システムを利用することができる。この場合、物体モデルデータベースには、その物体認識システムが利用する特徴量セットを保持すればよい。また、候補対応特徴点ペア群を出力しない物体認識システムを利用する場合には、図18のステップS64乃至ステップS67の繰り返しを1回のみにすることで本発明の適応が可能となる。
また、上述した実施の形態では、物体学習フェーズの終了を既定センテンスを音声合成し発話することでユーザに明示するものとして説明したが、これに限定されるものではなく、ロボット装置に搭載された特定のLED(Light Emission Diode)を発光させたり、スピーカから特定の音を出力させたりすることで物体学習フェーズの終了をユーザに明示するようにしても構わない。この手法は、音声合成機能を有さないロボット装置に本発明を適用する場合に有効である。
1 ロボット装置、2 体幹部ユニット、3 頭部ユニット、4R/L 腕部ユニット、5R/L 脚部ユニット、400 音声認識部、410 応答生成部、410a,410b・・・ 応答生成モジュール、420 対話制御部、430 音声合成部、600 物体認識システム、610a,610b 特徴点抽出部、620a,620b 特徴量保持部、630 特徴量比較部、640 モデル姿勢推定部