(57)【特許請求の範囲】
【請求項１】
内部状態又は外部入力に基づいて行動を生成するロボット装置において、
前記ロボットの行動を決定する１以上の行動モジュールと、
前記行動モジュールを管理する行動状態制御手段と、
前記行動モジュールの現在のステートを記憶するステート記憶手段と、
前記ステート記憶手段に記憶されたステートに対応した、外部又は内部からの入力に基づいて行動命令を出力する１又はそれ以上の行動命令出力手段を備え、
前記行動命令出力手段の行動命令の出力が停止され、その後の前記行動命令出力手段の行動命令の出力が再開される際に、前記行動状態制御手段は前記ステート記憶手段に記憶されたステートに基づいて所定の行動をロボットに実行させた後、前記行動命令の出力が再開される、
ことを特徴とするロボット装置。
【請求項２】
前記ステート記憶手段と、前記行動命令出力手段は、前記行動モジュールの内部に設けられ、
前記行動状態制御手段は、上位の階層に位置する他の行動モジュールに格納されている、
ことを特徴とする請求項１に記載のロボット装置。
【請求項３】
内部状態又は外部入力に基いて行動を生成するロボット装置において、
内部状態又は外部入力に応じた前記ロボット装置の行動評価を出力する行動評価手段と、前記ロボット装置の行動命令を出力する行動命令出力手段とをそれぞれ備えた複数の行動モジュールと、
各行動モジュールの前記行動評価手段における行動評価に基いて、前記ロボット装置の行動を制御する行動状態制御手段と、
を具備することを特徴とするロボット装置。
【請求項４】
前記複数の行動モジュールはツリー状の階層構造をなし、
前記行動状態制御手段は、前記階層構造の下位層の行動モジュールから上位層の行動モジュールへ出力される行動評価に基いて行動モジュールを選択し、前記ロボット装置の行動を制御する、
ことを特徴とする請求項３に記載のロボット装置。
【請求項５】
前記の各行動モジュールの行動命令出力手段は、前記ロボット装置において前記行動命令を実行する際に使用する前記ロボット装置のリソースを出力し、
前記行動状態制御手段は、前記階層構造の下位層の行動モジュールから上位層の行動モジュールへ出力される行動評価及び前記ロボット装置の使用リソースに基いて、前記ロボット装置の行動を制御する、
ことを特徴とする請求項４に記載のロボット装置。
【請求項６】
内部状態又は外部入力に基いて行動を生成するロボット装置において、
前記ロボット装置の行動を制御する行動状態制御手段と、
内部状態又は外部入力に応じた前記ロボット装置の行動評価を出力する行動評価手段と、前記ロボット装置の行動命令並びに該行動命令を実行する際に使用する前記ロボット装置のリソースを出力する行動命令出力手段とをそれぞれ有する複数の行動モジュールとを備え、
前記行動状態制御手段は、先にある行動モジュールとは別の行動モジュールを対象毎に生成し、前記ロボット装置の行動を制御する、
ことを特徴とするロボット装置。
【請求項７】
前記行動状態制御手段は、第１の対象に対して適用する第１の行動モジュールを生成中に、該第１の行動モジュールの対象よりも前記行動評価の優先度が高い第２の対象が出現したことに応答して、第２の行動モジュールを生成する、
ことを特徴とする請求項６に記載のロボット装置。
【請求項８】
前記行動状態制御手段は、それぞれから出力される行動評価を基に、第１の行動モジュールと第２の行動モジュールを切り替えて、前記ロボット装置の行動を制御する、
ことを特徴とする請求項７に記載のロボット装置。
【請求項９】
内部状態又は外部入力に基いて行動を生成するロボット装置において、
前記ロボット装置の行動を制御する行動状態制御手段と、
内部状態又は外部入力に応じた前記ロボット装置の行動評価を出力する行動評価手段と、前記ロボット装置の行動命令並びに該行動命令を実行する際に使用する前記ロボット装置のリソースを出力する行動命令出力手段とをそれぞれ有する複数の行動モジュールとを備え、
前記複数の行動モジュールはツリー状の階層構造をなし、
前記行動状態制御手段は、前記階層構造の下位層の行動モジュールから上位層の行動モジュールへ出力される行動評価及び前記ロボット装置の使用リソースに基いて行動モジュールを選択し、前記ロボット装置の行動を制御する、
ことを特徴とするロボット装置。
【請求項１０】
自律的に動作するロボットのための行動制御システムにおいて、
前記ロボットの動作を記述したステートマシンと、前記ステートマシンにおける現在の前記ロボットの動作ステートの活性度レベルと前記ロボットの動作ステート起動時において使用する前記ロボットのリソースを評価する行動評価器とを備えた、１以上の行動モジュールと、
前記の各行動モジュールの行動評価器に対して活性度レベルと使用リソースの算出を指示し、それぞれの活性度レベルと使用リソースに応じて活性化させる行動モジュールを選択し、該選択された行動モジュールのステートマシンに実行を指示することにより、各行動モジュールの行動状態を制御する行動状態制御部と、
を具備することを特徴とするロボットの行動制御システム。
【請求項１１】
前記行動評価器は、前記ロボットの外部環境又は前記ロボットの内部状態の少なくとも一方に応じて前記ステートマシンの活性度レベルを評価する、
ことを特徴とする請求項１０に記載のロボットの行動制御システム。
【請求項１２】
前記の行動モジュールは前記ロボットの動作の実現レベルに応じた木構造形式に構成されており、
前記行動状態制御部は、行動モジュール毎に実装され、前記木構造の下位の行動モジュールに対して活性度レベル及び使用リソースの評価の指示、行動モジュールの選択、並びにステートマシンの実行の指示を行なう、
ことを特徴とする請求項１０に記載のロボットの行動制御システム。
【請求項１３】
前記行動状態制御部は、活性度レベルの低下した行動モジュールを活性状態から待機状態に遷移させるとともに、活性度レベルが上昇した行動モジュールを待機状態から活性状態に遷移させる、
ことを特徴とする請求項１０に記載のロボットの行動制御システム。
【請求項１４】
行動モジュールを活性状態から待機状態に遷移させるときに、該行動モジュールを再開するために必要なデータを保存するとともに待機状態に遷移させるために必要な行動を起動する手段と、
行動モジュールを待機状態から活性状態に遷移させるときに、保存しておいたデータを復元して行動モジュールの状態を初期化するとともに、活性状態に遷移させるために必要な行動を起動する手段と、
をさらに備えることを特徴とする請求項１３に記載のロボットの行動制御システム。
【請求項１５】
自律的に動作するロボットのための行動制御システムにおいて、
ロボットを動作させるコマンドと該コマンド実行に必要な前記ロボットのリソースを評価する行動評価器との組み合わせからなる、１以上の行動モジュールと、
解放されている前記ロボットのリソースを検出する手段と、
解放されている前記ロボットのリソースによって実行可能な行動モジュールを所定の優先順位に従がって選択的に起動する手段とを備え、
リソースが競合しない２以上の行動モジュールを並列実行可能である、
ことを特徴とするロボットの行動制御システム。
【請求項１６】
内部状態に応じて自律的に動作するロボットの行動制御システムにおいて、
内部状態の指標である情動を複数の階層構造にして管理する内部状態管理部と、
各階層の情動を満たす行動を選択的に実行する行動選択部と、
を具備することを特徴とするロボットの行動制御システム。
【請求項１７】
前記内部状態管理部は、個体存続のために必要な１次情動と、該１次情動の過不足により変化する２次情動という段階毎に階層化するとともに、該１次情動を生得的反射や生理的な階層から連想に至るまで次元により階層化する、
ことを特徴とする請求項１６に記載のロボットの行動制御システム。
【請求項１８】
前記行動選択部は、より低次の１次情動を満たす行動を優先的に選択する、
ことを特徴とする請求項１７に記載のロボットの行動制御システム。
【請求項１９】
前記行動選択部は、より高次の１次情動が低次の１次情動に比し著しく不足している場合には、低次の１次情動を満たす行動の選択を抑制する、
ことを特徴とする請求項１８に記載のロボットの行動制御システム。
【請求項２０】
ロボットの外部環境の変化を認識する外部環境認識部をさらに備え、
前記行動選択部は、内部状態の指標に加え、外部環境の指標を基に行動を選択する、
ことを特徴とする請求項１６に記載のロボットの行動制御システム。
【請求項２１】
前記内部状態管理部は、時間経過に応じて内部状態の指標を変更する、
ことを特徴とする請求項１６に記載のロボットの行動制御システム。
【請求項２２】
前記内部状態管理部は、行動選択部において選択された行動の実行に応じて内部状態の指標を変更する、
ことを特徴とする請求項１６に記載のロボットの行動制御システム。
【請求項２３】
ロボットの外部環境の変化を認識する外部環境認識部をさらに備え、
前記内部状態管理部は、外部環境の変化に応じて内部状態の指標を変更する、
ことを特徴とする請求項１６に記載のロボットの行動制御システム。
【請求項２４】
ロボットの外部環境の変化を認識する外部環境認識部と、外部環境から内部状態の変化を連想記憶する連想記憶部をさらに備え、
前記内部状態管理部は、前記連想記憶部が外部環境から想起した内部環境の変化を基に内部状態の指標を変更する、
ことを特徴とする請求項１６に記載のロボットの行動制御システム。
【請求項２５】
前記連想記憶部は認識される対象物毎に内部状態の変化を連想記憶する、
ことを特徴とする請求項２４に記載のロボットの行動制御システム。
【請求項２６】
内部状態に応じて自律的に動作するロボットのための行動制御方法において、
内部状態の指標である情動を複数の階層構造にして管理する内部状態管理ステップと、
各階層の情動を満たす行動を選択的に実行する行動選択ステップと、
を具備することを特徴とするロボットの行動制御方法。
【請求項２７】
前記内部状態管理ステップでは、個体存続のために必要な１次情動と、該１次情動の過不足により変化する２次情動という段階毎に階層化するとともに、該１次情動を生得的反射や生理的な階層から連想に至るまで次元により階層化して内部状態を取り扱う、
ことを特徴とする請求項２６に記載のロボットの行動制御方法。
【請求項２８】
前記行動選択ステップでは、より低次の１次情動を満たす行動を優先的に選択する、
ことを特徴とする請求項２６に記載のロボットの行動制御方法。
【請求項２９】
前記行動選択ステップでは、より高次の１次情動が低次の１次情動に比し著しく不足している場合には、低次の１次情動を満たす行動の選択を抑制する、
ことを特徴とする請求項２６に記載のロボットの行動制御方法。
【請求項３０】
ロボットの外部環境の変化を認識する外部環境認識ステップをさらに備え、
前記行動選択ステップでは、内部状態の指標に加え、外部環境の指標を基に行動を選択する、
ことを特徴とする請求項２６に記載のロボットの行動制御方法。
【請求項３１】
前記内部状態管理ステップでは、時間経過に応じて内部状態の指標を変更する、
ことを特徴とする請求項２６に記載のロボットの行動制御方法。
【請求項３２】
前記内部状態管理ステップでは、行動選択ステップにおいて選択された行動の実行に応じて内部状態の指標を変更する、
ことを特徴とする請求項２６に記載のロボットの行動制御方法。
【請求項３３】
ロボットの外部環境の変化を認識する外部環境認識ステップをさらに備え、
前記内部状態管理ステップでは、外部環境の変化に応じて内部状態の指標を変更する、
ことを特徴とする請求項２６に記載のロボットの行動制御方法。
【請求項３４】
ロボットの外部環境の変化を認識する外部環境認識ステップと、外部環境から内部状態の変化を連想記憶する連想記憶ステップをさらに備え、
前記内部状態管理ステップでは、連想記憶により外部環境から想起した内部環境の変化を基に内部状態の指標を変更する、
ことを特徴とする請求項３６に記載のロボットの行動制御方法。
【請求項３５】
前記連想記憶ステップでは認識される対象物毎に内部状態の変化を連想記憶する、
ことを特徴とする請求項３４に記載のロボットの行動制御方法。
【請求項３６】
内部入力又は外部入力に基づいて行動を生成するロボット装置であって、
前記ロボットの行動を決定する１以上の行動モジュールと、
前記行動モジュールを管理する行動モジュール管理手段と、
前記行動モジュールの現在のステートを記憶するステート記憶手段と、
前記ステート記憶手段に記憶されたステートに対応した、外部又は内部からの入力に基づいて行動命令を出力する１又はそれ以上のステートマシンを備え、
前記ステートマシンの行動命令の出力が停止され、その後の行動出力が再開される際に、前記行動モジュール管理手段は前記ステート記憶手段に記憶されたステートに基づいて所定の行動をロボットに実行させた後、前記行動出力が再開される、
ことを特徴とするロボット装置。
【請求項３７】
前記ステート記憶手段と、前記ステートマシンは、前記行動モジュールの内部に設けられ、
前記行動モジュール管理手段は、前記行動モジュールと階層構造をなし、且つ、上位の階層に位置する他の行動モジュールに格納されている、
ことを特徴とする請求項３６に記載のロボット装置。
【請求項３８】
自律的に動作するロボット装置において、
外部刺激と内部環境に基づいて状況判断して活動度レベルを算出する手段と、所定のステートマシンに基づいて入力とステートに対応した行動を出力する手段とを備えた行動モジュールと、
前記行動モジュールの状態を設定する状態設定手段と、
を具備することを特徴とするロボット装置。
【請求項３９】
前記状態設定手段は、前記活動度レベルに応じて、前記行動モジュールを準備完了、活動、又は待機のうちいずれかの状態に設定する、
を特徴とする請求項３８に記載のロボット装置。
【請求項４０】
２以上の行動モジュールが階層構造になされており、
前記状態設定手段は、前記階層の上位の行動モジュールが下位の行動モジュールを選択するように構成されている、
を特徴とする請求項３８に記載のロボット装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、自律的な動作を行ないユーザとのリアリスティックなコミュニケーションを実現するロボットの行動制御システム及び行動制御方法、並びにロボット装置に係り、特に、視覚や聴覚などの外部環境の認識結果や本能や感情などの内部状態などのロボットが置かれている状況を統合的に判断して適当な行動を選択する状況依存行動型のロボットのための行動制御システム及び行動制御方法、並びにロボット装置に関する。
【０００２】
【従来の技術】
電気的若しくは磁気的な作用を用いて人間の動作に似せた運動を行なう機械装置のことを「ロボット」という。ロボットの語源は、スラブ語の”ＲＯＢＯＴＡ（奴隷機械）”に由来すると言われている。わが国では、ロボットが普及し始めたのは１９６０年代末からであるが、その多くは、工場における生産作業の自動化・無人化などを目的としたマニピュレータや搬送ロボットなどの産業用ロボット（ｉｎｄｕｓｔｒｉａｌ  ｒｏｂｏｔ）であった。
【０００３】
最近では、イヌやネコ、クマのように４足歩行の動物の身体メカニズムやその動作を模したペット型ロボット、あるいは、ヒトやサルなどの２足直立歩行を行なう動物の身体メカニズムや動作を模した「人間形」若しくは「人間型」のロボット（ｈｕｍａｎｏｉｄ  ｒｏｂｏｔ）など、脚式移動ロボットの構造やその安定歩行制御に関する研究開発が進展し、実用化への期待も高まってきている。これら脚式移動ロボットは、クローラ式ロボットに比し不安定で姿勢制御や歩行制御が難しくなるが、階段の昇降や障害物の乗り越えなど、柔軟な歩行・走行動作を実現できるという点で優れている。
【０００４】
脚式移動ロボットの用途の１つとして、産業活動・生産活動等における各種の難作業の代行が挙げられる。例えば、原子力発電プラントや火力発電プラント、石油化学プラントにおけるメンテナンス作業、製造工場における部品の搬送・組立作業、高層ビルにおける清掃、火災現場その他における救助といったような危険作業・難作業の代行などである。
【０００５】
また、脚式移動ロボットの他の用途として、上述の作業支援というよりも、生活密着型、すなわち人間との「共生」あるいは「エンターティンメント」という用途が挙げられる。この種のロボットは、ヒトあるいはイヌ（ペット）、クマなどの比較的知性の高い脚式歩行動物の動作メカニズムや四肢を利用した豊かな感情表現を忠実に再現する。また、あらかじめ入力された動作パターンを単に忠実に実行するだけではなく、ユーザ（あるいは他のロボット）から受ける言葉や態度（「褒める」とか「叱る」、「叩く」など）に対して動的に対応した、生き生きとした応答表現を実現することも要求される。
【０００６】
従来の玩具機械は、ユーザ操作と応答動作との関係が固定的であり、玩具の動作をユーザの好みに合わせて変更することはできない。この結果、ユーザは同じ動作しか繰り返さない玩具をやがては飽きてしまうことになる。これに対し、インテリジェントなロボットは、対話や機体動作などからなる行動を自律的に選択することから、より高度な知的レベルでリアリスティックなコミュニケーションを実現することが可能となる。この結果、ユーザはロボットに対して深い愛着や親しみを感じる。
【０００７】
ロボットあるいはその他のリアリスティックな対話システムでは、視覚や聴覚など外部環境の変化に応じて逐次的に行動を選択していくのが一般的である。また、行動選択メカニズムの他の例として、本能や感情といった情動をモデル化してシステムの内部状態を管理して、内部状態の変化に応じて行動を選択するものを挙げることができる。勿論、システムの内部状態は、外部環境の変化によっても変化するし、選択された行動を発現することによっても変化する。
【０００８】
しかしながら、これら外部環境や内部状態などのロボットが置かれている状況を統合的に判断して行動を選択するという、状況依存型の行動制御に関しては例は少ない。
【０００９】
ここで、内部状態には、例えば生体で言えば大脳辺縁系へのアクセスに相当する本能のような要素や、大脳新皮質へのアクセスに相当する内発的欲求や社会的欲求などのように動物行動学的モデルで捉えられる要素、さらには喜びや悲しみ、怒り、驚きなどのような感情と呼ばれる要素などで構成される。
【００１０】
従来のインテリジェント・ロボットやその他の自律対話型ロボットにおいては、本能や感情などさまざまな要因からなる内部状態をすべて「情動」としてまとめて１次元的に内部状態を管理していた。すなわち、内部状態を構成する各要素はそれぞれ並列に存在しており、明確な選択基準のないまま外界の状況や内部状態のみで行動が選択されていた。
【００１１】
従来のシステムでは、その動作の選択及び発現は１次元の中にすべての行動が存在し、どれを選択するかを決定していた。このため、動作が多くなるにつれてその選択は煩雑になり、そのときの状況や内部状態を反映した行動選択を行なうことがより難しくなる。
【００１２】
【発明が解決しようとする課題】
本発明の目的は、自律的な動作を行ないリアリスティックなコミュニケーションを実現することができる、優れたロボットの行動制御システム及び行動制御方法、並びにロボット装置を提供することにある。
【００１３】
本発明のさらなる目的は、視覚や聴覚などの外部環境の認識結果や本能や感情などの内部状態などのロボットが置かれている状況を統合的に判断して行動を選択することができる、優れたロボットの行動制御システム及び行動制御方法、並びにロボット装置を提供することにある。
【００１４】
本発明のさらなる目的は、情動についての存在意義をより明確にして、一定の秩序の下で外部刺激や内部状態に応じた行動を好適に選択し実行することができる、優れたロボットの行動制御システム及び行動制御方法、並びにロボット装置を提供することにある。
【００１５】
本発明のさらなる目的は、視覚や聴覚などの外部環境の認識結果や本能や感情などの内部状態などのロボットが置かれている状況を統合的に判断して行動を選択することができる、優れたロボットの行動制御システム及び行動制御方法、並びにロボット装置を提供することにある。
【００１６】
【課題を解決するための手段及び作用】
本発明は、上記課題を参酌してなされたものであり、その第１の側面は、自律的に動作するロボットのための行動制御システムであって、
ロボットの機体動作を記述する複数の行動記述部と、
機体の外部環境を認識する外部環境認識部と、
認識された外部環境及び／又は行動の実行結果に応じたロボットの内部状態を管理する内部状態管理部と、
外部環境及び／又は内部状態に応じて前記の各行動記述部に記述された行動の実行を評価する行動評価部と、
を具備することを特徴とするロボットの行動制御システムである。
【００１７】
但し、ここで言う「システム」とは、複数の装置（又は特定の機能を実現する機能モジュール）が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない。
【００１８】
前記外部環境認識部は、外部の視覚認識、外部で発生する音声認識、外部から印加された接触認識のうち少なくとも１つを行なう。また、前記内部状態管理部は、ロボットの本能モデル及び／又は感情モデルを管理する。
【００１９】
前記行動記述部は、複数の行動記述部が機体動作の実現レベルに応じた木構造形式に構成することができる。この木構造は、動物行動学的（Ｅｔｈｏｌｏｇｉｃａｌ）な状況依存行動を数式化した行動モデルや、感情表現を実行するための枝など、複数の枝を含んでいる。例えば、ルート行動記述部の直近下位の階層では、「探索する（Ｉｎｖｅｓｔｉｇａｔｅ）」、「食べる（Ｉｎｇｅｓｔｉｖｅ）」、「遊ぶ（Ｐｌａｙ）」という行動記述部が配設される。そして、「探索する（Ｉｎｖｅｓｔｉｇａｔｅ）」の下位には、「ＩｎｖｅｓｔｉｇａｔｉｖｅＬｏｃｏｍｏｔｉｏｎ」、「ＨｅａｄｉｎＡｉｒＳｎｉｆｆｉｎｇ」、「ＩｎｖｅｓｔｉｇａｔｉｖｅＳｎｉｆｆｉｎｇ」というより具体的な探索行動を記述した行動記述部が配設されている。同様に、行動記述部「食べる（Ｉｎｇｅｓｔｉｖｅ）」の下位には「Ｅａｔ」や「Ｄｒｉｎｋ」などのより具体的な飲食行動を記述した行動記述部が配設され、行動記述部「遊ぶ（Ｐｌａｙ）」の下位には「ＰｌａｙＢｏｗｉｎｇ」、「ＰｌａｙＧｒｅｅｔｉｎｇ」、「ＰｌａｙＰａｗｉｎｇ」などのより具体的な遊ぶ行動を記述した行動記述部が配設されている。
【００２０】
このような場合、前記行動評価部は該木構造の上から下に向かって複数の行動記述部を同時並行的に評価することができる。また、前記外部環境認識部による新規認識及び／又は前記内部状態管理部による内部状態の変化に応答して、前記行動評価部による前記の各行動記述部の評価を実行して、木構造を上から下に向かって評価結果としての実行許可を渡していくことにより、外部環境や内部状態の変化に応じた適当な行動を選択的に実行することができる。すなわち、状況依存の行動の評価並びに実行をＣｏｎｃｕｒｒｅｎｔに行なうことができる。
【００２１】
また、複数の行動記述部に記述された行動を同時実行するときの機体上の資源の競合を管理する資源管理部をさらに備えていてもよい。このような場合、前記行動選択部は、資源の競合が調停されていることを前提に、２以上の行動記述部を同時に選択することができる。
【００２２】
また、前記外部環境認識部による新規認識により前記行動評価部による前記の各行動記述部の評価を実行した結果、現在実行中の行動よりも高い評価値を得た行動記述部が出現した場合、前記行動選択部は、現在実行中の行動を停止して、評価値がより高い行動記述部に記述された行動を優先的に実行するようにしてもよい。したがって、反射行動のようにより重要度や緊急性の高い行動を、既に実行中の状況依存行動に割り込んで、優先的に実行することができる。このような場合、該優先的に実行した行動が終了した後、一旦停止された行動を再開させることが好ましい。
【００２３】
また、前記行動選択部は、異なる外部環境の変化に応じて同一の行動記述部を逐次選択するようにしてもよい。このような場合、前記行動記述部に記述された行動を実行する度に外部環境毎に個別の作業空間を割り当てるようにする。
【００２４】
例えば、人物Ａとの対話という行動を実行中に、人物Ｂがロボットと人物Ａとの対話に割り込み、外部刺激と内部状態の変化に基づく活動度レベルの評価を行なった結果、Ｂとの対話を行なう行動の方がより優先度が高くなると、Ｂとの対話が割り込まれる。
【００２５】
このような場合、Ａ又はＢのいずれとの対話も同じ行動記述部に従って対話を行なうが、Ａとの対話を行なう行動とは別に、Ｂとの対話を行なう行動のための作業空間を割り当てることにより、対話内容の干渉を防ぐ。すなわち、Ｂとの対話によりＡとの対話内容が破壊されずに済むので、Ｂとの対話が終了すると、Ａとの対話を中断した時点から再開することができる。
【００２６】
また、本発明の第２の側面は、内部状態に応じて自律的に動作するロボットの行動制御システム又は行動制御方法であって、
内部状態の指標である情動を複数の階層構造にして管理する内部状態管理部又はステップと、
各階層の情動を満たす行動を選択的に実行する行動選択部又はステップと、
を特徴とするロボットの行動制御システム又は行動制御方法である。
【００２７】
ここで、前記内部状態管理部又はステップは、個体存続のために必要な１次情動と、該１次情動の過不足により変化する２次情動という段階毎に階層化するとともに、該１次情動を生得的反射や生理的な階層から連想に至るまで次元により階層化するようにしてもよい。
【００２８】
そして、前記行動選択部又はステップは、より低次の１次情動を満たす行動を優先的に選択するようにしてもよい。あるいは、前記行動選択部又はステップは、より高次の１次情動が低次の１次情動に比し著しく不足している場合には、低次の１次情動を満たす行動の選択を抑制するようにしてもよい。
【００２９】
本発明の第２の側面に係るロボットの行動制御システム又は行動制御方法によれば、情動についてその存在意義による複数階層化を行ない、それぞれの階層で動作を決定する。決定された複数の動作から、そのときの外部刺激や内部状態によってどの動作を行なうかを決定する。それぞれの階層で行動は選択されるが、その実施される順番はロボットの内部状態の優先順位に基づくので、より低次の行動から優先的に動作を発現していくことにより、反射などの本能的行動や、記憶を用いた動作選択などの高次の行動を１つの個体上で矛盾なく発現することができる。また、行動をカテゴライズして、スキーマとして作成する際も明確な指標となる。
【００３０】
本発明の第２の側面に係るロボットの行動制御システム又は行動制御方法は、ロボットの外部環境の変化を認識する外部環境認識部をさらに備えていてもよい。このような場合、前記行動選択部又はステップは、内部状態の指標に加え、外部環境の指標を基に行動を選択することができる。
【００３１】
また、前記内部状態管理部ステップは、バイオリズムなどを利用して、時間経過に応じて内部状態の指標を変更するようにしてもよい。
【００３２】
また、前記内部状態管理部又はステップは、行動選択部において選択された行動の実行に応じて、すなわち動作の程度に応じて内部状態の指標を変更するようにしてもよい。
【００３３】
また、前記内部状態管理部又はステップは、外部環境の変化に応じて内部状態の指標を変更するようにしてもよい。
【００３４】
また、本発明の第２の側面に係るロボットの行動制御システム又は行動制御方法は、外部環境から内部状態の変化を連想記憶する連想記憶部又はステップをさらに備えていてもよい。このような場合、前記内部状態管理部又はステップは、前記連想記憶部又はステップが外部環境から想起した内部環境の変化を基に内部状態の指標を変更するようにしてもよい。また、前記連想記憶部又はステップは前記外部環境認識される対象物毎に内部状態の変化を連想記憶するようにしてもよい。
【００３５】
従来のロボットにおける動作の選択や発現は、基本的には、対象物までの物理的距離や、そのときのロボットの内部状態によって決定されており、言い換えれば、対象物の相違によりどのような行動をとるか、といった行動選択は行なわれていない。
【００３６】
これに対し、本発明の第２の側面に係るロボットの行動制御システム又は行動制御方法によれば、連想記憶を用いることにより、対象物毎に異なる内部状態の変化を想起することができるので、同じ状況でもその行動の発現し易さを異ならせることができる。すなわち、外部の刺激や物理的状況、現在の内部状態に加え、ロボットの対象物ごとの記憶を考慮して行動を選択することができ、より多彩で多様化した対応を実現することができる。
【００３７】
例えば、「○○が見えているから××する」とか、「現在○○が不足だから（何に対しても）××する」などの外部環境又は内部状態によって決まった行動をするのではなく、「○○が見えても△△なので□□する」とか、「○○が見えているけど××なので■■する」など、対象物に関する内部状態の変化記憶を用いることにより、行動にバリエーションを付けることができる。
【００３８】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【００３９】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態について詳解する。
【００４０】
Ａ．ロボット装置の構成
図１には、本発明に実施に供されるロボット装置１の機能構成を模式的に示している。同図に示すように、ロボット装置１は、全体の動作の統括的制御やその他のデータ処理を行なう制御ユニット２０と、入出力部４０と、駆動部５０と、電源部６０とで構成される。以下、各部について説明する。
【００４１】
入出力部４０は、入力部としてロボット装置１の目に相当するＣＣＤカメラ１５や、耳に相当するマイクロフォン１６、頭部や背中などの部位に配設されてユーザの接触を感知するタッチ・センサ１８、あるいは五感に相当するその他の各種のセンサを含む。また、出力部として、口に相当するスピーカ１７、あるいは点滅の組み合わせや点灯のタイミングにより顔の表情を形成するＬＥＤインジケータ（目ランプ）１９などを装備している。これら出力部は、音声やランプの点滅など、脚などによる機械運動パターン以外の形式でもロボット装置１からのユーザ・フィードバックを表現することができる。
【００４２】
駆動部５０は、制御部２０が指令する所定の運動パターンに従ってロボット装置１の機体動作を実現する機能ブロックであり、行動制御による制御対象である。駆動部５０は、ロボット装置１の各関節における自由度を実現するための機能モジュールであり、それぞれの関節におけるロール、ピッチ、ヨーなど各軸毎に設けられた複数の駆動ユニットで構成される。各駆動ユニットは、所定軸回りの回転動作を行なうモータ５１と、モータ５１の回転位置を検出するエンコーダ５２と、エンコーダ５２の出力に基づいてモータ５１の回転位置や回転速度を適応的に制御するドライバ５３の組み合わせで構成される。
【００４３】
駆動ユニットの組み合わせ方によって、ロボット装置１を例えば２足歩行又は４足歩行などの脚式移動ロボットとして構成することができる。
【００４４】
電源部６０は、その字義通り、ロボット装置１内の各電気回路などに対して給電を行なう機能モジュールである。本実施形態に係るロボット装置１は、バッテリを用いた自律駆動式であり、電源部６０は、充電バッテリ６１と、充電バッテリ６１の充放電状態を管理する充放電制御部６２とで構成される。
【００４５】
充電バッテリ６１は、例えば、複数本のリチウムイオン２次電池セルをカートリッジ式にパッケージ化した「バッテリ・パック」の形態で構成される。
【００４６】
また、充放電制御部６２は、バッテリ６１の端子電圧や充電／放電電流量、バッテリ６１の周囲温度などを測定することでバッテリ６１の残存容量を把握し、充電の開始時期や終了時期などを決定する。充放電制御部６２が決定する充電の開始及び終了時期は制御ユニット２０に通知され、ロボット装置１が充電オペレーションを開始及び終了するためのトリガとなる。
【００４７】
制御ユニット２０は、「頭脳」に相当し、例えばロボット装置１の機体頭部あるいは胴体部に搭載されている。
【００４８】
図２には、制御ユニット２０の構成をさらに詳細に図解している。同図に示すように、制御ユニット２０は、メイン・コントローラとしてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１が、メモリやその他の各回路コンポーネントや周辺機器とバス接続された構成となっている。バス２７は、データ・バス、アドレス・バス、コントロール・バスなどを含む共通信号伝送路である。バス２７上の各装置にはそれぞれに固有のアドレス（メモリ・アドレス又はＩ／Ｏアドレス）が割り当てられている。ＣＰＵ２１は、アドレスを指定することによってバス２８上の特定の装置と通信することができる。
【００４９】
ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２２は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの揮発性メモリで構成された書き込み可能メモリであり、ＣＰＵ２１が実行するプログラム・コードをロードしたり、実行プログラムによる作業データの一時的な保存のために使用される。
【００５０】
ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２３は、プログラムやデータを恒久的に格納する読み出し専用メモリである。ＲＯＭ２３に格納されるプログラム・コードには、ロボット装置１の電源投入時に実行する自己診断テスト・プログラムや、ロボット装置１の動作を規定する動作制御プログラムなどが挙げられる。
【００５１】
ロボット装置１の制御プログラムには、カメラ１５やマイクロフォン１６などのセンサ入力を処理してシンボルとして認識する「センサ入力・認識処理プログラム」、短期記憶や長期記憶などの記憶動作（後述）を司りながらセンサ入力と所定の行動制御モデルとに基づいてロボット装置１の行動を制御する「行動制御プログラム」、行動制御モデルに従って各関節モータの駆動やスピーカ１７の音声出力などを制御する「駆動制御プログラム」などが含まれる。
【００５２】
不揮発性メモリ２４は、例えばＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）のように電気的に消去再書き込みが可能なメモリ素子で構成され、逐次更新すべきデータを不揮発的に保持するために使用される。逐次更新すべきデータには、暗号鍵やその他のセキュリティ情報、出荷後にインストールすべき装置制御プログラムなどが挙げられる。
【００５３】
インターフェース２５は、制御ユニット２０外の機器と相互接続し、データ交換を可能にするための装置である。インターフェース２５は、例えば、カメラ１５やマイクロフォン１６、スピーカ１７との間でデータ入出力を行なう。また、インターフェース２５は、駆動部５０内の各ドライバ５３−１…との間でデータやコマンドの入出力を行なう。
【００５４】
また、インターフェース２５は、ＲＳ（Ｒｅｃｏｍｍｅｎｄｅｄ  Ｓｔａｎｄａｒｄ）−２３２Ｃなどのシリアル・インターフェース、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）１２８４などのパラレル・インターフェース、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インターフェース、ｉ−Ｌｉｎｋ（ＩＥＥＥ１３９４）インターフェース、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）インターフェース、ＰＣカードやメモリ・スティックを受容するメモリ・カード・インターフェース（カード・スロット）などのような、コンピュータの周辺機器接続用の汎用インターフェースを備え、ローカル接続された外部機器との間でプログラムやデータの移動を行なうようにしてもよい。
【００５５】
また、インターフェース２５の他の例として、赤外線通信（ＩｒＤＡ）インターフェースを備え、外部機器と無線通信を行なうようにしてもよい。
さらに、制御ユニット２０は、無線通信インターフェース２６やネットワーク・インターフェース・カード（ＮＩＣ）２７などを含み、Ｂｌｕｅｔｏｏｔｈのような近接無線データ通信や、ＩＥＥＥ  ８０２．１１ｂのような無線ネットワーク、あるいはインターネットなどの広域ネットワークを経由して、外部のさまざまなホスト・コンピュータとデータ通信を行なうことができる。
【００５６】
このようなロボット装置１とホスト・コンピュータ間におけるデータ通信により、遠隔のコンピュータ資源を用いて、ロボット装置１の複雑な動作制御を演算したり、リモート・コントロールすることができる。
【００５７】
Ｂ．ロボット装置の行動制御システム
図３には、本発明の実施形態に係るロボット装置１の行動制御システム１００の機能構成を模式的に示している。ロボット装置１は、外部刺激の認識結果や内部状態の変化に応じて行動制御を行なうことができる。さらには、長期記憶機能を備え、外部刺激から内部状態の変化を連想記憶することにより、外部刺激の認識結果や内部状態の変化に応じて行動制御を行なうことができる。
【００５８】
図示の行動制御システム１００にはオブジェクト指向プログラミングを採り入れて実装することができる。この場合、各ソフトウェアは、データとそのデータに対する処理手続きとを一体化させた「オブジェクト」というモジュール単位で扱われる。また、各オブジェクトは、メッセージ通信と共有メモリを使ったオブジェクト間通信方法によりデータの受け渡しとＩｎｖｏｋｅを行なうことができる。
【００５９】
行動制御システム１００は、外部環境（Ｅｎｖｉｒｏｎｍｅｎｔｓ）を認識するために、視覚認識機能部１０１と、聴覚認識機能部１０２と、接触認識機能部１０３を備えている。
【００６０】
視覚認識機能部（Ｖｉｄｅｏ）５１は、例えば、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ：電荷結合素子）カメラのような画像入力装置を介して入力された撮影画像を基に、顔認識や色認識などの画像認識処理や特徴抽出を行なう。視覚認識機能部５１は、後述する”ＭｕｌｔｉＣｏｌｏｒＴｒａｃｋｅｒ”，”ＦａｃｅＤｅｔｅｃｔｏｒ”，”ＦａｃｅＩｄｅｎｔｉｆｙ”といった複数のオブジェクトで構成される。
【００６１】
聴覚認識機能部（Ａｕｄｉｏ）５２は、マイクなどの音声入力装置を介して入力される音声データを音声認識して、特徴抽出したり、単語セット（テキスト）認識を行ったりする。聴覚認識機能部５２は、後述する”ＡｕｄｉｏＲｅｃｏｇ”，”ＡｕｔｈｕｒＤｅｃｏｄｅｒ”といった複数のオブジェクトで構成される。
接触認識機能部（Ｔａｃｔｉｌｅ）５３は、例えば機体の頭部などに内蔵された接触センサによるセンサ信号を認識して、「なでられた」とか「叩かれた」という外部刺激を認識する。
【００６２】
内部状態管理部（ＩＳＭ：Ｉｎｔｅｒｎａｌ  Ｓｔａｔｕｓ  Ｍａｎａｇｅｒ）１０４は、本能や感情といった数種類の情動を数式モデル化して管理しており、上述の視覚認識機能部１０１と、聴覚認識機能部１０２と、接触認識機能部１０３によって認識された外部刺激（ＥＳ：ＥｘｔｅｒｎａｌＳｔｉｍｕｌａ）に応じてロボット装置１の本能や情動といった内部状態を管理する。
【００６３】
感情モデルと本能モデルは、それぞれ認識結果と行動履歴を入力に持ち、感情値と本能値を管理している。行動モデルは、これら感情値や本能値を参照することができる。
【００６４】
本実施形態では、情動についてその存在意義による複数階層で構成され、それぞれの階層で動作する。決定された複数の動作から、そのときの外部環境や内部状態によってどの動作を行なうかを決定するようになっている（後述）。また、それぞれの階層で行動は選択されるが、より低次の行動から優先的に動作を発現していくことにより、反射などの本能的行動や、記憶を用いた動作選択などの高次の行動を１つの個体上で矛盾なく発現することができる。
【００６５】
本実施形態に係るロボット装置１は、外部刺激の認識結果や内部状態の変化に応じて行動制御を行なうために、時間の経過とともに失われる短期的な記憶を行なう短期記憶部１０５と、情報を比較的長期間保持するための長期記憶部１０６を備えている。短期記憶と長期記憶という記憶メカニズムの分類は神経心理学に依拠する。
【００６６】
短期記憶部（ＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙ）１０５は、上述の視覚認識機能部１０１と、聴覚認識機能部１０２と、接触認識機能部１０３によって外部環境から認識されたターゲットやイベントを短期間保持する機能モジュールである。例えば、カメラ１５からの入力画像を約１５秒程度の短い期間だけ記憶する。
【００６７】
長期記憶部（ＬｏｎｇＴｅｒｍＭｅｍｏｒｙ）１０６は、物の名前など学習により得られた情報を長期間保持するために使用される。長期記憶部１０６は、例えば、ある行動モジュールにおいて外部刺激から内部状態の変化を連想記憶することができる。
【００６８】
また、本実施形態に係るロボット装置１の行動制御は、反射行動部１０９によって実現される「反射行動」と、状況依存行動階層１０８によって実現される「状況依存行動」と、熟考行動階層１０７によって実現される「熟考行動」に大別される。
【００６９】
反射的行動部（ＲｅｆｌｅｘｉｖｅＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒ）１０９は、上述の視覚認識機能部１０１と、聴覚認識機能部１０２と、接触認識機能部１０３によって認識された外部刺激に応じて反射的な機体動作を実現する機能モジュールである。
【００７０】
反射行動とは、基本的に、センサ入力された外部情報の認識結果を直接受けて、これを分類して、出力行動を直接決定する行動のことである。例えば、人間の顔を追いかけたり、うなずくといった振る舞いは反射行動として実装することが好ましい。
【００７１】
状況依存行動階層（ＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒ）１０８は、短期記憶部１０５並びに長期記憶部１０６の記憶内容や、内部状態管理部１０４によって管理される内部状態を基に、ロボット装置１が現在置かれている状況に即応した行動を制御する。
【００７２】
状況依存行動階層１０８は、各行動毎にステートマシンを用意しており、それ以前の行動や状況に依存して、センサ入力された外部情報の認識結果を分類して、行動を機体上で発現する。また、状況依存行動階層１０８は、内部状態をある範囲に保つための行動（「ホメオスタシス行動」とも呼ぶ）も実現し、内部状態が指定した範囲内を越えた場合には、その内部状態を当該範囲内に戻すための行動が出現し易くなるようにその行動を活性化させる（実際には、内部状態と外部環境の両方を考慮した形で行動が選択される）。状況依存行動は、反射行動に比し、反応時間が遅い。
【００７３】
熟考行動階層（ＤｅｌｉｂｅｒａｔｉｖｅＬａｙｅｒ）１０７は、短期記憶部１０５並びに長期記憶部１０６の記憶内容に基づいて、ロボット装置１の比較的長期にわたる行動計画などを行なう。
【００７４】
熟考行動とは、与えられた状況あるいは人間からの命令により、推論やそれを実現するための計画を立てて行なわれる行動のことである。例えば、ロボットの位置と目標の位置から経路を探索することは熟考行動に相当する。このような推論や計画は、ロボット装置１がインタラクションを保つための反応時間よりも処理時間や計算負荷を要する（すなわち処理時間がかかる）可能性があるので、上記の反射行動や状況依存行動がリアルタイムで反応を返しながら、熟考行動は推論や計画を行なう。
【００７５】
熟考行動階層１０７や状況依存行動階層１０８、反射行動部１０９は、ロボット装置１のハードウェア構成に非依存の上位のアプリケーション・プログラムとして記述することができる。これに対し、ハードウェア依存層制御部（ＣｏｎｆｉｇｕｒａｔｉｏｎＤｅｐｅｎｄｅｎｔＡｃｔｉｏｎｓＡｎｄＲｅａｃｔｉｏｎｓ）１１０は、これら上位アプリケーション（「スキーマ」と呼ばれる行動モジュール）からの命令に応じて、関節アクチュエータの駆動などの機体のハードウェア（外部環境）を直接操作する。
【００７６】
Ｃ．ロボット装置の記憶メカニズム
上述したように、本実施形態に係るロボット装置１は、短期記憶部１０５と長期記憶部１０６を備えているが、このような記憶メカニズムは、神経心理学に依拠する。
【００７７】
短期記憶は、字義通り短期的な記憶であり、時間の経過とともに失われる。短期記憶は、例えば、視覚や聴覚、接触など、外部環境から認識されたターゲットやイベントを短期間保持するために使用することができる。
【００７８】
短期記憶は、さらに、感覚情報（すなわちセンサからの出力）をそのままの信号で１秒程度保持する「感覚記憶」と、感覚記憶をエンコードして限られた容量で短期的に記憶する「直接記憶」と、状況変化や文脈を数時間に渡って記憶する「作業記憶」に分類することができる。直接記憶は、神経心理学的な研究によれば７±２チャンクであると言われている。また、作業記憶は、短期記憶と長期記憶との対比で、「中間記憶」とも呼ばれる。
【００７９】
また、長期記憶は、物の名前など学習により得られた情報を長期間保持するために使用される。同じパターンを統計的に処理して、ロバストな記憶にすることができる。
【００８０】
長期記憶はさらに「宣言的知識記憶」と「手続的知識記憶」に分類される。宣言的知識記憶は、場面（例えば教えられたときのシーン）に関する記憶である「エピソード記憶」と、言葉の意味や常識といった記憶からなる「意味記憶」からなる。また、手続的知識記憶は、宣言的知識記憶をどのように使うかといった手順記憶であり、入力パターンに対する動作の獲得に用いることができる。
【００８１】
Ｃ−１．短期記憶部
短期記憶部１０５は、自分の周りに存在する物体、あるいはイベントを表現、記憶し、それに基づいてロボットが行動することを目的とした機能モジュールである。視覚や聴覚などのセンサ情報を基に物体やイベントの位置を自己中心座標系上に配置していくが、視野外の物体などを記憶し、それに対する行動などを生じさせることができる。
【００８２】
例えば、ある人物Ａと会話していて、別の人物Ｂに声をかられたとき、Ａの位置や会話内容を保持しながらＢとの会話を行ない、終了後Ａとの会話に戻る場合などに短期記憶の機能が必要となる。但し、あまり複雑な処理による統合を行なわずに、時間と空間で近いセンサ情報を同じ物体からの信号とみなすといった時空間の簡単な近さによる統合を行なう。
【００８３】
また、ステレオ視覚などの技術を用いてパターン認識で判別可能な物体以外の物体の位置を記憶するために、自己中心座標系上に配置する。床面検出とともに利用して、障害物の位置を確率的に記憶するなどに利用することができる。
【００８４】
本実施形態では、短期記憶部１０５は、上述した視覚認識機能部１０１、聴覚認識機能部１０２、接触認識機能部１０３などの複数の認識器の結果からなる外部刺激を時間的及び空間的に整合性を保つように統合して、外部環境下の各物体に関する知覚を短期間の記憶として状況依存行動階層（ＳＢＬ）１０８などの行動制御モジュールに提供する。
【００８５】
したがって、上位モジュールとして構成される行動制御モジュール側では、外界からの複数の認識結果を統合して意味を持ったシンボル情報として扱い、高度な行動制御を行なうことができる。また、以前に観測された認識結果との対応問題などより複雑な認識結果を利用して、どの肌色領域が顔でどの人物に対応しているかや、この声がどの人物の声なのかなどを解くことができる。
【００８６】
また、認識した観測結果に関する情報を記憶として短期記憶部５５が保持しているので、自律行動する期間中に一時的に観測結果が来なかったりした場合であっても、機体の行動制御を行なうアプリケーションなどの上位モジュールからは常にそこに物体が知覚されているように見えるようにすることができる。例えば、センサの視野外の情報もすぐに忘れることなく保持しているので、ロボットが物体を一旦見失ったとしても、また後で探し出すことができる。この結果、認識器の間違いやセンサのノイズに強くなり、認識器の通知のタイミングに依存しない安定したシステムを実現することができる。また、認識器単体から見て情報が足りなくても、他の認識結果が補うことができる場合があるので、システム全体としての認識性能が向上する。
【００８７】
また、関連する認識結果が結び付けられているので、アプリケーションなどの上位モジュールで関連する情報を使って行動判断することが可能である。例えば、ロボット装置は、呼び掛けられた声を基に、その人物の名前を引き出すことができる。この結果、挨拶の応答に「こんにちは、ＸＸＸさん。」のように答えるなどのリアクションが可能である。
【００８８】
図４には、図３に示した行動制御システム１００における外部刺激に応じた状況依存行動制御のメカニズムを図解している。外部刺激は、認識系の機能モジュール１０１〜１０３によってシステムに取り込まれるとともに、短期記憶部（ＳＴＭ）１０５を介して状況依存行動階層（ＳＢＬ）１０８に与えられる。図示の通り、認識系の各機能モジュール１０１〜１０３や、短期記憶部（ＳＴＭ）１０５、状況依存行動階層（ＳＢＬ）１０８はオブジェクトとして構成されている。
【００８９】
同図において、丸で表されているのが、「オブジェクト」又は「プロセス」と呼ばれるエンティティである。オブジェクト同士が非同期に通信し合うことで、システム全体が動作する。各オブジェクトはメッセージ通信と共有メモリを使ったオブジェクト間通信方法によりデータの受け渡しとＩｎｖｏｋｅを行なっている。以下に、各オブジェクトの機能について説明する。
【００９０】
ＡｕｄｉｏＲｅｃｏｇ：
マイクなどの音声入力装置からの音声データを受け取って、特徴抽出と音声区間検出を行なうオブジェクトである。また、マイクがステレオである場合には、水平方向の音源方向推定を行なうことができる。音声区間であると判断されると、その区間の音声データの特徴量及び音源方向がＡｒｔｈｅｒＤｅｃｏｄｅｒ（後述）に送られる。
【００９１】
ＳｐｅｅｃｈＲｅｃｏｇ：
ＡｕｄｉｏＲｅｃｏｇから受け取った音声特徴量と音声辞書及び構文辞書を使って音声認識を行なうオブジェクトである。認識された単語のセットは短期記憶部（ＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙ）１０５に送られる。
【００９２】
ＭｕｌｔｉＣｏｌｏｒＴｒａｃｋｅｒ：
色認識を行なうオブジェクトであり、カメラなどの画像入力装置から画像データを受け取り、あらかじめ持っている複数のカラー・モデルに基づいて色領域を抽出し、連続した領域に分割する。分割された各領域の位置や大きさ、特徴量などの情報を出力して、短期記憶部（ＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙ）１０５へ送る。
【００９３】
ＦａｃｅＤｅｔｅｃｔｏｒ：
画像フレーム中から顔領域を検出するオブジェクトであり、カメラなどの画像入力装置から画像データを受け取り、それを９段階のスケール画像に縮小変換する。このすべての画像の中から顔に相当する矩形領域を探索する。重なりあった候補領域を削減して最終的に顔と判断された領域に関する位置や大きさ、特徴量などの情報を出力して、ＦａｃｅＩｄｅｎｔｉｆｙ（後述）へ送る。
【００９４】
ＦａｃｅＩｄｅｎｔｉｆｙ：
検出された顔画像を識別するオブジェクトであり、顔の領域を示す矩形領域画像をＦａｃｅＤｅｔｅｃｔｏｒから受け取り、この顔画像が手持ちの人物辞書のうちでどの人物に相当するかを比較して人物の識別を行なう。この場合、顔検出から顔画像を受け取り、顔画像領域の位置、大きさ情報とともに人物のＩＤ情報を出力する。
【００９５】
ＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙ（短期記憶部）：
ロボット１の外部環境に関する情報を比較的短い時間だけ保持するオブジェクトであり、ＳｐｅｅｃｈＲｅｃｏｇから音声認識結果（単語、音源方向、確信度）を受け取り、ＭｕｌｔｉＣｏｌｏｒＴｒａｃｋｅｒから肌色の領域の位置、大きさと顔領域の位置、大きさを受け取り、ＦａｃｅＩｄｅｎｔｉｆｙから人物のＩＤ情報等を受け取る。また、ロボット１の機体上の各センサからロボットの首の方向（関節角）を受け取る。そして、これらの認識結果やセンサ出力を統合的に使って、現在どこにどの人物がいて、しゃべった言葉がどの人物のものであり、その人物とはこれまでにどんな対話を行なったのかという情報を保存する。こうした物体すなわちターゲットに関する物理情報と時間方向でみたイベント（履歴）を出力として、状況依存行動階層（ＳＢＬ）などの上位モジュールに渡す。
【００９６】
ＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒＬａｙｅｒ（状況依存行動階層）：
上述のＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙ（短期記憶部）からの情報を基にロボット１の行動（状況に依存した行動）を決定するオブジェクトである。複数の行動を同時に評価したり、実行したりすることができる。また、行動を切り替えて機体をスリープ状態にしておき、別の行動を起動することができる。
【００９７】
ＲｅｓｏｕｒｃｅＭａｎａｇｅｒ：
出力用のコマンドに対してロボット１の各ハードウェアのリソース調停を行なうオブジェクトである。図４に示す例では、音声出力用のスピーカをコントロールするオブジェクトと首のモーション・コントロールするオブジェクトのリソース調停を行なう。
【００９８】
ＳｏｕｎｄＰｅｒｆｏｒｍｅｒＴＴＳ：
音声出力を行なうためのオブジェクトであり、ＲｅｓｏｕｒｃｅＭａｎａｇｅｒ経由でＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒＬａｙｅｒから与えられたテキスト・コマンドに応じて音声合成を行ない、ロボット１の機体上のスピーカから音声出力を行なう。
【００９９】
ＨｅａｄＭｏｔｉｏｎＧｅｎｅｒａｔｏｒ：
ＲｅｓｏｕｒｃｅＭａｎａｇｅｒ経由でＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒＬａｙｅｒから首を動かすコマンドを受けたことに応答して、首の関節角を計算するオブジェクトである。「追跡」のコマンドを受けたときには、ＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙから受け取った物体の位置情報を基に、その物体が存在する方向を向く首の関節角を計算して出力する。
【０１００】
短期記憶部１０５は、ターゲット・メモリとイベント・メモリという２種類のメモリ・オブジェクトで構成される。
【０１０１】
ターゲット・メモリは、各認識機能部１０１〜１０３からの情報を統合して、現在知覚している物体に関する情報すなわちターゲットを保持している。このため、対象物体がいなくなったり現れたりすることで、該当するターゲットを記憶領域から削除したり（ＧａｒｂａｇｅＣｏｌｌｅｃｔｏｒ）、新たに生成したりする。また、１つのターゲットを複数の認識属性で表現することができる（ＴａｒｇｅｔＡｓｓｏｃｉａｔｅ）。例えば、肌色で顔のパターンで声を発する物体（人間の顔）などである。
【０１０２】
ターゲット・メモリで保持される物体（ターゲット）の位置や姿勢情報は、それぞれの認識機能部５１〜５３において使用されるセンサ座標系ではなく、ロボット１の体幹などの機体上の特定の部位が所定の場所に固定されたワールド座標系で表現を行なうようにしている。このため、短期記憶部（ＳＴＭ）１０５では、ロボット１の各関節の現在値（センサ出力）を常に監視して、センサ座標系からこの固定座標系への変換を行なう。これにより、各認識機能部１０１〜１０３の情報を統合することが可能になる。例えば、ロボット１００が首などを動かしてセンサの姿勢が変化しても、状況依存行動階層（ＳＢＬ）などの行動制御モジュールから見た物体の位置は同じままであるので、ターゲットの取り扱いが容易になる。
【０１０３】
また、イベント・メモリは、外部環境下で発生した過去から現在までのイベントを時系列的に格納するオブジェクトである。イベント・メモリにおいて扱われるイベントとして、ターゲットの出現と消失、音声認識単語、自己の行動や姿勢の変化などの外界の状況の変化に関する情報を挙げることができる。
【０１０４】
イベントの中には、あるターゲットに関する状態変化が含まれている。このため、イベント情報として該当するターゲットのＩＤを含めることで、発生したイベントに関するより詳しい情報を、上述のターゲット・メモリから検索することも可能である。
【０１０５】
図５及び図６には、各認識機能部１０１〜１０３における認識結果に基づいて、短期記憶部１０５内のターゲット・メモリ及びイベント・メモリに入る情報の流れをそれぞれ示している。
【０１０６】
図５に示すように、短期記憶部１０５（ＳＴＭオブジェクト）内には、外部環境からターゲットを検出するターゲット検出器が設けられている。このターゲット検出器は、声認識結果や顔認識結果、色認識結果などの各認識機能部１０１〜１０３による認識結果を基に、新規ターゲットを追加したり、既存のターゲットを認識結果に反映するように更新したりする。検出されたターゲットは、ターゲット・メモリ内に保持される。
【０１０７】
また、ターゲット・メモリには、もはや観測されなくなったターゲットを探して消去するガーベッジ・コレクタ（ＧａｒｂａｇｅＣｏｌｌｅｃｔｏｒ）や、複数のターゲットの関連性を判別して同じターゲットに結び付けるターゲット・アソシエート（ＴａｒｇｅｔＡｓｓｏｃｉａｔｅ）などの機能がある。ガーベッジ・コレクタは、時間の経過に従ってターゲットの確信度をデクリメントしていき、確信度が所定値を下回ったターゲットを削除（ｄｅｌｅｔｅ）することで実現される。また、ターゲット・アソシエートは、同じ属性（認識タイプ）の特徴量が近いターゲット間で空間的・時間的な近さを持つことで、同じターゲットを同定することができる。
【０１０８】
前述した状況依存型行動階層（ＳＢＬ）は、短期記憶部１０５のクライアント（ＳＴＭクライアント）となるオブジェクトであり、ターゲット・メモリからは定期的に各ターゲットに関する情報の通知（Ｎｏｔｉｆｙ）を受け取る。本実施形態では、ＳＴＭプロキシ・クラスが、短期記憶部１０５（ＳＴＭオブジェクト）とは独立したクライアント・ローカルな作業領域にターゲットをコピーして、常に最新の情報を保持しておく。そして、ローカルなターゲット・リスト（Ｔａｒｇｅｔ  ｏｆ  Ｉｎｔｅｒｅｓｔ）の中から所望のターゲットを外部刺激として読み出して、スキーマ（ｓｃｈｅｍａ）すなわち行動モジュールを決定する（後述）。
【０１０９】
また、図６に示すように、短期記憶部１０５（ＳＴＭオブジェクト）内には、外部環境において発生するイベントを検出するイベント検出器が設けられている。このイベント検出器は、ターゲット検出器によるターゲットの生成や、ガーベッジ・コレクタによるターゲットの削除をイベントとして検出する。また、認識機能部１０１〜１０３による認識結果が音声認識である場合には、その発話内容がイベントになる。発生したイベントは、発生した時間順にイベント・メモリ内でイベント・リストとして格納される。
【０１１０】
状況依存型行動階層（ＳＢＬ）は、短期記憶部１０５のクライアント（ＳＴＭクライアント）となるオブジェクトであり、イベント・メモリからは時々刻々とのイベントの通知（Ｎｏｔｉｆｙ）を受け取る。本実施形態では、ＳＴＭプロキシ・クラスが、短期記憶部１０５（ＳＴＭオブジェクト）とは独立したクライアント・ローカルな作業領域にイベント・リストをコピーしておく。そして、ローカルなイベント・リストの中から所望のイベントを外部刺激として読み出して、スキーマ（ｓｃｈｅｍａ）すなわち行動モジュールを決定する（後述）。実行された行動モジュールは新たなイベントとしてイベント検出器により検出される。また、古いイベントは、例えばＦＩＦＯ（Ｆａｓｔ  Ｉｎ  Ｆａｓｔ  Ｏｕｔ）形式でイベント・リストから逐次的に廃棄される。
【０１１１】
本実施形態に係る短期記憶メカニズムによれば、ロボット１は、外部刺激に関する複数の認識器の結果を時間的及び空間的に整合性を保つように統合して、意味を持ったシンボル情報として扱うようになっている。これによって、以前に観測された認識結果との対応問題などより複雑な認識結果を利用して、どの肌色領域が顔でどの人物に対応しているかや、この声がどの人物の声なのかなどを解くことを可能にしている。
【０１１２】
以下では、図７〜図９を参照しながら、ロボット１によるユーザＡ及びＢとの対話処理について説明する。
【０１１３】
まず、図７に示すように、ユーザＡが「まさひろ（ロボットの名前）くん！」と呼ぶと、各認識機能部５１〜５３により音方向検出、音声認識、及び顔識別が行なわれ、呼ばれた方向を向いて、ユーザＡの顔をトラッキングしたり、ユーザＡとの対話を開始するという状況依存の行動が行なわれる。
【０１１４】
次いで、図８に示すように、今度はユーザＢが「まさひろ（ロボットの名前）くん！」と呼ぶと、各認識機能部１０１〜１０３により音方向検出、音声認識、及び顔識別が行なわれ、ユーザＡとの対話を中断した後（但し、会話のコンテキストを保存する）、呼ばれた方向を向いて、ユーザＢの顔をトラッキングしたり、ユーザＢとの対話を開始するという状況依存の行動が行なわれる。これは、状況依存行動階層１０８が持つＰｒｅｅｍｐｔｉｏｎ機能（後述）である。
【０１１５】
次いで、図９に示すように、ユーザＡが「おーい！」と叫んで、会話の継続を催促すると、今度は、ユーザＢとの対話を中断した後（但し、会話のコンテキストを保存する）、呼ばれた方向を向いて、ユーザＡの顔をトラッキングしたり、保存されているコンテキストに基づいてユーザＡとの対話を再開するという状況依存の行動が行なわれる。このとき、状況依存行動階層１０８が持つＲｅｅｎｔｒａｎｔ機能（後述）により、ユーザＡとの対話によってユーザＢとの対話内容が破壊されずに済み、中断した時点から正確に対話を再開することができる。
【０１１６】
Ｃ−２．長期記憶部
長期記憶は、物の名前など学習により得られた情報を長期間保持するために使用される。同じパターンを統計的に処理して、ロバストな記憶にすることができる。
【０１１７】
長期記憶はさらに「宣言的知識記憶」と「手続的知識記憶」に分類される。宣言的知識記憶は、場面（例えば教えられたときのシーン）に関する記憶である「エピソード記憶」と、言葉の意味や常識といった記憶からなる「意味記憶」からなる。また、手続的知識記憶は、宣言的知識記憶をどのように使うかといった手順記憶であり、入力パターンに対する動作の獲得に用いることができる。
【０１１８】
エピソード記憶は、長期記憶の中でも、宣言的知識記憶（言明記憶とも言う）の一種である。例えば、自転車に乗ることを考えると、初めて自転車に乗った場面（時間・場所など）を覚えていることがエピソード記憶に相当する。その後、時間の経過によりそのエピソードに関する記憶が薄れる一方、その意味を記憶するのが意味記憶である。また、自転車の乗り方の手順を記憶するようになるが、これが手続的知識記憶に相当する。一般的に、手続的知識の記憶には時間を要する。宣言的知識記憶によって「言う」ことができるのに対して、手続的知識記憶は潜在的であり、動作の実行という形で表れる。
【０１１９】
本実施形態に係る長期記憶部１０６は、視覚情報、聴覚情報などの物体に関するセンサ情報、及びその物体に対して行なった行動に対する結果としての内部状態が変化した結果などを記憶する連想記憶と、その１つの物体に関するフレーム記憶と、周囲の情景から構築されるマップ情報、あるいはデータとして与えられる地図情報、原因となる状況とそれに対する行動とその結果といったルールで構成される。
【０１２０】
Ｃ−２−１．連想記憶
連想記憶とは、あらかじめ複数のシンボルからなる入力パターンを記憶パターンとして記憶しておき、その中のある１つのパターンに類似したパターンが想起される仕組みのことを言う。本実施形態に係る連想記憶は、競合型ニューラル・ネットワークを用いたモデルにより実現される。このような連想記憶メカニズムによれば、一部欠陥のあるパターンが入力されたとき、記憶されている複数のパターンの中で最も近い記憶パターンを出力することができる。これは、不完全なデータからなる外部刺激しか与えられなかったときであっても、該当するニューロンの発火によりあるオブジェクトの意味などを想起することができるからである。
【０１２１】
連想記憶は、「自己想起型連想記憶」と「相互想起型連想記憶」に大別される。自己想起型とは記憶したパターンを直接キー・パターンで引き出すモデルであり、また、相互想起型とは入力パターンと出力パターンがある種の連合関係で結ばれているモデルである。本実施形態では、自己想起型連想記憶を採用するが、これは、従来のホップフィールドやアソシアトロン（前述）などの記憶モデルに比し、追加学習が容易である、入力パターンの統計的な記憶が可能である、などのメリットがある。
【０１２２】
追加学習によれば、新しいパターンを新たに記憶しても、過去の記憶が上書きされて消されることはない。また、統計的な学習によれば、同じものを多く見ればそれだけ記憶に残るし、また同じことを繰り返し実行すれば、忘れにくくなる。この場合、記憶過程において、毎回完全なパターンが入力されなくとも、繰り返し実行により、多く提示されたパターンに収束していく。
【０１２３】
Ｃ−２−２．連想記憶による意味記憶
ロボット装置１が覚えるパターンは、例えばロボット装置１への外部刺激と内部状態の組み合わせで構成される。
【０１２４】
ここで、外的刺激とは、ロボット装置１がセンサ入力を認識して得られた知覚情報であり、例えば、カメラ１５から入力された画像に対して処理された色情報、形情報、顔情報などであり、より具体的には、色、形、顔、３Ｄ一般物体、ハンドジェスチャー、動き、音声、接触、匂い、味などの構成要素からなる。
る。
【０１２５】
また、内的状態とは、例えば、ロボットの身体に基づいた本能や感情などの情動を指す。本能的要素は、例えば、疲れ（ｆａｔｉｇｕｅ）、熱あるいは体内温度（ｔｅｍｐｅｒａｔｕｒｅ）、痛み（ｐａｉｎ）、食欲あるいは飢え（ｈｕｎｇｅｒ）、乾き（ｔｈｉｒｓｔ）、愛情（ａｆｆｅｃｔｉｏｎ）、好奇心（ｃｕｒｉｏｓｉｔｙ）、排泄（ｅｌｉｍｉｎａｔｉｏｎ）又は性欲（ｓｅｘｕａｌ）のうちの少なくとも１つである。また、情動的要素は、幸せ（ｈａｐｐｉｎｅｓｓ）、悲しみ（ｓａｄｎｅｓｓ）、怒り（ａｎｇｅｒ）、驚き（ｓｕｒｐｒｉｓｅ）、嫌悪（ｄｉｓｇｕｓｔ）、恐れ（ｆｅａｒ）、苛立ち（ｆｒｕｓｔｒａｔｉｏｎ）、退屈（ｂｏｒｅｄｏｍ）、睡眠（ｓｏｍｎｏｌｅｎｃｅ）、社交性（ｇｒｅｇａｒｉｏｕｓｎｅｓｓ）、根気（ｐａｔｉｅｎｃｅ）、緊張（ｔｅｎｓｅ）、リラックス（ｒｅｌａｘｅｄ）、警戒（ａｌｅｒｔｎｅｓｓ）、罪（ｇｕｉｌｔ）、悪意（ｓｐｉｔｅ）、誠実さ（ｌｏｙａｌｔｙ）、服従性（ｓｕｂｍｉｓｓｉｏｎ）又は嫉妬（ｊｅａｌｏｕｓｙ）のうちの少なくとも１つである。
【０１２６】
本実施形態に係る競合型ニューラル・ネットワークを適用した連想記憶メカニズムでは、これら外部刺激や内部状態を構成する各要素に対して入力チャンネルを割り当てている。また、視覚認識機能部１０１や聴覚認識機能部１０２などの各知覚機能モジュールは、センサ出力となる生の信号を送るのではなく、センサ出力を認識した結果をシンボル化して、シンボルに相当するＩＤ情報（例えば、色プロトタイプＩＤ、形プロトタイプＩＤ、音声プロトタイプＩＤなど）を該当するチャンネルに送るようになっている。
【０１２７】
例えば、カラー・セグメンテーション・モジュールによりセグメンテーションされた各オブジェクトは、色プロトタイプＩＤを付加されて連想記憶システムに入力される。また、顔認識モジュールにより認識された顔のＩＤが連想記憶システムに入力される。また、物体認識モジュールにより認識された物体のＩＤが連想システムに入力される。また、音声認識モジュールからは、ユーザの発話により単語のプロトタイプＩＤが入力される。このとき、発話の音素記号列（Ｐｈｏｎｅｍｅ  Ｓｅｑｕｅｎｃｅ）も入力されるので、記憶・連想の処理で、ロボット装置１に発話させることが可能となる。また、本能に関しては、アナログ値を扱えるようになっており（後述）、例えば、本能のデルタ値を８０で記憶しておけば、連想により８０というアナログ値を得ることが可能である。
【０１２８】
したがって、本実施形態に係る連想記憶システムは、色、形、音声…などの外部刺激や内部状態を、各チャンネル毎のシンボル化されたＩＤの組み合わせからなる入力パターンとして記憶することができる。すなわち、連想記憶システムが記憶するのは、
【０１２９】
［色ＩＤ  形ＩＤ  顔ＩＤ  音声ＩＤ…本能ＩＤ（値）  情動    ＩＤ］
【０１３０】
の組み合わせである。
【０１３１】
連想記憶には、記憶過程と想起過程がある。図１０には、連想記憶の記憶過程の概念を示している。
【０１３２】
連想記憶システムに入力される記憶パターンは、外部刺激や内部状態の各要素毎に割り当てられている複数のチャンネルで構成される（図示の例では入力１〜入力８の８チャンネルからなる）。そして、各チャンネルには、対応する外部刺激の認識結果や内部状態をシンボル化したＩＤ情報が送られてくる。図示の例では、各チャンネルの濃淡がＩＤ情報を表しているものとする。例えば、記憶パターン中のｋ番目のカラムが顔のチャンネルに割り当てられている場合、その色により顔のプロトタイプＩＤを表している。
【０１３３】
図１０に示す例では、連想記憶システムは既に１〜ｎの合計ｎ個の記憶パターンを記憶しているものとする。ここで、２つの記憶パターン間での対応するチャンネルの色の相違は、同じチャンネル上で記憶している外部刺激又は内部状態のシンボルすなわちＩＤが当該記憶パターン間で異なることを意味する。
【０１３４】
また、図１１には、連想記憶の想起過程の概念を示している。上述したように、記憶過程で蓄えた入力パターンに似たパターンが入力されると、欠落していた情報を補うように完全な記憶パターンが出力される。
【０１３５】
図１１に示す例では、８チャンネルからなる記憶パターンのうち上位の３チャンネルしかＩＤが与えられていないパターンがキー・パターンとして入力される。このような場合、連想記憶システムでは、既に貯えられている記憶パターンの中で、これら上位の３チャンネルが最も近いパターン（図示の例では記憶パターン１）を見つけ出して、想起されたパターンとして出力することができる。すなわち、欠落していたチャンネル４〜８の情報を補うように、最も近い記憶パターンが出力される。
【０１３６】
したがって、連想記憶システムによれば、顔のＩＤのみから音声ＩＤ、つまり名前を連想したり、食べ物の名前だけから、“おいしい”や“おいしくない”などを想起することができる。競合型ニューラル・ネットワークによる長期記憶アーキテクチャによれば、言葉の意味や常識などに関する意味記憶を、他の長期記憶と同じ工学モデルで実現することができる。
【０１３７】
Ｃ−３．競合型ニューラル・ネットワークによる連想学習
図１２には、競合型ニューラル・ネットワークを適用した連想記憶システムの構成例を模式的に示している。同図に示すように、この競合型ニューラル・ネットワークは、入力層（ｉｎｐｕｔ  ｌａｙｅｒ）と競合層（ｃｏｍｐｅｔｉｔｉｖｅ  ｌａｙｅｒ）の２層からなる階層型ニューラル・ネットワークである。
【０１３８】
この競合型ニューラル・ネットワークは、記憶モードと連想モードという２通りの動作モードを備えており、記憶モードでは入力パターンを競合的に記憶し、また、想起モードでは部分的に欠損した入力パターンから完全な記憶パターンを想起する。
【０１３９】
入力層は、複数の入力ニューロンで構成される。各入力ニューロンには、外部刺激や内部状態を表す各要素に対して割り当てられたチャンネルから、外部刺激や内部状態の認識結果に相当するシンボルすなわちＩＤ情報が入力される。入力層では、色ＩＤの個数＋形ＩＤの個数＋音声ＩＤの個数＋本能の種類…に相当する個数のニューロンを用意する必要がある。
【０１４０】
また、競合層は、複数の競合ニューロンで構成される。各競合ニューロンは、入力層側の各入力ニューロンとは、ある結合重みを持って結合されている。競合ニューロンは、それぞれのニューロンが記憶すべき１つのシンボルに相当する。言い換えれば、競合ニューロンの数は記憶可能なシンボルの個数に相当する。
【０１４１】
ある入力パターンが入力層に与えられたとする。このとき、入力パターンは外部刺激や内部状態の各要素を表すチャンネルで構成されており、チャンネルから該当するＩＤが送られてきた入力ニューロンは発火する。
【０１４２】
競合ニューロンは、各入力ニューロンからの出力をシナプスによる重み付けをして入力して、それら入力値の総和を計算する。そして、競合層で入力値の総和が最大となる競合ニューロンを選択して、勝ち抜いた競合ニューロンと入力ニューロンとの結合力を強めていくことで、学習を行なう。また、欠損のある入力パターンに対して、競合層で勝ち抜いた競合ニューロンを選択することにより、入力パターンに対応するシンボルを想起することができる。
【０１４３】
記憶モード：
入力層と競合層の結合重みは、０から１の間の値をとるものとする。但し、初期結合重みはランダムに決定する。
【０１４４】
競合型ニューラル・ネットワークにおける記憶は、まず、記憶したい入力パターンに対して競合層で勝ち抜いた競合ニューロンを選択して、その競合ニューロンと各入力ニューロンとの結合力を強めることで行なう。
【０１４５】
ここで、入力パターン・ベクトル［ｘ１，ｘ２，…，ｘｎ］は、ニューロンが、色プロトタイプＩＤ１に対応し、ＩＤ１が認識されたら、ニューロンｘ１を発火させ、順次、形、音声もそのように発火させることとする。発火したニューロンは１の値をとり、発火しないニューロンは−１の値をとる。
【０１４６】
また、ｉ番目の入力ニューロンとｊ番目の競合ニューロンとの結合力をｗｉｊとおくと、入力ｘｉに対する競合ニューロンｙｊの値は、下式のように表される。
【０１４７】
【数１】
0003558222.tif 000002
【０１４８】
したがって、競合に勝ち抜くニューロンは、下式により求めることができる。
【０１４９】
【数２】
0003558222.tif 000003
【０１５０】
記憶は、競合層で勝ち抜いた競合ニューロン（ｗｉｎｎｅｒ  ｎｅｕｒｏｎ）と各入力ニューロンとの結合力を強めることで行なう。勝ち抜いたニューロン（ｗｉｎｎｅｒ  ｎｅｕｒｏｎ）と入力ニューロンとの結合の更新は、Ｋｏｈｏｎｅｎの更新規則により、以下のように行なわれる。
【０１５１】
【数３】
0003558222.tif 000004
【０１５２】
ここで、Ｌ２Ｎｏｒｍで正規化する。
【０１５３】
【数４】
0003558222.tif 000005
【０１５４】
この結合力がいわゆる記憶の強さを表し、記憶力になる。ここで、学習率αは、提示する回数と記憶の関係を表すパラメータである。学習率αが大きいほど、１回の記憶で重みを大きく変更する。例えば、α＝０．５を用いると、一度記憶させれば、忘却することはなく、次回同じようなパターンを提示すれば、ほぼ間違いなく記憶したパターンを連想することができる。
【０１５５】
また、提示して記憶させればさせるほど、ネットワークの結合値（重み）が大きくなっていく。これは、同じパターンが何度も入力されるうちに、記憶が強くなることを示し、統計的な学習が可能であり、実環境下におけるノイズの影響の少ない長期記憶を実現することができる。
【０１５６】
また、新たなパターンが入力され、記憶しようとすれば、新たな競合層のニューロンが発火するため、その新しいニューロンとの結合が強まり、以前の記憶によるニューロンとの結合が弱まる訳ではない。言い換えれば、競合型ニューラル・ネットワークによる連想記憶では、追加学習が可能なのであり、「忘却」の問題から解放される。
【０１５７】
想起モード：
いま、以下に示すような入力パターン・ベクトルが図１２に示す連想記憶システムに提示されたとする。入力パターンは、完全なものではなく一部が欠損していてもよい。
【０１５８】
【数５】
0003558222.tif 000006
【０１５９】
このとき、入力ベクトルは、プロトタイプＩＤであっても、あるいはそのプロトタイプＩＤに対する尤度、確率であってもよい。出力ニューロンｙｊの値は、入力ｘｉについて下式のように計算される。
【０１６０】
【数６】
0003558222.tif 000007
【０１６１】
上式は、各チャンネルの尤度に応じた競合ニューロンの発火値の尤度を表しているとも言える。ここで重要なことは、複数のチャンネルからの尤度入力に対して、それらをコネクションして全体的な尤度を求めることが可能である、という点である。本実施形態では、連想するものは唯一すなわち尤度が最大のものだけを選択することとし、競合に勝ち抜くニューロンを下式により求めることができる。
【０１６２】
【数７】
0003558222.tif 000008
【０１６３】
求めた競合ニューロンＹの番号が記憶したシンボルの番号に対応するので、下式のように、Ｗの逆行列演算により入力パターンＸを想起することができる。
【０１６４】
【数８】
0003558222.tif 000009
【０１６５】
さらに図１２に示す競合型ニューラル・ネットワークの入力層ニューロンにエピソードや動作ＩＤなどのシンボルを割り当てることにより、宣言的知識記憶や手続的知識記憶を連想記憶アーキテキチャにより実現することができる。
【０１６６】
Ｄ．状況依存行動制御
状況依存行動階層（ＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒ）１０８は、短期記憶部１０５並びに長期記憶部１０６の記憶内容や、内部状態管理部１０４によって管理される内部状態を基に、ロボット装置１が現在置かれている状況に即応した行動を制御する。また、状況依存行動階層１０８の一部として、認識された外部刺激に応じて反射的・直接的な機体動作を実行する反射行動部１０９を含んでいる。
【０１６７】
Ｄ−１．状況依存行動階層の構成
本実施形態では、状況依存行動階層１０８は、各行動モジュール毎にステートマシンを用意しており、それ以前の行動や状況に依存して、センサ入力された外部情報の認識結果を分類して、行動を機体上で発現する。行動モジュールは、外部刺激や内部状態の変化に応じた状況判断を行なうｍｏｎｉｔｏｒ機能と、行動実行に伴う状態遷移（ステートマシン）を実現するａｃｔｉｏｎ機能とを備えたスキーマ（ｓｃｈｅｍａ）として記述される。状況依存行動階層１０８は、複数のスキーマが階層的に連結された木構造として構成されている（後述）。
【０１６８】
また、状況依存行動階層１０８は、内部状態をある範囲に保つための行動（「ホメオスタシス行動」とも呼ぶ）も実現し、内部状態が指定した範囲内を越えた場合には、その内部状態を当該範囲内に戻すための行動が出易くなるようにその行動を活性化させる（実際には、内部状態と外部環境の両方を考慮した形で行動が選択される）。
【０１６９】
図３に示したようなロボット１の行動制御システム１００における各機能モジュールは、オブジェクトとして構成される。各オブジェクトは、メッセージ通信と共有メモリを使ったオブジェクト間通信方法によりデータの受け渡しとＩｎｖｏｋｅを行なうことができる。図１３には、本実施形態に係る行動制御システム１００のオブジェクト構成を模式的に示している。
【０１７０】
視覚認識機能部１０１は、”ＦａｃｅＤｅｔｅｃｔｏｒ”、”ＭｕｌｉｔＣｏｌｏｔＴｒａｃｋｅｒ”、”ＦａｃｅＩｄｅｎｔｉｆｙ”という３つのオブジェクトで構成される。
【０１７１】
ＦａｃｅＤｅｔｅｃｔｏｒは、画像フレーム中から顔領域を検出するオブジェクトであり、検出結果をＦａｃｅＩｄｅｎｔｉｆｙに出力する。ＭｕｌｉｔＣｏｌｏｔＴｒａｃｋｅｒは、色認識を行なうオブジェクトであり、認識結果をＦａｃｅＩｄｅｎｔｉｆｙ及びＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙ（短期記憶ブ１０５を構成するオブジェクト）に出力する。また、ＦａｃｅＩｄｅｎｔｉｆｙは、検出された顔画像を手持ちの人物辞書で検索するなどして人物の識別を行ない、顔画像領域の位置、大きさ情報とともに人物のＩＤ情報をＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙに出力する。
【０１７２】
聴覚認識機能部１０２は、”ＡｕｄｉｏＲｅｃｏｇ”と”ＳｐｅｅｃｈＲｅｃｏｇ”という２つのオブジェクトで構成される。ＡｕｄｉｏＲｅｃｏｇは、マイクなどの音声入力装置からの音声データを受け取って、特徴抽出と音声区間検出を行なうオブジェクトであり、音声区間の音声データの特徴量及び音源方向をＳｐｅｅｃｈＲｅｃｏｇやＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙに出力する。ＳｐｅｅｃｈＲｅｃｏｇは、ＡｕｄｉｏＲｅｃｏｇから受け取った音声特徴量と音声辞書及び構文辞書を使って音声認識を行なうオブジェクトであり、認識された単語のセットをＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙに出力する。
【０１７３】
触覚認識記憶部１０３は、接触センサからのセンサ入力を認識する”ＴａｃｔｉｌｅＳｅｎｓｏｒ”というオブジェクトで構成され、認識結果はＳＨｏｒｔＴｅｒｍＭｅｍｏｒｙや内部状態を管理するオブジェクトであるＩｎｔｅｒｎａｌＳｔａｔｅＭｏｄｅｌ（ＩＳＭ）に出力する。
【０１７４】
ＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙ（ＳＴＭ）は、短期記憶部１０５を構成するオブジェクトであり、上述の認識系の各オブジェクトによって外部環境から認識されたターゲットやイベントを短期間保持（例えばカメラ１５からの入力画像を約１５秒程度の短い期間だけ記憶する）する機能モジュールであり、ＳＴＭクライアントであるＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒに対して外部刺激の通知（Ｎｏｔｉｆｙ）を定期的に行なう。
【０１７５】
ＬｏｎｇＴｅｒｍＭｅｍｏｒｙ（ＬＴＭ）は、長期記憶部１０６を構成するオブジェクトであり、物の名前など学習により得られた情報を長期間保持するために使用される。ＬｏｎｇＴｅｒｍＭｅｍｏｒｙは、例えば、ある行動モジュールにおいて外部刺激から内部状態の変化を連想記憶することができる。
【０１７６】
ＩｎｔｅｒｎａｌＳｔａｔｕｓＭａｎａｇｅｒ（ＩＳＭ）は、内部状態管理部１０４を構成するオブジェクトであり、本能や感情といった数種類の情動を数式モデル化して管理しており、上述の認識系の各オブジェクトによって認識された外部刺激（ＥＳ：ＥｘｔｅｒｎａｌＳｔｉｍｕｌａ）に応じてロボット装置１の本能や情動といった内部状態を管理する。
【０１７７】
ＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓｌａｙｅｒ（ＳＢＬ）は状況依存型行動階層１０８を構成するオブジェクトである。ＳＢＬは、ＳｈｏｒＴｅｒｍＭｅｍｏｒｙのクライアント（ＳＴＭクライアント）となるオブジェクトであり、ＳｈｏｒＴｅｒｍＭｅｍｏｒｙからは定期的に外部刺激（ターゲットやイベント）に関する情報の通知（Ｎｏｔｉｆｙ）を受け取ると、スキーマ（ｓｃｈｅｍａ）すなわち実行すべき行動モジュールを決定する（後述）。
【０１７８】
ＲｅｆｌｅｘｉｖｅＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒは、反射的行動部１０９を構成するオブジェクトであり、上述した認識系の各オブジェクトによって認識された外部刺激に応じて反射的・直接的な機体動作を実行する。例えば、人間の顔を追いかけたり、うなずく、障害物の検出により咄嗟に避けるといった振る舞いを行なう（後述）。
【０１７９】
ＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓｌａｙｅｒは外部刺激や内部状態の変化などの状況に応じて行動を選択する。これに対し、ＲｅｆｌｅｘｉｖｅＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒは、外部刺激に応じて反射的を行動する。これら２つのオブジェクトによる行動選択は独立して行なわれるため、互いに選択された行動モジュール（スキーマ）を機体上で実行する場合に、ロボット１のハードウェア・リソースが競合して実現不可能なこともある。Ｒｅｓｏｕｒｃｅｍａｎａｇｅｒというオブジェクトは、ＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓｌａｙｅｒとＲｅｆｌｅｘｉｖｅＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒによる行動選択時のハードウェアの競合を調停する。そして、調停結果に基づいて機体動作を実現する各オブジェクトに通知することにより機体が駆動する。
【０１８０】
ＳｏｕｎｄＰｅｒｆｏｒｍｅｒ、ＭｏｔｉｏｎＣｏｎｔｒｏｌｌｅｒ、ＬｅｄＣｏｎｔｒｏｌｌｅｒは、機体動作を実現するオブジェクトである。ＳｏｕｎｄＰｅｒｆｏｒｍｅｒは、音声出力を行なうためのオブジェクトであり、ＲｅｓｏｕｒｃｅＭａｎａｇｅｒ経由でＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒＬａｙｅｒから与えられたテキスト・コマンドに応じて音声合成を行ない、ロボット１の機体上のスピーカから音声出力を行なう。また、ＭｏｔｉｏｎＣｏｎｔｒｏｌｌｅｒは、機体上の各関節アクチュエータの動作を行なうためのオブジェクトであり、ＲｅｓｏｕｒｃｅＭａｎａｇｅｒ経由でＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒＬａｙｅｒから手や脚などを動かすコマンドを受けたことに応答して、該当する関節角を計算する。また、ＬｅｄＣｏｎｔｒｏｌｌｅｒは、ＬＥＤ１９の点滅動作を行なうためのオブジェクトであり、ＲｅｓｏｕｒｃｅＭａｎａｇｅｒ経由でＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒＬａｙｅｒからコマンドを受けたことに応答してＬＥＤ１９の点滅駆動を行なう。
【０１８１】
図１４には、状況依存行動階層（ＳＢＬ）１０８（但し、反射行動部１０９を含む）による状況依存行動制御の形態を模式的に示している。認識系１０１〜１０３による外部環境の認識結果は、外部刺激として状況依存行動階層１０８（反射行動部１０９を含む）に与えられる。また、認識系による外部環境の認識結果に応じた内部状態の変化も状況依存行動階層１０８に与えられる。そして、状況依存行動階層１０８では、外部刺激や内部状態の変化に応じて状況を判断して、行動選択を実現することができる。
【０１８２】
図１５には、図１４に示した状況依存行動階層１０８による行動制御の基本的な動作例を示している。同図に示すように、状況依存行動階層１０８（ＳＢＬ）では、外部刺激や内部状態の変化によって各行動モジュール（スキーマ）の活動度レベルを算出して、活動度レベルの度合いに応じてスキーマを選択して行動を実行する。活動度レベルの算出には、例えばライブラリを利用することにより、すべてのスキーマについて統一的な計算処理を行なうことができる（以下、同様）。例えば、活動度レベルが最も高いスキーマを選択したり、所定の閾値を越えた２以上のスキーマを選択して並列的に行動実行するようにしてもよい（但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする）。
【０１８３】
また、図１６には、図１４に示した状況依存行動階層１０８により反射行動を行なう場合の動作例を示している。この場合、同図に示すように、状況依存行動階層１０８に含まれる反射行動部１０９（ＲｅｆｌｅｘｉｖｅＳＢＬ）は、認識系の各オブジェクトによって認識された外部刺激を直接入力として活動度レベルを算出して、活動度レベルの度合いに応じてスキーマを選択して行動を実行する。この場合、内部状態の変化は、活動度レベルの計算には使用されない。
【０１８４】
また、図１７には、図１４に示した状況依存行動階層１０８により感情表現を行なう場合の動作例を示している。内部状態管理部１０４では、本能や感情などの情動を数式モデルとして管理しており、情動パラメータの状態値が所定値に達したことに応答して、状況依存行動階層１０８に内部状態の変化を通知（Ｎｏｔｉｆｙ）する。状況依存行動階層１０８は、内部状態の変化を入力として活動度レベルを算出して、活動度レベルの度合いに応じてスキーマを選択して行動を実行する。この場合、認識系の各オブジェクトによって認識された外部刺激は、内部状態管理部１０４（ＩＳＭ）における内部状態の管理・更新に利用されるが、スキーマの活動度レベルの算出には使用されない。
【０１８５】
Ｄ−２．スキーマ
状況依存行動階層１０８は、各行動モジュール毎にステートマシンを用意しており、それ以前の行動や状況に依存して、センサ入力された外部情報の認識結果を分類して、行動を機体上で発現する。行動モジュールは、機体動作を記述し行動実行に伴う状態遷移（ステートマシン）を実現するＡｃｔｉｏｎ機能と、Ａｃｔｉｏｎ機能において記述された行動の実行を外部刺激や内部状態に応じて評価して状況判断を行なうＭｏｎｉｔｏｒ機能とを備えたスキーマ（ｓｃｈｅｍａ）として記述される。図１８には、状況依存行動階層１０８が複数のスキーマによって構成されている様子を模式的に示している。
【０１８６】
状況依存行動階層１０８（より厳密には、状況依存行動階層１０８のうち、通常の状況依存行動を制御する階層）は、複数のスキーマが階層的に連結されたツリー構造として構成され、外部刺激や内部状態の変化に応じてより最適なスキーマを統合的に判断して行動制御を行なうようになっている。ツリーは、例えば動物行動学的（Ｅｔｈｏｌｏｇｉｃａｌ）な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリーなど、複数のサブツリー（又は枝）を含んでいる。
【０１８７】
図１９には、状況依存行動階層１０８におけるスキーマのツリー構造を模式的に示している。同図に示すように、状況依存行動階層１０８は、短期記憶部１０５から外部刺激の通知（Ｎｏｔｉｆｙ）を受けるルート・スキーマを先頭に、抽象的な行動カテゴリから具体的な行動カテゴリに向かうように、各階層毎にスキーマが配設されている。例えば、ルート・スキーマの直近下位の階層では、「探索する（Ｉｎｖｅｓｔｉｇａｔｅ）」、「食べる（Ｉｎｇｅｓｔｉｖｅ）」、「遊ぶ（Ｐｌａｙ）」というスキーマが配設される。そして、「探索する（Ｉｎｖｅｓｔｉｇａｔｅ）」の下位には、「ＩｎｖｅｓｔｉｇａｔｉｖｅＬｏｃｏｍｏｔｉｏｎ」、「ＨｅａｄｉｎＡｉｒＳｎｉｆｆｉｎｇ」、「ＩｎｖｅｓｔｉｇａｔｉｖｅＳｎｉｆｆｉｎｇ」というより具体的な探索行動を記述したスキーマが配設されている。同様に、スキーマ「食べる（Ｉｎｇｅｓｔｉｖｅ）」の下位には「Ｅａｔ」や「Ｄｒｉｎｋ」などのより具体的な飲食行動を記述したスキーマが配設され、スキーマ「遊ぶ（Ｐｌａｙ）」の下位には「ＰｌａｙＢｏｗｉｎｇ」、「ＰｌａｙＧｒｅｅｔｉｎｇ」、「ＰｌａｙＰａｗｉｎｇ」などのより具体的な遊ぶ行動を記述したスキーマが配設されている。
【０１８８】
図示の通り、各スキーマは外部刺激と内部状態を入力している。また、各スキーマは、少なくともＭｏｎｉｔｏｒ関数とＡｃｔｉｏｎ関数を備えている。
【０１８９】
図２０には、スキーマの内部構成を模式的に示している。同図に示すように、スキーマは、状態遷移（ステートマシン）の形式で機体動作を記述したＡｃｔｉｏｎ関数と、外部刺激や内部状態に応じてＡｃｔｉｏｎ関数の各状態を評価して活動度レベル値として返すＭｏｎｉｔｏｒ関数と、Ａｃｔｉｏｎ関数のステートマシンをＲＥＡＤＹ（準備完了）、ＡＣＴＩＶＥ（活動中），ＳＬＥＥＰ（待機中）いずれかの状態としてスキーマの状態を記憶管理する状態管理部で構成されている。
【０１９０】
Ｍｏｎｉｔｏｒ関数は、外部刺激と内部状態に応じて当該スキーマの活動度レベル（Ａｃｔｉｖａｔｉｏｎ  Ｌｅｖｅｌ：ＡＬ値）を算出する関数である。図１９に示すようなツリー構造を構成する場合、上位（親）のスキーマは外部刺激と内部状態を引数として下位（子供）のスキーマのＭｏｎｉｔｏｒ関数をコールすることができ、子供のスキーマはＡＬ値を返り値とする。また、スキーマは自分のＡＬ値を算出するために、さらに子供のスキーマのＭｏｎｉｔｏｒ関数をコールすることができる。そして、ルートのスキーマには各サブツリーからのＡＬ値が返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断することができる。
【０１９１】
例えばＡＬ値が最も高いスキーマを選択したり、ＡＬ値が所定の閾値を越えた２以上のスキーマを選択して並列的に行動実行するようにしてもよい（但し、並列実行するときは各スキーマ同士でハードウェア・リソースの競合がないことを前提とする）。
【０１９２】
図２１には、Ｍｏｎｉｔｏｒ関数の内部構成を模式的に示している。同図に示すように、Ｍｏｎｉｔｏｒ関数は、当該スキーマで記述されている行動を誘発する評価値を活動度レベルとして算出する行動誘発評価値演算器と、使用する機体リソースを特定する使用リソース演算器を備えている。図２０で示す例では、Ｍｏｎｉｔｏｒ関数は、スキーマすなわち行動モジュールの管理を行なう行動状態制御部（仮称）からコールされると、Ａｃｔｉｏｎ関数のステートマシンを仮想実行して、行動誘発評価値（すなわち活動度レベル）と使用リソースを演算して、これを返すようになっている。
【０１９３】
また、Ａｃｔｉｏｎ関数は、スキーマ自身が持つ行動を記述したステートマシン（後述）を備えている。図１９に示すようなツリー構造を構成する場合、親スキーマは、Ａｃｔｉｏｎ関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。本実施形態では、ＡｃｔｉｏｎのステートマシンはＲｅａｄｙにならないと初期化されない。言い換えれば、中断しても状態はリセットされず、スキーマが実行中の作業データを保存することから、中断再実行が可能である（後述）。
【０１９４】
図２０で示す例では、スキーマすなわち行動モジュールの管理を行なう行動状態制御部（仮称）は、Ｍｏｎｉｔｏｒ関数からの戻り値に基づいて、実行すべき行動を選択し、該当するスキーマのＡｃｔｉｏｎ関数をコールし、あるいは状態管理部に記憶されているスキーマの状態の移行を指示する。例えば行動誘発評価値としての活動度レベルが最も高いスキーマを選択したり、リソースが競合しないように優先順位に従って複数のスキーマを選択したりする。また、行動状態制御部は、より優先順位の高いスキーマが起動し、リソースの競合が生じた場合、優先順位が下位のスキーマの状態をＡＣＴＩＶＥからＳＬＥＥＰに退避させ、競合状態が解かれるとＡＣＴＩＶＥに回復するなど、スキーマの状態を制御する。
【０１９５】
行動状態制御部は、図２２に示すように、状況依存行動階層１０８において１つだけ配設して、同階層１０８を構成するすべてのスキーマを一元的に集中管理するようにしてもよい。
【０１９６】
図示の例では、行動状態制御部は、行動評価部と、行動選択部と、行動実行部を備えている。行動評価部は、例えば所定の制御周期で各スキーマのＭｏｎｉｔｏｒ関数をコールして、各々の活動度レベルと使用リソースを取得する。行動選択部は、各スキーマによる行動制御と機体リソースの管理を行なう。例えば、集計された活動度レベルの高い順にスキーマを選択するとともに、使用リソースが競合しないように２以上のスキーマを同時に選択する。行動実行部は、選択されたスキーマのＡｃｔｉｏｎ関数に行動実行命令を発行したり、スキーマの状態（ＲＥＡＤＹ、ＡＣＴＩＶＥ，ＳＬＥＥＰ）を管理して、スキーマの実行を制御する。例えば、より優先順位の高いスキーマが起動し、リソースの競合が生じた場合、優先順位が下位のスキーマの状態をＡＣＴＩＶＥからＳＬＥＥＰに退避させ、競合状態が解かれるとＡＣＴＩＶＥに回復する。
【０１９７】
あるいは、このような行動状態制御部の機能を、状況依存行動階層１０８内の各スキーマ毎に配置するようにしてもよい。例えば、図１９に示したように，スキーマがツリー構造を形成している場合（図２３を参照のこと）、上位（親）のスキーマの行動状態制御は、外部刺激と内部状態を引数として下位（子供）のスキーマのＭｏｎｉｔｏｒ関数をコールし、子供のスキーマから活動度レベルと使用リソースを返り値として受け取る。また、子供のスキーマは、自分の活動度レベルと使用リソースを算出するために、さらに子供のスキーマのＭｏｎｉｔｏｒ関数をコールする。そして、ルートのスキーマの行動状態制御部には、各サブツリーからの活動度レベルと使用リソースが返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断して、Ａｃｔｉｏｎ関数をコールして、子供スキーマの実行を開始したり中断させたりする。
【０１９８】
図２４には、状況依存行動階層１０８において通常の状況依存行動を制御するためのメカニズムを模式的に示している。
【０１９９】
同図に示すように、状況依存行動階層１０８には、短期記憶部１０５から外部刺激が入力（Ｎｏｔｉｆｙ）されるとともに、内部状態管理部１０９から内部状態の変化が入力される。状況依存行動階層１０８は、例えば動物行動学的（Ｅｔｈｏｌｏｇｉｃａｌ）な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリーなど、複数のサブツリーで構成されており、ルート・スキーマは、外部刺激の通知（Ｎｏｔｉｆｙ）に応答して、各サブツリーのｍｏｎｉｔｏｒ関数をコールし、その返り値としての活動度レベル（ＡＬ値）を参照して、統合的な行動選択を行ない、選択された行動を実現するサブツリーに対してａｃｔｉｏｎ関数をコールする。また、状況依存行動階層１０８において決定された状況依存行動は、リソース・マネージャにより反射行動部１０９による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作（ＭｏｔｉｏｎＣｏｎｔｒｏｌｌｅｒ）に適用される。
【０２００】
また、状況依存行動層１０８のうち、反射的行動部１０９は、上述した認識系の各オブジェクトによって認識された外部刺激に応じて反射的・直接的な機体動作を実行する（例えば、障害物の検出により咄嗟に避ける）。このため、通常の状況依存行動を制御する場合（図１９）とは相違し、認識系の各オブジェクトからの信号を直接入力する複数のスキーマが、階層化されずに並列的に配置されている。
【０２０１】
図２５には、反射行動部１０９におけるスキーマの構成を模式的に示している。同図に示すように、反射行動部１０９には、聴覚系の認識結果に応答して動作するスキーマとして「ＡｖｏｉｄＢｉｇＳｏｕｎｄ」、「ＦａｃｅｔｏＢｉｇＳｏｕｎｄ」及び「ＮｏｄｄｉｎｇＳｏｕｎｄ」、視覚系の認識結果に応答して動作するスキーマとして「ＦａｃｅｔｏＭｏｖｉｎｇＯｂｊｅｃｔ」及び「ＡｖｏｉｄＭｏｖｉｎｇＯｂｊｅｃｔ」、並びに、触覚系の認識結果に応答して動作するスキーマとして「手を引っ込める」が、それぞれ対等な立場で（並列的に）配設されている。
【０２０２】
図示の通り、反射的行動を行なう各スキーマは外部刺激を入力に持つ。また、各スキーマは、少なくともｍｏｎｉｔｏｒ関数とａｃｔｉｏｎ関数を備えている。ｍｏｎｉｔｏｒ関数は、外部刺激に応じて当該スキーマのＡＬ値を算出して、これに応じて該当する反射的行動を発現すべきかどうかが判断される。また、ａｃｔｉｏｎ関数は、スキーマ自身が持つ反射的行動を記述したステートマシン（後述）を備えており、コールされることにより、該当する反射的行動を発現するとともにａｃｔｉｏｎの状態を遷移させていく。
【０２０３】
図２６には、反射行動部１０９において反射的行動を制御するためのメカニズムを模式的に示している。
【０２０４】
図２５にも示したように、反射行動部１０９内には、反応行動を記述したスキーマや、即時的な応答行動を記述したスキーマが並列的に存在している。認識系のオブジェクトから認識結果が入力されると、対応する反射行動スキーマがｍｏｎｉｔｏｒ関数によりＡＬ値を算出し、その値に応じてａｃｔｉｏｎを軌道すべきかどうかが判断される。そして、反射行動部１０９において起動が決定された反射的行動は、リソース・マネージャにより反射行動部１０９による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作（ＭｏｔｉｏｎＣｏｎｔｒｏｌｌｅｒ）に適用される。
【０２０５】
状況依存行動階層１０８（反射行動部１０９を含む）を構成するスキーマは、例えばＣ＋＋言語ベースで記述される「クラス・オブジェクト」として記述することができる。図２７には、状況依存行動階層１０８において使用されるスキーマのクラス定義を模式的に示している。同図に示されている各ブロックはそれぞれ１つのクラス・オブジェクトに相当する。
【０２０６】
図示の通り、状況依存行動階層（ＳＢＬ）１０８は、１以上のスキーマと、ＳＢＬの入出力イベントに対してＩＤを割り振るＥｖｅｎｔＤａｔａＨａｎｄｌｅｒ（ＥＤＨ）と、ＳＢＬ内のスキーマを管理するＳｃｈｅｍａＨａｎｄｌｅｒ（ＳＨ）と、外部オブジェクト（ＳＴＭやＬＴＭ、リソース・マネージャ、認識系の各オブジェクトなど）からデータを受信する１以上のＲｅｃｅｉｖｅＤａｔａＨａｎｄｌｅｒ（ＲＤＨ）と、外部オブジェクトにデータを送信する１以上のＳｅｎｄＤａｔａＨａｎｄｌｅｒ（ＳＤＨ）とを備えている。
【０２０７】
ＥｖｅｎｔＤａｔａＨａｎｄｌｅｒ（ＥＤＨ）は、ＳＢＬの入出力イベントに対してＩＤを割り振るためのクラス・オブジェクトであり、ＲＤＨやＳＤＨから入出力イベントの通知を受ける。
【０２０８】
ＳｃｈｅｍａＨａｎｄｌｅｒは、状況依存行動階層（ＳＢＬ）１０８や反射行動部１０９を構成する各スキーマやツリー構造などの情報（ＳＢＬのコンフィギュレーション情報）をファイルとして保管している。例えばシステムの起動時などに、ＳｃｈｅｍａＨａｎｄｌｅｒは、このコンフィギュレーション情報ファイルを読み込んで、図１９に示したような状況依存行動階層１０８のスキーマ構成を構築（再現）して、メモリ空間上に各スキーマのエンティティをマッピングする。
【０２０９】
各スキーマは、スキーマのベースとして位置付けられるＯｐｅｎＲ＿Ｇｕｅｓｔを備えている。ＯｐｅｎＲ＿Ｇｕｅｓｔは、スキーマが外部にデータを送信するためのＤｓｕｂｊｅｃｔ、並びに、スキーマが外部からデータを受信するためのＤＯｂｊｅｃｔというクラス・オブジェクトをそれぞれ１以上備えている。例えば、スキーマが、ＳＢＬの外部オブジェクト（ＳＴＭやＬＴＭ、認識系の各オブジェクトなど）にデータを送るときには、ＤｓｕｂｊｅｃｔはＳｅｎｄＤａｔａＨａｎｄｌｅｒに送信データを書き込む。また、ＤＯｂｊｅｃｔは、ＳＢＬの外部オブジェクトから受信したデータをＲｅｃｅｉｖｅＤａｔａＨａｎｄｌｅｒから読み取ることができる。
【０２１０】
ＳｃｈｅｍａＭａｎａｇｅｒ及びＳｃｈｅｍａＢａｓｅは、ともにＯｐｅｎＲ＿Ｇｕｅｓｔを継承したクラス・オブジェクトである。クラス継承は、元のクラスの定義を受け継ぐことであり、この場合、ＯｐｅｎＲ＿Ｇｕｅｓｔで定義されているＤｓｕｂｊｅｃｔやＤＯｂｊｅｃｔなどのクラスオブジェクトをＳｃｈｅｍａＭａｎａｇｅｒやＳｃｈｅｍａＢａｓｅも備えていることを意味する（以下、同様）。例えば図１９に示すように複数のスキーマがツリー構造になっている場合、ＳｃｈｅｍａＭａｎａｇｅｒは、子供のスキーマのリストを管理するクラス・オブジェクトＳｃｈｅｍａＬｉｓｔを持ち（子供のスキーマへのポインタを持ち）、子供スキーマの関数をコールすることができる。また、ＳｃｈｅｍａＢａｓｅは、親スキーマへのポインタを持ち、親スキーマからコールされた関数の返り値を戻すことができる。
【０２１１】
ＳｃｈｅｍａＢａｓｅは、ＳｔａｔｅＭａｃｈｉｎｅ及びＰｒｏｎｏｍｅという２つのクラス・オブジェクトを持つ。ＳｔａｔｅＭａｃｈｉｎｅは当該スキーマの行動（Ａｃｔｉｏｎ関数）についてのステートマシンを管理している。図２８には、スキーマの行動（Ａｃｔｉｏｎ関数）についてのステートマシンを図解している。このステートマシンの状態間の遷移にそれぞれ行動（Ａｃｔｉｏｎ）が紐付けされている
【０２１２】
親スキーマは子供スキーマのＡｃｔｉｏｎ関数のステートマシンを切り替える（状態遷移させる）ことができる。また、Ｐｒｏｎｏｍｅには、当該スキーマが行動（Ａｃｔｉｏｎ関数）を実行又は適用するターゲットを代入する。後述するように、スキーマはＰｒｏｎｏｍｅに代入されたターゲットによって占有され、行動が終了（完結、異常終了など）するまでスキーマは解放されない。新規のターゲットのために同じ行動を実行するためには同じクラス定義のスキーマをメモリ空間上に生成する。この結果、同じスキーマをターゲット毎に独立して実行することができ（個々のスキーマの作業データが干渉し合うことはなく）、行動のＲｅｅｎｔｒａｎｃｅ性（後述）が確保される。
【０２１３】
ＰａｒｅｎｔＳｃｈｅｍａＢａｓｅは、ＳｃｈｅｍａＭａｎａｇｅｒ及びＳｃｈｅｍａＢａｓｅを多重継承するクラス・オブジェクトであり、スキーマのツリー構造において、当該スキーマ自身についての親スキーマ及び子供スキーマすなわち親子関係を管理する。
【０２１４】
ＩｎｔｅｒｍｅｄｉａＰａｒｅｎｔＳｃｈｅｍａＢａｓｅは、ＰａｒｅｎｔＳｃｈｅｍａＢａｓｅを継承するクラス・オブジェクトであり、各クラスのためのインターフェース変換を実現する。また、ＩｎｔｅｒｍｅｄｉａＰａｒｅｎｔＳｃｈｅｍａＢａｓｅは、ＳｃｈｅｍａＳｔａｔｕｓＩｎｆｏを持つ。このＳｃｈｅｍａＳｔａｔｕｓＩｎｆｏは、当該スキーマ自身のステートマシンを管理するクラス・オブジェクトである。
【０２１５】
親スキーマは、子供スキーマのＡｃｔｉｏｎ関数をコールすることによってそのステートマシンの状態を切り換えることができる。また、子供スキーマのＡｏｎｉｔｏｒ関数をコールしてそのステートマシンの状態に応じたＡＬ値を問うことができる。但し、スキーマのステートマシンは、前述したＡｃｔｉｏｎ関数のステートマシンとは異なるということを留意されたい。
【０２１６】
図２９には、スキーマ自身すなわちＡｃｔｉｏｎ関数によって記述されている行動についてのステートマシンを図解している。既に述べたように、スキーマ自身のステートマシンは、Ａｃｔｉｏｎ関数に寄って記述されている行動について、ＲＥＡＤＹ（準備完了）、ＡＣＴＩＶＥ（活動中），ＳＬＥＥＰ（待機中）という３つの状態を規定している。より優先順位の高いスキーマが起動し、リソースの競合が生じた場合、優先順位が下位のスキーマの状態をＡＣＴＩＶＥからＳＬＥＥＰに退避させ、競合状態が解かれるとＡＣＴＩＶＥに回復する。
【０２１７】
図２９に示すように、ＡＣＴＩＶＥからＳＬＥＥＰへの状態遷移にＡＣＴＩＶＥ＿ＴＯ＿ＳＬＥＥＰが、ＳＬＥＥＰからＡＣＴＩＶＥへの状態遷移にＳＬＥＥＰ＿ＴＯ＿ＡＣＴＩＶＥがそれぞれ規定されている。本実施形態において特徴的なのは、
（１）ＡＣＴＩＶＥ＿ＴＯ＿ＳＬＥＥＰに、後にＡＣＴＩＶＥに遷移して再開するために必要なデータ（コンテキスト）を保存するための処理と、ＳＬＥＥＰするために必要な行動が紐付けされている。
（２）ＳＬＥＥＰ＿ＴＯ＿ＡＣＴＩＶＥに、保存しておいたデータ（コンテキスト）を復元するための処理と、ＡＣＴＩＶＥに戻るために必要な行動が紐付けされている。
という点である。ＳＬＥＥＰするために必要な行動とは、例えば、話し相手に休止を告げる「ちょっと待っててね」などのセリフを言う行動（その他、身振り手振りが加わっていてもよい）である。また、ＡＣＴＩＶＥに戻るために必要な行動とは、例えば、話し相手に謝意を表わす「お待たせ」などのセリフを言う行動（その他、身振り手振りが加わっていてもよい）である。
【０２１８】
ＡｎｄＰａｒｅｎｔＳｃｈｅｍａ、ＮｕｍＯｒＰａｒｅｎｔＳｃｈｅｍａ、ＯｒＰａｒｅｎｔＳｃｈｅｍａは、ＩｎｔｅｒｍｅｄｉａＰａｒｅｎｔＳｃｈｅｍａＢａｓｅを継承するクラス・オブジェクトである。ＡｎｄＰａｒｅｎｔＳｃｈｅｍａは、同時実行する複数の子供スキーマへのポインタを持つ。ＯｒＰａｒｅｎｔＳｃｈｅｍａは、いずれか択一的に実行する複数の子供スキーマへのポインタを持つ。また、ＮｕｍＯｒＰａｒｅｎｔＳｃｈｅｍａは、所定数のみを同時実行する複数の子供スキーマへのポインタを持つ。
【０２１９】
ＰａｒｅｎｔＳｃｈｅｍａは、これらＡｎｄＰａｒｅｎｔＳｃｈｅｍａ、ＮｕｍＯｒＰａｒｅｎｔＳｃｈｅｍａ、ＯｒＰａｒｅｎｔＳｃｈｅｍａを多重継承するクラス・オブジェクトである。
【０２２０】
図３０には、状況依存行動階層（ＳＢＬ）１０８内のクラスの機能的構成を模式的に示している。
【０２２１】
状況依存行動階層（ＳＢＬ）１０８は、ＳＴＭやＬＴＭ、リソース・マネージャ、認識系の各オブジェクトなど外部オブジェクトからデータを受信する１以上のＲｅｃｅｉｖｅＤａｔａＨａｎｄｌｅｒ（ＲＤＨ）と、外部オブジェクトにデータを送信する１以上のＳｅｎｄＤａｔａＨａｎｄｌｅｒ（ＳＤＨ）とを備えている。
【０２２２】
ＥｖｅｎｔＤａｔａＨａｎｄｌｅｒ（ＥＤＨ）は、ＳＢＬの入出力イベントに対してＩＤを割り振るためのクラス・オブジェクトであり、ＲＤＨやＳＤＨから入出力イベントの通知を受ける。
【０２２３】
ＳｃｈｅｍａＨａｎｄｌｅｒは、スキーマを管理するためのクラス・オブジェクトであり、ＳＢＬを構成するスキーマのコンフィギュレーション情報をファイルとして保管している。例えばシステムの起動時などに、ＳｃｈｅｍａＨａｎｄｌｅｒは、このコンフィギュレーション情報ファイルを読み込んで、ＳＢＬ内のスキーマ構成を構築する。
【０２２４】
各スキーマは、図２７に示したクラス定義に従って生成され、メモリ空間上にエンティティがマッピングされる。各スキーマは、ＯｐｅｎＲ＿Ｇｕｅｓｔをベースのクラス・オブジェクトとし、外部にデータ・アクセスするためのＤＳｕｂｊｅｃｔやＤＯｂｊｅｃｔなどのクラス・オブジェクトを備えている。
【０２２５】
スキーマが主に持つ関数とステートマシンを以下に示しておく。
【０２２６】
ＡｃｔｉｖａｔｉｏｎＭｏｎｉｔｏｒ（）：スキーマがＲｅａｄｙ時にＡｃｔｉｖｅになるための評価関数。
Ａｃｔｉｏｎｓ（）：Ａｃｔｉｖｅ時の実行用ステートマシン。
Ｇｏａｌ（）：Ａｃｔｉｖｅ時にスキーマがＧｏａｌに達したかを評価する関数。
Ｇｏａｌ（）：Ａｃｔｉｖｅ時にスキーマがｆａｉｌ状態かを判定する関数。
ＳｌｅｅｐＡｃｔｉｏｎｓ（）：Ｓｌｅｅｐ前に実行されるステートマシン。
ＳｌｅｅｐＭｏｎｉｔｏｒ（）：Ｓｌｅｅｐ時にＲｅｓｕｍｅするための評価関数。
ＲｅｓｕｍｅＡｃｔｉｏｎｓ（）：Ｒｅｓｕｍｅ前にＲｅｓｕｍｅするためのステートマシン。
ＤｅｓｔｒｏｙＭｏｎｉｔｏｒ（）：Ｓｌｅｅｐ時にスキーマがｆａｉｌ状態か判定する評価関数。
ＭａｋｅＰｒｏｎｏｍｅ（）：ツリー全体のターゲットを決定する関数である。
【０２２７】
これらの関数は、ＳｃｈｅｍａＢａｓｅで記述されている。
【０２２８】
図３１には、ＭａｋｅＰｒｏｎｏｍｅ関数を実行する処理手順をフローチャートの形式で示している。
【０２２９】
スキーマのＭａｋｅＰｒｏｎｏｍｅ関数がコールされると、まず、スキーマ自信に子供スキーマが存在するかどうかを判別する（ステップＳ１）。
【０２３０】
子供スキーマが存在する場合には、同様にすべての子供スキーマのＭａｋｅＰｒｏｎｏｍｅ関数を再帰的にコールする（ステップＳ２）。
【０２３１】
そして、スキーマ自身のＭａｋｅＰｒｏｎｏｍｅを実行して、Ｐｒｏｎｏｍｅオブジェクトにターゲットが代入される（ステップＳ３）。
【０２３２】
この結果、自分以下のすべてのスキーマのＰｒｏｎｏｍｅに対して同じターゲットが代入され、行動が終了（完結、異常終了など）するまでスキーマは解放されない。新規のターゲットのために同じ行動を実行するためには同じクラス定義のスキーマをメモリ空間上に生成する。
【０２３３】
図３２には、Ｍｏｎｉｔｏｒ関数を実行する処理手順をフローチャートの形式で示している。
【０２３４】
まず、評価フラグ（ＡｓｓｅｓｓｓｍｅｎｔＦｌａｇ）をオンに設定して（ステップＳ１１）、スキーマ自身のＡｃｔｉｏｎを実行する（ステップＳ１２）。このとき、子供スキーマの選定も行なう。そして、評価フラグをオフに戻す（ステップＳ１３）。
【０２３５】
子供スキーマが存在する場合には（ステップＳ１４）、ステップＳ１２において選択した子供スキーマのＭｏｎｉｔｏｒ関数を再帰的にコールする（ステップＳ１５）。
【０２３６】
次いで、スキーマ自身のＭｏｎｉｔｏｒ関数を実行して（ステップＳ１６）、活動度レベルと行動実行に使用するリソースを算出して（ステップＳ１７）、関数の戻り値とする。
【０２３７】
図３３及び図３４には、Ａｃｔｉｏｎｓ関数を実行する処理手順をフローチャートの形式で示している。
【０２３８】
まず、スキーマがＳＴＯＰＰＩＮＧ状態かどうかをチェックし（ステップＳ２１）、次いで、ＳＴＯＰＰＩＮＧすべき状態かどうかをチェックする（ステップＳ２２）。
【０２３９】
ＳＴＯＰＰＩＮＧすべき状態である場合には、さらに子供スキーマがいるかどうかをチェックする（ステップＳ２３）。そして、子供スキーマがいる場合にはこれをＧＯ＿ＴＯ＿ＳＴＯＰ状態に移行させてから（ステップＳ２４）、ＨａｖｅＴｏＳｔｏｐＦｌａｇをオンにする（ステップＳ２５）。
【０２４０】
また、ＳＴＯＰＰＩＮＧすべき状態でない場合には、ＲＵＮＮＩＮＧ状態かどうかをチェックする（ステップＳ２６）。
【０２４１】
ＲＵＮＮＩＮＧ状態でない場合には、さらに子供スキーマがいるかどうかをチェックする（ステップＳ２７）。そして、子供スキーマがいる場合には、ＨａｖｅＴｏＳｔｏｐＦｌａｇをオンにする（ステップＳ２８）。
【０２４２】
次いで、現在のシステム状態とＨａｖｅＴｏＲｕｎＦｌａｇとＨａｖｅＴｏＳｔｏｐＦｌａｇと子供スキーマの動作状態から次の自分自身の状態を決定する（ステップＳ２９）。
【０２４３】
次いで、スキーマ自身のＡｃｔｉｏｎ関数を実行する（ステップＳ３０）。
【０２４４】
その後、スキーマ自身がＧＯ＿ＴＯ＿ＳＴＯＰ状態かどうかをチェックする（ステップＳ３１）。ＧＯ＿ＴＯ＿ＳＴＯＰ状態でない場合には、さらに子供スキーマがいるかどうかをチェックする（ステップＳ３２）。そして、子供スキーマがいる場合には、ＧＯ＿ＴＯ＿ＳＴＯＰ状態の子供スキーマがいるかどうかをチェックする（ステップＳ３３）。
【０２４５】
ＧＯ＿ＴＯ＿ＳＴＯＰ状態の子供スキーマがいる場合には、これらのスキーマのＡｃｔｉｏｎ関数を実行する（ステップＳ３４）。
【０２４６】
次いで、ＲＵＮＮＩＮＧ中の子供スキーマがいるかどうかをチェックする（ステップＳ３５）。ＲＵＮＮＩＮＧ中の子供スキーマがいない場合には、停止中の子供スキーマがいるかどうかをチェックして（ステップＳ３６）、停止中の子供スキーマのＡｃｔｉｏｎ関数を実行する（ステップＳ３７）。
【０２４７】
次いで、ＧＯ＿ＴＯ＿ＲＵＮ状態の子供スキーマがいるかどうかをチェックする（ステップＳ３８）。ＧＯ＿ＴＯ＿ＲＵＮ状態の子供スキーマがいない場合には、ＧＯ＿ＴＯ＿ＳＴＯＰ状態の子供スキーマがいるかどうかをチェックして（ステップＳ３９）、いればこの子供スキーマのＡｃｔｉｏｎ関数を実行する（ステップＳ４０）。
【０２４８】
最後に、現在のシステム状態とＨａｖｅＴｏＲｕｎＦｌａｇとＨａｖｅＴｏＳｔｏｐＦｌａｇと子供の動作状態から自分自身の次の状態を決定して，本処理ルーチン全体を終了する（ステップＳ４１）。
【０２４９】
Ｄ−３．状況依存行動階層の機能
状況依存行動階層（ＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒ）１０８は、短期記憶部１０５並びに長期記憶部１０６の記憶内容や、内部状態管理部１０４によって管理される内部状態を基に、ロボット装置１が現在置かれている状況に即応した行動を制御する。
【０２５０】
前項で述べたように、本実施形態に係る状況依存行動階層１０８は、スキーマのツリー構造（図１９を参照のこと）で構成されている。各スキーマは、自分の子供と親の情報を知っている状態で独立性を保っている。このようなスキーマ構成により、状況依存行動階層１０８は、Ｃｏｎｃｕｒｒｅｎｔな評価、Ｃｏｎｃｕｒｒｅｎｔな実行、Ｐｒｅｅｍｐｔｉｏｎ、Ｒｅｅｎｔｒａｎｔという主な特徴を持っている。以下、これらの特徴について詳解する。
【０２５１】
（１）Ｃｏｎｃｕｒｒｅｎｔな評価：
行動モジュールとしてのスキーマは外部刺激や内部状態の変化に応じた状況判断を行なうＭｏｎｉｔｏｒ機能を備えていることは既に述べた。Ｍｏｎｉｔｏｒ機能は、スキーマがクラス・オブジェクトＳｃｈｅｍａＢａｓｅでＭｏｎｉｔｏｒ関数を備えていることにより実装されている。Ｍｏｎｉｔｏｒ関数とは、外部刺激と内部状態に応じて当該スキーマの活動度レベル（Ａｃｔｉｖａｔｉｏｎ  Ｌｅｖｅｌ：ＡＬ値）を算出する関数である。
【０２５２】
図１９に示すようなツリー構造を構成する場合、上位（親）のスキーマは外部刺激と内部状態を引数として下位（子供）のスキーマのＭｏｎｉｔｏｒ関数をコールすることができ、子供のスキーマはＡＬ値を返り値とする。また、スキーマは自分のＡＬ値を算出するために、さらに子供のスキーマのＭｏｎｉｔｏｒ関数をコールすることができる。そして、ルートのスキーマには各サブツリーからのＡＬ値が返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断することができる。
【０２５３】
このようにツリー構造になっていることから、外部刺激と内部状態の変化による各スキーマの評価は、まずツリー構造の下から上に向かってＣｏｎｃｕｒｒｅｎｔに行なわれる。図３２のフローチャートでも示したように、スキーマに子供スキーマがある場合には（ステップＳ１４）、選択した子供のＭｏｎｉｔｏｒ関数をコールしてから（ステップＳ１５）、自身のＭｏｎｉｔｏｒ関数を実行する。
【０２５４】
次いで、ツリー構造の上から下に向かって評価結果としての実行許可を渡していく。評価と実行は、その行動が用いるリソースの競合を解きながら行なわれる。
【０２５５】
本実施形態に係る状況依存行動階層１０８は、スキーマのツリー構造を利用して、並列的に行動の評価を行なうことができるので、外部刺激や内部状態などの状況に対しての適応性がある。また、評価時には、ツリー全体に関しての評価を行ない、このとき算出される活動度レベル（ＡＬ）値によりツリーが変更されるので、スキーマすなわち実行する行動を動的にプライオリタイズすることができる。
【０２５６】
（２）Ｃｏｎｃｕｒｒｅｎｔな実行：
ルートのスキーマには各サブツリーからのＡＬ値が返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断することができる。例えばＡＬ値が最も高いスキーマを選択したり、ＡＬ値が所定の閾値を越えた２以上のスキーマを選択して並列的に行動実行するようにしてもよい（但し、並列実行するときは各スキーマ同士でハードウェア・リソースの競合がないことを前提とする）。
【０２５７】
実行許可をもらったスキーマは実行される。すなわち、実際にそのスキーマはさらに詳細の外部刺激や内部状態の変化を観測して、コマンドを実行する。実行に関しては、ツリー構造の上から下に向かって順次すなわちＣｏｎｃｕｒｒｅｎｔに行なわれる。図３３及び図３４のフローチャートでも示したように、スキーマに子供スキーマがある場合には、子供のＡｃｔｉｏｎｓ関数を実行する。
【０２５８】
Ａｃｔｉｏｎ関数は、スキーマ自身が持つ行動を記述したステートマシン（後述）を備えている。図１９に示すようなツリー構造を構成する場合、親スキーマは、Ａｃｔｉｏｎ関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。
【０２５９】
本実施形態に係る状況依存行動階層１０８は、スキーマのツリー構造を利用して、リソースが競合しない場合には、余ったリソースを使う他のスキーマを同時に実行することができる。但し、Ｇｏａｌまでに使用するリソースに対して制限を加えないと、ちぐはぐな行動出現が起きる可能性がある。状況依存行動階層１０８において決定された状況依存行動は、リソース・マネージャにより反射行動部１０９による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作（ＭｏｔｉｏｎＣｏｎｔｒｏｌｌｅｒ）に適用される。
【０２６０】
（３）Ｐｒｅｅｍｐｔｉｏｎ：
１度実行に移されたスキーマであっても、それよりも重要な（優先度の高い）行動があれば、スキーマを中断してそちらに実行権を渡さなければならない。また、より重要な行動が終了（完結又は実行中止など）したら、元のスキーマを再開して実行を続けることも必要である。
【０２６１】
このような優先度に応じたタスクの実行は、コンピュータの世界におけるＯＳ（オペレーティング・システム）のＰｒｅｅｍｐｔｉｏｎと呼ばれる機能に類似している。ＯＳでは、スケジュールを考慮するタイミングで優先度のより高いタスクを順に実行していくという方針である。
【０２６２】
これに対し、本実施形態に係るロボット１の行動制御システム１００は、複数のオブジェクトにまたがるため、オブジェクト間での調停が必要になる。例えば反射行動を制御するオブジェクトであるＲｅｆｌｅｘｉｖｅＳＢＬは、上位の状況依存行動を制御するオブジェクトであるＳＢＬの行動評価を気にせずに物を避けたり、バランスをとったりする必要がある。これは、実際に実行権を奪い取り実行を行なう訳であるが、上位の行動モジュール（ＳＢＬ）に、実行権利が奪い取られたことを通知して、上位はその処理を行なうことによってＰｒｅｅｍｐｔｉｖｅな能力を保持する。
【０２６３】
また、状況依存行動層１０８内において、外部刺激と内部状態の変化に基づくＡＬ値の評価の結果、あるスキーマに実行許可がなされたとする。さらに、その後の外部刺激と内部状態の変化に基づくＡＬ値の評価により、別のスキーマの重要度の方がより高くなったとする。このような場合、実行中のスキーマのＡｃｔｉｏｎｓ関数を利用してＳｌｅｅｐ状態にして中断することにより、Ｐｒｅｅｍｐｔｉｖｅな行動の切り替えを行なうことができる。
【０２６４】
実行中のスキーマのＡｃｔｉｏｎｓ（）の状態を保存して、異なるスキーマのＡｃｔｉｏｎｓ（）を実行する。また、異なるスキーマのＡｃｔｉｏｎｓ（）が終了した後、中断されたスキーマのＡｃｔｉｏｎｓ（）を再度実行することができる。
【０２６５】
また、実行中のスキーマのＡｃｔｉｏｎｓ（）を中断して、異なるスキーマに実行権が移動する前に、ＳｌｅｅｐＡｃｔｉｏｎｓ（）を実行する。例えば、ロボット１は、対話中にサッカーボールを見つけると、「ちょっと待ってね」と言って、サッカーすることができる。
【０２６６】
（４）Ｒｅｅｎｔｒａｎｔ：
状況依存行動階層１０８を構成する各スキーマは、一種のサブルーチンである。スキーマは、複数の親からコールされた場合には、その内部状態を記憶するために、それぞれの親に対応した記憶空間を持つ必要がある。
【０２６７】
これは、コンピュータの世界では、ＯＳが持つＲｅｅｎｔｒａｎｔ性に類似しており、本明細書ではスキーマのＲｅｅｎｔｒａｎｔ性と呼ぶ。図３０を参照しながら説明したように、スキーマはクラス・オブジェクトで構成されており、クラス・オブジェクトのエンティティすなわちインスタンスをターゲット（Ｐｒｏｎｏｍｅ）毎に生成することによりＲｅｅｎｔｒａｎｔ性が実現される。
【０２６８】
スキーマのＲｅｅｎｔｒａｎｔ性について、図３５を参照しながらより具体的に説明する。
【０２６９】
ＳｃｈｅｍａＨａｎｄｌｅｒは、スキーマを管理するためのクラス・オブジェクトであり、ＳＢＬを構成するスキーマのコンフィギュレーション情報をファイルとして保管している。システムの起動時に、ＳｃｈｅｍａＨａｎｄｌｅｒは、このコンフィギュレーション情報ファイルを読み込んで、ＳＢＬ内のスキーマ構成を構築する。図３１に示す例では、ＥａｔやＤｉａｌｏｇなどの行動を規定するスキーマのエンティティがメモリ空間上にマッピングされているとする。
【０２７０】
ここで、外部刺激と内部状態の変化に基づく活動度レベルの評価により、スキーマＤｉａｌｏｇに対してＡというターゲット（Ｐｒｏｎｏｍｅ）が設定されて、Ｄｉａｌｏｇが人物Ａとの対話を実行するようになったとする。
【０２７１】
その後、人物Ｂがロボット１と人物Ａとの対話に割り込み、外部刺激と内部状態の変化に基づく活動度レベルの評価を行なった結果、Ｂとの対話を行なうスキーマの方がより優先度が高くなったとする。
【０２７２】
このような場合、ＳｃｈｅｍａＨａｎｄｌｅｒは、Ｂとの対話を行なうためのクラス継承した別のＤｉａｌｏｇエンティティ（インスタンス）をメモリ空間上にマッピングする。別のＤｉａｌｏｇエンティティを使用して、先のＤｉａｌｏｇエンティティとは独立して、Ｂとの対話を行なうことから、Ａとの対話内容は破壊されずに済む。したがって、Ｄｉａｌｏｇ  Ａはデータの一貫性を保持することができ、Ｂとの対話が終了すると、Ａとの対話を中断した時点から再開することができる。
【０２７３】
Ｒｅａｄｙリスト内のスキーマは、その対象物（外部刺激）に応じて評価すなわちＡＬ値の計算が行なわれ、実行権が引き渡される。その後、Ｒｅａｄｙリスト内に移動したスキーマのインスタンスを生成して、これ以外の対象物に対して評価を行なう。これにより、同一のスキーマをａｃｔｉｖｅ又はｓｌｅｅｐ状態にすることができる。
【０２７４】
Ｅ．ロボットの内部状態管理
本実施形態に係るロボットの行動制御システム１００では、状況依存行動階層１０８は内部状態と外部環境によって行動を決定する。
【０２７５】
ロボット装置１の内部状態は、本能や感情といった数種類の情動で構成され、数式モデル化して扱われる。内部状態管理部（ＩＳＭ：Ｉｎｔｅｒｎａｌ  Ｓｔａｔｕｓ  Ｍａｎａｇｅｒ）１０４は、上述した各認識機能部１０１〜１０３によって認識された外部刺激（ＥＳ：ＥｘｔｅｒｎａｌＳｔｉｍｕｌａ）と、時間的経過に基づいて、内部状態を管理する。
【０２７６】
Ｅ−１．情動の階層化
本実施形態では、情動についてその存在意義による複数階層で構成され、それぞれの階層で動作する。決定された複数の動作から、そのときの外部環境や内部状態によってどの動作を行なうかを決定するようになっている（後述）。また、それぞれの階層で行動は選択されるが、より低次の行動から優先的に動作を発現していくことにより、反射などの本能的行動や、記憶を用いた動作選択などの高次の行動を１つの個体上で矛盾なく発現することができる。
【０２７７】
図３６には、本実施形態に係る内部状態管理部１０４の階層的構成を模式的に示している。
【０２７８】
図示の通り、内部状態管理部１０４は、情動などの内部情報を、情動を本能や欲求などの個体存続に必要な１次情動と、この１次情動の満足度（過不足）によって変化する２次情動に大別する。また、１次情動は、個体存続においてより生理的なものから連想に至るものまで階層的に細分化されている。
【０２７９】
図示の例では、１次情動は、低次から高次に向かって、下位の１次情動、上位の１次情動、連想による１次情動に区分される。下位の１次情動は、大脳辺縁系へのアクセスに相当し、ホメオスタシス（個体維持）が保たれるように情動発生するとともに、ホメオスタシスが脅かされる場合には優先される。また、上位の１次情動は、大脳新皮質へのアクセスに相当し、内発的欲求や社会的欲求などの種族維持に関わる。上位の１次情動は、学習や環境に依って満足度が変化する（学習やコミュニケーションにより満足される）。
【０２８０】
１次情動の各階層は、行動選択されたスキーマを実行することによる一時情動（本能）レベルの変化量ΔＩを出力する。
【０２８１】
２次情動は、いわゆる感情（Ｅｍｏｔｉｏｎ）に相当し、喜び（Ｊｏｙ）、悲しみ（Ｓａｄ）、怒り（Ａｎｇｅｒ）、驚き（Ｓｕｒｐｒｉｓｅ）、嫌気（Ｄｉｓｇｕｓｔ）、畏怖（Ｆｅｅｒ）などの要素からなる。１次情動の変化量ΔＩに応じて２次情動の変化量（満足度）ΔＥが決定される。
【０２８２】
状況依存行動階層１０８では、主に１次情動を基に行動選択を行なうが、２次情動が強い場合には、２次情動に基づく行動選択を行なうこともできる。さらに、１次情動を基に選択された行動に対して２次情動により生成されたパラメータを使用してモジュレーションを行なうことも可能である。
【０２８３】
個体存続のための情動階層は、生得的反射による行動がまず選択される。次いで、下位の１次情動を満たす行動を選択する。そして、上位の１次情動を満たす行動発生、連想による１次情動を満たす行動発生と、よりプリミティブな個体保持から実現する。
【０２８４】
この際、各階層の１次情動は、直近の階層に対して圧力をかけることができる。自身で決定した行動を選択するための指標が強い場合、直近の階層で決定された行動を抑制して、自身の行動を発現することができる。
【０２８５】
前項Ｄでも述べたように、状況依存行動階層１０８は、目標とする動作を持った複数のスキーマによって構成されている（図１８、図１９などを参照のこと）。状況依存行動階層１０８では、各スキーマが持つ活動度レベルを指標にしてスキーマすなわち行動を選択する。内部状態の活動度レベルと外部状況の活動度レベルによりスキーマ全体の活動度レベルが決定する。スキーマは、目標とする動作を実行するための途中経過毎に、活動度レベルを保持する。○○を満たす行動発生とは、○○を満たす行動が最終目標であるスキーマを実行することに相当する。
【０２８６】
内部状態の活動度レベルは、スキーマを実行したときの１次情動における階層毎の変化量ΔＩに基づく２次情動の満足度の変化ΔＥの総和によって決定される。ここで、１次情動がＬ１，Ｌ２，Ｌ３の３階層からなり、スキーマ選択時の１次情動の各階層に由来する２次情動の変化をそれぞれΔＥＬ１，ΔＥＬ２，ΔＥＬ３，とすると、それぞれに重み因子ｗ１，ｗ２，ｗ３を掛けて活動度レベルを算出する。下位の１次情動に対する重み因子をより大きくすることにより、下位の１次情動を満たす行動がより選択され易くなる。また、これら重み因子を調整することにより、各階層の１次情動が直近の階層に対して圧力をかける（Ｃｏｎｃｅｎｔｒａｔｉｏｎ：行動抑制）という作用を得ることができる。
【０２８７】
ここで、情動の階層化構造を利用した行動選択の実施例について説明する。但し、以下では下位の１次情動としてＳｌｅｅｐ（眠気）を、上位の１次情動としてＣｕｒｉｏｓｉｔｙ（好奇心）を扱う。
【０２８８】
（１）下位の１次情動であるＳｌｅｅｐが不足してきて、Ｓｌｅｅｐを満たすスキーマの活動度レベルが高まってきたとする。このとき、他のスキーマの活動度レベルが上がらなければ、Ｓｌｅｅｐを満たすスキーマは、Ｓｌｅｅｐが満たされるまで自身を実行する。
【０２８９】
（２）Ｓｌｅｅｐが満たされる前に、上位の１次情動であるＣｕｒｉｏｓｉｔｙが不足してきたとする。しかし、Ｓｌｅｅｐのほうが個体維持に直結するため、Ｓｌｅｅｐの活動度レベルが一定値以下になるまでは、Ｓｌｅｅｐを満たすスキーマが実行し続ける。そして、Ｓｌｅｅｐがある程度満たされたら、Ｃｕｒｉｏｓｉｔｙを満たすスキーマを実行することができる。
【０２９０】
（３）Ｃｕｒｉｏｓｉｔｙを満たすスキーマ実行中に手を勢いよくロボットの顔面に近づけたとする。これに応答して、ロボットは色認識と大きさ認識による突然肌色が近づいてきたことが判り、生得的な反射行動として手から顔を避ける、すなわち後ろに頭を引くという動作を反射的に行なう。この反射的な動作は動物の脊髄反射に相当する。反射は、最も下位にあるスキーマなので、反射スキーマがまず実行される。
【０２９１】
脊髄反射の後、それに伴う情動変化が起き、その変化幅と他のスキーマの活動度レベルから、続いて情動表出スキーマを行なうかどうかを決定する。情動表出スキーマが行なわれていない場合は、Ｃｕｒｉｏｓｉｔｙを満たすスキーマが続行される。
【０２９２】
（４）あるスキーマ自身の下位にあるスキーマは通常自身より選択される可能性が高いが、自身の活動度レベルが極端に高いときに限り、下位のスキーマを抑制して（Ｃｏｎｃｅｎｔｒａｔｉｏｎ）、一定値まで自身を実行することが可能である。Ｓｌｅｅｐの不足が著しいときは、反射行動スキーマの行動を出したいときであっても、一定値に回復するまではＳｌｅｅｐを満たすスキーマが優先的に実行される。
【０２９３】
Ｅ−２．他の機能モジュールとの連携
図３７には、内部状態管理部１０４と他の機能モジュールとの通信経路を模式的に示している。
【０２９４】
短期記憶部１０５は、外部環境の変化を認識する各認識機能部１０１〜１０３からの認識結果を、内部状態管理部１０４と状況依存行動階層１０８に出力する。
内部状態管理部１０４は、状況依存行動階層１０８に内部状態を通知する。これに対し、状況依存行動階層１０８は、連想又は決定した本能や感情の情報を返す。
【０２９５】
また、状況依存行動階層１０８は、内部状態と外部環境から算出される活動度レベルを基に行動を選択するとともに、選択した行動の実行と完了を短期記憶部１０５経由で内部状態管理部１０４に通知する。
【０２９６】
内部状態管理部１０４は、行動毎に内部状態を長期記憶部１０６に出力する。これに対し、長期記憶部１０６は、記憶情報を返す。
【０２９７】
バイオリズム管理部は、バイオリズム情報を内部状態管理部１０４に供給する。
【０２９８】
Ｅ−３．時間経過による内部状態の変化
内部状態の指標は時間経過により変化する。例えば、１次情動すなわち本能であるＨｕｎｇｅｒ（空腹感）、Ｆａｔｉｇｕｅ（疲労）、Ｓｌｅｅｐ（眠気）は、時間経過によりそれぞれ以下のように変化する。
【０２９９】
Ｈｕｎｇｅｒ：おなかが減る（仮想値又はバッテリ残量）
Ｆａｔｉｇｕｅ：疲れがたまる
Ｓｌｅｅｐ：眠気がたまる
【０３００】
また、本実施形態では、ロボットの２次情動すなわち感情（Ｅｍｏｔｉｏｎ）の要素としてＰｌｅａｓａｎｔｎｅｓｓ（満足度），Ａｃｔｉｖａｔｉｏｎ（活動度），Ｃｅｒｔａｉｎｔｙ（確信度）を定義しているが、時間経過によりそれぞれ以下のように変化する。
【０３０１】
Ｐｌｅａｓａｎｔｎｅｓｓ：Ｎｅｕｔｒａｌ（中立）に向かって変化する
Ａｃｔｉｖａｔｉｏｎ：バイオリズムやＳｌｅｅｐ（眠気）に依存する
Ｃｅｒｔａｉｎｔｙ：Ａｔｔｅｎｔｉｏｎに依存する
【０３０２】
図３８には、内部状態管理部１０４が時間変化に伴って内部状態を変化させるための仕組みを示している。
【０３０３】
図示のように、バイオリズム管理部は、一定の周期でバイオリズム情報を通知する。これに対し、内部状態管理部１０４は、バイオリズムにより１次情動の各要素の値を変更するとともに、２次情動であるＡｃｔｉｖａｔｉｏｎ（活動度）を変動させる。そして、状況依存行動階層１０８は、バイオリズム管理部からの通知がある度に、内部状態管理部１０４から本能や感情など内部状態の指標値を受け取るので、内部状態を基に各スキーマの活動度レベルを算出することにより、状況に依存した行動（スキーマ）を選択することができる。
【０３０４】
Ｅ−４．動作実行による内部状態の変化
内部状態は、ロボットが動作を実行することによっても変化する。
【０３０５】
例えば、「眠る」という行動を行なうスキーマは、下位の１次情動としてのＳｌｅｅｐ（眠気）を満たす行動が最終目標としている。状況依存行動階層１０８では、１次情動としてのＳｌｅｅｐと２次情動としてのＡｃｔｉｖａｔｉｏｎを基に各スキーマの活動度レベルを算出・比較して、「眠る」スキーマを選択し、この結果、眠るという行動が実現される。
【０３０６】
一方、状況依存行動階層１０８は、眠るという行動の実行完了を短期記憶部１０５経由で内部状態管理部１０４に伝達する。これに対し、内部状態管理部１０４は、「眠る」行動の実行により、１次情動であるＳｌｅｅｐの指標値を変更する。
【０３０７】
そして、状況依存行動階層１０８では、Ｓｌｅｅｐが満たされた度合いと２次情動としてのＡｃｔｉｖａｔｉｏｎを基に各スキーマの活動度レベルを改めて算出・比較する。この結果、優先度が高くなった他のスキーマを選択し、眠るというスキーマから抜ける。
【０３０８】
図３９には、内部状態管理部１０４がロボットの動作実行により内部状態を変化させるための仕組みを示している。
【０３０９】
状況依存行動階層１０８は、状況依存型で選択された行動の実行開始及び実行終了、並びにＡｔｔｅｎｔｉｏｎ情報を、短期記憶部１０５経由で内部状態管理部１０４に通知する。
【０３１０】
内部状態管理部１０４は、選択された行動の実行完了情報が通知されると、Ａｔｔｅｎｔｉｏｎ情報に則って、短期記憶部１０５から得た外部環境を確認して、１次情動としての本能（Ｓｌｅｅｐ）の指標値を変更するとともに、これに伴って２次情動としての感情も変更する。そして、これら内部状態の更新データを、状況依存行動階層１０８並びに長期記憶部１０６に出力する。
状況依存行動階層１０８では、新たに受け取った内部状態の指標値を基に、各スキーマの活動度レベルを算出して、状況に依存した次の行動（スキーマ）を選択する。
【０３１１】
また、長期記憶部１０６は、内部状態の更新データを基に記憶情報を更新するとともに、更新内容を内部状態管理部１０４に通知する。内部状態管理部１０４では、外部環境に対する確信度と長期記憶部１０６の確信度により、２次情動としての確信度（Ｃｅｒｔａｉｎｔｙ）を決定する。
【０３１２】
Ｅ−５．センサ情報による内部状態の変化
ロボットが動作を実行したときのその動作程度は、各認識機能部１０１〜１０３によって認識され、短期記憶部１０５経由で内部状態管理部１０４に通知される。内部状態管理部１０４は、この動作程度を例えばＦａｔｉｇｕｅ（疲労）として１次情動の変化に反映させることができる。また、この１次情動の変化に応答して、２次情動も変化させることができる。
【０３１３】
図４０には、内部状態管理部１０４が外部環境の認識結果により内部状態を変化させるための仕組みを示している。
【０３１４】
内部状態管理部１０４は、短期記憶部１０５経由で各認識機能部１０１〜１０３による認識結果を受け取ると、１次情動の指標値を変更するとともに、これに伴って２次情動としての感情も変更する。そして、これら内部状態の更新データを、状況依存行動階層１０８に出力する。
【０３１５】
状況依存行動階層１０８では、新たに受け取った内部状態の指標値を基に、各スキーマの活動度レベルを算出して、状況に依存した次の行動（スキーマ）を選択することができる。
【０３１６】
Ｅ−６．連想による内部状態の変化
既に述べたように、本実施形態に係るロボットは、長期記憶部１０６において連想記憶機能を備えている。この連想記憶は、あらかじめ複数のシンボルからなる入力パターンを記憶パターンとして記憶しておき、その中のある１つのパターンに類似したパターンが想起される仕組みのことであり、外部刺激から内部状態の変化を連想記憶することができる。
【０３１７】
例えば、りんごが見えた場合に「嬉しい」という情動の変化を起こす場合について考察してみる。
【０３１８】
りんごが視覚認識機能部１０１において認識されると、短期記憶部１０５を経由して状況依存行動階層１０８に外部環境の変化として通知される。
【０３１９】
長期記憶部１０６では、「りんご」に関する連想記憶により、「（りんごを）食べる」という行動と、食べることにより１次情動（空腹感）が指標値で３０だけ満たされるという内部状態の変化を想起することができる。
【０３２０】
状況依存行動階層１０８は、長期記憶部１０６から記憶情報を受け取ると、内部状態の変化ΔＩ＝３０を、内部状態管理部１０４に通知する。
【０３２１】
内部状態管理部１０４では、通知されたΔＩを基に、２次情動の変化量ΔＥを算出して、りんごを食べることによる２次情動Ｅの指標値を得ることができる。
【０３２２】
図４１には、内部状態管理部１０４が連想記憶により内部状態を変化させるための仕組みを示している。
【０３２３】
外部環境が短期記憶部１０５を経由して状況依存行動階層１０８に通知される。長期記憶部１０６の連想記憶機能により、外部環境に応じた行動と、１次情動の変化ΔＩを想起することができる。
【０３２４】
状況依存行動階層１０８は、この連想記憶により得られた記憶情報を基に行動を選択するとともに、１次情動の変化ΔＩを内部状態管理部１０４に通知する。
【０３２５】
内部状態管理部１０４では、通知を受けた１次情動の変化ΔＩと、自身で管理している１次情動の指標値とを基に、２次情動の変化ΔＥを算出して、２次情動を変化させる。そして、新たに生成された１次情動及び２次情動を、内部状態更新データとして状況依存行動階層１０８に出力する。
【０３２６】
状況依存行動階層１０８では、新たに受け取った内部状態の指標値を基に、各スキーマの活動度レベルを算出して、状況に依存した次の行動（スキーマ）を選択することができる。
【０３２７】
Ｅ−７．生得的な行動による内部状態の変化
本実施形態に係るロボットが動作実行により内部状態を変化させることは既に述べた通りである（図３９を参照のこと）。この場合、１次情動と２次情動からなる内部状態の指標値を基に行動が選択されるとともに、行動の実行完了により情動が満たされる。他方、本実施形態に係るロボットは、情動に依存しない、生得的な反射行動も規定されている。この場合、外部環境の変化に応じて反射行動が直接選択されることになり、通常の動作実行による内部変化とは異なる仕組みとなる。
【０３２８】
例えば、大きなものが突然現れたときに生得的な反射行動をとる場合について考察してみる。
【０３２９】
このような場合、例えば視覚的認識機能部１０１による「大きいもの」という認識結果（センサ情報）は、短期記憶部１０５を介さず、状況依存行動階層１０８に直接入力される。
【０３３０】
状況依存行動階層１０８では、「大きいもの」という外部刺激により各スキーマの活動度レベルを算出して、適当な行動を選択する（図１５、図２５及び図２６を参照のこと）。この場合、状況依存行動階層１０８では、「よける」という脊髄反射的行動を選択するとともに、「驚く」という２次情動を決定して、これを内部状態管理部１０４に通知する。
【０３３１】
内部状態管理部１０４では、状況依存行動階層１０８から送られてきた２次情動を自身の感情として出力する。
【０３３２】
図４２には、内部状態管理部１０４が生得的反射行動により内部状態を変化させるための仕組みを示している。
【０３３３】
生得的な反射行動を行なう場合、各認識機能部１０１〜１０３による戦さ情報は、短期記憶部１０５を介さず、状況依存行動階層１０８に直接入力される。
状況依存行動階層１０８では、センサ情報として得た外部刺激により各スキーマの活動度レベルを算出して、適当な行動を選択するとともに、２次情動を決定して、これを内部状態管理部１０４に通知する。
【０３３４】
内部状態管理部１０４では、状況依存行動階層１０８から送られてきた２次情動を自身の感情として出力する。また、状況依存行動階層１０８からのＡｃｔｉｖａｔｉｏｎに対して、バイオリズムの高低によって最終的なＡｃｔｉｖａｔｉｏｎを決定する。
【０３３５】
状況依存行動階層１０８では、新たに受け取った内部状態の指標値を基に、各スキーマの活動度レベルを算出して、状況に依存した次の行動（スキーマ）を選択することができる。
【０３３６】
Ｅ−８．スキーマと内部状態管理部との関係
状況依存行動階層１０８は、複数のスキーマで構成され、各スキーマ毎に外部刺激や内部状態の変化によって活動度レベルを算出して、活動度レベルの度合いに応じてスキーマを選択して行動を実行する（図１８、図１９、図２５を参照のこと）。
【０３３７】
図４３には、スキーマと内部状態管理部との関係を模式的に示している。
スキーマは、ＤＳｕｂｊｅｃｔやＤＯｂｊｅｃｔなどのプロキシを介して、短期記憶部１０５、長期記憶部１０６、内部状態管理部１０４などの外部オブジェクトと通信することができる（図３０を参照のこと）。
【０３３８】
スキーマは、外部刺激や内部状態の変化によって活動度レベルを算出するクラス・オブジェクトを備えている。ＲＭ（Ｒｅｓｏｕｒｃｅ  Ｍａｎａｇｅｍｅｎｔ）オブジェクトは、プロキシを介して短期記憶部１０５に通信して、外部環境を取得して、外部環境に基づく活動度レベルを算出する。また、Ｍｏｔｉｖａｔｉｏｎ算出クラス・オブジェクトは、プロキシを介して長期記憶部１０６並びに内部状態管理部１０４と通信して、内部状態の変化量を取得して、内部状態に基づく活動度レベルすなわちＭｏｔｉｖａｔｉｏｎを算出する。Ｍｏｔｉｖａｔｉｏｎの算出方法に関しては後に詳解する。
【０３３９】
内部状態管理部１０４は、既に述べたように、１次情動と２次情動とに段階的に階層化されている。また、１次情動に関しては、生得的反応による１次情動階層と、ホメオスタシスによる１次情動と、連想による１次情動とに次元的に階層化されている（図３６を参照のこと）。また、２次情動としての感情は、Ｐ（Ｐｌｅａｓａｎｔｎｅｓｓ）、Ａ（Ａｃｔｉｖｉｔｙ）、Ｃ（Ｃｏｎｃｅｎｔｒａｔｉｏｎ）の３要素にマッピングされている。
【０３４０】
１次情動の各階層における変化ΔＩはすべて２次情動に入力されて、Ｐｌｅａｓａｎｔｎｅｓｓの変化ΔＰの算出に利用される。
【０３４１】
Ａｃｔｉｖｉｔｙは、センサ入力、動作時間、バイオリズムなどの情報から統合的に判断される。
【０３４２】
また、選択されたスキーマの確信度を、実際の２次情動階層における確信度として使用する。
【０３４３】
図４４には、Ｍｏｔｉｖａｔｉｏｎ算出クラス・オブジェクトによるＭｏｔｉｖａｔｉｏｎ算出経路を模式的に示している。
【０３４４】
ＲＭクラス・オブジェクトは、プロキシ経由で短期記憶部１０５にアクセスして、センサ情報を取得し、認識された対象物の距離や大きさなどの刺激の強さに基づいて外部刺激による活動度レベルを評価する。
【０３４５】
一方、Ｍｏｔｉｖａｔｉｏｎ算出クラス・オブジェクトは、プロキシ経由で短期記憶部１０５にアクセスして、対象物に関する特徴を取得して、さらにプロキシ経由で長期記憶部１０６の対象物の特徴を問い合わせて内部状態の変化を取得する。そして、プロキシ経由で内部状態管理部１０４にアクセスして、ロボット内部にある内部評価値を算出する。したがって、Ｍｏｔｉｖａｔｉｏｎの算出は、外部刺激の強さには無関係である。
【０３４６】
本実施形態に係るロボットの行動制御システムが連想記憶を用いて外部刺激から内部状態の変化を想起することにより、２次情動を算出して行動選択を行なう、ということは既に述べた（図４１を参照のこと）。さらに、連想記憶を用いることにより、対象物毎に異なる内部状態の変化を想起させることができる。これによって、同じ状況でもその行動の発現し易さを異ならせることができる。すなわち、外部の刺激や物理的状況、現在の内部状態に加え、ロボットの対象物ごとの記憶を考慮して行動を選択することができ、より多彩で多様化した対応を実現することができる。
【０３４７】
例えば、「○○が見えているから××する」とか、「現在○○が不足だから（何に対しても）××する」などの外部環境又は内部状態によって決まった行動をするのではなく、「○○が見えても△△なので□□する」とか、「○○が見えているけど××なので■■する」など、対象物に関する内部状態の変化記憶を用いることにより、行動にバリエーションをつけることができる。
【０３４８】
図４５には、対象物が存在するときのＭｏｔｉｖａｔｉｏｎ算出処理のメカニズムを模式的に示している。
【０３４９】
まず、プロキシ経由で短期記憶部１０５にアクセスして、認識機能部１０１〜１０３により認識されたターゲットの特徴を尋ねる。
【０３５０】
次いで、取り出した特徴を用いて、今度はプロキシ経由で長期記憶部１０６にアクセスして、その特徴の対象物がスキーマに関係した欲求をどのように変化させるか、すなわち１次情動の変化ΔＩを獲得する。
【０３５１】
次いで、プロキシ経由で内部状態管理部１０４にアクセスして、欲求の変化により快不快の値がどのように変化するか、すなわち２次情動の変化ΔＰｌｅａｓａｎｔを引き出す。
【０３５２】
そして、２次情動の変化ΔＰｌｅａｓａｎｔと対象物の確信度を引数とする以下のＭｏｔｉｖａｔｉｏｎ算出関数ｇｔａｒｇｅｔ−ｉにより、ｉ番目のＭｏｔｉｖａｔｉｏｎを算出する。
【０３５３】
【数９】
0003558222.tif 000010
【０３５４】
また、図４６には、対象物が存在しないときのＭｏｔｉｖａｔｉｏｎ算出処理のメカニズムを模式的に示している。
【０３５５】
この場合、まず、行動に対する記憶に対して、その行動による欲求の変化ΔＩを尋ねる。
【０３５６】
次いで、取得したΔＩを用いて、内部状態管理部１０４により１次情動がΔＩだけ変化したときの２次情動の変化ΔＰｌｅａｓａｎｔを引き出す。そして、この場合は、２次情動の変化ΔＰｌｅａｓａｎｔを引数とする以下のＭｏｔｉｖａｔｉｏｎ算出関数ｇｎｏｔｔａｒｇｅｔ−ｉにより、ｉ番目のＭｏｔｉｖａｔｉｏｎを算出する。
【０３５７】
【数１０】
0003558222.tif 000011
【０３５８】
Ｅ−９．２次情動の各要素の変更方法
図４７には、２次情動のうちのＰｌｅａｓａｎｔｎｅｓｓを変更するためのメカニズムを図解している。
【０３５９】
長期記憶部１０６は、記憶の量による１次情動の変化を内部状態管理部１０４に入力する。また、短期記憶部１０５は、認識機能部１０１〜１０３からのセンサ入力による１次情動の変化を内部状態管理部１０４に入力する。
【０３６０】
また、スキーマは、スキーマ実行による１次情動の変化（Ｎｏｕｒｉｓｈｍｅｎｔ，Ｍｏｉｓｔｕｒｅ，Ｓｌｅｅｐ）や、スキーマの内容による１次情動の変化（Ａｆｆｅｃｔｉｏｎ）を内部状態管理部１０４に入力する。
【０３６１】
Ｐｌｅａｓａｎｔｎｅｓｓは、１次情動の過不足の変化に応じて決定される。
【０３６２】
また、図４８には、２次情動のうちのＡｃｔｉｖｉｔｙを変更するためのメカニズムを図解している。
【０３６３】
Ａｃｔｉｖｉｔｙは、スキーマのＳｌｅｅｐ以外の時間の総和と、バイオリズムと、センサ入力を基に、統合的に判断される。
【０３６４】
また、図４９には、２次情動のうちのＣｅｒｔａｉｎｔｙを変更するためのメカニズムを図解している。
【０３６５】
長期記憶部１０６に対して対象物を尋ねると、Ｃｅｒｔａｉｎｔｙが返される。どの１次情動に着目するかは、そのスキーマの目標とする行動に依存する。そして、引き出されたＣｅｒｔａｉｎｔｙがそのまま内部状態管理部１０４の２次情動におけるＣｅｒｔａｉｎｔｙとなる。
【０３６６】
図５０には、Ｃｅｒｔａｉｎｔｙを求めるためのメカニズムを模式的に示している。
【０３６７】
長期記憶部１０６では、対象物に関する認識結果や情動などの各項目の確からしさを、スキーマ毎に記憶している。
【０３６８】
スキーマは、長期記憶部１０６に対して、スキーマと関係する記憶の対する確からしさの値を尋ねる。これに対し、長期記憶部１０６は、スキーマと関係する記憶の確からしさを対象物の確からしさとして与える。
【０３６９】
［追補］
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。
【０３７０】
本発明の要旨は、必ずしも「ロボット」と称される製品には限定されない。すなわち、電気的若しくは磁気的な作用を用いて人間の動作に似せた運動を行なう機械装置であるならば、例えば玩具等のような他の産業分野に属する製品であっても、同様に本発明を適用することができる。
【０３７１】
要するに、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０３７２】
【発明の効果】
本発明によれば、自律的な動作を行ないユーザとのリアリスティックなコミュニケーションを実現することができる、優れたロボットの行動制御システム及び行動制御方法、並びにロボット装置を提供することができる。
【０３７３】
また、本発明によれば、視覚や聴覚などの外部環境の認識結果や本能や感情などの内部状態などのロボットが置かれている状況を統合的に判断して行動を選択することができる、優れたロボットの行動制御システム及び行動制御方法、並びにロボット装置を提供することができる。
【０３７４】
また、本発明によれば、視覚や聴覚などの外部環境の認識結果や本能や感情などの内部状態などのロボットが置かれている状況を統合的に判断して行動を選択することができる、優れたロボットの行動制御システム及び行動制御方法、並びにロボット装置を提供することができる。
【０３７５】
また、本発明によれば、情動についての存在意義をより明確にして、一定の秩序の下で外部刺激や内部状態に応じた行動を好適に選択し実行することができる、優れたロボットの行動制御システム及び行動制御方法、並びにロボット装置を提供することができる。
【０３７６】
本発明によれば、情動についてその存在意義による複数階層化を行ない、それぞれの階層で動作を決定する。決定された複数の動作から、そのときの外部刺激や内部状態によってどの動作を行なうかを決定する。それぞれの階層で行動は選択されるが、その実施される順番はロボットの内部状態の優先順位に基づくため、より低次の行動から優先的に動作を発現していくことにより、反射などの本能的行動や、記憶を用いた動作選択などの高次の行動を１つの個体上で矛盾なく発現することができる。また、行動をカテゴライズして、スキーマとして作成する際も明確な指標となる。
【０３７７】
また、本発明に係るロボットの行動制御システム又は行動制御方法によれば、連想記憶を用いることにより、対象物毎に異なる内部状態の変化を想起することができるので、同じ状況でもその行動の発現し易さを異ならせることができる。すなわち、外部の刺激や物理的状況、現在の内部状態に加え、ロボットの対象物ごとの記憶を考慮して行動を選択することができ、より多彩で多様化した対応を実現することができる。
【０３７８】
例えば、「○○が見えているから××する」とか、「現在○○が不足だから（何に対しても）××する」などの外部環境又は内部状態によって決まった行動をするのではなく、「○○が見えても△△なので□□する」とか、「○○が見えているけど××なので■■する」など、対象物に関する内部状態の変化記憶を用いることにより、行動にバリエーションを付けることができる。
【図面の簡単な説明】
【図１】本発明に実施に供されるロボット装置１の機能構成を模式的に示した図である。
【図２】制御ユニット２０の構成をさらに詳細に示した図である。
【図３】本発明の実施形態に係るロボット装置１の行動制御システム１００の機能構成を模式的に示した図である。
【図４】図３に示した行動制御システム１００を構成する各オブジェクトによる動作の流れを示した図である。
【図５】各認識機能部１０１〜１０３における認識結果に基づいて短期記憶部１０５内のターゲット・メモリに入る情報の流れを示した図である。
【図６】各認識機能部１０１〜１０３における認識結果に基づいて短期記憶部１０５内のイベント・メモリに入る情報の流れを示した図である。
【図７】ロボット１によるユーザＡ及びＢとの対話処理を説明するための図である。
【図８】ロボット１によるユーザＡ及びＢとの対話処理を説明するための図である。
【図９】ロボット１によるユーザＡ及びＢとの対話処理を説明するための図である。
【図１０】本発明の一実施形態に係る連想記憶の記憶過程を概念的に示した図である。
【図１１】本発明の一実施形態に係る連想記憶の想起過程を概念的に示した図である。
【図１２】競合型ニューラル・ネットワークを適用した連想記憶システムの構成例を模式的に示した図である。
【図１３】本発明の実施形態に係る行動制御システム１００のオブジェクト構成を模式的に示した図である。
【図１４】状況依存行動階層１０８による状況依存行動制御の形態を模式的に示した図である。
【図１５】図１４に示した状況依存行動階層１０８による行動制御の基本的な動作例を示した図である。
【図１６】図１４に示した状況依存行動階層１０８により反射行動を行なう場合の動作例を示した図である。
【図１７】図１４に示した状況依存行動階層１０８により感情表現を行なう場合の動作例を示した図である。
【図１８】状況依存行動階層１０８が複数のスキーマによって構成されている様子を模式的に示した図である。
【図１９】状況依存行動階層１０８におけるスキーマのツリー構造を模式的に示した図である。
【図２０】スキーマの内部構成を模式的に示している。
【図２１】Ｍｏｎｉｔｏｒ関数の内部構成を模式的に示した図である。
【図２２】行動状態制御部の構成例を模式的に示した図である。
【図２３】行動状態制御部の他の構成例を模式的に示した図である。
【図２４】状況依存行動階層１０８において通常の状況依存行動を制御するためのメカニズムを模式的に示した図である。
【図２５】反射行動部１０９におけるスキーマの構成を模式的に示した図である。
【図２６】反射行動部１０９により反射的行動を制御するためのメカニズムを模式的に示した図である。
【図２７】状況依存行動階層１０８において使用されるスキーマのクラス定義を模式的に示した図である。
【図２８】スキーマのａｃｔｉｏｎ関数のステートマシンを示した図である。
【図２９】スキーマのステートマシンを示した図である。
【図３０】状況依存行動階層１０８内のクラスの機能的構成を模式的に示した図である。
【図３１】ＭａｋｅＰｒｏｎｏｍｅ関数を実行する処理手順を示したフローチャートである。
【図３２】Ｍｏｎｉｔｏｒ関数を実行する処理手順を示したフローチャートである。
【図３３】Ａｃｔｉｏｎｓ関数を実行する処理手順を示したフローチャートである。
【図３４】Ａｃｔｉｏｎｓ関数を実行する処理手順を示したフローチャートである。
【図３５】スキーマのＲｅｅｎｔｒａｎｔ性を説明するための図である。
【図３６】本実施形態に係る内部状態管理部１０４の階層的構成を模式的に示した図である。
【図３７】内部状態管理部１０４と他の機能モジュールとの通信経路を模式的に示した図である。
【図３８】内部状態管理部１０４が時間変化に伴って内部状態を変化させるための仕組みを示した図である。
【図３９】内部状態管理部１０４がロボットの動作実行に伴って内部状態を変化させるための仕組みを示した図である。
【図４０】内部状態管理部１０４が外部環境の認識結果により内部状態を変化させるための仕組みを示した図である。
【図４１】内部状態管理部１０４が連想記憶により内部状態を変化させるための仕組みを示した図である。
【図４２】内部状態管理部１０４が生得的反射行動により内部状態を変化させるための仕組みを示した図である。
【図４３】スキーマと内部状態管理部との関係を模式的に示した図である。
【図４４】Ｍｏｔｉｖａｔｉｏｎ算出クラス・オブジェクトによるＭｏｔｉｖａｔｉｏｎ算出経路を模式的に示した図である。
【図４５】対象物が存在するときのＭｏｔｉｖａｔｉｏｎ算出処理のメカニズムを模式的に示した図である。
【図４６】対象物が存在しないときのＭｏｔｉｖａｔｉｏｎ算出処理のメカニズムを模式的に示した図である。
【図４７】Ｐｌｅａｓａｎｔｎｅｓｓの変更方法を示した図である。
【図４８】Ａｃｔｉｖｉｔｙの変更方法を示した図である。
【図４９】Ｃｅｒｔａｉｎｔｙの変更方法を示した図である。
【図５０】Ｃｅｒｔａｉｎｔｙを求めるためのメカニズムを示した図である。
【符号の説明】
１…ロボット装置
１５…ＣＣＤカメラ
１６…マイクロフォン
１７…スピーカ
１８…タッチセンサ
１９…ＬＥＤインジケータ
２０…制御部
２１…ＣＰＵ
２２…ＲＡＭ
２３…ＲＯＭ
２４…不揮発メモリ
２５…インターフェース
２６…無線通信インターフェース
２７…ネットワーク・インターフェース・カード
２８…バス
２９…キーボード
４０…入出力部
５０…駆動部
５１…モータ
５２…エンコーダ
５３…ドライバ
１００…行動制御システム
１０１…視覚認識機能部
１０２…聴覚認識機能部
１０３…接触認識機能部
１０５…短期記憶部
１０６…長期記憶部
１０７…熟考行動階層
１０８…状況依存行動階層
１０９…反射行動部
【図１】
0003558222.tif 000012
【図２】
0003558222.tif 000013
【図３】
0003558222.tif 000014
【図４】
0003558222.tif 000015
【図５】
0003558222.tif 000016
【図６】
0003558222.tif 000017
【図７】
0003558222.tif 000018
【図８】
0003558222.tif 000019
【図９】
0003558222.tif 000020
【図１０】
0003558222.tif 000021
【図１１】
0003558222.tif 000022
【図１２】
0003558222.tif 000023
【図１３】
0003558222.tif 000024
【図１４】
0003558222.tif 000025
【図１５】
0003558222.tif 000026
【図１６】
0003558222.tif 000027
【図１７】
0003558222.tif 000028
【図１８】
0003558222.tif 000029
【図１９】
0003558222.tif 000030
【図２０】
0003558222.tif 000031
【図２１】
0003558222.tif 000032
【図２２】
0003558222.tif 000033
【図２３】
0003558222.tif 000034
【図２４】
0003558222.tif 000035
【図２５】
0003558222.tif 000036
【図２６】
0003558222.tif 000037
【図２７】
0003558222.tif 000038
【図２８】
0003558222.tif 000039
【図２９】
0003558222.tif 000040
【図３０】
0003558222.tif 000041
【図３１】
0003558222.tif 000042
【図３２】
0003558222.tif 000043
【図３３】
0003558222.tif 000044
【図３４】
0003558222.tif 000045
【図３５】
0003558222.tif 000046
【図３６】
0003558222.tif 000047
【図３７】
0003558222.tif 000048
【図３８】
0003558222.tif 000049
【図３９】
0003558222.tif 000050
【図４０】
0003558222.tif 000051
【図４１】
0003558222.tif 000052
【図４２】
0003558222.tif 000053
【図４３】
0003558222.tif 000054
【図４４】
0003558222.tif 000055
【図４５】
0003558222.tif 000056
【図４６】
0003558222.tif 000057
【図４７】
0003558222.tif 000058
【図４８】
0003558222.tif 000059
【図４９】
0003558222.tif 000060
【図５０】
0003558222.tif 000061