JP2004283960A - ロボット装置、その行動制御方法、及びプログラム - Google Patents
ロボット装置、その行動制御方法、及びプログラム Download PDFInfo
- Publication number
- JP2004283960A JP2004283960A JP2003079147A JP2003079147A JP2004283960A JP 2004283960 A JP2004283960 A JP 2004283960A JP 2003079147 A JP2003079147 A JP 2003079147A JP 2003079147 A JP2003079147 A JP 2003079147A JP 2004283960 A JP2004283960 A JP 2004283960A
- Authority
- JP
- Japan
- Prior art keywords
- action
- value
- behavior
- schema
- action value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】行動の選択を安定化し、行動に一貫性を持たせることができるロボット装置、その制御方法及びプログラムを提供する。
【解決手段】ロボット装置は、行動が記述され、その実現レベルに応じて木構造に構成された複数の要素行動132と、内部状態及び外部刺激から各行動の行動価値を所定のタイミングで算出する行動価値評価部120と、木構造の上位から下位へ行動価値が高い順に行動を選択して実行させる行動選択部130と、実行中の行動が存在する場合、実行中の行動以外の行動の選択が抑制されるよう行動価値評価部140を制御する行動制御部140とを有する。行動制御部140は、行動価値評価部120を制御し、実行中以外の行動の行動価値を本来の行動価値−10として低くする。
【選択図】 図4
【解決手段】ロボット装置は、行動が記述され、その実現レベルに応じて木構造に構成された複数の要素行動132と、内部状態及び外部刺激から各行動の行動価値を所定のタイミングで算出する行動価値評価部120と、木構造の上位から下位へ行動価値が高い順に行動を選択して実行させる行動選択部130と、実行中の行動が存在する場合、実行中の行動以外の行動の選択が抑制されるよう行動価値評価部140を制御する行動制御部140とを有する。行動制御部140は、行動価値評価部120を制御し、実行中以外の行動の行動価値を本来の行動価値−10として低くする。
【選択図】 図4
Description
【0001】
【発明の属する技術分野】
本発明は、自律的に行動を発現するロボット装置、その行動制御方法及びプログラムに関し、特に、外部刺激と自身の内部状態とから行動を選択して発現するロボット装置、その行動制御方法及びプログラムに関する。
【0002】
【従来の技術】
近年、産業用ロボット装置に代わり、新しいロボット装置の分野として人間共存型ロボット装置やエンターテインメントロボット装置の研究が進められている。このようなロボット装置は、センサ等からの外部刺激の情報を使用して行動を発現(実行)するようになされている。
【0003】
例えば、下記非特許文献1にはロボット装置の自己保存の観点からの評価に基づきロボットの行動を生成する方法が開示されている。自己保存の観点からの評価とは、自己のハードウェアの耐久性、故障率の観点からこれを評価するもので、具体的には、外界情報(視覚・聴覚のセンサ入力)だけでなく、自己のバッテリ状態や消費電力、回路温度等の情報からなる入力情報を身体の耐久性の評価値(故障率)に変換する自己保存評価関数を計算し、自己保存評価関数の値を監視することで、複数の動作形態のうち、行動を行っている状態から、実際に他の行動に指令を与えて行動状態を変移させる。これにより、ロボット装置の行動は、自己保存評価が良くなる方へ近づき、悪くなる方は避けるという自己保存の評価から生まれる志向性(好き嫌い)を反映したものとすることができる。
【0004】
【非特許文献1】
尾形哲也、菅野重樹、「自己保存に基づくロボットの行動生成−方法論と機械モデルの実現化−」、日本ロボット学会誌、1997年、第15巻、第5号、p.710−721
【0005】
【発明が解決しようとする課題】
しかしながら、この非特許文献1に記載のロボット装置は、この非特許文献1に記載のロボット装置の「自己の保存」に基づいた価値観は、充電なら良、放電なら悪、というような外部刺激を基にしたものであり、人間に対して一方向のコミュニケーションしか実現できず、外部刺激と応答動作との関係が固定的となってしまい、ユーザは飽きを感じてしまうことが多い。
【0006】
また、上記非特許文献1に記載のように、自己保存評価関数の値を監視することで、行動を行っている状態から他の行動に行動状態を変移させるような場合、自己保存評価関数の値によっては行動実行中にその行動を中断して他の行動へ変移してしまい、そのようなことが頻繁に生じると、行動選択にチャタリングが生じ、実行される行動の一貫性がなくなってしまうという問題点がある。
【0007】
本発明は、このような従来の実情に鑑みて提案されたものであり、行動の選択を安定化し、行動に一貫性を持たせることができるロボット装置、その制御方法及びプログラムを提供することを目的とする。
【0008】
【課題を解決するための手段】
上述した目的を達成するために、本発明に係るロボット装置は、内部状態及び外部刺激に基づき自律的に行動を選択し発現するロボット装置において、行動が記述された複数の行動記述モジュールと、上記内部状態及び外部刺激から上記複数の行動記述モジュールに記述された各行動の行動価値を所定のタイミングで算出する行動価値評価手段と、上記各行動の行動価値に基づき行動を選択して発現させる行動選択手段と、上記発現中の行動が存在する場合、当該発現中の行動以外の行動の選択が抑制されるよう上記行動価値評価手段を制御する行動制御手段とを有することを特徴とする。
【0009】
本発明においては、発現中の行動以外の行動の選択が抑制されるよう行動制御手段により行動価値評価手段が制御されるため、例えば発現中の行動以外の行動価値を低くしたり、発現中の行動の行動価値を高くしたりして、内部状態及び外部刺激の変化に応じて発現中以外の行動を選択させないようにすることができる。
【0010】
本発明に係るロボット装置の行動制御方法は、内部状態及び外部刺激に基づき自律的に行動を選択し発現するロボット装置の行動制御方法において、上記内部状態及び外部刺激から複数の行動記述モジュールに記述された各行動の行動価値を所定のタイミングで算出する行動価値評価工程と、上記各行動の行動価値に基づき行動を選択して発現させる行動選択工程と、上記発現中の行動が存在する場合、当該発現中の行動以外の行動の選択が抑制されるよう制御する行動制御工程とを有することを特徴とする。
【0011】
また、本発明に係るプログラムは、上述したロボット装置の行動制御処理をコンピュータに実行させるものである。
【0012】
【発明の実施の形態】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、ペット型エージェント、人間型エージェント等生命を模擬し、ユーザとのインタラクションを可能とした自律型のロボット装置であって、特に自律的に発現される行動の選択を安定化し、行動に一貫性を持たせることができるようなロボット装置に適用したものであるが、ここでは先ず、このようなロボット装置の構成について説明し、次にロボット装置の制御システムのうち、行動制御システムについて説明し、最後にそのような行動制御システムを含む制御システムの全体の構成について説明する。
【0013】
(A)ロボット装置の構成
図1は、本実施の形態のロボット装置の外観を示す斜視図である。図1に示すように、ロボット装置1は、体幹部ユニット2の所定の位置に頭部ユニット3が連結されると共に、左右2つの腕部ユニット4R/Lと、左右2つの脚部ユニット5R/Lが連結されて構成されている(但し、R及びLの各々は、右及び左の各々を示す接尾辞である。以下において同じ。)。
【0014】
図2は、本実施の形態におけるロボット装置1の機能構成を模式的に示すブロック図である。図2に示すように、ロボット装置1は、全体の動作の統括的制御及びその他のデータ処理を行う制御ユニット20と、入出力部40と、駆動部50と、電源部60とで構成される。以下、各部について説明する。
【0015】
入出力部40は、入力部として人間の目に相当し、外部の状況を撮影するCCDカメラ15、及び耳に相当するマイクロフォン16や頭部や背中等の部位に配設され、所定の押圧を受けるとこれを電気的に検出することで、ユーザの接触を感知するタッチ・センサ18、前方に位置する物体までの距離を測定するための距離センサ、五感に相当するその他、ジャイロセンサ等、各種のセンサを含む。また、出力部として、頭部ユニット3に備えられ、人間の口に相当するスピーカ17、及び人間の目の位置に設けられ、感情表現や視覚認識状態を表現する例えばLEDインジケータ(目ランプ)19等を装備しており、これら出力部は、音声やLEDインジケータ19の点滅等、脚等による機械運動パターン以外の形式でもロボット装置1からのユーザ・フィードバックを表現することができる。
【0016】
例えば頭部ユニットの頭頂部の所定箇所に複数のタッチ・センサ18を設け、各タッチ・センサ18における接触検出を複合的に活用して、ユーザからの働きかけ、例えばロボット装置1の頭部を「撫でる」「叩く」「軽く叩く」等を検出することができ、例えば、押圧センサのうちの幾つかが所定時間をおいて順次接触したことを検出した場合、これを「撫でられた」と判別し、短時間のうちに接触を検出した場合、「叩かれた」と判別する等場合分けし、これに応じて内部状態も変化し、このような内部状態の変化を上述の出力部等により表現することができる。
【0017】
駆動部50は、制御ユニット20が指令する所定の運動パターンに従ってロボット装置1の機体動作を実現する機能ブロックであり、行動制御による制御対象である。駆動部50は、ロボット装置1の各関節における自由度を実現するための機能モジュールであり、それぞれの関節におけるロール、ピッチ、ヨー等各軸毎に設けられた複数の駆動ユニット541〜54nで構成される。各駆動ユニット541〜54nは、所定軸回りの回転動作を行うモータ511〜51nと、モータ511〜51nの回転位置を検出するエンコーダ521〜52nと、エンコーダ521〜52nの出力に基づいてモータ511〜51nの回転位置や回転速度を適応的に制御するドライバ531〜53nとの組み合わせで構成される。
【0018】
本ロボット装置1は、2足歩行としたが、駆動ユニットの組み合わせ方によって、ロボット装置1を例えば4足歩行等の脚式移動ロボット装置として構成することもできる。
【0019】
電源部60は、その字義通り、ロボット装置1内の各電気回路等に対して給電を行う機能モジュールである。本参考例に係るロボット装置1は、バッテリを用いた自律駆動式であり、電源部60は、充電バッテリ61と、充電バッテリ61の充放電状態を管理する充放電制御部62とで構成される。
【0020】
充電バッテリ61は、例えば、複数本のリチウムイオン2次電池セルをカートリッジ式にパッケージ化した「バッテリ・パック」の形態で構成される。
【0021】
また、充放電制御部62は、バッテリ61の端子電圧や充電/放電電流量、バッテリ61の周囲温度等を測定することでバッテリ61の残存容量を把握し、充電の開始時期や終了時期等を決定する。充放電制御部62が決定する充電の開始及び終了時期は制御ユニット20に通知され、ロボット装置1が充電オペレーションを開始及び終了するためのトリガとなる。
【0022】
制御ユニット20は、「頭脳」に相当し、例えばロボット装置1の機体頭部あるいは胴体部に搭載されている。
【0023】
図3は、制御ユニット20の構成を更に詳細に示すブロック図である。図3に示すように、制御ユニット20は、メイン・コントローラとしてのCPU(Central Processing Unit)21が、メモリ及びその他の各回路コンポーネントや周辺機器とバス接続された構成となっている。バス28は、データ・バス、アドレス・バス、コントロール・バス等を含む共通信号伝送路である。バス28上の各装置にはそれぞれに固有のアドレス(メモリ・アドレス又はI/Oアドレス)が割り当てられている。CPU21は、アドレスを指定することによってバス28上の特定の装置と通信することができる。
【0024】
RAM(Random Access Memory)22は、DRAM(Dynamic RAM)等の揮発性メモリで構成された書き込み可能メモリであり、CPU21が実行するプログラム・コードをロードしたり、実行プログラムによる作業データの一時的に保存そたりするために使用される。
【0025】
ROM(Read Only Memory)23は、プログラムやデータを恒久的に格納する読み出し専用メモリである。ROM23に格納されるプログラム・コードには、ロボット装置1の電源投入時に実行する自己診断テスト・プログラムや、ロボット装置1の動作を規定する動作制御プログラム等が挙げられる。
【0026】
ロボット装置1の制御プログラムには、カメラ15やマイクロフォン16等のセンサ入力を処理してシンボルとして認識する「センサ入力・認識処理プログラム」、短期記憶や長期記憶等の記憶動作(後述)を司りながらセンサ入力と所定の行動制御モデルとに基づいてロボット装置1の行動を制御する「行動制御プログラム」、行動制御モデルに従って各関節モータの駆動やスピーカ17の音声出力等を制御する「駆動制御プログラム」等が含まれる。
【0027】
不揮発性メモリ24は、例えばEEPROM(Electrically Erasable and Programmable ROM)のように電気的に消去再書き込みが可能なメモリ素子で構成され、逐次更新すべきデータを不揮発的に保持するために使用される。逐次更新すべきデータには、暗号鍵やその他のセキュリティ情報、出荷後にインストールすべき装置制御プログラム等が挙げられる。
【0028】
インターフェース25は、制御ユニット20外の機器と相互接続し、データ交換を可能にするための装置である。インターフェース25は、例えば、カメラ15、マイクロフォン16、又はスピーカ17等との間でデータ入出力を行う。また、インターフェース25は、駆動部50内の各ドライバ531〜53nとの間でデータやコマンドの入出力を行う。
【0029】
また、インターフェース25は、RS(Recommended Standard)−232C等のシリアル・インターフェース、IEEE(Institute of Electrical and electronics Engineers)1284等のパラレル・インターフェース、USB(Universal Serial Bus)インターフェース、i−Link(IEEE1394)インターフェース、SCSI(Small Computer System Interface)インターフェース、PCカードやメモリ・スティックを受容するメモリ・カード・インターフェース(カード・スロット)等のような、コンピュータの周辺機器接続用の汎用インターフェースを備え、ローカル接続された外部機器との間でプログラムやデータの移動を行うようにしてもよい。
【0030】
また、インターフェース25の他の例として、赤外線通信(IrDA)インターフェースを備え、外部機器と無線通信を行うようにしてもよい。
【0031】
更に、制御ユニット20は、無線通信インターフェース26やネットワーク・インターフェース・カード(NIC)27等を含み、Bluetoothのような近接無線データ通信や、IEEE 802.11bのような無線ネットワーク、あるいはインターネット等の広域ネットワークを経由して、外部のさまざまなホスト・コンピュータとデータ通信を行うことができる。
【0032】
このようなロボット装置1とホスト・コンピュータ間におけるデータ通信により、遠隔のコンピュータ資源を用いて、ロボット装置1の複雑な動作制御を演算したり、リモート・コントロールしたりすることができる。
【0033】
(B)行動制御システム
次に、本実施の形態におけるロボット装置の行動制御システムについて詳細に説明する。上述したロボット装置1は、自己及び周囲の状況や、使用者からの指示及び働きかけに応じて自律的に行動し得るようになされている。即ち、ロボット装置1は、外部からの刺激と自身の内部状態とに基づき行動に対する行動価値AL(アクティベーションレベル:Activation Level)を算出し、これに基づき行動が選択され出力されることで行動が生成される。ここでは、特に、ロボット装置の行動制御のうち、行動が選択され、実行(発現)されている際に、行動に一貫性を持たせるための行動制御方法について説明する。なお、ロボット装置の制御システムの全体の構成についての詳細は後述する。
【0034】
(1)ロボット装置の行動選択制御
図4は、ロボット装置の制御システムにおいて、各行動に対応する行動価値を算出してこれに基づき行動出力する処理を行う行動選択制御システム部分を示す模式図である。図4に示すように、行動選択制御システム100は、本能や感情といった数種類の情動を数式モデル化して管理する内部状態管理部91と、外部環境におけるセンサ入力等の外部刺激を認識する外部刺激認識部80と、行動が記述された複数の要素行動(図10では、要素行動A乃至Dのみ図示)132を有し、選択されるとその行動を出力する行動出力部110と、各要素行動の行動価値AL(Activation Level)を算出する行動価値評価部120と、行動価値ALに基づき、実行(発現)する要素行動を選択する行動選択部130と、実行中の行動が存在する場合に、ロボット装置の行動に一貫性を持たせるよう行動価値評価部120を制御する行動制御部140とを有し、選択された要素行動が行動を出力することでロボット装置が行動を実行するようになされている。
【0035】
要素行動132とは、内部状態及び外部刺激から行動出力を決定するモジュールであり、各モジュール毎にステートマシンを用意しており、それ以前の行動(動作)や状況に依存して、センサ入力された外部情報の認識結果を分類し、動作を機体上で発現する。このモジュール(行動記述部)は、外部刺激や内部状態に応じた状況判断を行ない、ロボット装置が各行動をどれくらいやりたいか(実行優先度)を示す行動価値ALを算出するMonitor機能と、行動実行に伴う状態遷移(ステートマシン)を実現するAction機能とを備えたスキーマ(Schema)として記述されるが、スキーマの詳細については後述する。各要素行動は、自身に記述された行動に応じて所定の内部状態及び外部刺激が定義されている。
【0036】
ここで外部刺激とは、外部刺激認識部80におけるロボット装置の知覚情報等であり、例えばカメラから入力された画像に対して処理された色情報、形情報、顔情報等の対象物情報等が挙げられる。具体的には、例えば、色、形、顔、3D一般物体、及びハンドジェスチャー、その他、動き、音声、接触、距離、場所、時間、及びユーザとのインタラクション回数等が挙げられる。
【0037】
また、内部状態とは、上述した如く、内部状態管理部91にて管理される本能や感情といった情動であり、例えば、疲れ(FATIGUE)、痛み(PAIN)、栄養状態(NOURISHMENT)、乾き(THURST)、愛情(AFFECTION)、好奇心(CURIOSITY)等がある。
【0038】
そして、例えば行動出力が「食べる」である要素行動Aは、外部刺激として対象物の種類(OBJECT_ID)、対象物の大きさ(OBJECT_SIZEという。)、対象物の距離(OBJECT_DISTANCE)等を扱い、内部状態として「NOURISHMENT」(「栄養状態」)、「FATIGUE」(「疲れ」)等を扱う。このように、各要素行動毎に、扱う外部刺激及び内部状態の種類が定義され、該当する外部刺激及び内部状態に対応する行動(要素行動)に対する行動価値が算出される。なお、1つの内部状態、又は外部刺激は、1つの要素行動だけでなく、複数の要素行動132に対応付けられていてもよいことはもちろんである。
【0039】
これら複数の要素行動は、その行動の実現レベルに応じた木構造(以下、スキーマツリーという。)を構成している。図5は、スキーマツリーにより構成される行動制御システムを示す模式図である。なお、図4に示す例においては、説明を簡略化するため、行動制御システムは、行動価値評価部、行動選択部及び行動制御部等を設けたものとして記載しているが、後述するように各スキーマ(要素行動)がこれらの機能の一部又は全部を包括してもよい。
【0040】
この木構造形式に構成されたスキーマツリーは、動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するための枝など、複数の枝を含んでいる。例えば、ルートの要素行動2011〜2031の直近下位の階層では、「探索する(Investigate)」、「摂取する(Ingest)」、「遊ぶ(Play)」という要素行動2012〜2032が配設される。
【0041】
そして、「探索する(Investigate)」行動を出力する要素行動2012の下位には、「Investigative Locomotion」(移動して探索する)等という、より具体的な探索行動を記述した要素行動2013が配設されている。
【0042】
同様に、「摂取する(Ingest)」行動を出力する要素行動2022の下位には「Eat」(食べる)、「Drink」(飲む)等のより具体的な飲食行動を記述した行動記述部が配設され、「遊ぶ(Play)」の行動を出力する要素行動2032の下位には「Play Bowing」(おじぎする)、「Play Greeting」(挨拶する)等のより具体的な遊ぶ行動が記述された要素行動2033が配設されている。
【0043】
各要素行動132は、行動価値評価部120にて、各要素行動毎にその行動をロボット装置の行動価値ALが算出される。この行動価値評価部は、木構造に構成されたスキーマツリーにおいては、上位(親)の行動要素、例えば図5においては要素行動2012〜2032の行動価値評価部は、外部刺激及び内部状態を引数として夫々下位(子供)の要素行動、例えば図5においては要素行動2013〜2033の行動価値評価部をコールすることができ、親の要素行動の行動価値評価部は、子供の要素行動の行動価値評価部からの行動価値を返り値とする。また、これら子供の要素行動の行動価値評価部は自分の行動価値を算出するために、更に子供の要素行動の行動価値評価部をコールすることができる。そして、ルートの要素行動、図5においては要素行動2011〜2031の行動価値評価部には各サブツリーからの行動価値が返され、これに基づき要素行動が選択され、選択された要素行動が行動を出力するため、外部刺激及び内部状態の変化に応じた最適な行動を統合的に判断することができる。
【0044】
図4に戻って、内部状態管理部91は、外部刺激並びに例えば自身のバッテリの残量及びモータの回転角等の情報を入力とし、上述のような複数の内部状態に対応した内部状態の値を算出、管理する。具体的には、例えば、内部状態「栄養状態」は、バッテリの残量を基に決定し、内部状態「疲れ」は、消費電力を基に決定することができる。
【0045】
行動価値評価部120は、上述したように、スキーマツリーの下層から上層に渡される行動価値に基づき、例えば、0.5秒に1回等、所定のタイミングで外部刺激と内部状態とから各要素行動A〜Dにおける行動価値ALを算出する。なお、この行動価値評価部120は、本実施の形態においては各要素行動132毎に個別に設けられるものとするが、1つの行動価値評価部120を設けて全ての要素行動についての行動価値を算出するようにしてもよい。
【0046】
行動選択部130は、この行動価値ALに基づき、要素行動を選択し、選択された要素行動は自身に記述された行動を出力する。以下では、行動選択部130は、複数のスキーマツリーにおけるルートの各要素行動の行動価値ALをモニタし、最も高い要素行動を選択するものとして説明する。なお、後述するように、行動の出力(発現)に際してリソースの競合が起こらないと判断される場合は、同時に複数の行動が選択され出力することもできる。
【0047】
図6は、3層の木構造を有する行動制御システム(行動出力部)の行動価値評価算出及び行動実行の例を示す模式図である。図6に示すように、行動価値ALは、スキーマツリーにおいて、最下位の要素行動SA〜SFは、内部状態及び外部刺激に基づき自身の行動価値を算出し、この行動価値がその親にあたる要素行動に渡される。図6に示す例では、3層目の各要素行動(以下、子要素行動という。)SA、SB、及びSCが夫々各自に対応付けられた内部状態及び外部刺激から自身の行動価値を算出し、夫々行動価値AL_SA、AL_SB、及びAL_SCをその上層となる2層目の要素行動(以下、親要素行動という。)SDに渡し、子要素行動SE、SFが自身の行動価値AL_SE、AL_SFをその親要素行動SGに渡す。
【0048】
親要素行動SD、SGは、複数の自分の子要素行動を有する場合、渡された行動価値ALのうち最も高い行動価値ALを自身の行動価値ALの値とする。図6に示す例では、親要素行動SDは、子要素行動SAのAL_SA=60を自身の行動価値とし、親要素行動SGは、子要素行動SEのAL_SE=50を自身の行動価値とする。
【0049】
更にこの親要素行動SD、SGが、更に上位の要素行動に対して自身の行動価値ALを渡すというように、最下層から最上層の方向へ行動評価が行われる。図6に示す例では、親要素行動SD、SGの更に上位が最上層の要素行動(以下、ルート要素行動という。)SRとなる。
【0050】
図4に示す行動出力部110には、図6に示すようなスキーマツリーを複数有し、行動選択部130は、それらの複数のスキーマツリーにおいて、その最上層の要素行動のうち、最も行動価値ALが高いものを選択する。即ち、最も行動価値が大きいルート要素行動を有するスキーマツリーが選択される。選択された最上層の要素行動は、自身の行動価値ALとした子の要素行動、即ち子要素行動の中で最も行動価値が高い子要素行動を選択し、選択された子の要素行動は、更に下層であって、自身の行動価値ALとした要素行動を選択するというように、最上層から最下層の方向へ選択がなされる。
【0051】
このようにして、木構造の一層目のルート要素行動から下位に向かって、行動価値の最も大きい要素行動に実行許可を渡していき、実行許可を渡された要素行動がコールされる。そしてその要素行動に子供の要素行動がある場合には、行動価値の最も大きい子供の要素行動に実行許可が渡り、スキーマツリーにおいて最下位の要素行動に実行許可が渡った場合に、その要素行動がコールされ、行動を出力するようなされている。
【0052】
なお、ここでは、親要素行動は、子要素行動から渡された行動価値から最も高い値を選んで自分の行動価値とする、即ち親要素行動の行動価値評価部は、子要素行動の行動価値のうち最も高い値を選択するものとして説明したが、親要素行動においても、内部状態及び外部刺激に基づき自身の行動価値を算出するか、又はそのように算出した値と子要素行動の行動価値とから、自身の行動価値を算出するようにしてもよい。
【0053】
従来、人間共存型ロボット装置や、エンターテインメント型のロボット装置は、外部刺激のみを行動選択のトリガとしているものが多く、ユーザ操作と応答動作との関係が固定的であり、ユーザは同じ外部刺激に対して、同じ動作しか繰り返さない玩具に対し、容易に飽きを感じてしまうことが多かった。これに対し、本ロボット装置のように、本能や感情といった情動をモデル化してシステムの内部状態を管理し、選択されると自身に記述された行動を出力する要素行動と、内部状態と外部刺激とからある行動の欲求値や満足度を算出し各要素行動の行動価値を決定する行動算出部とを有する行動制御システムにおいては、要素行動を実現レベルに応じた木構造形式で構成し、木構造の上から下に、各時刻で最も行動価値(欲求、満足度)の高い行動を選択できる。即ち、ロボット装置自身が、内部状態や外部の環境に応じて、最もやりたがっている行動を選択して実行することができる。
【0054】
一方、このように最もやりたがっている行動のみを実行させるようなシステムでは、ある一つの行動を実行中に他の行動の行動価値が高くなると、実行中の行動が中断されることを許容してしまう。このように、やりたい行動が次々変わってしまうと行動の一貫性がなくなる場合がある。例えばダンスを踊るという要素行動が選択された場合、ダンスを踊るという行動の実行最中に、内部状態の一要素である「栄養状態(NOURISHMENT)」の値が低くなった場合において、例えば外部刺激として食べ物(充電ステーション等)の認識情報が供給されると、例えば「食べる」という要素行動の欲求が高くなり、これが選択されてしまうことになり、ロボット装置は、ダンスを踊る行動を中断して、「食べる」という行動を実行してしまう。又は、内部状態「栄養状態」の値が低くなり、且つ周囲に充電ステーション等が見つからないような場合、ダンスを踊る行動を中断して「充電ステーションを探しにいく」等の行動を実行してしまう場合がある。
【0055】
そこで、例えば「ダンスを踊る」という行動を一旦始めたら最後まで踊る等、ある行動が正常に終了するまで他の行動に割り込ませにくくする(行動の一貫性を高める)ことができると更に人間らしい行動となり、より一層の親近感や満足感をユーザに与えることができる。以下では、ロボット装置に行動の一貫性を持たせるための2つの行動制御方法について説明する。
【0056】
(1−1)第1の行動制御方法:実行中以外の行動の抑制
上述の図6に示したように、行動価値評価部120は、所定のタイミングで各要素行動の行動価値ALを算出する。行動選択部130は、最も高い行動価値ALを有する最上位の要素行動を選択するが、このような行動価値ALの算出、即ち要素行動の選択は行動実行中にも行われる。従って、上述したように、行動実行中において、他の要素行動の行動価値ALが上昇した場合、行動選択部130は、実行中以外の要素行動を選択してしまう場合があり、その場合にはロボット装置は、実行中の行動を一旦停止し、行動価値より高い要素行動が優先的に選択され、その行動が出力される。これが頻繁に続くとロボット装置の行動に一貫性がないように見えてしまう。そこで、本実施の形態におけるロボット装置は、このような行動選択のチャタリングを防止し、行動に一貫性を持たせ、実行中の行動の一旦停止を抑制するための行動制御部140を備える。
【0057】
即ち、図6に示すようにして、行動価値ALは所定のタイミングで最下位の要素行動のうち最も高い行動価値が最上位のルートの要素行動に渡される。そして、行動選択部130に、ルートの各要素行動の行動価値ALが所定のタイミングで伝えられ、最も高い行動価値ALを有するルートの要素行動が選択される。
【0058】
行動抑制部140は、実行中の要素行動が、他の要素行動が実行されることにより容易に中断されないようにするため、実行中以外の子要素行動の行動価値ALに抑制(Inhibition)を加えるよう、実行中の子要素行動を有する親要素行動の行動価値評価部を制御するものである。
【0059】
具体的には、子供の要素行動を有する親の要素行動は、子供の要素行動の行動価値を受取る際、実行中の子供の要素行動の行動価値はそのままとし、実行中以外の他の子供の要素行動から渡される行動価値ALの値は抑制する処理をし、その後、それら値の中で最大のものを自身の行動価値とする。
【0060】
次に、このような処理についての具体的な例について説明する。図7(a)乃至図7(e)は、2層のスキーマツリーにおいて、ある時刻(タイミング)における行動価値算出例及び行動選択例を示す模式図であって、スキーマツリーは、ルート要素行動となる最上位の親要素行動Dと、最下層の子要素行動A〜Dとから構成されている。
【0061】
そして、図7(a)に示すように、ある時刻t1において、子要素行動A、B、Cが内部状態及び外部刺激に基づき算出した行動価値が夫々AL_A=40、AL_B=50、AL_C=60であったとする。親要素行動Dは、いずれの子要素行動も実行中でない場合は、子要素行動A、B、Cの行動価値をそのまま受け取り、その中で最も高い値を自身の行動価値とするため、親要素行動DのAL_D=60(=AL_C)となる。
【0062】
例えば、この結果、図7(b)に示すように、親要素行動Dが実行許可を得た場合、即ち選択された場合、この実行許可を行動評価が最も高い子要素行動Cに渡し、子要素行動Cがコールされて自身の行動を出力する。そして、次の時刻t2で行動価値を算出する場合、親要素行動Dは、実行中の子要素行動Cを除き、実行中ではない子要素行動A、Bの行動価値を本来より小さくし、その後、これら値の中で最大のものを自身の行動価値とする。
【0063】
図7(c)に示す例では、時刻t2において、ロボット装置の内部状態が変化し、内部状態及び外部刺激に基づき算出された子要素行動A、B、Cの行動価値が夫々AL_A=40、AL_B=65、AL_C=60となり、子要素行動Bの行動価値が時刻t1のときよりも上昇したとする。この場合、子要素行動Bの行動価値が子要素行動A、B、Cの中で最大であるが、行動実行中ではないため、−10の値が減算され、親要素行動Dが評価する際には子要素行動Bの行動価値AL_B=55となる。このように、実行中ではない各子要素行動A、Bの行動価値は、自身が算出した本来の行動価値から−10の値が減算され夫々30、55とされ、実行中の子要素行動Cは本来の行動価値(=60)のままとされ、これらの値が比較され、その結果、時刻t1と同様、実行中の子要素行動C=60の行動価値が最も高い値とされる。こうして、親要素行動Dの行動価値は、子要素行動Cの行動価値(=60)となる。このように、実際には、子要素行動Bの行動価値(=65)が実行中の子要素行動Cの行動価値(=60)より高いものの、実行中以外の要素行動に対して抑制が加えられることにより、実行中以外の要素行動を選択されにくくする。
【0064】
更に、図7(d)に示すように、次の時刻t3において、ロボット装置の内部状態が変化し、子要素行動A、B、Cの行動価値が夫々AL_A=40、AL_B=75、AL_C=60と算出され、子要素行動Bの行動価値が時刻t2のときよりも更に上昇したとする。この場合、時刻t2と同様、子要素行動A、Bの行動価値は、実行中ではないため−10の値が減算され、夫々30、65となる。実その後、実行中の子要素行動Cの行動価値(=60)と比較されるが、−10の値とされても、子要素行動Bの行動価値(=65)の方が実行中の要素行動Cの行動価値(=60)よりも大きいため、親要素行動Dは、行動の実行権を子要素行動Bに移す。
【0065】
その結果、図7(e)に示すように、子要素行動Bが選択され、親要素行動の行動価値は、減算する前に子要素行動Bが算出した本来の行動価値AL_B=75となる。但し、図7(d)から図7(e)への変化は1回の行動価値評価、行動選択のサイクル内で行われる。即ち、時刻t2の次の行動価値評価の時刻をt3とすると、t2〜t3の間に行われるものである。
【0066】
ここで、実行中の子供の要素行動がない場合は、親要素行動は、自身の子要素行動の行動価値に対して抑制をかけることはない。図8は、3層のスキーマツリーにおける行動価値評価例及び行動選択例を示す模式図である。図8に示すように、最下層の子要素行動A、B、Cと、子要素行動E、Fとを有し、子要素行動A、B、Cは、その上層に親要素行動Dを有し、子要素行動E、Fは、その上層に親要素行動Gを有し、更に親要素行動D、Gは、その上層に最上層のルート要素行動Hを有している。子要素行動A、B、C、E、Fは、その行動価値が夫々60、65、40、67、40となっている。
【0067】
図8においては、ルート要素行動Hが実行許可を有し、下層の親要素行動Dに実行許可を渡し、親要素行動Dが下層の子要素行動Aに実行許可を渡している場合を示す。このような状態になった後、例えば時刻t4で行動価値の評価がなされた場合、親要素行動Dは、上述したように、実行中の子要素行動Aの行動価値は、子要素行動Aが本来算出した行動価値(=60)のまま、実行中ではない子要素行動B、Cの行動価値はそれぞれ−10の値を減算して夫々55、40とする。その後、親要素行動Dがこれらの行動価値を比較し、最も高い子要素行動Aの行動価値(=60)を自身の行動価値とする。
【0068】
一方、親要素行動Gは、実行中の子要素行動をもたないため、子要素行動E、Fの行動価値をそのまま受け取り、最も高い行動価値、この場合は子要素行動Eの行動価値=67を自身の行動価値とする。
【0069】
ルート要素行動Hは、これら2つの親要素行動D、Gから行動価値を渡されるが、実行中の子要素行動Aを有する親要素行動Dはそのままの行動価値(=60)とされ、実行中の子要素行動を持たない親要素行動Gの行動価値は−10の値、減算して57とされ、両者の行動価値が比較される。こうして親要素行動Dの行動価値(=60)がルート要素行動Hの行動価値となる。このように、実行中の子要素行動を持たない親要素行動の行動価値は抑制されず、そのまま上層へ渡される。
【0070】
また、実行中以外の行動が選択されないように抑制する方法としては、以下に示す方法がある。即ち、実行中以外の子要素行動の行動価値を抑制する方法としては、
要素行動の種類毎に、その行動価値から所定の値を減じる
要素行動の種類毎に、その行動価値に所定の値(0〜1)を乗じる
上記行動価値から一定値減じたり、行動価値に所定の値を乗じたりする場合において、上記所定の値は、内部状態に依存させる
等の方法があり、また、これらの所定の値は、子要素行動を選択する各親要素行動毎に設定可能である。即ち、図8においては、親要素行動D、ルート要素行動(親要素行動Dの親要素行動)Hは、いずれも子にあたる発現中ではない要素行動の行動価値から−10だけ減算するものとしたが、要素行動D、H毎に異なる値を減算するようにしてもよく、又は、減算される子要素行動が減算値を指定するようにしてもよい。
【0071】
次に、本実施の形態における発現中以外の行動の抑制方法について説明する。図9は、行動抑制の手順を示すフローチャートである。図9に示すように、親要素行動は、子要素行動の行動価値を集める(ステップSP1)。次に、行動実行中の子要素行動が存在するか否かをチェックする(ステップSP2)。ここで、実行中の要素行動が存在する場合は、実行中以外の子要素行動の行動価値から、所定の値又は子若しくは親要素行動に応じた値を減算するか1未満の値を乗ずる等して小さくする(ステップSP3)。ステップSP2で実行中の子要素行動がいた場合はステップSP3に進んだ後、またステップSP2で実行中の要素行動がいない場合は、そのままの行動価値において、最も大きい行動価値を自身(親要素行動)の行動価値とする(ステップSP4)。この親要素行動は、この親要素行動の最上位の要素行動が実行権を渡されている場合であって、その上位の親要素行動から、同層の他の親要素行動に比して行動価値が大きいと判定された場合、実行権が与えられる(ステップSP5)。そして、次のタイミングで上述のステップSP1からの処理を繰り返す。
【0072】
ここで、図9は、行動が選択・実行された後、次の行動が選択・実行されるまでの処理工程を示すものであり、この間には、ステップSP1〜ステップSP4に示すように、行動価値を下層の要素行動から上層の要素行動に渡すフェーズ(行動価値評価フェーズ)と、ステップSP5に示すように、上層の親要素行動(親スキーマ)がその下層の子要素行動(子スキーマ)を、その行動価値によって、選択・実行するフェーズ(選択・実行フェーズ)とがある。本第1の行動制御方法においては、この行動価値評価フェーズにおいて、実行中以外の要素行動の行動価値が小さくされ、比較されることにより、発現中以外の行動の行動を選択・実行しにくくすることができる。
【0073】
このような行動制御システムにおいては、行動発現中以外の行動の行動価値を本来得られる行動価値ALよりも低めに設定することで、発現中の要素行動が他の要素行動に一旦停止されにくくすることができ、内部状態の頻繁な変化による行動選択の頻繁な変化(チャタリング)を防ぐことができ、行動の一貫性を持たせることができる。
【0074】
また、各要素行動毎に個別に例えば行動価値から減じる値、行動価値に乗じる値を設定することで、行動の種類に応じてその行動の一貫性の強さ(一旦停止のされにくさ)を設定することができる。
【0075】
そして、スキーマツリーにおいて、発現中の子要素行動を有する親要素行動のみが、発現中以外の子要素行動の行動価値ALを低く設定することができ、最も高い値として得られた行動価値が、当該親要素行動によって低く設定された値であったとしても、その行動価値ALが更に上位の要素行動に渡される場合は、本来得られた行動価値の値に戻して渡されるため、ある要素行動に設定された行動の一貫性の強さは、他の要素行動の一貫性の強さに影響を及ぼすことがない。
【0076】
(1−2)第2の行動制御方法:実行中の行動の促進
上述の例においては、親要素行動の行動価値評価部が子要素行動の行動価値を参照する際、実行中のものがあれば、実行中以外の子要素行動の行動価値を本来より低く設定してから比較することで、行動の一貫性を持たせるものであったが、逆に、親要素行動の行動価値評価部が子要素行動の行動価値評価部を参照する際、実行中のものがあれば、その行動価値のみ本来より高く設定してから比較するようにしても、実行中の行動を一旦停止されにくくすることができる。
【0077】
具体的には、木構造の一層目から下に向かって行動価値の最も大きい要素行動に実行許可を渡していく際、実行中の要素行動が他の要素行動が実行することにより容易に中断されないようにするため、実行中の子供の要素行動の行動価値に一時的な賞与(ボーナス:Bonus)を加える。その後、自分の子要素行動全ての行動価値のうち最大の行動価値を有する子要素行動の本来の行動価値を自身の行動価値とし、その要素行動に実行許可を与えるものである。
【0078】
次に、このような処理についての具体的な例について説明する。図10(a)乃至図10(e)は、図7に示すスキーマツリーと同様、2層のスキーマツリーにおいて、ある時刻における行動価値算出例及び行動選択例を示す模式図であって、スキーマツリーはルート要素行動となる最上位の親要素行動Dと、最下層の子要素行動A〜Dとから構成されている。
【0079】
そして、図10(a)に示すように、ある時刻t1において、子要素行動A、B、Cが内部状態及び外部刺激に基づき算出した行動価値が夫々AL_A=40、AL_B=50、AL_C=60であったとする。親要素行動Dは、いずれの子要素行動も実行中でない場合は、子要素行動A、B、Cの行動価値をそのまま受け取り、その中で最も高い値を自身の行動価値とするため、親要素行動DのAL_D=60(=AL_C)となる。
【0080】
例えば、この結果、図10(b)に示すように、親要素行動Dが実行許可を得た場合、即ち選択された場合、この実行許可を子要素行動Cに渡し、子要素行動Cがコールされて自身の行動を出力する。そして、次の時刻t2で行動価値を算出する場合、親要素行動Dは、実行中ではない子要素行動A、Bの行動価値はそのままとし、実行中の子要素行動の行動価値のみ本来の値より大きくした後、これら値の中で最大のものを自身の行動価値とする。
【0081】
図10(c)に示す例では、時刻t2において、ロボット装置の内部状態が変化し、内部状態及び外部刺激に基づき算出された子要素行動A、B、Cの行動価値が夫々AL_A=40、AL_B=65、AL_C=60であり、子要素行動Bの行動価値が時刻t1に比して上昇したとする。この場合、子要素行動Bの行動価値が子要素行動A、B、Cの中で最大であるが、親要素行動Dが評価する際には、実行中の子要素行動Cの行動価値には+10加算され、子要素行動Cの行動価値AL_B=70となる。即ち、実行中ではない各子要素行動A、Bの行動価値は、自身が算出した本来の行動価値のままの40、65とされ、実行中の子要素行動Cは本来の行動価値に10加算された70とされ、これらの値が比較される。その結果、時刻t1と同様、実行中の子要素行動C=60が最も高い値とされ、親要素行動Dの行動価値となる。このように、実際には、子要素行動Bの行動価値(=65)が実行中の子要素行動Cの行動価値(=60)より高いものの、実行中の要素行動に対してボーナスが加えられることにより、実行中以外の要素行動を選択されにくくする。ここで、親要素行動は、比較した結果、最も高い子要素行動の行動価値を自身の行動価値とするが、その際はボーナス値を加える前の値を自身の行動価値とする。
【0082】
更に、図10(d)に示すように、次の時刻t3において、ロボット装置の内部状態が変化し、子要素行動A、B、Cの行動価値が夫々AL_A=40、AL_B=75、AL_C=60と算出され、子要素行動Bの行動価値が時刻t2より更に上昇したとする。この場合、時刻t2と同様、子要素行動A、Bの行動価値は、実行中ではないためそのままの40、75とされ、実行中の子要素行動Cの行動価値は10の値が加算されて60とされ、これらの値が比較される。この場合には、子要素行動Bの行動価値(=75)の方が、10の値が加算された実行中の要素行動Cの行動価値(=70)よりも大きいため親要素行動Dは、子要素行動Bに行動実行権を移す。
【0083】
その結果、図10(e)に示すように、子要素行動Bが選択され、親要素行動の行動価値はAL_D=75となる。但し、図10(d)から図10(e)への変化は1回の行動価値評価、行動選択のサイクル内で行われる。即ち、時刻t2の次の行動価値評価の時刻をt3とすると、t2〜t3の間に行われるものである。
【0084】
図11は、図8と同様の3層のスキーマツリーにおける行動価値評価例及び行動選択例を示す模式図である。図11においても、ルート要素行動Hが実行許可を有し、下層の親要素行動Dに実行許可を渡し、親要素行動Dが下層の子要素行動Aに実行許可を渡している場合を示す。このような状態になった後のタイミングt4で行動価値の評価がなされた場合、親要素行動Dは、上述したように、実行中の子要素行動Aの行動価値には10加算し、実行中ではない子要素行動B、Cの行動価値はそのままの値とし、これらの行動価値を比較し、最も高い行動価値を有する要素行動の本来の行動価値(=60)を自身の行動価値とする。
【0085】
一方、親要素行動Gは、実行中の子要素行動をもたないため、子要素行動E、Fの行動価値をそのまま受け取り、最も高い行動価値、この場合は子要素行動Eの行動価値=67を自身の行動価値とする。
【0086】
ルート要素行動Hは、これら2つの親要素行動D、Gから行動価値を渡されるが、実行中の子要素行動を有する親要素行動Dの行動価値には10加算し、実行中の子要素行動を持たない親要素行動Gの行動価値はそのままとした後、両者の行動価値を比較する。即ち、親要素行動Dの行動価値は本来の行動価値60に10を加算した70とされ、親要素行動Gの行動価値は、本来の行動価値67とされ、従って親要素行動Dが選択されるが、この際、ルートの要素行動Hの行動価値は親要素行動の本来の行動価値60とされる。このように、実行中の子要素行動を持たない親要素行動の行動価値は抑制されず、そのまま上層へ渡される。
【0087】
また、実行中以外の行動を実行し続けるように促進する方法としては、以下に示す方法がある。即ち、実行中の子要素行動の行動価値にボーナスを与える方法としては、
要素行動の種類毎に、その行動価値から所定の値を加算する
要素行動の種類毎に、その行動価値に1より大きい所定の値を乗じる
上記行動価値から所定の値を加算したり、行動価値に所定の値を乗じたりする場合において、上記所定の値は、内部状態に依存させる
等の方法があり、また、これらの所定の値は、子要素行動を選択する各親要素行動毎に設定可能である。
【0088】
次に、本実施の形態における実行中の行動の継続を促進方法について説明する。上述の要素行動の行動価値の評価は、子要素行動の行動価値を親要素行動が評価する際に、実行中の子要素行動の行動価値にボーナスを加えるものとして説明したが、このボーナスを加える処理は、行動価値の評価の際ではなく、行動選択の際に行うこともできる。図12は、行動促進の手順を示すフローチャートである。図12に示すように、親要素行動は、子要素行動の行動価値を集め(ステップSP11)、行動実行中の子要素行動が存在するか否かをチェックする(ステップSP12)。ここで、実行中の要素行動が存在する場合は、実行中の子要素行動の行動価値に、所定の値又は子若しくは親要素行動に応じた値を加算するか1より大きい値を乗ずる等して大きくする(ステップSP13)。ステップSP12で実行中の子要素行動が存在した場合はステップSP13に進んだ後、またステップSP12で実行中の要素行動が存在しない場合は、そのままの行動価値が親要素行動において比較され、最も大きい行動価値の本来の行動価値(ボーナスを加える前の行動価値)を自身(親要素行動)の行動価値とし、その行動価値を有する子要素行動に行動実行権を渡す(ステップS14)。なお、行動実行権を渡す親要素行動は、その上層の要素行動から実行権を渡されている場合である。そして、次の行動評価時刻のタイミングで上述のステップSP12からの処理を繰り返す。
【0089】
ここで、行動が選択・実行された後、次の行動が選択・実行される間には、上述の図9に示したように、行動価値評価フェーズと、行動選択・実行フェーズとがあり、ステップSP11に示す工程が行動価値評価フェーズであり、ステップSP12〜ステップSP14に示す工程が行動選択・実行フェーズである。即ち、図9に示す行動制御方法においては、行動評価フェーズにおいて、行動実行中以外の要素行動の行動価値を低くすることにより、実行中の行動が再び選択されやすくするものであったが、本第2の行動制御方法においては、行動選択・実行フェーズにおいて、親要素行動(親スキーマ)がその子要素行動(子スキーマ)を選択する際、即ち行動の実行権を渡す際に、行動実行中の子要素行動の行動価値にボーナスが加えられ、比較されることで、行動実行中の子要素行動が再び選択されやすくするものである。このように、行動選択・実行フェーズにおいて親要素行動が子要素行動を選択する際に限り、ボーナスを加えて行動価値を高くすることで、他の層にボーナスの影響を与えてしまうことを防ぐことができる。
【0090】
このような行動制御システムにおいては、行動実行中の行動の行動価値のみを本来得られる行動価値よりも高めに設定することで、上述の実行中以外の要素行動の実行を抑制する場合と同様に、実行中の要素行動以外の行動選択が抑制され、実行中の要素行動が他の要素行動に一旦停止されにくくすることができ、内部状態の頻繁な変化による行動選択の頻繁な変化(チャタリング)を防ぐことができ、行動の一貫性を持たせることができる。
【0091】
(2)ロボット装置の制御システムの具体例
次に、上述した行動価値ALを算出して行動を出力する処理を行う行動選択制御システムをロボット装置の制御システムに適用した具体例について詳細に説明する。図13は、上述の行動選択制御システム100を含む制御システム10の機能構成を示す模式図である。本具体例におけるロボット装置1は、上述したように、外部刺激の認識結果や内部状態の変化に応じて、行動制御を行なうことができるものである。更には、長期記憶機能を備え、外部刺激から内部状態の変化を連想記憶することにより、外部刺激の認識結果や内部状態の変化に応じて行動制御を行うことができる。
【0092】
即ち、上述したように、例えば、カメラ15から入力された画像に対して処理された色情報、形情報、顔情報等であり、より具体的には、色、形、顔、3D一般物体、ハンドジェスチャー、動き、音声、接触、匂い、味等の構成要素からなる外部刺激と、ロボット装置の身体に基づいた本能や感情等の情動を指す内部状態とに応じて行動価値ALを算出し、行動を選択(生成)して実行する。
【0093】
内部状態の本能的要素は、例えば、疲れ(fatigue)、熱あるいは体内温度(temperature)、痛み(pain)、食欲あるいは飢え(hunger)、乾き(thirst)、愛情(affection)、好奇心(curiosity)、排泄(elimination)又は性欲(sexual)のうちの少なくとも1つである。また、情動的要素は、幸せ(happiness)、悲しみ(sadness)、怒り(anger)、驚き(surprise)、嫌悪(disgust)、恐れ(fear)、苛立ち(frustration)、退屈(boredom)、睡眠(somnolence)、社交性(gregariousness)、根気(patience)、緊張(tense)、リラックス(relaxed)、警戒(alertness)、罪(guilt)、悪意(spite)、誠実さ(loyalty)、服従性(submission)又は嫉妬(jealousy)等が挙げられる。
【0094】
図示の制御システム10には、オブジェクト指向プログラミングを採り入れて実装することができる。この場合、各ソフトウェアは、データとそのデータに対する処理手続きとを一体化させた「オブジェクト」というモジュール単位で扱われる。また、各オブジェクトは、メッセージ通信と共有メモリを使ったオブジェクト間通信方法によりデータの受け渡しとInvokeを行なうことができる。
【0095】
行動制御システム10は、外部環境(Environments)70を認識するために、視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83等からなる機能モジュールである上述の外部刺激認識部80を備えている。
【0096】
視覚認識機能部(Video)81は、例えば、CCD(Charge Coupled Device:電荷結合素子)カメラのような画像入力装置を介して入力された撮影画像を基に、顔認識や色認識等の画像認識処理や特徴抽出を行う。
【0097】
また、聴覚認識機能部(Audio)82は、マイク等の音声入力装置を介して入力される音声データを音声認識して、特徴抽出したり、単語セット(テキスト)認識を行ったりする。
【0098】
更に、接触認識機能部(Tactile)83は、例えば機体の頭部等に内蔵された接触センサによるセンサ信号を認識して、「なでられた」とか「叩かれた」という外部刺激を認識する。
【0099】
内部状態管理部(ISM:Internal Status Manager)91は、本能や感情といった数種類の情動を数式モデル化して管理する感情・本能モデルを有しており、上述の視覚認識機能部81と、聴覚認識機能部82と、接触認識機能部83によって認識された外部刺激(ES:ExternalStimula)に応じてロボット装置1の本能や情動といった内部状態を管理する。
【0100】
この感情・本能モデルは、それぞれ認識結果と行動履歴を入力に持ち、夫々感情値と本能値を管理している。行動モデルは、これら感情値や本能値を参照することができる。
【0101】
また、外部刺激の認識結果や内部状態の変化に応じて行動制御を行なうために、時間の経過とともに失われる短期的な記憶を行なう短期記憶部(STM:Short Term Memory)92と、情報を比較的長期間保持するための長期記憶部(LTM:Long Term Memory)93を備えている。短期記憶と長期記憶という記憶メカニズムの分類は神経心理学に依拠する。
【0102】
短期記憶部92は、上述の視覚認識機能部81、聴覚認識機能部82及び接触認識機能部83によって外部環境から認識されたターゲットやイベントを短期間保持する機能モジュールである。例えば、図2に示すカメラ15からの入力画像を約15秒程度の短い期間だけ記憶する。
【0103】
長期記憶部93は、物の名前等学習により得られた情報を長期間保持するために使用される。長期記憶部93は、例えば、ある行動記述モジュールにおいて外部刺激から内部状態の変化を連想記憶することができる。
【0104】
また、本ロボット装置1の行動制御は、反射行動部(Reflexive Situated Behaviors Layer)103によって実現される「反射行動」と、状況依存行動階層(SBL:Situated Behaviors Layer)102によって実現される「状況依存行動」と、熟考行動階層(Deliberative Layer)101によって実現される「熟考行動」に大別される。
【0105】
反射行動部103は、上述の視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83によって認識された外部刺激に応じて反射的な機体動作を実現する機能モジュールである。反射行動とは、基本的に、センサ入力された外部情報の認識結果を直接受けて、これを分類して、出力行動を直接決定する行動のことである。例えば、人間の顔を追いかけたり、うなずいたりといった振る舞いは反射行動として実装することが好ましい。
【0106】
状況依存行動階層102は、短期記憶部92及び長期記憶部93の記憶内容や、内部状態管理部91によって管理される内部状態を基に、ロボット装置1が現在置かれている状況に即応した行動を制御する。
【0107】
この状況依存行動階層102は、各行動(要素行動)毎にステートマシンを用意しており、それ以前の行動や状況に依存して、センサ入力された外部情報の認識結果を分類して、行動を機体上で発現する。また、状況依存行動階層102は、内部状態をある範囲に保つための行動(「ホメオスタシス行動」とも呼ぶ)も実現し、内部状態が指定した範囲内を越えた場合には、その内部状態を当該範囲内に戻すための行動が出現し易くなるようにその行動を活性化させる(実際には、内部状態と外部環境の両方を考慮した形で行動が選択される)。状況依存行動は、反射行動に比し、反応時間が遅い。この状況依存行動階層102が上述した図4に示す行動選択制御システム100における要素行動132、行動価値評価部120、行動選択部130に相当し、上述した如く、内部状態と外部刺激とから行動価値ALを算出し、これに基づき行動出力を行う。
【0108】
熟考行動階層101は、短期記憶部92及び長期記憶部93の記憶内容に基づいて、ロボット装置1の比較的長期にわたる行動計画等を行う。熟考行動とは、与えられた状況あるいは人間からの命令により、推論やそれを実現するための計画を立てて行われる行動のことである。例えば、ロボット装置の位置と目標の位置から経路を探索することは熟考行動に相当する。このような推論や計画は、ロボット装置1がインタラクションを保つための反応時間よりも処理時間や計算負荷を要する(すなわち処理時間がかかる)可能性があるので、上記の反射行動や状況依存行動がリアルタイムで反応を返しながら、熟考行動は推論や計画を行う。
【0109】
熟考行動階層101、状況依存行動階層102、及び反射行動部103は、ロボット装置1のハードウェア構成に非依存の上位のアプリケーション・プログラムとして記述することができる。これに対し、ハードウェア依存層制御部(Configuration Dependent Actions And Reactions)104は、これら上位アプリケーション、即ち、行動記述モジュール(スキーマ)からの命令に応じて、関節アクチュエータの駆動等の機体のハードウェア(外部環境)を直接操作する。このような構成により、ロボット装置1は、制御プログラムに基づいて自己及び周囲の状況を判断し、使用者からの指示及び働きかけに応じて自律的に行動できる。
【0110】
次に、行動制御システム10について更に詳細に説明する。図14は、本具体例における行動制御システム10のオブジェクト構成を示す模式図である。
【0111】
図14に示すように、視覚認識機能部81は、Face Detector114、Mulit Color Tracker113、Face Identify115という3つのオブジェクトで構成される。
【0112】
Face Detector114は、画像フレーム中から顔領域を検出するオブジェクトであり、検出結果をFace Identify115に出力する。Mulit Color Tracker113は、色認識を行うオブジェクトであり、認識結果をFace Identify115及びShort Term Memory(STM)92に出力する。また、Face Identify115は、検出された顔画像を手持ちの人物辞書で検索する等して人物の識別を行ない、顔画像領域の位置、大きさ情報とともに人物のID情報をSTM92に出力する。
【0113】
聴覚認識機能部82は、Audio Recog111とSpeech Recog112という2つのオブジェクトで構成される。Audio Recog111は、マイク等の音声入力装置からの音声データを受け取って、特徴抽出と音声区間検出を行うオブジェクトであり、音声区間の音声データの特徴量及び音源方向をSpeech Recog112やSTM92に出力する。Speech Recog112は、Audio Recog111から受け取った音声特徴量と音声辞書及び構文辞書を使って音声認識を行うオブジェクトであり、認識された単語のセットをSTM92に出力する。
【0114】
触覚認識記憶部83は、接触センサからのセンサ入力を認識するTactile Sensor119というオブジェクトで構成され、認識結果はSTM92や内部状態を管理するオブジェクトであるInternal State Model(ISM)91に出力する。
【0115】
STM92は、短期記憶部を構成するオブジェクトであり、上述の認識系の各オブジェクトによって外部環境から認識されたターゲットやイベントを短期間保持(例えばカメラ15からの入力画像を約15秒程度の短い期間だけ記憶する)する機能モジュールであり、STMクライアントであるSBL102に対して外部刺激の通知(Notify)を定期的に行なう。
【0116】
LTM93は、長期記憶部を構成するオブジェクトであり、物の名前等学習により得られた情報を長期間保持するために使用される。LTM93は、例えば、ある行動記述モジュール(スキーマ)において外部刺激から内部状態の変化を連想記憶することができる。
【0117】
ISM91は、内部状態管理部を構成するオブジェクトであり、本能や感情といった数種類の情動を数式モデル化して管理しており、上述の認識系の各オブジェクトによって認識された外部刺激(ES:External Stimula)に応じてロボット装置1の本能や情動といった内部状態を管理する。
【0118】
SBL102は状況依存型行動階層を構成するオブジェクトである。SBL102は、STM92のクライアント(STMクライアント)となるオブジェクトであり、STM92からは定期的に外部刺激(ターゲットやイベント)に関する情報の通知(Notify)を受け取ると、スキーマ(Schema)すなわち実行すべき行動記述モジュールを決定する(後述)。
【0119】
ReflexiveSBL(Situated Behaviors Layer)103は、反射的行動部を構成するオブジェクトであり、上述した認識系の各オブジェクトによって認識された外部刺激に応じて反射的・直接的な機体動作を実行する。例えば、人間の顔を追いかけたり、うなずく、障害物の検出により咄嗟に避けたりといった振る舞いを行なう。
【0120】
SBL102は外部刺激や内部状態の変化等の状況に応じた動作を選択する。これに対し、ReflexiveSBL103は、外部刺激に応じて反射的な動作を選択する。これら2つのオブジェクトによる行動選択は独立して行なわれるため、互いに選択された行動記述モジュール(スキーマ)を機体上で実行する場合に、ロボット装置1のハードウェア・リソースが競合して実現不可能なこともある。RM(Resource Manager)116というオブジェクトは、SBL102とReflexiveSBL103とによる行動選択時のハードウェアの競合を調停する。そして、調停結果に基づいて機体動作を実現する各オブジェクトに通知することにより機体が駆動する。
【0121】
Sound Performer172、Motion Controller173、LEDController174は、機体動作を実現するオブジェクトである。Sound Performer172は、音声出力を行うためのオブジェクトであり、RM116経由でSBL102から与えられたテキスト・コマンドに応じて音声合成を行い、ロボット装置1の機体上のスピーカから音声出力を行う。また、Motion Controller173は、機体上の各関節アクチュエータの動作を行なうためのオブジェクトであり、RM116経由でSBL102から手や脚等を動かすコマンドを受けたことに応答して、該当する関節角を計算する。また、LEDController174は、LED19の点滅動作を行なうためのオブジェクトであり、RM116経由でSBL102からコマンドを受けたことに応答してLED19の点滅駆動を行なう。
【0122】
(5−1)状況依存行動制御
次に、上述の具体例において説明したように、行動価値ALを算出し、実行する行動を選択する状況依存行動階層について更に詳細に説明する。図15には、状況依存行動階層(SBL)(但し、反射行動部を含む)による状況依存行動制御の形態を模式的に示している。視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83からなる外部刺激認識部80における外部環境70の認識結果(センサ情報)182は、外部刺激183として状況依存行動階層(反射行動部103を含む)102aに与えられる。また、外部刺激認識部80による外部環境70の認識結果に応じた内部状態の変化184も状況依存行動階層102aに与えられる。そして、状況依存行動階層102aでは、外部刺激183や内部状態の変化184に応じて状況を判断して、行動選択を実現することができる。状況依存行動階層102aでは、上述した如く、外部刺激183や内部状態の変化184によって各行動記述モジュール(スキーマ)の行動価値ALを算出して、行動価値ALの大きさに応じてスキーマを選択して行動(動作)を実行する。行動価値ALの算出には、例えばライブラリを利用することにより、すべてのスキーマについて統一的な計算処理を行なうことができる。ライブラリには、例えば上述したように、内部状態ベクトルから欲求値ベクトルを算出する関数、内部状態ベクトルから満足度ベクトルを算出する関数、及び外部刺激から予想内部状態変化ベクトルを予想するための行動評価データベース等が保存されている。
【0123】
(5−2)スキーマ
図16には、状況依存行動階層102が複数のスキーマ121によって構成されている様子を模式的に示している。状況依存行動階層102は、上述した要素行動として、行動記述モジュールを有し、各行動記述モジュール毎にステートマシンを用意しており、それ以前の行動(動作)や状況に依存して、センサ入力された外部情報の認識結果を分類し、動作を機体上で発現する。要素行動となる行動記述モジュールは、外部刺激や内部状態に応じた状況判断を行なうMonitor機能と、行動実行に伴う状態遷移(ステートマシン)を実現するAction機能とを備えたスキーマ(Schema)121として記述される。
【0124】
状況依存行動階層102b(より厳密には、状況依存行動階層102のうち、通常の状況依存行動を制御する階層)は、複数のスキーマ121が階層的に連結されたツリー構造として構成され、外部刺激や内部状態の変化に応じてより最適なスキーマ121を統合的に判断して行動制御を行なうようになっている。このツリー122は、例えば動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリー(又は枝)を含んでいる。
【0125】
即ち上述した図5に示すように、状況依存行動階層102は、短期記憶部92から外部刺激の通知(Notify)を受けるルート・スキーマ2011、2021、2031を先頭に、抽象的な行動カテゴリから具体的な行動カテゴリに向かうように、各階層毎にスキーマが配設されている。そして図示の通り、各スキーマは外部刺激183と内部状態(の変化)184を入力している。また、各スキーマは、少なくともMonitor関数とActionと関数を備えている。
【0126】
ここで、Monitor関数とは、外部刺激183と内部状態184に応じて当該スキーマの行動価値ALを算出する関数であり、各スキーマは、このような行動価値評価手段としてのMonitor機能を有する。図22に示すようなツリー構造を構成する場合、上位(親)のスキーマは外部刺激183と内部状態184を引数として下位(子供)のスキーマのMonitor関数をコールすることができ、子供のスキーマは行動価値ALを返り値とする。また、スキーマは自分の行動価値ALを算出するために、更に子供のスキーマのMonitor関数をコールすることができる。そして、ルートのスキーマには各サブツリーからの行動価値ALが返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断することができる。ここで、ルート・スキーマを上述の行動選択部とし、これにより、スキーマを選択するようにしてもよい。なお、例えば後述するリソース・マネージャRM116や、別に設けた行動選択部により、各スキーマの行動価値ALを観察し、各行動価値ALの値に基づき行動を選択してもよいことはもちろんである。
【0127】
行動選択部では、上述したように、例えば行動価値ALが最も高いスキーマを選択したり、行動価値ALが所定の閾値を越えた2以上のスキーマを選択して並列的に行動実行するようにしてもよい(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0128】
また、Action関数は、スキーマ自身が持つ行動を記述したステートマシンを備えている。図22に示すようなツリー構造を構成する場合、親スキーマは、Action関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。本具体例では、ActionのステートマシンはReadyにならないと初期化されない。言い換えれば、中断しても状態はリセットされず、スキーマが実行中の作業データを保存することから、中断再実行が可能である。
【0129】
図17には、状況依存行動階層102において通常の状況依存行動を制御するためのメカニズムを模式的に示している。
【0130】
同図に示すように、状況依存行動階層(SBL)102には、短期記憶部(STM)92から外部刺激183が入力(Notify)されるとともに、内部状態管理部91から内部状態の変化184が入力される。状況依存行動階層102は、例えば動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリーで構成されており、ルート・スキーマは、外部刺激183の通知(Notify)に応答して、各サブツリーのMonitor関数をコールし、その返り値としての行動価値ALを参照して、統合的な行動選択を行ない、選択された行動を実現するサブツリーに対してAction関数をコールする。また、状況依存行動階層102において決定された状況依存行動は、リソース・マネージャRM116により反射行動部103による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller)に適用される。
【0131】
また、反射的行動部103は、上述した認識系の各オブジェクトによって認識された外部刺激183に応じて、例えば、障害物の検出により咄嗟に避ける等、反射的・直接的な機体動作を実行する。このため、図22に示す通常の状況依存行動を制御する場合とは相違し、図16に示すように、認識系の各オブジェクトからの信号を直接入力する複数のスキーマ132が階層化されずに並列的に配置されている。
【0132】
図18には、反射行動部103におけるスキーマの構成を模式的に示している。同図に示すように、反射行動部103には、聴覚系の認識結果に応答して動作するスキーマとしてAvoid Big Sound204、Face to Big Sound205及びNodding Sound209、視覚系の認識結果に応答して動作するスキーマとしてFace to Moving Object206及びAvoid Moving Object207、並びに、触覚系の認識結果に応答して動作するスキーマとして手を引っ込める208が、それぞれ対等な立場で(並列的に)配設されている。
【0133】
図示の通り、反射的行動を行なう各スキーマは外部刺激183を入力に持つ。また、各スキーマは、少なくともMonitor関数とAction関数を備えている。Monitor関数は、外部刺激183に応じて当該スキーマの行動価値ALを算出して、これに応じて該当する反射的行動を実行すべきかどうかが判断される。また、Action関数は、スキーマ自身が持つ反射的行動を記述したステートマシン(後述)を備えており、コールされることにより、該当する反射的行動を実行するとともにActionの状態を遷移させていく。
【0134】
図19には、反射行動部103において反射的行動を制御するためのメカニズムを模式的に示している。図18にも示したように、反射行動部103内には、反応行動を記述したスキーマや、即時的な応答行動を記述したスキーマが並列的に存在している。認識系の機能モジュール80を構成する各オブジェクトから認識結果が入力されると、対応する反射行動スキーマがAonitor関数により行動価値ALを算出し、その値に応じてActionを軌道すべきかどうかが判断される。そして、反射行動部103において起動が決定された反射的行動は、リソース・マネージャRM116により状況依存行動階層102による状況依存行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller173)に適用される。
【0135】
このような状況依存行動階層102及び反射行動部103を構成するスキーマは、例えばC++言語ベースで記述される「クラス・オブジェクト」として記述することができる。図20には、状況依存行動階層102において使用されるスキーマのクラス定義を模式的に示している。同図に示されている各ブロックはそれぞれ1つのクラス・オブジェクトに相当する。
【0136】
図示の通り、状況依存行動階層(SBL)102は、1以上のスキーマと、SBL102の入出力イベントに対してIDを割り振るEvent Data Handler(EDH)211と、SBL102内のスキーマを管理するSchema Handler(SH)212と、外部オブジェクト(STMやLTM、リソース・マネージャ、認識系の各オブジェクト等)からデータを受信する1以上のReceive Data Handler(RDH)213と、外部オブジェクトにデータを送信する1以上のSend Data Handler(SDH)214とを備えている。
【0137】
Schema Handler212は、状況依存行動階層(SBL)102や反射行動部103を構成する各スキーマやツリー構造等の情報(SBLのコンフィギュレーション情報)をファイルとして保管している。例えばシステムの起動時等に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、図22に示したような状況依存行動階層102のスキーマ構成を構築(再現)して、メモリ空間上に各スキーマのエンティティをマッピングする。
【0138】
各スキーマは、スキーマのベースとして位置付けられるOpenR_Guest215を備えている。OpenR_Guest215は、スキーマが外部にデータを送信するためのDsubject216、並びに、スキーマが外部からデータを受信するためのDObject217というクラス・オブジェクトをそれぞれ1以上備えている。例えば、スキーマが、SBL102の外部オブジェクト(STMやLTM、認識系の各オブジェクト等)にデータを送るときには、Dsubject216はSend Data Handler214に送信データを書き込む。また、DObject217は、SBL102の外部オブジェクトから受信したデータをReceive Data Handler213から読み取ることができる。
【0139】
Schema Manager218及びSchema Base219は、ともにOpenR_Guest215を継承したクラス・オブジェクトである。クラス継承は、元のクラスの定義を受け継ぐことであり、この場合、OpenR_Guest215で定義されているDsubject216やDObject217等のクラス・オブジェクトをSchema Manager Base218やSchema Base219も備えていることを意味する(以下、同様)。例えば図22に示すように複数のスキーマがツリー構造になっている場合、Schema Manager Base218は、子供のスキーマのリストを管理するクラス・オブジェクトSchema List220を持ち(子供のスキーマへのポインタを持ち)、子供スキーマの関数をコールすることができる。また、Schema Base219は、親スキーマへのポインタを持ち、親スキーマからコールされた関数の返り値を戻すことができる。
【0140】
Schema Base219は、State Machine221及びPronome222という2つのクラス・オブジェクトを持つ。State Machine221は当該スキーマの行動(Action関数)についてのステートマシンを管理している。親スキーマは子供スキーマのAction関数のステートマシンを切り替える(状態遷移させる)ことができる。また、Pronome222には、当該スキーマが行動(Action関数)を実行又は適用するターゲットを代入する。後述するように、スキーマはPronome222に代入されたターゲットによって占有され、行動(動作)が終了(完結、異常終了等)するまでスキーマは解放されない。新規のターゲットのために同じ行動を実行するためには同じクラス定義のスキーマをメモリ空間上に生成する。この結果、同じスキーマをターゲット毎に独立して実行することができ(個々のスキーマの作業データが干渉し合うことはなく)、後述する行動のReentrance性が確保される。
【0141】
Parent Schema Base223は、Schema Manager218及びSchema Base219を多重継承するクラス・オブジェクトであり、スキーマのツリー構造において、当該スキーマ自身についての親スキーマ及び子供スキーマすなわち親子関係を管理する。
【0142】
Intermediate Parent Schema Base224は、Parent Schema Base223を継承するクラス・オブジェクトであり、各クラスのためのインターフェース変換を実現する。また、Intermediate Parent Schema Base224は、Schema Status Info225を持つ。このSchema Status Info225は、当該スキーマ自身のステートマシンを管理するクラス・オブジェクトである。親スキーマは、子供スキーマのAction関数をコールすることによってそのステートマシンの状態を切り換えることができる。また、子供スキーマのMonitor関数をコールしてそのステートマシンの常態に応じた行動価値ALを問うことができる。但し、スキーマのステートマシンは、前述したAction関数のステートマシンとは異なるということを留意されたい。
【0143】
And Parent Schema226、Num Or Parent Schema227、Or Parent Schema228は、Intermediate Parent Schema Base224を継承するクラス・オブジェクトである。And Parent Schema226は、同時実行する複数の子供スキーマへのポインタを持つ。Or Parent Schema228は、いずれか択一的に実行する複数の子供スキーマへのポインタを持つ。また、Num Or Parent Schema227は、所定数のみを同時実行する複数の子供スキーマへのポインタを持つ。
【0144】
Parent Schema229は、これらAnd Parent Schema226、Num Or Parent Schema227、Or Parent Schema228を多重継承するクラス・オブジェクトである。
【0145】
図21には、状況依存行動階層(SBL)102内のクラスの機能的構成を模式的に示している。状況依存行動階層(SBL)102は、STMやLTM、リソース・マネージャ、認識系の各オブジェクト等外部オブジェクトからデータを受信する1以上のReceive Data Handler(RDH)213と、外部オブジェクトにデータを送信する1以上のSend Data Handler(SDH)214とを備えている。
【0146】
Event Data Handler(EDH)211は、SBL102の入出力イベントに対してIDを割り振るためのクラス・オブジェクトであり、RDH213やSDH214から入出力イベントの通知を受ける。
【0147】
Schema Handler212は、スキーマ132を管理するためのクラス・オブジェクトであり、SBL102を構成するスキーマのコンフィギュレーション情報をファイルとして保管している。例えばシステムの起動時等に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、SBL102内のスキーマ構成を構築する。
【0148】
各スキーマは、図20に示したクラス定義に従って生成され、メモリ空間上にエンティティがマッピングされる。各スキーマは、OpenR_Guest215をベースのクラス・オブジェクトとし、外部にデータ・アクセスするためのDSubject216やDObject217等のクラス・オブジェクトを備えている。
【0149】
スキーマ132が主に持つ関数とステートマシンを以下に示しておく。以下の関数は、Schema Base219で記述されている。
ActivationMonitor():スキーマがReady時にActiveになるための評価関数
Actions():Active時の実行用ステートマシン
Goal():Active時にスキーマがGoalに達したかを評価する関数
Fail():Active時にスキーマがfail状態かを判定する関数
SleepActions():Sleep前に実行されるステートマシン
SleepMonitor():Sleep時にResumeするための評価関数
ResumeActions():Resume前にResumeするためのステートマシン
DestroyMonitor():Sleep時にスキーマがfail状態か判定する評価関数
MakePronome():ツリー全体のターゲットを決定する関数
【0150】
(5−3)状況依存行動階層の機能
状況依存行動階層(SBL)102は、短期記憶部92及び長期記憶部93の記憶内容や、内部状態管理部91によって管理される内部状態を基に、ロボット装置1が現在置かれている状況に即応した動作を制御する。
【0151】
前項で述べたように、本具体例における状況依存行動階層102は、スキーマのツリー構造(図22を参照のこと)で構成されている。各スキーマは、自分の子供と親の情報を知っている状態で独立性を保っている。このようなスキーマ構成により、状況依存行動階層102は、Concurrentな評価、Concurrentな実行、Preemption、Reentrantという主な特徴を持っている。以下、これらの特徴について詳解する。
【0152】
(5−3−1)Concurrentな評価:
行動記述モジュールとしてのスキーマは外部刺激や内部状態の変化に応じた状況判断を行なうMonitor機能を備えていることは既に述べた。Monitor機能は、スキーマがクラス・オブジェクトSchema BaseでMonitor関数を備えていることにより実装されている。Monitor関数とは、外部刺激と内部状態に応じて当該スキーマの行動価値ALを算出する関数である。
【0153】
図22に示すようなツリー構造を構成する場合、上位(親)のスキーマは外部刺激183と内部状態の変化184を引数として下位(子供)のスキーマのMonitor関数をコールすることができ、子供のスキーマは行動価値ALを返り値とする。また、スキーマは自分の行動価値ALを算出するために、更に子供のスキーマのMonitor関数をコールすることができる。そして、ルートのスキーマ2011〜2031には各サブツリーからの行動価値ALが返されるので、外部刺激183と内部状態の変化184に応じた最適なスキーマすなわち動作を統合的に判断することができる。
【0154】
このようにツリー構造になっていることから、外部刺激183と内部状態の変化184による各スキーマの評価は、まずツリー構造の下から上に向かってConcurrentに行なわれる。即ち、スキーマに子供スキーマがある場合には、選択した子供のMonitor関数をコールしてから、自身のMonitor関数を実行する。次いで、ツリー構造の上から下に向かって評価結果としての実行許可を渡していく。評価と実行は、その動作が用いるリソースの競合を解きながら行なわれる。
【0155】
本具体例における状況依存行動階層102は、スキーマのツリー構造を利用して、並列的に行動の評価を行なうことができるので、外部刺激183や内部状態の変化184等の状況に対しての適応性がある。また、評価時には、ツリー全体に関しての評価を行ない、このとき算出される行動価値ALによりツリーが変更されるので、スキーマすなわち実行する動作を動的にプライオリタイズすることができる。
【0156】
(5−3−2)Concurrentな実行:
ルートのスキーマには各サブツリーからの行動価値ALが返されるので、外部刺激183と内部状態の変化184に応じた最適なスキーマすなわち動作を統合的に判断することができる。例えば行動価値ALが最も高いスキーマを選択したり、行動価値ALが所定の閾値を越えた2以上のスキーマを選択して並列的に行動実行するようにしてもよい(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0157】
選択され、実行許可をもらったスキーマは実行される。すなわち、実際にそのスキーマは更に詳細の外部刺激183や内部状態の変化184を観測して、コマンドを実行する。実行に関しては、ツリー構造の上から下に向かって順次すなわちConcurrentに行なわれる。即ち、スキーマに子供スキーマがある場合には、子供のActions関数を実行する。
【0158】
Action関数は、スキーマ自身が持つ行動(動作)を記述したステートマシンを備えている。図22に示すようなツリー構造を構成する場合、親スキーマは、Action関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。
【0159】
本具体例における状況依存行動階層(SBL)102は、スキーマのツリー構造を利用して、リソースが競合しない場合には、余ったリソースを使う他のスキーマを同時に実行することができる。但し、Goalまでに使用するリソースに対して制限を加えないと、ちぐはぐな行動出現が起きる可能性がある。状況依存行動階層102において決定された状況依存行動は、リソース・マネージャにより反射行動部(ReflexiveSBL)103による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller)に適用される。
【0160】
(5−3−3)Preemption:
1度実行に移されたスキーマであっても、それよりも重要な(優先度の高い)行動があれば、スキーマを中断してそちらに実行権を渡さなければならない。また、より重要な行動が終了(完結又は実行中止等)したら、元のスキーマを再開して実行を続けることも必要である。
【0161】
このような優先度に応じたタスクの実行は、コンピュータの世界におけるOS(オペレーティング・システム)のPreemptionと呼ばれる機能に類似している。OSでは、スケジュールを考慮するタイミングで優先度のより高いタスクを順に実行していくという方針である。
【0162】
これに対し、本具体例におけるロボット装置1の制御システム10は、複数のオブジェクトにまたがるため、オブジェクト間での調停が必要になる。例えば反射行動を制御するオブジェクトである反射行動部103は、上位の状況依存行動を制御するオブジェクトである状況依存行動階層102の行動評価を気にせずに物を避けたり、バランスをとったりする必要がある。これは、実際に実行権を奪い取り実行を行なう訳であるが、上位の行動記述モジュール(SBL)に、実行権利が奪い取られたことを通知して、上位はその処理を行なうことによってPreemptiveな能力を保持する。
【0163】
また、状況依存行動層102内において、外部刺激183と内部状態の変化184に基づく行動価値ALの評価の結果、あるスキーマに実行許可がなされたとする。更に、その後の外部刺激183と内部状態の変化184に基づく行動価値ALの評価により、別のスキーマの重要度の方がより高くなったとする。このような場合、実行中のスキーマのActions関数を利用してSleep状態にして中断することにより、Preemptiveな行動の切り替えを行なうことができる。
【0164】
実行中のスキーマのActions()の状態を保存して、異なるスキーマのActions()を実行する。また、異なるスキーマのActions()が終了した後、中断されたスキーマのActions()を再度実行することができる。
【0165】
また、実行中のスキーマのActions()を中断して、異なるスキーマに実行権が移動する前に、SleepActions()を実行する。例えば、ロボット装置1は、対話中にサッカーボールを見つけると、「ちょっと待ってね」と言って、サッカーすることができる。
【0166】
(5−3−4)Reentrant:
状況依存行動階層102を構成する各スキーマは、一種のサブルーチンである。スキーマは、複数の親からコールされた場合には、その内部状態を記憶するために、それぞれの親に対応した記憶空間を持つ必要がある。
【0167】
これは、コンピュータの世界では、OSが持つReentrant性に類似しており、本明細書ではスキーマのReentrant性と呼ぶ。図21に示したように、スキーマ132はクラス・オブジェクトで構成されており、クラス・オブジェクトのエンティティすなわちインスタンスをターゲット(Pronome)毎に生成することによりReentrant性が実現される。
【0168】
スキーマのReentrant性について、図22を参照しながらより具体的に説明する。Schema Handler212は、スキーマを管理するためのクラス・オブジェクトであり、SBL102を構成するスキーマのコンフィギュレーション情報をファイルとして保管している。システムの起動時に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、SBL102内のスキーマ構成を構築する。図22に示す例では、Eat221やDialog222等の行動(動作)を規定するスキーマのエンティティがメモリ空間上にマッピングされているとする。
【0169】
ここで、外部刺激183と内部状態の変化184に基づく行動価値ALの評価により、スキーマDialog222に対してAというターゲット(Pronome)が設定されて、Dialog222が人物Aとの対話を実行するようになったとする。
【0170】
そこに、人物Bがロボット装置1と人物Aとの対話に割り込み、その後、外部刺激183と内部状態の変化184に基づく行動価値ALの評価を行なった結果、Bとの対話を行なうスキーマ223の方がより優先度が高くなったとする。
【0171】
このような場合、Schema Handler212は、Bとの対話を行なうためのクラス継承した別のDialogエンティティ(インスタンス)をメモリ空間上にマッピングする。別のDialogエンティティを使用して、先のDialogエンティティとは独立して、Bとの対話を行なうことから、Aとの対話内容は破壊されずに済む。従って、DialogAはデータの一貫性を保持することができ、Bとの対話が終了すると、Aとの対話を中断した時点から再開することができる。
【0172】
Readyリスト内のスキーマは、その対象物(外部刺激183)に応じて評価すなわち行動価値ALの計算が行なわれ、実行権が引き渡される。その後、Readyリスト内に移動したスキーマのインスタンスを生成して、これ以外の対象物に対して評価を行なう。これにより、同一のスキーマをactive又はsleep状態にすることができる。
【0173】
以上のような制御システムを実現する制御プログラムは、上述したように、予めフラッシュROM23に格納されており、ロボット装置1の電源投入初期時において読み出される。このようにしてこのロボット装置1においては、自己及び周囲の状況や、使用者からの指示及び働きかけに応じて自律的に行動し得るようになされている。
【0174】
【発明の効果】
以上詳細に説明したように本発明に係るロボット装置は、内部状態及び外部刺激に基づき自律的に行動を選択し発現するロボット装置において、行動が記述され、その実現レベルに応じて木構造に構成された複数の行動記述モジュールと、上記内部状態及び外部刺激から上記複数の行動記述モジュールに記述された各行動の行動価値を所定のタイミングで算出する行動価値評価手段と、上記木構造の上層から下層へ上記行動価値が高い順に上記行動を選択して発現させる行動選択手段と、上記発現中の行動が存在する場合、当該発現中の行動以外の行動の選択が抑制されるよう上記行動価値評価手段を制御する行動制御手段とを有するので、実行中の行動以外の行動の選択が抑制されるため、例えば実行中の行動以外の行動価値を低くしたり、実行中の行動の行動価値を高くしたりして、内部状態及び外部刺激の変化に応じて実行中以外の行動を選択させないようにして行動選択の頻繁な変化(チャタリング)を防ぐことができ、行動の一貫性を持たせることができる。
【図面の簡単な説明】
【図1】本発明の実施の形態のロボット装置の外観を示す斜視図である。
【図2】本発明の実施の形態におけるロボット装置の機能構成を模式的に示すブロック図である。
【図3】本発明の実施の形態における制御ユニットの構成を更に詳細に示すブロック図である。
【図4】本発明の実施の形態におけるロボット装置の制御システムにおいて、各行動に対応する行動価値を算出してこれに基づき行動出力する処理を行う行動選択制御システム部分を示す模式図である。
【図5】本発明の実施の形態におけるスキーマツリーにより構成される行動制御システムを示す模式図である。
【図6】本発明の実施の形態における3層の木構造を有する行動制御システム(行動出力部)の行動価値評価算出及び行動実行の例を示す模式図である。
【図7】(a)乃至(d)は、本発明の実施の形態における2層のスキーマツリーのあるタイミングにおける行動価値算出例及び行動選択例を示す模式図である。
【図8】本発明の実施の形態における3層のスキーマツリーにおける行動価値評価例及び行動選択例を示す模式図である。
【図9】本発明の実施の形態における行動実行中以外の行動の実行を抑制する手順を示すフローチャートである。
【図10】(a)乃至(e)は、本発明の実施の形態における2層のスキーマツリーのタイミングにおける行動価値算出例及び行動選択例を示す模式図である。
【図11】本発明の実施の形態における3層のスキーマツリーにおける行動価値評価例及び行動選択例を示す模式図である。
【図12】本発明の具体例におけるロボット装置の行動制御システムの機能構成を示す模式図である。
【図13】本発明の具体例における行動制御システムのオブジェクト構成を示す模式図である。
【図14】本発明の具体例における状況依存行動階層による状況依存行動制御の形態を示す模式図である。
【図15】状況依存行動階層が複数のスキーマによって構成されている様子を示す模式図である。
【図16】状況依存行動階層におけるスキーマのツリー構造を示す模式図である。
【図17】状況依存行動階層において通常の状況依存行動を制御するためのメカニズムを示す模式図である。
【図18】反射行動部におけるスキーマの構成を示す模式図である。
【図19】反射行動部により反射的行動を制御するためのメカニズムを示す模式図である。
【図20】状況依存行動階層において使用されるスキーマのクラス定義を示す模式図である。
【図21】状況依存行動階層内のクラスの機能的構成を示す模式図である。
【図22】スキーマのReentrant性を説明する図である。
【符号の説明】
1 ロボット装置、10 制御システム、15 CCDカメラ、16 マイクロフォン、17 スピーカ、18 タッチ・センサ、19 LEDインジケータ、20 制御部、21 CPU、22 RAM、23 ROM、24 不揮発メモリ、25 インターフェース、26 無線通信インターフェース、27 ネットワーク・インターフェース・カード、28 バス、29 キーボード、40 入出力部、50 駆動部、51 モータ、52 エンコーダ、53 ドライバ、81 視覚認識機能部、82 聴覚認識機能部、83 接触認識機能部、91 内部状態管理部、92 短期記憶部(STM)、93 長期記憶部(LTM)、100 行動選択制御システム、101 熟考行動階層、102 状況依存行動階層(SBL)、103 反射行動部、110 行動出力部、120 行動価値評価部、130 行動選択部、132 要素行動、140 行動制御部
【発明の属する技術分野】
本発明は、自律的に行動を発現するロボット装置、その行動制御方法及びプログラムに関し、特に、外部刺激と自身の内部状態とから行動を選択して発現するロボット装置、その行動制御方法及びプログラムに関する。
【0002】
【従来の技術】
近年、産業用ロボット装置に代わり、新しいロボット装置の分野として人間共存型ロボット装置やエンターテインメントロボット装置の研究が進められている。このようなロボット装置は、センサ等からの外部刺激の情報を使用して行動を発現(実行)するようになされている。
【0003】
例えば、下記非特許文献1にはロボット装置の自己保存の観点からの評価に基づきロボットの行動を生成する方法が開示されている。自己保存の観点からの評価とは、自己のハードウェアの耐久性、故障率の観点からこれを評価するもので、具体的には、外界情報(視覚・聴覚のセンサ入力)だけでなく、自己のバッテリ状態や消費電力、回路温度等の情報からなる入力情報を身体の耐久性の評価値(故障率)に変換する自己保存評価関数を計算し、自己保存評価関数の値を監視することで、複数の動作形態のうち、行動を行っている状態から、実際に他の行動に指令を与えて行動状態を変移させる。これにより、ロボット装置の行動は、自己保存評価が良くなる方へ近づき、悪くなる方は避けるという自己保存の評価から生まれる志向性(好き嫌い)を反映したものとすることができる。
【0004】
【非特許文献1】
尾形哲也、菅野重樹、「自己保存に基づくロボットの行動生成−方法論と機械モデルの実現化−」、日本ロボット学会誌、1997年、第15巻、第5号、p.710−721
【0005】
【発明が解決しようとする課題】
しかしながら、この非特許文献1に記載のロボット装置は、この非特許文献1に記載のロボット装置の「自己の保存」に基づいた価値観は、充電なら良、放電なら悪、というような外部刺激を基にしたものであり、人間に対して一方向のコミュニケーションしか実現できず、外部刺激と応答動作との関係が固定的となってしまい、ユーザは飽きを感じてしまうことが多い。
【0006】
また、上記非特許文献1に記載のように、自己保存評価関数の値を監視することで、行動を行っている状態から他の行動に行動状態を変移させるような場合、自己保存評価関数の値によっては行動実行中にその行動を中断して他の行動へ変移してしまい、そのようなことが頻繁に生じると、行動選択にチャタリングが生じ、実行される行動の一貫性がなくなってしまうという問題点がある。
【0007】
本発明は、このような従来の実情に鑑みて提案されたものであり、行動の選択を安定化し、行動に一貫性を持たせることができるロボット装置、その制御方法及びプログラムを提供することを目的とする。
【0008】
【課題を解決するための手段】
上述した目的を達成するために、本発明に係るロボット装置は、内部状態及び外部刺激に基づき自律的に行動を選択し発現するロボット装置において、行動が記述された複数の行動記述モジュールと、上記内部状態及び外部刺激から上記複数の行動記述モジュールに記述された各行動の行動価値を所定のタイミングで算出する行動価値評価手段と、上記各行動の行動価値に基づき行動を選択して発現させる行動選択手段と、上記発現中の行動が存在する場合、当該発現中の行動以外の行動の選択が抑制されるよう上記行動価値評価手段を制御する行動制御手段とを有することを特徴とする。
【0009】
本発明においては、発現中の行動以外の行動の選択が抑制されるよう行動制御手段により行動価値評価手段が制御されるため、例えば発現中の行動以外の行動価値を低くしたり、発現中の行動の行動価値を高くしたりして、内部状態及び外部刺激の変化に応じて発現中以外の行動を選択させないようにすることができる。
【0010】
本発明に係るロボット装置の行動制御方法は、内部状態及び外部刺激に基づき自律的に行動を選択し発現するロボット装置の行動制御方法において、上記内部状態及び外部刺激から複数の行動記述モジュールに記述された各行動の行動価値を所定のタイミングで算出する行動価値評価工程と、上記各行動の行動価値に基づき行動を選択して発現させる行動選択工程と、上記発現中の行動が存在する場合、当該発現中の行動以外の行動の選択が抑制されるよう制御する行動制御工程とを有することを特徴とする。
【0011】
また、本発明に係るプログラムは、上述したロボット装置の行動制御処理をコンピュータに実行させるものである。
【0012】
【発明の実施の形態】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、ペット型エージェント、人間型エージェント等生命を模擬し、ユーザとのインタラクションを可能とした自律型のロボット装置であって、特に自律的に発現される行動の選択を安定化し、行動に一貫性を持たせることができるようなロボット装置に適用したものであるが、ここでは先ず、このようなロボット装置の構成について説明し、次にロボット装置の制御システムのうち、行動制御システムについて説明し、最後にそのような行動制御システムを含む制御システムの全体の構成について説明する。
【0013】
(A)ロボット装置の構成
図1は、本実施の形態のロボット装置の外観を示す斜視図である。図1に示すように、ロボット装置1は、体幹部ユニット2の所定の位置に頭部ユニット3が連結されると共に、左右2つの腕部ユニット4R/Lと、左右2つの脚部ユニット5R/Lが連結されて構成されている(但し、R及びLの各々は、右及び左の各々を示す接尾辞である。以下において同じ。)。
【0014】
図2は、本実施の形態におけるロボット装置1の機能構成を模式的に示すブロック図である。図2に示すように、ロボット装置1は、全体の動作の統括的制御及びその他のデータ処理を行う制御ユニット20と、入出力部40と、駆動部50と、電源部60とで構成される。以下、各部について説明する。
【0015】
入出力部40は、入力部として人間の目に相当し、外部の状況を撮影するCCDカメラ15、及び耳に相当するマイクロフォン16や頭部や背中等の部位に配設され、所定の押圧を受けるとこれを電気的に検出することで、ユーザの接触を感知するタッチ・センサ18、前方に位置する物体までの距離を測定するための距離センサ、五感に相当するその他、ジャイロセンサ等、各種のセンサを含む。また、出力部として、頭部ユニット3に備えられ、人間の口に相当するスピーカ17、及び人間の目の位置に設けられ、感情表現や視覚認識状態を表現する例えばLEDインジケータ(目ランプ)19等を装備しており、これら出力部は、音声やLEDインジケータ19の点滅等、脚等による機械運動パターン以外の形式でもロボット装置1からのユーザ・フィードバックを表現することができる。
【0016】
例えば頭部ユニットの頭頂部の所定箇所に複数のタッチ・センサ18を設け、各タッチ・センサ18における接触検出を複合的に活用して、ユーザからの働きかけ、例えばロボット装置1の頭部を「撫でる」「叩く」「軽く叩く」等を検出することができ、例えば、押圧センサのうちの幾つかが所定時間をおいて順次接触したことを検出した場合、これを「撫でられた」と判別し、短時間のうちに接触を検出した場合、「叩かれた」と判別する等場合分けし、これに応じて内部状態も変化し、このような内部状態の変化を上述の出力部等により表現することができる。
【0017】
駆動部50は、制御ユニット20が指令する所定の運動パターンに従ってロボット装置1の機体動作を実現する機能ブロックであり、行動制御による制御対象である。駆動部50は、ロボット装置1の各関節における自由度を実現するための機能モジュールであり、それぞれの関節におけるロール、ピッチ、ヨー等各軸毎に設けられた複数の駆動ユニット541〜54nで構成される。各駆動ユニット541〜54nは、所定軸回りの回転動作を行うモータ511〜51nと、モータ511〜51nの回転位置を検出するエンコーダ521〜52nと、エンコーダ521〜52nの出力に基づいてモータ511〜51nの回転位置や回転速度を適応的に制御するドライバ531〜53nとの組み合わせで構成される。
【0018】
本ロボット装置1は、2足歩行としたが、駆動ユニットの組み合わせ方によって、ロボット装置1を例えば4足歩行等の脚式移動ロボット装置として構成することもできる。
【0019】
電源部60は、その字義通り、ロボット装置1内の各電気回路等に対して給電を行う機能モジュールである。本参考例に係るロボット装置1は、バッテリを用いた自律駆動式であり、電源部60は、充電バッテリ61と、充電バッテリ61の充放電状態を管理する充放電制御部62とで構成される。
【0020】
充電バッテリ61は、例えば、複数本のリチウムイオン2次電池セルをカートリッジ式にパッケージ化した「バッテリ・パック」の形態で構成される。
【0021】
また、充放電制御部62は、バッテリ61の端子電圧や充電/放電電流量、バッテリ61の周囲温度等を測定することでバッテリ61の残存容量を把握し、充電の開始時期や終了時期等を決定する。充放電制御部62が決定する充電の開始及び終了時期は制御ユニット20に通知され、ロボット装置1が充電オペレーションを開始及び終了するためのトリガとなる。
【0022】
制御ユニット20は、「頭脳」に相当し、例えばロボット装置1の機体頭部あるいは胴体部に搭載されている。
【0023】
図3は、制御ユニット20の構成を更に詳細に示すブロック図である。図3に示すように、制御ユニット20は、メイン・コントローラとしてのCPU(Central Processing Unit)21が、メモリ及びその他の各回路コンポーネントや周辺機器とバス接続された構成となっている。バス28は、データ・バス、アドレス・バス、コントロール・バス等を含む共通信号伝送路である。バス28上の各装置にはそれぞれに固有のアドレス(メモリ・アドレス又はI/Oアドレス)が割り当てられている。CPU21は、アドレスを指定することによってバス28上の特定の装置と通信することができる。
【0024】
RAM(Random Access Memory)22は、DRAM(Dynamic RAM)等の揮発性メモリで構成された書き込み可能メモリであり、CPU21が実行するプログラム・コードをロードしたり、実行プログラムによる作業データの一時的に保存そたりするために使用される。
【0025】
ROM(Read Only Memory)23は、プログラムやデータを恒久的に格納する読み出し専用メモリである。ROM23に格納されるプログラム・コードには、ロボット装置1の電源投入時に実行する自己診断テスト・プログラムや、ロボット装置1の動作を規定する動作制御プログラム等が挙げられる。
【0026】
ロボット装置1の制御プログラムには、カメラ15やマイクロフォン16等のセンサ入力を処理してシンボルとして認識する「センサ入力・認識処理プログラム」、短期記憶や長期記憶等の記憶動作(後述)を司りながらセンサ入力と所定の行動制御モデルとに基づいてロボット装置1の行動を制御する「行動制御プログラム」、行動制御モデルに従って各関節モータの駆動やスピーカ17の音声出力等を制御する「駆動制御プログラム」等が含まれる。
【0027】
不揮発性メモリ24は、例えばEEPROM(Electrically Erasable and Programmable ROM)のように電気的に消去再書き込みが可能なメモリ素子で構成され、逐次更新すべきデータを不揮発的に保持するために使用される。逐次更新すべきデータには、暗号鍵やその他のセキュリティ情報、出荷後にインストールすべき装置制御プログラム等が挙げられる。
【0028】
インターフェース25は、制御ユニット20外の機器と相互接続し、データ交換を可能にするための装置である。インターフェース25は、例えば、カメラ15、マイクロフォン16、又はスピーカ17等との間でデータ入出力を行う。また、インターフェース25は、駆動部50内の各ドライバ531〜53nとの間でデータやコマンドの入出力を行う。
【0029】
また、インターフェース25は、RS(Recommended Standard)−232C等のシリアル・インターフェース、IEEE(Institute of Electrical and electronics Engineers)1284等のパラレル・インターフェース、USB(Universal Serial Bus)インターフェース、i−Link(IEEE1394)インターフェース、SCSI(Small Computer System Interface)インターフェース、PCカードやメモリ・スティックを受容するメモリ・カード・インターフェース(カード・スロット)等のような、コンピュータの周辺機器接続用の汎用インターフェースを備え、ローカル接続された外部機器との間でプログラムやデータの移動を行うようにしてもよい。
【0030】
また、インターフェース25の他の例として、赤外線通信(IrDA)インターフェースを備え、外部機器と無線通信を行うようにしてもよい。
【0031】
更に、制御ユニット20は、無線通信インターフェース26やネットワーク・インターフェース・カード(NIC)27等を含み、Bluetoothのような近接無線データ通信や、IEEE 802.11bのような無線ネットワーク、あるいはインターネット等の広域ネットワークを経由して、外部のさまざまなホスト・コンピュータとデータ通信を行うことができる。
【0032】
このようなロボット装置1とホスト・コンピュータ間におけるデータ通信により、遠隔のコンピュータ資源を用いて、ロボット装置1の複雑な動作制御を演算したり、リモート・コントロールしたりすることができる。
【0033】
(B)行動制御システム
次に、本実施の形態におけるロボット装置の行動制御システムについて詳細に説明する。上述したロボット装置1は、自己及び周囲の状況や、使用者からの指示及び働きかけに応じて自律的に行動し得るようになされている。即ち、ロボット装置1は、外部からの刺激と自身の内部状態とに基づき行動に対する行動価値AL(アクティベーションレベル:Activation Level)を算出し、これに基づき行動が選択され出力されることで行動が生成される。ここでは、特に、ロボット装置の行動制御のうち、行動が選択され、実行(発現)されている際に、行動に一貫性を持たせるための行動制御方法について説明する。なお、ロボット装置の制御システムの全体の構成についての詳細は後述する。
【0034】
(1)ロボット装置の行動選択制御
図4は、ロボット装置の制御システムにおいて、各行動に対応する行動価値を算出してこれに基づき行動出力する処理を行う行動選択制御システム部分を示す模式図である。図4に示すように、行動選択制御システム100は、本能や感情といった数種類の情動を数式モデル化して管理する内部状態管理部91と、外部環境におけるセンサ入力等の外部刺激を認識する外部刺激認識部80と、行動が記述された複数の要素行動(図10では、要素行動A乃至Dのみ図示)132を有し、選択されるとその行動を出力する行動出力部110と、各要素行動の行動価値AL(Activation Level)を算出する行動価値評価部120と、行動価値ALに基づき、実行(発現)する要素行動を選択する行動選択部130と、実行中の行動が存在する場合に、ロボット装置の行動に一貫性を持たせるよう行動価値評価部120を制御する行動制御部140とを有し、選択された要素行動が行動を出力することでロボット装置が行動を実行するようになされている。
【0035】
要素行動132とは、内部状態及び外部刺激から行動出力を決定するモジュールであり、各モジュール毎にステートマシンを用意しており、それ以前の行動(動作)や状況に依存して、センサ入力された外部情報の認識結果を分類し、動作を機体上で発現する。このモジュール(行動記述部)は、外部刺激や内部状態に応じた状況判断を行ない、ロボット装置が各行動をどれくらいやりたいか(実行優先度)を示す行動価値ALを算出するMonitor機能と、行動実行に伴う状態遷移(ステートマシン)を実現するAction機能とを備えたスキーマ(Schema)として記述されるが、スキーマの詳細については後述する。各要素行動は、自身に記述された行動に応じて所定の内部状態及び外部刺激が定義されている。
【0036】
ここで外部刺激とは、外部刺激認識部80におけるロボット装置の知覚情報等であり、例えばカメラから入力された画像に対して処理された色情報、形情報、顔情報等の対象物情報等が挙げられる。具体的には、例えば、色、形、顔、3D一般物体、及びハンドジェスチャー、その他、動き、音声、接触、距離、場所、時間、及びユーザとのインタラクション回数等が挙げられる。
【0037】
また、内部状態とは、上述した如く、内部状態管理部91にて管理される本能や感情といった情動であり、例えば、疲れ(FATIGUE)、痛み(PAIN)、栄養状態(NOURISHMENT)、乾き(THURST)、愛情(AFFECTION)、好奇心(CURIOSITY)等がある。
【0038】
そして、例えば行動出力が「食べる」である要素行動Aは、外部刺激として対象物の種類(OBJECT_ID)、対象物の大きさ(OBJECT_SIZEという。)、対象物の距離(OBJECT_DISTANCE)等を扱い、内部状態として「NOURISHMENT」(「栄養状態」)、「FATIGUE」(「疲れ」)等を扱う。このように、各要素行動毎に、扱う外部刺激及び内部状態の種類が定義され、該当する外部刺激及び内部状態に対応する行動(要素行動)に対する行動価値が算出される。なお、1つの内部状態、又は外部刺激は、1つの要素行動だけでなく、複数の要素行動132に対応付けられていてもよいことはもちろんである。
【0039】
これら複数の要素行動は、その行動の実現レベルに応じた木構造(以下、スキーマツリーという。)を構成している。図5は、スキーマツリーにより構成される行動制御システムを示す模式図である。なお、図4に示す例においては、説明を簡略化するため、行動制御システムは、行動価値評価部、行動選択部及び行動制御部等を設けたものとして記載しているが、後述するように各スキーマ(要素行動)がこれらの機能の一部又は全部を包括してもよい。
【0040】
この木構造形式に構成されたスキーマツリーは、動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するための枝など、複数の枝を含んでいる。例えば、ルートの要素行動2011〜2031の直近下位の階層では、「探索する(Investigate)」、「摂取する(Ingest)」、「遊ぶ(Play)」という要素行動2012〜2032が配設される。
【0041】
そして、「探索する(Investigate)」行動を出力する要素行動2012の下位には、「Investigative Locomotion」(移動して探索する)等という、より具体的な探索行動を記述した要素行動2013が配設されている。
【0042】
同様に、「摂取する(Ingest)」行動を出力する要素行動2022の下位には「Eat」(食べる)、「Drink」(飲む)等のより具体的な飲食行動を記述した行動記述部が配設され、「遊ぶ(Play)」の行動を出力する要素行動2032の下位には「Play Bowing」(おじぎする)、「Play Greeting」(挨拶する)等のより具体的な遊ぶ行動が記述された要素行動2033が配設されている。
【0043】
各要素行動132は、行動価値評価部120にて、各要素行動毎にその行動をロボット装置の行動価値ALが算出される。この行動価値評価部は、木構造に構成されたスキーマツリーにおいては、上位(親)の行動要素、例えば図5においては要素行動2012〜2032の行動価値評価部は、外部刺激及び内部状態を引数として夫々下位(子供)の要素行動、例えば図5においては要素行動2013〜2033の行動価値評価部をコールすることができ、親の要素行動の行動価値評価部は、子供の要素行動の行動価値評価部からの行動価値を返り値とする。また、これら子供の要素行動の行動価値評価部は自分の行動価値を算出するために、更に子供の要素行動の行動価値評価部をコールすることができる。そして、ルートの要素行動、図5においては要素行動2011〜2031の行動価値評価部には各サブツリーからの行動価値が返され、これに基づき要素行動が選択され、選択された要素行動が行動を出力するため、外部刺激及び内部状態の変化に応じた最適な行動を統合的に判断することができる。
【0044】
図4に戻って、内部状態管理部91は、外部刺激並びに例えば自身のバッテリの残量及びモータの回転角等の情報を入力とし、上述のような複数の内部状態に対応した内部状態の値を算出、管理する。具体的には、例えば、内部状態「栄養状態」は、バッテリの残量を基に決定し、内部状態「疲れ」は、消費電力を基に決定することができる。
【0045】
行動価値評価部120は、上述したように、スキーマツリーの下層から上層に渡される行動価値に基づき、例えば、0.5秒に1回等、所定のタイミングで外部刺激と内部状態とから各要素行動A〜Dにおける行動価値ALを算出する。なお、この行動価値評価部120は、本実施の形態においては各要素行動132毎に個別に設けられるものとするが、1つの行動価値評価部120を設けて全ての要素行動についての行動価値を算出するようにしてもよい。
【0046】
行動選択部130は、この行動価値ALに基づき、要素行動を選択し、選択された要素行動は自身に記述された行動を出力する。以下では、行動選択部130は、複数のスキーマツリーにおけるルートの各要素行動の行動価値ALをモニタし、最も高い要素行動を選択するものとして説明する。なお、後述するように、行動の出力(発現)に際してリソースの競合が起こらないと判断される場合は、同時に複数の行動が選択され出力することもできる。
【0047】
図6は、3層の木構造を有する行動制御システム(行動出力部)の行動価値評価算出及び行動実行の例を示す模式図である。図6に示すように、行動価値ALは、スキーマツリーにおいて、最下位の要素行動SA〜SFは、内部状態及び外部刺激に基づき自身の行動価値を算出し、この行動価値がその親にあたる要素行動に渡される。図6に示す例では、3層目の各要素行動(以下、子要素行動という。)SA、SB、及びSCが夫々各自に対応付けられた内部状態及び外部刺激から自身の行動価値を算出し、夫々行動価値AL_SA、AL_SB、及びAL_SCをその上層となる2層目の要素行動(以下、親要素行動という。)SDに渡し、子要素行動SE、SFが自身の行動価値AL_SE、AL_SFをその親要素行動SGに渡す。
【0048】
親要素行動SD、SGは、複数の自分の子要素行動を有する場合、渡された行動価値ALのうち最も高い行動価値ALを自身の行動価値ALの値とする。図6に示す例では、親要素行動SDは、子要素行動SAのAL_SA=60を自身の行動価値とし、親要素行動SGは、子要素行動SEのAL_SE=50を自身の行動価値とする。
【0049】
更にこの親要素行動SD、SGが、更に上位の要素行動に対して自身の行動価値ALを渡すというように、最下層から最上層の方向へ行動評価が行われる。図6に示す例では、親要素行動SD、SGの更に上位が最上層の要素行動(以下、ルート要素行動という。)SRとなる。
【0050】
図4に示す行動出力部110には、図6に示すようなスキーマツリーを複数有し、行動選択部130は、それらの複数のスキーマツリーにおいて、その最上層の要素行動のうち、最も行動価値ALが高いものを選択する。即ち、最も行動価値が大きいルート要素行動を有するスキーマツリーが選択される。選択された最上層の要素行動は、自身の行動価値ALとした子の要素行動、即ち子要素行動の中で最も行動価値が高い子要素行動を選択し、選択された子の要素行動は、更に下層であって、自身の行動価値ALとした要素行動を選択するというように、最上層から最下層の方向へ選択がなされる。
【0051】
このようにして、木構造の一層目のルート要素行動から下位に向かって、行動価値の最も大きい要素行動に実行許可を渡していき、実行許可を渡された要素行動がコールされる。そしてその要素行動に子供の要素行動がある場合には、行動価値の最も大きい子供の要素行動に実行許可が渡り、スキーマツリーにおいて最下位の要素行動に実行許可が渡った場合に、その要素行動がコールされ、行動を出力するようなされている。
【0052】
なお、ここでは、親要素行動は、子要素行動から渡された行動価値から最も高い値を選んで自分の行動価値とする、即ち親要素行動の行動価値評価部は、子要素行動の行動価値のうち最も高い値を選択するものとして説明したが、親要素行動においても、内部状態及び外部刺激に基づき自身の行動価値を算出するか、又はそのように算出した値と子要素行動の行動価値とから、自身の行動価値を算出するようにしてもよい。
【0053】
従来、人間共存型ロボット装置や、エンターテインメント型のロボット装置は、外部刺激のみを行動選択のトリガとしているものが多く、ユーザ操作と応答動作との関係が固定的であり、ユーザは同じ外部刺激に対して、同じ動作しか繰り返さない玩具に対し、容易に飽きを感じてしまうことが多かった。これに対し、本ロボット装置のように、本能や感情といった情動をモデル化してシステムの内部状態を管理し、選択されると自身に記述された行動を出力する要素行動と、内部状態と外部刺激とからある行動の欲求値や満足度を算出し各要素行動の行動価値を決定する行動算出部とを有する行動制御システムにおいては、要素行動を実現レベルに応じた木構造形式で構成し、木構造の上から下に、各時刻で最も行動価値(欲求、満足度)の高い行動を選択できる。即ち、ロボット装置自身が、内部状態や外部の環境に応じて、最もやりたがっている行動を選択して実行することができる。
【0054】
一方、このように最もやりたがっている行動のみを実行させるようなシステムでは、ある一つの行動を実行中に他の行動の行動価値が高くなると、実行中の行動が中断されることを許容してしまう。このように、やりたい行動が次々変わってしまうと行動の一貫性がなくなる場合がある。例えばダンスを踊るという要素行動が選択された場合、ダンスを踊るという行動の実行最中に、内部状態の一要素である「栄養状態(NOURISHMENT)」の値が低くなった場合において、例えば外部刺激として食べ物(充電ステーション等)の認識情報が供給されると、例えば「食べる」という要素行動の欲求が高くなり、これが選択されてしまうことになり、ロボット装置は、ダンスを踊る行動を中断して、「食べる」という行動を実行してしまう。又は、内部状態「栄養状態」の値が低くなり、且つ周囲に充電ステーション等が見つからないような場合、ダンスを踊る行動を中断して「充電ステーションを探しにいく」等の行動を実行してしまう場合がある。
【0055】
そこで、例えば「ダンスを踊る」という行動を一旦始めたら最後まで踊る等、ある行動が正常に終了するまで他の行動に割り込ませにくくする(行動の一貫性を高める)ことができると更に人間らしい行動となり、より一層の親近感や満足感をユーザに与えることができる。以下では、ロボット装置に行動の一貫性を持たせるための2つの行動制御方法について説明する。
【0056】
(1−1)第1の行動制御方法:実行中以外の行動の抑制
上述の図6に示したように、行動価値評価部120は、所定のタイミングで各要素行動の行動価値ALを算出する。行動選択部130は、最も高い行動価値ALを有する最上位の要素行動を選択するが、このような行動価値ALの算出、即ち要素行動の選択は行動実行中にも行われる。従って、上述したように、行動実行中において、他の要素行動の行動価値ALが上昇した場合、行動選択部130は、実行中以外の要素行動を選択してしまう場合があり、その場合にはロボット装置は、実行中の行動を一旦停止し、行動価値より高い要素行動が優先的に選択され、その行動が出力される。これが頻繁に続くとロボット装置の行動に一貫性がないように見えてしまう。そこで、本実施の形態におけるロボット装置は、このような行動選択のチャタリングを防止し、行動に一貫性を持たせ、実行中の行動の一旦停止を抑制するための行動制御部140を備える。
【0057】
即ち、図6に示すようにして、行動価値ALは所定のタイミングで最下位の要素行動のうち最も高い行動価値が最上位のルートの要素行動に渡される。そして、行動選択部130に、ルートの各要素行動の行動価値ALが所定のタイミングで伝えられ、最も高い行動価値ALを有するルートの要素行動が選択される。
【0058】
行動抑制部140は、実行中の要素行動が、他の要素行動が実行されることにより容易に中断されないようにするため、実行中以外の子要素行動の行動価値ALに抑制(Inhibition)を加えるよう、実行中の子要素行動を有する親要素行動の行動価値評価部を制御するものである。
【0059】
具体的には、子供の要素行動を有する親の要素行動は、子供の要素行動の行動価値を受取る際、実行中の子供の要素行動の行動価値はそのままとし、実行中以外の他の子供の要素行動から渡される行動価値ALの値は抑制する処理をし、その後、それら値の中で最大のものを自身の行動価値とする。
【0060】
次に、このような処理についての具体的な例について説明する。図7(a)乃至図7(e)は、2層のスキーマツリーにおいて、ある時刻(タイミング)における行動価値算出例及び行動選択例を示す模式図であって、スキーマツリーは、ルート要素行動となる最上位の親要素行動Dと、最下層の子要素行動A〜Dとから構成されている。
【0061】
そして、図7(a)に示すように、ある時刻t1において、子要素行動A、B、Cが内部状態及び外部刺激に基づき算出した行動価値が夫々AL_A=40、AL_B=50、AL_C=60であったとする。親要素行動Dは、いずれの子要素行動も実行中でない場合は、子要素行動A、B、Cの行動価値をそのまま受け取り、その中で最も高い値を自身の行動価値とするため、親要素行動DのAL_D=60(=AL_C)となる。
【0062】
例えば、この結果、図7(b)に示すように、親要素行動Dが実行許可を得た場合、即ち選択された場合、この実行許可を行動評価が最も高い子要素行動Cに渡し、子要素行動Cがコールされて自身の行動を出力する。そして、次の時刻t2で行動価値を算出する場合、親要素行動Dは、実行中の子要素行動Cを除き、実行中ではない子要素行動A、Bの行動価値を本来より小さくし、その後、これら値の中で最大のものを自身の行動価値とする。
【0063】
図7(c)に示す例では、時刻t2において、ロボット装置の内部状態が変化し、内部状態及び外部刺激に基づき算出された子要素行動A、B、Cの行動価値が夫々AL_A=40、AL_B=65、AL_C=60となり、子要素行動Bの行動価値が時刻t1のときよりも上昇したとする。この場合、子要素行動Bの行動価値が子要素行動A、B、Cの中で最大であるが、行動実行中ではないため、−10の値が減算され、親要素行動Dが評価する際には子要素行動Bの行動価値AL_B=55となる。このように、実行中ではない各子要素行動A、Bの行動価値は、自身が算出した本来の行動価値から−10の値が減算され夫々30、55とされ、実行中の子要素行動Cは本来の行動価値(=60)のままとされ、これらの値が比較され、その結果、時刻t1と同様、実行中の子要素行動C=60の行動価値が最も高い値とされる。こうして、親要素行動Dの行動価値は、子要素行動Cの行動価値(=60)となる。このように、実際には、子要素行動Bの行動価値(=65)が実行中の子要素行動Cの行動価値(=60)より高いものの、実行中以外の要素行動に対して抑制が加えられることにより、実行中以外の要素行動を選択されにくくする。
【0064】
更に、図7(d)に示すように、次の時刻t3において、ロボット装置の内部状態が変化し、子要素行動A、B、Cの行動価値が夫々AL_A=40、AL_B=75、AL_C=60と算出され、子要素行動Bの行動価値が時刻t2のときよりも更に上昇したとする。この場合、時刻t2と同様、子要素行動A、Bの行動価値は、実行中ではないため−10の値が減算され、夫々30、65となる。実その後、実行中の子要素行動Cの行動価値(=60)と比較されるが、−10の値とされても、子要素行動Bの行動価値(=65)の方が実行中の要素行動Cの行動価値(=60)よりも大きいため、親要素行動Dは、行動の実行権を子要素行動Bに移す。
【0065】
その結果、図7(e)に示すように、子要素行動Bが選択され、親要素行動の行動価値は、減算する前に子要素行動Bが算出した本来の行動価値AL_B=75となる。但し、図7(d)から図7(e)への変化は1回の行動価値評価、行動選択のサイクル内で行われる。即ち、時刻t2の次の行動価値評価の時刻をt3とすると、t2〜t3の間に行われるものである。
【0066】
ここで、実行中の子供の要素行動がない場合は、親要素行動は、自身の子要素行動の行動価値に対して抑制をかけることはない。図8は、3層のスキーマツリーにおける行動価値評価例及び行動選択例を示す模式図である。図8に示すように、最下層の子要素行動A、B、Cと、子要素行動E、Fとを有し、子要素行動A、B、Cは、その上層に親要素行動Dを有し、子要素行動E、Fは、その上層に親要素行動Gを有し、更に親要素行動D、Gは、その上層に最上層のルート要素行動Hを有している。子要素行動A、B、C、E、Fは、その行動価値が夫々60、65、40、67、40となっている。
【0067】
図8においては、ルート要素行動Hが実行許可を有し、下層の親要素行動Dに実行許可を渡し、親要素行動Dが下層の子要素行動Aに実行許可を渡している場合を示す。このような状態になった後、例えば時刻t4で行動価値の評価がなされた場合、親要素行動Dは、上述したように、実行中の子要素行動Aの行動価値は、子要素行動Aが本来算出した行動価値(=60)のまま、実行中ではない子要素行動B、Cの行動価値はそれぞれ−10の値を減算して夫々55、40とする。その後、親要素行動Dがこれらの行動価値を比較し、最も高い子要素行動Aの行動価値(=60)を自身の行動価値とする。
【0068】
一方、親要素行動Gは、実行中の子要素行動をもたないため、子要素行動E、Fの行動価値をそのまま受け取り、最も高い行動価値、この場合は子要素行動Eの行動価値=67を自身の行動価値とする。
【0069】
ルート要素行動Hは、これら2つの親要素行動D、Gから行動価値を渡されるが、実行中の子要素行動Aを有する親要素行動Dはそのままの行動価値(=60)とされ、実行中の子要素行動を持たない親要素行動Gの行動価値は−10の値、減算して57とされ、両者の行動価値が比較される。こうして親要素行動Dの行動価値(=60)がルート要素行動Hの行動価値となる。このように、実行中の子要素行動を持たない親要素行動の行動価値は抑制されず、そのまま上層へ渡される。
【0070】
また、実行中以外の行動が選択されないように抑制する方法としては、以下に示す方法がある。即ち、実行中以外の子要素行動の行動価値を抑制する方法としては、
要素行動の種類毎に、その行動価値から所定の値を減じる
要素行動の種類毎に、その行動価値に所定の値(0〜1)を乗じる
上記行動価値から一定値減じたり、行動価値に所定の値を乗じたりする場合において、上記所定の値は、内部状態に依存させる
等の方法があり、また、これらの所定の値は、子要素行動を選択する各親要素行動毎に設定可能である。即ち、図8においては、親要素行動D、ルート要素行動(親要素行動Dの親要素行動)Hは、いずれも子にあたる発現中ではない要素行動の行動価値から−10だけ減算するものとしたが、要素行動D、H毎に異なる値を減算するようにしてもよく、又は、減算される子要素行動が減算値を指定するようにしてもよい。
【0071】
次に、本実施の形態における発現中以外の行動の抑制方法について説明する。図9は、行動抑制の手順を示すフローチャートである。図9に示すように、親要素行動は、子要素行動の行動価値を集める(ステップSP1)。次に、行動実行中の子要素行動が存在するか否かをチェックする(ステップSP2)。ここで、実行中の要素行動が存在する場合は、実行中以外の子要素行動の行動価値から、所定の値又は子若しくは親要素行動に応じた値を減算するか1未満の値を乗ずる等して小さくする(ステップSP3)。ステップSP2で実行中の子要素行動がいた場合はステップSP3に進んだ後、またステップSP2で実行中の要素行動がいない場合は、そのままの行動価値において、最も大きい行動価値を自身(親要素行動)の行動価値とする(ステップSP4)。この親要素行動は、この親要素行動の最上位の要素行動が実行権を渡されている場合であって、その上位の親要素行動から、同層の他の親要素行動に比して行動価値が大きいと判定された場合、実行権が与えられる(ステップSP5)。そして、次のタイミングで上述のステップSP1からの処理を繰り返す。
【0072】
ここで、図9は、行動が選択・実行された後、次の行動が選択・実行されるまでの処理工程を示すものであり、この間には、ステップSP1〜ステップSP4に示すように、行動価値を下層の要素行動から上層の要素行動に渡すフェーズ(行動価値評価フェーズ)と、ステップSP5に示すように、上層の親要素行動(親スキーマ)がその下層の子要素行動(子スキーマ)を、その行動価値によって、選択・実行するフェーズ(選択・実行フェーズ)とがある。本第1の行動制御方法においては、この行動価値評価フェーズにおいて、実行中以外の要素行動の行動価値が小さくされ、比較されることにより、発現中以外の行動の行動を選択・実行しにくくすることができる。
【0073】
このような行動制御システムにおいては、行動発現中以外の行動の行動価値を本来得られる行動価値ALよりも低めに設定することで、発現中の要素行動が他の要素行動に一旦停止されにくくすることができ、内部状態の頻繁な変化による行動選択の頻繁な変化(チャタリング)を防ぐことができ、行動の一貫性を持たせることができる。
【0074】
また、各要素行動毎に個別に例えば行動価値から減じる値、行動価値に乗じる値を設定することで、行動の種類に応じてその行動の一貫性の強さ(一旦停止のされにくさ)を設定することができる。
【0075】
そして、スキーマツリーにおいて、発現中の子要素行動を有する親要素行動のみが、発現中以外の子要素行動の行動価値ALを低く設定することができ、最も高い値として得られた行動価値が、当該親要素行動によって低く設定された値であったとしても、その行動価値ALが更に上位の要素行動に渡される場合は、本来得られた行動価値の値に戻して渡されるため、ある要素行動に設定された行動の一貫性の強さは、他の要素行動の一貫性の強さに影響を及ぼすことがない。
【0076】
(1−2)第2の行動制御方法:実行中の行動の促進
上述の例においては、親要素行動の行動価値評価部が子要素行動の行動価値を参照する際、実行中のものがあれば、実行中以外の子要素行動の行動価値を本来より低く設定してから比較することで、行動の一貫性を持たせるものであったが、逆に、親要素行動の行動価値評価部が子要素行動の行動価値評価部を参照する際、実行中のものがあれば、その行動価値のみ本来より高く設定してから比較するようにしても、実行中の行動を一旦停止されにくくすることができる。
【0077】
具体的には、木構造の一層目から下に向かって行動価値の最も大きい要素行動に実行許可を渡していく際、実行中の要素行動が他の要素行動が実行することにより容易に中断されないようにするため、実行中の子供の要素行動の行動価値に一時的な賞与(ボーナス:Bonus)を加える。その後、自分の子要素行動全ての行動価値のうち最大の行動価値を有する子要素行動の本来の行動価値を自身の行動価値とし、その要素行動に実行許可を与えるものである。
【0078】
次に、このような処理についての具体的な例について説明する。図10(a)乃至図10(e)は、図7に示すスキーマツリーと同様、2層のスキーマツリーにおいて、ある時刻における行動価値算出例及び行動選択例を示す模式図であって、スキーマツリーはルート要素行動となる最上位の親要素行動Dと、最下層の子要素行動A〜Dとから構成されている。
【0079】
そして、図10(a)に示すように、ある時刻t1において、子要素行動A、B、Cが内部状態及び外部刺激に基づき算出した行動価値が夫々AL_A=40、AL_B=50、AL_C=60であったとする。親要素行動Dは、いずれの子要素行動も実行中でない場合は、子要素行動A、B、Cの行動価値をそのまま受け取り、その中で最も高い値を自身の行動価値とするため、親要素行動DのAL_D=60(=AL_C)となる。
【0080】
例えば、この結果、図10(b)に示すように、親要素行動Dが実行許可を得た場合、即ち選択された場合、この実行許可を子要素行動Cに渡し、子要素行動Cがコールされて自身の行動を出力する。そして、次の時刻t2で行動価値を算出する場合、親要素行動Dは、実行中ではない子要素行動A、Bの行動価値はそのままとし、実行中の子要素行動の行動価値のみ本来の値より大きくした後、これら値の中で最大のものを自身の行動価値とする。
【0081】
図10(c)に示す例では、時刻t2において、ロボット装置の内部状態が変化し、内部状態及び外部刺激に基づき算出された子要素行動A、B、Cの行動価値が夫々AL_A=40、AL_B=65、AL_C=60であり、子要素行動Bの行動価値が時刻t1に比して上昇したとする。この場合、子要素行動Bの行動価値が子要素行動A、B、Cの中で最大であるが、親要素行動Dが評価する際には、実行中の子要素行動Cの行動価値には+10加算され、子要素行動Cの行動価値AL_B=70となる。即ち、実行中ではない各子要素行動A、Bの行動価値は、自身が算出した本来の行動価値のままの40、65とされ、実行中の子要素行動Cは本来の行動価値に10加算された70とされ、これらの値が比較される。その結果、時刻t1と同様、実行中の子要素行動C=60が最も高い値とされ、親要素行動Dの行動価値となる。このように、実際には、子要素行動Bの行動価値(=65)が実行中の子要素行動Cの行動価値(=60)より高いものの、実行中の要素行動に対してボーナスが加えられることにより、実行中以外の要素行動を選択されにくくする。ここで、親要素行動は、比較した結果、最も高い子要素行動の行動価値を自身の行動価値とするが、その際はボーナス値を加える前の値を自身の行動価値とする。
【0082】
更に、図10(d)に示すように、次の時刻t3において、ロボット装置の内部状態が変化し、子要素行動A、B、Cの行動価値が夫々AL_A=40、AL_B=75、AL_C=60と算出され、子要素行動Bの行動価値が時刻t2より更に上昇したとする。この場合、時刻t2と同様、子要素行動A、Bの行動価値は、実行中ではないためそのままの40、75とされ、実行中の子要素行動Cの行動価値は10の値が加算されて60とされ、これらの値が比較される。この場合には、子要素行動Bの行動価値(=75)の方が、10の値が加算された実行中の要素行動Cの行動価値(=70)よりも大きいため親要素行動Dは、子要素行動Bに行動実行権を移す。
【0083】
その結果、図10(e)に示すように、子要素行動Bが選択され、親要素行動の行動価値はAL_D=75となる。但し、図10(d)から図10(e)への変化は1回の行動価値評価、行動選択のサイクル内で行われる。即ち、時刻t2の次の行動価値評価の時刻をt3とすると、t2〜t3の間に行われるものである。
【0084】
図11は、図8と同様の3層のスキーマツリーにおける行動価値評価例及び行動選択例を示す模式図である。図11においても、ルート要素行動Hが実行許可を有し、下層の親要素行動Dに実行許可を渡し、親要素行動Dが下層の子要素行動Aに実行許可を渡している場合を示す。このような状態になった後のタイミングt4で行動価値の評価がなされた場合、親要素行動Dは、上述したように、実行中の子要素行動Aの行動価値には10加算し、実行中ではない子要素行動B、Cの行動価値はそのままの値とし、これらの行動価値を比較し、最も高い行動価値を有する要素行動の本来の行動価値(=60)を自身の行動価値とする。
【0085】
一方、親要素行動Gは、実行中の子要素行動をもたないため、子要素行動E、Fの行動価値をそのまま受け取り、最も高い行動価値、この場合は子要素行動Eの行動価値=67を自身の行動価値とする。
【0086】
ルート要素行動Hは、これら2つの親要素行動D、Gから行動価値を渡されるが、実行中の子要素行動を有する親要素行動Dの行動価値には10加算し、実行中の子要素行動を持たない親要素行動Gの行動価値はそのままとした後、両者の行動価値を比較する。即ち、親要素行動Dの行動価値は本来の行動価値60に10を加算した70とされ、親要素行動Gの行動価値は、本来の行動価値67とされ、従って親要素行動Dが選択されるが、この際、ルートの要素行動Hの行動価値は親要素行動の本来の行動価値60とされる。このように、実行中の子要素行動を持たない親要素行動の行動価値は抑制されず、そのまま上層へ渡される。
【0087】
また、実行中以外の行動を実行し続けるように促進する方法としては、以下に示す方法がある。即ち、実行中の子要素行動の行動価値にボーナスを与える方法としては、
要素行動の種類毎に、その行動価値から所定の値を加算する
要素行動の種類毎に、その行動価値に1より大きい所定の値を乗じる
上記行動価値から所定の値を加算したり、行動価値に所定の値を乗じたりする場合において、上記所定の値は、内部状態に依存させる
等の方法があり、また、これらの所定の値は、子要素行動を選択する各親要素行動毎に設定可能である。
【0088】
次に、本実施の形態における実行中の行動の継続を促進方法について説明する。上述の要素行動の行動価値の評価は、子要素行動の行動価値を親要素行動が評価する際に、実行中の子要素行動の行動価値にボーナスを加えるものとして説明したが、このボーナスを加える処理は、行動価値の評価の際ではなく、行動選択の際に行うこともできる。図12は、行動促進の手順を示すフローチャートである。図12に示すように、親要素行動は、子要素行動の行動価値を集め(ステップSP11)、行動実行中の子要素行動が存在するか否かをチェックする(ステップSP12)。ここで、実行中の要素行動が存在する場合は、実行中の子要素行動の行動価値に、所定の値又は子若しくは親要素行動に応じた値を加算するか1より大きい値を乗ずる等して大きくする(ステップSP13)。ステップSP12で実行中の子要素行動が存在した場合はステップSP13に進んだ後、またステップSP12で実行中の要素行動が存在しない場合は、そのままの行動価値が親要素行動において比較され、最も大きい行動価値の本来の行動価値(ボーナスを加える前の行動価値)を自身(親要素行動)の行動価値とし、その行動価値を有する子要素行動に行動実行権を渡す(ステップS14)。なお、行動実行権を渡す親要素行動は、その上層の要素行動から実行権を渡されている場合である。そして、次の行動評価時刻のタイミングで上述のステップSP12からの処理を繰り返す。
【0089】
ここで、行動が選択・実行された後、次の行動が選択・実行される間には、上述の図9に示したように、行動価値評価フェーズと、行動選択・実行フェーズとがあり、ステップSP11に示す工程が行動価値評価フェーズであり、ステップSP12〜ステップSP14に示す工程が行動選択・実行フェーズである。即ち、図9に示す行動制御方法においては、行動評価フェーズにおいて、行動実行中以外の要素行動の行動価値を低くすることにより、実行中の行動が再び選択されやすくするものであったが、本第2の行動制御方法においては、行動選択・実行フェーズにおいて、親要素行動(親スキーマ)がその子要素行動(子スキーマ)を選択する際、即ち行動の実行権を渡す際に、行動実行中の子要素行動の行動価値にボーナスが加えられ、比較されることで、行動実行中の子要素行動が再び選択されやすくするものである。このように、行動選択・実行フェーズにおいて親要素行動が子要素行動を選択する際に限り、ボーナスを加えて行動価値を高くすることで、他の層にボーナスの影響を与えてしまうことを防ぐことができる。
【0090】
このような行動制御システムにおいては、行動実行中の行動の行動価値のみを本来得られる行動価値よりも高めに設定することで、上述の実行中以外の要素行動の実行を抑制する場合と同様に、実行中の要素行動以外の行動選択が抑制され、実行中の要素行動が他の要素行動に一旦停止されにくくすることができ、内部状態の頻繁な変化による行動選択の頻繁な変化(チャタリング)を防ぐことができ、行動の一貫性を持たせることができる。
【0091】
(2)ロボット装置の制御システムの具体例
次に、上述した行動価値ALを算出して行動を出力する処理を行う行動選択制御システムをロボット装置の制御システムに適用した具体例について詳細に説明する。図13は、上述の行動選択制御システム100を含む制御システム10の機能構成を示す模式図である。本具体例におけるロボット装置1は、上述したように、外部刺激の認識結果や内部状態の変化に応じて、行動制御を行なうことができるものである。更には、長期記憶機能を備え、外部刺激から内部状態の変化を連想記憶することにより、外部刺激の認識結果や内部状態の変化に応じて行動制御を行うことができる。
【0092】
即ち、上述したように、例えば、カメラ15から入力された画像に対して処理された色情報、形情報、顔情報等であり、より具体的には、色、形、顔、3D一般物体、ハンドジェスチャー、動き、音声、接触、匂い、味等の構成要素からなる外部刺激と、ロボット装置の身体に基づいた本能や感情等の情動を指す内部状態とに応じて行動価値ALを算出し、行動を選択(生成)して実行する。
【0093】
内部状態の本能的要素は、例えば、疲れ(fatigue)、熱あるいは体内温度(temperature)、痛み(pain)、食欲あるいは飢え(hunger)、乾き(thirst)、愛情(affection)、好奇心(curiosity)、排泄(elimination)又は性欲(sexual)のうちの少なくとも1つである。また、情動的要素は、幸せ(happiness)、悲しみ(sadness)、怒り(anger)、驚き(surprise)、嫌悪(disgust)、恐れ(fear)、苛立ち(frustration)、退屈(boredom)、睡眠(somnolence)、社交性(gregariousness)、根気(patience)、緊張(tense)、リラックス(relaxed)、警戒(alertness)、罪(guilt)、悪意(spite)、誠実さ(loyalty)、服従性(submission)又は嫉妬(jealousy)等が挙げられる。
【0094】
図示の制御システム10には、オブジェクト指向プログラミングを採り入れて実装することができる。この場合、各ソフトウェアは、データとそのデータに対する処理手続きとを一体化させた「オブジェクト」というモジュール単位で扱われる。また、各オブジェクトは、メッセージ通信と共有メモリを使ったオブジェクト間通信方法によりデータの受け渡しとInvokeを行なうことができる。
【0095】
行動制御システム10は、外部環境(Environments)70を認識するために、視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83等からなる機能モジュールである上述の外部刺激認識部80を備えている。
【0096】
視覚認識機能部(Video)81は、例えば、CCD(Charge Coupled Device:電荷結合素子)カメラのような画像入力装置を介して入力された撮影画像を基に、顔認識や色認識等の画像認識処理や特徴抽出を行う。
【0097】
また、聴覚認識機能部(Audio)82は、マイク等の音声入力装置を介して入力される音声データを音声認識して、特徴抽出したり、単語セット(テキスト)認識を行ったりする。
【0098】
更に、接触認識機能部(Tactile)83は、例えば機体の頭部等に内蔵された接触センサによるセンサ信号を認識して、「なでられた」とか「叩かれた」という外部刺激を認識する。
【0099】
内部状態管理部(ISM:Internal Status Manager)91は、本能や感情といった数種類の情動を数式モデル化して管理する感情・本能モデルを有しており、上述の視覚認識機能部81と、聴覚認識機能部82と、接触認識機能部83によって認識された外部刺激(ES:ExternalStimula)に応じてロボット装置1の本能や情動といった内部状態を管理する。
【0100】
この感情・本能モデルは、それぞれ認識結果と行動履歴を入力に持ち、夫々感情値と本能値を管理している。行動モデルは、これら感情値や本能値を参照することができる。
【0101】
また、外部刺激の認識結果や内部状態の変化に応じて行動制御を行なうために、時間の経過とともに失われる短期的な記憶を行なう短期記憶部(STM:Short Term Memory)92と、情報を比較的長期間保持するための長期記憶部(LTM:Long Term Memory)93を備えている。短期記憶と長期記憶という記憶メカニズムの分類は神経心理学に依拠する。
【0102】
短期記憶部92は、上述の視覚認識機能部81、聴覚認識機能部82及び接触認識機能部83によって外部環境から認識されたターゲットやイベントを短期間保持する機能モジュールである。例えば、図2に示すカメラ15からの入力画像を約15秒程度の短い期間だけ記憶する。
【0103】
長期記憶部93は、物の名前等学習により得られた情報を長期間保持するために使用される。長期記憶部93は、例えば、ある行動記述モジュールにおいて外部刺激から内部状態の変化を連想記憶することができる。
【0104】
また、本ロボット装置1の行動制御は、反射行動部(Reflexive Situated Behaviors Layer)103によって実現される「反射行動」と、状況依存行動階層(SBL:Situated Behaviors Layer)102によって実現される「状況依存行動」と、熟考行動階層(Deliberative Layer)101によって実現される「熟考行動」に大別される。
【0105】
反射行動部103は、上述の視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83によって認識された外部刺激に応じて反射的な機体動作を実現する機能モジュールである。反射行動とは、基本的に、センサ入力された外部情報の認識結果を直接受けて、これを分類して、出力行動を直接決定する行動のことである。例えば、人間の顔を追いかけたり、うなずいたりといった振る舞いは反射行動として実装することが好ましい。
【0106】
状況依存行動階層102は、短期記憶部92及び長期記憶部93の記憶内容や、内部状態管理部91によって管理される内部状態を基に、ロボット装置1が現在置かれている状況に即応した行動を制御する。
【0107】
この状況依存行動階層102は、各行動(要素行動)毎にステートマシンを用意しており、それ以前の行動や状況に依存して、センサ入力された外部情報の認識結果を分類して、行動を機体上で発現する。また、状況依存行動階層102は、内部状態をある範囲に保つための行動(「ホメオスタシス行動」とも呼ぶ)も実現し、内部状態が指定した範囲内を越えた場合には、その内部状態を当該範囲内に戻すための行動が出現し易くなるようにその行動を活性化させる(実際には、内部状態と外部環境の両方を考慮した形で行動が選択される)。状況依存行動は、反射行動に比し、反応時間が遅い。この状況依存行動階層102が上述した図4に示す行動選択制御システム100における要素行動132、行動価値評価部120、行動選択部130に相当し、上述した如く、内部状態と外部刺激とから行動価値ALを算出し、これに基づき行動出力を行う。
【0108】
熟考行動階層101は、短期記憶部92及び長期記憶部93の記憶内容に基づいて、ロボット装置1の比較的長期にわたる行動計画等を行う。熟考行動とは、与えられた状況あるいは人間からの命令により、推論やそれを実現するための計画を立てて行われる行動のことである。例えば、ロボット装置の位置と目標の位置から経路を探索することは熟考行動に相当する。このような推論や計画は、ロボット装置1がインタラクションを保つための反応時間よりも処理時間や計算負荷を要する(すなわち処理時間がかかる)可能性があるので、上記の反射行動や状況依存行動がリアルタイムで反応を返しながら、熟考行動は推論や計画を行う。
【0109】
熟考行動階層101、状況依存行動階層102、及び反射行動部103は、ロボット装置1のハードウェア構成に非依存の上位のアプリケーション・プログラムとして記述することができる。これに対し、ハードウェア依存層制御部(Configuration Dependent Actions And Reactions)104は、これら上位アプリケーション、即ち、行動記述モジュール(スキーマ)からの命令に応じて、関節アクチュエータの駆動等の機体のハードウェア(外部環境)を直接操作する。このような構成により、ロボット装置1は、制御プログラムに基づいて自己及び周囲の状況を判断し、使用者からの指示及び働きかけに応じて自律的に行動できる。
【0110】
次に、行動制御システム10について更に詳細に説明する。図14は、本具体例における行動制御システム10のオブジェクト構成を示す模式図である。
【0111】
図14に示すように、視覚認識機能部81は、Face Detector114、Mulit Color Tracker113、Face Identify115という3つのオブジェクトで構成される。
【0112】
Face Detector114は、画像フレーム中から顔領域を検出するオブジェクトであり、検出結果をFace Identify115に出力する。Mulit Color Tracker113は、色認識を行うオブジェクトであり、認識結果をFace Identify115及びShort Term Memory(STM)92に出力する。また、Face Identify115は、検出された顔画像を手持ちの人物辞書で検索する等して人物の識別を行ない、顔画像領域の位置、大きさ情報とともに人物のID情報をSTM92に出力する。
【0113】
聴覚認識機能部82は、Audio Recog111とSpeech Recog112という2つのオブジェクトで構成される。Audio Recog111は、マイク等の音声入力装置からの音声データを受け取って、特徴抽出と音声区間検出を行うオブジェクトであり、音声区間の音声データの特徴量及び音源方向をSpeech Recog112やSTM92に出力する。Speech Recog112は、Audio Recog111から受け取った音声特徴量と音声辞書及び構文辞書を使って音声認識を行うオブジェクトであり、認識された単語のセットをSTM92に出力する。
【0114】
触覚認識記憶部83は、接触センサからのセンサ入力を認識するTactile Sensor119というオブジェクトで構成され、認識結果はSTM92や内部状態を管理するオブジェクトであるInternal State Model(ISM)91に出力する。
【0115】
STM92は、短期記憶部を構成するオブジェクトであり、上述の認識系の各オブジェクトによって外部環境から認識されたターゲットやイベントを短期間保持(例えばカメラ15からの入力画像を約15秒程度の短い期間だけ記憶する)する機能モジュールであり、STMクライアントであるSBL102に対して外部刺激の通知(Notify)を定期的に行なう。
【0116】
LTM93は、長期記憶部を構成するオブジェクトであり、物の名前等学習により得られた情報を長期間保持するために使用される。LTM93は、例えば、ある行動記述モジュール(スキーマ)において外部刺激から内部状態の変化を連想記憶することができる。
【0117】
ISM91は、内部状態管理部を構成するオブジェクトであり、本能や感情といった数種類の情動を数式モデル化して管理しており、上述の認識系の各オブジェクトによって認識された外部刺激(ES:External Stimula)に応じてロボット装置1の本能や情動といった内部状態を管理する。
【0118】
SBL102は状況依存型行動階層を構成するオブジェクトである。SBL102は、STM92のクライアント(STMクライアント)となるオブジェクトであり、STM92からは定期的に外部刺激(ターゲットやイベント)に関する情報の通知(Notify)を受け取ると、スキーマ(Schema)すなわち実行すべき行動記述モジュールを決定する(後述)。
【0119】
ReflexiveSBL(Situated Behaviors Layer)103は、反射的行動部を構成するオブジェクトであり、上述した認識系の各オブジェクトによって認識された外部刺激に応じて反射的・直接的な機体動作を実行する。例えば、人間の顔を追いかけたり、うなずく、障害物の検出により咄嗟に避けたりといった振る舞いを行なう。
【0120】
SBL102は外部刺激や内部状態の変化等の状況に応じた動作を選択する。これに対し、ReflexiveSBL103は、外部刺激に応じて反射的な動作を選択する。これら2つのオブジェクトによる行動選択は独立して行なわれるため、互いに選択された行動記述モジュール(スキーマ)を機体上で実行する場合に、ロボット装置1のハードウェア・リソースが競合して実現不可能なこともある。RM(Resource Manager)116というオブジェクトは、SBL102とReflexiveSBL103とによる行動選択時のハードウェアの競合を調停する。そして、調停結果に基づいて機体動作を実現する各オブジェクトに通知することにより機体が駆動する。
【0121】
Sound Performer172、Motion Controller173、LEDController174は、機体動作を実現するオブジェクトである。Sound Performer172は、音声出力を行うためのオブジェクトであり、RM116経由でSBL102から与えられたテキスト・コマンドに応じて音声合成を行い、ロボット装置1の機体上のスピーカから音声出力を行う。また、Motion Controller173は、機体上の各関節アクチュエータの動作を行なうためのオブジェクトであり、RM116経由でSBL102から手や脚等を動かすコマンドを受けたことに応答して、該当する関節角を計算する。また、LEDController174は、LED19の点滅動作を行なうためのオブジェクトであり、RM116経由でSBL102からコマンドを受けたことに応答してLED19の点滅駆動を行なう。
【0122】
(5−1)状況依存行動制御
次に、上述の具体例において説明したように、行動価値ALを算出し、実行する行動を選択する状況依存行動階層について更に詳細に説明する。図15には、状況依存行動階層(SBL)(但し、反射行動部を含む)による状況依存行動制御の形態を模式的に示している。視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83からなる外部刺激認識部80における外部環境70の認識結果(センサ情報)182は、外部刺激183として状況依存行動階層(反射行動部103を含む)102aに与えられる。また、外部刺激認識部80による外部環境70の認識結果に応じた内部状態の変化184も状況依存行動階層102aに与えられる。そして、状況依存行動階層102aでは、外部刺激183や内部状態の変化184に応じて状況を判断して、行動選択を実現することができる。状況依存行動階層102aでは、上述した如く、外部刺激183や内部状態の変化184によって各行動記述モジュール(スキーマ)の行動価値ALを算出して、行動価値ALの大きさに応じてスキーマを選択して行動(動作)を実行する。行動価値ALの算出には、例えばライブラリを利用することにより、すべてのスキーマについて統一的な計算処理を行なうことができる。ライブラリには、例えば上述したように、内部状態ベクトルから欲求値ベクトルを算出する関数、内部状態ベクトルから満足度ベクトルを算出する関数、及び外部刺激から予想内部状態変化ベクトルを予想するための行動評価データベース等が保存されている。
【0123】
(5−2)スキーマ
図16には、状況依存行動階層102が複数のスキーマ121によって構成されている様子を模式的に示している。状況依存行動階層102は、上述した要素行動として、行動記述モジュールを有し、各行動記述モジュール毎にステートマシンを用意しており、それ以前の行動(動作)や状況に依存して、センサ入力された外部情報の認識結果を分類し、動作を機体上で発現する。要素行動となる行動記述モジュールは、外部刺激や内部状態に応じた状況判断を行なうMonitor機能と、行動実行に伴う状態遷移(ステートマシン)を実現するAction機能とを備えたスキーマ(Schema)121として記述される。
【0124】
状況依存行動階層102b(より厳密には、状況依存行動階層102のうち、通常の状況依存行動を制御する階層)は、複数のスキーマ121が階層的に連結されたツリー構造として構成され、外部刺激や内部状態の変化に応じてより最適なスキーマ121を統合的に判断して行動制御を行なうようになっている。このツリー122は、例えば動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリー(又は枝)を含んでいる。
【0125】
即ち上述した図5に示すように、状況依存行動階層102は、短期記憶部92から外部刺激の通知(Notify)を受けるルート・スキーマ2011、2021、2031を先頭に、抽象的な行動カテゴリから具体的な行動カテゴリに向かうように、各階層毎にスキーマが配設されている。そして図示の通り、各スキーマは外部刺激183と内部状態(の変化)184を入力している。また、各スキーマは、少なくともMonitor関数とActionと関数を備えている。
【0126】
ここで、Monitor関数とは、外部刺激183と内部状態184に応じて当該スキーマの行動価値ALを算出する関数であり、各スキーマは、このような行動価値評価手段としてのMonitor機能を有する。図22に示すようなツリー構造を構成する場合、上位(親)のスキーマは外部刺激183と内部状態184を引数として下位(子供)のスキーマのMonitor関数をコールすることができ、子供のスキーマは行動価値ALを返り値とする。また、スキーマは自分の行動価値ALを算出するために、更に子供のスキーマのMonitor関数をコールすることができる。そして、ルートのスキーマには各サブツリーからの行動価値ALが返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断することができる。ここで、ルート・スキーマを上述の行動選択部とし、これにより、スキーマを選択するようにしてもよい。なお、例えば後述するリソース・マネージャRM116や、別に設けた行動選択部により、各スキーマの行動価値ALを観察し、各行動価値ALの値に基づき行動を選択してもよいことはもちろんである。
【0127】
行動選択部では、上述したように、例えば行動価値ALが最も高いスキーマを選択したり、行動価値ALが所定の閾値を越えた2以上のスキーマを選択して並列的に行動実行するようにしてもよい(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0128】
また、Action関数は、スキーマ自身が持つ行動を記述したステートマシンを備えている。図22に示すようなツリー構造を構成する場合、親スキーマは、Action関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。本具体例では、ActionのステートマシンはReadyにならないと初期化されない。言い換えれば、中断しても状態はリセットされず、スキーマが実行中の作業データを保存することから、中断再実行が可能である。
【0129】
図17には、状況依存行動階層102において通常の状況依存行動を制御するためのメカニズムを模式的に示している。
【0130】
同図に示すように、状況依存行動階層(SBL)102には、短期記憶部(STM)92から外部刺激183が入力(Notify)されるとともに、内部状態管理部91から内部状態の変化184が入力される。状況依存行動階層102は、例えば動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリーで構成されており、ルート・スキーマは、外部刺激183の通知(Notify)に応答して、各サブツリーのMonitor関数をコールし、その返り値としての行動価値ALを参照して、統合的な行動選択を行ない、選択された行動を実現するサブツリーに対してAction関数をコールする。また、状況依存行動階層102において決定された状況依存行動は、リソース・マネージャRM116により反射行動部103による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller)に適用される。
【0131】
また、反射的行動部103は、上述した認識系の各オブジェクトによって認識された外部刺激183に応じて、例えば、障害物の検出により咄嗟に避ける等、反射的・直接的な機体動作を実行する。このため、図22に示す通常の状況依存行動を制御する場合とは相違し、図16に示すように、認識系の各オブジェクトからの信号を直接入力する複数のスキーマ132が階層化されずに並列的に配置されている。
【0132】
図18には、反射行動部103におけるスキーマの構成を模式的に示している。同図に示すように、反射行動部103には、聴覚系の認識結果に応答して動作するスキーマとしてAvoid Big Sound204、Face to Big Sound205及びNodding Sound209、視覚系の認識結果に応答して動作するスキーマとしてFace to Moving Object206及びAvoid Moving Object207、並びに、触覚系の認識結果に応答して動作するスキーマとして手を引っ込める208が、それぞれ対等な立場で(並列的に)配設されている。
【0133】
図示の通り、反射的行動を行なう各スキーマは外部刺激183を入力に持つ。また、各スキーマは、少なくともMonitor関数とAction関数を備えている。Monitor関数は、外部刺激183に応じて当該スキーマの行動価値ALを算出して、これに応じて該当する反射的行動を実行すべきかどうかが判断される。また、Action関数は、スキーマ自身が持つ反射的行動を記述したステートマシン(後述)を備えており、コールされることにより、該当する反射的行動を実行するとともにActionの状態を遷移させていく。
【0134】
図19には、反射行動部103において反射的行動を制御するためのメカニズムを模式的に示している。図18にも示したように、反射行動部103内には、反応行動を記述したスキーマや、即時的な応答行動を記述したスキーマが並列的に存在している。認識系の機能モジュール80を構成する各オブジェクトから認識結果が入力されると、対応する反射行動スキーマがAonitor関数により行動価値ALを算出し、その値に応じてActionを軌道すべきかどうかが判断される。そして、反射行動部103において起動が決定された反射的行動は、リソース・マネージャRM116により状況依存行動階層102による状況依存行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller173)に適用される。
【0135】
このような状況依存行動階層102及び反射行動部103を構成するスキーマは、例えばC++言語ベースで記述される「クラス・オブジェクト」として記述することができる。図20には、状況依存行動階層102において使用されるスキーマのクラス定義を模式的に示している。同図に示されている各ブロックはそれぞれ1つのクラス・オブジェクトに相当する。
【0136】
図示の通り、状況依存行動階層(SBL)102は、1以上のスキーマと、SBL102の入出力イベントに対してIDを割り振るEvent Data Handler(EDH)211と、SBL102内のスキーマを管理するSchema Handler(SH)212と、外部オブジェクト(STMやLTM、リソース・マネージャ、認識系の各オブジェクト等)からデータを受信する1以上のReceive Data Handler(RDH)213と、外部オブジェクトにデータを送信する1以上のSend Data Handler(SDH)214とを備えている。
【0137】
Schema Handler212は、状況依存行動階層(SBL)102や反射行動部103を構成する各スキーマやツリー構造等の情報(SBLのコンフィギュレーション情報)をファイルとして保管している。例えばシステムの起動時等に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、図22に示したような状況依存行動階層102のスキーマ構成を構築(再現)して、メモリ空間上に各スキーマのエンティティをマッピングする。
【0138】
各スキーマは、スキーマのベースとして位置付けられるOpenR_Guest215を備えている。OpenR_Guest215は、スキーマが外部にデータを送信するためのDsubject216、並びに、スキーマが外部からデータを受信するためのDObject217というクラス・オブジェクトをそれぞれ1以上備えている。例えば、スキーマが、SBL102の外部オブジェクト(STMやLTM、認識系の各オブジェクト等)にデータを送るときには、Dsubject216はSend Data Handler214に送信データを書き込む。また、DObject217は、SBL102の外部オブジェクトから受信したデータをReceive Data Handler213から読み取ることができる。
【0139】
Schema Manager218及びSchema Base219は、ともにOpenR_Guest215を継承したクラス・オブジェクトである。クラス継承は、元のクラスの定義を受け継ぐことであり、この場合、OpenR_Guest215で定義されているDsubject216やDObject217等のクラス・オブジェクトをSchema Manager Base218やSchema Base219も備えていることを意味する(以下、同様)。例えば図22に示すように複数のスキーマがツリー構造になっている場合、Schema Manager Base218は、子供のスキーマのリストを管理するクラス・オブジェクトSchema List220を持ち(子供のスキーマへのポインタを持ち)、子供スキーマの関数をコールすることができる。また、Schema Base219は、親スキーマへのポインタを持ち、親スキーマからコールされた関数の返り値を戻すことができる。
【0140】
Schema Base219は、State Machine221及びPronome222という2つのクラス・オブジェクトを持つ。State Machine221は当該スキーマの行動(Action関数)についてのステートマシンを管理している。親スキーマは子供スキーマのAction関数のステートマシンを切り替える(状態遷移させる)ことができる。また、Pronome222には、当該スキーマが行動(Action関数)を実行又は適用するターゲットを代入する。後述するように、スキーマはPronome222に代入されたターゲットによって占有され、行動(動作)が終了(完結、異常終了等)するまでスキーマは解放されない。新規のターゲットのために同じ行動を実行するためには同じクラス定義のスキーマをメモリ空間上に生成する。この結果、同じスキーマをターゲット毎に独立して実行することができ(個々のスキーマの作業データが干渉し合うことはなく)、後述する行動のReentrance性が確保される。
【0141】
Parent Schema Base223は、Schema Manager218及びSchema Base219を多重継承するクラス・オブジェクトであり、スキーマのツリー構造において、当該スキーマ自身についての親スキーマ及び子供スキーマすなわち親子関係を管理する。
【0142】
Intermediate Parent Schema Base224は、Parent Schema Base223を継承するクラス・オブジェクトであり、各クラスのためのインターフェース変換を実現する。また、Intermediate Parent Schema Base224は、Schema Status Info225を持つ。このSchema Status Info225は、当該スキーマ自身のステートマシンを管理するクラス・オブジェクトである。親スキーマは、子供スキーマのAction関数をコールすることによってそのステートマシンの状態を切り換えることができる。また、子供スキーマのMonitor関数をコールしてそのステートマシンの常態に応じた行動価値ALを問うことができる。但し、スキーマのステートマシンは、前述したAction関数のステートマシンとは異なるということを留意されたい。
【0143】
And Parent Schema226、Num Or Parent Schema227、Or Parent Schema228は、Intermediate Parent Schema Base224を継承するクラス・オブジェクトである。And Parent Schema226は、同時実行する複数の子供スキーマへのポインタを持つ。Or Parent Schema228は、いずれか択一的に実行する複数の子供スキーマへのポインタを持つ。また、Num Or Parent Schema227は、所定数のみを同時実行する複数の子供スキーマへのポインタを持つ。
【0144】
Parent Schema229は、これらAnd Parent Schema226、Num Or Parent Schema227、Or Parent Schema228を多重継承するクラス・オブジェクトである。
【0145】
図21には、状況依存行動階層(SBL)102内のクラスの機能的構成を模式的に示している。状況依存行動階層(SBL)102は、STMやLTM、リソース・マネージャ、認識系の各オブジェクト等外部オブジェクトからデータを受信する1以上のReceive Data Handler(RDH)213と、外部オブジェクトにデータを送信する1以上のSend Data Handler(SDH)214とを備えている。
【0146】
Event Data Handler(EDH)211は、SBL102の入出力イベントに対してIDを割り振るためのクラス・オブジェクトであり、RDH213やSDH214から入出力イベントの通知を受ける。
【0147】
Schema Handler212は、スキーマ132を管理するためのクラス・オブジェクトであり、SBL102を構成するスキーマのコンフィギュレーション情報をファイルとして保管している。例えばシステムの起動時等に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、SBL102内のスキーマ構成を構築する。
【0148】
各スキーマは、図20に示したクラス定義に従って生成され、メモリ空間上にエンティティがマッピングされる。各スキーマは、OpenR_Guest215をベースのクラス・オブジェクトとし、外部にデータ・アクセスするためのDSubject216やDObject217等のクラス・オブジェクトを備えている。
【0149】
スキーマ132が主に持つ関数とステートマシンを以下に示しておく。以下の関数は、Schema Base219で記述されている。
ActivationMonitor():スキーマがReady時にActiveになるための評価関数
Actions():Active時の実行用ステートマシン
Goal():Active時にスキーマがGoalに達したかを評価する関数
Fail():Active時にスキーマがfail状態かを判定する関数
SleepActions():Sleep前に実行されるステートマシン
SleepMonitor():Sleep時にResumeするための評価関数
ResumeActions():Resume前にResumeするためのステートマシン
DestroyMonitor():Sleep時にスキーマがfail状態か判定する評価関数
MakePronome():ツリー全体のターゲットを決定する関数
【0150】
(5−3)状況依存行動階層の機能
状況依存行動階層(SBL)102は、短期記憶部92及び長期記憶部93の記憶内容や、内部状態管理部91によって管理される内部状態を基に、ロボット装置1が現在置かれている状況に即応した動作を制御する。
【0151】
前項で述べたように、本具体例における状況依存行動階層102は、スキーマのツリー構造(図22を参照のこと)で構成されている。各スキーマは、自分の子供と親の情報を知っている状態で独立性を保っている。このようなスキーマ構成により、状況依存行動階層102は、Concurrentな評価、Concurrentな実行、Preemption、Reentrantという主な特徴を持っている。以下、これらの特徴について詳解する。
【0152】
(5−3−1)Concurrentな評価:
行動記述モジュールとしてのスキーマは外部刺激や内部状態の変化に応じた状況判断を行なうMonitor機能を備えていることは既に述べた。Monitor機能は、スキーマがクラス・オブジェクトSchema BaseでMonitor関数を備えていることにより実装されている。Monitor関数とは、外部刺激と内部状態に応じて当該スキーマの行動価値ALを算出する関数である。
【0153】
図22に示すようなツリー構造を構成する場合、上位(親)のスキーマは外部刺激183と内部状態の変化184を引数として下位(子供)のスキーマのMonitor関数をコールすることができ、子供のスキーマは行動価値ALを返り値とする。また、スキーマは自分の行動価値ALを算出するために、更に子供のスキーマのMonitor関数をコールすることができる。そして、ルートのスキーマ2011〜2031には各サブツリーからの行動価値ALが返されるので、外部刺激183と内部状態の変化184に応じた最適なスキーマすなわち動作を統合的に判断することができる。
【0154】
このようにツリー構造になっていることから、外部刺激183と内部状態の変化184による各スキーマの評価は、まずツリー構造の下から上に向かってConcurrentに行なわれる。即ち、スキーマに子供スキーマがある場合には、選択した子供のMonitor関数をコールしてから、自身のMonitor関数を実行する。次いで、ツリー構造の上から下に向かって評価結果としての実行許可を渡していく。評価と実行は、その動作が用いるリソースの競合を解きながら行なわれる。
【0155】
本具体例における状況依存行動階層102は、スキーマのツリー構造を利用して、並列的に行動の評価を行なうことができるので、外部刺激183や内部状態の変化184等の状況に対しての適応性がある。また、評価時には、ツリー全体に関しての評価を行ない、このとき算出される行動価値ALによりツリーが変更されるので、スキーマすなわち実行する動作を動的にプライオリタイズすることができる。
【0156】
(5−3−2)Concurrentな実行:
ルートのスキーマには各サブツリーからの行動価値ALが返されるので、外部刺激183と内部状態の変化184に応じた最適なスキーマすなわち動作を統合的に判断することができる。例えば行動価値ALが最も高いスキーマを選択したり、行動価値ALが所定の閾値を越えた2以上のスキーマを選択して並列的に行動実行するようにしてもよい(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0157】
選択され、実行許可をもらったスキーマは実行される。すなわち、実際にそのスキーマは更に詳細の外部刺激183や内部状態の変化184を観測して、コマンドを実行する。実行に関しては、ツリー構造の上から下に向かって順次すなわちConcurrentに行なわれる。即ち、スキーマに子供スキーマがある場合には、子供のActions関数を実行する。
【0158】
Action関数は、スキーマ自身が持つ行動(動作)を記述したステートマシンを備えている。図22に示すようなツリー構造を構成する場合、親スキーマは、Action関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。
【0159】
本具体例における状況依存行動階層(SBL)102は、スキーマのツリー構造を利用して、リソースが競合しない場合には、余ったリソースを使う他のスキーマを同時に実行することができる。但し、Goalまでに使用するリソースに対して制限を加えないと、ちぐはぐな行動出現が起きる可能性がある。状況依存行動階層102において決定された状況依存行動は、リソース・マネージャにより反射行動部(ReflexiveSBL)103による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller)に適用される。
【0160】
(5−3−3)Preemption:
1度実行に移されたスキーマであっても、それよりも重要な(優先度の高い)行動があれば、スキーマを中断してそちらに実行権を渡さなければならない。また、より重要な行動が終了(完結又は実行中止等)したら、元のスキーマを再開して実行を続けることも必要である。
【0161】
このような優先度に応じたタスクの実行は、コンピュータの世界におけるOS(オペレーティング・システム)のPreemptionと呼ばれる機能に類似している。OSでは、スケジュールを考慮するタイミングで優先度のより高いタスクを順に実行していくという方針である。
【0162】
これに対し、本具体例におけるロボット装置1の制御システム10は、複数のオブジェクトにまたがるため、オブジェクト間での調停が必要になる。例えば反射行動を制御するオブジェクトである反射行動部103は、上位の状況依存行動を制御するオブジェクトである状況依存行動階層102の行動評価を気にせずに物を避けたり、バランスをとったりする必要がある。これは、実際に実行権を奪い取り実行を行なう訳であるが、上位の行動記述モジュール(SBL)に、実行権利が奪い取られたことを通知して、上位はその処理を行なうことによってPreemptiveな能力を保持する。
【0163】
また、状況依存行動層102内において、外部刺激183と内部状態の変化184に基づく行動価値ALの評価の結果、あるスキーマに実行許可がなされたとする。更に、その後の外部刺激183と内部状態の変化184に基づく行動価値ALの評価により、別のスキーマの重要度の方がより高くなったとする。このような場合、実行中のスキーマのActions関数を利用してSleep状態にして中断することにより、Preemptiveな行動の切り替えを行なうことができる。
【0164】
実行中のスキーマのActions()の状態を保存して、異なるスキーマのActions()を実行する。また、異なるスキーマのActions()が終了した後、中断されたスキーマのActions()を再度実行することができる。
【0165】
また、実行中のスキーマのActions()を中断して、異なるスキーマに実行権が移動する前に、SleepActions()を実行する。例えば、ロボット装置1は、対話中にサッカーボールを見つけると、「ちょっと待ってね」と言って、サッカーすることができる。
【0166】
(5−3−4)Reentrant:
状況依存行動階層102を構成する各スキーマは、一種のサブルーチンである。スキーマは、複数の親からコールされた場合には、その内部状態を記憶するために、それぞれの親に対応した記憶空間を持つ必要がある。
【0167】
これは、コンピュータの世界では、OSが持つReentrant性に類似しており、本明細書ではスキーマのReentrant性と呼ぶ。図21に示したように、スキーマ132はクラス・オブジェクトで構成されており、クラス・オブジェクトのエンティティすなわちインスタンスをターゲット(Pronome)毎に生成することによりReentrant性が実現される。
【0168】
スキーマのReentrant性について、図22を参照しながらより具体的に説明する。Schema Handler212は、スキーマを管理するためのクラス・オブジェクトであり、SBL102を構成するスキーマのコンフィギュレーション情報をファイルとして保管している。システムの起動時に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、SBL102内のスキーマ構成を構築する。図22に示す例では、Eat221やDialog222等の行動(動作)を規定するスキーマのエンティティがメモリ空間上にマッピングされているとする。
【0169】
ここで、外部刺激183と内部状態の変化184に基づく行動価値ALの評価により、スキーマDialog222に対してAというターゲット(Pronome)が設定されて、Dialog222が人物Aとの対話を実行するようになったとする。
【0170】
そこに、人物Bがロボット装置1と人物Aとの対話に割り込み、その後、外部刺激183と内部状態の変化184に基づく行動価値ALの評価を行なった結果、Bとの対話を行なうスキーマ223の方がより優先度が高くなったとする。
【0171】
このような場合、Schema Handler212は、Bとの対話を行なうためのクラス継承した別のDialogエンティティ(インスタンス)をメモリ空間上にマッピングする。別のDialogエンティティを使用して、先のDialogエンティティとは独立して、Bとの対話を行なうことから、Aとの対話内容は破壊されずに済む。従って、DialogAはデータの一貫性を保持することができ、Bとの対話が終了すると、Aとの対話を中断した時点から再開することができる。
【0172】
Readyリスト内のスキーマは、その対象物(外部刺激183)に応じて評価すなわち行動価値ALの計算が行なわれ、実行権が引き渡される。その後、Readyリスト内に移動したスキーマのインスタンスを生成して、これ以外の対象物に対して評価を行なう。これにより、同一のスキーマをactive又はsleep状態にすることができる。
【0173】
以上のような制御システムを実現する制御プログラムは、上述したように、予めフラッシュROM23に格納されており、ロボット装置1の電源投入初期時において読み出される。このようにしてこのロボット装置1においては、自己及び周囲の状況や、使用者からの指示及び働きかけに応じて自律的に行動し得るようになされている。
【0174】
【発明の効果】
以上詳細に説明したように本発明に係るロボット装置は、内部状態及び外部刺激に基づき自律的に行動を選択し発現するロボット装置において、行動が記述され、その実現レベルに応じて木構造に構成された複数の行動記述モジュールと、上記内部状態及び外部刺激から上記複数の行動記述モジュールに記述された各行動の行動価値を所定のタイミングで算出する行動価値評価手段と、上記木構造の上層から下層へ上記行動価値が高い順に上記行動を選択して発現させる行動選択手段と、上記発現中の行動が存在する場合、当該発現中の行動以外の行動の選択が抑制されるよう上記行動価値評価手段を制御する行動制御手段とを有するので、実行中の行動以外の行動の選択が抑制されるため、例えば実行中の行動以外の行動価値を低くしたり、実行中の行動の行動価値を高くしたりして、内部状態及び外部刺激の変化に応じて実行中以外の行動を選択させないようにして行動選択の頻繁な変化(チャタリング)を防ぐことができ、行動の一貫性を持たせることができる。
【図面の簡単な説明】
【図1】本発明の実施の形態のロボット装置の外観を示す斜視図である。
【図2】本発明の実施の形態におけるロボット装置の機能構成を模式的に示すブロック図である。
【図3】本発明の実施の形態における制御ユニットの構成を更に詳細に示すブロック図である。
【図4】本発明の実施の形態におけるロボット装置の制御システムにおいて、各行動に対応する行動価値を算出してこれに基づき行動出力する処理を行う行動選択制御システム部分を示す模式図である。
【図5】本発明の実施の形態におけるスキーマツリーにより構成される行動制御システムを示す模式図である。
【図6】本発明の実施の形態における3層の木構造を有する行動制御システム(行動出力部)の行動価値評価算出及び行動実行の例を示す模式図である。
【図7】(a)乃至(d)は、本発明の実施の形態における2層のスキーマツリーのあるタイミングにおける行動価値算出例及び行動選択例を示す模式図である。
【図8】本発明の実施の形態における3層のスキーマツリーにおける行動価値評価例及び行動選択例を示す模式図である。
【図9】本発明の実施の形態における行動実行中以外の行動の実行を抑制する手順を示すフローチャートである。
【図10】(a)乃至(e)は、本発明の実施の形態における2層のスキーマツリーのタイミングにおける行動価値算出例及び行動選択例を示す模式図である。
【図11】本発明の実施の形態における3層のスキーマツリーにおける行動価値評価例及び行動選択例を示す模式図である。
【図12】本発明の具体例におけるロボット装置の行動制御システムの機能構成を示す模式図である。
【図13】本発明の具体例における行動制御システムのオブジェクト構成を示す模式図である。
【図14】本発明の具体例における状況依存行動階層による状況依存行動制御の形態を示す模式図である。
【図15】状況依存行動階層が複数のスキーマによって構成されている様子を示す模式図である。
【図16】状況依存行動階層におけるスキーマのツリー構造を示す模式図である。
【図17】状況依存行動階層において通常の状況依存行動を制御するためのメカニズムを示す模式図である。
【図18】反射行動部におけるスキーマの構成を示す模式図である。
【図19】反射行動部により反射的行動を制御するためのメカニズムを示す模式図である。
【図20】状況依存行動階層において使用されるスキーマのクラス定義を示す模式図である。
【図21】状況依存行動階層内のクラスの機能的構成を示す模式図である。
【図22】スキーマのReentrant性を説明する図である。
【符号の説明】
1 ロボット装置、10 制御システム、15 CCDカメラ、16 マイクロフォン、17 スピーカ、18 タッチ・センサ、19 LEDインジケータ、20 制御部、21 CPU、22 RAM、23 ROM、24 不揮発メモリ、25 インターフェース、26 無線通信インターフェース、27 ネットワーク・インターフェース・カード、28 バス、29 キーボード、40 入出力部、50 駆動部、51 モータ、52 エンコーダ、53 ドライバ、81 視覚認識機能部、82 聴覚認識機能部、83 接触認識機能部、91 内部状態管理部、92 短期記憶部(STM)、93 長期記憶部(LTM)、100 行動選択制御システム、101 熟考行動階層、102 状況依存行動階層(SBL)、103 反射行動部、110 行動出力部、120 行動価値評価部、130 行動選択部、132 要素行動、140 行動制御部
Claims (19)
- 内部状態及び外部刺激に基づき自律的に行動を選択し発現するロボット装置において、
行動が記述された複数の行動記述モジュールと、
上記内部状態及び外部刺激から上記複数の行動記述モジュールに記述された各行動の行動価値を所定のタイミングで評価する行動価値評価手段と、
上記各行動の行動価値に基づき行動を選択して発現させる行動選択手段と、
上記発現中の行動が存在する場合、当該発現中の行動以外の行動の選択が抑制されるよう上記行動価値評価手段を制御する行動制御手段と
を有することを特徴とするロボット装置。 - 上記行動選択手段は、上記各行動のうち最も高い行動価値を有する行動を選択して発現させるものであり、
上記行動価値評価手段は、上記発現中の行動以外の行動の行動価値を本来算出する行動価値よりも低く評価する
ことを特徴とする請求項1記載のロボット装置。 - 上記複数の行動記述モジュールは、その実現レベルに応じて木構造に構成され、
上記行動価値評価手段は、上記木構造の最下層から最上層の順に各行動の行動価値を評価する
ことを特徴とする請求項1記載のロボット装置。 - 上記行動記述モジュールが下層に行動記述モジュールを有する場合、当該行動記述モジュールは、上記行動価値評価手段の評価結果に基づき、下層の行動記述モジュールの行動価値のうち、最も大きな値を自身の行動価値とする
ことを特徴とする請求項1記載のロボット装置。 - 上記行動選択手段は、上記木構造の最上層の行動記述モジュールに、行動を出力する権利である行動実行権を渡し、
上記木構造の上記最上層の行動記述モジュールから下層へ上記行動実行権が順次渡される
ことを特徴とする請求項1記載のロボット装置。 - 上記行動価値評価手段は、上記実行中の行動以外の行動の行動価値を該行動の種類に応じて異なる割合で上記本来算出する行動価値よりも低く算出する
ことを特徴とする請求項2記載のロボット装置。 - 上記行動価値評価手段は、上記発現中の行動以外の行動の行動価値を、上記内部状態及び/又は外部刺激に基づき本来算出する行動価値よりも低く算出する
ことを特徴とする請求項2記載のロボット装置。 - 上記行動選択手段は、上記各行動のうち最も高い行動価値を有する行動を選択して発現させるものであり、
上記行動価値評価手段は、上記発現中の行動の行動価値を本来算出する行動価値より高く算出する
ことを特徴とする請求項1記載のロボット装置。 - 上記行動価値評価手段は、上記発現中の行動の行動価値を、その種類に応じた割合で上記本来算出する行動価値よりも高く算出する
ことを特徴とする請求項8記載のロボット装置。 - 内部状態及び外部刺激に基づき自律的に行動を選択し発現するロボット装置の行動制御方法において、
上記内部状態及び外部刺激から複数の行動記述モジュールに記述された各行動の行動価値を所定のタイミングで算出する行動価値評価工程と、
上記各行動の行動価値に基づき行動を選択して発現させる行動選択工程と、
上記発現中の行動が存在する場合、当該発現中の行動以外の行動の選択が抑制されるよう制御する行動制御工程と
を有することを特徴とするロボット装置の行動制御方法。 - 上記行動価値評価工程では、上記発現中の行動以外の行動の行動価値が本来算出する行動価値よりも低く算出され、
上記行動選択工程では、上記各行動のうち最も高い行動価値を有する行動が選択され発現させられる
ことを特徴とする請求項10記載のロボット装置の行動制御方法。 - 上記行動価値評価工程では、その実現レベルに応じて木構造に構成された複数の行動記述モジュールの最下層から最上層の順に、各行動の行動価値が評価される
ことを特徴とする請求項10記載のロボット装置の行動制御方法。 - 上記行動記述モジュールが下層に行動記述モジュールを有する場合、当該行動記述モジュールは、下層の行動記述モジュールの行動価値のうち、最も大きな値を自身の行動価値とする
ことを特徴とする請求項10記載のロボット装置の行動制御方法。 - 上記行動選択工程では、上記木構造の最上層の行動記述モジュールに行動を出力する権利である行動実行権が渡され、
上記木構造の上記最上層の行動記述モジュールから下層へ上記行動実行権が順次渡される
ことを特徴とする請求項10記載のロボット装置の行動制御方法。 - 上記行動価値評価工程では、上記実行中の行動以外の行動の行動価値が該行動の種類に応じて異なる割合で上記本来算出する行動価値よりも低く算出される
ことを特徴とする請求項11記載のロボット装置の行動制御方法。 - 上記行動価値評価工程では、上記発現中の行動以外の行動の行動価値が、上記内部状態及び/又は外部刺激に基づき本来算出する行動価値よりも低く算出される
ことを特徴とする請求項11記載のロボット装置の行動制御方法。 - 上記行動選択工程では、上記各行動のうち最も高い行動価値を有する行動が選択され発現させられるものであり、
上記行動価値評価工程では、上記発現中の行動の行動価値が本来算出する行動価値より高く算出される
ことを特徴とする請求項10記載のロボット装置の行動制御方法。 - 上記行動価値評価工程では、上記発現中の行動の行動価値が、その種類に応じた割合で上記本来算出する行動価値よりも高く算出される
ことを特徴とする請求項17記載のロボット装置の行動制御方法。 - 内部状態及び外部刺激に基づき自律的に行動を選択し発現する動作をコンピュータに実行させるためのプログラムにおいて、
上記内部状態及び外部刺激から複数の行動記述モジュールに記述された各行動の行動価値を所定のタイミングで算出する行動価値評価工程と、
上記各行動の行動価値に基づき行動を選択して発現させる行動選択工程と、
上記発現中の行動が存在する場合、当該発現中の行動以外の行動の選択が抑制されるよう制御する行動制御工程と
を有することを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003079147A JP2004283960A (ja) | 2003-03-20 | 2003-03-20 | ロボット装置、その行動制御方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003079147A JP2004283960A (ja) | 2003-03-20 | 2003-03-20 | ロボット装置、その行動制御方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004283960A true JP2004283960A (ja) | 2004-10-14 |
Family
ID=33293346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003079147A Withdrawn JP2004283960A (ja) | 2003-03-20 | 2003-03-20 | ロボット装置、その行動制御方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004283960A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100909532B1 (ko) | 2007-02-07 | 2009-07-27 | 삼성전자주식회사 | 소프트웨어 로봇의 행동 학습 방법 및 장치 |
US7984013B2 (en) | 2007-02-07 | 2011-07-19 | Samsung Electronics Co., Ltd | Method and apparatus for learning behavior in software robot |
JP2012066376A (ja) * | 2010-09-22 | 2012-04-05 | Gm Global Technology Operations Inc | 1つ以上の人間型ロボットの同時経路検討 |
-
2003
- 2003-03-20 JP JP2003079147A patent/JP2004283960A/ja not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100909532B1 (ko) | 2007-02-07 | 2009-07-27 | 삼성전자주식회사 | 소프트웨어 로봇의 행동 학습 방법 및 장치 |
US7984013B2 (en) | 2007-02-07 | 2011-07-19 | Samsung Electronics Co., Ltd | Method and apparatus for learning behavior in software robot |
JP2012066376A (ja) * | 2010-09-22 | 2012-04-05 | Gm Global Technology Operations Inc | 1つ以上の人間型ロボットの同時経路検討 |
US8731714B2 (en) | 2010-09-22 | 2014-05-20 | GM Global Technology Operations LLC | Concurrent path planning with one or more humanoid robots |
DE102011113590B4 (de) * | 2010-09-22 | 2015-06-25 | GM Global Technology Operations LLC (n. d. Ges. d. Staates Delaware) | Planen simultaner Pfade mit einem oder mehreren humanoiden Robotern |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004268235A (ja) | ロボット装置、その行動制御方法及びプログラム | |
US7363108B2 (en) | Robot and control method for controlling robot expressions | |
KR101137205B1 (ko) | 로봇의 행동 제어 시스템 및 행동 제어 방법, 및 로봇 장치 | |
JP4244812B2 (ja) | 行動制御システム及びロボット装置の行動制御方法 | |
JP2005193331A (ja) | ロボット装置及びその情動表出方法 | |
US8145492B2 (en) | Robot behavior control system and method, and robot apparatus | |
US7076331B1 (en) | Robot, method of robot control, and program recording medium | |
JP2002301674A (ja) | 脚式移動ロボット及びその運動教示方法、並びに記憶媒体 | |
JP2006110707A (ja) | ロボット装置 | |
JP3558222B2 (ja) | ロボットの行動制御システム及び行動制御方法、並びにロボット装置 | |
JP2007125631A (ja) | ロボット装置及びその行動制御方法 | |
JP2004283958A (ja) | ロボット装置、その行動制御方法及びプログラム | |
JP2003111981A (ja) | ロボット装置及びその制御方法、ロボットのための情報提供システム及び情報提供方法、並びに記憶媒体 | |
JP2004283960A (ja) | ロボット装置、その行動制御方法、及びプログラム | |
JP4552465B2 (ja) | 情報処理装置、ロボット装置の行動制御方法、ロボット装置及びコンピュータ・プログラム | |
JP2007125629A (ja) | ロボット装置及びその行動制御方法 | |
JP4147960B2 (ja) | ロボット装置、及びロボット装置の動作制御方法 | |
JP2004283957A (ja) | ロボット装置、その制御方法、及びプログラム | |
JP2004114285A (ja) | ロボット装置及びその行動制御方法 | |
JP2005059186A (ja) | ロボット装置及びその制御方法 | |
JP2005321954A (ja) | ロボット装置、情報処理システム及び情報処理方法、並びにコンピュータ・プログラム | |
JP2004209599A (ja) | ロボット装置、ロボット装置の行動学習方法、ロボット装置の行動生成方法 | |
JP2001157980A (ja) | ロボット装置及びその制御方法 | |
JP2005193330A (ja) | ロボット装置及びその情動表出方法 | |
JP2004291147A (ja) | ロボットの行動制御システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060606 |