JP2004283957A - ロボット装置、その制御方法、及びプログラム - Google Patents
ロボット装置、その制御方法、及びプログラム Download PDFInfo
- Publication number
- JP2004283957A JP2004283957A JP2003079144A JP2003079144A JP2004283957A JP 2004283957 A JP2004283957 A JP 2004283957A JP 2003079144 A JP2003079144 A JP 2003079144A JP 2003079144 A JP2003079144 A JP 2003079144A JP 2004283957 A JP2004283957 A JP 2004283957A
- Authority
- JP
- Japan
- Prior art keywords
- schema
- value
- frustration
- action
- internal state
- 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
Landscapes
- Manipulator (AREA)
Abstract
【課題】行動の発現中においても、外部環境及び自身の内部状態を考慮することができ、これを行動に反映させ多彩な行動バリエーションを持たせ、更にエンターテイメント性を向上する。
【解決手段】ロボット装置は、所定の機体動作が記述され、該動作の終了条件を有する複数のスキーマA、B及びC、Dを有する。これらのスキーマは、自身の動作の発現優先度を示すアクティベーションレベル(AL)と、動作が発現されてからの経過時間に応じて変動するフラストレーション値とを算出し、動作を終了することで、所定の内部状態(欲求)を満たす。例えばスキーマAが選択されて、所定の許容時間t1を過ぎても上記終了条件を満たさない場合、経過時間に応じてフラストレーション値Fが上昇する。スキーマAは、Fが閾値Fthを超えると、時間t2の間はその選択が禁止され、スキーマAと同一の欲求αを有するスキーマBが選択され代わりの動作が発現される。
【選択図】 図18
【解決手段】ロボット装置は、所定の機体動作が記述され、該動作の終了条件を有する複数のスキーマA、B及びC、Dを有する。これらのスキーマは、自身の動作の発現優先度を示すアクティベーションレベル(AL)と、動作が発現されてからの経過時間に応じて変動するフラストレーション値とを算出し、動作を終了することで、所定の内部状態(欲求)を満たす。例えばスキーマAが選択されて、所定の許容時間t1を過ぎても上記終了条件を満たさない場合、経過時間に応じてフラストレーション値Fが上昇する。スキーマAは、Fが閾値Fthを超えると、時間t2の間はその選択が禁止され、スキーマAと同一の欲求αを有するスキーマBが選択され代わりの動作が発現される。
【選択図】 図18
Description
【0001】
【発明の属する技術分野】
本発明は、ロボット装置、その制御方法及びプログラムに関し、特に、人間や動物を模倣したエンターテイメント性を有するロボット装置、その制御方法及びプログラムに関する。
【0002】
【従来の技術】
電気的又は磁気的な作用を用いて人間(生物)の動作に似た運動を行う機械装置を「ロボット装置」という。我が国においてロボット装置が普及し始めたのは、1960年代末からであるが、その多くは、工場における生産作業の自動化・無人化等を目的としたマニピュレータ及び搬送ロボット装置等の産業用ロボット装置(Industrial Robot)であった。
【0003】
最近では、人間のパートナーとして生活を支援する、即ち住環境その他の日常生活上の様々な場面における人的活動を支援する実用ロボット装置の開発が進められている。このような実用ロボット装置は、産業用ロボット装置とは異なり、人間の生活環境の様々な局面において、個々に個性の相違した人間、又は様々な環境への適応方法を自ら学習する能力を備えている。例えば、犬又は猫のように4足歩行の動物の身体メカニズム及びその動作を模した「ペット型」ロボット装置、或いは、2足直立歩行を行う人間等の身体メカニズム及びその動作をモデルにしてデザインされた「人間型」又は「人間形」ロボット装置(Humanoid Robot)等のロボット装置は、既に実用化されつつある。
【0004】
これらのロボット装置は、産業用ロボット装置と比較して、例えばエンターテインメント性を重視した様々な動作等を行うことができるため、エンターテインメントロボット装置と呼称される場合もある。また、そのようなロボット装置には、外部からの情報及び内部の状態に応じて自律的に動作するものがある。
【0005】
ところで、かかるペットロボット装置においては、人間又は本物の犬や猫などのように、現在の状況に応じた最適な次の行動及び動作を行わせる機能や、過去の経験に基づいて次の行動及び動作を変化させる機能を搭載することができれば、より一層の親近感や満足感をユーザに与えて、ペットロボット装置としてのアミューズメント性をより向上させることができる。そこで、このようなアミューズメント性の向上を図ったロボット装置及びその制御方法が下記特許文献1に記載されている。
【0006】
この特許文献1に記載されたロボット装置においては、複数種類の行動モデルを有し、行動選択手段を用いて、外部からの入力情報と自己の行動履歴及び又は成長履歴との少なくとも一方に基づいて、各行動モデルの出力の中から1つの行動モデルの出力を選択するよう構成されており、これにより、現在の状況に応じた最適な次の行動を連続して行わせることができる。
【0007】
【特許文献1】
特開2001−157981号公報
【0008】
【発明が解決しようとする課題】
ところで、上記特許文献1等に記載の従来のロボット装置においては、予め定められた優先順位の高い行動モデルから出力された行動を選択するようになされているものの、選択された行動は、所定の終了条件を満たすまで行われる。又は所定の移行条件を満たすまでは次の行動に移行せず、同じ行動が継続される。即ち、ロボット装置は、自身がやりたいと判断した行動を選択することができるが、これを終了するには、選択した行動の終了又は移行条件を満たす必要があった。従って、選択した行動が終了又は移行条件を満たすまでは、他の行動が発現されずに同じ行動をやり続けていた。
【0009】
しかしながら、一度選択されて発現されている行動を、人間等と同様に例えばうまくできなければ、不快になる、悲しくなる等の感情を有して、これを動作に反映させることができれば、うまくできない行動は途中で止めてしまったり、これをユーザに伝えたりすることができ、より人間又は犬や猫等の動物の行動に模したものとなり、更に一層の親近感や満足感をユーザに与えることができて、エンターテイメント性を更に向上させることができる。
【0010】
本発明は、このような従来の実情に鑑みて提案されたものであり、行動の発現中においても、外部環境及び自身の内部状態を考慮することができ、これを行動に反映させ多彩な行動バリエーションを持たせ、更にエンターテイメント性を向上することができるロボット装置、その制御方法及びプログラムを提供することを目的とする。
【0011】
【課題を解決するための手段】
上述した目的を達成するために、本発明に係るロボット装置は、所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するロボット装置において、上記複数の動作から発現する動作を選択する選択手段と、上記選択手段に選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出手段と、上記フラストレーション値に応じて上記選択された動作を変化させる制御手段を有することを特徴とする。
【0012】
本発明においては、所定の終了条件を有する動作、即ち、所定の目的を達成するための動作を複数有し、動作開始後の経過時間に応じて変動するフラストレーション値を算出し、これを使用することによって、動作を変化させることができ、例えば、一度選択された動作を途中で停止させたり、又は当該動作の選択を所定期間禁止したり、更には、そのような場合に違う行動を選択する状況を作り出したり、また、上記フラストレーション値に応じて感情(内部状態)を変化させてこれを動作に反映させたりすることができ、例えば、当該動作の選択を所定期間禁止することで、この所定期間内に再度同じ状況・同じ条件になった場合に繰り返し同じ動作を選択するのを防ぐことができる。
【0013】
本発明に係るロボット装置の制御方法は、所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するロボット装置の制御方法において、上記複数の動作から発現する動作を選択する選択工程と、上記選択工程にて選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出工程と、上記フラストレーション値に応じて上記選択された動作を変化させる制御工程を有することを特徴とする。
【0014】
また、本発明に係るプログラムは、上述した制御処理をコンピュータに実行させるものである。
【0015】
【発明の実施の形態】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、ロボット装置自身の内部の状態を得る手段をもち、その内部状態と、ロボット装置の外部の状況から行動を選択するロボット装置において、心理学の観念を取り入れたフラストレーションという値を使用することによって、行動実行中の内部状態を行動に反映させ、例えば選択された行動を途中で終了することが可能になる等、多彩な動作バリエーションを有するロボット装置及びその行動制御方法に適用したものである。
【0016】
ここでは先ず、このようなロボット装置の好適な構成、及び制御システムについて説明し、次に本実施の形態におけるフラストレーション値を算出可能なロボット装置について詳細に説明する。
【0017】
(1)ロボット装置の構成
図1は、本実施の形態のロボット装置の外観を示す斜視図である。図1に示すように、ロボット装置1は、体幹部ユニット2の所定の位置に頭部ユニット3が連結されると共に、左右2つの腕部ユニット4R/Lと、左右2つの脚部ユニット5R/Lが連結されて構成されている(但し、R及びLの各々は、右及び左の各々を示す接尾辞である。)。
【0018】
図2は、本実施の形態におけるロボット装置1の機能構成を模式的に示すブロック図である。図2に示すように、ロボット装置1は、全体の動作の統括的制御及びその他のデータ処理を行う制御ユニット20と、入出力部40と、駆動部50と、電源部60とで構成される。以下、各部について説明する。
【0019】
入出力部40は、入力部として人間の目に相当し、外部の状況を撮影するCCDカメラ15、及び耳に相当するマイクロフォン16や頭部や背中等の部位に配設され、所定の押圧を受けるとこれを電気的に検出することで、ユーザの接触を感知するタッチ・センサ18、前方に位置する物体までの距離を測定するための距離センサ、五感に相当するその他の各種のセンサ等を含む。また、出力部として、頭部ユニット3に備えられ、人間の口に相当するスピーカ17、及び人間の目の位置に設けられ、感情表現や視覚認識状態を表現する例えばLEDインジケータ(目ランプ)19等を装備しており、これら出力部は、音声やLEDインジケータ19の点滅等、脚等による機械運動パターン以外の形式でもロボット装置1からのユーザ・フィードバックを表現することができる。
【0020】
例えば頭部ユニットの頭頂部の所定箇所に複数のタッチ・センサ18を設け、各タッチ・センサ18における接触検出を複合的に活用して、ユーザからの働きかけ、例えばロボット装置1の頭部を「撫でる」「叩く」「軽く叩く」等を検出することができ、例えば、押圧センサのうちの幾つかが所定時間をおいて順次接触したことを検出した場合、これを「撫でられた」と判別し、短時間のうちに接触を検出した場合、「叩かれた」と判別する等場合分けし、これに応じて内部状態も変化し、このような内部状態の変化に応じて動作を発現することができる。
【0021】
駆動部50は、制御ユニット20が指令する所定の運動パターンに従ってロボット装置1の機体動作を実現する機能ブロックであり、行動制御による制御対象である。駆動部50は、ロボット装置1の各関節における自由度を実現するための機能モジュールであり、それぞれの関節におけるロール、ピッチ、ヨー等各軸毎に設けられた複数の駆動ユニット541〜54nで構成される。各駆動ユニット541〜54nは、所定軸回りの回転動作を行うモータ511〜51nと、モータ511〜51nの回転位置を検出するエンコーダ521〜52nと、エンコーダ521〜52nの出力に基づいてモータ511〜51nの回転位置や回転速度を適応的に制御するドライバ531〜53nとの組み合わせで構成される。
【0022】
本ロボット装置1は、2足歩行としたが、駆動ユニットの組み合わせ方によって、ロボット装置1を例えば4足歩行等の脚式移動ロボット装置として構成することもできる。
【0023】
電源部60は、その字義通り、ロボット装置1内の各電気回路等に対して給電を行う機能モジュールである。本実施の形態に係るロボット装置1は、バッテリを用いた自律駆動式であり、電源部60は、充電バッテリ61と、充電バッテリ61の充放電状態を管理する充放電制御部62とで構成される。
【0024】
充電バッテリ61は、例えば、複数本のリチウムイオン2次電池セルをカートリッジ式にパッケージ化した「バッテリ・パック」の形態で構成される。
【0025】
また、充放電制御部62は、バッテリ61の端子電圧や充電/放電電流量、バッテリ61の周囲温度等を測定することでバッテリ61の残存容量を把握し、充電の開始時期や終了時期等を決定する。充放電制御部62が決定する充電の開始及び終了時期は制御ユニット20に通知され、ロボット装置1が充電オペレーションを開始及び終了するためのトリガとなる。
【0026】
制御ユニット20は、人間の「頭脳」に相当し、例えばロボット装置1の機体頭部あるいは胴体部等に搭載することができる。
【0027】
図3は、制御ユニット20の構成を更に詳細に示すブロック図である。図3に示すように、制御ユニット20は、メイン・コントローラとしてのCPU(Central Processing Unit)21が、メモリ及びその他の各回路コンポーネントや周辺機器とバス接続された構成となっている。バス28は、データ・バス、アドレス・バス、コントロール・バス等を含む共通信号伝送路である。バス28上の各装置にはそれぞれに固有のアドレス(メモリ・アドレス又はI/Oアドレス)が割り当てられている。CPU21は、アドレスを指定することによってバス28上の特定の装置と通信することができる。
【0028】
RAM(Random Access Memory)22は、DRAM(Dynamic RAM)等の揮発性メモリで構成された書き込み可能メモリであり、CPU21が実行するプログラム・コードをロードしたり、実行プログラムによる作業データの一時的に保存そたりするために使用される。
【0029】
ROM(Read Only Memory)23は、プログラムやデータを恒久的に格納する読み出し専用メモリである。ROM23に格納されるプログラム・コードには、ロボット装置1の電源投入時に実行する自己診断テスト・プログラムや、ロボット装置1の動作を規定する動作制御プログラム等が挙げられる。
【0030】
ロボット装置1の制御プログラムには、カメラ15やマイクロフォン16等のセンサ入力を処理してシンボルとして認識する「センサ入力・認識処理プログラム」、短期記憶や長期記憶等の記憶動作(後述)を司りながらセンサ入力と所定の行動制御モデルとに基づいてロボット装置1の行動(動作)を制御する「行動制御プログラム」、行動制御モデルに従って各関節モータの駆動やスピーカ17の音声出力等を制御する「駆動制御プログラム」等が含まれる。
【0031】
不揮発性メモリ24は、例えばEEPROM(Electrically Erasable and Programmable ROM)のように電気的に消去再書き込みが可能なメモリ素子で構成され、逐次更新すべきデータを不揮発的に保持するために使用される。逐次更新すべきデータには、暗号鍵やその他のセキュリティ情報、出荷後にインストールすべき装置制御プログラム等が挙げられる。
【0032】
インターフェース25は、制御ユニット20外の機器と相互接続し、データ交換を可能にするための装置である。インターフェース25は、例えば、カメラ15、マイクロフォン16、又はスピーカ17等との間でデータ入出力を行う。また、インターフェース25は、駆動部50内の各ドライバ531〜53nとの間でデータやコマンドの入出力を行う。
【0033】
また、インターフェース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カードやメモリ・スティックを受容するメモリ・カード・インターフェース(カード・スロット)等のような、コンピュータの周辺機器接続用の汎用インターフェースを備え、ローカル接続された外部機器との間でプログラムやデータの移動を行うようにしてもよい。
【0034】
また、インターフェース25の他の例として、赤外線通信(IrDA)インターフェースを備え、外部機器と無線通信を行うようにしてもよい。
【0035】
更に、制御ユニット20は、無線通信インターフェース26やネットワーク・インターフェース・カード(NIC)27等を含み、Bluetoothのような近接無線データ通信や、IEEE 802.11bのような無線ネットワーク、あるいはインターネット等の広域ネットワークを経由して、外部のさまざまなホスト・コンピュータとデータ通信を行うことができる。
【0036】
このようなロボット装置1とホスト・コンピュータ間におけるデータ通信により、遠隔のコンピュータ資源を用いて、ロボット装置1の複雑な動作制御を演算したり、リモート・コントロールしたりすることができる。
【0037】
(2)ロボット装置の制御システム
次に、ロボット装置の制御システムについて説明する。図4は、本実施の形態におけるロボット装置1の制御システム10の機能構成を示す模式図である。本実施の形態におけるロボット装置1は、外部刺激の認識結果や内部状態の変化に応じて、動作制御を行なうことができるものである。また、長期記憶機能を備え、外部刺激から内部状態の変化を連想記憶することにより、外部刺激の認識結果や内部状態の変化に応じて動作制御を行うことができる。
【0038】
ここで、外的刺激とは、ロボット装置1がセンサ入力を認識して得られた知覚情報であり、例えば、カメラ15から入力された画像に対して処理された色情報、形情報、顔情報等であり、より具体的には、色、形、顔、3D一般物体、ハンドジェスチャー、動き、音声、接触、匂い、味等の構成要素からなる。
【0039】
また、内的状態とは、例えば、ロボット装置の身体に基づいた本能や感情等の情動を指す。本能的要素は、例えば、疲れ(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)のうちの少なくとも1つである。
【0040】
図示の制御システム10には、オブジェクト指向プログラミングを採り入れて実装することができる。この場合、各ソフトウェアは、データとそのデータに対する処理手続きとを一体化させた「オブジェクト」というモジュール単位で扱われる。また、各オブジェクトは、メッセージ通信と共有メモリを使ったオブジェクト間通信方法によりデータの受け渡しとInvokeを行なうことができる。
【0041】
制御システム10は、外部環境(Environments)70を認識するために、視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83等からなる機能モジュールである状態認識部80を備えている。
【0042】
視覚認識機能部(Video)81は、例えば、CCD(Charge Coupled Device:電荷結合素子)カメラのような画像入力装置を介して入力された撮影画像を基に、顔認識や色認識等の画像認識処理や特徴抽出を行う。また、聴覚認識機能部(Audio)82は、マイク等の音声入力装置を介して入力される音声データを音声認識して、特徴抽出したり、単語セット(テキスト)認識を行ったりする。更に、接触認識機能部(Tactile)83は、例えば機体の頭部等に内蔵された接触センサによるセンサ信号を認識して、「なでられた」とか「叩かれた」という外部刺激を認識する。
【0043】
内部状態管理部(ISM:Internal Status Manager)91は、上述した本能や感情といった数種類の情動を数式モデル化して管理しており、上述の視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83によって認識された外部刺激(ES:ExternalStimula)に応じてロボット装置1の本能や情動といった内部状態を管理する。
【0044】
このような感情モデルと本能モデルは、それぞれ認識結果と行動(動作)履歴を入力に持ち、感情値と本能値を管理している。行動モデルは、これら感情値や本能値を参照することができる。
【0045】
また、外部刺激の認識結果や内部状態の変化に応じて動作制御を行なうために、時間の経過とともに失われる短期的な記憶を行なう短期記憶部(STM:Short Term Memory)92と、情報を比較的長期間保持するための長期記憶部(LTM:Long Term Memory)93を備えている。短期記憶と長期記憶という記憶メカニズムの分類は神経心理学に依拠する。
【0046】
短期記憶部92は、上述の視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83によって外部環境から認識されたターゲットやイベントを短期間保持する機能モジュールである。例えば、図2に示すカメラ15からの入力画像を約15秒程度の短い期間だけ記憶する。
【0047】
長期記憶部93は、物の名前等学習により得られた情報を長期間保持するために使用される。長期記憶部93は、例えば、ある行動記述モジュールにおいて外部刺激から内部状態の変化を連想記憶することができる。
【0048】
また、本ロボット装置1の動作制御は、反射行動部(Reflexive Situated Behaviors Layer)103によって実現される「反射行動」と、状況依存行動階層(SBL:Situated Behaviors Layer)102によって実現される「状況依存行動」と、熟考行動階層(Deliberative Layer)101によって実現される「熟考行動」に大別される。
【0049】
反射行動部103は、上述の視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83によって認識された外部刺激に応じて反射的な機体動作を実現する機能モジュールである。反射行動とは、基本的に、センサ入力された外部情報の認識結果を直接受けて、これを分類して、出力行動(動作)を直接決定する行動のことである。例えば、人間の顔を追いかけたり、うなずいたりといった振る舞いは反射行動として実装することが好ましい。
【0050】
状況依存行動階層102は、短期記憶部92及び長期記憶部93の記憶内容や、内部状態管理部91によって管理される内部状態を基に、ロボット装置1が現在置かれている状況に即応した行動を制御する。
【0051】
状況依存行動階層102は、目的に応じた行動(動作)が記述された複数の行動記述モジュール(スキーマ)を有し、各行動(スキーマ)毎にステートマシンを用意しており、それ以前の動作や状況に依存して、センサ入力された外部情報の認識結果を分類して、動作を機体上で発現する。また、状況依存行動階層102は、内部状態をある範囲に保つための行動(「ホメオスタシス行動」とも呼ぶ)も実現し、内部状態が指定した範囲内を越えた場合には、その内部状態を当該範囲内に戻すための行動が出現し易くなるようにその行動を活性化させる(実際には、内部状態と外部環境の両方を考慮した形で行動(動作)が選択される)。
【0052】
具体的には、各スキーマが、内部状態の変化及び外部刺激に基づき、そのスキーマの実行優先度を示す活動度レベル(アクティベーションレベル:activation level、以下ALともいう。)を算出し、このアクティベーションレベルが高いスキーマが1以上選択され、選択された動作が発現されるようになされている。即ち、例えばアクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた2以上のスキーマを選択して並列的に実行したりすることができる(但し、並列実行するときは各スキーマどうしでハードウェアリソースの競合がないことを前提とする)。この状況依存行動は、反射行動に比し、反応時間が遅い。
【0053】
熟考行動階層101は、短期記憶部92及び長期記憶部93の記憶内容に基づいて、ロボット装置1の比較的長期にわたる行動計画等を行う。熟考行動とは、与えられた状況あるいは人間からの命令により、推論やそれを実現するための計画を立てて行われる行動のことである。例えば、ロボット装置の位置と目標の位置から経路を探索することは熟考行動に相当する。このような推論や計画は、ロボット装置1がインタラクションを保つための反応時間よりも処理時間や計算負荷を要する(すなわち処理時間がかかる)可能性があるので、上記の反射行動や状況依存行動がリアルタイムで反応を返しながら、熟考行動は推論や計画を行う。
【0054】
熟考行動階層101、状況依存行動階層102、及び反射行動部103は、ロボット装置1のハードウェア構成に非依存の上位のアプリケーション・プログラムとして記述することができる。これに対し、ハードウェア依存層制御部(Configuration Dependent Actions And Reactions)104は、これら上位アプリケーション、即ち、行動記述モジュール(スキーマ)からの命令に応じて、関節アクチュエータの駆動等の機体のハードウェア(外部環境)を直接操作する。このような構成により、ロボット装置1は、制御プログラムに基づいて自己及び周囲の状況を判断し、使用者からの指示及び働きかけに応じて自律的に行動できる。
【0055】
次に、行動制御システム10について更に詳細に説明する。図5は、本実施の形態における行動制御システム10のオブジェクト構成を示す模式図である。
【0056】
図5に示すように、視覚認識機能部81は、Face Detector114、Mulit Color Tracker113、Face Identify115という3つのオブジェクトで構成される。
【0057】
Face Detector114は、画像フレーム中から顔領域を検出するオブジェクトであり、検出結果をFace Identify115に出力する。Mulit Color Tracker113は、色認識を行うオブジェクトであり、認識結果をFace Identify115及びShort Term Memory(STM)92に出力する。また、Face Identify115は、検出された顔画像を手持ちの人物辞書で検索する等して人物の識別を行ない、顔画像領域の位置、大きさ情報とともに人物のID情報をSTM92に出力する。
【0058】
聴覚認識機能部82は、Audio Recog111とSpeech Recog112という2つのオブジェクトで構成される。Audio Recog111は、マイク等の音声入力装置からの音声データを受け取って、特徴抽出と音声区間検出を行うオブジェクトであり、音声区間の音声データの特徴量及び音源方向をSpeech Recog112やSTM92に出力する。Speech Recog112は、Audio Recog111から受け取った音声特徴量と音声辞書及び構文辞書を使って音声認識を行うオブジェクトであり、認識された単語のセットをSTM92に出力する。
【0059】
触覚認識記憶部83は、接触センサからのセンサ入力を認識するTactile Sensor119というオブジェクトで構成され、認識結果はSTM92や内部状態を管理するオブジェクトであるInternal State Model(ISM)91に出力する。
【0060】
STM92は、短期記憶部を構成するオブジェクトであり、上述の認識系の各オブジェクトによって外部環境から認識されたターゲットやイベントを短期間保持(例えばカメラ15からの入力画像を約15秒程度の短い期間だけ記憶する)する機能モジュールであり、STMクライアントであるSBL102に対して外部刺激の通知(Notify)を定期的に行なう。
【0061】
LTM93は、長期記憶部を構成するオブジェクトであり、物の名前等学習により得られた情報を長期間保持するために使用される。LTM93は、例えば、ある行動記述モジュール(スキーマ)において外部刺激から内部状態の変化を連想記憶することができる。
【0062】
ISM91は、内部状態管理部を構成するオブジェクトであり、本能や感情といった数種類の情動を数式モデル化して管理しており、上述の認識系の各オブジェクトによって認識された外部刺激(ES:External Stimula)に応じてロボット装置1の本能や情動といった内部状態を管理する。
【0063】
SBL102は状況依存型行動階層を構成するオブジェクトである。SBL102は、STM92のクライアント(STMクライアント)となるオブジェクトであり、STM92からは定期的に外部刺激(ターゲットやイベント)に関する情報の通知(Notify)を受け取ると、スキーマ(Schema)すなわち実行すべき行動記述モジュールを決定する(後述)。
【0064】
ReflexiveSBL(Situated Behaviors Layer)103は、反射的行動部を構成するオブジェクトであり、上述した認識系の各オブジェクトによって認識された外部刺激に応じて反射的・直接的な機体動作を実行する。例えば、人間の顔を追いかけたり、うなずく、障害物の検出により咄嗟に避けるといった振る舞いを行なう。
【0065】
SBL102は外部刺激や内部状態の変化等の状況に応じた動作を選択する。これに対し、ReflexiveSBL103は、外部刺激に応じて反射的な動作を選択する。これら2つのオブジェクトによる行動選択は独立して行なわれるため、互いに選択された行動記述モジュール(スキーマ)を機体上で実行する場合に、ロボット装置1のハードウェア・リソースが競合して実現不可能なこともある。RM(Resource Manager)116というオブジェクトは、SBL102とReflexiveSBL103とによる行動選択時のハードウェアの競合を調停する。そして、調停結果に基づいて機体動作を実現する各オブジェクトに通知することにより機体が駆動する。
【0066】
Sound Performer172、Motion Controller173、LEDController174は、機体動作を実現するオブジェクトである。Sound Performer172は、音声出力を行うためのオブジェクトであり、RM116経由でSBL102から与えられたテキスト・コマンドに応じて音声合成を行い、ロボット装置1の機体上のスピーカから音声出力を行う。また、Motion Controller173は、機体上の各関節アクチュエータの動作を行なうためのオブジェクトであり、RM116経由でSBL102から手や脚等を動かすコマンドを受けたことに応答して、該当する関節角を計算する。また、LEDController174は、LED19の点滅動作を行なうためのオブジェクトであり、RM116経由でSBL102からコマンドを受けたことに応答してLED19の点滅駆動を行なう。
【0067】
(2−1)状況依存行動制御
次に、状況依存行動階層について更に詳細に説明する。図6には、状況依存行動階層(SBL)(但し、反射行動部を含む)による状況依存行動制御の形態を模式的に示している。認識系の視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83の機能モジュールによる外部環境70の認識結果(センサ情報)182は、外部刺激183として状況依存行動階層(反射行動部103を含む)102aに与えられる。また、認識系による外部環境70の認識結果に応じた内部状態の変化184も状況依存行動階層102aに与えられる。そして、状況依存行動階層102aでは、外部刺激183や内部状態の変化184に応じて状況を判断して、行動選択を実現することができる。
【0068】
図7には、図6に示した反射行動部103を含む状況依存行動階層(SBL)102aによる行動制御の基本的な動作例を示している。同図に示すように、状況依存行動階層102aでは、外部刺激183や内部状態の変化184によって各行動記述モジュール(スキーマ)のアクティベーションレベルを算出して、アクティベーションレベルの度合いに応じてスキーマを選択して行動(動作)を実行する。アクティベーションレベルの算出には、例えばライブラリ185を利用することにより、すべてのスキーマについて統一的な計算処理を行なうことができる(以下、同様)。例えば、アクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた2以上のスキーマを選択して並列的に行動実行するようにしてもよい(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0069】
また、図8には、図6に示した状況依存行動階層102aにより反射行動を行なう場合の動作例を示している。この場合、同図に示すように、状況依存行動階層102aに含まれる反射行動部(ReflexiveSBL)103は、認識系の各オブジェクトによって認識された外部刺激183を直接入力としてアクティベーションレベルを算出して、アクティベーションレベルの度合いに応じてスキーマを選択して行動を実行する。この場合、内部状態の変化184は、アクティベーションレベルの計算には使用されない。
【0070】
また、図9には、図6に示した状況依存行動階層102により感情表現を行なう場合の動作例を示している。内部状態管理部91では、本能や感情等の情動を数式モデルとして管理しており、情動パラメータの状態値が所定値に達したことに応答して、状況依存行動階層102に内部状態の変化184を通知(Notify)する。状況依存行動階層102は、内部状態の変化184を入力としてアクティベーションレベルを算出して、アクティベーションレベルの度合いに応じてスキーマを選択して行動を実行する。この場合、認識系の各オブジェクトによって認識された外部刺激183は、内部状態管理部(ISM)91における内部状態の管理・更新に利用されるが、スキーマのアクティベーションレベルの算出には使用されない。
【0071】
(2−2)スキーマ
図10には、状況依存行動階層102が複数のスキーマ132によって構成されている様子を模式的に示している。状況依存行動階層102は、各行動記述モジュール、即ちスキーマ毎にステートマシンを用意しており、それ以前の行動(動作)や状況に依存して、センサ入力された外部情報の認識結果を分類し、動作を機体上で発現する。スキーマは、外部刺激や内部状態に応じた状況判断を行なうMonitor機能と、行動実行に伴う状態遷移(ステートマシン)を実現するAction機能とを備えたスキーマ(Schema)132として記述される。
【0072】
状況依存行動階層102b(より厳密には、状況依存行動階層102のうち、通常の状況依存行動を制御する階層)は、複数のスキーマ132が階層的に連結されたツリー構造として構成され、外部刺激や内部状態の変化に応じてより最適なスキーマ132を統合的に判断して行動制御を行なうようになっている。ツリー300は、例えば動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリー(又は枝)を含んでいる。
【0073】
図11には、状況依存行動階層102におけるスキーマのツリー構造を模式的に示している。同図に示すように、状況依存行動階層102は、短期記憶部92から外部刺激の通知(Notify)を受けるルート・スキーマ2011、2021、2031を先頭に、抽象的な行動カテゴリから具体的な行動カテゴリに向かうように、各階層毎にスキーマが配設されている。例えば、ルート・スキーマの直近下位の階層では、「探索する(Investigate)」、「食べる(Ingestive)」、「遊ぶ(Play)」というスキーマ2012、2022、2032が配設される。そして、スキーマ2012「探索する(Investigate)」の下位には、「InvestigativeLocomotion」等というより具体的な探索行動を記述した複数のスキーマ2013が配設されている。同様に、スキーマ2022「食べる(Ingestive)」の下位には「Eat」や「Drink」等のより具体的な飲食行動を記述した複数のスキーマ2023が配設され、スキーマ2032「遊ぶ(Play)」の下位には「PlayBowing」、「PlayGreeting」等のより具体的な遊ぶ行動を記述した複数のスキーマ2033が配設されている。
【0074】
図示の通り、各スキーマは外部刺激183と内部状態(の変化)184を入力している。また、各スキーマは、少なくともMonitor関数とActionと関数を備えている。
【0075】
ここで、Monitor関数とは、外部刺激183と内部状態184に応じて当該スキーマのアクティベーションレベル(Activation Level:AL値)を算出する関数である。図11に示すようなツリー構造を構成する場合、上位(親)のスキーマは外部刺激183と内部状態184を引数として下位(子供)のスキーマのMonitor関数をコールすることができ、子供のスキーマはアクティベーションレベルを返り値とする。また、スキーマは自分のアクティベーションレベルを算出するために、更に子供のスキーマのMonitor関数をコールすることができる。そして、ルートのスキーマには各サブツリーからのアクティベーションレベルが返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断することができる。
【0076】
例えばアクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた2以上のスキーマを選択して並列的に行動実行するようにしてもよい(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0077】
また、Action関数は、スキーマ自身が持つ行動を記述したステートマシンを備えている。図11に示すようなツリー構造を構成する場合、親スキーマは、Action関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。本実施の形態では、ActionのステートマシンはReadyにならないと初期化されない。言い換えれば、中断しても状態はリセットされず、スキーマが実行中の作業データを保存することから、中断再実行が可能である。
【0078】
図12には、状況依存行動階層102において通常の状況依存行動を制御するためのメカニズムを模式的に示している。
【0079】
同図に示すように、状況依存行動階層(SBL)102には、短期記憶部(STM)92から外部刺激183が入力(Notify)されるとともに、内部状態管理部91から内部状態の変化184が入力される。状況依存行動階層102は、例えば動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリーで構成されており、ルート・スキーマは、外部刺激183の通知(Notify)に応答して、各サブツリーのMonitor関数をコールし、その返り値としてのアクティベーションレベル(AL)値を参照して、統合的な行動選択を行ない、選択された行動を実現するサブツリーに対してAction関数をコールする。また、状況依存行動階層102において決定された状況依存行動は、リソース・マネージャRM116により反射行動部103による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller)に適用される。
【0080】
また、状況依存行動層102のうち、反射的行動部103は、上述した認識系の各オブジェクトによって認識された外部刺激183に応じて、例えば、障害物の検出により咄嗟に避ける等、反射的・直接的な機体動作を実行する。このため、図11に示す通常の状況依存行動を制御する場合とは相違し、図10に示すように、認識系の各オブジェクトからの信号を直接入力する複数のスキーマ142が階層化されずに並列的に配置されている。
【0081】
図13には、反射行動部103におけるスキーマの構成を模式的に示している。同図に示すように、反射行動部103には、聴覚系の認識結果に応答して動作するスキーマとしてAvoid Big Sound204、Face to Big Sound205及びNodding Sound209、視覚系の認識結果に応答して動作するスキーマとしてFace to Moving Object206及びAvoid Moving Object207、並びに、触覚系の認識結果に応答して動作するスキーマとして手を引っ込める208が、それぞれ対等な立場で(並列的に)配設されている。
【0082】
図示の通り、反射的行動を行なう各スキーマは外部刺激183を入力に持つ。また、各スキーマは、少なくともMonitor関数とAction関数を備えている。Monitor関数は、外部刺激183に応じて当該スキーマのアクティベーションレベルを算出して、これに応じて該当する反射的行動を発現すべきかどうかが判断される。また、Action関数は、スキーマ自身が持つ反射的行動を記述したステートマシン(後述)を備えており、コールされることにより、該当する反射的行動を発現するとともにActionの状態を遷移させていく。
【0083】
図14には、反射行動部103において反射的行動を制御するためのメカニズムを模式的に示している。図13にも示したように、反射行動部103内には、反応行動を記述したスキーマや、即時的な応答行動を記述したスキーマが並列的に存在している。認識系の機能モジュール80を構成する各オブジェクトから認識結果が入力されると、対応する反射行動スキーマがAonitor関数によりアクティベーションレベルを算出し、その値に応じてActionを軌道すべきかどうかが判断される。そして、反射行動部103において起動が決定された反射的行動は、リソース・マネージャRM116により状況依存行動階層102による状況依存行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller173)に適用される。
【0084】
状況依存行動階層102及び反射行動部103を構成するスキーマは、例えばC++言語ベースで記述される「クラス・オブジェクト」として記述することができる。図15には、状況依存行動階層102において使用されるスキーマのクラス定義を模式的に示している。同図に示されている各ブロックはそれぞれ1つのクラス・オブジェクトに相当する。
【0085】
図示の通り、状況依存行動階層(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とを備えている。
【0086】
Schema Handler212は、状況依存行動階層(SBL)102や反射行動部103を構成する各スキーマやツリー構造等の情報(SBLのコンフィギュレーション情報)をファイルとして保管している。例えばシステムの起動時等に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、図11に示したような状況依存行動階層102のスキーマ構成を構築(再現)して、メモリ空間上に各スキーマのエンティティをマッピングする。
【0087】
各スキーマは、スキーマのベースとして位置付けられるOpenR_Guest215を備えている。OpenR_Guest215は、スキーマが外部にデータを送信するためのDsubject216、並びに、スキーマが外部からデータを受信するためのDObject217というクラス・オブジェクトをそれぞれ1以上備えている。例えば、スキーマが、SBL102の外部オブジェクト(STMやLTM、認識系の各オブジェクト等)にデータを送るときには、Dsubject216はSend Data Handler214に送信データを書き込む。また、DObject217は、SBL102の外部オブジェクトから受信したデータをReceive Data Handler213から読み取ることができる。
【0088】
Schema Manager218及びSchema Base219は、ともにOpenR_Guest215を継承したクラス・オブジェクトである。クラス継承は、元のクラスの定義を受け継ぐことであり、この場合、OpenR_Guest215で定義されているDsubject216やDObject217等のクラス・オブジェクトをSchema Manager Base218やSchema Base219も備えていることを意味する(以下、同様)。例えば図11に示すように複数のスキーマがツリー構造になっている場合、Schema Manager Base218は、子供のスキーマのリストを管理するクラス・オブジェクトSchema List220を持ち(子供のスキーマへのポインタを持ち)、子供スキーマの関数をコールすることができる。また、Schema Base219は、親スキーマへのポインタを持ち、親スキーマからコールされた関数の返り値を戻すことができる。
【0089】
Schema Base219は、State Machine221及びPronome222という2つのクラス・オブジェクトを持つ。State Machine221は当該スキーマの行動(Action関数)についてのステートマシンを管理している。親スキーマは子供スキーマのAction関数のステートマシンを切り替える(状態遷移させる)ことができる。また、Pronome222には、当該スキーマが行動(Action関数)を実行又は適用するターゲットを代入する。後述するように、スキーマはPronome222に代入されたターゲットによって占有され、行動(動作)が終了(完結、異常終了等)するまでスキーマは解放されない。新規のターゲットのために同じ行動を実行するためには同じクラス定義のスキーマをメモリ空間上に生成する。この結果、同じスキーマをターゲット毎に独立して実行することができ(個々のスキーマの作業データが干渉し合うことはなく)、行動のReentrance性が確保される(後述)。
【0090】
Parent Schema Base223は、Schema Manager218及びSchema Base219を多重継承するクラス・オブジェクトであり、スキーマのツリー構造において、当該スキーマ自身についての親スキーマ及び子供スキーマすなわち親子関係を管理する。
【0091】
Intermediate Parent Schema Base224は、Parent Schema Base223を継承するクラス・オブジェクトであり、各クラスのためのインターフェース変換を実現する。また、Intermediate Parent Schema Base224は、Schema Status Info225を持つ。このSchema Status Info225は、当該スキーマ自身のステートマシンを管理するクラス・オブジェクトである。親スキーマは、子供スキーマのAction関数をコールすることによってそのステートマシンの状態を切り換えることができる。また、子供スキーマのMonitor関数をコールしてそのステートマシンの常態に応じたアクティベーションレベルを問うことができる。但し、スキーマのステートマシンは、前述したAction関数のステートマシンとは異なるということを留意されたい。
【0092】
And Parent Schema226、Num Or Parent Schema227、Or Parent Schema228は、Intermediate Parent Schema Base224を継承するクラス・オブジェクトである。And Parent Schema226は、同時実行する複数の子供スキーマへのポインタを持つ。Or Parent Schema228は、いずれか択一的に実行する複数の子供スキーマへのポインタを持つ。また、Num Or Parent Schema227は、所定数のみを同時実行する複数の子供スキーマへのポインタを持つ。
【0093】
Parent Schema229は、これらAnd Parent Schema226、Num Or Parent Schema227、Or Parent Schema228を多重継承するクラス・オブジェクトである。
【0094】
図16には、状況依存行動階層(SBL)102内のクラスの機能的構成を模式的に示している。状況依存行動階層(SBL)102は、STMやLTM、リソース・マネージャ、認識系の各オブジェクト等外部オブジェクトからデータを受信する1以上のReceive Data Handler(RDH)213と、外部オブジェクトにデータを送信する1以上のSend Data Handler(SDH)214とを備えている。
【0095】
Event Data Handler(EDH)211は、SBL102の入出力イベントに対してIDを割り振るためのクラス・オブジェクトであり、RDH213やSDH214から入出力イベントの通知を受ける。
【0096】
Schema Handler212は、スキーマ132を管理するためのクラス・オブジェクトであり、SBL102を構成するスキーマのコンフィギュレーション情報をファイルとして保管している。例えばシステムの起動時等に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、SBL102内のスキーマ構成を構築する。
【0097】
各スキーマは、図15に示したクラス定義に従って生成され、メモリ空間上にエンティティがマッピングされる。各スキーマは、OpenR_Guest215をベースのクラス・オブジェクトとし、外部にデータ・アクセスするためのDSubject216やDObject217等のクラス・オブジェクトを備えている。
【0098】
スキーマ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():ツリー全体のターゲットを決定する関数
【0099】
(2−3)状況依存行動階層の機能
状況依存行動階層(SBL)102は、短期記憶部92及び長期記憶部93の記憶内容や、内部状態管理部91によって管理される内部状態を基に、ロボット装置1が現在置かれている状況に即応した動作を制御する。
【0100】
前項で述べたように、本実施の形態における状況依存行動階層102は、スキーマのツリー構造(図11を参照のこと)で構成されている。各スキーマは、自分の子供と親の情報を知っている状態で独立性を保っている。このようなスキーマ構成により、状況依存行動階層102は、Concurrentな評価、Concurrentな実行、Preemption、Reentrantという主な特徴を持っている。以下、これらの特徴について詳解する。
【0101】
(2−3−1)Concurrentな評価:
行動記述モジュールとしてのスキーマは外部刺激や内部状態の変化に応じた状況判断を行なうMonitor機能を備えていることは既に述べた。Monitor機能は、スキーマがクラス・オブジェクトSchema BaseでMonitor関数を備えていることにより実装されている。Monitor関数とは、外部刺激と内部状態に応じて当該スキーマのアクティベーションレベルを算出する関数である。
【0102】
図11に示すようなツリー構造を構成する場合、上位(親)のスキーマは外部刺激183と内部状態の変化184を引数として下位(子供)のスキーマのMonitor関数をコールすることができ、子供のスキーマはアクティベーションレベルを返り値とする。また、スキーマは自分のアクティベーションレベルを算出するために、更に子供のスキーマのMonitor関数をコールすることができる。そして、ルートのスキーマ2011〜2031には各サブツリーからのアクティベーションレベルが返されるので、外部刺激183と内部状態の変化184に応じた最適なスキーマすなわち動作を統合的に判断することができる。
【0103】
このようにツリー構造になっていることから、外部刺激183と内部状態の変化184による各スキーマの評価は、まずツリー構造の下から上に向かってConcurrentに行なわれる。即ち、スキーマに子供スキーマがある場合には、選択した子供のMonitor関数をコールしてから、自身のMonitor関数を実行する。次いで、ツリー構造の上から下に向かって評価結果としての実行許可を渡していく。評価と実行は、その動作が用いるリソースの競合を解きながら行なわれる。
【0104】
本実施の形態における状況依存行動階層102は、スキーマのツリー構造を利用して、並列的に行動の評価を行なうことができるので、外部刺激183や内部状態の変化184等の状況に対しての適応性がある。また、評価時には、ツリー全体に関しての評価を行ない、このとき算出されるアクティベーションレベル(AL)値によりツリーが変更されるので、スキーマすなわち実行する動作を動的にプライオリタイズすることができる。
【0105】
(2−3−2)Concurrentな実行:
ルートのスキーマには各サブツリーからのアクティベーションレベルが返されるので、外部刺激183と内部状態の変化184に応じた最適なスキーマすなわち動作を統合的に判断することができる。例えばアクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた2以上のスキーマを選択して並列的に行動実行するようにしてもよい(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0106】
実行許可をもらったスキーマは実行される。すなわち、実際にそのスキーマは更に詳細の外部刺激183や内部状態の変化184を観測して、コマンドを実行する。実行に関しては、ツリー構造の上から下に向かって順次すなわちConcurrentに行なわれる。即ち、スキーマに子供スキーマがある場合には、子供のActions関数を実行する。
【0107】
Action関数は、スキーマ自身が持つ行動(動作)を記述したステートマシンを備えている。図11に示すようなツリー構造を構成する場合、親スキーマは、Action関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。
【0108】
本実施の形態における状況依存行動階層(SBL)102は、スキーマのツリー構造を利用して、リソースが競合しない場合には、余ったリソースを使う他のスキーマを同時に実行することができる。但し、Goalまでに使用するリソースに対して制限を加えないと、ちぐはぐな行動出現が起きる可能性がある。状況依存行動階層102において決定された状況依存行動は、リソース・マネージャにより反射行動部(ReflexiveSBL)103による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller)に適用される。
【0109】
(2−3−3)Preemption:
1度実行に移されたスキーマであっても、それよりも重要な(優先度の高い)行動があれば、スキーマを中断してそちらに実行権を渡さなければならない。また、より重要な行動が終了(完結又は実行中止等)したら、元のスキーマを再開して実行を続けることも必要である。
【0110】
このような優先度に応じたタスクの実行は、コンピュータの世界におけるOS(オペレーティング・システム)のPreemptionと呼ばれる機能に類似している。OSでは、スケジュールを考慮するタイミングで優先度のより高いタスクを順に実行していくという方針である。
【0111】
これに対し、本実施の形態におけるロボット装置1の制御システム10は、複数のオブジェクトにまたがるため、オブジェクト間での調停が必要になる。例えば反射行動を制御するオブジェクトである反射行動部103は、上位の状況依存行動を制御するオブジェクトである状況依存行動階層102の行動評価を気にせずに物を避けたり、バランスをとったりする必要がある。これは、実際に実行権を奪い取り実行を行なう訳であるが、上位の行動記述モジュール(SBL)に、実行権利が奪い取られたことを通知して、上位はその処理を行なうことによってPreemptiveな能力を保持する。
【0112】
また、状況依存行動層102内において、外部刺激183と内部状態の変化184に基づくアクティベーションレベルの評価の結果、あるスキーマに実行許可がなされたとする。更に、その後の外部刺激183と内部状態の変化184に基づくアクティベーションレベルの評価により、別のスキーマの重要度の方がより高くなったとする。このような場合、実行中のスキーマのActions関数を利用してSleep状態にして中断することにより、Preemptiveな行動の切り替えを行なうことができる。
【0113】
実行中のスキーマのActions()の状態を保存して、異なるスキーマのActions()を実行する。また、異なるスキーマのActions()が終了した後、中断されたスキーマのActions()を再度実行することができる。
【0114】
また、実行中のスキーマのActions()を中断して、異なるスキーマに実行権が移動する前に、SleepActions()を実行する。例えば、ロボット装置1は、対話中にサッカーボールを見つけると、「ちょっと待ってね」と言って、サッカーすることができる。
【0115】
(2−3−4)Reentrant:
状況依存行動階層102を構成する各スキーマは、一種のサブルーチンである。スキーマは、複数の親からコールされた場合には、その内部状態を記憶するために、それぞれの親に対応した記憶空間を持つ必要がある。
【0116】
これは、コンピュータの世界では、OSが持つReentrant性に類似しており、本明細書ではスキーマのReentrant性と呼ぶ。図16に示したように、スキーマ132はクラス・オブジェクトで構成されており、クラス・オブジェクトのエンティティすなわちインスタンスをターゲット(Pronome)毎に生成することによりReentrant性が実現される。
【0117】
スキーマのReentrant性について、図17を参照しながらより具体的に説明する。Schema Handler212は、スキーマを管理するためのクラス・オブジェクトであり、SBL102を構成するスキーマのコンフィギュレーション情報をファイルとして保管している。システムの起動時に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、SBL102内のスキーマ構成を構築する。図17に示す例では、Eat221やDialog222等の行動(動作)を規定するスキーマのエンティティがメモリ空間上にマッピングされているとする。
【0118】
ここで、外部刺激183と内部状態の変化184に基づくアクティベーションレベルの評価により、スキーマDialog222に対してAというターゲット(Pronome)が設定されて、Dialog222が人物Aとの対話を実行するようになったとする。
【0119】
そこに、人物Bがロボット装置1と人物Aとの対話に割り込み、その後、外部刺激183と内部状態の変化184に基づくアクティベーションレベルの評価を行なった結果、Bとの対話を行なうスキーマ223の方がより優先度が高くなったとする。
【0120】
このような場合、Schema Handler212は、Bとの対話を行なうためのクラス継承した別のDialogエンティティ(インスタンス)をメモリ空間上にマッピングする。別のDialogエンティティを使用して、先のDialogエンティティとは独立して、Bとの対話を行なうことから、Aとの対話内容は破壊されずに済む。従って、DialogAはデータの一貫性を保持することができ、Bとの対話が終了すると、Aとの対話を中断した時点から再開することができる。
【0121】
Readyリスト内のスキーマは、その対象物(外部刺激183)に応じて評価すなわちアクティベーションレベルの計算が行なわれ、実行権が引き渡される。その後、Readyリスト内に移動したスキーマのインスタンスを生成して、これ以外の対象物に対して評価を行なう。これにより、同一のスキーマをactive又はsleep状態にすることができる。
【0122】
(3)ロボット装置への本発明の適用
次に、上述のようなロボット装置に本発明を適用した例について詳細に説明する。本実施の形態におけるロボット装置は、ロボット装置自身の内部の情報を得る手段をもち、その内部情報と、ロボットの外部の情報から発現する動作を選択するロボット装置において、上述したように、内部状態をある範囲に保つための行動を行うものであり、動作を実行したときに、その動作によって満たすとされる内部状態が満たされない場合、即ち、所定時間経過しても、所定の目的を達成できない(終了条件を満たさない)場合は、その経過時間に応じて変化するフラストレーション値を算出し、このフラストレーション値に基づき発現する動作を変化させるものである。
【0123】
上述したように、本実施の形態におけるロボット装置は自身の内外の情報を考慮したうえで動作選択を行うアルゴリズムとしてSBLを有する。SBLは、スキーマツリーを有し、各スキーマは、外部刺激と内部状態に応じ、上述したように、各スキーマのやりたさ度合い(実行優先度)を示すアクティベーションレベルを算出する。
【0124】
ここで、各スキーマは、各種センサ等の外部入力装置(状態認識部)から入力された外部情報(外部刺激)と、ロボット装置の内部情報(自らの内部状態パラメータ及び感情パラメータの算出を行う感情・本能モデルから得られた内部状態パラメータ)、即ちロボットの一次情動(本能)の満足度、及びそれによって変化する二次情動(感情)の値との双方に応じて、アクティベーションレベルを算出する。
【0125】
アクティベーションレベルは、外部からの刺激、対象物があればその物理的な外部情報、現在の内部状態、及びロボット装置自身が有する記憶(過去の履歴)等を利用して算出されるもので、例えば、現在の状況においてロボット装置がその動作を発現することが可能か否か(やれることができるか否か)を示すReleaseValueと、ロボット装置自身がやりたいか否かを示すMotivationValueとに基づき算出することができる。
【0126】
ReleaseValueは、外部からの刺激、対象物があればその物理的な外部情報(対象物の有無、対象物との間の距離、対象物の色及び形状等)及び各記憶部からの記憶に基づく値が例えば加算される等して算出されるものであり、例えば、ボールを蹴る動作を発現するスキーマは、カメラ等によりボールを認識できない期間は自身の動作(ボールを蹴る動作)を発現できないと判定し、その値を小さくすることができる。
【0127】
また、MotivationValueは、ロボットの内部状態、即ち、上述した内部状態管理部における本能・感情モデルにおいて算出された本能(欲求)値及び感情(情動)値に基づき算出されるもので、例えば、ボールを蹴るスキーマは、バッテリの充電が充分であったり、好きな色のボールを発見した場合にボールを蹴りたいという欲求が大きくなり、その値が大きくなる。本実施の形態のロボット装置の感情モデルは、「喜び(Joy)」、「悲しみ(Sadness)」、「怒り(Anger)」、「驚き(Surprise)」、「嫌悪(Disgust)」及び「恐れ(Fear)」の合計6つの情動について、各情動毎にその情動の強さを表すパラメータを保持し、本能モデルは、「運動欲(exercise)」、「愛情欲(affection)」、「食欲(appetite)」及び「好奇心(curiosity)」の互いに独立した4つの欲求について、これら欲求毎にその欲求の強さを表すパラメータを保持しており、これらの各値に基づきMotivationValueを算出することができる。
【0128】
上述したように、ロボット装置は、このようにして算出されたアクティベーションレベルの大小で実行するスキーマ(行動)を選択するように構成することができる。選択されたスキーマは、自身に記述された行動(動作)を発現する。各スキーマは行動を発現すると、自身の目的を果たすまで、即ち、所定の終了条件又は次の動作へ移行するための移行条件(以下、単に終了又は移行条件という。)を満たすまで行動を継続して発現する。ここで、ロボット装置は、各スキーマが自身の動作が終了又は移行条件を満たすことで、内部状態のある種の欲求、例えば、上述した「喜び」等の情動値や、「運動欲」等の欲求値を変動させるように構成される。
【0129】
具体的には、例えば、機体動作として「ボールを探す」という動作が記述されている場合、カメラの画像等によって「ボールを発見する」という終了条件を有し、この終了条件を満たすまで、ボールを探し続ける。又は、所定の条件が次の動作に移行するための移行条件となっている場合、即ち「ボールを発見する」ことが、次の「ボールを蹴る」という動作に移行するための移行条件となっている場合があり、この場合も、この移行条件を満たすまで、次の動作に移行ぜずに動作を継続し続ける。そして終了又は移行条件を満たすことで、「喜び」等の感情値を上昇させたり、「運動欲」等の欲求値を満たしたりすることができる。
【0130】
ここで、発現した動作を途中で停止(中断)するためには、外部からの刺激等、何らかの条件により、発火中のスキーマより、発火していない他のスキーマのアクティベーションレベルを高くする必要があり、このような場合には、発火中のスキーマを中断して、アクティベーションレベルが高くなった方のスキーマを起動することができる。具体的には、ロボット装置がサッカーをするスキーマを起動させてサッカーをしている最中に、ユーザに話しかけられて、サッカーをするスキーマのアクティベーションレベルより、ユーザとの対話を行うスキーマのアクティベーションレベルが高くなる等である。
【0131】
このように、動作が終了又は途中で停止するためには、所定の終了又は移行条件を満たすか、又は外部からの刺激が必要である。しかしながら、この方法では「やりたい」と主張することはできるが、途中でその動作を止める等「やめたい」ことを主張することができない。
【0132】
ところで、外部状況の変化や自身の行動の制限等の様々な要因から、選択された動作の終了又は移行条件を満たすのが困難な場合が存在する。そこで、このような場合に、終了又は移行条件を満たしていなくてもその動作を途中で停止し、次の動作を発現するというストラテジーを取るために、本発明においては、フラストレーション値という値を導入する。このフラストレーション値により、動作中であっても外部状況の変化や内部状態の変化に応じて、発現中の動作を停止させる等、動作を変化させることができる。
【0133】
フラストレーションは、心理学で「欲求満足行動を何らかの事情で阻害された時の状態、欲求不満(フラストレーション)状態」と位置付けられており、その状態になった場合、攻撃、代償、迂回、逃避反応などの反応を示すとされている。本実施の形態においては、これらを参考に、ロボット装置におけるフラストレーション状態とその際の振る舞い(フラストレーション反応)を定めるものとする。
【0134】
次に、本実施の形態におけるフラストレーション値を有するスキーマの動作について詳細に説明する。先ず、ロボット装置の複数のスキーマの中で、アクティベーションレベルが例えば最も大きいスキーマAが選択されて実行される。このスキーマAに記述された動作が最後まで実行されると欲求αを満たすと予測されているが、なかなか欲求αを満たす方向に変化させることができない場合、経過時間に応じてそのスキーマAを実行することに対するフラストレーション値Fを増加させる。
【0135】
図18(a)及び図18(b)は、本実施の形態における行動制御を説明する図である。図18(a)に示すように、SBLは、動作が実行されると満たす欲求=αのスキーマA、Bを有するスキーマツリー310と、動作が実行されると満たす欲求=βのスキーマB、Cを有するスキーマツリー320とを有している。各スキーマA、B、C、Dには、自身の行動を終了するまでの許容時間t1が例えばt1=5〜30秒等として設定され、フラストレーション値Fの閾値が例えばFth=100〜200等として設定され、更に各スキーマが上記Fthを超えた場合に、行動を停止する動作停止時間t2が例えばt2=30〜120秒等として設定されているものとする。これらのフラストレーション値Fの閾値、許容時間t1及び停止時間t2は、各スキーマ毎に可変設定されるものとする。
【0136】
スキーマAのアクティベーションレベルが外部刺激又は内部状態に応じて上昇して選択されると、スキーマAは行動を発現する。ここで、行動を発現してから許容時間t1=30sを経過しても行動が達成できない場合、即ち、スキーマAによって満たされるはずである欲求αが得られない場合、スキーマAのフラストレーション値Fを増加させる。フラストレーション値は、例えばシグモイド関数等、経過時間に応じて増加する関数等を使用して、各スキーマ自身又はその他の制御手段において算出することができる。このフラストレーション値を算出するための所定の増加関数においても、各スキーマ毎に個別に異なる関数を設定したり、該関数に使用する各種パラメータをスキーマ毎に個別に設定したりすることができる。
【0137】
ここで、例えば、スキーマAのフラストレーション値Fは、選択される前までと選択されてから許容期間t1(=30s)の間とは、F=0とし、許容期間t1以降は、その経過時間に応じて増大させるように設定される。なお、選択された時刻を基準にその後の経過時間に応じて増大させるように設定してもよい。
【0138】
そして、スキーマAは、スキーマAのフラストレーション値Fが閾値Fthを超えた時刻から所定の動作停止時間t2(=120s)の間は、スキーマAに記述された動作を発現しないものとする。
【0139】
即ち、動作停止時間t2の間は、スキーマAのアクティベーションレベルに拘わらず、スキーマAの動作を発現することを停止し、スキーマAの選択を禁止するものとする。以下、このように、スキーマAの動作を制限することをスキーマAにペナルティを与えるともいう。
【0140】
SBLでは、スキーマツリー310,320のように、通常は、各スキーマが満たす、例えば「運動欲(exercise)」、「愛情欲(affection)」、「食欲(appetite)」又は「好奇心(curiosity)」等の欲求の種類毎に異なるスキーマツリーを有しており、スキーマAの選択が禁止された場合、この間は、スキーマAと同じ欲求αを満たすスキーマのうち、最もアクティベーションレベルが高いスキーマBが選択される。
【0141】
この際、スキーマAと同じ欲求αを有するスキーマが選択されるよう、欲求αを有するスキーマツリー310を構成する各スキーマ(図18(a)においては、スキーマBのみ図示)のアクティベーションレベルALを、スキーマAの期間t2の間のみ、例えば50等、上昇させる。このようにすることで、スキーマAと同じ欲求αを有するスキーマを選択されやすくすることができる。こうして、図18(b)においては、スキーマAと同じ欲求αを有するスキーマBが選択される。
【0142】
また、スキーマAと同じ欲求αのスキーマが存在しない場合、又は、スキーマAと同じ欲求αを有するスキーマのアクティベーションレベルを上昇させても、他の欲求βを有するスキーマのアクティベーションレベルの方が高い場合等においては、スキーマAとは異なる欲求を有するスキーマを選択するようにしてもよい。
【0143】
このように、スキーマは、その機体動作を発現した後、所定の時間t1を経過しても、所定の終了又は移行条件を満たさない場合、欲求を満たす方向に変化させることができないものとし、フラストレーション値を増加させることにより、このフラストレーション値に応じて発現する動作を変化させることができる。
【0144】
そして、フラストレーション値が所定の閾値を超えた場合には、スキーマAに一定期間、動作の発現を禁止してペナルティを与えるだけではなく、上述した攻撃、代償、迂回、逃避反応等のフラストレーション反応にあたる反応を表現するよう設定することができる。例えば、攻撃反応であれば対象物を攻撃する、代償反応であればスキーマA以外のスキーマで、スキーマAと同じ欲求Aを満たすと予測されるスキーマBを実行する等である。
【0145】
また、図18(a)に示すスキーマツリー310のように、スキーマツリー310に属するいずれかのスキーマが選択され、該スキーマのフラストレーション値Fが所定の閾値を超えた場合にのみ選択されて、フラストレーション反応を表現する動作が記述されスキーマEを設け、欲求αを有するスキーマのフラストレーション値Fが所定の閾値を超えた場合にこれを選択するようにしてもよい。このスキーマEは、例えば各スキーマツリー(各欲求)に対して1つずつ設けて、そのスキーマツリーにおけるスキーマが満たすとされる欲求が満たされなかった場合に選択されるようにしてもよいし、各スキーマ毎に個別に設けてもよい。
【0146】
更に、各スキーマに対して、本来の機体動作(第1の機体動作)と共に、このような場合にのみ発現するようフラストレーション反応を示す機体動作(第2の機体動作)を記述しておいてもよい。又は、スキーマAの下層に、スキーマAのフラストレーション反応を行う1以上のスキーマを用意し、フラストレーション値Fが閾値Fthを超えると、それらのフラストレーション反応用のスキーマをコールするようにしてもよい。
【0147】
更にまた、このフラストレーション値をロボット装置の内部状態に反映させることで、フラストレーション値に応じて様々な動作を発現させることができる。例えば、動作が終了した時点、即ち所定の終了又は移行条件を満たした時点でのフラストレーション値が0である場合、「満足」又は「うれしい」等の情動値を上昇させ、これを動作に反映させるようにしてもよい。
【0148】
(3−1)実施の形態の第1の具体例:ボールを蹴るスキーマを実行しているのにボールが蹴れない場合
ボールを蹴るスキーマS1が選択され、そのスキーマS1の動作終了又は移行条件がボールを蹴ることであったとする。しかし、スキーマS1の実行中に照明条件の変化等からボールが見えなくなってしまったり、ボールとの間の距離が測れなかったりした場合、ボールを蹴ることが困難になる。こうして、これだけ与えればボールを蹴れるであろうと予測されて設定された許容時間t1を超えた場合であってもボールが蹴れない場合、フラストレーション値Fを増加させる。そして、このフラストレーション値が上記閾値Fthを超えた場合、スキーマS1の動作、即ちボールを蹴る動作を停止させ、このスキーマS1を一定時間t2選択させないようにし、スキーマS1以外の他のスキーマを選択させたり、このような場合のために代償行動を表現する代償スキーマを用意しておき、これを起動させたり、例えば「怒る」、「悲しい」等の感情を表現するスキーマをコールして、このような感情を動作に反映させたりする。これにより、例えば「がんばったけどうまくできなかったから怒ってほかの事をする」ように見える。
【0149】
(3−2)実施の形態の第2の具体例:おしゃべりスキーマを実行しているのに返事をしてくれない場合
おしゃべりスキーマS2が選択され、そのスキーマS2の終了条件又は移行条件が「人が返事をする」ことであるとする。ロボット装置が一生懸命話し掛けても、ユーザが返事をしてくれない場合等には、この条件を満たすことができない。この場合においても、ロボット装置が返事を待つことができる許容時間t1を定めておき、その許容時間t1を超えた場合にフラストレーション値Fを増加させ、このフラストレーション値Fが閾値Fthを超えたときまでに返事をもらうことができなかった場合、スキーマS2を一定時間t2選択させないようにし、次の行動をスキーマS2以外のスキーマより選択させるようにする。これにより、この時間t2の間に、例えば、他のユーザから話かけられた場合においても、お話するスキーマS2は、起動が停止されているため、ロボット装置は、これを無視することで、例えば「怒っている」ように見える。また、フラストレーションを感情に反映させると共に、他のスキーマを選択したり、代償スキーマを起動したりすることで、例えば「がんばったけど返事してくれなかったから悲しくなって他のことをする」ように見える。
【0150】
本実施の形態においては、このようなフラストレーション値を算出し、更に、スキーマ毎に、異なるフラストレーション値の閾値や、許容時間t1及び動作停止時間t2等を設定することにより、例えばスキーマAのフラストレーション値が上昇した場合、スキーマAの動作を所定時間t2停止し、スキーマAと同じ欲求αを有する他のスキーマBを選択するようにすることができ、スキーマAが所定の終了又は移行条件を満たさない場合には、同じ動作をやり続けることを防止し、同じ欲求を満たす他のスキーマBを起動させる等してロボット装置が自分で行動を「止める」ことが可能となると共に、やめ方においても、多くのバリエーションを持たせることが可能となる。
【0151】
また、フラストレーション値Fの閾値Fthを超えた場合に行うフラストレーション反応を複数用意したり、このフラストレーション反応として表出する動作として、上述したように、他のスキーマの中から、アクティベーションレベルに基づいて選択したり、欲求の種類を考慮して選択したりすることで、より多くのフラストレーション反応を持たせることが可能となる。こうして、選択した行動ができなかったことによる感情変化の実現が可能となるため、ロボット装置がより知的に見える手助けとなる。
【0152】
更に、同様の環境・条件で同一の動作が繰り返し発現されることを防止することができので、ユーザのロボット装置に対する厭きを防止し、エンターテイメント性を更に向上することができる。
【0153】
【発明の効果】
以上詳細に説明したように本発明に係るロボット装置は、所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するロボット装置において、上記複数の動作から発現する動作を選択する選択手段と、上記選択手段に選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出手段と、上記フラストレーション値に応じて上記選択された動作を変化させる制御手段を有するので、選択された動作開始後の経過時間に応じて変動するフラストレーション値に応じて動作を変化させることができ、行動にバリエーションを持たせて更にエンターテイメント性を向上することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態におけるロボット装置の外観を示す斜視図である。
【図2】本発明の実施の形態におけるロボット装置の機能構成を模式的に示すブロック図である。
【図3】本発明の実施の形態におけるロボット装置の制御ユニットの構成を更に詳細に示すブロック図である。
【図4】本発明の実施の形態におけるロボット装置の行動制御システムの機能構成を示す模式図である。
【図5】本発明の実施の形態における行動制御システムのオブジェクト構成を示す模式図である。
【図6】本発明の実施の形態における状況依存行動階層による状況依存行動制御の形態を示す模式図である。
【図7】状況依存行動階層による行動制御の基本的な動作例を示す模式図である。
【図8】状況依存行動階層により反射行動を行なう場合の動作例を示す模式図である。
【図9】状況依存行動階層により感情表現を行なう場合の動作例を示す模式図である。
【図10】状況依存行動階層が複数のスキーマによって構成されている様子を示す模式図である。
【図11】状況依存行動階層におけるスキーマのツリー構造を示す模式図である。
【図12】状況依存行動階層において通常の状況依存行動を制御するためのメカニズムを示す模式図である。
【図13】反射行動部におけるスキーマの構成を示す模式図である。
【図14】反射行動部により反射的行動を制御するためのメカニズムを示す模式図である。
【図15】状況依存行動階層において使用されるスキーマのクラス定義を示す模式図である。
【図16】状況依存行動階層内のクラスの機能的構成を示す模式図である。
【図17】スキーマのReentrant性を説明する図である。
【図18】(a)及(b)は、本発明の実施の形態における行動制御を説明する図である。
【符号の説明】
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)、101 熟考行動階層、102 状況依存行動階層(SBL)、103 反射行動部
【発明の属する技術分野】
本発明は、ロボット装置、その制御方法及びプログラムに関し、特に、人間や動物を模倣したエンターテイメント性を有するロボット装置、その制御方法及びプログラムに関する。
【0002】
【従来の技術】
電気的又は磁気的な作用を用いて人間(生物)の動作に似た運動を行う機械装置を「ロボット装置」という。我が国においてロボット装置が普及し始めたのは、1960年代末からであるが、その多くは、工場における生産作業の自動化・無人化等を目的としたマニピュレータ及び搬送ロボット装置等の産業用ロボット装置(Industrial Robot)であった。
【0003】
最近では、人間のパートナーとして生活を支援する、即ち住環境その他の日常生活上の様々な場面における人的活動を支援する実用ロボット装置の開発が進められている。このような実用ロボット装置は、産業用ロボット装置とは異なり、人間の生活環境の様々な局面において、個々に個性の相違した人間、又は様々な環境への適応方法を自ら学習する能力を備えている。例えば、犬又は猫のように4足歩行の動物の身体メカニズム及びその動作を模した「ペット型」ロボット装置、或いは、2足直立歩行を行う人間等の身体メカニズム及びその動作をモデルにしてデザインされた「人間型」又は「人間形」ロボット装置(Humanoid Robot)等のロボット装置は、既に実用化されつつある。
【0004】
これらのロボット装置は、産業用ロボット装置と比較して、例えばエンターテインメント性を重視した様々な動作等を行うことができるため、エンターテインメントロボット装置と呼称される場合もある。また、そのようなロボット装置には、外部からの情報及び内部の状態に応じて自律的に動作するものがある。
【0005】
ところで、かかるペットロボット装置においては、人間又は本物の犬や猫などのように、現在の状況に応じた最適な次の行動及び動作を行わせる機能や、過去の経験に基づいて次の行動及び動作を変化させる機能を搭載することができれば、より一層の親近感や満足感をユーザに与えて、ペットロボット装置としてのアミューズメント性をより向上させることができる。そこで、このようなアミューズメント性の向上を図ったロボット装置及びその制御方法が下記特許文献1に記載されている。
【0006】
この特許文献1に記載されたロボット装置においては、複数種類の行動モデルを有し、行動選択手段を用いて、外部からの入力情報と自己の行動履歴及び又は成長履歴との少なくとも一方に基づいて、各行動モデルの出力の中から1つの行動モデルの出力を選択するよう構成されており、これにより、現在の状況に応じた最適な次の行動を連続して行わせることができる。
【0007】
【特許文献1】
特開2001−157981号公報
【0008】
【発明が解決しようとする課題】
ところで、上記特許文献1等に記載の従来のロボット装置においては、予め定められた優先順位の高い行動モデルから出力された行動を選択するようになされているものの、選択された行動は、所定の終了条件を満たすまで行われる。又は所定の移行条件を満たすまでは次の行動に移行せず、同じ行動が継続される。即ち、ロボット装置は、自身がやりたいと判断した行動を選択することができるが、これを終了するには、選択した行動の終了又は移行条件を満たす必要があった。従って、選択した行動が終了又は移行条件を満たすまでは、他の行動が発現されずに同じ行動をやり続けていた。
【0009】
しかしながら、一度選択されて発現されている行動を、人間等と同様に例えばうまくできなければ、不快になる、悲しくなる等の感情を有して、これを動作に反映させることができれば、うまくできない行動は途中で止めてしまったり、これをユーザに伝えたりすることができ、より人間又は犬や猫等の動物の行動に模したものとなり、更に一層の親近感や満足感をユーザに与えることができて、エンターテイメント性を更に向上させることができる。
【0010】
本発明は、このような従来の実情に鑑みて提案されたものであり、行動の発現中においても、外部環境及び自身の内部状態を考慮することができ、これを行動に反映させ多彩な行動バリエーションを持たせ、更にエンターテイメント性を向上することができるロボット装置、その制御方法及びプログラムを提供することを目的とする。
【0011】
【課題を解決するための手段】
上述した目的を達成するために、本発明に係るロボット装置は、所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するロボット装置において、上記複数の動作から発現する動作を選択する選択手段と、上記選択手段に選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出手段と、上記フラストレーション値に応じて上記選択された動作を変化させる制御手段を有することを特徴とする。
【0012】
本発明においては、所定の終了条件を有する動作、即ち、所定の目的を達成するための動作を複数有し、動作開始後の経過時間に応じて変動するフラストレーション値を算出し、これを使用することによって、動作を変化させることができ、例えば、一度選択された動作を途中で停止させたり、又は当該動作の選択を所定期間禁止したり、更には、そのような場合に違う行動を選択する状況を作り出したり、また、上記フラストレーション値に応じて感情(内部状態)を変化させてこれを動作に反映させたりすることができ、例えば、当該動作の選択を所定期間禁止することで、この所定期間内に再度同じ状況・同じ条件になった場合に繰り返し同じ動作を選択するのを防ぐことができる。
【0013】
本発明に係るロボット装置の制御方法は、所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するロボット装置の制御方法において、上記複数の動作から発現する動作を選択する選択工程と、上記選択工程にて選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出工程と、上記フラストレーション値に応じて上記選択された動作を変化させる制御工程を有することを特徴とする。
【0014】
また、本発明に係るプログラムは、上述した制御処理をコンピュータに実行させるものである。
【0015】
【発明の実施の形態】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、ロボット装置自身の内部の状態を得る手段をもち、その内部状態と、ロボット装置の外部の状況から行動を選択するロボット装置において、心理学の観念を取り入れたフラストレーションという値を使用することによって、行動実行中の内部状態を行動に反映させ、例えば選択された行動を途中で終了することが可能になる等、多彩な動作バリエーションを有するロボット装置及びその行動制御方法に適用したものである。
【0016】
ここでは先ず、このようなロボット装置の好適な構成、及び制御システムについて説明し、次に本実施の形態におけるフラストレーション値を算出可能なロボット装置について詳細に説明する。
【0017】
(1)ロボット装置の構成
図1は、本実施の形態のロボット装置の外観を示す斜視図である。図1に示すように、ロボット装置1は、体幹部ユニット2の所定の位置に頭部ユニット3が連結されると共に、左右2つの腕部ユニット4R/Lと、左右2つの脚部ユニット5R/Lが連結されて構成されている(但し、R及びLの各々は、右及び左の各々を示す接尾辞である。)。
【0018】
図2は、本実施の形態におけるロボット装置1の機能構成を模式的に示すブロック図である。図2に示すように、ロボット装置1は、全体の動作の統括的制御及びその他のデータ処理を行う制御ユニット20と、入出力部40と、駆動部50と、電源部60とで構成される。以下、各部について説明する。
【0019】
入出力部40は、入力部として人間の目に相当し、外部の状況を撮影するCCDカメラ15、及び耳に相当するマイクロフォン16や頭部や背中等の部位に配設され、所定の押圧を受けるとこれを電気的に検出することで、ユーザの接触を感知するタッチ・センサ18、前方に位置する物体までの距離を測定するための距離センサ、五感に相当するその他の各種のセンサ等を含む。また、出力部として、頭部ユニット3に備えられ、人間の口に相当するスピーカ17、及び人間の目の位置に設けられ、感情表現や視覚認識状態を表現する例えばLEDインジケータ(目ランプ)19等を装備しており、これら出力部は、音声やLEDインジケータ19の点滅等、脚等による機械運動パターン以外の形式でもロボット装置1からのユーザ・フィードバックを表現することができる。
【0020】
例えば頭部ユニットの頭頂部の所定箇所に複数のタッチ・センサ18を設け、各タッチ・センサ18における接触検出を複合的に活用して、ユーザからの働きかけ、例えばロボット装置1の頭部を「撫でる」「叩く」「軽く叩く」等を検出することができ、例えば、押圧センサのうちの幾つかが所定時間をおいて順次接触したことを検出した場合、これを「撫でられた」と判別し、短時間のうちに接触を検出した場合、「叩かれた」と判別する等場合分けし、これに応じて内部状態も変化し、このような内部状態の変化に応じて動作を発現することができる。
【0021】
駆動部50は、制御ユニット20が指令する所定の運動パターンに従ってロボット装置1の機体動作を実現する機能ブロックであり、行動制御による制御対象である。駆動部50は、ロボット装置1の各関節における自由度を実現するための機能モジュールであり、それぞれの関節におけるロール、ピッチ、ヨー等各軸毎に設けられた複数の駆動ユニット541〜54nで構成される。各駆動ユニット541〜54nは、所定軸回りの回転動作を行うモータ511〜51nと、モータ511〜51nの回転位置を検出するエンコーダ521〜52nと、エンコーダ521〜52nの出力に基づいてモータ511〜51nの回転位置や回転速度を適応的に制御するドライバ531〜53nとの組み合わせで構成される。
【0022】
本ロボット装置1は、2足歩行としたが、駆動ユニットの組み合わせ方によって、ロボット装置1を例えば4足歩行等の脚式移動ロボット装置として構成することもできる。
【0023】
電源部60は、その字義通り、ロボット装置1内の各電気回路等に対して給電を行う機能モジュールである。本実施の形態に係るロボット装置1は、バッテリを用いた自律駆動式であり、電源部60は、充電バッテリ61と、充電バッテリ61の充放電状態を管理する充放電制御部62とで構成される。
【0024】
充電バッテリ61は、例えば、複数本のリチウムイオン2次電池セルをカートリッジ式にパッケージ化した「バッテリ・パック」の形態で構成される。
【0025】
また、充放電制御部62は、バッテリ61の端子電圧や充電/放電電流量、バッテリ61の周囲温度等を測定することでバッテリ61の残存容量を把握し、充電の開始時期や終了時期等を決定する。充放電制御部62が決定する充電の開始及び終了時期は制御ユニット20に通知され、ロボット装置1が充電オペレーションを開始及び終了するためのトリガとなる。
【0026】
制御ユニット20は、人間の「頭脳」に相当し、例えばロボット装置1の機体頭部あるいは胴体部等に搭載することができる。
【0027】
図3は、制御ユニット20の構成を更に詳細に示すブロック図である。図3に示すように、制御ユニット20は、メイン・コントローラとしてのCPU(Central Processing Unit)21が、メモリ及びその他の各回路コンポーネントや周辺機器とバス接続された構成となっている。バス28は、データ・バス、アドレス・バス、コントロール・バス等を含む共通信号伝送路である。バス28上の各装置にはそれぞれに固有のアドレス(メモリ・アドレス又はI/Oアドレス)が割り当てられている。CPU21は、アドレスを指定することによってバス28上の特定の装置と通信することができる。
【0028】
RAM(Random Access Memory)22は、DRAM(Dynamic RAM)等の揮発性メモリで構成された書き込み可能メモリであり、CPU21が実行するプログラム・コードをロードしたり、実行プログラムによる作業データの一時的に保存そたりするために使用される。
【0029】
ROM(Read Only Memory)23は、プログラムやデータを恒久的に格納する読み出し専用メモリである。ROM23に格納されるプログラム・コードには、ロボット装置1の電源投入時に実行する自己診断テスト・プログラムや、ロボット装置1の動作を規定する動作制御プログラム等が挙げられる。
【0030】
ロボット装置1の制御プログラムには、カメラ15やマイクロフォン16等のセンサ入力を処理してシンボルとして認識する「センサ入力・認識処理プログラム」、短期記憶や長期記憶等の記憶動作(後述)を司りながらセンサ入力と所定の行動制御モデルとに基づいてロボット装置1の行動(動作)を制御する「行動制御プログラム」、行動制御モデルに従って各関節モータの駆動やスピーカ17の音声出力等を制御する「駆動制御プログラム」等が含まれる。
【0031】
不揮発性メモリ24は、例えばEEPROM(Electrically Erasable and Programmable ROM)のように電気的に消去再書き込みが可能なメモリ素子で構成され、逐次更新すべきデータを不揮発的に保持するために使用される。逐次更新すべきデータには、暗号鍵やその他のセキュリティ情報、出荷後にインストールすべき装置制御プログラム等が挙げられる。
【0032】
インターフェース25は、制御ユニット20外の機器と相互接続し、データ交換を可能にするための装置である。インターフェース25は、例えば、カメラ15、マイクロフォン16、又はスピーカ17等との間でデータ入出力を行う。また、インターフェース25は、駆動部50内の各ドライバ531〜53nとの間でデータやコマンドの入出力を行う。
【0033】
また、インターフェース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カードやメモリ・スティックを受容するメモリ・カード・インターフェース(カード・スロット)等のような、コンピュータの周辺機器接続用の汎用インターフェースを備え、ローカル接続された外部機器との間でプログラムやデータの移動を行うようにしてもよい。
【0034】
また、インターフェース25の他の例として、赤外線通信(IrDA)インターフェースを備え、外部機器と無線通信を行うようにしてもよい。
【0035】
更に、制御ユニット20は、無線通信インターフェース26やネットワーク・インターフェース・カード(NIC)27等を含み、Bluetoothのような近接無線データ通信や、IEEE 802.11bのような無線ネットワーク、あるいはインターネット等の広域ネットワークを経由して、外部のさまざまなホスト・コンピュータとデータ通信を行うことができる。
【0036】
このようなロボット装置1とホスト・コンピュータ間におけるデータ通信により、遠隔のコンピュータ資源を用いて、ロボット装置1の複雑な動作制御を演算したり、リモート・コントロールしたりすることができる。
【0037】
(2)ロボット装置の制御システム
次に、ロボット装置の制御システムについて説明する。図4は、本実施の形態におけるロボット装置1の制御システム10の機能構成を示す模式図である。本実施の形態におけるロボット装置1は、外部刺激の認識結果や内部状態の変化に応じて、動作制御を行なうことができるものである。また、長期記憶機能を備え、外部刺激から内部状態の変化を連想記憶することにより、外部刺激の認識結果や内部状態の変化に応じて動作制御を行うことができる。
【0038】
ここで、外的刺激とは、ロボット装置1がセンサ入力を認識して得られた知覚情報であり、例えば、カメラ15から入力された画像に対して処理された色情報、形情報、顔情報等であり、より具体的には、色、形、顔、3D一般物体、ハンドジェスチャー、動き、音声、接触、匂い、味等の構成要素からなる。
【0039】
また、内的状態とは、例えば、ロボット装置の身体に基づいた本能や感情等の情動を指す。本能的要素は、例えば、疲れ(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)のうちの少なくとも1つである。
【0040】
図示の制御システム10には、オブジェクト指向プログラミングを採り入れて実装することができる。この場合、各ソフトウェアは、データとそのデータに対する処理手続きとを一体化させた「オブジェクト」というモジュール単位で扱われる。また、各オブジェクトは、メッセージ通信と共有メモリを使ったオブジェクト間通信方法によりデータの受け渡しとInvokeを行なうことができる。
【0041】
制御システム10は、外部環境(Environments)70を認識するために、視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83等からなる機能モジュールである状態認識部80を備えている。
【0042】
視覚認識機能部(Video)81は、例えば、CCD(Charge Coupled Device:電荷結合素子)カメラのような画像入力装置を介して入力された撮影画像を基に、顔認識や色認識等の画像認識処理や特徴抽出を行う。また、聴覚認識機能部(Audio)82は、マイク等の音声入力装置を介して入力される音声データを音声認識して、特徴抽出したり、単語セット(テキスト)認識を行ったりする。更に、接触認識機能部(Tactile)83は、例えば機体の頭部等に内蔵された接触センサによるセンサ信号を認識して、「なでられた」とか「叩かれた」という外部刺激を認識する。
【0043】
内部状態管理部(ISM:Internal Status Manager)91は、上述した本能や感情といった数種類の情動を数式モデル化して管理しており、上述の視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83によって認識された外部刺激(ES:ExternalStimula)に応じてロボット装置1の本能や情動といった内部状態を管理する。
【0044】
このような感情モデルと本能モデルは、それぞれ認識結果と行動(動作)履歴を入力に持ち、感情値と本能値を管理している。行動モデルは、これら感情値や本能値を参照することができる。
【0045】
また、外部刺激の認識結果や内部状態の変化に応じて動作制御を行なうために、時間の経過とともに失われる短期的な記憶を行なう短期記憶部(STM:Short Term Memory)92と、情報を比較的長期間保持するための長期記憶部(LTM:Long Term Memory)93を備えている。短期記憶と長期記憶という記憶メカニズムの分類は神経心理学に依拠する。
【0046】
短期記憶部92は、上述の視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83によって外部環境から認識されたターゲットやイベントを短期間保持する機能モジュールである。例えば、図2に示すカメラ15からの入力画像を約15秒程度の短い期間だけ記憶する。
【0047】
長期記憶部93は、物の名前等学習により得られた情報を長期間保持するために使用される。長期記憶部93は、例えば、ある行動記述モジュールにおいて外部刺激から内部状態の変化を連想記憶することができる。
【0048】
また、本ロボット装置1の動作制御は、反射行動部(Reflexive Situated Behaviors Layer)103によって実現される「反射行動」と、状況依存行動階層(SBL:Situated Behaviors Layer)102によって実現される「状況依存行動」と、熟考行動階層(Deliberative Layer)101によって実現される「熟考行動」に大別される。
【0049】
反射行動部103は、上述の視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83によって認識された外部刺激に応じて反射的な機体動作を実現する機能モジュールである。反射行動とは、基本的に、センサ入力された外部情報の認識結果を直接受けて、これを分類して、出力行動(動作)を直接決定する行動のことである。例えば、人間の顔を追いかけたり、うなずいたりといった振る舞いは反射行動として実装することが好ましい。
【0050】
状況依存行動階層102は、短期記憶部92及び長期記憶部93の記憶内容や、内部状態管理部91によって管理される内部状態を基に、ロボット装置1が現在置かれている状況に即応した行動を制御する。
【0051】
状況依存行動階層102は、目的に応じた行動(動作)が記述された複数の行動記述モジュール(スキーマ)を有し、各行動(スキーマ)毎にステートマシンを用意しており、それ以前の動作や状況に依存して、センサ入力された外部情報の認識結果を分類して、動作を機体上で発現する。また、状況依存行動階層102は、内部状態をある範囲に保つための行動(「ホメオスタシス行動」とも呼ぶ)も実現し、内部状態が指定した範囲内を越えた場合には、その内部状態を当該範囲内に戻すための行動が出現し易くなるようにその行動を活性化させる(実際には、内部状態と外部環境の両方を考慮した形で行動(動作)が選択される)。
【0052】
具体的には、各スキーマが、内部状態の変化及び外部刺激に基づき、そのスキーマの実行優先度を示す活動度レベル(アクティベーションレベル:activation level、以下ALともいう。)を算出し、このアクティベーションレベルが高いスキーマが1以上選択され、選択された動作が発現されるようになされている。即ち、例えばアクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた2以上のスキーマを選択して並列的に実行したりすることができる(但し、並列実行するときは各スキーマどうしでハードウェアリソースの競合がないことを前提とする)。この状況依存行動は、反射行動に比し、反応時間が遅い。
【0053】
熟考行動階層101は、短期記憶部92及び長期記憶部93の記憶内容に基づいて、ロボット装置1の比較的長期にわたる行動計画等を行う。熟考行動とは、与えられた状況あるいは人間からの命令により、推論やそれを実現するための計画を立てて行われる行動のことである。例えば、ロボット装置の位置と目標の位置から経路を探索することは熟考行動に相当する。このような推論や計画は、ロボット装置1がインタラクションを保つための反応時間よりも処理時間や計算負荷を要する(すなわち処理時間がかかる)可能性があるので、上記の反射行動や状況依存行動がリアルタイムで反応を返しながら、熟考行動は推論や計画を行う。
【0054】
熟考行動階層101、状況依存行動階層102、及び反射行動部103は、ロボット装置1のハードウェア構成に非依存の上位のアプリケーション・プログラムとして記述することができる。これに対し、ハードウェア依存層制御部(Configuration Dependent Actions And Reactions)104は、これら上位アプリケーション、即ち、行動記述モジュール(スキーマ)からの命令に応じて、関節アクチュエータの駆動等の機体のハードウェア(外部環境)を直接操作する。このような構成により、ロボット装置1は、制御プログラムに基づいて自己及び周囲の状況を判断し、使用者からの指示及び働きかけに応じて自律的に行動できる。
【0055】
次に、行動制御システム10について更に詳細に説明する。図5は、本実施の形態における行動制御システム10のオブジェクト構成を示す模式図である。
【0056】
図5に示すように、視覚認識機能部81は、Face Detector114、Mulit Color Tracker113、Face Identify115という3つのオブジェクトで構成される。
【0057】
Face Detector114は、画像フレーム中から顔領域を検出するオブジェクトであり、検出結果をFace Identify115に出力する。Mulit Color Tracker113は、色認識を行うオブジェクトであり、認識結果をFace Identify115及びShort Term Memory(STM)92に出力する。また、Face Identify115は、検出された顔画像を手持ちの人物辞書で検索する等して人物の識別を行ない、顔画像領域の位置、大きさ情報とともに人物のID情報をSTM92に出力する。
【0058】
聴覚認識機能部82は、Audio Recog111とSpeech Recog112という2つのオブジェクトで構成される。Audio Recog111は、マイク等の音声入力装置からの音声データを受け取って、特徴抽出と音声区間検出を行うオブジェクトであり、音声区間の音声データの特徴量及び音源方向をSpeech Recog112やSTM92に出力する。Speech Recog112は、Audio Recog111から受け取った音声特徴量と音声辞書及び構文辞書を使って音声認識を行うオブジェクトであり、認識された単語のセットをSTM92に出力する。
【0059】
触覚認識記憶部83は、接触センサからのセンサ入力を認識するTactile Sensor119というオブジェクトで構成され、認識結果はSTM92や内部状態を管理するオブジェクトであるInternal State Model(ISM)91に出力する。
【0060】
STM92は、短期記憶部を構成するオブジェクトであり、上述の認識系の各オブジェクトによって外部環境から認識されたターゲットやイベントを短期間保持(例えばカメラ15からの入力画像を約15秒程度の短い期間だけ記憶する)する機能モジュールであり、STMクライアントであるSBL102に対して外部刺激の通知(Notify)を定期的に行なう。
【0061】
LTM93は、長期記憶部を構成するオブジェクトであり、物の名前等学習により得られた情報を長期間保持するために使用される。LTM93は、例えば、ある行動記述モジュール(スキーマ)において外部刺激から内部状態の変化を連想記憶することができる。
【0062】
ISM91は、内部状態管理部を構成するオブジェクトであり、本能や感情といった数種類の情動を数式モデル化して管理しており、上述の認識系の各オブジェクトによって認識された外部刺激(ES:External Stimula)に応じてロボット装置1の本能や情動といった内部状態を管理する。
【0063】
SBL102は状況依存型行動階層を構成するオブジェクトである。SBL102は、STM92のクライアント(STMクライアント)となるオブジェクトであり、STM92からは定期的に外部刺激(ターゲットやイベント)に関する情報の通知(Notify)を受け取ると、スキーマ(Schema)すなわち実行すべき行動記述モジュールを決定する(後述)。
【0064】
ReflexiveSBL(Situated Behaviors Layer)103は、反射的行動部を構成するオブジェクトであり、上述した認識系の各オブジェクトによって認識された外部刺激に応じて反射的・直接的な機体動作を実行する。例えば、人間の顔を追いかけたり、うなずく、障害物の検出により咄嗟に避けるといった振る舞いを行なう。
【0065】
SBL102は外部刺激や内部状態の変化等の状況に応じた動作を選択する。これに対し、ReflexiveSBL103は、外部刺激に応じて反射的な動作を選択する。これら2つのオブジェクトによる行動選択は独立して行なわれるため、互いに選択された行動記述モジュール(スキーマ)を機体上で実行する場合に、ロボット装置1のハードウェア・リソースが競合して実現不可能なこともある。RM(Resource Manager)116というオブジェクトは、SBL102とReflexiveSBL103とによる行動選択時のハードウェアの競合を調停する。そして、調停結果に基づいて機体動作を実現する各オブジェクトに通知することにより機体が駆動する。
【0066】
Sound Performer172、Motion Controller173、LEDController174は、機体動作を実現するオブジェクトである。Sound Performer172は、音声出力を行うためのオブジェクトであり、RM116経由でSBL102から与えられたテキスト・コマンドに応じて音声合成を行い、ロボット装置1の機体上のスピーカから音声出力を行う。また、Motion Controller173は、機体上の各関節アクチュエータの動作を行なうためのオブジェクトであり、RM116経由でSBL102から手や脚等を動かすコマンドを受けたことに応答して、該当する関節角を計算する。また、LEDController174は、LED19の点滅動作を行なうためのオブジェクトであり、RM116経由でSBL102からコマンドを受けたことに応答してLED19の点滅駆動を行なう。
【0067】
(2−1)状況依存行動制御
次に、状況依存行動階層について更に詳細に説明する。図6には、状況依存行動階層(SBL)(但し、反射行動部を含む)による状況依存行動制御の形態を模式的に示している。認識系の視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83の機能モジュールによる外部環境70の認識結果(センサ情報)182は、外部刺激183として状況依存行動階層(反射行動部103を含む)102aに与えられる。また、認識系による外部環境70の認識結果に応じた内部状態の変化184も状況依存行動階層102aに与えられる。そして、状況依存行動階層102aでは、外部刺激183や内部状態の変化184に応じて状況を判断して、行動選択を実現することができる。
【0068】
図7には、図6に示した反射行動部103を含む状況依存行動階層(SBL)102aによる行動制御の基本的な動作例を示している。同図に示すように、状況依存行動階層102aでは、外部刺激183や内部状態の変化184によって各行動記述モジュール(スキーマ)のアクティベーションレベルを算出して、アクティベーションレベルの度合いに応じてスキーマを選択して行動(動作)を実行する。アクティベーションレベルの算出には、例えばライブラリ185を利用することにより、すべてのスキーマについて統一的な計算処理を行なうことができる(以下、同様)。例えば、アクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた2以上のスキーマを選択して並列的に行動実行するようにしてもよい(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0069】
また、図8には、図6に示した状況依存行動階層102aにより反射行動を行なう場合の動作例を示している。この場合、同図に示すように、状況依存行動階層102aに含まれる反射行動部(ReflexiveSBL)103は、認識系の各オブジェクトによって認識された外部刺激183を直接入力としてアクティベーションレベルを算出して、アクティベーションレベルの度合いに応じてスキーマを選択して行動を実行する。この場合、内部状態の変化184は、アクティベーションレベルの計算には使用されない。
【0070】
また、図9には、図6に示した状況依存行動階層102により感情表現を行なう場合の動作例を示している。内部状態管理部91では、本能や感情等の情動を数式モデルとして管理しており、情動パラメータの状態値が所定値に達したことに応答して、状況依存行動階層102に内部状態の変化184を通知(Notify)する。状況依存行動階層102は、内部状態の変化184を入力としてアクティベーションレベルを算出して、アクティベーションレベルの度合いに応じてスキーマを選択して行動を実行する。この場合、認識系の各オブジェクトによって認識された外部刺激183は、内部状態管理部(ISM)91における内部状態の管理・更新に利用されるが、スキーマのアクティベーションレベルの算出には使用されない。
【0071】
(2−2)スキーマ
図10には、状況依存行動階層102が複数のスキーマ132によって構成されている様子を模式的に示している。状況依存行動階層102は、各行動記述モジュール、即ちスキーマ毎にステートマシンを用意しており、それ以前の行動(動作)や状況に依存して、センサ入力された外部情報の認識結果を分類し、動作を機体上で発現する。スキーマは、外部刺激や内部状態に応じた状況判断を行なうMonitor機能と、行動実行に伴う状態遷移(ステートマシン)を実現するAction機能とを備えたスキーマ(Schema)132として記述される。
【0072】
状況依存行動階層102b(より厳密には、状況依存行動階層102のうち、通常の状況依存行動を制御する階層)は、複数のスキーマ132が階層的に連結されたツリー構造として構成され、外部刺激や内部状態の変化に応じてより最適なスキーマ132を統合的に判断して行動制御を行なうようになっている。ツリー300は、例えば動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリー(又は枝)を含んでいる。
【0073】
図11には、状況依存行動階層102におけるスキーマのツリー構造を模式的に示している。同図に示すように、状況依存行動階層102は、短期記憶部92から外部刺激の通知(Notify)を受けるルート・スキーマ2011、2021、2031を先頭に、抽象的な行動カテゴリから具体的な行動カテゴリに向かうように、各階層毎にスキーマが配設されている。例えば、ルート・スキーマの直近下位の階層では、「探索する(Investigate)」、「食べる(Ingestive)」、「遊ぶ(Play)」というスキーマ2012、2022、2032が配設される。そして、スキーマ2012「探索する(Investigate)」の下位には、「InvestigativeLocomotion」等というより具体的な探索行動を記述した複数のスキーマ2013が配設されている。同様に、スキーマ2022「食べる(Ingestive)」の下位には「Eat」や「Drink」等のより具体的な飲食行動を記述した複数のスキーマ2023が配設され、スキーマ2032「遊ぶ(Play)」の下位には「PlayBowing」、「PlayGreeting」等のより具体的な遊ぶ行動を記述した複数のスキーマ2033が配設されている。
【0074】
図示の通り、各スキーマは外部刺激183と内部状態(の変化)184を入力している。また、各スキーマは、少なくともMonitor関数とActionと関数を備えている。
【0075】
ここで、Monitor関数とは、外部刺激183と内部状態184に応じて当該スキーマのアクティベーションレベル(Activation Level:AL値)を算出する関数である。図11に示すようなツリー構造を構成する場合、上位(親)のスキーマは外部刺激183と内部状態184を引数として下位(子供)のスキーマのMonitor関数をコールすることができ、子供のスキーマはアクティベーションレベルを返り値とする。また、スキーマは自分のアクティベーションレベルを算出するために、更に子供のスキーマのMonitor関数をコールすることができる。そして、ルートのスキーマには各サブツリーからのアクティベーションレベルが返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断することができる。
【0076】
例えばアクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた2以上のスキーマを選択して並列的に行動実行するようにしてもよい(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0077】
また、Action関数は、スキーマ自身が持つ行動を記述したステートマシンを備えている。図11に示すようなツリー構造を構成する場合、親スキーマは、Action関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。本実施の形態では、ActionのステートマシンはReadyにならないと初期化されない。言い換えれば、中断しても状態はリセットされず、スキーマが実行中の作業データを保存することから、中断再実行が可能である。
【0078】
図12には、状況依存行動階層102において通常の状況依存行動を制御するためのメカニズムを模式的に示している。
【0079】
同図に示すように、状況依存行動階層(SBL)102には、短期記憶部(STM)92から外部刺激183が入力(Notify)されるとともに、内部状態管理部91から内部状態の変化184が入力される。状況依存行動階層102は、例えば動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリーで構成されており、ルート・スキーマは、外部刺激183の通知(Notify)に応答して、各サブツリーのMonitor関数をコールし、その返り値としてのアクティベーションレベル(AL)値を参照して、統合的な行動選択を行ない、選択された行動を実現するサブツリーに対してAction関数をコールする。また、状況依存行動階層102において決定された状況依存行動は、リソース・マネージャRM116により反射行動部103による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller)に適用される。
【0080】
また、状況依存行動層102のうち、反射的行動部103は、上述した認識系の各オブジェクトによって認識された外部刺激183に応じて、例えば、障害物の検出により咄嗟に避ける等、反射的・直接的な機体動作を実行する。このため、図11に示す通常の状況依存行動を制御する場合とは相違し、図10に示すように、認識系の各オブジェクトからの信号を直接入力する複数のスキーマ142が階層化されずに並列的に配置されている。
【0081】
図13には、反射行動部103におけるスキーマの構成を模式的に示している。同図に示すように、反射行動部103には、聴覚系の認識結果に応答して動作するスキーマとしてAvoid Big Sound204、Face to Big Sound205及びNodding Sound209、視覚系の認識結果に応答して動作するスキーマとしてFace to Moving Object206及びAvoid Moving Object207、並びに、触覚系の認識結果に応答して動作するスキーマとして手を引っ込める208が、それぞれ対等な立場で(並列的に)配設されている。
【0082】
図示の通り、反射的行動を行なう各スキーマは外部刺激183を入力に持つ。また、各スキーマは、少なくともMonitor関数とAction関数を備えている。Monitor関数は、外部刺激183に応じて当該スキーマのアクティベーションレベルを算出して、これに応じて該当する反射的行動を発現すべきかどうかが判断される。また、Action関数は、スキーマ自身が持つ反射的行動を記述したステートマシン(後述)を備えており、コールされることにより、該当する反射的行動を発現するとともにActionの状態を遷移させていく。
【0083】
図14には、反射行動部103において反射的行動を制御するためのメカニズムを模式的に示している。図13にも示したように、反射行動部103内には、反応行動を記述したスキーマや、即時的な応答行動を記述したスキーマが並列的に存在している。認識系の機能モジュール80を構成する各オブジェクトから認識結果が入力されると、対応する反射行動スキーマがAonitor関数によりアクティベーションレベルを算出し、その値に応じてActionを軌道すべきかどうかが判断される。そして、反射行動部103において起動が決定された反射的行動は、リソース・マネージャRM116により状況依存行動階層102による状況依存行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller173)に適用される。
【0084】
状況依存行動階層102及び反射行動部103を構成するスキーマは、例えばC++言語ベースで記述される「クラス・オブジェクト」として記述することができる。図15には、状況依存行動階層102において使用されるスキーマのクラス定義を模式的に示している。同図に示されている各ブロックはそれぞれ1つのクラス・オブジェクトに相当する。
【0085】
図示の通り、状況依存行動階層(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とを備えている。
【0086】
Schema Handler212は、状況依存行動階層(SBL)102や反射行動部103を構成する各スキーマやツリー構造等の情報(SBLのコンフィギュレーション情報)をファイルとして保管している。例えばシステムの起動時等に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、図11に示したような状況依存行動階層102のスキーマ構成を構築(再現)して、メモリ空間上に各スキーマのエンティティをマッピングする。
【0087】
各スキーマは、スキーマのベースとして位置付けられるOpenR_Guest215を備えている。OpenR_Guest215は、スキーマが外部にデータを送信するためのDsubject216、並びに、スキーマが外部からデータを受信するためのDObject217というクラス・オブジェクトをそれぞれ1以上備えている。例えば、スキーマが、SBL102の外部オブジェクト(STMやLTM、認識系の各オブジェクト等)にデータを送るときには、Dsubject216はSend Data Handler214に送信データを書き込む。また、DObject217は、SBL102の外部オブジェクトから受信したデータをReceive Data Handler213から読み取ることができる。
【0088】
Schema Manager218及びSchema Base219は、ともにOpenR_Guest215を継承したクラス・オブジェクトである。クラス継承は、元のクラスの定義を受け継ぐことであり、この場合、OpenR_Guest215で定義されているDsubject216やDObject217等のクラス・オブジェクトをSchema Manager Base218やSchema Base219も備えていることを意味する(以下、同様)。例えば図11に示すように複数のスキーマがツリー構造になっている場合、Schema Manager Base218は、子供のスキーマのリストを管理するクラス・オブジェクトSchema List220を持ち(子供のスキーマへのポインタを持ち)、子供スキーマの関数をコールすることができる。また、Schema Base219は、親スキーマへのポインタを持ち、親スキーマからコールされた関数の返り値を戻すことができる。
【0089】
Schema Base219は、State Machine221及びPronome222という2つのクラス・オブジェクトを持つ。State Machine221は当該スキーマの行動(Action関数)についてのステートマシンを管理している。親スキーマは子供スキーマのAction関数のステートマシンを切り替える(状態遷移させる)ことができる。また、Pronome222には、当該スキーマが行動(Action関数)を実行又は適用するターゲットを代入する。後述するように、スキーマはPronome222に代入されたターゲットによって占有され、行動(動作)が終了(完結、異常終了等)するまでスキーマは解放されない。新規のターゲットのために同じ行動を実行するためには同じクラス定義のスキーマをメモリ空間上に生成する。この結果、同じスキーマをターゲット毎に独立して実行することができ(個々のスキーマの作業データが干渉し合うことはなく)、行動のReentrance性が確保される(後述)。
【0090】
Parent Schema Base223は、Schema Manager218及びSchema Base219を多重継承するクラス・オブジェクトであり、スキーマのツリー構造において、当該スキーマ自身についての親スキーマ及び子供スキーマすなわち親子関係を管理する。
【0091】
Intermediate Parent Schema Base224は、Parent Schema Base223を継承するクラス・オブジェクトであり、各クラスのためのインターフェース変換を実現する。また、Intermediate Parent Schema Base224は、Schema Status Info225を持つ。このSchema Status Info225は、当該スキーマ自身のステートマシンを管理するクラス・オブジェクトである。親スキーマは、子供スキーマのAction関数をコールすることによってそのステートマシンの状態を切り換えることができる。また、子供スキーマのMonitor関数をコールしてそのステートマシンの常態に応じたアクティベーションレベルを問うことができる。但し、スキーマのステートマシンは、前述したAction関数のステートマシンとは異なるということを留意されたい。
【0092】
And Parent Schema226、Num Or Parent Schema227、Or Parent Schema228は、Intermediate Parent Schema Base224を継承するクラス・オブジェクトである。And Parent Schema226は、同時実行する複数の子供スキーマへのポインタを持つ。Or Parent Schema228は、いずれか択一的に実行する複数の子供スキーマへのポインタを持つ。また、Num Or Parent Schema227は、所定数のみを同時実行する複数の子供スキーマへのポインタを持つ。
【0093】
Parent Schema229は、これらAnd Parent Schema226、Num Or Parent Schema227、Or Parent Schema228を多重継承するクラス・オブジェクトである。
【0094】
図16には、状況依存行動階層(SBL)102内のクラスの機能的構成を模式的に示している。状況依存行動階層(SBL)102は、STMやLTM、リソース・マネージャ、認識系の各オブジェクト等外部オブジェクトからデータを受信する1以上のReceive Data Handler(RDH)213と、外部オブジェクトにデータを送信する1以上のSend Data Handler(SDH)214とを備えている。
【0095】
Event Data Handler(EDH)211は、SBL102の入出力イベントに対してIDを割り振るためのクラス・オブジェクトであり、RDH213やSDH214から入出力イベントの通知を受ける。
【0096】
Schema Handler212は、スキーマ132を管理するためのクラス・オブジェクトであり、SBL102を構成するスキーマのコンフィギュレーション情報をファイルとして保管している。例えばシステムの起動時等に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、SBL102内のスキーマ構成を構築する。
【0097】
各スキーマは、図15に示したクラス定義に従って生成され、メモリ空間上にエンティティがマッピングされる。各スキーマは、OpenR_Guest215をベースのクラス・オブジェクトとし、外部にデータ・アクセスするためのDSubject216やDObject217等のクラス・オブジェクトを備えている。
【0098】
スキーマ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():ツリー全体のターゲットを決定する関数
【0099】
(2−3)状況依存行動階層の機能
状況依存行動階層(SBL)102は、短期記憶部92及び長期記憶部93の記憶内容や、内部状態管理部91によって管理される内部状態を基に、ロボット装置1が現在置かれている状況に即応した動作を制御する。
【0100】
前項で述べたように、本実施の形態における状況依存行動階層102は、スキーマのツリー構造(図11を参照のこと)で構成されている。各スキーマは、自分の子供と親の情報を知っている状態で独立性を保っている。このようなスキーマ構成により、状況依存行動階層102は、Concurrentな評価、Concurrentな実行、Preemption、Reentrantという主な特徴を持っている。以下、これらの特徴について詳解する。
【0101】
(2−3−1)Concurrentな評価:
行動記述モジュールとしてのスキーマは外部刺激や内部状態の変化に応じた状況判断を行なうMonitor機能を備えていることは既に述べた。Monitor機能は、スキーマがクラス・オブジェクトSchema BaseでMonitor関数を備えていることにより実装されている。Monitor関数とは、外部刺激と内部状態に応じて当該スキーマのアクティベーションレベルを算出する関数である。
【0102】
図11に示すようなツリー構造を構成する場合、上位(親)のスキーマは外部刺激183と内部状態の変化184を引数として下位(子供)のスキーマのMonitor関数をコールすることができ、子供のスキーマはアクティベーションレベルを返り値とする。また、スキーマは自分のアクティベーションレベルを算出するために、更に子供のスキーマのMonitor関数をコールすることができる。そして、ルートのスキーマ2011〜2031には各サブツリーからのアクティベーションレベルが返されるので、外部刺激183と内部状態の変化184に応じた最適なスキーマすなわち動作を統合的に判断することができる。
【0103】
このようにツリー構造になっていることから、外部刺激183と内部状態の変化184による各スキーマの評価は、まずツリー構造の下から上に向かってConcurrentに行なわれる。即ち、スキーマに子供スキーマがある場合には、選択した子供のMonitor関数をコールしてから、自身のMonitor関数を実行する。次いで、ツリー構造の上から下に向かって評価結果としての実行許可を渡していく。評価と実行は、その動作が用いるリソースの競合を解きながら行なわれる。
【0104】
本実施の形態における状況依存行動階層102は、スキーマのツリー構造を利用して、並列的に行動の評価を行なうことができるので、外部刺激183や内部状態の変化184等の状況に対しての適応性がある。また、評価時には、ツリー全体に関しての評価を行ない、このとき算出されるアクティベーションレベル(AL)値によりツリーが変更されるので、スキーマすなわち実行する動作を動的にプライオリタイズすることができる。
【0105】
(2−3−2)Concurrentな実行:
ルートのスキーマには各サブツリーからのアクティベーションレベルが返されるので、外部刺激183と内部状態の変化184に応じた最適なスキーマすなわち動作を統合的に判断することができる。例えばアクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた2以上のスキーマを選択して並列的に行動実行するようにしてもよい(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0106】
実行許可をもらったスキーマは実行される。すなわち、実際にそのスキーマは更に詳細の外部刺激183や内部状態の変化184を観測して、コマンドを実行する。実行に関しては、ツリー構造の上から下に向かって順次すなわちConcurrentに行なわれる。即ち、スキーマに子供スキーマがある場合には、子供のActions関数を実行する。
【0107】
Action関数は、スキーマ自身が持つ行動(動作)を記述したステートマシンを備えている。図11に示すようなツリー構造を構成する場合、親スキーマは、Action関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。
【0108】
本実施の形態における状況依存行動階層(SBL)102は、スキーマのツリー構造を利用して、リソースが競合しない場合には、余ったリソースを使う他のスキーマを同時に実行することができる。但し、Goalまでに使用するリソースに対して制限を加えないと、ちぐはぐな行動出現が起きる可能性がある。状況依存行動階層102において決定された状況依存行動は、リソース・マネージャにより反射行動部(ReflexiveSBL)103による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller)に適用される。
【0109】
(2−3−3)Preemption:
1度実行に移されたスキーマであっても、それよりも重要な(優先度の高い)行動があれば、スキーマを中断してそちらに実行権を渡さなければならない。また、より重要な行動が終了(完結又は実行中止等)したら、元のスキーマを再開して実行を続けることも必要である。
【0110】
このような優先度に応じたタスクの実行は、コンピュータの世界におけるOS(オペレーティング・システム)のPreemptionと呼ばれる機能に類似している。OSでは、スケジュールを考慮するタイミングで優先度のより高いタスクを順に実行していくという方針である。
【0111】
これに対し、本実施の形態におけるロボット装置1の制御システム10は、複数のオブジェクトにまたがるため、オブジェクト間での調停が必要になる。例えば反射行動を制御するオブジェクトである反射行動部103は、上位の状況依存行動を制御するオブジェクトである状況依存行動階層102の行動評価を気にせずに物を避けたり、バランスをとったりする必要がある。これは、実際に実行権を奪い取り実行を行なう訳であるが、上位の行動記述モジュール(SBL)に、実行権利が奪い取られたことを通知して、上位はその処理を行なうことによってPreemptiveな能力を保持する。
【0112】
また、状況依存行動層102内において、外部刺激183と内部状態の変化184に基づくアクティベーションレベルの評価の結果、あるスキーマに実行許可がなされたとする。更に、その後の外部刺激183と内部状態の変化184に基づくアクティベーションレベルの評価により、別のスキーマの重要度の方がより高くなったとする。このような場合、実行中のスキーマのActions関数を利用してSleep状態にして中断することにより、Preemptiveな行動の切り替えを行なうことができる。
【0113】
実行中のスキーマのActions()の状態を保存して、異なるスキーマのActions()を実行する。また、異なるスキーマのActions()が終了した後、中断されたスキーマのActions()を再度実行することができる。
【0114】
また、実行中のスキーマのActions()を中断して、異なるスキーマに実行権が移動する前に、SleepActions()を実行する。例えば、ロボット装置1は、対話中にサッカーボールを見つけると、「ちょっと待ってね」と言って、サッカーすることができる。
【0115】
(2−3−4)Reentrant:
状況依存行動階層102を構成する各スキーマは、一種のサブルーチンである。スキーマは、複数の親からコールされた場合には、その内部状態を記憶するために、それぞれの親に対応した記憶空間を持つ必要がある。
【0116】
これは、コンピュータの世界では、OSが持つReentrant性に類似しており、本明細書ではスキーマのReentrant性と呼ぶ。図16に示したように、スキーマ132はクラス・オブジェクトで構成されており、クラス・オブジェクトのエンティティすなわちインスタンスをターゲット(Pronome)毎に生成することによりReentrant性が実現される。
【0117】
スキーマのReentrant性について、図17を参照しながらより具体的に説明する。Schema Handler212は、スキーマを管理するためのクラス・オブジェクトであり、SBL102を構成するスキーマのコンフィギュレーション情報をファイルとして保管している。システムの起動時に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、SBL102内のスキーマ構成を構築する。図17に示す例では、Eat221やDialog222等の行動(動作)を規定するスキーマのエンティティがメモリ空間上にマッピングされているとする。
【0118】
ここで、外部刺激183と内部状態の変化184に基づくアクティベーションレベルの評価により、スキーマDialog222に対してAというターゲット(Pronome)が設定されて、Dialog222が人物Aとの対話を実行するようになったとする。
【0119】
そこに、人物Bがロボット装置1と人物Aとの対話に割り込み、その後、外部刺激183と内部状態の変化184に基づくアクティベーションレベルの評価を行なった結果、Bとの対話を行なうスキーマ223の方がより優先度が高くなったとする。
【0120】
このような場合、Schema Handler212は、Bとの対話を行なうためのクラス継承した別のDialogエンティティ(インスタンス)をメモリ空間上にマッピングする。別のDialogエンティティを使用して、先のDialogエンティティとは独立して、Bとの対話を行なうことから、Aとの対話内容は破壊されずに済む。従って、DialogAはデータの一貫性を保持することができ、Bとの対話が終了すると、Aとの対話を中断した時点から再開することができる。
【0121】
Readyリスト内のスキーマは、その対象物(外部刺激183)に応じて評価すなわちアクティベーションレベルの計算が行なわれ、実行権が引き渡される。その後、Readyリスト内に移動したスキーマのインスタンスを生成して、これ以外の対象物に対して評価を行なう。これにより、同一のスキーマをactive又はsleep状態にすることができる。
【0122】
(3)ロボット装置への本発明の適用
次に、上述のようなロボット装置に本発明を適用した例について詳細に説明する。本実施の形態におけるロボット装置は、ロボット装置自身の内部の情報を得る手段をもち、その内部情報と、ロボットの外部の情報から発現する動作を選択するロボット装置において、上述したように、内部状態をある範囲に保つための行動を行うものであり、動作を実行したときに、その動作によって満たすとされる内部状態が満たされない場合、即ち、所定時間経過しても、所定の目的を達成できない(終了条件を満たさない)場合は、その経過時間に応じて変化するフラストレーション値を算出し、このフラストレーション値に基づき発現する動作を変化させるものである。
【0123】
上述したように、本実施の形態におけるロボット装置は自身の内外の情報を考慮したうえで動作選択を行うアルゴリズムとしてSBLを有する。SBLは、スキーマツリーを有し、各スキーマは、外部刺激と内部状態に応じ、上述したように、各スキーマのやりたさ度合い(実行優先度)を示すアクティベーションレベルを算出する。
【0124】
ここで、各スキーマは、各種センサ等の外部入力装置(状態認識部)から入力された外部情報(外部刺激)と、ロボット装置の内部情報(自らの内部状態パラメータ及び感情パラメータの算出を行う感情・本能モデルから得られた内部状態パラメータ)、即ちロボットの一次情動(本能)の満足度、及びそれによって変化する二次情動(感情)の値との双方に応じて、アクティベーションレベルを算出する。
【0125】
アクティベーションレベルは、外部からの刺激、対象物があればその物理的な外部情報、現在の内部状態、及びロボット装置自身が有する記憶(過去の履歴)等を利用して算出されるもので、例えば、現在の状況においてロボット装置がその動作を発現することが可能か否か(やれることができるか否か)を示すReleaseValueと、ロボット装置自身がやりたいか否かを示すMotivationValueとに基づき算出することができる。
【0126】
ReleaseValueは、外部からの刺激、対象物があればその物理的な外部情報(対象物の有無、対象物との間の距離、対象物の色及び形状等)及び各記憶部からの記憶に基づく値が例えば加算される等して算出されるものであり、例えば、ボールを蹴る動作を発現するスキーマは、カメラ等によりボールを認識できない期間は自身の動作(ボールを蹴る動作)を発現できないと判定し、その値を小さくすることができる。
【0127】
また、MotivationValueは、ロボットの内部状態、即ち、上述した内部状態管理部における本能・感情モデルにおいて算出された本能(欲求)値及び感情(情動)値に基づき算出されるもので、例えば、ボールを蹴るスキーマは、バッテリの充電が充分であったり、好きな色のボールを発見した場合にボールを蹴りたいという欲求が大きくなり、その値が大きくなる。本実施の形態のロボット装置の感情モデルは、「喜び(Joy)」、「悲しみ(Sadness)」、「怒り(Anger)」、「驚き(Surprise)」、「嫌悪(Disgust)」及び「恐れ(Fear)」の合計6つの情動について、各情動毎にその情動の強さを表すパラメータを保持し、本能モデルは、「運動欲(exercise)」、「愛情欲(affection)」、「食欲(appetite)」及び「好奇心(curiosity)」の互いに独立した4つの欲求について、これら欲求毎にその欲求の強さを表すパラメータを保持しており、これらの各値に基づきMotivationValueを算出することができる。
【0128】
上述したように、ロボット装置は、このようにして算出されたアクティベーションレベルの大小で実行するスキーマ(行動)を選択するように構成することができる。選択されたスキーマは、自身に記述された行動(動作)を発現する。各スキーマは行動を発現すると、自身の目的を果たすまで、即ち、所定の終了条件又は次の動作へ移行するための移行条件(以下、単に終了又は移行条件という。)を満たすまで行動を継続して発現する。ここで、ロボット装置は、各スキーマが自身の動作が終了又は移行条件を満たすことで、内部状態のある種の欲求、例えば、上述した「喜び」等の情動値や、「運動欲」等の欲求値を変動させるように構成される。
【0129】
具体的には、例えば、機体動作として「ボールを探す」という動作が記述されている場合、カメラの画像等によって「ボールを発見する」という終了条件を有し、この終了条件を満たすまで、ボールを探し続ける。又は、所定の条件が次の動作に移行するための移行条件となっている場合、即ち「ボールを発見する」ことが、次の「ボールを蹴る」という動作に移行するための移行条件となっている場合があり、この場合も、この移行条件を満たすまで、次の動作に移行ぜずに動作を継続し続ける。そして終了又は移行条件を満たすことで、「喜び」等の感情値を上昇させたり、「運動欲」等の欲求値を満たしたりすることができる。
【0130】
ここで、発現した動作を途中で停止(中断)するためには、外部からの刺激等、何らかの条件により、発火中のスキーマより、発火していない他のスキーマのアクティベーションレベルを高くする必要があり、このような場合には、発火中のスキーマを中断して、アクティベーションレベルが高くなった方のスキーマを起動することができる。具体的には、ロボット装置がサッカーをするスキーマを起動させてサッカーをしている最中に、ユーザに話しかけられて、サッカーをするスキーマのアクティベーションレベルより、ユーザとの対話を行うスキーマのアクティベーションレベルが高くなる等である。
【0131】
このように、動作が終了又は途中で停止するためには、所定の終了又は移行条件を満たすか、又は外部からの刺激が必要である。しかしながら、この方法では「やりたい」と主張することはできるが、途中でその動作を止める等「やめたい」ことを主張することができない。
【0132】
ところで、外部状況の変化や自身の行動の制限等の様々な要因から、選択された動作の終了又は移行条件を満たすのが困難な場合が存在する。そこで、このような場合に、終了又は移行条件を満たしていなくてもその動作を途中で停止し、次の動作を発現するというストラテジーを取るために、本発明においては、フラストレーション値という値を導入する。このフラストレーション値により、動作中であっても外部状況の変化や内部状態の変化に応じて、発現中の動作を停止させる等、動作を変化させることができる。
【0133】
フラストレーションは、心理学で「欲求満足行動を何らかの事情で阻害された時の状態、欲求不満(フラストレーション)状態」と位置付けられており、その状態になった場合、攻撃、代償、迂回、逃避反応などの反応を示すとされている。本実施の形態においては、これらを参考に、ロボット装置におけるフラストレーション状態とその際の振る舞い(フラストレーション反応)を定めるものとする。
【0134】
次に、本実施の形態におけるフラストレーション値を有するスキーマの動作について詳細に説明する。先ず、ロボット装置の複数のスキーマの中で、アクティベーションレベルが例えば最も大きいスキーマAが選択されて実行される。このスキーマAに記述された動作が最後まで実行されると欲求αを満たすと予測されているが、なかなか欲求αを満たす方向に変化させることができない場合、経過時間に応じてそのスキーマAを実行することに対するフラストレーション値Fを増加させる。
【0135】
図18(a)及び図18(b)は、本実施の形態における行動制御を説明する図である。図18(a)に示すように、SBLは、動作が実行されると満たす欲求=αのスキーマA、Bを有するスキーマツリー310と、動作が実行されると満たす欲求=βのスキーマB、Cを有するスキーマツリー320とを有している。各スキーマA、B、C、Dには、自身の行動を終了するまでの許容時間t1が例えばt1=5〜30秒等として設定され、フラストレーション値Fの閾値が例えばFth=100〜200等として設定され、更に各スキーマが上記Fthを超えた場合に、行動を停止する動作停止時間t2が例えばt2=30〜120秒等として設定されているものとする。これらのフラストレーション値Fの閾値、許容時間t1及び停止時間t2は、各スキーマ毎に可変設定されるものとする。
【0136】
スキーマAのアクティベーションレベルが外部刺激又は内部状態に応じて上昇して選択されると、スキーマAは行動を発現する。ここで、行動を発現してから許容時間t1=30sを経過しても行動が達成できない場合、即ち、スキーマAによって満たされるはずである欲求αが得られない場合、スキーマAのフラストレーション値Fを増加させる。フラストレーション値は、例えばシグモイド関数等、経過時間に応じて増加する関数等を使用して、各スキーマ自身又はその他の制御手段において算出することができる。このフラストレーション値を算出するための所定の増加関数においても、各スキーマ毎に個別に異なる関数を設定したり、該関数に使用する各種パラメータをスキーマ毎に個別に設定したりすることができる。
【0137】
ここで、例えば、スキーマAのフラストレーション値Fは、選択される前までと選択されてから許容期間t1(=30s)の間とは、F=0とし、許容期間t1以降は、その経過時間に応じて増大させるように設定される。なお、選択された時刻を基準にその後の経過時間に応じて増大させるように設定してもよい。
【0138】
そして、スキーマAは、スキーマAのフラストレーション値Fが閾値Fthを超えた時刻から所定の動作停止時間t2(=120s)の間は、スキーマAに記述された動作を発現しないものとする。
【0139】
即ち、動作停止時間t2の間は、スキーマAのアクティベーションレベルに拘わらず、スキーマAの動作を発現することを停止し、スキーマAの選択を禁止するものとする。以下、このように、スキーマAの動作を制限することをスキーマAにペナルティを与えるともいう。
【0140】
SBLでは、スキーマツリー310,320のように、通常は、各スキーマが満たす、例えば「運動欲(exercise)」、「愛情欲(affection)」、「食欲(appetite)」又は「好奇心(curiosity)」等の欲求の種類毎に異なるスキーマツリーを有しており、スキーマAの選択が禁止された場合、この間は、スキーマAと同じ欲求αを満たすスキーマのうち、最もアクティベーションレベルが高いスキーマBが選択される。
【0141】
この際、スキーマAと同じ欲求αを有するスキーマが選択されるよう、欲求αを有するスキーマツリー310を構成する各スキーマ(図18(a)においては、スキーマBのみ図示)のアクティベーションレベルALを、スキーマAの期間t2の間のみ、例えば50等、上昇させる。このようにすることで、スキーマAと同じ欲求αを有するスキーマを選択されやすくすることができる。こうして、図18(b)においては、スキーマAと同じ欲求αを有するスキーマBが選択される。
【0142】
また、スキーマAと同じ欲求αのスキーマが存在しない場合、又は、スキーマAと同じ欲求αを有するスキーマのアクティベーションレベルを上昇させても、他の欲求βを有するスキーマのアクティベーションレベルの方が高い場合等においては、スキーマAとは異なる欲求を有するスキーマを選択するようにしてもよい。
【0143】
このように、スキーマは、その機体動作を発現した後、所定の時間t1を経過しても、所定の終了又は移行条件を満たさない場合、欲求を満たす方向に変化させることができないものとし、フラストレーション値を増加させることにより、このフラストレーション値に応じて発現する動作を変化させることができる。
【0144】
そして、フラストレーション値が所定の閾値を超えた場合には、スキーマAに一定期間、動作の発現を禁止してペナルティを与えるだけではなく、上述した攻撃、代償、迂回、逃避反応等のフラストレーション反応にあたる反応を表現するよう設定することができる。例えば、攻撃反応であれば対象物を攻撃する、代償反応であればスキーマA以外のスキーマで、スキーマAと同じ欲求Aを満たすと予測されるスキーマBを実行する等である。
【0145】
また、図18(a)に示すスキーマツリー310のように、スキーマツリー310に属するいずれかのスキーマが選択され、該スキーマのフラストレーション値Fが所定の閾値を超えた場合にのみ選択されて、フラストレーション反応を表現する動作が記述されスキーマEを設け、欲求αを有するスキーマのフラストレーション値Fが所定の閾値を超えた場合にこれを選択するようにしてもよい。このスキーマEは、例えば各スキーマツリー(各欲求)に対して1つずつ設けて、そのスキーマツリーにおけるスキーマが満たすとされる欲求が満たされなかった場合に選択されるようにしてもよいし、各スキーマ毎に個別に設けてもよい。
【0146】
更に、各スキーマに対して、本来の機体動作(第1の機体動作)と共に、このような場合にのみ発現するようフラストレーション反応を示す機体動作(第2の機体動作)を記述しておいてもよい。又は、スキーマAの下層に、スキーマAのフラストレーション反応を行う1以上のスキーマを用意し、フラストレーション値Fが閾値Fthを超えると、それらのフラストレーション反応用のスキーマをコールするようにしてもよい。
【0147】
更にまた、このフラストレーション値をロボット装置の内部状態に反映させることで、フラストレーション値に応じて様々な動作を発現させることができる。例えば、動作が終了した時点、即ち所定の終了又は移行条件を満たした時点でのフラストレーション値が0である場合、「満足」又は「うれしい」等の情動値を上昇させ、これを動作に反映させるようにしてもよい。
【0148】
(3−1)実施の形態の第1の具体例:ボールを蹴るスキーマを実行しているのにボールが蹴れない場合
ボールを蹴るスキーマS1が選択され、そのスキーマS1の動作終了又は移行条件がボールを蹴ることであったとする。しかし、スキーマS1の実行中に照明条件の変化等からボールが見えなくなってしまったり、ボールとの間の距離が測れなかったりした場合、ボールを蹴ることが困難になる。こうして、これだけ与えればボールを蹴れるであろうと予測されて設定された許容時間t1を超えた場合であってもボールが蹴れない場合、フラストレーション値Fを増加させる。そして、このフラストレーション値が上記閾値Fthを超えた場合、スキーマS1の動作、即ちボールを蹴る動作を停止させ、このスキーマS1を一定時間t2選択させないようにし、スキーマS1以外の他のスキーマを選択させたり、このような場合のために代償行動を表現する代償スキーマを用意しておき、これを起動させたり、例えば「怒る」、「悲しい」等の感情を表現するスキーマをコールして、このような感情を動作に反映させたりする。これにより、例えば「がんばったけどうまくできなかったから怒ってほかの事をする」ように見える。
【0149】
(3−2)実施の形態の第2の具体例:おしゃべりスキーマを実行しているのに返事をしてくれない場合
おしゃべりスキーマS2が選択され、そのスキーマS2の終了条件又は移行条件が「人が返事をする」ことであるとする。ロボット装置が一生懸命話し掛けても、ユーザが返事をしてくれない場合等には、この条件を満たすことができない。この場合においても、ロボット装置が返事を待つことができる許容時間t1を定めておき、その許容時間t1を超えた場合にフラストレーション値Fを増加させ、このフラストレーション値Fが閾値Fthを超えたときまでに返事をもらうことができなかった場合、スキーマS2を一定時間t2選択させないようにし、次の行動をスキーマS2以外のスキーマより選択させるようにする。これにより、この時間t2の間に、例えば、他のユーザから話かけられた場合においても、お話するスキーマS2は、起動が停止されているため、ロボット装置は、これを無視することで、例えば「怒っている」ように見える。また、フラストレーションを感情に反映させると共に、他のスキーマを選択したり、代償スキーマを起動したりすることで、例えば「がんばったけど返事してくれなかったから悲しくなって他のことをする」ように見える。
【0150】
本実施の形態においては、このようなフラストレーション値を算出し、更に、スキーマ毎に、異なるフラストレーション値の閾値や、許容時間t1及び動作停止時間t2等を設定することにより、例えばスキーマAのフラストレーション値が上昇した場合、スキーマAの動作を所定時間t2停止し、スキーマAと同じ欲求αを有する他のスキーマBを選択するようにすることができ、スキーマAが所定の終了又は移行条件を満たさない場合には、同じ動作をやり続けることを防止し、同じ欲求を満たす他のスキーマBを起動させる等してロボット装置が自分で行動を「止める」ことが可能となると共に、やめ方においても、多くのバリエーションを持たせることが可能となる。
【0151】
また、フラストレーション値Fの閾値Fthを超えた場合に行うフラストレーション反応を複数用意したり、このフラストレーション反応として表出する動作として、上述したように、他のスキーマの中から、アクティベーションレベルに基づいて選択したり、欲求の種類を考慮して選択したりすることで、より多くのフラストレーション反応を持たせることが可能となる。こうして、選択した行動ができなかったことによる感情変化の実現が可能となるため、ロボット装置がより知的に見える手助けとなる。
【0152】
更に、同様の環境・条件で同一の動作が繰り返し発現されることを防止することができので、ユーザのロボット装置に対する厭きを防止し、エンターテイメント性を更に向上することができる。
【0153】
【発明の効果】
以上詳細に説明したように本発明に係るロボット装置は、所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するロボット装置において、上記複数の動作から発現する動作を選択する選択手段と、上記選択手段に選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出手段と、上記フラストレーション値に応じて上記選択された動作を変化させる制御手段を有するので、選択された動作開始後の経過時間に応じて変動するフラストレーション値に応じて動作を変化させることができ、行動にバリエーションを持たせて更にエンターテイメント性を向上することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態におけるロボット装置の外観を示す斜視図である。
【図2】本発明の実施の形態におけるロボット装置の機能構成を模式的に示すブロック図である。
【図3】本発明の実施の形態におけるロボット装置の制御ユニットの構成を更に詳細に示すブロック図である。
【図4】本発明の実施の形態におけるロボット装置の行動制御システムの機能構成を示す模式図である。
【図5】本発明の実施の形態における行動制御システムのオブジェクト構成を示す模式図である。
【図6】本発明の実施の形態における状況依存行動階層による状況依存行動制御の形態を示す模式図である。
【図7】状況依存行動階層による行動制御の基本的な動作例を示す模式図である。
【図8】状況依存行動階層により反射行動を行なう場合の動作例を示す模式図である。
【図9】状況依存行動階層により感情表現を行なう場合の動作例を示す模式図である。
【図10】状況依存行動階層が複数のスキーマによって構成されている様子を示す模式図である。
【図11】状況依存行動階層におけるスキーマのツリー構造を示す模式図である。
【図12】状況依存行動階層において通常の状況依存行動を制御するためのメカニズムを示す模式図である。
【図13】反射行動部におけるスキーマの構成を示す模式図である。
【図14】反射行動部により反射的行動を制御するためのメカニズムを示す模式図である。
【図15】状況依存行動階層において使用されるスキーマのクラス定義を示す模式図である。
【図16】状況依存行動階層内のクラスの機能的構成を示す模式図である。
【図17】スキーマのReentrant性を説明する図である。
【図18】(a)及(b)は、本発明の実施の形態における行動制御を説明する図である。
【符号の説明】
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)、101 熟考行動階層、102 状況依存行動階層(SBL)、103 反射行動部
Claims (23)
- 所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するロボット装置において、
上記複数の動作から発現する動作を選択する選択手段と、
上記選択手段により選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出手段と、
上記フラストレーション値に応じて上記選択された動作を変化させる制御手段とを有することを特徴とするロボット装置。 - 上記フラストレーション値算出手段は、上記選択された動作が満たすとされる内部状態を満たさない場合、その経過時間に応じて上記フラストレーション値を算出することを特徴とする請求項1記載のロボット装置。
- 上記制御手段は、上記選択された動作の上記フラストレーション値が所定の閾値を超えた場合、上記選択手段が当該動作を選択することを所定期間禁止することを特徴とする請求項2記載のロボット装置。
- 上記制御手段は、上記選択された動作の上記フラストレーション値が所定の閾値を超えた場合、上記選択手段が当該動作とは異なる他の動作を選択するよう制御することを特徴とする請求項3記載のロボット装置。
- 上記フラストレーション値の閾値及び上記動作の選択が禁止される期間は、各動作毎に可変設定されるものであることを特徴とする請求項3記載のロボット装置。
- 上記選択された動作とは異なる他の動作は、上記選択された動作と同種の内部状態を満たすものであることを特徴とする請求項4記載のロボット装置。
- 外部刺激及び内部状態に基づき、各動作を発現する際の優先度を算出する優先度算出手段を有し、
上記選択手段は、上記優先度に基づき上記動作を選択することを特徴とする請求項1記載のロボット装置。 - 上記フラストレーション値に基づき内部状態を変化させることを特徴とする請求項1記載のロボット装置。
- 機体動作が記述され、外部刺激及び内部状態に基づき該機体動作を発現する優先度を示すアクティベーションレベルと、上記フラストレーション値とを算出する複数の行動記述モジュールを有することを特徴とする請求項1記載のロボット装置。
- 上記内部状態は、複数の情動を示すパラメータを有し、
上記情動を示すパラメータは、上記動作が終了するか又は次の動作に移行された場合に変動することを特徴とする請求項9記載のロボット装置。 - 上記行動記述モジュールは、自身のアクティベーションレベルに応じて選択されると発現する第1の機体動作と、自身のフラストレーション値が所定の閾値以上となった場合に、該第1の機体動作を停止して、代わりに発現する第2の機体動作とが記述されていることを特徴とする請求項10記載のロボット装置。
- 第1の機体動作及び該第1の機体動作が停止した場合に代わりに発現する第2の機体動作が記述された夫々第1の行動記述モジュール及び第2の行動記述モジュールを有し、
上記制御手段は、上記第1の行動記述モジュールのフラストレーション値が所定の閾値以上となった場合に、上記第1の機体動作を停止し、上記第2の行動記述モジュールを選択して上記第2の機体動作を発現させることを特徴とする請求項10記載のロボット装置。 - 上記第2の行動記述モジュールは、上記アクティベーションレベルが上記第1の行動記述モジュールの次に高い値を有することを特徴とする請求項12記載のロボット装置。
- 所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するロボット装置の制御方法において、
上記複数の動作から発現する動作を選択する選択工程と、
上記選択工程にて選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出工程と、
上記フラストレーション値に応じて上記選択された動作を変化させる制御工程とを有することを特徴とするロボット装置の制御方法。 - 上記フラストレーション値算出工程では、上記選択された動作が満たすとされる内部状態を満たさない場合、その経過時間に応じて上記フラストレーション値が算出されることを特徴とする請求項14記載のロボット装置の制御方法。
- 上記制御工程では、上記選択された動作の上記フラストレーション値が所定の閾値を超えた場合、当該動作を選択することが所定期間禁止されることを特徴とする請求項15記載のロボット装置の制御方法。
- 上記制御工程では、上記選択された動作の上記フラストレーション値が所定の閾値を超えた場合、当該動作とは異なる他の動作を選択するよう制御されることを特徴とする請求項16記載のロボット装置の制御方法。
- 上記フラストレーション値の閾値及び上記動作の選択が禁止される期間は、各動作毎に可変設定されるものであることを特徴とする請求項16記載のロボット装置の制御方法。
- 上記選択された動作とは異なる他の動作は、上記選択された動作と同種の内部状態を満たすものであることを特徴とする請求項17記載のロボット装置の制御方法。
- 外部刺激及び内部状態に基づき、各動作を発現する際の優先度を算出する優先度算出工程を有し、
上記選択工程では、上記優先度に基づき上記動作が選択されることを特徴とする請求項14記載のロボット装置の制御方法。 - 上記フラストレーション値に基づき内部状態を変化させることを特徴とする請求項14記載のロボット装置の制御方法。
- 上記選択工程では、外部刺激及び内部状態に基づき、行動記述モジュールにより算出される上記機体動作を発現する優先度を示すアクティベーションレベルに応じて上記動作が選択され、
上記フラストレーション値算出工程では、上記行動記述モジュールにより上記フラストレーション値が算出される
ことを特徴とする請求項21記載のロボット装置の制御方法。 - 所定の終了条件又は次の動作に移行する移行条件を有する複数の動作から選択された動作を発現するような動作をコンピュータに実行させるためのプログラムにおいて、
上記複数の動作から発現する動作を選択する選択工程と、
上記選択工程にて選択された後の経過時間に応じてフラストレーション値を算出するフラストレーション値算出工程と、
上記フラストレーション値に応じて上記選択された動作を変化させる制御工程とを有することを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003079144A JP2004283957A (ja) | 2003-03-20 | 2003-03-20 | ロボット装置、その制御方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003079144A JP2004283957A (ja) | 2003-03-20 | 2003-03-20 | ロボット装置、その制御方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004283957A true JP2004283957A (ja) | 2004-10-14 |
Family
ID=33293343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003079144A Withdrawn JP2004283957A (ja) | 2003-03-20 | 2003-03-20 | ロボット装置、その制御方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004283957A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101060155B1 (ko) | 2008-04-28 | 2011-08-29 | 한양대학교 산학협력단 | 가중치 기반의 행동-결합된 의미망 기술을 이용한 로봇의 대안 행동 결정 방법 |
JP2014098962A (ja) * | 2012-11-13 | 2014-05-29 | Sharp Corp | 行動制御装置、行動制御方法、および制御プログラム |
JP2020089929A (ja) * | 2018-12-04 | 2020-06-11 | カシオ計算機株式会社 | ロボット、ロボットの制御方法及びプログラム |
CN111515970A (zh) * | 2020-04-27 | 2020-08-11 | 腾讯科技(深圳)有限公司 | 一种互动方法、拟态机器人和相关装置 |
-
2003
- 2003-03-20 JP JP2003079144A patent/JP2004283957A/ja not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101060155B1 (ko) | 2008-04-28 | 2011-08-29 | 한양대학교 산학협력단 | 가중치 기반의 행동-결합된 의미망 기술을 이용한 로봇의 대안 행동 결정 방법 |
JP2014098962A (ja) * | 2012-11-13 | 2014-05-29 | Sharp Corp | 行動制御装置、行動制御方法、および制御プログラム |
JP2020089929A (ja) * | 2018-12-04 | 2020-06-11 | カシオ計算機株式会社 | ロボット、ロボットの制御方法及びプログラム |
JP7247560B2 (ja) | 2018-12-04 | 2023-03-29 | カシオ計算機株式会社 | ロボット、ロボットの制御方法及びプログラム |
CN111515970A (zh) * | 2020-04-27 | 2020-08-11 | 腾讯科技(深圳)有限公司 | 一种互动方法、拟态机器人和相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004268235A (ja) | ロボット装置、その行動制御方法及びプログラム | |
US7363108B2 (en) | Robot and control method for controlling robot expressions | |
KR101137205B1 (ko) | 로봇의 행동 제어 시스템 및 행동 제어 방법, 및 로봇 장치 | |
JP4244812B2 (ja) | 行動制御システム及びロボット装置の行動制御方法 | |
JP2005193331A (ja) | ロボット装置及びその情動表出方法 | |
US7076331B1 (en) | Robot, method of robot control, and program recording medium | |
US8145492B2 (en) | Robot behavior control system and method, and robot apparatus | |
US8538750B2 (en) | Speech communication system and method, and robot apparatus | |
JP2004283958A (ja) | ロボット装置、その行動制御方法及びプログラム | |
JP3558222B2 (ja) | ロボットの行動制御システム及び行動制御方法、並びにロボット装置 | |
JP2006110707A (ja) | ロボット装置 | |
JP2007125631A (ja) | ロボット装置及びその行動制御方法 | |
JP2021153680A (ja) | 機器の制御装置、機器、機器の制御方法及びプログラム | |
JP2007125629A (ja) | ロボット装置及びその行動制御方法 | |
JP2004283957A (ja) | ロボット装置、その制御方法、及びプログラム | |
JP4552465B2 (ja) | 情報処理装置、ロボット装置の行動制御方法、ロボット装置及びコンピュータ・プログラム | |
JP4147960B2 (ja) | ロボット装置、及びロボット装置の動作制御方法 | |
JP2004114285A (ja) | ロボット装置及びその行動制御方法 | |
JP2004283960A (ja) | ロボット装置、その行動制御方法、及びプログラム | |
JP2005321954A (ja) | ロボット装置、情報処理システム及び情報処理方法、並びにコンピュータ・プログラム | |
JP2004209599A (ja) | ロボット装置、ロボット装置の行動学習方法、ロボット装置の行動生成方法 | |
JP2001157980A (ja) | ロボット装置及びその制御方法 | |
JP2005193330A (ja) | ロボット装置及びその情動表出方法 | |
JP2007125630A (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 |