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