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