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