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