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