(57)【要約】【課題】状況依存行動と反射行動が不適当に干渉し合うことなく協働的且つ有機的に並列実行する。【解決手段】状況行動依存行動階層のルート・スキーマの直近下位に、反射行動階層監視スキーマが配設される。反射行動階層監視スキーマはダミーのＡｃｔｉｏｎ関数を持つとともに、そのＭｏｎｉｔｏｒ関数は、反射行動階層におけるスキーマ実行に応答して、自らの活動度レベルを最大にするとともに、すべての使用リソースを戻り値とする。この結果、ルート・スキーマは、必ず反射行動階層監視スキーマを選択するので、行動階層間でリソースの競合が回避される。【選択図】  図１７
2004291147.tif 000002
【特許請求の範囲】
【請求項１】
自律的に動作するロボットのための行動制御システムであって、
前記ロボットの行動を制御する第１の行動階層と、
前記第１の行動階層とは独立して前記ロボットの行動を制御する第２の行動階層と、
各行動階層毎に設けられた、行動階層内における行動の実行状況を記録するログ・メモリ・モジュールと、
各行動階層のログ・メモリ・モジュール間で記録内容を通信する接続部と、
を具備することを特徴とするロボットの行動制御システム。
【請求項２】
前記第１の行動階層はロボットが置かれている状況を統合的に判断して適当な行動を選択する状況依存行動階層であり、
前記第２の行動階層はシステムにとって極めて重大な行動を司る反射的行動階層である、
ことを特徴とする請求項１に記載のロボットの行動制御システム。
【請求項３】
前記第１の行動階層では、前記接続部を介して得られる前記第２の行動階層側のログ・メモリ・モジュールの記録内容に応じて、前記第１の行動階層内の行動を制御する、
ことを特徴とする請求項１に記載のロボットの行動制御システム。
【請求項４】
前記第１の行動階層では、前記接続部を介して得られる前記第２の行動階層側のログ・メモリ・モジュールの記録内容に基づいて、前記第２の行動階層側が活動中は、待機状態となる、
ことを特徴とする請求項３に記載のロボットの行動制御システム。
【請求項５】
前記第１の行動階層では、前記接続部を介して得られる前記第２の行動階層側のログ・メモリ・モジュールの記録内容に基づいて、前記第２の行動階層側において使用される機体リソースを回避した行動を選択する、
ことを特徴とする請求項３に記載のロボットの行動制御システム。
【請求項６】
前記の各行動階層は、
機体動作を記述したステートマシンと、前記ステートマシンにおける現在の機体動作ステートの活性度レベルと機体動作ステート起動時において使用する機体リソースを評価する行動評価器とを備えた、１以上の行動モジュールと、
前記の各行動モジュールの行動評価器に対して活性度レベルと使用リソースの算出を指示し、それぞれの活性度レベルと使用リソースに応じて活性化させる行動モジュールを選択し、該選択された行動モジュールのステートマシンに実行を指示することにより、各行動モジュールの行動状態を制御する行動状態制御部と、
を備えることを特徴とする請求項１に記載のロボットの行動制御システム。
【請求項７】
前記行動評価器は、機体の外部環境及び／又は前記ロボットの内部状態に応じて前記ステートマシンの活性度レベルを評価する、
ことを特徴とする請求項６に記載のロボットの行動制御システム。
【請求項８】
前記行動状態制御部は、活性度レベルの低下した行動モジュールを活性状態から待機状態に遷移させるとともに、活性度レベルが上昇した行動モジュールを待機状態から活性状態に遷移させる、
ことを特徴とする請求項６に記載のロボットの行動制御システム。
【請求項９】
前記行動状態制御部は、リソースが競合しない２以上の行動モジュールを活動度レベルに従って選択する、
ことを特徴とする請求項６に記載のロボットの行動制御システム。
【請求項１０】
前記の各行動階層において、前記の各行動モジュールが機体動作の実現レベルに応じた木構造形式に構成されており、
前記木構造の最上位の行動モジュールに配設された前記行動状態制御部は、前記木構造の下位に向かって、行動モジュールに対して活性度レベル及び使用リソースの評価の指示、行動モジュールの選択、並びにステートマシンの実行の指示を行なう、
ことを特徴とする請求項６に記載のロボットの行動制御システム。
【請求項１１】
前記第１の行動階層におけるルートの行動モジュールの直近下位に、前記第２の行動階層における行動モジュールの活動度ログを前記ログ・メモリ・モジュールを介して監視して前記第２の行動階層内の各行動モジュールの開始／終了を検出する行動階層監視行動モジュールが配設されている、
ことを特徴とする請求項１０に記載のロボットの行動制御システム。
【請求項１２】
前記行動階層監視行動モジュールは、前記ログ・メモリ・モジュールを介して検出された前記第２の行動階層側における行動モジュールの活動に応じて、自己の活動度レベルを十分高く励起するとともに、適当なリソースを要求する、
ことを特徴とする請求項１２に記載のロボットの行動制御システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、自律的な動作を行ないユーザとのリアリスティックなコミュニケーションを実現するロボットの行動制御システムに係り、特に、視覚や聴覚などの外部環境の認識結果や本能や感情などの内部状態などのロボットが置かれている状況を統合的に判断して適当な行動を選択する状況依存行動型のロボットのための行動制御システム及び行動制御方法、並びにロボット装置に関する。
【０００２】
さらに詳しくは、本発明は、ロボットが置かれている状況を統合的に判断して適当な行動を選択する状況依存型の行動とシステムに重大な反射的行動を適宜行なうロボットの行動制御システムに係り、特に、状況依存行動と反射的行動が不適当に干渉し合うことなく協働的且つ有機的に並列実行するロボットの行動制御システムに関する。
【０００３】
【従来の技術】
電気的若しくは磁気的な作用を用いて人間の動作に似せた運動を行なう機械装置のことを「ロボット」という。ロボットの語源は、スラブ語の”ＲＯＢＯＴＡ（奴隷機械）”に由来すると言われている。わが国では、ロボットが普及し始めたのは１９６０年代末からであるが、その多くは、工場における生産作業の自動化・無人化などを目的としたマニピュレータや搬送ロボットなどの産業用ロボット（ｉｎｄｕｓｔｒｉａｌ  ｒｏｂｏｔ）であった。
【０００４】
最近では、イヌやネコ、クマのように４足歩行の動物の身体メカニズムやその動作を模したペット型ロボット、あるいは、ヒトやサルなどの２足直立歩行を行なう動物の身体メカニズムや動作を模した「人間形」若しくは「人間型」のロボット（ｈｕｍａｎｏｉｄ  ｒｏｂｏｔ）など、脚式移動ロボットの構造やその安定歩行制御に関する研究開発が進展し、実用化への期待も高まってきている。これら脚式移動ロボットは、クローラ式ロボットに比し不安定で姿勢制御や歩行制御が難しくなるが、階段の昇降や障害物の乗り越えなど、柔軟な歩行・走行動作を実現できるという点で優れている。
【０００５】
脚式移動ロボットの用途の１つとして、産業活動・生産活動等における各種の難作業の代行が挙げられる。例えば、原子力発電プラントや火力発電プラント、石油化学プラントにおけるメンテナンス作業、製造工場における部品の搬送・組立作業、高層ビルにおける清掃、火災現場その他における救助といったような危険作業・難作業の代行などである。
【０００６】
また、脚式移動ロボットの他の用途として、上述の作業支援というよりも、生活密着型、すなわち人間との「共生」あるいは「エンターティンメント」という用途が挙げられる。この種のロボットは、ヒトあるいはイヌ（ペット）、クマなどの比較的知性の高い脚式歩行動物の動作メカニズムや四肢を利用した豊かな感情表現を忠実に再現する。また、あらかじめ入力された動作パターンを単に忠実に実行するだけではなく、ユーザ（あるいは他のロボット）から受ける言葉や態度（「褒める」とか「叱る」、「叩く」など）に対して動的に対応した、生き生きとした応答表現を実現することも要求される。
【０００７】
従来の玩具機械は、ユーザ操作と応答動作との関係が固定的であり、玩具の動作をユーザの好みに合わせて変更することはできない。この結果、ユーザは同じ動作しか繰り返さない玩具をやがては飽きてしまうことになる。これに対し、インテリジェントなロボットは、対話や機体動作などからなる行動を自律的に選択することから、より高度な知的レベルでリアリスティックなコミュニケーションを実現することが可能となる。この結果、ユーザはロボットに対して深い愛着や親しみを感じる。
【０００８】
ロボットあるいはその他のリアリスティックな対話システムでは、視覚や聴覚など外部環境の変化に応じて逐次的に行動を選択していくのが一般的である。また、行動選択メカニズムの他の例として、本能や感情といった情動をモデル化してシステムの内部状態を管理して、内部状態の変化に応じて行動を選択するものを挙げることができる。勿論、システムの内部状態は、外部環境の変化によっても変化するし、選択された行動を発現することによっても変化する。
【０００９】
しかしながら、これら外部環境や内部状態などのロボットが置かれている状況を統合的に判断して行動を選択するという、状況依存型の行動制御に関する例は少ない。
【００１０】
ここで、内部状態には、例えば生体で言えば大脳辺縁系へのアクセスに相当する本能のような要素や、大脳新皮質へのアクセスに相当する内発的欲求や社会的欲求などのように動物行動学的モデルで捉えられる要素、さらには喜びや悲しみ、怒り、驚きなどのような感情と呼ばれる要素などで構成される。
【００１１】
従来のインテリジェント・ロボットやその他の自律対話型ロボットにおいては、本能や感情などさまざまな要因からなる内部状態をすべて「情動」としてまとめて１次元的に内部状態を管理していた。すなわち、内部状態を構成する各要素はそれぞれ並列に存在しており、明確な選択基準のないまま外界の状況や内部状態のみで行動が選択されていた。
【００１２】
また、従来のシステムでは、その動作の選択及び発現は１次元の中にすべての行動が存在し、どれを選択するかを決定していた。このため、動作が多くなるにつれてその選択は煩雑になり、そのときの状況や内部状態を反映した行動選択を行なうことがより難しくなる。
【００１３】
一方、インテリジェントなロボットが自律型の行動を実現するためには、状況依存型の行動以外に、システムに重大な反射的な機体動作を実現する必要があると思料される。
【００１４】
ここで言う反射的行動とは、例えばシステムのブートやシャットダウン、エラー発生時の処理行動、あるいは、センサ入力された外部情報の認識結果を直接受けて、これを分類して、出力行動を直接決定する行動のことである。例えば、人間の顔を追いかけたり、うなずいたりといった振る舞いは反射行動として実装することが好ましい。
【００１５】
状況依存型行動や反射行動は、ロボットの行動制御システムにおいて異なる制御階層レベルとして実装し、同時又は並列実行することが可能である。ところがこのような階層化システム・アーキテクチャにおいては、各行動階層の間でコミュニケーションすなわち情報交換を行なう術がない。このため、各行動階層において互いに干渉し合うような活動が独自に発現してしまった場合には、システム全体として一貫したパフォーマンスを行なうことが困難となってしまう。
【００１６】
【発明が解決しようとする課題】
本発明の目的は、ロボットが置かれている状況を統合的に判断して適当な行動を選択する状況依存型の行動と認識された外部刺激に応じて反射的な機体動作を実現する反射型の行動を適宜行なうことができる、優れたロボットの行動制御システムを提供することにある。
【００１７】
本発明のさらなる目的は、状況依存行動と反射行動が不適当に干渉し合うことなく協働的且つ有機的に並列実行することができる、優れたロボットの行動制御システムを提供することにある。
【００１８】
【課題を解決するための手段及び作用】
本発明は、上記課題を参酌してなされたものであり、自律的に動作するロボットのための行動制御システムであって、
前記ロボットの行動を制御する第１の行動階層と、
前記第１の行動階層とは独立して前記ロボットの行動を制御する第２の行動階層と、
各行動階層毎に設けられた、行動階層内における行動の実行状況を記録するログ・メモリ・モジュールと、
各行動階層のログ・メモリ・モジュール間で記録内容を通信する接続部と、
を具備することを特徴とするロボットの行動制御システムである。
【００１９】
但し、ここで言う「システム」とは、複数の装置（又は特定の機能を実現する機能モジュール）が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない。
【００２０】
ここで、前記第１の行動階層は、例えば、ロボットが置かれている状況を統合的に判断して適当な行動を選択する状況依存行動階層である。また、前記第２の行動階層は、例えば、システムのブートやシャットダウン、各種のエラー処理など、システムにとって極めて重大な行動を司る反射的行動階層である。
【００２１】
これら第１及び第２の行動階層では、基本的には、それぞれ独自に行動制御が行なわれる。しかしながら、各行動階層間で不適当な干渉（使用リソースの競合）が発生すると、システムの誤動作を招来する。そこで、前記第１の行動階層では、前記接続部を介して得られる前記第２の行動階層側のログ・メモリ・モジュールの記録内容に応じて、前記第１の行動階層内の行動を制御するようになっている。
【００２２】
例えば、前記第１の行動階層では、前記接続部を介して得られる前記第２の行動階層側のログ・メモリ・モジュールの記録内容に基づいて、前記第２の行動階層側が活動中は、待機状態となるようになっている。
【００２３】
あるいは、前記第１の行動階層では、前記接続部を介して得られる前記第２の行動階層側のログ・メモリ・モジュールの記録内容に基づいて、前記第２の行動階層側において使用される機体リソースを回避した行動を選択する。
【００２４】
すなわち、システムのブート時、シャットダウン時、並びにエラー回避など、システムにクリティカルな行動が活動化しているときには、状況依存行動階層の活動を回避又は制限するようにした。
【００２５】
ここで、それぞれの行動階層は、
機体動作を記述したステートマシンと、前記ステートマシンにおける現在の機体動作ステートの活性度レベルと機体動作ステート起動時において使用する機体リソースを評価する行動評価器とを備えた、１以上の行動モジュールと、
前記の各行動モジュールの行動評価器に対して活性度レベルと使用リソースの算出を指示し、それぞれの活性度レベルと使用リソースに応じて活性化させる行動モジュールを選択し、該選択された行動モジュールのステートマシンに実行を指示することにより、各行動モジュールの行動状態を制御する行動状態制御部と、
で構成することができる。
【００２６】
前記行動評価器は、機体の外部環境及び／又は前記ロボットの内部状態に応じて前記ステートマシンの活性度レベルを評価する。
【００２７】
また、前記行動状態制御部は、活性度レベルの低下した行動モジュールを活性状態から待機状態に遷移させるとともに、活性度レベルが上昇した行動モジュールを待機状態から活性状態に遷移させる。前記行動状態制御部は、リソースが競合しない２以上の行動モジュールを活動度レベルに従って選択することができるものとする。
【００２８】
また、それぞれの行動階層は、機体動作の実現レベルに応じた行動モジュールの木構造として構成することができる。そして、木構造の最上位の行動モジュールに配設された前記行動状態制御部は、前記木構造の下位に向かって、行動モジュールに対して活性度レベル及び使用リソースの評価の指示、行動モジュールの選択、並びにステートマシンの実行の指示を行なうようにすることができる。
【００２９】
このような場合、前記第１の行動階層においてルートの行動モジュールの直近下位に、前記第２の行動階層の行動モジュールの活動度ログを前記ログ・メモリ・モジュールを介して監視して前記第２の行動階層内の各行動モジュールの開始／終了を検出する行動階層監視行動モジュールを配設してもよい。
【００３０】
この行動階層監視行動モジュールは、前記ログ・メモリ・モジュールを介して検出された前記第２の行動階層側における行動モジュールの活動に応じて、自己の活動度レベルを十分高く励起するとともに、適当なリソースを要求することができる。
【００３１】
このような場合、行動階層監視行動モジュールは、ルートの行動モジュールの直近下位に配設されているので、同じ行動階層内で他のスキーマの選択や実行に大きく影響を与えることができる。すなわち、ルートの行動モジュールは、必ず行動階層監視行動モジュールを選択するので、行動階層間でリソースの競合が回避され、システムにクリティカルなスキーマを支障なく実行することができる。
【００３２】
また、行動階層監視行動モジュールは、活動度検出により課されている行動モジュール選択やその実行の制限を、自らの要求リソース解放と活動度レベルの低下により解除することができる。これによって、リソースの競合を取り除き、他の行動モジュールは通常の活動を継続することができる。
【００３３】
このように、行動階層監視行動モジュールの介在により、複数の行動階層間でのリソースの競合を好適に回避し、不適当に干渉し合うことなく協働的且つ有機的に並列実行することができる。
【００３４】
各行動階層においては、独自のポリシーに従い、行動モジュールの選択やその実行を行なうことができる。また、各行動階層におけるリソース管理を簡素化することができる。
【００３５】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【００３６】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態について詳解する。
【００３７】
Ａ．ロボット装置の構成
図１には、本発明に実施に供されるロボット装置１の機能構成を模式的に示している。同図に示すように、ロボット装置１は、全体の動作の統括的制御やその他のデータ処理を行なう制御ユニット２０と、入出力部４０と、駆動部５０と、電源部６０とで構成される。以下、各部について説明する。
【００３８】
入出力部４０は、入力部としてロボット装置１の目に相当するＣＣＤカメラ１５や、耳に相当するマイクロフォン１６、頭部や背中などの部位に配設されてユーザの接触を感知するタッチ・センサ１８、あるいは五感に相当するその他の各種のセンサを含む。また、出力部として、口に相当するスピーカ１７、あるいは点滅の組み合わせや点灯のタイミングにより顔の表情を形成するＬＥＤインジケータ（目ランプ）１９などを装備している。これら出力部は、音声やランプの点滅など、脚などによる機械運動パターン以外の形式でもロボット装置１からのユーザ・フィードバックを表現することができる。
【００３９】
駆動部５０は、制御部２０が指令する所定の運動パターンに従ってロボット装置１の機体動作を実現する機能ブロックであり、行動制御による制御対象である。駆動部５０は、ロボット装置１の各関節における自由度を実現するための機能モジュールであり、それぞれの関節におけるロール、ピッチ、ヨーなど各軸毎に設けられた複数の駆動ユニットで構成される。各駆動ユニットは、所定軸回りの回転動作を行なうモータ５１と、モータ５１の回転位置を検出するエンコーダ５２と、エンコーダ５２の出力に基づいてモータ５１の回転位置や回転速度を適応的に制御するドライバ５３の組み合わせで構成される。
【００４０】
駆動ユニットの組み合わせ方によって、ロボット装置１を例えば２足歩行又は４足歩行などの脚式移動ロボットとして構成することができる。
【００４１】
電源部６０は、その字義通り、ロボット装置１内の各電気回路などに対して給電を行なう機能モジュールである。本実施形態に係るロボット装置１は、バッテリを用いた自律駆動式であり、電源部６０は、充電バッテリ６１と、充電バッテリ６１の充放電状態を管理する充放電制御部６２とで構成される。
【００４２】
充電バッテリ６１は、例えば、複数本のリチウムイオン２次電池セルをカートリッジ式にパッケージ化した「バッテリ・パック」の形態で構成される。
【００４３】
また、充放電制御部６２は、バッテリ６１の端子電圧や充電／放電電流量、バッテリ６１の周囲温度などを測定することでバッテリ６１の残存容量を把握し、充電の開始時期や終了時期などを決定する。充放電制御部６２が決定する充電の開始及び終了時期は制御ユニット２０に通知され、ロボット装置１が充電オペレーションを開始及び終了するためのトリガとなる。
【００４４】
制御ユニット２０は、「頭脳」に相当し、例えばロボット装置１の機体頭部あるいは胴体部に搭載されている。
【００４５】
図２には、制御ユニット２０の構成をさらに詳細に図解している。同図に示すように、制御ユニット２０は、メイン・コントローラとしてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１が、メモリやその他の各回路コンポーネントや周辺機器とバス接続された構成となっている。バス２７は、データ・バス、アドレス・バス、コントロール・バスなどを含む共通信号伝送路である。バス２７上の各装置にはそれぞれに固有のアドレス（メモリ・アドレス又はＩ／Ｏアドレス）が割り当てられている。ＣＰＵ２１は、アドレスを指定することによってバス２８上の特定の装置と通信することができる。
【００４６】
ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２２は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの揮発性メモリで構成された書き込み可能メモリであり、ＣＰＵ２１が実行するプログラム・コードをロードしたり、実行プログラムによる作業データの一時的な保存したりするために使用される。
【００４７】
ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２３は、プログラムやデータを恒久的に格納する読み出し専用メモリである。ＲＯＭ２３に格納されるプログラム・コードには、ロボット装置１の電源投入時に実行する自己診断テスト・プログラムや、ロボット装置１の動作を規定する動作制御プログラムなどが挙げられる。
【００４８】
ロボット装置１の制御プログラムには、カメラ１５やマイクロフォン１６などのセンサ入力を処理してシンボルとして認識する「センサ入力・認識処理プログラム」、短期記憶や長期記憶などの記憶動作（後述）を司りながらセンサ入力と所定の行動制御モデルとに基づいてロボット装置１の行動を制御する「行動制御プログラム」、行動制御モデルに従って各関節モータの駆動やスピーカ１７の音声出力などを制御する「駆動制御プログラム」などが含まれる。
【００４９】
不揮発性メモリ２４は、例えばＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）のように電気的に消去再書き込みが可能なメモリ素子で構成され、逐次更新すべきデータを不揮発的に保持するために使用される。逐次更新すべきデータには、暗号鍵やその他のセキュリティ情報、出荷後にインストールすべき装置制御プログラムなどが挙げられる。
【００５０】
インターフェース２５は、制御ユニット２０外の機器と相互接続し、データ交換を可能にするための装置である。インターフェース２５は、例えば、カメラ１５やマイクロフォン１６、スピーカ１７との間でデータ入出力を行なう。また、インターフェース２５は、駆動部５０内の各ドライバ５３−１…との間でデータやコマンドの入出力を行なう。
【００５１】
また、インターフェース２５は、ＲＳ（Ｒｅｃｏｍｍｅｎｄｅｄ  Ｓｔａｎｄａｒｄ）−２３２Ｃなどのシリアル・インターフェース、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）１２８４などのパラレル・インターフェース、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インターフェース、ｉ−Ｌｉｎｋ（ＩＥＥＥ１３９４）インターフェース、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）インターフェース、ＰＣカードやメモリ・スティックを受容するメモリ・カード・インターフェース（カード・スロット）などのような、コンピュータの周辺機器接続用の汎用インターフェースを備え、ローカル接続された外部機器との間でプログラムやデータの移動を行なうようにしてもよい。
【００５２】
また、インターフェース２５の他の例として、赤外線通信（ＩｒＤＡ）インターフェースを備え、外部機器と無線通信を行なうようにしてもよい。
【００５３】
さらに、制御ユニット２０は、無線通信インターフェース２６やネットワーク・インターフェース・カード（ＮＩＣ）２７などを含み、Ｂｌｕｅｔｏｏｔｈのような近接無線データ通信や、ＩＥＥＥ  ８０２．１１ｂのような無線ネットワーク、あるいはインターネットなどの広域ネットワークを経由して、外部のさまざまなホスト・コンピュータとデータ通信を行なうことができる。
【００５４】
このようなロボット装置１とホスト・コンピュータ間におけるデータ通信により、遠隔のコンピュータ資源を用いて、ロボット装置１の複雑な動作制御を演算したり、リモート・コントロールしたりすることができる。
【００５５】
Ｂ．ロボット装置の行動制御システム
図３には、本発明の実施形態に係るロボット装置１の行動制御システム１００の機能構成を模式的に示している。ロボット装置１は、外部刺激の認識結果や内部状態の変化に応じて行動制御を行なうことができる。さらには、長期記憶機能を備え、外部刺激から内部状態の変化を連想記憶することにより、外部刺激の認識結果や内部状態の変化に応じて行動制御を行なうことができる。
【００５６】
図示の行動制御システム１００にはオブジェクト指向プログラミングを採り入れて実装することができる。この場合、各ソフトウェアは、データとそのデータに対する処理手続きとを一体化させた「オブジェクト」というモジュール単位で扱われる。また、各オブジェクトは、メッセージ通信と共有メモリを使ったオブジェクト間通信方法によりデータの受け渡しと呼び出し（Ｉｎｖｏｋｅ）を行なうことができる。
【００５７】
行動制御システム１００は、外部環境（Ｅｎｖｉｒｏｎｍｅｎｔｓ）を認識するために、視覚認識機能部１０１と、聴覚認識機能部１０２と、接触認識機能部１０３を備えている。
【００５８】
視覚認識機能部（Ｖｉｄｅｏ）５１は、例えば、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ：電荷結合素子）カメラのような画像入力装置を介して入力された撮影画像を基に、顔認識や色認識などの画像認識処理や特徴抽出を行なう。視覚認識機能部５１は、後述する”ＭｕｌｔｉＣｏｌｏｒＴｒａｃｋｅｒ”，”ＦａｃｅＤｅｔｅｃｔｏｒ”，”ＦａｃｅＩｄｅｎｔｉｆｙ”といった複数のオブジェクトで構成される。
【００５９】
聴覚認識機能部（Ａｕｄｉｏ）５２は、マイクなどの音声入力装置を介して入力される音声データを音声認識して、特徴抽出したり、単語セット（テキスト）認識を行なったりする。聴覚認識機能部５２は、後述する”ＡｕｄｉｏＲｅｃｏｇ”，”ＡｕｔｈｕｒＤｅｃｏｄｅｒ”といった複数のオブジェクトで構成される。
【００６０】
接触認識機能部（Ｔａｃｔｉｌｅ）５３は、例えば機体の頭部などに内蔵された接触センサによるセンサ信号を認識して、「なでられた」とか「叩かれた」という外部刺激を認識する。
【００６１】
内部状態管理部（ＩＳＭ：Ｉｎｔｅｒｎａｌ  Ｓｔａｔｕｓ  Ｍａｎａｇｅｒ）１０４は、本能や感情といった数種類の情動を数式モデル化して管理しており、上述の視覚認識機能部１０１と、聴覚認識機能部１０２と、接触認識機能部１０３によって認識された外部刺激（ＥＳ：ＥｘｔｅｒｎａｌＳｔｉｍｕｌａ）に応じてロボット装置１の本能や情動といった内部状態を管理する。
【００６２】
感情モデルと本能モデルは、それぞれ認識結果と行動履歴を入力に持ち、感情値と本能値を管理している。行動モデルは、これら感情値や本能値を参照することができる。
【００６３】
本実施形態では、情動についてその存在意義による複数階層で構成され、それぞれの階層で動作する。決定された複数の動作から、そのときの外部環境や内部状態によってどの動作を行なうかを決定するようになっている。また、それぞれの階層で行動は選択されるが、より低次の行動から優先的に動作を発現していくことにより、反射などの本能的行動や、記憶を用いた動作選択などの高次の行動を１つの個体上で矛盾なく発現することができる。
【００６４】
本実施形態に係るロボット装置１は、外部刺激の認識結果や内部状態の変化に応じて行動制御を行なうために、時間の経過とともに失われる短期的な記憶を行なう短期記憶部１０５と、情報を比較的長期間保持するための長期記憶部１０６を備えている。短期記憶と長期記憶という記憶メカニズムの分類は神経心理学に依拠する。
【００６５】
短期記憶部（ＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙ）１０５は、上述の視覚認識機能部１０１と、聴覚認識機能部１０２と、接触認識機能部１０３によって外部環境から認識されたターゲットやイベントを短期間保持する機能モジュールである。例えば、カメラ１５からの入力画像を約１５秒程度の短い期間だけ記憶する。
【００６６】
長期記憶部（ＬｏｎｇＴｅｒｍＭｅｍｏｒｙ）１０６は、物の名前など学習により得られた情報を長期間保持するために使用される。長期記憶部１０６は、例えば、ある行動モジュールにおいて外部刺激から内部状態の変化を連想記憶することができる。
【００６７】
また、本実施形態に係るロボット装置１の行動制御は、反射行動部１０９によって実現される「反射行動」と、状況依存行動階層１０８によって実現される「状況依存行動」と、熟考行動階層１０７によって実現される「熟考行動」に大別される。
【００６８】
反射的行動部（ＲｅｆｌｅｘｉｖｅＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒ）１０９は、システムにとって極めて重大（クリティカル）な行動を司る行動階層である。このようなシステムにクリティカルな行動として、以下のものを挙げることができる。
【００６９】
（１）システムのブート行動
（２）システムのシャットダウン行動
（３）特定のエラーを解除する反射行動、あるいは認識された外部刺激に応じた反射的な機体動作
【００７０】
反射行動には、例えば、センサ入力された外部情報の認識結果を直接受けて、これを分類して、出力行動を直接決定する行動のことである。例えば、人間の顔を追いかけたり、うなずいたりといった振る舞いも含まれる。
【００７１】
ブート行動やシャットダウン行動は、すべての機体リソースを使用する必要がある。これに対し、反射行動は特定エラーなどに関与する機体リソースのみを使用する。
【００７２】
状況依存行動階層（ＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒ）１０８は、短期記憶部１０５並びに長期記憶部１０６の記憶内容や、内部状態管理部１０４によって管理される内部状態を基に、ロボット装置１が現在置かれている状況に即応した行動を制御する。
【００７３】
状況依存行動階層１０８は、各行動毎にステートマシン（又は状態遷移モデル）を用意しており、それ以前の行動や状況に依存して、センサ入力された外部情報の認識結果を分類して、行動を機体上で発現する。また、状況依存行動階層１０８は、内部状態をある範囲に保つための行動（「ホメオスタシス行動」とも呼ぶ）も実現し、内部状態が指定した範囲内を越えた場合には、その内部状態を当該範囲内に戻すための行動が出現し易くなるようにその行動を活性化させる（実際には、内部状態と外部環境の両方を考慮した形で行動が選択される）。状況依存行動は、反射行動に比し、反応時間が遅い。
【００７４】
熟考行動階層（ＤｅｌｉｂｅｒａｔｉｖｅＬａｙｅｒ）１０７は、短期記憶部１０５並びに長期記憶部１０６の記憶内容に基づいて、ロボット装置１の比較的長期にわたる行動計画などを行なう。
【００７５】
熟考行動とは、与えられた状況あるいは人間からの命令により、推論やそれを実現するための計画を立てて行なわれる行動のことである。例えば、ロボットの位置と目標の位置から経路を探索することは熟考行動に相当する。このような推論や計画は、ロボット装置１がインタラクションを保つための反応時間よりも処理時間や計算負荷を要する（すなわち処理時間がかかる）可能性があるので、上記の反射行動や状況依存行動がリアルタイムで反応を返しながら、熟考行動は推論や計画を行なう。
【００７６】
熟考行動階層１０７や状況依存行動階層１０８、反射行動部１０９は、ロボット装置１のハードウェア構成に非依存の上位のアプリケーション・プログラムとして記述することができる。これに対し、ハードウェア依存層制御部（ＣｏｎｆｉｇｕｒａｔｉｏｎＤｅｐｅｎｄｅｎｔＡｃｔｉｏｎｓＡｎｄＲｅａｃｔｉｏｎｓ）１１０は、これら上位アプリケーション（「スキーマ」と呼ばれる行動モジュール）からの命令に応じて、関節アクチュエータの駆動などの機体のハードウェア（外部環境）を直接操作する。
【００７７】
Ｃ．状況依存行動制御
状況依存行動階層（ＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒ）１０８は、短期記憶部１０５並びに長期記憶部１０６の記憶内容や、内部状態管理部１０４によって管理される内部状態を基に、ロボット装置１が現在置かれている状況に即応した行動を制御する。また、状況依存行動階層１０８の一部として、認識された外部刺激に応じて反射的・直接的な機体動作を実行する反射行動部１０９を含んでいる。
【００７８】
Ｃ−１．状況依存行動階層の構成
本実施形態では、状況依存行動階層１０８は、各行動モジュール毎にステートマシン（又は状態遷移モデル）を用意しており、それ以前の行動や状況に依存して、センサ入力された外部情報の認識結果を分類して、行動を機体上で発現する。行動モジュールは、外部刺激や内部状態の変化に応じた状況判断を行なうＭｏｎｉｔｏｒ機能と、行動実行に伴う状態遷移（ステートマシン）を実現するＡｃｔｉｏｎ機能とを備えたスキーマ（ｓｃｈｅｍａ）として記述される。状況依存行動階層１０８は、複数のスキーマが階層的に連結された木構造として構成されている（後述）。
【００７９】
また、状況依存行動階層１０８は、内部状態をある範囲に保つための行動（「ホメオスタシス行動」とも呼ぶ）も実現し、内部状態が指定した範囲内を越えた場合には、その内部状態を当該範囲内に戻すための行動が出易くなるようにその行動を活性化させる（実際には、内部状態と外部環境の両方を考慮した形で行動が選択される）。
【００８０】
図３に示したようなロボット１の行動制御システム１００における各機能モジュールは、オブジェクトとして構成される。各オブジェクトは、メッセージ通信と共有メモリを使ったオブジェクト間通信方法によりデータの受け渡しと呼び出し（Ｉｎｖｏｋｅ）を行なうことができる。図４には、本実施形態に係る行動制御システム１００のオブジェクト構成を模式的に示している。
【００８１】
視覚認識機能部１０１は、”ＦａｃｅＤｅｔｅｃｔｏｒ”、”ＭｕｌｉｔＣｏｌｏｔＴｒａｃｋｅｒ”、”ＦａｃｅＩｄｅｎｔｉｆｙ”という３つのオブジェクトで構成される。
【００８２】
ＦａｃｅＤｅｔｅｃｔｏｒは、画像フレーム中から顔領域を検出するオブジェクトであり、検出結果をＦａｃｅＩｄｅｎｔｉｆｙに出力する。ＭｕｌｉｔＣｏｌｏｔＴｒａｃｋｅｒは、色認識を行なうオブジェクトであり、認識結果をＦａｃｅＩｄｅｎｔｉｆｙ及びＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙ（短期記憶ブ１０５を構成するオブジェクト）に出力する。また、ＦａｃｅＩｄｅｎｔｉｆｙは、検出された顔画像を手持ちの人物辞書で検索するなどして人物の識別を行ない、顔画像領域の位置、大きさ情報とともに人物のＩＤ情報をＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙに出力する。
【００８３】
聴覚認識機能部１０２は、”ＡｕｄｉｏＲｅｃｏｇ”と”ＳｐｅｅｃｈＲｅｃｏｇ”という２つのオブジェクトで構成される。ＡｕｄｉｏＲｅｃｏｇは、マイクなどの音声入力装置からの音声データを受け取って、特徴抽出と音声区間検出を行なうオブジェクトであり、音声区間の音声データの特徴量及び音源方向をＳｐｅｅｃｈＲｅｃｏｇやＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙに出力する。ＳｐｅｅｃｈＲｅｃｏｇは、ＡｕｄｉｏＲｅｃｏｇから受け取った音声特徴量と音声辞書及び構文辞書を使って音声認識を行なうオブジェクトであり、認識された単語のセットをＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙに出力する。
【００８４】
触覚認識記憶部１０３は、接触センサからのセンサ入力を認識する”ＴａｃｔｉｌｅＳｅｎｓｏｒ”というオブジェクトで構成され、認識結果はＳＨｏｒｔＴｅｒｍＭｅｍｏｒｙや内部状態を管理するオブジェクトであるＩｎｔｅｒｎａｌＳｔａｔｅＭｏｄｅｌ（ＩＳＭ）に出力する。
【００８５】
ＳｈｏｒｔＴｅｒｍＭｅｍｏｒｙ（ＳＴＭ）は、短期記憶部１０５を構成するオブジェクトであり、上述の認識系の各オブジェクトによって外部環境から認識されたターゲットやイベントを短期間保持（例えばカメラ１５からの入力画像を約１５秒程度の短い期間だけ記憶する）する機能モジュールであり、ＳＴＭクライアントであるＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒに対して外部刺激の通知（Ｎｏｔｉｆｙ）を定期的に行なう。
【００８６】
ＬｏｎｇＴｅｒｍＭｅｍｏｒｙ（ＬＴＭ）は、長期記憶部１０６を構成するオブジェクトであり、物の名前など学習により得られた情報を長期間保持するために使用される。ＬｏｎｇＴｅｒｍＭｅｍｏｒｙは、例えば、ある行動モジュールにおいて外部刺激から内部状態の変化を連想記憶することができる。
【００８７】
ＩｎｔｅｒｎａｌＳｔａｔｕｓＭａｎａｇｅｒ（ＩＳＭ）は、内部状態管理部１０４を構成するオブジェクトであり、本能や感情といった数種類の情動を数式モデル化して管理しており、上述の認識系の各オブジェクトによって認識された外部刺激（ＥＳ：ＥｘｔｅｒｎａｌＳｔｉｍｕｌａ）に応じてロボット装置１の本能や情動といった内部状態を管理する。
【００８８】
ＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓｌａｙｅｒ（ＳＢＬ）は状況依存型行動階層１０８を構成するオブジェクトである。ＳＢＬは、ＳｈｏｒＴｅｒｍＭｅｍｏｒｙのクライアント（ＳＴＭクライアント）となるオブジェクトであり、ＳｈｏｒＴｅｒｍＭｅｍｏｒｙからは定期的に外部刺激（ターゲットやイベント）に関する情報の通知（Ｎｏｔｉｆｙ）を受け取ると、スキーマ（ｓｃｈｅｍａ）すなわち実行すべき行動モジュールを決定する（後述）。
【００８９】
ＲｅｆｌｅｘｉｖｅＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒは、システムにとって極めて重大（クリティカル）な行動を司る行動階層である。このようなシステムにクリティカルな行動として、以下のものを挙げることができる。
【００９０】
（１）システムのブート行動
（２）システムのシャットダウン行動
（３）特定のエラーを解除する反射行動、あるいは認識された外部刺激に応じた反射的な機体動作
【００９１】
反射行動には、例えば、センサ入力された外部情報の認識結果を直接受けて、これを分類して、出力行動を直接決定する行動が含まれる。例えば、人間の顔を追いかけたり、うなずいたりといった振る舞いは反射行動も含まれる。ブート行動やシャットダウン行動は、すべての機体リソースを使用する必要がある。これに対し、反射行動は特定エラーなどに関与する機体リソースのみを使用する。
【００９２】
ＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒは外部刺激や内部状態の変化などの状況に応じて行動を選択する。これに対し、ＲｅｆｌｅｘｉｖｅＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒは、外部刺激に応じて反射的を行動する。これら２つのオブジェクトによる行動選択は独立して行なわれるため、互いに選択された行動モジュール（スキーマ）（後述）を機体上で実行する場合に、ロボット１のハードウェア・リソースが競合して実現不可能なこともある。
【００９３】
Ｒｅｓｏｕｒｃｅｍａｎａｇｅｒというオブジェクトは、ＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒとＲｅｆｌｅｘｉｖｅＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒｓＬａｙｅｒによる行動選択時のハードウェアの競合を調停する。そして、調停結果に基づいて機体動作を実現する各オブジェクトに通知することにより機体が駆動する。
【００９４】
ＳｏｕｎｄＰｅｒｆｏｒｍｅｒ、ＭｏｔｉｏｎＣｏｎｔｒｏｌｌｅｒ、ＬｅｄＣｏｎｔｒｏｌｌｅｒは、機体動作を実現するオブジェクトである。ＳｏｕｎｄＰｅｒｆｏｒｍｅｒは、音声出力を行なうためのオブジェクトであり、ＲｅｓｏｕｒｃｅＭａｎａｇｅｒ経由でＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒＬａｙｅｒから与えられたテキスト・コマンドに応じて音声合成を行ない、ロボット１の機体上のスピーカから音声出力を行なう。また、ＭｏｔｉｏｎＣｏｎｔｒｏｌｌｅｒは、機体上の各関節アクチュエータの動作を行なうためのオブジェクトであり、ＲｅｓｏｕｒｃｅＭａｎａｇｅｒ経由でＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒＬａｙｅｒから手や脚などを動かすコマンドを受けたことに応答して、該当する関節角を計算する。また、ＬｅｄＣｏｎｔｒｏｌｌｅｒは、ＬＥＤ１９の点滅動作を行なうためのオブジェクトであり、ＲｅｓｏｕｒｃｅＭａｎａｇｅｒ経由でＳｉｔｕａｔｅｄＢｅｈａｖｉｏｒＬａｙｅｒからコマンドを受けたことに応答してＬＥＤ１９の点滅駆動を行なう。
【００９５】
図５には、状況依存行動階層（ＳＢＬ）１０８（但し、反射行動部１０９を含む）による状況依存行動制御の形態を模式的に示している。認識系１０１〜１０３による外部環境の認識結果は、外部刺激として状況依存行動階層１０８（反射行動部１０９を含む）に与えられる。また、認識系による外部環境の認識結果に応じた内部状態の変化も状況依存行動階層１０８に与えられる。そして、状況依存行動階層１０８では、外部刺激や内部状態の変化に応じて状況を判断して、行動選択を実現することができる。
【００９６】
図６には、図５に示した状況依存行動階層１０８による行動制御の基本的な動作例を示している。同図に示すように、状況依存行動階層１０８（ＳＢＬ）では、外部刺激や内部状態の変化によって各行動モジュール（スキーマ）の活動度レベルを算出して、活動度レベルの度合いに応じてスキーマを選択して行動を実行する。活動度レベルの算出には、例えばライブラリを利用することにより、すべてのスキーマについて統一的な計算処理を行なうことができる（以下、同様）。例えば、活動度レベルが最も高いスキーマを選択したり、所定の閾値を越えた２以上のスキーマを選択して並列的に行動実行したりするようにしてもよい（但し、並列実行するときは各スキーマ同士でハードウェア・リソースの競合がないことを前提とする）。
【００９７】
また、図７には、図５に示した状況依存行動階層１０８により反射行動を行なう場合の動作例を示している。この場合、同図に示すように、状況依存行動階層１０８に含まれる反射行動部１０９（ＲｅｆｌｅｘｉｖｅＳＢＬ）は、認識系の各オブジェクトによって認識された外部刺激を直接入力として活動度レベルを算出して、活動度レベルの度合いに応じてスキーマを選択して行動を実行する。この場合、内部状態の変化は、活動度レベルの計算には使用されない。
【００９８】
また、図８には、図５に示した状況依存行動階層１０８により感情表現を行なう場合の動作例を示している。内部状態管理部１０４では、本能や感情などの情動を数式モデルとして管理しており、情動パラメータの状態値が所定値に達したことに応答して、状況依存行動階層１０８に内部状態の変化を通知（Ｎｏｔｉｆｙ）する。状況依存行動階層１０８は、内部状態の変化を入力として活動度レベルを算出して、活動度レベルの度合いに応じてスキーマを選択して行動を実行する。この場合、認識系の各オブジェクトによって認識された外部刺激は、内部状態管理部１０４（ＩＳＭ）における内部状態の管理・更新に利用されるが、スキーマの活動度レベルの算出には使用されない。
【００９９】
Ｃ−２．スキーマ（行動モジュール）
状況依存行動階層１０８は、各行動モジュール毎にステートマシンを用意しており、それ以前の行動や状況に依存して、センサ入力された外部情報の認識結果を分類して、行動を機体上で発現する。行動モジュールは、機体動作を記述し行動実行に伴う状態遷移（ステートマシン）を実現するＡｃｔｉｏｎ機能と、ａｃｔｉｏｎ機能において記述された行動の実行を外部刺激や内部状態に応じて評価して状況判断を行なうＭｏｎｉｔｏｒ機能とを備えたスキーマ（ｓｃｈｅｍａ）として記述される。図９には、状況依存行動階層１０８が複数のスキーマによって構成されている様子を模式的に示している。
【０１００】
状況依存行動階層１０８（より厳密には、状況依存行動階層１０８のうち、通常の状況依存行動を制御する階層）は、複数のスキーマが階層的に連結されたツリー構造として構成され、外部刺激や内部状態の変化に応じてより最適なスキーマを統合的に判断して行動制御を行なうようになっている。ツリーは、例えば動物行動学的（Ｅｔｈｏｌｏｇｉｃａｌ）な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリーなど、複数のサブツリー（又は枝）を含んでいる。
【０１０１】
図１０には、状況依存行動階層１０８におけるスキーマのツリー構造を模式的に示している。同図に示すように、状況依存行動階層１０８は、短期記憶部１０５から外部刺激の通知（Ｎｏｔｉｆｙ）を受けるルート・スキーマを先頭に、抽象的な行動カテゴリから具体的な行動カテゴリに向かうように、各階層毎にスキーマが配設されている。例えば、ルート・スキーマの直近下位の階層では、「探索する（Ｉｎｖｅｓｔｉｇａｔｅ）」、「食べる（Ｉｎｇｅｓｔｉｖｅ）」、「遊ぶ（Ｐｌａｙ）」というスキーマが配設される。そして、「探索する（Ｉｎｖｅｓｔｉｇａｔｅ）」の下位には、「ＩｎｖｅｓｔｉｇａｔｉｖｅＬｏｃｏｍｏｔｉｏｎ」、「ＨｅａｄｉｎＡｉｒＳｎｉｆｆｉｎｇ」、「ＩｎｖｅｓｔｉｇａｔｉｖｅＳｎｉｆｆｉｎｇ」というより具体的な探索行動を記述したスキーマが配設されている。同様に、スキーマ「食べる（Ｉｎｇｅｓｔｉｖｅ）」の下位には「Ｅａｔ」や「Ｄｒｉｎｋ」などのより具体的な飲食行動を記述したスキーマが配設され、スキーマ「遊ぶ（Ｐｌａｙ）」の下位には「ＰｌａｙＢｏｗｉｎｇ」、「ＰｌａｙＧｒｅｅｔｉｎｇ」、「ＰｌａｙＰａｗｉｎｇ」などのより具体的な遊ぶ行動を記述したスキーマが配設されている。
【０１０２】
図示の通り、各スキーマは外部刺激と内部状態を入力している。また、各スキーマは、少なくともＭｏｎｉｔｏｒ関数とＡｃｔｉｏｎ関数を備えている。
【０１０３】
図１１には、スキーマの内部構成を模式的に示している。同図に示すように、スキーマは、所定の事象の発生に従がって状態（又はステート）が移り変わっていく状態遷移モデル（ステートマシン）の形式で機体動作を記述したＡｃｔｉｏｎ関数と、外部刺激や内部状態に応じてＡｃｔｉｏｎ関数の各状態を評価して活動度レベル値として返すＭｏｎｉｔｏｒ関数と、Ａｃｔｉｏｎ関数のステートマシンをＲＥＡＤＹ（準備完了）、ＡＣＴＩＶＥ（活動中），ＳＬＥＥＰ（待機中）いずれかの状態としてスキーマの状態を記憶管理する状態管理部で構成されている。
【０１０４】
Ｍｏｎｉｔｏｒ関数は、外部刺激と内部状態に応じて当該スキーマの活動度レベル（Ａｃｔｉｖａｔｉｏｎ  Ｌｅｖｅｌ：ＡＬ値）を算出する関数である。図１０に示すようなツリー構造を構成する場合、上位（親）のスキーマは外部刺激と内部状態を引数として下位（子供）のスキーマのＭｏｎｉｔｏｒ関数をコールすることができ、子供のスキーマはＡＬ値を返り値とする。また、スキーマは自分のＡＬ値を算出するために、さらに子供のスキーマのＭｏｎｉｔｏｒ関数をコールすることができる。そして、ルートのスキーマは、各サブツリーからのＡＬ値が返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断することができる。
【０１０５】
例えば、ルートのスキーマは、ＡＬ値が最も高いスキーマを選択したり、ＡＬ値が所定の閾値を越えた２以上のスキーマを選択して並列的に行動実行したりするようにしてもよい（但し、並列実行するときは各スキーマ同士でハードウェア・リソースの競合がないことを前提とする）。
【０１０６】
図１２には、Ｍｏｎｉｔｏｒ関数の内部構成を模式的に示している。同図に示すように、Ｍｏｎｉｔｏｒ関数は、当該スキーマで記述されている行動を誘発する評価値を活動度レベルとして算出する行動誘発評価値演算器と、使用する機体リソースを特定する使用リソース演算器を備えている。図１１で示す例では、Ｍｏｎｉｔｏｒ関数は、スキーマすなわち行動モジュールの管理を行なう行動状態制御部（仮称）からコールされると、Ａｃｔｉｏｎ関数のステートマシンを仮想実行して、行動誘発評価値（すなわち活動度レベル）と使用リソースを演算して、これを返すようになっている。
【０１０７】
また、Ａｃｔｉｏｎ関数は、スキーマ自身が持つ行動を記述したステートマシン（又は状態遷移モデル）（後述）を備えている。図１０に示すようなツリー構造を構成する場合、親スキーマは、Ａｃｔｉｏｎ関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。本実施形態では、ＡｃｔｉｏｎのステートマシンはＲｅａｄｙにならないと初期化されない。言い換えれば、中断しても状態はリセットされず、スキーマが実行中の作業データを保存することから、中断再実行が可能である（後述）。
【０１０８】
図１１で示す例では、スキーマすなわち行動モジュールの管理を行なう行動状態制御部（仮称）は、Ｍｏｎｉｔｏｒ関数からの戻り値に基づいて、実行すべき行動を選択し、該当するスキーマのＡｃｔｉｏｎ関数をコールし、あるいは状態管理部に記憶されているスキーマの状態の移行を指示する。例えば行動誘発評価値としての活動度レベルが最も高いスキーマを選択したり、リソースが競合しないように優先順位に従って複数のスキーマを選択したりする。また、行動状態制御部は、より優先順位の高いスキーマが起動し、リソースの競合が生じた場合、優先順位が下位のスキーマの状態をＡＣＴＩＶＥからＳＬＥＥＰに退避させ、競合状態が解かれるとＡＣＴＩＶＥに回復するなど、スキーマの状態を制御する。
【０１０９】
行動状態制御部は、図１３に示すように、状況依存行動階層１０８において１つだけ配設して、同階層１０８を構成するすべてのスキーマを一元的に集中管理するようにしてもよい。
【０１１０】
図示の例では、行動状態制御部は、行動評価部と、行動選択部と、行動実行部を備えている。行動評価部は、例えば所定の制御周期で各スキーマのＭｏｎｉｔｏｒ関数をコールして、各々の活動度レベルと使用リソースを取得する。
【０１１１】
行動選択部は、各スキーマによる行動制御と機体リソースの管理を行なう。例えば、集計された活動度レベルの高い順にスキーマを選択するとともに、（状況依存行動階層１０８内で管理する範囲において）使用リソースが競合しないように２以上のスキーマを同時に選択する。
【０１１２】
行動実行部は、選択されたスキーマのＡｃｔｉｏｎ関数に行動実行命令を発行したり、スキーマの状態（ＲＥＡＤＹ、ＡＣＴＩＶＥ，ＳＬＥＥＰ）を管理して、スキーマの実行を制御したりする。例えば、より優先順位の高いスキーマが起動し、リソースの競合が生じた場合、優先順位が下位のスキーマの状態をＡＣＴＩＶＥからＳＬＥＥＰに退避させ、競合状態が解かれるとＡＣＴＩＶＥに回復する。
【０１１３】
あるいは、このような行動状態制御部の機能を、状況依存行動階層１０８内の各スキーマ毎に配置するようにしてもよい。例えば、図１０に示したように，スキーマがツリー構造を形成している場合（図１４を参照のこと）、上位（親）のスキーマの行動状態制御は、外部刺激と内部状態を引数として下位（子供）のスキーマのＭｏｎｉｔｏｒ関数をコールし、子供のスキーマから活動度レベルと使用リソースを返り値として受け取る。また、子供のスキーマは、自分の活動度レベルと使用リソースを算出するために、さらに子供のスキーマのＭｏｎｉｔｏｒ関数をコールする。そして、ルートのスキーマの行動状態制御部には、各サブツリーからの活動度レベルと使用リソースが返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断して、Ａｃｔｉｏｎ関数をコールして、子供スキーマの実行を開始したり中断させたりする。
【０１１４】
図１５には、状況依存行動階層１０８において通常の状況依存行動を制御するためのメカニズムを模式的に示している。
【０１１５】
同図に示すように、状況依存行動階層１０８には、短期記憶部１０５から外部刺激が入力（Ｎｏｔｉｆｙ）されるとともに、内部状態管理部１０９から内部状態の変化が入力される。状況依存行動階層１０８は、例えば動物行動学的（Ｅｔｈｏｌｏｇｉｃａｌ）な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリーなど、複数のサブツリーで構成されており、ルート・スキーマは、外部刺激の通知（Ｎｏｔｉｆｙ）に応答して、各サブツリーのｍｏｎｉｔｏｒ関数をコールし、その返り値としての活動度レベル（ＡＬ値）を参照して、統合的な行動選択を行ない、選択された行動を実現するサブツリーに対してａｃｔｉｏｎ関数をコールする。また、状況依存行動階層１０８において決定された状況依存行動は、リソース・マネージャにより反射行動部１０９による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作（ＭｏｔｉｏｎＣｏｎｔｒｏｌｌｅｒ）に適用される。
【０１１６】
また、状況依存行動層１０８のうち、反射的行動部１０９は、上述した認識系の各オブジェクトによって認識された外部刺激に応じて反射的・直接的な機体動作を実行する（例えば、障害物の検出により咄嗟に避ける）。このため、通常の状況依存行動を制御する場合（図１０）とは相違し、認識系の各オブジェクトからの信号を直接入力する複数のスキーマが、階層化されずに並列的に配置されている。
【０１１７】
Ｃ−３．反射行動階層の構成
反射行動階層１０９は、システムにとって極めて重大（クリティカル）な行動を司る行動階層であり、各行動モジュール毎にステートマシン（又は状態遷移モデル）を用意している。行動モジュールは、外部刺激や内部状態の変化に応じた状況判断を行なうＭｏｎｉｔｏｒ機能と、行動実行に伴う状態遷移（ステートマシン）を実現するＡｃｔｉｏｎ機能とを備えたスキーマ（ｓｃｈｅｍａ）として記述される（同上）。
【０１１８】
図１６には、反射行動階層１０９の内部構成を示している。同図に示すように、複数のスキーマによって構成されているが、各スキーマの構成を図１１及び図１２を参照しながら説明した通りである。
【０１１９】
同図に示す例では、反射行動階層１０９は、ルートのスキーマの下位に、システムのブートを行なうスキーマ、システムのシャットダウンを行なうスキーマ、特定のエラーを解除する反射行動、あるいは認識された外部刺激に応じた反射的な機体動作を行なうスキーマ群が配置されている。
【０１２０】
視覚認識機能部１０１、聴覚認識機能部１０２、接触認識機能部１０３などの認識機能部から外部刺激が入力されると、ルートのスキーマは、下位の各スキーマのＭｏｎｉｔｏｒ関数をコールして、活動度レベルとスキーマ実行時の使用リソースを返り値として受け取り、最も活動度レベルの高いスキーマを実行させる。
【０１２１】
ブート行動モジュールやシャットダウン行動モジュールは、すべての機体リソースを使用する必要がある。これに対し、エラー処理／反射行動モジュールは特定エラーなどに関与する機体リソースのみを使用する。
【０１２２】
Ｃ−４．状況依存行動階層と反射行動階層の協働的動作
状況依存行動階層１０８によれば、それ以前の行動や状況に依存して、センサ入力によって得られる外部刺激とロボット自身の内部状態からなる状況に依存した行動を選択的に実行することができる。
【０１２３】
一方、反射行動階層１０９は、システムのブートやシャットダウン、特定のエラー解除などのシステムにとって極めて重大（クリティカル）な行動を実行する。
【０１２４】
状況依存型行動や反射行動は、ロボットの行動制御システムにおいて異なる制御階層レベルとして実装され（図９を参照のこと）、同時又は並列実行することが可能である。ところがこのような階層化システム・アーキテクチャにおいては、各行動階層の間でコミュニケーションすなわち情報交換を行なう術がない。このため、各行動階層において互いに干渉し合うような活動を独自に発現してしまった場合には、システムの誤動作を招来し、システム全体として一貫したパフォーマンスを行なうことが困難となってしまう。
【０１２５】
そこで、本実施形態では、一方の行動階層におけるスキーマのアクティビティを記述したログ情報を他方の行動階層に通信するためのいわゆるインターフェース機能を配設し、他方の行動階層ではこのインターフェースを介してスキーマの実行をモニタして、協働的又は強調的なスキーマの実行を行なうようにした。この結果、コンピュータ・リソースの使用やユーザの満足度などの観点で、システムのパフォーマンスが向上する。
【０１２６】
図１７には、状況依存行動階層１０８と反射行動階層１０９の間で同時並行実行が可能な協働的動作を実現するための仕組みを図解している。
【０１２７】
同図に示すように、状況依存行動階層１０８にはログ・メモリ・クライアント（ログ・メモリ・モジュール）１５１が設けられるとともに、反射行動階層１０９にはログ・メモリ・サーバ（ログ・メモリ・モジュール）１５２が設けられ、これら、サーバ〜クライアント間は通信部１５３を介して接続されている。
【０１２８】
また、状況行動依存行動階層１０８には、木構造形式のスキーマ群のルート・スキーマの直近下位に、反射行動階層監視スキーマ１５４を配設している。反射行動階層監視スキーマ１５４はダミーのＡｃｔｉｏｎ関数を持つとともに、そのＭｏｎｉｔｏｒ関数は、反射行動階層１０９におけるスキーマの実行に応答して、自らの活動度レベルを最大にするとともに、すべての使用リソース（あるいは反射行動階層１０９において使用されているリソース）を戻り値とする。この結果、ルート・スキーマは、必ず反射行動階層監視スキーマ１５４を選択するので、状況依存行動階層１０８と反射行動階層１０９の間でリソースの競合が回避され、システムにクリティカルなスキーマを支障なく実行することができる。
【０１２９】
スキーマの実行に関するログ情報を生成する機構は、各行動階層毎に配設される。行動階層間でログ情報を交換する機構は、クライアント〜サーバ形式で実装される。そして、各行動階層において、ログ・メモリからログ情報を取り出す機構が設けられている。
【０１３０】
システム実行中、上述した仕組みに従いスキーマが適宜選択され実行される。そして、各行動階層においてロギング機構を用いて、実行中のスキーマに関する情報を含んだ活動ログが生成される。ログ情報には、例えば以下のようなデータが含まれていることが好ましい。
【０１３１】
（１）スキーマの識別情報（階層ＩＤ、スキーマＩＤ、スキーマ名）
（２）実行ステータス（例えば、ＲＥＡＤＹ，ＡＣＴＩＶＥ，ＳＬＥＥＰ）
（３）サブ実行ステータス（例えば、開始（Ｓｔａｒｔ）、終了（Ｅｎｄ）、成功（Ｓｕｃｃｅｓｓ）、失敗（Ｆａｉｌ））
（４）実行ターゲット
（５）実行時間
【０１３２】
図１８には、ログ・メモリ・モジュールの構成例を示している。また、図１９には、メモリ構成の設定例を示している。
【０１３３】
行動階層間のログ情報の交換メカニズムすなわち通信部１５３を用いて、一方の行動階層において生成されたログ情報が他方の行動階層のログ・メモリに転送される。
【０１３４】
図１７に示す例では、各行動階層のログ・メモリ・モジュールは、クライアント１５１及びサーバ１５２として動作している。ログ・メモリ・モジュールは、当該行動階層内のスキーマ実行により生成されたログ情報を格納する。そして、外部の行動階層がクライアントとして接続されている場合、ログ・メモリ・モジュールは、ログ情報をクライアントに転送する。また同時に、ログ・メモリ・モジュールは、外部の行動階層のメモリ・モジュールに対してクライアントとして接続することができる。この場合、外部の行動階層において生成されたログ情報を取り出して格納することができる。
【０１３５】
ログ情報の取り出し機構を用いて、各スキーマは、当該行動階層内のログ・メモリ・モジュールからログ情報にアクセスすることができる。内部のログ・メモリ・モジュールと外部の行動階層間の通信機能により、活動度ログは、行動階層内と外部の行動階層双方の情報を含む。
【０１３６】
既に述べたように、スキーマ間で不適当な干渉（使用リソースの競合）が発生すると、システムの誤動作を招来するので、回避し又は制限しなければならない。
【０１３７】
より具体的に言えば、状況依存行動階層１０８は、システムにクリティカルな行動の実行を妨害すべきではない。例えば、反射行動階層１０９において、システムのブート時（ブート・スキーマの活動）、シャットダウン時（シャットダウン・スキーマの活動）、並びにエラー回避処理時や反射行動時（エラー処理／反射行動スキーマ）により検出され取り扱われているエラー状況において、状況依存行動階層１０８のスキーマを活動化すべきではない。
【０１３８】
反射行動階層監視スキーマ１５４は、状況依存行動階層１０８内で木構造形式のスキーマ群のルート・スキーマの直近下位に配設されている。反射行動階層監視スキーマ１５４は、ログ・メモリ・クライアント１５１内の活動度ログを監視して、反射行動階層１０９内の各スキーマ、すなわちブート・スキーマ、シャットダウン・スキーマ、エラー回避スキーマの開始／終了を検出する。反射行動階層１０９内のスキーマの活動が検出されると、反射行動階層監視スキーマ１５４は、適当な処理を実行する。例えば、状況行動依存階層１０８内で他のスキーマの実行を制限する。また、反射行動階層１０９内のスキーマの活動が終了すると、活動検出により課された制限を解除する。
【０１３９】
反射行動階層１０９内では、活動度ログが活動化されている。すなわち、スキーマが実行すると、ログ情報が生成される。
【０１４０】
状況依存行動階層１０８内のログ・メモリ・モジュールは、反射行動階層１０９内のログ・メモリ・モジュールに対し、クライアントとして接続されている。したがって、反射行動階層１０９内で生成されたログ情報は、状況依存行動階層１０８内のログ・メモリ・モジュールすなわちログ・メモリ・クライアント１５１に転送される。
【０１４１】
反射行動階層監視スキーマ１５４は、階層ＩＤ、スキーマＩＤ、スキーマ名などの識別情報を用いて、関連のあるスキーマのログを検索する。階層ＩＤとスキーマＩＤの両方を用いて、特定のスキーマを検索することができる。また、階層ＩＤのみを用いて、当該階層におけるすべてのスキーマの活動度を取得することができる。
【０１４２】
選択されたスキーマの関連する活動度を検索するために、実行ステータスとサブ実行ステータスを用いる。例えば、実行開始と実行終了は、それぞれ（ＡＣＴＩＶＥ，Ｓｔａｒｔ）及び（ＡＣＴＩＶＥ，（Ｅｎｄ，Ｓｕｃｃｅｓｓ））を探すことによって見出される。
【０１４３】
本実施形態では、状況依存行動階層１０８内では、リソース競合と活動度レベルを用いた以下の基準によりスキーマの実行が選択され又は制限される。
【０１４４】
（１）使用リソースが競合しないすべてのスキーマに対して実行権を許可する
（２）競合が生じた場合、より高い活動度レベルを持つスキーマに実行権が許可され、既に実行中の競合する他のスキーマの実行はすべて停止される。
【０１４５】
このようなスキーマ選択及び実行のポリシーは、当該行動階層内でのみ適用され、行動階層内のスキーマのみしか考慮されない。したがって、異なる行動階層において実行されるスキーマ間でリソースの競合が生じても、検出することができず、スキーマの活動間で不適当な干渉が招来される。
【０１４６】
本実施形態では、反射行動階層監視スキーマ１５４は、リソース競合と活動度レベルに基づくスキーマ選択及び実行のポリシーを用いて、状況依存行動階層１０８内で他のスキーマの活動を制限することができる。すなわち、反射行動階層監視スキーマ１５４は、適当なリソースを要求するとともに、活動度レベルを十分高く励起する。リソース競合に関しては、実行中のスキーマを停止させるとともに、他のスキーマが選択され実行されるのを回避する。
【０１４７】
反射行動階層監視スキーマ１５４は、反射行動階層１０９内で検出されたスキーマの活動に応じて、適当なリソースを選択する。ブート・スキーマやシャットダウン・スキーマが選択・実行されているときには、反射行動階層監視スキーマ１５４は、すべての機体リソースを要求する。また、エラー回避スキーマや反射行動スキーマが選択・実行されているときには、反射行動階層監視スキーマ１５４は、特定エラーなどに関与する機体リソースのみを要求する。
【０１４８】
反射行動階層監視スキーマ１５４は、状況行動依存行動階層１０８内で、ルート・スキーマの直近下位に配設されているので、当該行動階層内で他のスキーマの選択や実行に大きく影響を与えることができる。
【０１４９】
反射行動階層監視スキーマ１５４のＭｏｎｉｔｏｒ関数は、反射行動階層１０９におけるスキーマの実行に応答して、自らの活動度レベルを最大にするとともに、すべての使用リソース（あるいは反射行動階層１０９において使用されているリソース）を戻り値とする。この結果、ルート・スキーマは、必ず反射行動階層監視スキーマ１５４を選択するので、状況依存行動階層１０８と反射行動階層１０９の間でリソースの競合が回避され、システムにクリティカルなスキーマを支障なく実行することができる。
【０１５０】
また、反射行動階層監視スキーマ１５４は、活動度検出により課されているスキーマ選択や実行の制限を、自らの要求リソース解放と活動度レベルの低下により解除することができる。これによって、リソースの競合を取り除き、他のスキーマは通常の活動を継続することができる。
【０１５１】
このように、反射行動階層監視スキーマ１５４の介在により、複数の行動階層間でのリソースの競合を好適に回避し、不適当に干渉し合うことなく協働的且つ有機的に並列実行することができる。
【０１５２】
各行動階層においては、独自のポリシーに従い、スキーマの選択や実行を行なうことができる。また、各行動階層におけるリソース管理を簡素化することができる。
【０１５３】
また、新しい行動階層を、既存の行動階層とは独立して開発することができ、これをシステムに搭載する際にも特別な修正を必要としない。
【０１５４】
［追補］
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。
【０１５５】
本発明の要旨は、必ずしも「ロボット」と称される製品には限定されない。すなわち、電気的若しくは磁気的な作用を用いて人間の動作に似せた運動を行なう機械装置、あるいはその他の移動機械、あるいは機械装置の行動を制御する情報処理システムであるならば、例えば玩具などのような他の産業分野に属する製品であっても、同様に本発明を適用することができる。
【０１５６】
要するに、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、冒頭に記載した特許請求の範囲の欄を参酌すべきである。
【０１５７】
【発明の効果】
以上詳記したように、本発明によれば、ロボットが置かれている状況を統合的に判断して適当な行動を選択する状況依存型の行動と認識された外部刺激に応じて反射的な機体動作を実現する反射型の行動を適宜行なうことができる、優れたロボットの行動制御システムを提供することができる。
【０１５８】
また、本発明によれば、状況依存行動と反射行動が不適当に干渉し合うことなく協働的且つ有機的に並列実行することができる、優れたロボットの行動制御システムを提供することができる。
【図面の簡単な説明】
【図１】本発明に実施に供されるロボット装置１の機能構成を模式的に示した図である。
【図２】制御ユニット２０の構成をさらに詳細に示した図である。
【図３】本発明の実施形態に係るロボット装置１の行動制御システム１００の機能構成を模式的に示した図である。
【図４】本発明の実施形態に係る行動制御システム１００のオブジェクト構成を模式的に示した図である。
【図５】状況依存行動階層１０８による状況依存行動制御の形態を模式的に示した図である。
【図６】図５に示した状況依存行動階層１０８による行動制御の基本的な動作例を示した図である。
【図７】図５に示した状況依存行動階層１０８により反射行動を行なう場合の動作例を示した図である。
【図８】図５に示した状況依存行動階層１０８により感情表現を行なう場合の動作例を示した図である。
【図９】状況依存行動階層１０８が複数のスキーマによって構成されている様子を模式的に示した図である。
【図１０】状況依存行動階層１０８におけるスキーマのツリー構造を模式的に示した図である。
【図１１】スキーマの内部構成を模式的に示した図である。
【図１２】Ｍｏｎｉｔｏｒ関数の内部構成を模式的に示した図である。
【図１３】行動状態制御部の構成例を模式的に示した図である。
【図１４】行動状態制御部の他の構成例を模式的に示した図である。
【図１５】状況依存行動階層１０８において通常の状況依存行動を制御するためのメカニズムを模式的に示した図である。
【図１６】反射行動階層１０９の内部構成を示した図である。
【図１７】状況依存行動階層１０８と反射行動階層１０９間の協働的動作の仕組みを説明するための図である。
【図１８】ログ・メモリ・モジュールの構成例を示した図である。
【図１９】メモリ構成の設定例を示した図である。
【符号の説明】
１…ロボット装置
１５…ＣＣＤカメラ
１６…マイクロフォン
１７…スピーカ
１８…タッチ・センサ
１９…ＬＥＤインジケータ
２０…制御部
２１…ＣＰＵ
２２…ＲＡＭ
２３…ＲＯＭ
２４…不揮発メモリ
２５…インターフェース
２６…無線通信インターフェース
２７…ネットワーク・インターフェース・カード
２８…バス
２９…キーボード
４０…入出力部
５０…駆動部
５１…モータ
５２…エンコーダ
５３…ドライバ
１００…行動制御システム
１０１…視覚認識機能部
１０２…聴覚認識機能部
１０３…接触認識機能部
１０５…短期記憶部
１０６…長期記憶部
１０７…熟考行動階層
１０８…状況依存行動階層
１０９…反射行動部
【図１】
2004291147.tif 000003
【図２】
2004291147.tif 000004
【図３】
2004291147.tif 000005
【図４】
2004291147.tif 000006
【図５】
2004291147.tif 000007
【図６】
2004291147.tif 000008
【図７】
2004291147.tif 000009
【図８】
2004291147.tif 000010
【図９】
2004291147.tif 000011
【図１０】
2004291147.tif 000012
【図１１】
2004291147.tif 000013
【図１２】
2004291147.tif 000014
【図１３】
2004291147.tif 000015
【図１４】
2004291147.tif 000016
【図１５】
2004291147.tif 000017
【図１６】
2004291147.tif 000018
【図１７】
2004291147.tif 000019
【図１８】
2004291147.tif 000020
【図１９】
2004291147.tif 000021