(57)【要約】【課題】行動の発現中においても、外部環境及び自身の内部状態を考慮することができ、これを行動に反映させ多彩な行動バリエーションを持たせ、更にエンターテイメント性を向上する。【解決手段】ロボット装置は、所定の機体動作が記述され、該動作の終了条件を有する複数のスキーマＡ、Ｂ及びＣ、Ｄを有する。これらのスキーマは、自身の動作の発現優先度を示すアクティベーションレベル（ＡＬ）と、動作が発現されてからの経過時間に応じて変動するフラストレーション値とを算出し、動作を終了することで、所定の内部状態（欲求）を満たす。例えばスキーマＡが選択されて、所定の許容時間ｔ１を過ぎても上記終了条件を満たさない場合、経過時間に応じてフラストレーション値Ｆが上昇する。スキーマＡは、Ｆが閾値Ｆｔｈを超えると、時間ｔ２の間はその選択が禁止され、スキーマＡと同一の欲求αを有するスキーマＢが選択され代わりの動作が発現される。【選択図】  図１８
2004283957.tif 000002
【特許請求の範囲】
【請求項１】
所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するロボット装置において、
上記複数の動作から発現する動作を選択する選択手段と、
上記選択手段により選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出手段と、
上記フラストレーション値に応じて上記選択された動作を変化させる制御手段とを有することを特徴とするロボット装置。
【請求項２】
上記フラストレーション値算出手段は、上記選択された動作が満たすとされる内部状態を満たさない場合、その経過時間に応じて上記フラストレーション値を算出することを特徴とする請求項１記載のロボット装置。
【請求項３】
上記制御手段は、上記選択された動作の上記フラストレーション値が所定の閾値を超えた場合、上記選択手段が当該動作を選択することを所定期間禁止することを特徴とする請求項２記載のロボット装置。
【請求項４】
上記制御手段は、上記選択された動作の上記フラストレーション値が所定の閾値を超えた場合、上記選択手段が当該動作とは異なる他の動作を選択するよう制御することを特徴とする請求項３記載のロボット装置。
【請求項５】
上記フラストレーション値の閾値及び上記動作の選択が禁止される期間は、各動作毎に可変設定されるものであることを特徴とする請求項３記載のロボット装置。
【請求項６】
上記選択された動作とは異なる他の動作は、上記選択された動作と同種の内部状態を満たすものであることを特徴とする請求項４記載のロボット装置。
【請求項７】
外部刺激及び内部状態に基づき、各動作を発現する際の優先度を算出する優先度算出手段を有し、
上記選択手段は、上記優先度に基づき上記動作を選択することを特徴とする請求項１記載のロボット装置。
【請求項８】
上記フラストレーション値に基づき内部状態を変化させることを特徴とする請求項１記載のロボット装置。
【請求項９】
機体動作が記述され、外部刺激及び内部状態に基づき該機体動作を発現する優先度を示すアクティベーションレベルと、上記フラストレーション値とを算出する複数の行動記述モジュールを有することを特徴とする請求項１記載のロボット装置。
【請求項１０】
上記内部状態は、複数の情動を示すパラメータを有し、
上記情動を示すパラメータは、上記動作が終了するか又は次の動作に移行された場合に変動することを特徴とする請求項９記載のロボット装置。
【請求項１１】
上記行動記述モジュールは、自身のアクティベーションレベルに応じて選択されると発現する第１の機体動作と、自身のフラストレーション値が所定の閾値以上となった場合に、該第１の機体動作を停止して、代わりに発現する第２の機体動作とが記述されていることを特徴とする請求項１０記載のロボット装置。
【請求項１２】
第１の機体動作及び該第１の機体動作が停止した場合に代わりに発現する第２の機体動作が記述された夫々第１の行動記述モジュール及び第２の行動記述モジュールを有し、
上記制御手段は、上記第１の行動記述モジュールのフラストレーション値が所定の閾値以上となった場合に、上記第１の機体動作を停止し、上記第２の行動記述モジュールを選択して上記第２の機体動作を発現させることを特徴とする請求項１０記載のロボット装置。
【請求項１３】
上記第２の行動記述モジュールは、上記アクティベーションレベルが上記第１の行動記述モジュールの次に高い値を有することを特徴とする請求項１２記載のロボット装置。
【請求項１４】
所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するロボット装置の制御方法において、
上記複数の動作から発現する動作を選択する選択工程と、
上記選択工程にて選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出工程と、
上記フラストレーション値に応じて上記選択された動作を変化させる制御工程とを有することを特徴とするロボット装置の制御方法。
【請求項１５】
上記フラストレーション値算出工程では、上記選択された動作が満たすとされる内部状態を満たさない場合、その経過時間に応じて上記フラストレーション値が算出されることを特徴とする請求項１４記載のロボット装置の制御方法。
【請求項１６】
上記制御工程では、上記選択された動作の上記フラストレーション値が所定の閾値を超えた場合、当該動作を選択することが所定期間禁止されることを特徴とする請求項１５記載のロボット装置の制御方法。
【請求項１７】
上記制御工程では、上記選択された動作の上記フラストレーション値が所定の閾値を超えた場合、当該動作とは異なる他の動作を選択するよう制御されることを特徴とする請求項１６記載のロボット装置の制御方法。
【請求項１８】
上記フラストレーション値の閾値及び上記動作の選択が禁止される期間は、各動作毎に可変設定されるものであることを特徴とする請求項１６記載のロボット装置の制御方法。
【請求項１９】
上記選択された動作とは異なる他の動作は、上記選択された動作と同種の内部状態を満たすものであることを特徴とする請求項１７記載のロボット装置の制御方法。
【請求項２０】
外部刺激及び内部状態に基づき、各動作を発現する際の優先度を算出する優先度算出工程を有し、
上記選択工程では、上記優先度に基づき上記動作が選択されることを特徴とする請求項１４記載のロボット装置の制御方法。
【請求項２１】
上記フラストレーション値に基づき内部状態を変化させることを特徴とする請求項１４記載のロボット装置の制御方法。
【請求項２２】
上記選択工程では、外部刺激及び内部状態に基づき、行動記述モジュールにより算出される上記機体動作を発現する優先度を示すアクティベーションレベルに応じて上記動作が選択され、
上記フラストレーション値算出工程では、上記行動記述モジュールにより上記フラストレーション値が算出される
ことを特徴とする請求項２１記載のロボット装置の制御方法。
【請求項２３】
所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するような動作をコンピュータに実行させるためのプログラムにおいて、
上記複数の動作から発現する動作を選択する選択工程と、
上記選択工程にて選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出工程と、
上記フラストレーション値に応じて上記選択された動作を変化させる制御工程とを有することを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ロボット装置、その制御方法及びプログラムに関し、特に、人間や動物を模倣したエンターテイメント性を有するロボット装置、その制御方法及びプログラムに関する。
【０００２】
【従来の技術】
電気的又は磁気的な作用を用いて人間（生物）の動作に似た運動を行う機械装置を「ロボット装置」という。我が国においてロボット装置が普及し始めたのは、１９６０年代末からであるが、その多くは、工場における生産作業の自動化・無人化等を目的としたマニピュレータ及び搬送ロボット装置等の産業用ロボット装置（Ｉｎｄｕｓｔｒｉａｌ  Ｒｏｂｏｔ）であった。
【０００３】
最近では、人間のパートナーとして生活を支援する、即ち住環境その他の日常生活上の様々な場面における人的活動を支援する実用ロボット装置の開発が進められている。このような実用ロボット装置は、産業用ロボット装置とは異なり、人間の生活環境の様々な局面において、個々に個性の相違した人間、又は様々な環境への適応方法を自ら学習する能力を備えている。例えば、犬又は猫のように４足歩行の動物の身体メカニズム及びその動作を模した「ペット型」ロボット装置、或いは、２足直立歩行を行う人間等の身体メカニズム及びその動作をモデルにしてデザインされた「人間型」又は「人間形」ロボット装置（Ｈｕｍａｎｏｉｄ  Ｒｏｂｏｔ）等のロボット装置は、既に実用化されつつある。
【０００４】
これらのロボット装置は、産業用ロボット装置と比較して、例えばエンターテインメント性を重視した様々な動作等を行うことができるため、エンターテインメントロボット装置と呼称される場合もある。また、そのようなロボット装置には、外部からの情報及び内部の状態に応じて自律的に動作するものがある。
【０００５】
ところで、かかるペットロボット装置においては、人間又は本物の犬や猫などのように、現在の状況に応じた最適な次の行動及び動作を行わせる機能や、過去の経験に基づいて次の行動及び動作を変化させる機能を搭載することができれば、より一層の親近感や満足感をユーザに与えて、ペットロボット装置としてのアミューズメント性をより向上させることができる。そこで、このようなアミューズメント性の向上を図ったロボット装置及びその制御方法が下記特許文献１に記載されている。
【０００６】
この特許文献１に記載されたロボット装置においては、複数種類の行動モデルを有し、行動選択手段を用いて、外部からの入力情報と自己の行動履歴及び又は成長履歴との少なくとも一方に基づいて、各行動モデルの出力の中から１つの行動モデルの出力を選択するよう構成されており、これにより、現在の状況に応じた最適な次の行動を連続して行わせることができる。
【０００７】
【特許文献１】
特開２００１−１５７９８１号公報
【０００８】
【発明が解決しようとする課題】
ところで、上記特許文献１等に記載の従来のロボット装置においては、予め定められた優先順位の高い行動モデルから出力された行動を選択するようになされているものの、選択された行動は、所定の終了条件を満たすまで行われる。又は所定の移行条件を満たすまでは次の行動に移行せず、同じ行動が継続される。即ち、ロボット装置は、自身がやりたいと判断した行動を選択することができるが、これを終了するには、選択した行動の終了又は移行条件を満たす必要があった。従って、選択した行動が終了又は移行条件を満たすまでは、他の行動が発現されずに同じ行動をやり続けていた。
【０００９】
しかしながら、一度選択されて発現されている行動を、人間等と同様に例えばうまくできなければ、不快になる、悲しくなる等の感情を有して、これを動作に反映させることができれば、うまくできない行動は途中で止めてしまったり、これをユーザに伝えたりすることができ、より人間又は犬や猫等の動物の行動に模したものとなり、更に一層の親近感や満足感をユーザに与えることができて、エンターテイメント性を更に向上させることができる。
【００１０】
本発明は、このような従来の実情に鑑みて提案されたものであり、行動の発現中においても、外部環境及び自身の内部状態を考慮することができ、これを行動に反映させ多彩な行動バリエーションを持たせ、更にエンターテイメント性を向上することができるロボット装置、その制御方法及びプログラムを提供することを目的とする。
【００１１】
【課題を解決するための手段】
上述した目的を達成するために、本発明に係るロボット装置は、所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するロボット装置において、上記複数の動作から発現する動作を選択する選択手段と、上記選択手段に選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出手段と、上記フラストレーション値に応じて上記選択された動作を変化させる制御手段を有することを特徴とする。
【００１２】
本発明においては、所定の終了条件を有する動作、即ち、所定の目的を達成するための動作を複数有し、動作開始後の経過時間に応じて変動するフラストレーション値を算出し、これを使用することによって、動作を変化させることができ、例えば、一度選択された動作を途中で停止させたり、又は当該動作の選択を所定期間禁止したり、更には、そのような場合に違う行動を選択する状況を作り出したり、また、上記フラストレーション値に応じて感情（内部状態）を変化させてこれを動作に反映させたりすることができ、例えば、当該動作の選択を所定期間禁止することで、この所定期間内に再度同じ状況・同じ条件になった場合に繰り返し同じ動作を選択するのを防ぐことができる。
【００１３】
本発明に係るロボット装置の制御方法は、所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するロボット装置の制御方法において、上記複数の動作から発現する動作を選択する選択工程と、上記選択工程にて選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出工程と、上記フラストレーション値に応じて上記選択された動作を変化させる制御工程を有することを特徴とする。
【００１４】
また、本発明に係るプログラムは、上述した制御処理をコンピュータに実行させるものである。
【００１５】
【発明の実施の形態】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、ロボット装置自身の内部の状態を得る手段をもち、その内部状態と、ロボット装置の外部の状況から行動を選択するロボット装置において、心理学の観念を取り入れたフラストレーションという値を使用することによって、行動実行中の内部状態を行動に反映させ、例えば選択された行動を途中で終了することが可能になる等、多彩な動作バリエーションを有するロボット装置及びその行動制御方法に適用したものである。
【００１６】
ここでは先ず、このようなロボット装置の好適な構成、及び制御システムについて説明し、次に本実施の形態におけるフラストレーション値を算出可能なロボット装置について詳細に説明する。
【００１７】
（１）ロボット装置の構成
図１は、本実施の形態のロボット装置の外観を示す斜視図である。図１に示すように、ロボット装置１は、体幹部ユニット２の所定の位置に頭部ユニット３が連結されると共に、左右２つの腕部ユニット４Ｒ／Ｌと、左右２つの脚部ユニット５Ｒ／Ｌが連結されて構成されている（但し、Ｒ及びＬの各々は、右及び左の各々を示す接尾辞である。）。
【００１８】
図２は、本実施の形態におけるロボット装置１の機能構成を模式的に示すブロック図である。図２に示すように、ロボット装置１は、全体の動作の統括的制御及びその他のデータ処理を行う制御ユニット２０と、入出力部４０と、駆動部５０と、電源部６０とで構成される。以下、各部について説明する。
【００１９】
入出力部４０は、入力部として人間の目に相当し、外部の状況を撮影するＣＣＤカメラ１５、及び耳に相当するマイクロフォン１６や頭部や背中等の部位に配設され、所定の押圧を受けるとこれを電気的に検出することで、ユーザの接触を感知するタッチ・センサ１８、前方に位置する物体までの距離を測定するための距離センサ、五感に相当するその他の各種のセンサ等を含む。また、出力部として、頭部ユニット３に備えられ、人間の口に相当するスピーカ１７、及び人間の目の位置に設けられ、感情表現や視覚認識状態を表現する例えばＬＥＤインジケータ（目ランプ）１９等を装備しており、これら出力部は、音声やＬＥＤインジケータ１９の点滅等、脚等による機械運動パターン以外の形式でもロボット装置１からのユーザ・フィードバックを表現することができる。
【００２０】
例えば頭部ユニットの頭頂部の所定箇所に複数のタッチ・センサ１８を設け、各タッチ・センサ１８における接触検出を複合的に活用して、ユーザからの働きかけ、例えばロボット装置１の頭部を「撫でる」「叩く」「軽く叩く」等を検出することができ、例えば、押圧センサのうちの幾つかが所定時間をおいて順次接触したことを検出した場合、これを「撫でられた」と判別し、短時間のうちに接触を検出した場合、「叩かれた」と判別する等場合分けし、これに応じて内部状態も変化し、このような内部状態の変化に応じて動作を発現することができる。
【００２１】
駆動部５０は、制御ユニット２０が指令する所定の運動パターンに従ってロボット装置１の機体動作を実現する機能ブロックであり、行動制御による制御対象である。駆動部５０は、ロボット装置１の各関節における自由度を実現するための機能モジュールであり、それぞれの関節におけるロール、ピッチ、ヨー等各軸毎に設けられた複数の駆動ユニット５４１〜５４ｎで構成される。各駆動ユニット５４１〜５４ｎは、所定軸回りの回転動作を行うモータ５１１〜５１ｎと、モータ５１１〜５１ｎの回転位置を検出するエンコーダ５２１〜５２ｎと、エンコーダ５２１〜５２ｎの出力に基づいてモータ５１１〜５１ｎの回転位置や回転速度を適応的に制御するドライバ５３１〜５３ｎとの組み合わせで構成される。
【００２２】
本ロボット装置１は、２足歩行としたが、駆動ユニットの組み合わせ方によって、ロボット装置１を例えば４足歩行等の脚式移動ロボット装置として構成することもできる。
【００２３】
電源部６０は、その字義通り、ロボット装置１内の各電気回路等に対して給電を行う機能モジュールである。本実施の形態に係るロボット装置１は、バッテリを用いた自律駆動式であり、電源部６０は、充電バッテリ６１と、充電バッテリ６１の充放電状態を管理する充放電制御部６２とで構成される。
【００２４】
充電バッテリ６１は、例えば、複数本のリチウムイオン２次電池セルをカートリッジ式にパッケージ化した「バッテリ・パック」の形態で構成される。
【００２５】
また、充放電制御部６２は、バッテリ６１の端子電圧や充電／放電電流量、バッテリ６１の周囲温度等を測定することでバッテリ６１の残存容量を把握し、充電の開始時期や終了時期等を決定する。充放電制御部６２が決定する充電の開始及び終了時期は制御ユニット２０に通知され、ロボット装置１が充電オペレーションを開始及び終了するためのトリガとなる。
【００２６】
制御ユニット２０は、人間の「頭脳」に相当し、例えばロボット装置１の機体頭部あるいは胴体部等に搭載することができる。
【００２７】
図３は、制御ユニット２０の構成を更に詳細に示すブロック図である。図３に示すように、制御ユニット２０は、メイン・コントローラとしてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１が、メモリ及びその他の各回路コンポーネントや周辺機器とバス接続された構成となっている。バス２８は、データ・バス、アドレス・バス、コントロール・バス等を含む共通信号伝送路である。バス２８上の各装置にはそれぞれに固有のアドレス（メモリ・アドレス又はＩ／Ｏアドレス）が割り当てられている。ＣＰＵ２１は、アドレスを指定することによってバス２８上の特定の装置と通信することができる。
【００２８】
ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２２は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）等の揮発性メモリで構成された書き込み可能メモリであり、ＣＰＵ２１が実行するプログラム・コードをロードしたり、実行プログラムによる作業データの一時的に保存そたりするために使用される。
【００２９】
ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２３は、プログラムやデータを恒久的に格納する読み出し専用メモリである。ＲＯＭ２３に格納されるプログラム・コードには、ロボット装置１の電源投入時に実行する自己診断テスト・プログラムや、ロボット装置１の動作を規定する動作制御プログラム等が挙げられる。
【００３０】
ロボット装置１の制御プログラムには、カメラ１５やマイクロフォン１６等のセンサ入力を処理してシンボルとして認識する「センサ入力・認識処理プログラム」、短期記憶や長期記憶等の記憶動作（後述）を司りながらセンサ入力と所定の行動制御モデルとに基づいてロボット装置１の行動（動作）を制御する「行動制御プログラム」、行動制御モデルに従って各関節モータの駆動やスピーカ１７の音声出力等を制御する「駆動制御プログラム」等が含まれる。
【００３１】
不揮発性メモリ２４は、例えばＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）のように電気的に消去再書き込みが可能なメモリ素子で構成され、逐次更新すべきデータを不揮発的に保持するために使用される。逐次更新すべきデータには、暗号鍵やその他のセキュリティ情報、出荷後にインストールすべき装置制御プログラム等が挙げられる。
【００３２】
インターフェース２５は、制御ユニット２０外の機器と相互接続し、データ交換を可能にするための装置である。インターフェース２５は、例えば、カメラ１５、マイクロフォン１６、又はスピーカ１７等との間でデータ入出力を行う。また、インターフェース２５は、駆動部５０内の各ドライバ５３１〜５３ｎとの間でデータやコマンドの入出力を行う。
【００３３】
また、インターフェース２５は、ＲＳ（Ｒｅｃｏｍｍｅｎｄｅｄ  Ｓｔａｎｄａｒｄ）−２３２Ｃ等のシリアル・インターフェース、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）１２８４等のパラレル・インターフェース、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インターフェース、ｉ−Ｌｉｎｋ（ＩＥＥＥ１３９４）インターフェース、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）インターフェース、ＰＣカードやメモリ・スティックを受容するメモリ・カード・インターフェース（カード・スロット）等のような、コンピュータの周辺機器接続用の汎用インターフェースを備え、ローカル接続された外部機器との間でプログラムやデータの移動を行うようにしてもよい。
【００３４】
また、インターフェース２５の他の例として、赤外線通信（ＩｒＤＡ）インターフェースを備え、外部機器と無線通信を行うようにしてもよい。
【００３５】
更に、制御ユニット２０は、無線通信インターフェース２６やネットワーク・インターフェース・カード（ＮＩＣ）２７等を含み、Ｂｌｕｅｔｏｏｔｈのような近接無線データ通信や、ＩＥＥＥ  ８０２．１１ｂのような無線ネットワーク、あるいはインターネット等の広域ネットワークを経由して、外部のさまざまなホスト・コンピュータとデータ通信を行うことができる。
【００３６】
このようなロボット装置１とホスト・コンピュータ間におけるデータ通信により、遠隔のコンピュータ資源を用いて、ロボット装置１の複雑な動作制御を演算したり、リモート・コントロールしたりすることができる。
【００３７】
（２）ロボット装置の制御システム
次に、ロボット装置の制御システムについて説明する。図４は、本実施の形態におけるロボット装置１の制御システム１０の機能構成を示す模式図である。本実施の形態におけるロボット装置１は、外部刺激の認識結果や内部状態の変化に応じて、動作制御を行なうことができるものである。また、長期記憶機能を備え、外部刺激から内部状態の変化を連想記憶することにより、外部刺激の認識結果や内部状態の変化に応じて動作制御を行うことができる。
【００３８】
ここで、外的刺激とは、ロボット装置１がセンサ入力を認識して得られた知覚情報であり、例えば、カメラ１５から入力された画像に対して処理された色情報、形情報、顔情報等であり、より具体的には、色、形、顔、３Ｄ一般物体、ハンドジェスチャー、動き、音声、接触、匂い、味等の構成要素からなる。
【００３９】
また、内的状態とは、例えば、ロボット装置の身体に基づいた本能や感情等の情動を指す。本能的要素は、例えば、疲れ（ｆａｔｉｇｕｅ）、熱あるいは体内温度（ｔｅｍｐｅｒａｔｕｒｅ）、痛み（ｐａｉｎ）、食欲あるいは飢え（ｈｕｎｇｅｒ）、乾き（ｔｈｉｒｓｔ）、愛情（ａｆｆｅｃｔｉｏｎ）、好奇心（ｃｕｒｉｏｓｉｔｙ）、排泄（ｅｌｉｍｉｎａｔｉｏｎ）又は性欲（ｓｅｘｕａｌ）のうちの少なくとも１つである。また、情動的要素は、幸せ（ｈａｐｐｉｎｅｓｓ）、悲しみ（ｓａｄｎｅｓｓ）、怒り（ａｎｇｅｒ）、驚き（ｓｕｒｐｒｉｓｅ）、嫌悪（ｄｉｓｇｕｓｔ）、恐れ（ｆｅａｒ）、苛立ち（ｆｒｕｓｔｒａｔｉｏｎ）、退屈（ｂｏｒｅｄｏｍ）、睡眠（ｓｏｍｎｏｌｅｎｃｅ）、社交性（ｇｒｅｇａｒｉｏｕｓｎｅｓｓ）、根気（ｐａｔｉｅｎｃｅ）、緊張（ｔｅｎｓｅ）、リラックス（ｒｅｌａｘｅｄ）、警戒（ａｌｅｒｔｎｅｓｓ）、罪（ｇｕｉｌｔ）、悪意（ｓｐｉｔｅ）、誠実さ（ｌｏｙａｌｔｙ）、服従性（ｓｕｂｍｉｓｓｉｏｎ）又は嫉妬（ｊｅａｌｏｕｓｙ）のうちの少なくとも１つである。
【００４０】
図示の制御システム１０には、オブジェクト指向プログラミングを採り入れて実装することができる。この場合、各ソフトウェアは、データとそのデータに対する処理手続きとを一体化させた「オブジェクト」というモジュール単位で扱われる。また、各オブジェクトは、メッセージ通信と共有メモリを使ったオブジェクト間通信方法によりデータの受け渡しとＩｎｖｏｋｅを行なうことができる。
【００４１】
制御システム１０は、外部環境（Ｅｎｖｉｒｏｎｍｅｎｔｓ）７０を認識するために、視覚認識機能部８１、聴覚認識機能部８２、及び接触認識機能部８３等からなる機能モジュールである状態認識部８０を備えている。
【００４２】
視覚認識機能部（Ｖｉｄｅｏ）８１は、例えば、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ：電荷結合素子）カメラのような画像入力装置を介して入力された撮影画像を基に、顔認識や色認識等の画像認識処理や特徴抽出を行う。また、聴覚認識機能部（Ａｕｄｉｏ）８２は、マイク等の音声入力装置を介して入力される音声データを音声認識して、特徴抽出したり、単語セット（テキスト）認識を行ったりする。更に、接触認識機能部（Ｔａｃｔｉｌｅ）８３は、例えば機体の頭部等に内蔵された接触センサによるセンサ信号を認識して、「なでられた」とか「叩かれた」という外部刺激を認識する。
【００４３】
内部状態管理部（ＩＳＭ：Ｉｎｔｅｒｎａｌ  Ｓｔａｔｕｓ  Ｍａｎａｇｅｒ）９１は、上述した本能や感情といった数種類の情動を数式モデル化して管理しており、上述の視覚認識機能部８１、聴覚認識機能部８２、及び接触認識機能部８３によって認識された外部刺激（ＥＳ：ＥｘｔｅｒｎａｌＳｔｉｍｕｌａ）に応じてロボット装置１の本能や情動といった内部状態を管理する。
【００４４】
このような感情モデルと本能モデルは、それぞれ認識結果と行動（動作）履歴を入力に持ち、感情値と本能値を管理している。行動モデルは、これら感情値や本能値を参照することができる。
【００４５】
また、外部刺激の認識結果や内部状態の変化に応じて動作制御を行なうために、時間の経過とともに失われる短期的な記憶を行なう短期記憶部（ＳＴＭ：Ｓｈｏｒｔ  Ｔｅｒｍ  Ｍｅｍｏｒｙ）９２と、情報を比較的長期間保持するための長期記憶部（ＬＴＭ：Ｌｏｎｇ  Ｔｅｒｍ  Ｍｅｍｏｒｙ）９３を備えている。短期記憶と長期記憶という記憶メカニズムの分類は神経心理学に依拠する。
【００４６】
短期記憶部９２は、上述の視覚認識機能部８１、聴覚認識機能部８２、及び接触認識機能部８３によって外部環境から認識されたターゲットやイベントを短期間保持する機能モジュールである。例えば、図２に示すカメラ１５からの入力画像を約１５秒程度の短い期間だけ記憶する。
【００４７】
長期記憶部９３は、物の名前等学習により得られた情報を長期間保持するために使用される。長期記憶部９３は、例えば、ある行動記述モジュールにおいて外部刺激から内部状態の変化を連想記憶することができる。
【００４８】
また、本ロボット装置１の動作制御は、反射行動部（Ｒｅｆｌｅｘｉｖｅ  Ｓｉｔｕａｔｅｄ  Ｂｅｈａｖｉｏｒｓ  Ｌａｙｅｒ）１０３によって実現される「反射行動」と、状況依存行動階層（ＳＢＬ：Ｓｉｔｕａｔｅｄ  Ｂｅｈａｖｉｏｒｓ  Ｌａｙｅｒ）１０２によって実現される「状況依存行動」と、熟考行動階層（Ｄｅｌｉｂｅｒａｔｉｖｅ  Ｌａｙｅｒ）１０１によって実現される「熟考行動」に大別される。
【００４９】
反射行動部１０３は、上述の視覚認識機能部８１、聴覚認識機能部８２、及び接触認識機能部８３によって認識された外部刺激に応じて反射的な機体動作を実現する機能モジュールである。反射行動とは、基本的に、センサ入力された外部情報の認識結果を直接受けて、これを分類して、出力行動（動作）を直接決定する行動のことである。例えば、人間の顔を追いかけたり、うなずいたりといった振る舞いは反射行動として実装することが好ましい。
【００５０】
状況依存行動階層１０２は、短期記憶部９２及び長期記憶部９３の記憶内容や、内部状態管理部９１によって管理される内部状態を基に、ロボット装置１が現在置かれている状況に即応した行動を制御する。
【００５１】
状況依存行動階層１０２は、目的に応じた行動（動作）が記述された複数の行動記述モジュール（スキーマ）を有し、各行動（スキーマ）毎にステートマシンを用意しており、それ以前の動作や状況に依存して、センサ入力された外部情報の認識結果を分類して、動作を機体上で発現する。また、状況依存行動階層１０２は、内部状態をある範囲に保つための行動（「ホメオスタシス行動」とも呼ぶ）も実現し、内部状態が指定した範囲内を越えた場合には、その内部状態を当該範囲内に戻すための行動が出現し易くなるようにその行動を活性化させる（実際には、内部状態と外部環境の両方を考慮した形で行動（動作）が選択される）。
【００５２】
具体的には、各スキーマが、内部状態の変化及び外部刺激に基づき、そのスキーマの実行優先度を示す活動度レベル（アクティベーションレベル：ａｃｔｉｖａｔｉｏｎ  ｌｅｖｅｌ、以下ＡＬともいう。）を算出し、このアクティベーションレベルが高いスキーマが１以上選択され、選択された動作が発現されるようになされている。即ち、例えばアクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた２以上のスキーマを選択して並列的に実行したりすることができる（但し、並列実行するときは各スキーマどうしでハードウェアリソースの競合がないことを前提とする）。この状況依存行動は、反射行動に比し、反応時間が遅い。
【００５３】
熟考行動階層１０１は、短期記憶部９２及び長期記憶部９３の記憶内容に基づいて、ロボット装置１の比較的長期にわたる行動計画等を行う。熟考行動とは、与えられた状況あるいは人間からの命令により、推論やそれを実現するための計画を立てて行われる行動のことである。例えば、ロボット装置の位置と目標の位置から経路を探索することは熟考行動に相当する。このような推論や計画は、ロボット装置１がインタラクションを保つための反応時間よりも処理時間や計算負荷を要する（すなわち処理時間がかかる）可能性があるので、上記の反射行動や状況依存行動がリアルタイムで反応を返しながら、熟考行動は推論や計画を行う。
【００５４】
熟考行動階層１０１、状況依存行動階層１０２、及び反射行動部１０３は、ロボット装置１のハードウェア構成に非依存の上位のアプリケーション・プログラムとして記述することができる。これに対し、ハードウェア依存層制御部（Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｄｅｐｅｎｄｅｎｔ  Ａｃｔｉｏｎｓ  Ａｎｄ  Ｒｅａｃｔｉｏｎｓ）１０４は、これら上位アプリケーション、即ち、行動記述モジュール（スキーマ）からの命令に応じて、関節アクチュエータの駆動等の機体のハードウェア（外部環境）を直接操作する。このような構成により、ロボット装置１は、制御プログラムに基づいて自己及び周囲の状況を判断し、使用者からの指示及び働きかけに応じて自律的に行動できる。
【００５５】
次に、行動制御システム１０について更に詳細に説明する。図５は、本実施の形態における行動制御システム１０のオブジェクト構成を示す模式図である。
【００５６】
図５に示すように、視覚認識機能部８１は、Ｆａｃｅ  Ｄｅｔｅｃｔｏｒ１１４、Ｍｕｌｉｔ  Ｃｏｌｏｒ  Ｔｒａｃｋｅｒ１１３、Ｆａｃｅ  Ｉｄｅｎｔｉｆｙ１１５という３つのオブジェクトで構成される。
【００５７】
Ｆａｃｅ  Ｄｅｔｅｃｔｏｒ１１４は、画像フレーム中から顔領域を検出するオブジェクトであり、検出結果をＦａｃｅ  Ｉｄｅｎｔｉｆｙ１１５に出力する。Ｍｕｌｉｔ  Ｃｏｌｏｒ  Ｔｒａｃｋｅｒ１１３は、色認識を行うオブジェクトであり、認識結果をＦａｃｅ  Ｉｄｅｎｔｉｆｙ１１５及びＳｈｏｒｔ  Ｔｅｒｍ  Ｍｅｍｏｒｙ（ＳＴＭ）９２に出力する。また、Ｆａｃｅ  Ｉｄｅｎｔｉｆｙ１１５は、検出された顔画像を手持ちの人物辞書で検索する等して人物の識別を行ない、顔画像領域の位置、大きさ情報とともに人物のＩＤ情報をＳＴＭ９２に出力する。
【００５８】
聴覚認識機能部８２は、Ａｕｄｉｏ  Ｒｅｃｏｇ１１１とＳｐｅｅｃｈ  Ｒｅｃｏｇ１１２という２つのオブジェクトで構成される。Ａｕｄｉｏ  Ｒｅｃｏｇ１１１は、マイク等の音声入力装置からの音声データを受け取って、特徴抽出と音声区間検出を行うオブジェクトであり、音声区間の音声データの特徴量及び音源方向をＳｐｅｅｃｈ  Ｒｅｃｏｇ１１２やＳＴＭ９２に出力する。Ｓｐｅｅｃｈ  Ｒｅｃｏｇ１１２は、Ａｕｄｉｏ  Ｒｅｃｏｇ１１１から受け取った音声特徴量と音声辞書及び構文辞書を使って音声認識を行うオブジェクトであり、認識された単語のセットをＳＴＭ９２に出力する。
【００５９】
触覚認識記憶部８３は、接触センサからのセンサ入力を認識するＴａｃｔｉｌｅ  Ｓｅｎｓｏｒ１１９というオブジェクトで構成され、認識結果はＳＴＭ９２や内部状態を管理するオブジェクトであるＩｎｔｅｒｎａｌ  Ｓｔａｔｅ  Ｍｏｄｅｌ（ＩＳＭ）９１に出力する。
【００６０】
ＳＴＭ９２は、短期記憶部を構成するオブジェクトであり、上述の認識系の各オブジェクトによって外部環境から認識されたターゲットやイベントを短期間保持（例えばカメラ１５からの入力画像を約１５秒程度の短い期間だけ記憶する）する機能モジュールであり、ＳＴＭクライアントであるＳＢＬ１０２に対して外部刺激の通知（Ｎｏｔｉｆｙ）を定期的に行なう。
【００６１】
ＬＴＭ９３は、長期記憶部を構成するオブジェクトであり、物の名前等学習により得られた情報を長期間保持するために使用される。ＬＴＭ９３は、例えば、ある行動記述モジュール（スキーマ）において外部刺激から内部状態の変化を連想記憶することができる。
【００６２】
ＩＳＭ９１は、内部状態管理部を構成するオブジェクトであり、本能や感情といった数種類の情動を数式モデル化して管理しており、上述の認識系の各オブジェクトによって認識された外部刺激（ＥＳ：Ｅｘｔｅｒｎａｌ  Ｓｔｉｍｕｌａ）に応じてロボット装置１の本能や情動といった内部状態を管理する。
【００６３】
ＳＢＬ１０２は状況依存型行動階層を構成するオブジェクトである。ＳＢＬ１０２は、ＳＴＭ９２のクライアント（ＳＴＭクライアント）となるオブジェクトであり、ＳＴＭ９２からは定期的に外部刺激（ターゲットやイベント）に関する情報の通知（Ｎｏｔｉｆｙ）を受け取ると、スキーマ（Ｓｃｈｅｍａ）すなわち実行すべき行動記述モジュールを決定する（後述）。
【００６４】
ＲｅｆｌｅｘｉｖｅＳＢＬ（Ｓｉｔｕａｔｅｄ  Ｂｅｈａｖｉｏｒｓ  Ｌａｙｅｒ）１０３は、反射的行動部を構成するオブジェクトであり、上述した認識系の各オブジェクトによって認識された外部刺激に応じて反射的・直接的な機体動作を実行する。例えば、人間の顔を追いかけたり、うなずく、障害物の検出により咄嗟に避けるといった振る舞いを行なう。
【００６５】
ＳＢＬ１０２は外部刺激や内部状態の変化等の状況に応じた動作を選択する。これに対し、ＲｅｆｌｅｘｉｖｅＳＢＬ１０３は、外部刺激に応じて反射的な動作を選択する。これら２つのオブジェクトによる行動選択は独立して行なわれるため、互いに選択された行動記述モジュール（スキーマ）を機体上で実行する場合に、ロボット装置１のハードウェア・リソースが競合して実現不可能なこともある。ＲＭ（Ｒｅｓｏｕｒｃｅ  Ｍａｎａｇｅｒ）１１６というオブジェクトは、ＳＢＬ１０２とＲｅｆｌｅｘｉｖｅＳＢＬ１０３とによる行動選択時のハードウェアの競合を調停する。そして、調停結果に基づいて機体動作を実現する各オブジェクトに通知することにより機体が駆動する。
【００６６】
Ｓｏｕｎｄ  Ｐｅｒｆｏｒｍｅｒ１７２、Ｍｏｔｉｏｎ  Ｃｏｎｔｒｏｌｌｅｒ１７３、ＬＥＤＣｏｎｔｒｏｌｌｅｒ１７４は、機体動作を実現するオブジェクトである。Ｓｏｕｎｄ  Ｐｅｒｆｏｒｍｅｒ１７２は、音声出力を行うためのオブジェクトであり、ＲＭ１１６経由でＳＢＬ１０２から与えられたテキスト・コマンドに応じて音声合成を行い、ロボット装置１の機体上のスピーカから音声出力を行う。また、Ｍｏｔｉｏｎ  Ｃｏｎｔｒｏｌｌｅｒ１７３は、機体上の各関節アクチュエータの動作を行なうためのオブジェクトであり、ＲＭ１１６経由でＳＢＬ１０２から手や脚等を動かすコマンドを受けたことに応答して、該当する関節角を計算する。また、ＬＥＤＣｏｎｔｒｏｌｌｅｒ１７４は、ＬＥＤ１９の点滅動作を行なうためのオブジェクトであり、ＲＭ１１６経由でＳＢＬ１０２からコマンドを受けたことに応答してＬＥＤ１９の点滅駆動を行なう。
【００６７】
（２−１）状況依存行動制御
次に、状況依存行動階層について更に詳細に説明する。図６には、状況依存行動階層（ＳＢＬ）（但し、反射行動部を含む）による状況依存行動制御の形態を模式的に示している。認識系の視覚認識機能部８１、聴覚認識機能部８２、及び接触認識機能部８３の機能モジュールによる外部環境７０の認識結果（センサ情報）１８２は、外部刺激１８３として状況依存行動階層（反射行動部１０３を含む）１０２ａに与えられる。また、認識系による外部環境７０の認識結果に応じた内部状態の変化１８４も状況依存行動階層１０２ａに与えられる。そして、状況依存行動階層１０２ａでは、外部刺激１８３や内部状態の変化１８４に応じて状況を判断して、行動選択を実現することができる。
【００６８】
図７には、図６に示した反射行動部１０３を含む状況依存行動階層（ＳＢＬ）１０２ａによる行動制御の基本的な動作例を示している。同図に示すように、状況依存行動階層１０２ａでは、外部刺激１８３や内部状態の変化１８４によって各行動記述モジュール（スキーマ）のアクティベーションレベルを算出して、アクティベーションレベルの度合いに応じてスキーマを選択して行動（動作）を実行する。アクティベーションレベルの算出には、例えばライブラリ１８５を利用することにより、すべてのスキーマについて統一的な計算処理を行なうことができる（以下、同様）。例えば、アクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた２以上のスキーマを選択して並列的に行動実行するようにしてもよい（但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする）。
【００６９】
また、図８には、図６に示した状況依存行動階層１０２ａにより反射行動を行なう場合の動作例を示している。この場合、同図に示すように、状況依存行動階層１０２ａに含まれる反射行動部（ＲｅｆｌｅｘｉｖｅＳＢＬ）１０３は、認識系の各オブジェクトによって認識された外部刺激１８３を直接入力としてアクティベーションレベルを算出して、アクティベーションレベルの度合いに応じてスキーマを選択して行動を実行する。この場合、内部状態の変化１８４は、アクティベーションレベルの計算には使用されない。
【００７０】
また、図９には、図６に示した状況依存行動階層１０２により感情表現を行なう場合の動作例を示している。内部状態管理部９１では、本能や感情等の情動を数式モデルとして管理しており、情動パラメータの状態値が所定値に達したことに応答して、状況依存行動階層１０２に内部状態の変化１８４を通知（Ｎｏｔｉｆｙ）する。状況依存行動階層１０２は、内部状態の変化１８４を入力としてアクティベーションレベルを算出して、アクティベーションレベルの度合いに応じてスキーマを選択して行動を実行する。この場合、認識系の各オブジェクトによって認識された外部刺激１８３は、内部状態管理部（ＩＳＭ）９１における内部状態の管理・更新に利用されるが、スキーマのアクティベーションレベルの算出には使用されない。
【００７１】
（２−２）スキーマ
図１０には、状況依存行動階層１０２が複数のスキーマ１３２によって構成されている様子を模式的に示している。状況依存行動階層１０２は、各行動記述モジュール、即ちスキーマ毎にステートマシンを用意しており、それ以前の行動（動作）や状況に依存して、センサ入力された外部情報の認識結果を分類し、動作を機体上で発現する。スキーマは、外部刺激や内部状態に応じた状況判断を行なうＭｏｎｉｔｏｒ機能と、行動実行に伴う状態遷移（ステートマシン）を実現するＡｃｔｉｏｎ機能とを備えたスキーマ（Ｓｃｈｅｍａ）１３２として記述される。
【００７２】
状況依存行動階層１０２ｂ（より厳密には、状況依存行動階層１０２のうち、通常の状況依存行動を制御する階層）は、複数のスキーマ１３２が階層的に連結されたツリー構造として構成され、外部刺激や内部状態の変化に応じてより最適なスキーマ１３２を統合的に判断して行動制御を行なうようになっている。ツリー３００は、例えば動物行動学的（Ｅｔｈｏｌｏｇｉｃａｌ）な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリー（又は枝）を含んでいる。
【００７３】
図１１には、状況依存行動階層１０２におけるスキーマのツリー構造を模式的に示している。同図に示すように、状況依存行動階層１０２は、短期記憶部９２から外部刺激の通知（Ｎｏｔｉｆｙ）を受けるルート・スキーマ２０１１、２０２１、２０３１を先頭に、抽象的な行動カテゴリから具体的な行動カテゴリに向かうように、各階層毎にスキーマが配設されている。例えば、ルート・スキーマの直近下位の階層では、「探索する（Ｉｎｖｅｓｔｉｇａｔｅ）」、「食べる（Ｉｎｇｅｓｔｉｖｅ）」、「遊ぶ（Ｐｌａｙ）」というスキーマ２０１２、２０２２、２０３２が配設される。そして、スキーマ２０１２「探索する（Ｉｎｖｅｓｔｉｇａｔｅ）」の下位には、「ＩｎｖｅｓｔｉｇａｔｉｖｅＬｏｃｏｍｏｔｉｏｎ」等というより具体的な探索行動を記述した複数のスキーマ２０１３が配設されている。同様に、スキーマ２０２２「食べる（Ｉｎｇｅｓｔｉｖｅ）」の下位には「Ｅａｔ」や「Ｄｒｉｎｋ」等のより具体的な飲食行動を記述した複数のスキーマ２０２３が配設され、スキーマ２０３２「遊ぶ（Ｐｌａｙ）」の下位には「ＰｌａｙＢｏｗｉｎｇ」、「ＰｌａｙＧｒｅｅｔｉｎｇ」等のより具体的な遊ぶ行動を記述した複数のスキーマ２０３３が配設されている。
【００７４】
図示の通り、各スキーマは外部刺激１８３と内部状態（の変化）１８４を入力している。また、各スキーマは、少なくともＭｏｎｉｔｏｒ関数とＡｃｔｉｏｎと関数を備えている。
【００７５】
ここで、Ｍｏｎｉｔｏｒ関数とは、外部刺激１８３と内部状態１８４に応じて当該スキーマのアクティベーションレベル（Ａｃｔｉｖａｔｉｏｎ  Ｌｅｖｅｌ：ＡＬ値）を算出する関数である。図１１に示すようなツリー構造を構成する場合、上位（親）のスキーマは外部刺激１８３と内部状態１８４を引数として下位（子供）のスキーマのＭｏｎｉｔｏｒ関数をコールすることができ、子供のスキーマはアクティベーションレベルを返り値とする。また、スキーマは自分のアクティベーションレベルを算出するために、更に子供のスキーマのＭｏｎｉｔｏｒ関数をコールすることができる。そして、ルートのスキーマには各サブツリーからのアクティベーションレベルが返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断することができる。
【００７６】
例えばアクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた２以上のスキーマを選択して並列的に行動実行するようにしてもよい（但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする）。
【００７７】
また、Ａｃｔｉｏｎ関数は、スキーマ自身が持つ行動を記述したステートマシンを備えている。図１１に示すようなツリー構造を構成する場合、親スキーマは、Ａｃｔｉｏｎ関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。本実施の形態では、ＡｃｔｉｏｎのステートマシンはＲｅａｄｙにならないと初期化されない。言い換えれば、中断しても状態はリセットされず、スキーマが実行中の作業データを保存することから、中断再実行が可能である。
【００７８】
図１２には、状況依存行動階層１０２において通常の状況依存行動を制御するためのメカニズムを模式的に示している。
【００７９】
同図に示すように、状況依存行動階層（ＳＢＬ）１０２には、短期記憶部（ＳＴＭ）９２から外部刺激１８３が入力（Ｎｏｔｉｆｙ）されるとともに、内部状態管理部９１から内部状態の変化１８４が入力される。状況依存行動階層１０２は、例えば動物行動学的（Ｅｔｈｏｌｏｇｉｃａｌ）な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリーで構成されており、ルート・スキーマは、外部刺激１８３の通知（Ｎｏｔｉｆｙ）に応答して、各サブツリーのＭｏｎｉｔｏｒ関数をコールし、その返り値としてのアクティベーションレベル（ＡＬ）値を参照して、統合的な行動選択を行ない、選択された行動を実現するサブツリーに対してＡｃｔｉｏｎ関数をコールする。また、状況依存行動階層１０２において決定された状況依存行動は、リソース・マネージャＲＭ１１６により反射行動部１０３による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作（Ｍｏｔｉｏｎ  Ｃｏｎｔｒｏｌｌｅｒ）に適用される。
【００８０】
また、状況依存行動層１０２のうち、反射的行動部１０３は、上述した認識系の各オブジェクトによって認識された外部刺激１８３に応じて、例えば、障害物の検出により咄嗟に避ける等、反射的・直接的な機体動作を実行する。このため、図１１に示す通常の状況依存行動を制御する場合とは相違し、図１０に示すように、認識系の各オブジェクトからの信号を直接入力する複数のスキーマ１４２が階層化されずに並列的に配置されている。
【００８１】
図１３には、反射行動部１０３におけるスキーマの構成を模式的に示している。同図に示すように、反射行動部１０３には、聴覚系の認識結果に応答して動作するスキーマとしてＡｖｏｉｄ  Ｂｉｇ  Ｓｏｕｎｄ２０４、Ｆａｃｅ  ｔｏ  Ｂｉｇ  Ｓｏｕｎｄ２０５及びＮｏｄｄｉｎｇ  Ｓｏｕｎｄ２０９、視覚系の認識結果に応答して動作するスキーマとしてＦａｃｅ  ｔｏ  Ｍｏｖｉｎｇ  Ｏｂｊｅｃｔ２０６及びＡｖｏｉｄ  Ｍｏｖｉｎｇ  Ｏｂｊｅｃｔ２０７、並びに、触覚系の認識結果に応答して動作するスキーマとして手を引っ込める２０８が、それぞれ対等な立場で（並列的に）配設されている。
【００８２】
図示の通り、反射的行動を行なう各スキーマは外部刺激１８３を入力に持つ。また、各スキーマは、少なくともＭｏｎｉｔｏｒ関数とＡｃｔｉｏｎ関数を備えている。Ｍｏｎｉｔｏｒ関数は、外部刺激１８３に応じて当該スキーマのアクティベーションレベルを算出して、これに応じて該当する反射的行動を発現すべきかどうかが判断される。また、Ａｃｔｉｏｎ関数は、スキーマ自身が持つ反射的行動を記述したステートマシン（後述）を備えており、コールされることにより、該当する反射的行動を発現するとともにＡｃｔｉｏｎの状態を遷移させていく。
【００８３】
図１４には、反射行動部１０３において反射的行動を制御するためのメカニズムを模式的に示している。図１３にも示したように、反射行動部１０３内には、反応行動を記述したスキーマや、即時的な応答行動を記述したスキーマが並列的に存在している。認識系の機能モジュール８０を構成する各オブジェクトから認識結果が入力されると、対応する反射行動スキーマがＡｏｎｉｔｏｒ関数によりアクティベーションレベルを算出し、その値に応じてＡｃｔｉｏｎを軌道すべきかどうかが判断される。そして、反射行動部１０３において起動が決定された反射的行動は、リソース・マネージャＲＭ１１６により状況依存行動階層１０２による状況依存行動とのハードウェア・リソースの競合の調停を経て、機体動作（Ｍｏｔｉｏｎ  Ｃｏｎｔｒｏｌｌｅｒ１７３）に適用される。
【００８４】
状況依存行動階層１０２及び反射行動部１０３を構成するスキーマは、例えばＣ＋＋言語ベースで記述される「クラス・オブジェクト」として記述することができる。図１５には、状況依存行動階層１０２において使用されるスキーマのクラス定義を模式的に示している。同図に示されている各ブロックはそれぞれ１つのクラス・オブジェクトに相当する。
【００８５】
図示の通り、状況依存行動階層（ＳＢＬ）１０２は、１以上のスキーマと、ＳＢＬ１０２の入出力イベントに対してＩＤを割り振るＥｖｅｎｔ  Ｄａｔａ  Ｈａｎｄｌｅｒ（ＥＤＨ）２１１と、ＳＢＬ１０２内のスキーマを管理するＳｃｈｅｍａ  Ｈａｎｄｌｅｒ（ＳＨ）２１２と、外部オブジェクト（ＳＴＭやＬＴＭ、リソース・マネージャ、認識系の各オブジェクト等）からデータを受信する１以上のＲｅｃｅｉｖｅ  Ｄａｔａ  Ｈａｎｄｌｅｒ（ＲＤＨ）２１３と、外部オブジェクトにデータを送信する１以上のＳｅｎｄ  Ｄａｔａ  Ｈａｎｄｌｅｒ（ＳＤＨ）２１４とを備えている。
【００８６】
Ｓｃｈｅｍａ  Ｈａｎｄｌｅｒ２１２は、状況依存行動階層（ＳＢＬ）１０２や反射行動部１０３を構成する各スキーマやツリー構造等の情報（ＳＢＬのコンフィギュレーション情報）をファイルとして保管している。例えばシステムの起動時等に、Ｓｃｈｅｍａ  Ｈａｎｄｌｅｒ２１２は、このコンフィギュレーション情報ファイルを読み込んで、図１１に示したような状況依存行動階層１０２のスキーマ構成を構築（再現）して、メモリ空間上に各スキーマのエンティティをマッピングする。
【００８７】
各スキーマは、スキーマのベースとして位置付けられるＯｐｅｎＲ＿Ｇｕｅｓｔ２１５を備えている。ＯｐｅｎＲ＿Ｇｕｅｓｔ２１５は、スキーマが外部にデータを送信するためのＤｓｕｂｊｅｃｔ２１６、並びに、スキーマが外部からデータを受信するためのＤＯｂｊｅｃｔ２１７というクラス・オブジェクトをそれぞれ１以上備えている。例えば、スキーマが、ＳＢＬ１０２の外部オブジェクト（ＳＴＭやＬＴＭ、認識系の各オブジェクト等）にデータを送るときには、Ｄｓｕｂｊｅｃｔ２１６はＳｅｎｄ  Ｄａｔａ  Ｈａｎｄｌｅｒ２１４に送信データを書き込む。また、ＤＯｂｊｅｃｔ２１７は、ＳＢＬ１０２の外部オブジェクトから受信したデータをＲｅｃｅｉｖｅ  Ｄａｔａ  Ｈａｎｄｌｅｒ２１３から読み取ることができる。
【００８８】
Ｓｃｈｅｍａ  Ｍａｎａｇｅｒ２１８及びＳｃｈｅｍａ  Ｂａｓｅ２１９は、ともにＯｐｅｎＲ＿Ｇｕｅｓｔ２１５を継承したクラス・オブジェクトである。クラス継承は、元のクラスの定義を受け継ぐことであり、この場合、ＯｐｅｎＲ＿Ｇｕｅｓｔ２１５で定義されているＤｓｕｂｊｅｃｔ２１６やＤＯｂｊｅｃｔ２１７等のクラス・オブジェクトをＳｃｈｅｍａ  Ｍａｎａｇｅｒ  Ｂａｓｅ２１８やＳｃｈｅｍａ  Ｂａｓｅ２１９も備えていることを意味する（以下、同様）。例えば図１１に示すように複数のスキーマがツリー構造になっている場合、Ｓｃｈｅｍａ  Ｍａｎａｇｅｒ  Ｂａｓｅ２１８は、子供のスキーマのリストを管理するクラス・オブジェクトＳｃｈｅｍａ  Ｌｉｓｔ２２０を持ち（子供のスキーマへのポインタを持ち）、子供スキーマの関数をコールすることができる。また、Ｓｃｈｅｍａ  Ｂａｓｅ２１９は、親スキーマへのポインタを持ち、親スキーマからコールされた関数の返り値を戻すことができる。
【００８９】
Ｓｃｈｅｍａ  Ｂａｓｅ２１９は、Ｓｔａｔｅ  Ｍａｃｈｉｎｅ２２１及びＰｒｏｎｏｍｅ２２２という２つのクラス・オブジェクトを持つ。Ｓｔａｔｅ  Ｍａｃｈｉｎｅ２２１は当該スキーマの行動（Ａｃｔｉｏｎ関数）についてのステートマシンを管理している。親スキーマは子供スキーマのＡｃｔｉｏｎ関数のステートマシンを切り替える（状態遷移させる）ことができる。また、Ｐｒｏｎｏｍｅ２２２には、当該スキーマが行動（Ａｃｔｉｏｎ関数）を実行又は適用するターゲットを代入する。後述するように、スキーマはＰｒｏｎｏｍｅ２２２に代入されたターゲットによって占有され、行動（動作）が終了（完結、異常終了等）するまでスキーマは解放されない。新規のターゲットのために同じ行動を実行するためには同じクラス定義のスキーマをメモリ空間上に生成する。この結果、同じスキーマをターゲット毎に独立して実行することができ（個々のスキーマの作業データが干渉し合うことはなく）、行動のＲｅｅｎｔｒａｎｃｅ性が確保される（後述）。
【００９０】
Ｐａｒｅｎｔ  Ｓｃｈｅｍａ  Ｂａｓｅ２２３は、Ｓｃｈｅｍａ  Ｍａｎａｇｅｒ２１８及びＳｃｈｅｍａ  Ｂａｓｅ２１９を多重継承するクラス・オブジェクトであり、スキーマのツリー構造において、当該スキーマ自身についての親スキーマ及び子供スキーマすなわち親子関係を管理する。
【００９１】
Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｐａｒｅｎｔ  Ｓｃｈｅｍａ  Ｂａｓｅ２２４は、Ｐａｒｅｎｔ  Ｓｃｈｅｍａ  Ｂａｓｅ２２３を継承するクラス・オブジェクトであり、各クラスのためのインターフェース変換を実現する。また、Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｐａｒｅｎｔ  Ｓｃｈｅｍａ  Ｂａｓｅ２２４は、Ｓｃｈｅｍａ  Ｓｔａｔｕｓ  Ｉｎｆｏ２２５を持つ。このＳｃｈｅｍａ  Ｓｔａｔｕｓ  Ｉｎｆｏ２２５は、当該スキーマ自身のステートマシンを管理するクラス・オブジェクトである。親スキーマは、子供スキーマのＡｃｔｉｏｎ関数をコールすることによってそのステートマシンの状態を切り換えることができる。また、子供スキーマのＭｏｎｉｔｏｒ関数をコールしてそのステートマシンの常態に応じたアクティベーションレベルを問うことができる。但し、スキーマのステートマシンは、前述したＡｃｔｉｏｎ関数のステートマシンとは異なるということを留意されたい。
【００９２】
Ａｎｄ  Ｐａｒｅｎｔ  Ｓｃｈｅｍａ２２６、Ｎｕｍ  Ｏｒ  Ｐａｒｅｎｔ  Ｓｃｈｅｍａ２２７、Ｏｒ  Ｐａｒｅｎｔ  Ｓｃｈｅｍａ２２８は、Ｉｎｔｅｒｍｅｄｉａｔｅ  Ｐａｒｅｎｔ  Ｓｃｈｅｍａ  Ｂａｓｅ２２４を継承するクラス・オブジェクトである。Ａｎｄ  Ｐａｒｅｎｔ  Ｓｃｈｅｍａ２２６は、同時実行する複数の子供スキーマへのポインタを持つ。Ｏｒ  Ｐａｒｅｎｔ  Ｓｃｈｅｍａ２２８は、いずれか択一的に実行する複数の子供スキーマへのポインタを持つ。また、Ｎｕｍ  Ｏｒ  Ｐａｒｅｎｔ  Ｓｃｈｅｍａ２２７は、所定数のみを同時実行する複数の子供スキーマへのポインタを持つ。
【００９３】
Ｐａｒｅｎｔ  Ｓｃｈｅｍａ２２９は、これらＡｎｄ  Ｐａｒｅｎｔ  Ｓｃｈｅｍａ２２６、Ｎｕｍ  Ｏｒ  Ｐａｒｅｎｔ  Ｓｃｈｅｍａ２２７、Ｏｒ  Ｐａｒｅｎｔ  Ｓｃｈｅｍａ２２８を多重継承するクラス・オブジェクトである。
【００９４】
図１６には、状況依存行動階層（ＳＢＬ）１０２内のクラスの機能的構成を模式的に示している。状況依存行動階層（ＳＢＬ）１０２は、ＳＴＭやＬＴＭ、リソース・マネージャ、認識系の各オブジェクト等外部オブジェクトからデータを受信する１以上のＲｅｃｅｉｖｅ  Ｄａｔａ  Ｈａｎｄｌｅｒ（ＲＤＨ）２１３と、外部オブジェクトにデータを送信する１以上のＳｅｎｄ  Ｄａｔａ  Ｈａｎｄｌｅｒ（ＳＤＨ）２１４とを備えている。
【００９５】
Ｅｖｅｎｔ  Ｄａｔａ  Ｈａｎｄｌｅｒ（ＥＤＨ）２１１は、ＳＢＬ１０２の入出力イベントに対してＩＤを割り振るためのクラス・オブジェクトであり、ＲＤＨ２１３やＳＤＨ２１４から入出力イベントの通知を受ける。
【００９６】
Ｓｃｈｅｍａ  Ｈａｎｄｌｅｒ２１２は、スキーマ１３２を管理するためのクラス・オブジェクトであり、ＳＢＬ１０２を構成するスキーマのコンフィギュレーション情報をファイルとして保管している。例えばシステムの起動時等に、Ｓｃｈｅｍａ  Ｈａｎｄｌｅｒ２１２は、このコンフィギュレーション情報ファイルを読み込んで、ＳＢＬ１０２内のスキーマ構成を構築する。
【００９７】
各スキーマは、図１５に示したクラス定義に従って生成され、メモリ空間上にエンティティがマッピングされる。各スキーマは、ＯｐｅｎＲ＿Ｇｕｅｓｔ２１５をベースのクラス・オブジェクトとし、外部にデータ・アクセスするためのＤＳｕｂｊｅｃｔ２１６やＤＯｂｊｅｃｔ２１７等のクラス・オブジェクトを備えている。
【００９８】
スキーマ１３２が主に持つ関数とステートマシンを以下に示しておく。以下の関数は、Ｓｃｈｅｍａ  Ｂａｓｅ２１９で記述されている。
ＡｃｔｉｖａｔｉｏｎＭｏｎｉｔｏｒ（）：スキーマがＲｅａｄｙ時にＡｃｔｉｖｅになるための評価関数
Ａｃｔｉｏｎｓ（）：Ａｃｔｉｖｅ時の実行用ステートマシン
Ｇｏａｌ（）：Ａｃｔｉｖｅ時にスキーマがＧｏａｌに達したかを評価する関数
Ｆａｉｌ（）：Ａｃｔｉｖｅ時にスキーマがｆａｉｌ状態かを判定する関数
ＳｌｅｅｐＡｃｔｉｏｎｓ（）：Ｓｌｅｅｐ前に実行されるステートマシン
ＳｌｅｅｐＭｏｎｉｔｏｒ（）：Ｓｌｅｅｐ時にＲｅｓｕｍｅするための評価関数
ＲｅｓｕｍｅＡｃｔｉｏｎｓ（）：Ｒｅｓｕｍｅ前にＲｅｓｕｍｅするためのステートマシン
ＤｅｓｔｒｏｙＭｏｎｉｔｏｒ（）：Ｓｌｅｅｐ時にスキーマがｆａｉｌ状態か判定する評価関数
ＭａｋｅＰｒｏｎｏｍｅ（）：ツリー全体のターゲットを決定する関数
【００９９】
（２−３）状況依存行動階層の機能
状況依存行動階層（ＳＢＬ）１０２は、短期記憶部９２及び長期記憶部９３の記憶内容や、内部状態管理部９１によって管理される内部状態を基に、ロボット装置１が現在置かれている状況に即応した動作を制御する。
【０１００】
前項で述べたように、本実施の形態における状況依存行動階層１０２は、スキーマのツリー構造（図１１を参照のこと）で構成されている。各スキーマは、自分の子供と親の情報を知っている状態で独立性を保っている。このようなスキーマ構成により、状況依存行動階層１０２は、Ｃｏｎｃｕｒｒｅｎｔな評価、Ｃｏｎｃｕｒｒｅｎｔな実行、Ｐｒｅｅｍｐｔｉｏｎ、Ｒｅｅｎｔｒａｎｔという主な特徴を持っている。以下、これらの特徴について詳解する。
【０１０１】
（２−３−１）Ｃｏｎｃｕｒｒｅｎｔな評価：
行動記述モジュールとしてのスキーマは外部刺激や内部状態の変化に応じた状況判断を行なうＭｏｎｉｔｏｒ機能を備えていることは既に述べた。Ｍｏｎｉｔｏｒ機能は、スキーマがクラス・オブジェクトＳｃｈｅｍａ  ＢａｓｅでＭｏｎｉｔｏｒ関数を備えていることにより実装されている。Ｍｏｎｉｔｏｒ関数とは、外部刺激と内部状態に応じて当該スキーマのアクティベーションレベルを算出する関数である。
【０１０２】
図１１に示すようなツリー構造を構成する場合、上位（親）のスキーマは外部刺激１８３と内部状態の変化１８４を引数として下位（子供）のスキーマのＭｏｎｉｔｏｒ関数をコールすることができ、子供のスキーマはアクティベーションレベルを返り値とする。また、スキーマは自分のアクティベーションレベルを算出するために、更に子供のスキーマのＭｏｎｉｔｏｒ関数をコールすることができる。そして、ルートのスキーマ２０１１〜２０３１には各サブツリーからのアクティベーションレベルが返されるので、外部刺激１８３と内部状態の変化１８４に応じた最適なスキーマすなわち動作を統合的に判断することができる。
【０１０３】
このようにツリー構造になっていることから、外部刺激１８３と内部状態の変化１８４による各スキーマの評価は、まずツリー構造の下から上に向かってＣｏｎｃｕｒｒｅｎｔに行なわれる。即ち、スキーマに子供スキーマがある場合には、選択した子供のＭｏｎｉｔｏｒ関数をコールしてから、自身のＭｏｎｉｔｏｒ関数を実行する。次いで、ツリー構造の上から下に向かって評価結果としての実行許可を渡していく。評価と実行は、その動作が用いるリソースの競合を解きながら行なわれる。
【０１０４】
本実施の形態における状況依存行動階層１０２は、スキーマのツリー構造を利用して、並列的に行動の評価を行なうことができるので、外部刺激１８３や内部状態の変化１８４等の状況に対しての適応性がある。また、評価時には、ツリー全体に関しての評価を行ない、このとき算出されるアクティベーションレベル（ＡＬ）値によりツリーが変更されるので、スキーマすなわち実行する動作を動的にプライオリタイズすることができる。
【０１０５】
（２−３−２）Ｃｏｎｃｕｒｒｅｎｔな実行：
ルートのスキーマには各サブツリーからのアクティベーションレベルが返されるので、外部刺激１８３と内部状態の変化１８４に応じた最適なスキーマすなわち動作を統合的に判断することができる。例えばアクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた２以上のスキーマを選択して並列的に行動実行するようにしてもよい（但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする）。
【０１０６】
実行許可をもらったスキーマは実行される。すなわち、実際にそのスキーマは更に詳細の外部刺激１８３や内部状態の変化１８４を観測して、コマンドを実行する。実行に関しては、ツリー構造の上から下に向かって順次すなわちＣｏｎｃｕｒｒｅｎｔに行なわれる。即ち、スキーマに子供スキーマがある場合には、子供のＡｃｔｉｏｎｓ関数を実行する。
【０１０７】
Ａｃｔｉｏｎ関数は、スキーマ自身が持つ行動（動作）を記述したステートマシンを備えている。図１１に示すようなツリー構造を構成する場合、親スキーマは、Ａｃｔｉｏｎ関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。
【０１０８】
本実施の形態における状況依存行動階層（ＳＢＬ）１０２は、スキーマのツリー構造を利用して、リソースが競合しない場合には、余ったリソースを使う他のスキーマを同時に実行することができる。但し、Ｇｏａｌまでに使用するリソースに対して制限を加えないと、ちぐはぐな行動出現が起きる可能性がある。状況依存行動階層１０２において決定された状況依存行動は、リソース・マネージャにより反射行動部（ＲｅｆｌｅｘｉｖｅＳＢＬ）１０３による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作（Ｍｏｔｉｏｎ  Ｃｏｎｔｒｏｌｌｅｒ）に適用される。
【０１０９】
（２−３−３）Ｐｒｅｅｍｐｔｉｏｎ：
１度実行に移されたスキーマであっても、それよりも重要な（優先度の高い）行動があれば、スキーマを中断してそちらに実行権を渡さなければならない。また、より重要な行動が終了（完結又は実行中止等）したら、元のスキーマを再開して実行を続けることも必要である。
【０１１０】
このような優先度に応じたタスクの実行は、コンピュータの世界におけるＯＳ（オペレーティング・システム）のＰｒｅｅｍｐｔｉｏｎと呼ばれる機能に類似している。ＯＳでは、スケジュールを考慮するタイミングで優先度のより高いタスクを順に実行していくという方針である。
【０１１１】
これに対し、本実施の形態におけるロボット装置１の制御システム１０は、複数のオブジェクトにまたがるため、オブジェクト間での調停が必要になる。例えば反射行動を制御するオブジェクトである反射行動部１０３は、上位の状況依存行動を制御するオブジェクトである状況依存行動階層１０２の行動評価を気にせずに物を避けたり、バランスをとったりする必要がある。これは、実際に実行権を奪い取り実行を行なう訳であるが、上位の行動記述モジュール（ＳＢＬ）に、実行権利が奪い取られたことを通知して、上位はその処理を行なうことによってＰｒｅｅｍｐｔｉｖｅな能力を保持する。
【０１１２】
また、状況依存行動層１０２内において、外部刺激１８３と内部状態の変化１８４に基づくアクティベーションレベルの評価の結果、あるスキーマに実行許可がなされたとする。更に、その後の外部刺激１８３と内部状態の変化１８４に基づくアクティベーションレベルの評価により、別のスキーマの重要度の方がより高くなったとする。このような場合、実行中のスキーマのＡｃｔｉｏｎｓ関数を利用してＳｌｅｅｐ状態にして中断することにより、Ｐｒｅｅｍｐｔｉｖｅな行動の切り替えを行なうことができる。
【０１１３】
実行中のスキーマのＡｃｔｉｏｎｓ（）の状態を保存して、異なるスキーマのＡｃｔｉｏｎｓ（）を実行する。また、異なるスキーマのＡｃｔｉｏｎｓ（）が終了した後、中断されたスキーマのＡｃｔｉｏｎｓ（）を再度実行することができる。
【０１１４】
また、実行中のスキーマのＡｃｔｉｏｎｓ（）を中断して、異なるスキーマに実行権が移動する前に、ＳｌｅｅｐＡｃｔｉｏｎｓ（）を実行する。例えば、ロボット装置１は、対話中にサッカーボールを見つけると、「ちょっと待ってね」と言って、サッカーすることができる。
【０１１５】
（２−３−４）Ｒｅｅｎｔｒａｎｔ：
状況依存行動階層１０２を構成する各スキーマは、一種のサブルーチンである。スキーマは、複数の親からコールされた場合には、その内部状態を記憶するために、それぞれの親に対応した記憶空間を持つ必要がある。
【０１１６】
これは、コンピュータの世界では、ＯＳが持つＲｅｅｎｔｒａｎｔ性に類似しており、本明細書ではスキーマのＲｅｅｎｔｒａｎｔ性と呼ぶ。図１６に示したように、スキーマ１３２はクラス・オブジェクトで構成されており、クラス・オブジェクトのエンティティすなわちインスタンスをターゲット（Ｐｒｏｎｏｍｅ）毎に生成することによりＲｅｅｎｔｒａｎｔ性が実現される。
【０１１７】
スキーマのＲｅｅｎｔｒａｎｔ性について、図１７を参照しながらより具体的に説明する。Ｓｃｈｅｍａ  Ｈａｎｄｌｅｒ２１２は、スキーマを管理するためのクラス・オブジェクトであり、ＳＢＬ１０２を構成するスキーマのコンフィギュレーション情報をファイルとして保管している。システムの起動時に、Ｓｃｈｅｍａ  Ｈａｎｄｌｅｒ２１２は、このコンフィギュレーション情報ファイルを読み込んで、ＳＢＬ１０２内のスキーマ構成を構築する。図１７に示す例では、Ｅａｔ２２１やＤｉａｌｏｇ２２２等の行動（動作）を規定するスキーマのエンティティがメモリ空間上にマッピングされているとする。
【０１１８】
ここで、外部刺激１８３と内部状態の変化１８４に基づくアクティベーションレベルの評価により、スキーマＤｉａｌｏｇ２２２に対してＡというターゲット（Ｐｒｏｎｏｍｅ）が設定されて、Ｄｉａｌｏｇ２２２が人物Ａとの対話を実行するようになったとする。
【０１１９】
そこに、人物Ｂがロボット装置１と人物Ａとの対話に割り込み、その後、外部刺激１８３と内部状態の変化１８４に基づくアクティベーションレベルの評価を行なった結果、Ｂとの対話を行なうスキーマ２２３の方がより優先度が高くなったとする。
【０１２０】
このような場合、Ｓｃｈｅｍａ  Ｈａｎｄｌｅｒ２１２は、Ｂとの対話を行なうためのクラス継承した別のＤｉａｌｏｇエンティティ（インスタンス）をメモリ空間上にマッピングする。別のＤｉａｌｏｇエンティティを使用して、先のＤｉａｌｏｇエンティティとは独立して、Ｂとの対話を行なうことから、Ａとの対話内容は破壊されずに済む。従って、ＤｉａｌｏｇＡはデータの一貫性を保持することができ、Ｂとの対話が終了すると、Ａとの対話を中断した時点から再開することができる。
【０１２１】
Ｒｅａｄｙリスト内のスキーマは、その対象物（外部刺激１８３）に応じて評価すなわちアクティベーションレベルの計算が行なわれ、実行権が引き渡される。その後、Ｒｅａｄｙリスト内に移動したスキーマのインスタンスを生成して、これ以外の対象物に対して評価を行なう。これにより、同一のスキーマをａｃｔｉｖｅ又はｓｌｅｅｐ状態にすることができる。
【０１２２】
（３）ロボット装置への本発明の適用
次に、上述のようなロボット装置に本発明を適用した例について詳細に説明する。本実施の形態におけるロボット装置は、ロボット装置自身の内部の情報を得る手段をもち、その内部情報と、ロボットの外部の情報から発現する動作を選択するロボット装置において、上述したように、内部状態をある範囲に保つための行動を行うものであり、動作を実行したときに、その動作によって満たすとされる内部状態が満たされない場合、即ち、所定時間経過しても、所定の目的を達成できない（終了条件を満たさない）場合は、その経過時間に応じて変化するフラストレーション値を算出し、このフラストレーション値に基づき発現する動作を変化させるものである。
【０１２３】
上述したように、本実施の形態におけるロボット装置は自身の内外の情報を考慮したうえで動作選択を行うアルゴリズムとしてＳＢＬを有する。ＳＢＬは、スキーマツリーを有し、各スキーマは、外部刺激と内部状態に応じ、上述したように、各スキーマのやりたさ度合い（実行優先度）を示すアクティベーションレベルを算出する。
【０１２４】
ここで、各スキーマは、各種センサ等の外部入力装置（状態認識部）から入力された外部情報（外部刺激）と、ロボット装置の内部情報（自らの内部状態パラメータ及び感情パラメータの算出を行う感情・本能モデルから得られた内部状態パラメータ）、即ちロボットの一次情動（本能）の満足度、及びそれによって変化する二次情動（感情）の値との双方に応じて、アクティベーションレベルを算出する。
【０１２５】
アクティベーションレベルは、外部からの刺激、対象物があればその物理的な外部情報、現在の内部状態、及びロボット装置自身が有する記憶（過去の履歴）等を利用して算出されるもので、例えば、現在の状況においてロボット装置がその動作を発現することが可能か否か（やれることができるか否か）を示すＲｅｌｅａｓｅＶａｌｕｅと、ロボット装置自身がやりたいか否かを示すＭｏｔｉｖａｔｉｏｎＶａｌｕｅとに基づき算出することができる。
【０１２６】
ＲｅｌｅａｓｅＶａｌｕｅは、外部からの刺激、対象物があればその物理的な外部情報（対象物の有無、対象物との間の距離、対象物の色及び形状等）及び各記憶部からの記憶に基づく値が例えば加算される等して算出されるものであり、例えば、ボールを蹴る動作を発現するスキーマは、カメラ等によりボールを認識できない期間は自身の動作（ボールを蹴る動作）を発現できないと判定し、その値を小さくすることができる。
【０１２７】
また、ＭｏｔｉｖａｔｉｏｎＶａｌｕｅは、ロボットの内部状態、即ち、上述した内部状態管理部における本能・感情モデルにおいて算出された本能（欲求）値及び感情（情動）値に基づき算出されるもので、例えば、ボールを蹴るスキーマは、バッテリの充電が充分であったり、好きな色のボールを発見した場合にボールを蹴りたいという欲求が大きくなり、その値が大きくなる。本実施の形態のロボット装置の感情モデルは、「喜び（Ｊｏｙ）」、「悲しみ（Ｓａｄｎｅｓｓ）」、「怒り（Ａｎｇｅｒ）」、「驚き（Ｓｕｒｐｒｉｓｅ）」、「嫌悪（Ｄｉｓｇｕｓｔ）」及び「恐れ（Ｆｅａｒ）」の合計６つの情動について、各情動毎にその情動の強さを表すパラメータを保持し、本能モデルは、「運動欲（ｅｘｅｒｃｉｓｅ）」、「愛情欲（ａｆｆｅｃｔｉｏｎ）」、「食欲（ａｐｐｅｔｉｔｅ）」及び「好奇心（ｃｕｒｉｏｓｉｔｙ）」の互いに独立した４つの欲求について、これら欲求毎にその欲求の強さを表すパラメータを保持しており、これらの各値に基づきＭｏｔｉｖａｔｉｏｎＶａｌｕｅを算出することができる。
【０１２８】
上述したように、ロボット装置は、このようにして算出されたアクティベーションレベルの大小で実行するスキーマ（行動）を選択するように構成することができる。選択されたスキーマは、自身に記述された行動（動作）を発現する。各スキーマは行動を発現すると、自身の目的を果たすまで、即ち、所定の終了条件又は次の動作へ移行するための移行条件（以下、単に終了又は移行条件という。）を満たすまで行動を継続して発現する。ここで、ロボット装置は、各スキーマが自身の動作が終了又は移行条件を満たすことで、内部状態のある種の欲求、例えば、上述した「喜び」等の情動値や、「運動欲」等の欲求値を変動させるように構成される。
【０１２９】
具体的には、例えば、機体動作として「ボールを探す」という動作が記述されている場合、カメラの画像等によって「ボールを発見する」という終了条件を有し、この終了条件を満たすまで、ボールを探し続ける。又は、所定の条件が次の動作に移行するための移行条件となっている場合、即ち「ボールを発見する」ことが、次の「ボールを蹴る」という動作に移行するための移行条件となっている場合があり、この場合も、この移行条件を満たすまで、次の動作に移行ぜずに動作を継続し続ける。そして終了又は移行条件を満たすことで、「喜び」等の感情値を上昇させたり、「運動欲」等の欲求値を満たしたりすることができる。
【０１３０】
ここで、発現した動作を途中で停止（中断）するためには、外部からの刺激等、何らかの条件により、発火中のスキーマより、発火していない他のスキーマのアクティベーションレベルを高くする必要があり、このような場合には、発火中のスキーマを中断して、アクティベーションレベルが高くなった方のスキーマを起動することができる。具体的には、ロボット装置がサッカーをするスキーマを起動させてサッカーをしている最中に、ユーザに話しかけられて、サッカーをするスキーマのアクティベーションレベルより、ユーザとの対話を行うスキーマのアクティベーションレベルが高くなる等である。
【０１３１】
このように、動作が終了又は途中で停止するためには、所定の終了又は移行条件を満たすか、又は外部からの刺激が必要である。しかしながら、この方法では「やりたい」と主張することはできるが、途中でその動作を止める等「やめたい」ことを主張することができない。
【０１３２】
ところで、外部状況の変化や自身の行動の制限等の様々な要因から、選択された動作の終了又は移行条件を満たすのが困難な場合が存在する。そこで、このような場合に、終了又は移行条件を満たしていなくてもその動作を途中で停止し、次の動作を発現するというストラテジーを取るために、本発明においては、フラストレーション値という値を導入する。このフラストレーション値により、動作中であっても外部状況の変化や内部状態の変化に応じて、発現中の動作を停止させる等、動作を変化させることができる。
【０１３３】
フラストレーションは、心理学で「欲求満足行動を何らかの事情で阻害された時の状態、欲求不満（フラストレーション）状態」と位置付けられており、その状態になった場合、攻撃、代償、迂回、逃避反応などの反応を示すとされている。本実施の形態においては、これらを参考に、ロボット装置におけるフラストレーション状態とその際の振る舞い（フラストレーション反応）を定めるものとする。
【０１３４】
次に、本実施の形態におけるフラストレーション値を有するスキーマの動作について詳細に説明する。先ず、ロボット装置の複数のスキーマの中で、アクティベーションレベルが例えば最も大きいスキーマＡが選択されて実行される。このスキーマＡに記述された動作が最後まで実行されると欲求αを満たすと予測されているが、なかなか欲求αを満たす方向に変化させることができない場合、経過時間に応じてそのスキーマＡを実行することに対するフラストレーション値Ｆを増加させる。
【０１３５】
図１８（ａ）及び図１８（ｂ）は、本実施の形態における行動制御を説明する図である。図１８（ａ）に示すように、ＳＢＬは、動作が実行されると満たす欲求＝αのスキーマＡ、Ｂを有するスキーマツリー３１０と、動作が実行されると満たす欲求＝βのスキーマＢ、Ｃを有するスキーマツリー３２０とを有している。各スキーマＡ、Ｂ、Ｃ、Ｄには、自身の行動を終了するまでの許容時間ｔ１が例えばｔ１＝５〜３０秒等として設定され、フラストレーション値Ｆの閾値が例えばＦｔｈ＝１００〜２００等として設定され、更に各スキーマが上記Ｆｔｈを超えた場合に、行動を停止する動作停止時間ｔ２が例えばｔ２＝３０〜１２０秒等として設定されているものとする。これらのフラストレーション値Ｆの閾値、許容時間ｔ１及び停止時間ｔ２は、各スキーマ毎に可変設定されるものとする。
【０１３６】
スキーマＡのアクティベーションレベルが外部刺激又は内部状態に応じて上昇して選択されると、スキーマＡは行動を発現する。ここで、行動を発現してから許容時間ｔ１＝３０ｓを経過しても行動が達成できない場合、即ち、スキーマＡによって満たされるはずである欲求αが得られない場合、スキーマＡのフラストレーション値Ｆを増加させる。フラストレーション値は、例えばシグモイド関数等、経過時間に応じて増加する関数等を使用して、各スキーマ自身又はその他の制御手段において算出することができる。このフラストレーション値を算出するための所定の増加関数においても、各スキーマ毎に個別に異なる関数を設定したり、該関数に使用する各種パラメータをスキーマ毎に個別に設定したりすることができる。
【０１３７】
ここで、例えば、スキーマＡのフラストレーション値Ｆは、選択される前までと選択されてから許容期間ｔ１（＝３０ｓ）の間とは、Ｆ＝０とし、許容期間ｔ１以降は、その経過時間に応じて増大させるように設定される。なお、選択された時刻を基準にその後の経過時間に応じて増大させるように設定してもよい。
【０１３８】
そして、スキーマＡは、スキーマＡのフラストレーション値Ｆが閾値Ｆｔｈを超えた時刻から所定の動作停止時間ｔ２（＝１２０ｓ）の間は、スキーマＡに記述された動作を発現しないものとする。
【０１３９】
即ち、動作停止時間ｔ２の間は、スキーマＡのアクティベーションレベルに拘わらず、スキーマＡの動作を発現することを停止し、スキーマＡの選択を禁止するものとする。以下、このように、スキーマＡの動作を制限することをスキーマＡにペナルティを与えるともいう。
【０１４０】
ＳＢＬでは、スキーマツリー３１０，３２０のように、通常は、各スキーマが満たす、例えば「運動欲（ｅｘｅｒｃｉｓｅ）」、「愛情欲（ａｆｆｅｃｔｉｏｎ）」、「食欲（ａｐｐｅｔｉｔｅ）」又は「好奇心（ｃｕｒｉｏｓｉｔｙ）」等の欲求の種類毎に異なるスキーマツリーを有しており、スキーマＡの選択が禁止された場合、この間は、スキーマＡと同じ欲求αを満たすスキーマのうち、最もアクティベーションレベルが高いスキーマＢが選択される。
【０１４１】
この際、スキーマＡと同じ欲求αを有するスキーマが選択されるよう、欲求αを有するスキーマツリー３１０を構成する各スキーマ（図１８（ａ）においては、スキーマＢのみ図示）のアクティベーションレベルＡＬを、スキーマＡの期間ｔ２の間のみ、例えば５０等、上昇させる。このようにすることで、スキーマＡと同じ欲求αを有するスキーマを選択されやすくすることができる。こうして、図１８（ｂ）においては、スキーマＡと同じ欲求αを有するスキーマＢが選択される。
【０１４２】
また、スキーマＡと同じ欲求αのスキーマが存在しない場合、又は、スキーマＡと同じ欲求αを有するスキーマのアクティベーションレベルを上昇させても、他の欲求βを有するスキーマのアクティベーションレベルの方が高い場合等においては、スキーマＡとは異なる欲求を有するスキーマを選択するようにしてもよい。
【０１４３】
このように、スキーマは、その機体動作を発現した後、所定の時間ｔ１を経過しても、所定の終了又は移行条件を満たさない場合、欲求を満たす方向に変化させることができないものとし、フラストレーション値を増加させることにより、このフラストレーション値に応じて発現する動作を変化させることができる。
【０１４４】
そして、フラストレーション値が所定の閾値を超えた場合には、スキーマＡに一定期間、動作の発現を禁止してペナルティを与えるだけではなく、上述した攻撃、代償、迂回、逃避反応等のフラストレーション反応にあたる反応を表現するよう設定することができる。例えば、攻撃反応であれば対象物を攻撃する、代償反応であればスキーマＡ以外のスキーマで、スキーマＡと同じ欲求Ａを満たすと予測されるスキーマＢを実行する等である。
【０１４５】
また、図１８（ａ）に示すスキーマツリー３１０のように、スキーマツリー３１０に属するいずれかのスキーマが選択され、該スキーマのフラストレーション値Ｆが所定の閾値を超えた場合にのみ選択されて、フラストレーション反応を表現する動作が記述されスキーマＥを設け、欲求αを有するスキーマのフラストレーション値Ｆが所定の閾値を超えた場合にこれを選択するようにしてもよい。このスキーマＥは、例えば各スキーマツリー（各欲求）に対して１つずつ設けて、そのスキーマツリーにおけるスキーマが満たすとされる欲求が満たされなかった場合に選択されるようにしてもよいし、各スキーマ毎に個別に設けてもよい。
【０１４６】
更に、各スキーマに対して、本来の機体動作（第１の機体動作）と共に、このような場合にのみ発現するようフラストレーション反応を示す機体動作（第２の機体動作）を記述しておいてもよい。又は、スキーマＡの下層に、スキーマＡのフラストレーション反応を行う１以上のスキーマを用意し、フラストレーション値Ｆが閾値Ｆｔｈを超えると、それらのフラストレーション反応用のスキーマをコールするようにしてもよい。
【０１４７】
更にまた、このフラストレーション値をロボット装置の内部状態に反映させることで、フラストレーション値に応じて様々な動作を発現させることができる。例えば、動作が終了した時点、即ち所定の終了又は移行条件を満たした時点でのフラストレーション値が０である場合、「満足」又は「うれしい」等の情動値を上昇させ、これを動作に反映させるようにしてもよい。
【０１４８】
（３−１）実施の形態の第１の具体例：ボールを蹴るスキーマを実行しているのにボールが蹴れない場合
ボールを蹴るスキーマＳ１が選択され、そのスキーマＳ１の動作終了又は移行条件がボールを蹴ることであったとする。しかし、スキーマＳ１の実行中に照明条件の変化等からボールが見えなくなってしまったり、ボールとの間の距離が測れなかったりした場合、ボールを蹴ることが困難になる。こうして、これだけ与えればボールを蹴れるであろうと予測されて設定された許容時間ｔ１を超えた場合であってもボールが蹴れない場合、フラストレーション値Ｆを増加させる。そして、このフラストレーション値が上記閾値Ｆｔｈを超えた場合、スキーマＳ１の動作、即ちボールを蹴る動作を停止させ、このスキーマＳ１を一定時間ｔ２選択させないようにし、スキーマＳ１以外の他のスキーマを選択させたり、このような場合のために代償行動を表現する代償スキーマを用意しておき、これを起動させたり、例えば「怒る」、「悲しい」等の感情を表現するスキーマをコールして、このような感情を動作に反映させたりする。これにより、例えば「がんばったけどうまくできなかったから怒ってほかの事をする」ように見える。
【０１４９】
（３−２）実施の形態の第２の具体例：おしゃべりスキーマを実行しているのに返事をしてくれない場合
おしゃべりスキーマＳ２が選択され、そのスキーマＳ２の終了条件又は移行条件が「人が返事をする」ことであるとする。ロボット装置が一生懸命話し掛けても、ユーザが返事をしてくれない場合等には、この条件を満たすことができない。この場合においても、ロボット装置が返事を待つことができる許容時間ｔ１を定めておき、その許容時間ｔ１を超えた場合にフラストレーション値Ｆを増加させ、このフラストレーション値Ｆが閾値Ｆｔｈを超えたときまでに返事をもらうことができなかった場合、スキーマＳ２を一定時間ｔ２選択させないようにし、次の行動をスキーマＳ２以外のスキーマより選択させるようにする。これにより、この時間ｔ２の間に、例えば、他のユーザから話かけられた場合においても、お話するスキーマＳ２は、起動が停止されているため、ロボット装置は、これを無視することで、例えば「怒っている」ように見える。また、フラストレーションを感情に反映させると共に、他のスキーマを選択したり、代償スキーマを起動したりすることで、例えば「がんばったけど返事してくれなかったから悲しくなって他のことをする」ように見える。
【０１５０】
本実施の形態においては、このようなフラストレーション値を算出し、更に、スキーマ毎に、異なるフラストレーション値の閾値や、許容時間ｔ１及び動作停止時間ｔ２等を設定することにより、例えばスキーマＡのフラストレーション値が上昇した場合、スキーマＡの動作を所定時間ｔ２停止し、スキーマＡと同じ欲求αを有する他のスキーマＢを選択するようにすることができ、スキーマＡが所定の終了又は移行条件を満たさない場合には、同じ動作をやり続けることを防止し、同じ欲求を満たす他のスキーマＢを起動させる等してロボット装置が自分で行動を「止める」ことが可能となると共に、やめ方においても、多くのバリエーションを持たせることが可能となる。
【０１５１】
また、フラストレーション値Ｆの閾値Ｆｔｈを超えた場合に行うフラストレーション反応を複数用意したり、このフラストレーション反応として表出する動作として、上述したように、他のスキーマの中から、アクティベーションレベルに基づいて選択したり、欲求の種類を考慮して選択したりすることで、より多くのフラストレーション反応を持たせることが可能となる。こうして、選択した行動ができなかったことによる感情変化の実現が可能となるため、ロボット装置がより知的に見える手助けとなる。
【０１５２】
更に、同様の環境・条件で同一の動作が繰り返し発現されることを防止することができので、ユーザのロボット装置に対する厭きを防止し、エンターテイメント性を更に向上することができる。
【０１５３】
【発明の効果】
以上詳細に説明したように本発明に係るロボット装置は、所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するロボット装置において、上記複数の動作から発現する動作を選択する選択手段と、上記選択手段に選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出手段と、上記フラストレーション値に応じて上記選択された動作を変化させる制御手段を有するので、選択された動作開始後の経過時間に応じて変動するフラストレーション値に応じて動作を変化させることができ、行動にバリエーションを持たせて更にエンターテイメント性を向上することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態におけるロボット装置の外観を示す斜視図である。
【図２】本発明の実施の形態におけるロボット装置の機能構成を模式的に示すブロック図である。
【図３】本発明の実施の形態におけるロボット装置の制御ユニットの構成を更に詳細に示すブロック図である。
【図４】本発明の実施の形態におけるロボット装置の行動制御システムの機能構成を示す模式図である。
【図５】本発明の実施の形態における行動制御システムのオブジェクト構成を示す模式図である。
【図６】本発明の実施の形態における状況依存行動階層による状況依存行動制御の形態を示す模式図である。
【図７】状況依存行動階層による行動制御の基本的な動作例を示す模式図である。
【図８】状況依存行動階層により反射行動を行なう場合の動作例を示す模式図である。
【図９】状況依存行動階層により感情表現を行なう場合の動作例を示す模式図である。
【図１０】状況依存行動階層が複数のスキーマによって構成されている様子を示す模式図である。
【図１１】状況依存行動階層におけるスキーマのツリー構造を示す模式図である。
【図１２】状況依存行動階層において通常の状況依存行動を制御するためのメカニズムを示す模式図である。
【図１３】反射行動部におけるスキーマの構成を示す模式図である。
【図１４】反射行動部により反射的行動を制御するためのメカニズムを示す模式図である。
【図１５】状況依存行動階層において使用されるスキーマのクラス定義を示す模式図である。
【図１６】状況依存行動階層内のクラスの機能的構成を示す模式図である。
【図１７】スキーマのＲｅｅｎｔｒａｎｔ性を説明する図である。
【図１８】（ａ）及（ｂ）は、本発明の実施の形態における行動制御を説明する図である。
【符号の説明】
１  ロボット装置、１０  行動制御システム、１５  ＣＣＤカメラ、１６  マイクロフォン、１７  スピーカ、１８  タッチ・センサ、１９  ＬＥＤインジケータ、２０  制御部、２１  ＣＰＵ、２２  ＲＡＭ、２３  ＲＯＭ、２４  不揮発メモリ、２５  インターフェース、２６  無線通信インターフェース、２７  ネットワーク・インターフェース・カード、２８  バス、２９  キーボード、４０  入出力部、５０  駆動部、５１  モータ、５２  エンコーダ、５３  ドライバ、８１  視覚認識機能部、８２  聴覚認識機能部、８３  接触認識機能部、９１  内部状態管理部、９２  短期記憶部（ＳＴＭ）、９３  長期記憶部（ＬＴＭ）、１０１  熟考行動階層、１０２  状況依存行動階層（ＳＢＬ）、１０３  反射行動部
【図１】
2004283957.tif 000003
【図２】
2004283957.tif 000004
【図３】
2004283957.tif 000005
【図４】
2004283957.tif 000006
【図５】
2004283957.tif 000007
【図６】
2004283957.tif 000008
【図７】
2004283957.tif 000009
【図８】
2004283957.tif 000010
【図９】
2004283957.tif 000011
【図１０】
2004283957.tif 000012
【図１１】
2004283957.tif 000013
【図１２】
2004283957.tif 000014
【図１３】
2004283957.tif 000015
【図１４】
2004283957.tif 000016
【図１５】
2004283957.tif 000017
【図１６】
2004283957.tif 000018
【図１７】
2004283957.tif 000019
【図１８】
2004283957.tif 000020