JP2004283958A - ロボット装置、その行動制御方法及びプログラム - Google Patents
ロボット装置、その行動制御方法及びプログラム Download PDFInfo
- Publication number
- JP2004283958A JP2004283958A JP2003079145A JP2003079145A JP2004283958A JP 2004283958 A JP2004283958 A JP 2004283958A JP 2003079145 A JP2003079145 A JP 2003079145A JP 2003079145 A JP2003079145 A JP 2003079145A JP 2004283958 A JP2004283958 A JP 2004283958A
- Authority
- JP
- Japan
- Prior art keywords
- action
- schema
- desire
- behavior
- 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)
- Toys (AREA)
Abstract
【課題】ユーザからの指示等の特定の外部刺激により動作を発現するように指定された場合であっても、外部状況及び自身の内部状態に応じた多様なバリエーションの動作を発現することが可能なロボット装置、その動作制御方法及びプログラムを提供する。
【解決手段】ロボット装置の行動制御システムは、行動が記述され複数のスキーマを有し、これら複数の行動のうち選択された行動を出力する。各スキーマは、内部状態や、ユーザの顔、対象物等の認識情報又はユーザからの指示等の外部刺激等から各行動のアクティベーションレベルALを算出し、このALに基づきスキーマが選択され行動を出力させるも有し、例えばユーザの指示により負の欲求を有するスキーマが選択された場合に、スキーマは自身に記述された行動をやりたくないというような負の欲求を示す行動を出力する。
【選択図】 図18
【解決手段】ロボット装置の行動制御システムは、行動が記述され複数のスキーマを有し、これら複数の行動のうち選択された行動を出力する。各スキーマは、内部状態や、ユーザの顔、対象物等の認識情報又はユーザからの指示等の外部刺激等から各行動のアクティベーションレベルALを算出し、このALに基づきスキーマが選択され行動を出力させるも有し、例えばユーザの指示により負の欲求を有するスキーマが選択された場合に、スキーマは自身に記述された行動をやりたくないというような負の欲求を示す行動を出力する。
【選択図】 図18
Description
【0001】
【発明の属する技術分野】
本発明は、人間や動物を模倣したエンターテイメント性を有するロボット装置、その制御方法及びプログラムに関し、特に、人間や動物と同様に、行動を発現することに対する欲求を有してこの欲求に基づき行動を選択して発現することができるロボット装置、その制御方法及びプログラムに関する。
【0002】
【従来の技術】
電気的又は磁気的な作用を用いて人間(生物)の動作に似た運動を行う機械装置を「ロボット装置」という。我が国においてロボット装置が普及し始めたのは、1960年代末からであるが、その多くは、工場における生産作業の自動化・無人化等を目的としたマニピュレータ及び搬送ロボット装置等の産業用ロボット装置(Industrial Robot)であった。
【0003】
最近では、人間のパートナーとして生活を支援する、即ち住環境その他の日常生活上の様々な場面における人的活動を支援する実用ロボット装置の開発が進められている。このような実用ロボット装置は、産業用ロボット装置とは異なり、人間の生活環境の様々な局面において、個々に個性の相違した人間、又は様々な環境への適応方法を自ら学習する能力を備えている。例えば、犬又は猫のように4足歩行の動物の身体メカニズム及びその動作を模した「ペット型」ロボット装置、或いは、2足直立歩行を行う人間等の身体メカニズム及びその動作をモデルにしてデザインされた「人間型」又は「人間形」ロボット装置(Humanoid Robot)等のロボット装置は、既に実用化されつつある。
【0004】
これらのロボット装置は、産業用ロボット装置と比較して、例えばエンターテインメント性を重視した様々な動作等を行うことができるため、エンターテインメントロボット装置と呼称される場合もある。また、そのようなロボット装置には、外部からの情報及び内部の状態に応じて自律的に動作するものがある。
【0005】
ところで、かかるペットロボット装置においては、人間又は本物の犬や猫などのように、現在の状況に応じた最適な次の行動及び動作を行わせる機能や、過去の経験に基づいて次の行動及び動作を変化させる機能を搭載することができれば、より一層の親近感や満足感をユーザに与えて、ペットロボット装置としてのアミューズメント性をより向上させることができる。そこで、このようなアミューズメント性の向上を図ったロボット装置及びその制御方法が下記特許文献1に記載されている。
【0006】
この特許文献1に記載されたロボット装置においては、複数種類の行動モデルを有し、行動選択手段を用いて、外部からの入力情報と自己の行動履歴及び又は成長履歴との少なくとも一方に基づいて、各行動モデルの出力の中から1つの行動モデルの出力を選択するよう構成されており、これにより、現在の状況に応じた最適な次の行動を連続して行わせることができる。
【0007】
【特許文献1】
特開2001−157981号公報
【0008】
【発明が解決しようとする課題】
しかしながら、上述のような従来のロボット装置は、やりたい行動を発現させるための優先順位が高い行動モデルを選択することを目的としたものであり、優先順位が低い行動、即ち、やりたくないと判断されている行動(動作)は、選択されることもなく、従ってあまり考慮されていなかった。従って、従来のロボット装置の行動選択においては、ユーザから「これやって」と指定された場合は、必ず該当する行動(動作)を取るようにプログラムされているため、外部状況及びロボット装置の内部状態に拘わらず、同様に、指定された行動をとることになり、このような固定的な応答のみではユーザにも厭きが生じ、エンターテイメント性に欠けるという問題点がある。
【0009】
即ち、やりたくないときにもやらなくていけない場合を設定した場合、例えば「一緒に遊ぼう」と言われても「疲れた」、「お腹が空いた」等の理由で「遊びたくない」等の負の欲求を持たせ、負の欲求に関してもロボット装置の行動に反映させることができれば、より人間又は、犬や猫等の動物の行動に模したものとなり、ユーザにより一層の親近感や満足感を与えることができ、更にエンターテイメント性を向上させることができる。
【0010】
本発明は、このような従来の実情に鑑みて提案されたものであり、ユーザからの指示等の特定の外部刺激により動作を発現するように指定された場合であっても、外部状況及び自身の内部状態に応じた多様なバリエーションの動作を発現することが可能なロボット装置、その動作制御方法及びプログラムを提供することを目的とする。
【0011】
【課題を解決するための手段】
上述した目的を達成するために、本発明に係るロボット装置は、内部状態及び外部刺激に基づき行動を選択し発現するロボット装置において、複数の行動が記述され、該複数の行動から選択された行動を出力する行動出力手段と、上記内部状態及び/又は外部刺激から各行動の実行優先度を算出する優先度算出手段とを有し、上記実行優先度は、各行動を発現することに対する正の欲求又は負の欲求を示し、上記行動出力手段は、選択された行動の実行優先度が負の欲求を示すものであるとき、当該選択された行動とは異なる行動を出力することを特徴とする。
【0012】
本発明においては、やりたい等の正の欲求のみでなく、やりたくない等の負の欲求をも有するため、この負の欲求を行動に反映させることができ、例えばユーザに指示される等の所定の外部刺激により指定された行動に対する欲求が負である場合、指定された行動をやりたくない等と音声でユーザに通知したりするような代償行動を発現することができる。
【0013】
本発明に係るロボット装置の行動制御方法は、内部状態及び外部刺激に基づき行動を選択し発現するロボット装置の行動制御方法において、上記内部状態及び/又は外部刺激から各行動の実行優先度を算出する優先度算出工程と、複数の行動から選択された行動を出力する行動出力工程とを有し、上記実行優先度は、各行動を発現することに対する正の欲求又は負の欲求を示し、上記行動出力工程では、上記選択された行動の実行優先度が負の欲求を示すものであるとき、当該選択された行動とは異なる行動を出力することを特徴とする。
【0014】
また、本発明に係るプログラムは、上述した動作制御処理をコンピュータに実行させるものである。
【0015】
【発明の実施の形態】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。本実施の形態のロボット装置は、内部状態に応じて自律的に行動することが可能なロボット装置において、例えば「やりたくない」等の負の欲求をも有し、これを表現することが可能なことを特徴とするものであるが、ここでは先ず、このようなロボット装置の好適な構成、及び制御システムについて説明し、次に本実施の形態における負の欲求を示すロボット装置について詳細に説明する。
【0016】
(1)ロボット装置の構成
図1は、本実施の形態のロボット装置の外観を示す斜視図である。図1に示すように、ロボット装置1は、体幹部ユニット2の所定の位置に頭部ユニット3が連結されると共に、左右2つの腕部ユニット4R/Lと、左右2つの脚部ユニット5R/Lが連結されて構成されている(但し、R及びLの各々は、右及び左の各々を示す接尾辞である。以下において同じ。)。
【0017】
図2は、本実施の形態におけるロボット装置1の機能構成を模式的に示すブロック図である。図2に示すように、ロボット装置1は、全体の動作の統括的制御及びその他のデータ処理を行う制御ユニット20と、入出力部40と、駆動部50と、電源部60とで構成される。以下、各部について説明する。
【0018】
入出力部40は、入力部として人間の目に相当し、外部の状況を撮影するCCDカメラ15、及び耳に相当するマイクロフォン16や頭部や背中等の部位に配設され、所定の押圧を受けるとこれを電気的に検出することで、ユーザの接触を感知するタッチ・センサ18、前方に位置する物体までの距離を測定するための距離センサ、五感に相当するその他の各種のセンサ等を含む。また、出力部として、頭部ユニット3に備えられ、人間の口に相当するスピーカ17、及び人間の目の位置に設けられ、感情表現や視覚認識状態を表現する例えばLEDインジケータ(目ランプ)19等を装備しており、これら出力部は、音声やLEDインジケータ19の点滅等、脚等による機械運動パターン以外の形式でもロボット装置1からのユーザ・フィードバックを表現することができる。
【0019】
例えば頭部ユニットの頭頂部の所定箇所に複数のタッチ・センサ18を設け、各タッチ・センサ18における接触検出を複合的に活用して、ユーザからの働きかけ、例えばロボット装置1の頭部を「撫でる」「叩く」「軽く叩く」等を検出することができ、例えば、押圧センサのうちの幾つかが所定時間をおいて順次接触したことを検出した場合、これを「撫でられた」と判別し、短時間のうちに接触を検出した場合、「叩かれた」と判別する等場合分けし、これに応じて内部状態も変化し、このような内部状態の変化に応じて動作を発現することができる。
【0020】
駆動部50は、制御ユニット20が指令する所定の運動パターンに従ってロボット装置1の機体動作を実現する機能ブロックであり、行動制御による制御対象である。駆動部50は、ロボット装置1の各関節における自由度を実現するための機能モジュールであり、それぞれの関節におけるロール、ピッチ、ヨー等各軸毎に設けられた複数の駆動ユニット541〜54nで構成される。各駆動ユニット541〜54nは、所定軸回りの回転動作を行うモータ511〜51nと、モータ511〜51nの回転位置を検出するエンコーダ521〜52nと、エンコーダ521〜52nの出力に基づいてモータ511〜51nの回転位置や回転速度を適応的に制御するドライバ531〜53nとの組み合わせで構成される。
【0021】
本ロボット装置1は、2足歩行としたが、駆動ユニットの組み合わせ方によって、ロボット装置1を例えば4足歩行等の脚式移動ロボット装置として構成することもできる。
【0022】
電源部60は、その字義通り、ロボット装置1内の各電気回路等に対して給電を行う機能モジュールである。本実施の形態に係るロボット装置1は、バッテリを用いた自律駆動式であり、電源部60は、充電バッテリ61と、充電バッテリ61の充放電状態を管理する充放電制御部62とで構成される。
【0023】
充電バッテリ61は、例えば、複数本のリチウムイオン2次電池セルをカートリッジ式にパッケージ化した「バッテリ・パック」の形態で構成される。
【0024】
また、充放電制御部62は、バッテリ61の端子電圧や充電/放電電流量、バッテリ61の周囲温度等を測定することでバッテリ61の残存容量を把握し、充電の開始時期や終了時期等を決定する。充放電制御部62が決定する充電の開始及び終了時期は制御ユニット20に通知され、ロボット装置1が充電オペレーションを開始及び終了するためのトリガとなる。
【0025】
制御ユニット20は、「頭脳」に相当し、例えばロボット装置1の機体頭部あるいは胴体部に搭載されている。
【0026】
図3は、制御ユニット20の構成を更に詳細に示すブロック図である。図3に示すように、制御ユニット20は、メイン・コントローラとしてのCPU(Central Processing Unit)21が、メモリ及びその他の各回路コンポーネントや周辺機器とバス接続された構成となっている。バス28は、データ・バス、アドレス・バス、コントロール・バス等を含む共通信号伝送路である。バス28上の各装置にはそれぞれに固有のアドレス(メモリ・アドレス又はI/Oアドレス)が割り当てられている。CPU21は、アドレスを指定することによってバス28上の特定の装置と通信することができる。
【0027】
RAM(Random Access Memory)22は、DRAM(Dynamic RAM)等の揮発性メモリで構成された書き込み可能メモリであり、CPU21が実行するプログラム・コードをロードしたり、実行プログラムによる作業データの一時的に保存そたりするために使用される。
【0028】
ROM(Read Only Memory)23は、プログラムやデータを恒久的に格納する読み出し専用メモリである。ROM23に格納されるプログラム・コードには、ロボット装置1の電源投入時に実行する自己診断テスト・プログラムや、ロボット装置1の動作を規定する動作制御プログラム等が挙げられる。
【0029】
ロボット装置1の制御プログラムには、カメラ15やマイクロフォン16等のセンサ入力を処理してシンボルとして認識する「センサ入力・認識処理プログラム」、短期記憶や長期記憶等の記憶動作(後述)を司りながらセンサ入力と所定の行動制御モデルとに基づいてロボット装置1の行動を制御する「行動制御プログラム」、行動制御モデルに従って各関節モータの駆動やスピーカ17の音声出力等を制御する「駆動制御プログラム」等が含まれる。
【0030】
不揮発性メモリ24は、例えばEEPROM(Electrically Erasable and Programmable ROM)のように電気的に消去再書き込みが可能なメモリ素子で構成され、逐次更新すべきデータを不揮発的に保持するために使用される。逐次更新すべきデータには、暗号鍵やその他のセキュリティ情報、出荷後にインストールすべき装置制御プログラム等が挙げられる。
【0031】
インターフェース25は、制御ユニット20外の機器と相互接続し、データ交換を可能にするための装置である。インターフェース25は、例えば、カメラ15、マイクロフォン16、又はスピーカ17等との間でデータ入出力を行う。また、インターフェース25は、駆動部50内の各ドライバ531〜53nとの間でデータやコマンドの入出力を行う。
【0032】
また、インターフェース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カードやメモリ・スティックを受容するメモリ・カード・インターフェース(カード・スロット)等のような、コンピュータの周辺機器接続用の汎用インターフェースを備え、ローカル接続された外部機器との間でプログラムやデータの移動を行うようにしてもよい。
【0033】
また、インターフェース25の他の例として、赤外線通信(IrDA)インターフェースを備え、外部機器と無線通信を行うようにしてもよい。
【0034】
更に、制御ユニット20は、無線通信インターフェース26やネットワーク・インターフェース・カード(NIC)27等を含み、Bluetoothのような近接無線データ通信や、IEEE 802.11bのような無線ネットワーク、あるいはインターネット等の広域ネットワークを経由して、外部のさまざまなホスト・コンピュータとデータ通信を行うことができる。
【0035】
このようなロボット装置1とホスト・コンピュータ間におけるデータ通信により、遠隔のコンピュータ資源を用いて、ロボット装置1の複雑な動作制御を演算したり、リモート・コントロールしたりすることができる。
【0036】
(2)ロボット装置の制御システム
次に、ロボット装置の行動(動作)制御システムについて説明する。なお、上述したように、本実施の形態におけるロボット装置は、外部刺激及び自身の内部状態から自律的に動作を発現するもののうち、より人間らしい行動を発現するよう、やりたくない等の負の欲求を有してこれを行動に反映させるものであるが、ここでは先ず、自律的に動作を発現するロボット装置の行動制御システムについて説明し、その後、負の欲求を行動に反映させる方法について説明する。
【0037】
図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に示すように、認識系の各オブジェクトからの信号を直接入力する複数のスキーマ132が階層化されずに並列的に配置されている。
【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】
(3−1)状況依存行動階層(Situated Behavior Layer:SBL)
上述したように、ロボット装置は自身の内外の情報を考慮したうえで行動判断を行うアルゴリズムとしてSBLを有する。SBLは、ダンスを踊るというような抽象的な意味を持つ単位から、実際に例えばアクチュエータの回転角度等、機体動作を指示するモーションコマンドを出力するというような具体的な意味を持つ単位まで、1つ1つの単位で独立した意味と機能を有する複数の行動記述モジュール(スキーマ)がツリー構造となって構成されている。各スキーマは、内部に行動のシーケンスを記述したステートマシンを備えており、外部環境から得たセンサ情報に基づいて得られた短期記憶の情報や、自らの身体情報を評価した結果得られた内部状態、今までの短期記憶、内部状態の経験を関連付けて保存しておくことにより得られた長期記憶の情報などを利用して状態遷移を行いながら、外部刺激や内部状態の変化に応じた状況判断を行い、行動の生成(選択)が行われる。
【0124】
通常、スキーマは、各種センサ等の外部入力装置(状態認識部)から入力された外部情報(外部刺激)と、ロボット装置の内部情報(自らの内部状態パラメータ及び感情パラメータの算出を行う感情・本能モデルから得られた内部状態パラメータ)、即ちロボットの一次情動(本能)の満足度、及びそれによって変化する二次情動(感情)の値との双方に応じて、各スキーマのやりたさ度合いを示す実行優先度(活動度レベル(アクティベーションレベル:Activation Level))を算出し、どのスキーマを実行するかが決定(選択)される。これによって外部入力(外部刺激)と、内部状態に応じて実際にどのような行動を行うのが自律的に判断され、ロボット装置本体、又はスピーカ若しくはLED等の表現手段を使用してその行動を実行する。
【0125】
このようなアクティベーションレベルは、現在の状況においてロボット装置がその動作を発現することが可能か否か(やれることができるか否か)を示す第1の欲求を示す値であるReleaseValue(RV)と、ロボット装置自身がやりたいか否かを示す第2の欲求を示す値である欲求値(MotivationValue:MV)とから算出される。
【0126】
ReleaseValue(RV)とは、外部からの刺激、対象物があればその物理的な外部情報(対象物の有無、対象物との間の距離、対象物の色及び形状等)及び各記憶部からの記憶に基づく値が例えば加算される等して算出されるものであり、例えば、ボールを蹴るスキーマは、その時点でカメラ等によりボールを認識できない場合は、動作を発現できないと判定し、その値が小さくなる。
【0127】
また、欲求値MVは、ロボットの内部状態、即ち、本能・感情モデルにおいて算出された本能(欲求)値及び感情(情動)値に基づき算出されるもので、例えば、ボールを蹴るスキーマは、バッテリの充電が充分であったり、好きな色のボールを発見した場合にボールを蹴りたいという欲求が大きくなり、その値が大きくなる。上述したように、ロボット装置の感情モデルは、例えば「喜び(Joy)」、「悲しみ(Sadness)」、「怒り(Anger)」、「驚き(Surprise)」、「嫌悪(Disgust)」及び「恐れ(Fear)」の合計6つの情動について、各情動毎にその情動の強さを表すパラメータを保持し、本能モデルは、「運動欲(exercise)」、「愛情欲(affection)」、「食欲(appetite)」及び「好奇心(curiosity)」の互いに独立した4つの欲求について、これら欲求毎にその欲求の強さを表すパラメータを保持しており、これらの各値に基づき欲求値MVが算出される。このような内部状態は、図4に示す内部状態管理部91により、外部刺激並びに例えば自身のバッテリの残量及びモータの回転角等の情報を入力とし、上述のような複数の内部状態に対応した値(内部状態ベクトル)が算出され、管理されている。
【0128】
(3−2)ロボット装置の動作及びその作用
スキーマの選択に際しては、スキーマ毎が有しているアクティベーションレベルの大小で、実行する行動(スキーマ)が選択されるようになっており、外部情報及び内部状態からスキーマ自身がアクティベーションレベルを算出し、これに基づき自律的に動作が発現される。一方で、ユーザに「○○をやって」と言われたら、該当するスキーマを実行する等、自律的な動作とは別に、命令に従って、即ち他律的な動作を発現するようにも設定されている。
【0129】
例えばこのようなユーザの指示に従うようにする場合、ロボット装置の各スキーマは、例えば後述するDeliberativeSBLにより、ユーザの指示に該当するスキーマのアクティベーションレベルを強制的に上昇させる(加算する)等して、その該当するスキーマが選択されやすくなるよう構成されており、従ってこのような方法においては、ロボット装置の各スキーマ自身が外部情報及び内部状態から算出するアクティベーションレベルに拘わらず、ロボット装置は指定された行動を実行することになる。
【0130】
そこで、本実施の形態においては、そのような場合においても、ロボット装置の各スキーマ自身が算出したアクティベーションレベルを加味するストラテジーを導入することで、ロボット装置の動作発現にバリエーションを持たせるものである。
【0131】
アクティベーションレベルを求める際には、通常、上述のような感情・本能モデルにおける欲求値は、正の欲求値のみが考慮されており、この正の欲求値の大きさに応じて、アクティベーションレベルが算出されており、従って、アクティベーションレベルは各行動に対するやりたさ度合いを示すものであった。そして、例えば最もやりたい、即ちアクティベーションレベルが最も大きい値のスキーマを選択する等の方法がとられている。また、例えばユーザからの指定があった場合は、アクティベーションレベルに拘わらず指定されたスキーマを選択させたり、指定されたスキーマのアクティベーションレベルに所定の数値を加算する等して高くして選択させたりすることで、強制的に行動を実行させるよう構成されている。
【0132】
これに対し、本実施の形態においては、内部状態に応じては、例えば「やりたくない」等を示す負の欲求値MVをロボット装置に持たせるものである。従って上述したように、負の欲求値MV及びReleaseValue(RV)から得られるアクティベーションレベルの値も負になる場合が生じる。このように、アクティベーションレベルが、行動に対する正の欲求だけではなく、やりたくない等の負の欲求をも示してこれを行動に反映させることができれば、より人間らいしい行動となる。
【0133】
例えばロボット装置が外部から所定の動作をするよう指示された場合、即ち、自身で算出したアクティベーションレベルに拘わらず、強制的に動作するよう指示された場合において、指示されたスキーマのアクティベーションレベルが負であった場合は、ロボット装置が現在、その行動を発現したくない旨をユーザに示す動作を発現し、更にはその指示を拒否する機能、即ち、指定された行動を発現しない機能を持たせることができる。また、アクティベーションレベルが負の場合、その大きさに応じて「絶対やだ」、「あんまりやりたくないな」、「気分が乗らない」等をユーザに伝えることもできバリエーションが異なる拒否反応を返答させたりすることもできる。
【0134】
また、アクティベーションレベルが負の場合であっても、重ねて要求された場合には「しょうがないなあ」といやいや実行に移す等、より人間らしい反応を返すことが可能になる。なお、同様に、アクティベーションレベルが正の場合にその大きさに応じても返答のバリエーションを持たせることも可能である。
【0135】
更には、各スキーマに正の欲求に対応する行動と、これを否定する行動と記述しておけば、アクティベーションレベルが示す負の欲求が所定の閾値を下まわった場合に、このスキーマを選択して、負の欲求に対応する行動を出力するようにしておけば、ロボット装置は、負の欲求を有しているという現在の状態をユーザに伝えることができる。
【0136】
このように、アクティベーションレベルが正の欲求だけではなく、負の欲求をも示すようにすることで、ロボット装置は行動のバリエーションが増え、更に人間らしい行動を発現するようになる。ここでは、このような負の欲求を有することで増加するバリエーションの一例として、所定の外部刺激として、ユーザに「ボールを蹴って!」と言われ、ボールを蹴るスキーマが選択される場合を例にとって具体的に説明する。図18及び図20は、外部からの指示に従いロボット装置が行動を発現しない場合、及び発現する場合において、スキーマツリーにおけるスキーマのアクティベーションレベルを示す模式図である。
【0137】
先ず、指定されたスキーマのアクティベーションレベルが負であって、ロボット装置自身(スキーマ)は、その行動をやりたがっていない場合について説明する。ロボット装置がユーザに「ボールを蹴って!」と言われた場合、例えば、ユーザからの命令を解釈する後述する音声解釈スキーマが起動してその意味を把握し、このスキーマからの指令により図18に示すように、ボールを蹴るスキーマ(スキーマA)を起動させるものとする。この際、スキーマAは、自身のアクティベーションレベルを算出し、算出したアクティベーションレベルを用いて、自身がどれだけやりたいかを把握し、その値に応じて指示に従うか否かを判断する。
【0138】
ここでボールを蹴るスキーマAのアクティベーションレベルは、上述したようにスキーマAに定義されている1以上の内部状態が満たす現在の内部状態に基づき得られる欲求値MVと、例えばボールを認識した等の外部刺激に基づき得られるReleaseValue(RV)によって求めることができる。
【0139】
欲求値MVの算出には、例えば図19に示すような関数を用いることができる。図19は、内部状態と欲求値MVとの関係の一例を示すグラフ図である。行動価値ALを算出する一方の要素である欲求値MVは、各スキーマに定義されているいくつかの内部状態に対応した欲求値ベクトルInsV(Instinct Variable)として求められる。例えば、「ボールを蹴る」行動を出力するスキーマには、内部状態ベクトルIntV{IntV_NOURISHMENT「栄養状態」,IntV_FATIGUE「疲れ」}が定義され、これより、「ボールを蹴る」行動に対する欲求値MVとして、欲求値ベクトルInsV{InsV_NOURISHMENT,InsV_FATIGUE}を求める。欲求値MVは、例えば内部状態「栄養状態」の値が大きいほど、「ボールを蹴る」行動に対する欲求値MVが大きくなるような関数や、内部状態「疲れ」の値が大きいほど「ボールを蹴る」行動に対する欲求値MVが減少し、内部状態「疲れ」の値が所定の大きさ以上になった場合に欲求値MVが負になるような関数等、各内部状態及びそれに対応づけられた行動に応じた所定の関数等を用意してそれを使用することができる。
【0140】
具体的には、下記式(1)及び図19に示すような関数が挙げられる。図19は、横軸に内部状態ベクトルIntVの各成分をとり、縦軸に欲求値ベクトルInsVの各成分をとって、下記式(1)で示される内部状態と欲求値MVとの関係を示すグラフ図である。
【0141】
【数1】
【0142】
欲求値ベクトルInsVは、上記式(1)及び図19に示すように、内部状態ベクトルIntVの値のみで決まる。ここでは、内部状態の大きさを0乃至100とし、そのときの欲求値の大きさが−1乃至1となるような関数を示す。例えば内部状態が0〜80までは、正の増加関数とし、内部状態が80で欲求値MVが0、更に内部状態が満たされると欲求値MVが負の減少関数となるような内部状態−欲求値曲線L1を設定することで、ロボット装置は、常に内部状態が8割の状態を維持するような欲求値MVを有するようになる。
【0143】
上記式(1)における定数A乃至Fを種々変更することで、各内部状態毎に異なる欲求値MVを求めることができる。例えば、内部状態が0乃至100の間において、欲求値MVが1乃至0に変化するようにしてもよいし、また、各内部状態毎に上記式(1)とは異なる内部状態−欲求値関数を用意してもよい。なお、ここでは、内部状態が8割を超すと負の欲求値MVが生じるような場合について説明したが、内部部状態によっては、欲求値MVが負にならないような関数を設定したり、また、欲求値MVが常に負になるような関数を設定したりしてもよい。例えば、ロボット装置の内部状態「栄養状態」は、充電の残量に基づくものとしたとき、常に充電が一杯の方がよいような場合は欲求値MVが負にならないような関数を設定すればよい。
【0144】
ここで、図19に示すような関数の場合、内部状態が100であれば、欲求値MVは負(−1)となり、負の欲求値及びReleaseValue(RV)に基づき算出されるアクティベーションレベルは高い確率で、図18に示すように負の値となる。このような場合であっても、ユーザがスキーマAを実行するよう指示した場合、スキーマAが例えばアクティベーションレベルに拘わらず選択される。
【0145】
このように、負のアクティベーションレベルを有するスキーマAが指定された場合、スキーマAは自身に記述された行動の代わりに、その行動を発現したくない旨をユーザに伝える代償行動を出力する。
【0146】
又は、後述するDeliberativeSBLの音声解釈スキーマにより、指定されたスキーマのアクティベーションレベルに所定の値が加算され、アクティベーションレベルが上昇させられた場合であっても、その加算後のスキーマAのアクティベーションレベルが図18に示すように負の値であるような場合においても同様であり、音声解釈スキーマに指定されたスキーマAは、他のスキーマのアクティベーションレベルと比較されることなく一旦は選択されるが、スキーマAはアクティベーションレベルが負であるため、上述したように、自身に記述された行動を出力する代わりにその行動をやりたくないことと伝える代償行動を出力する。
【0147】
図18においては、スキーマAは、アクティベーションレベル(AL)=−30であり、「えー、いやだなあ」という拒否をユーザに通知する音声を発生し、やりたくないという負の欲求を有していることを表現する。
【0148】
このように、通常、外部刺激及び内部状態の変化から算出されるアクティベーションレベルが高いものが選択され行動が発現されるが、このアクティベーションレベルに拘わらず、例えばユーザからの指示等により強制的に選択されるようなシステムを導入した場合、選択されたスキーマは、外部刺激及び内部状態の変化から自身のアクティベーションレベルを算出し、本実施の形態においては、この値が負である場合、やりたくない欲求(負の欲求)を示しているものと判断し、この負の値に応じた代償行動を発現する。
【0149】
このような代償行動は、アクティベーションレベルの負の値に応じて複数用意しておくことも可能である。アクティベーションレベルが例えば−50の場合は、「やりたくないよ」等の否定の表現を行うと共に、ユーザが指定したスキーマAに記述された行動を出力せず、また、上述の例のように、アクティベーションレベルが例えば−30の場合は、嫌だというしぐさを表出しつつ、ユーザが指定したスキーマAに記述された行動を出力する等、アクティベーションレベルに応じて行動を選択することができる。
【0150】
なお、このようにアクティベーションレベルに応じて異なる動作を行わせるためには、アクティベーションレベルの負の大きさに応じて、スキーマAに記述された行動の代償として機能するスキーマを複数用意しておき、アクティベーションレベルに対応する代償スキーマをコールして代償スキーマに記述された代償行動を出力することができる。
【0151】
一方、図20において、内部状態が80より低い値であると、内部状態を上昇させようとして、その欲求値MVは大きな値(正の値)をとる。欲求値MVが正の値をとれば、上述した如く、欲求値MVとReleaseValue(RV)とに基づき算出されるスキーマAのアクティベーションレベルは高い確率で正の値となる。そして、アクティベーションレベルが正の値である場合であって、所定の外部刺激によって選択された場合、又は所定の外部刺激により所定のアクティベーションレベルが加算された後の値が正である場合、ロボット装置は、「ボールを蹴りたい」と思っているとし、スキーマAは、ボールを蹴る行動を出力する。
【0152】
即ち、アクティベーションレベルが正であって大きい数値である場合、「うん、わかった!」など、肯定の返答と共に、ボールを蹴る、という行動を表出し、ユーザに指示された行動を、ロボット装置自身もやりたがっていたことをアピールすることができる。この場合も、スピーカ及びLED等の表現手段によりユーザにやりたいことをアピールする、やりたい度合いに応じた代償スキーマを用意して、ALに応じてこの代償スキーマをコールする等、同様に欲求の度合いを表現することができる。
【0153】
本実施の形態においては、指定されたスキーマをロボット装置自身がやりたくない場合にはそれを主張することができ、更に指定された行動を拒否したり、拒否しても何度も指示された場合には、「いやいやながらやる」等の様々なバリエーションが可能となる。また、とてもやりたいことを指定された場合は、「よろこんでやる」ことも可能であり、これらのことから、ロボット装置がより知的に見える手助けとなる。
【0154】
また、上述の図19に示す曲線は、内部状態が所定の値(=80)とるような欲求値を得るものであるが、内部状態が一定値ではなく、ある範囲内を保つような欲求値を求めるものであってもよい。
【0155】
(4)具体例
次に、自律的に動作するロボット装置が、ユーザに指示された場合、該当するスキーマを選択して行動を発現させる方法、即ちロボット装置を他律的に動作させる方法の具体例について説明する。
【0156】
実際のロボット装置の行動制御手段としてSBLを用いる場合、SBLが持つスキーマツリーの役割に応じて複数のSBLを用意する。具体的には、外部刺激と内部状態を基にそれぞれのスキーマのアクティベーションレベルを算出し、スキーマ間の競合を行わせて自律的に行動を決定し、行動出力のためのコマンドを発行するNormalSBL、NormalSBLの持つスキーマの機能を組み合わせてある一定の行動、行動シーケンスなどを実行するために、特定のNormalSBLのスキーマに対して外的にアクティベーションレベルを設定し、行動生成を行わせるDeliberativeSBL、電源電圧低下時や転倒時など異常状態を監視して異常状態からの回避行動を他のSBLより優先的に行うSystemSBL、聴覚センサに与えられた突発的な音圧(音量)変化や視覚センサに与えられた画像情報(明るさ)の急激な変化に応じて反射行動を行わせるためのReflexiveSBL等である。
【0157】
このようなSBLアルゴリズムによる行動選択手法では、通常は行動記述モジュールであるスキーマが、感情本能モデルから得られる内部状態に基づいて自らの行動の優先順位を規定するアクティベーションレベルを算出し、スキーマツリーの中でスキーマ同士が競合を行う。最終的にロボットのハードウェア・リソースが競合しない範囲でアクティベーションレベルの高い順にスキーマが同時に立ち上がり、行動出力が実現する。このアルゴリズムによると、ロボットの行動選択はロボットの内部状態と、センサへの外部刺激の条件とから自律的に行動選択が行われる。この自律的行動選択手法を以下、ホメオスタシスモードという。また、ホメオスタシスモードを実現するスキーマツリーを以下、NormalSBLという。
【0158】
NormalSBLを構成する各スキーマは、上述したように、顔が見えた、ボールを発見したなどの外部刺激と、感情本能モデルによって評価された、痛み、空腹、疲れ、眠気等の内部状態を基に自らのアクティベーションレベルを算出する。アクティベーションレベルは複数のスキーマ間のアクティベーションレベル(実行優先度)を規定し、大きい値を持つスキーマから優先的に実行権を獲得する。最終的にロボットのハードウェア・リソースが競合しない範囲でアクティベーションレベルの高い順にスキーマが同時に立ち上がり、行動出力が実現する。SBLアルゴリズムによって、ロボット自身の行動選択は内部欲求に基づいて自律的に実行され行動生成を行うことが可能となる。
【0159】
即ち、NormalSBLとは、SBLによる行動選択アルゴリズムを用いて自律的行動判断を行う最も基本的なスキーマツリー構造であり、このNormalSBLにおいては、ロボット自身の欲求が優先されて行動判断(選択)が行われるため、行動生成結果がどのようなものになるかは、ロボット装置が置かれたコンテキストを含む環境状態に依存する。
【0160】
従って、内部欲求と反する行動判断は行われないため、そのままのスキーマツリーではユーザの命令をトップダウンでロボット装置に対して与えて、行動を行わせることや、ある一連の決まった動作を再生することでデモンストレーションを行うことは困難である。
【0161】
そこで、このようなNormalSBLを有するロボット装置においても、トップダウンの命令を可能とするため、自律的行動選択を行うNormalSBLとは別に、他律的に行動選択を行うDeliberativeSBLを用意する。即ち、行動制御手段であるSBLは、DeliberativeSBLを有し、こにより、単一のSBLのスキーマ同士、もしくは複数SBLのスキーマ同士で外部刺激、内部状態とは関係なく、アクティベーションレベルを設定することができる。図21は、本具体例におけるNormalSBLとDeliberativeSBLとの関係を示す模式図である。図21の上図に示すDeliberativeSBL210により、図21の下図に示すNormalSBL230を構成する各スキーマ231乃至233に対して外的にアクティベーションレベルが設定された場合、外部刺激と内部状態をもとに算出されたアクティベーションレベルは無効となり、DeliberativeSBL210により外的に与えたアクティベーションレベルが優先される。この仕組みにより、特定のスキーマを特定のアクティベーションレベルで起動することが可能になる。
【0162】
このDeliberativeSBL210は、上述のNormalSBL230と同様の構造を有するが、NormalSBL230内のスキーマとの間で競合は行わず、独立したツリーとして構成される。そして、DeliberativeSBL210内のスキーマは、NormalSBL230内の特定のスキーマに対して外的に高いアクティベーションレベルを設定することができ、これにより、NormalSBL230内のある特定のスキーマ、即ちある特定の行動を実行させることが可能である。このトップダウンの要求に基づく行動選択手法を以下、Intentionモードといい、このような機能をIntention機能といい、このIntentionモードを実現するスキーマツリー220をDeliberativeSBL210という。以下、本具体例におけるNormalSBLとDeliberativeSBLについて更に詳細に説明する。
【0163】
(4−1)Normal Situated Behavior Layer(NormalSBL)
NormalSBLは、各行動記述モジュール(スキーマ)毎にステートマシンを用意しており、それ以前の行動や状況に依存して、状態認識部からの入力、即ちセンサ入力された外部情報の認識結果を分類して、行動を機体上で発現する。スキーマは、外部刺激と内部状態(の変化)を入力とし、少なくとも外部刺激や内部状態の変化に応じた状況判断を行なうMonitor機能と、行動実行に伴う状態遷移(ステートマシン)を実現するAction機能とを備えたスキーマ(Schema)として記述される。そして、NormalSBL230は、図21の下図に示すように、例えば、ダンスを踊る、サッカーをする、なぞなぞをとく等の行動が記述された複数のスキーマ231〜233が階層的に連結された木構造(スキーマ・ツリー)240として構成されている。
【0164】
このような木構造に構成された複数のスキーマツリー240は、外部刺激や内部状態の変化に応じてより最適なスキーマを統合的に判断して行動制御を行なうようになっている。スキーマツリー240は、例えば動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリー(又は枝)を含んでいる。
【0165】
ここで、上述したMonitor関数とは、外部刺激と内部状態に応じて当該スキーマのアクティベーションレベルを算出する関数である。ツリー構造を構成する場合、上位(親)のスキーマは外部刺激と内部状態を引数として下位(子供)のスキーマのMonitor関数をコールすることができ、子供のスキーマはアクティベーションレベルを返り値とする。また、スキーマは自分のアクティベーションレベルを算出するために、更に子供のスキーマのMonitor関数をコールすることができる。そして、ルートのスキーマ234には各サブツリーからのアクティベーションレベルが返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断することができる。
【0166】
例えばアクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた2以上のスキーマを選択して並列的に行動実行したりすることができる(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0167】
また、Action関数は、スキーマ自身が持つ行動を記述したステートマシンを備えている。ツリー構造を構成する場合は、親スキーマは、Action関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。
【0168】
(4−2)Deliberative Situated Behavior Layer(DeliberativeSBL)
上述したように、本具体例においては、自律的動作可能なロボット装置において、ユーザ等の指示により強制的に動作させるための行動選択手法(Intentionモード)を実現するDeliberativeSBL210を有している。このDeliberativeSBLは、NormalSBLとは基本的な構造、すなわち行動記述モジュールであるスキーマがツリー状に構成されているという点では同一である。しかし、DeliberativeSBL210、即ちDeliberativeSBLを構成する各スキーマは、NormalSBL230を構成する各スキーマとは異なり、単独では発話を行う、モーションを再生する等のコマンドを出力する機能は持たず、NormalSBL230中の特定のスキーマに対して強制的に起動することで間接的に行動生成を行わせる機能(Intention機能)を有する。以下、この機能を「スキーマにIntentionを加える」という。また、DeliberativeSBL210は、NormalSBL230内のスキーマに対してIntentionを加えると同時にパラメータを渡すことにより、行動をより限定して行わせる機能を有している。
【0169】
(4−3)SBLの機能
本具体例におけるSBLの機能は、上述した如く、DeliberativeSBL210からIntentionを加える機能やパラメータを渡す機能と、上述の実施の形態において説明したように、NormalSBL230がIntentionを加えられて強制的に起動するだけでなく、これを断る機能とを有している。以下、本具体例におけるSBL200が有するこれらの各機能について詳細に説明する。
【0170】
(4−3−1)Intention機能
上述のSBLの機能のうち、特定のスキーマに対して強制的に起動することで間接的に行動生成を行わせる機能(Intention機能)は、DeliberativeSBL210が、NormalSBL230内のスキーマに対して外的にアクティベーションレベルを設定することで実現される。
【0171】
このような機能を有するDeliberativeSBL210の具体的な利用方法として、図21の上図に示すように、ユーザの音声命令などを解釈し、命令に相当するスキーマに対してIntentionを加えて命令に即した行動を行わせる音声解釈スキーマ(ViceCommandHandler)201と、予め用意された一連のスキーマ起動シーケンスファイルを再生しながら特定のスキーマにIntentionをかけ、ロボット装置にデモンストレーション(機能紹介)を行わせる機能紹介スキーマ(ScriptPlayer)202を例にとって具体的に説明する。
【0172】
音声解釈スキーマ(ViceCommandHandler)201の、ユーザの音声命令などを解釈し、命令に相当するスキーマに対してIntentionを加え命令に即した行動を行わせる機能は、予め、ユーザの音声コマンドと、これに対応するNormalSBL中のスキーマとの対応データベースを作成することによって実現することが可能になる。例えば、「ダンスを踊って」、「サッカーして」、又は「なぞなぞしよう」等のユーザコマンドを受けて、ダンススキーマ231、サッカースキーマ232、なぞなぞスキーマ233を起動させることにより、ロボット装置の自律的行動選択を抑制して目的の行動をロボット装置に実行させることができる。
【0173】
このように、自律的に行動選択するNormalSBL230に対して他律的に動作選択させるDeliberativeSBL210のIntention機能を利用する場合は、DeliberativeSBL210内のスキーマから、NormalSBL230内の特定のスキーマに対してIntentionを加えることでトップダウンの行動生成を行うものである。
【0174】
図22は、Intentionで与えられたアクティベーションレベルと内部で評価したアクティベーションレベルとの関係を示す模式図である。図22に示すように、ある特定のスキーマに対してIntentionが加えられると、もともと、そのスキーマが持っていた内部状態と外部刺激に基づいて算出されたアクティベーションレベル(以下、AL1)に、Intentionによって外部から設定されたアクティベーションレベル(以下、AL2という。)が加算される。スキーマを起動するかどうかを判断するために、より上位のスキーマに計上されるAL値としては、この2つの値の例えば和(AL1+AL2、以下、AL_total)等が利用される。これによって、外部からあるスキーマに対して本来より大きなALを設定することが可能になる。なお、上記上位のスキーマに計上されるAL_totalとしては、2つのAL値に対して、例えば、適当な係数等により重み付けを行ったものの和等としてもよい。
【0175】
このように、単純にIntentionによって基のAL(AL1)の底上げをしているだけなので、その他のスキーマのAL1がとても大きい場合には、Intentionが意味を持たないこともありえる。しかし、実際には統合スキーマツリーを構成する段階のALの調整で、通常の起動状態では一定の範囲内、例えば0〜100の間でAL1が変化するように設定するので、その範囲を十分超えるようなIntentionを与えることでIntentionがかかったときに、対象のスキーマを確実に起動することが可能となる。
【0176】
例えば、図21に示すDeliberativeSBL210の音声解釈スキーマ201が、NormalSBL230のダンスを踊るダンススキーマ231に対してIntention250を加えた場合、各スキーマのALは、図22に示すようになる。即ち、ダンススキーマ231自身が内部状態と外部刺激とから算出したAL1が例えば85であり、音声解釈スキーマ201から外的に付加されるAL2が例えば1500である場合、ダンススキーマ231は、Intention250が加えられる、即ち、AL2が付加され、アクティベーションレベルの合計値(以下、AL_totalという。)が1585となる。ここで、NormalSBL230における各スキーマが算出する内部状態と外部刺激とから算出されるアクティベーションレベル(AL1)の範囲を例えば0乃至100等の所定の範囲に設定されており、このAL1の範囲を超える大きなAL2を付加するようにすることで、Intention250が加えられておらず、内部状態と外部刺激とから算出されるアクティベーションレベル(AL1)しか有していない他のスキーマより、AL_totalが大きくなる。図22の例では、他のスキーマ232〜234のAL_totalは、夫々5,12,67であるため、AL_total=1585であるIntention250が加えられたスキーマ231が選択されることになる。
【0177】
このように、各スキーマは、夫々が算出したアクティベーションレベルが比較され、例えば最も高いアクティベーションレベルを有するスキーマが選択されるように設定されている場合、このようなIntention250が加え、アクティベーションレベルを強制的に上昇させることで、選択させてスキーマを発火させて行動を発現させることができる。
【0178】
なお、本具体例は、Intentionとして十分大きな値を加算して指定したいスキーマを必ず選択するものであるが、図18に示す上述の例においては、Intentionとして例えばアクティベーションレベルが+30等、本具体例より小さい値を加えるものである。そして、Intentionとしてのアクティベーションレベルが加算された後も負の値である場合に、自身の行動をやりたくない旨を発現するものであり、この場合はIntentionとして加算されるアクティベーションレベルは小さいものの、DeliberativeSBLにより指定されたスキーマは、アクティベーションレベルを他のスキーマと比較されることなく一旦は選択されるように設計されている。即ち、アクティベーションレベルが負の欲求を示すものとすれば、Intentionを断る機能としても用いることができる。
【0179】
次に、Intentionを加える他の例として、NormalSBL230の特定のスキーマに対してIntentionを加えながら、Intentionコマンドの中間で説明を行う等の音声コマンドを実行したいといった場合の行動を実行させる場合について、予め用意された一連のスキーマ起動シーケンスファイルを再生しながら特定のスキーマにIntentionをかけ、ロボットのデモンストレーション(機能紹介)スキーマ202を例にとって説明する。このような場合は、NormalSBLのスキーマ間でIntentionを加えることにより実現することが可能になる。
【0180】
機能紹介スキーマ202における予め用意された一連のスキーマ起動シーケンスファイルを再生しながら特定のスキーマにIntentionを加える機能は、例えばユーザとインタラクティブにロボット装置の機能紹介を行う際に有効な方法である。図23は、機能紹介スキーマ202とNormalSBL230内の各スキーマとの関係を説明する模式図である。この機能紹介スキーマ202が有するスクリプトファイルには、機能紹介を行うための説明文を含む音声、モーション出力コマンドを実行するタイミング、ある特定のスキーマの機能を実行するためのIntentionをかける対象スキーマの情報とからなる一連のステートマシンが記述されている。
【0181】
デモンストレーションを行う機能紹介スキーマ202はスクリプトファイルを読み込みながら、説明コマンドを実行、若しくは特定のスキーマにIntentionを加えることでスキーマの機能を実行し、この操作を繰り返してユーザに対してロボットの機能紹介を行うというものである。
【0182】
例えば、NormalSBL230内に自律的にダンスを踊る、サッカーを行う、及び問題(なぞなぞ)を出すという夫々ダンススキーマ231、サッカースキーマ232及び問題スキーマ233がある場合に、機能紹介スキーマ202は、先ず機能紹介スキーマ202内でコマンドを実行して自分(ロボット装置)は、ダンスが踊れる、サッカーができる、及び問題を出すということを、例えば音声等によりユーザに伝達し、ユーザの反応に応じて、ダンススキーマ231、サッカースキーマ232、又は問題スキーマ233に対してIntentionを加え、実際に、ダンススキーマ231を用いてダンスを踊る様子を実演する、サッカースキーマ232を用いてボールを蹴る様子を実演する、又は問題スキーマを用いてユーザに対して問題を出すという動作を実演することができる。
【0183】
このように、Intentionの機能を用いると自律的行動判断を行わせるために用意されたNormalSBL内のスキーマにIntentionをかけることで、既存のスキーマの持つ機能をそのまま再利用してユーザコマンドを解釈して行動を生成する、ユーザにロボットの機能を紹介するなどの、多くのバリエーションを持った行動生成が可能になる。このようにIntentionモードでスキーマを実行する際に、実際に行動生成コマンドを生成するスキーマシーケンス(アルゴリズム)はホメオスタシスモードで利用しているNormalSBLのスキーマをそのまま再利用することができるため、ホメオスタシスモードとは独立で機能するIntentionモードを実現するために1からプログラムを書き分ける必要がなくなり極めて効率がよい。
【0184】
(4−3−2)命令を断る機能
Intentionを用いたスキーマの実行は、内部状態と外部刺激から評価されたホメオスタシスモードにおけるアクティベーションレベルを無視して、強制的にスキーマを起動するための仕組みとして考案されたものである。しかし、常に命令した行動が実現してしまうと、入力情報と行動出力との対応が固定的になりすぎて、特定の応答動作の繰り返しの結果、ユーザの飽きを招いてしまう可能性がある。そのため、Intentionモードにおいても、ホメオスタシスモードのアクティベーションレベルを完全に無視するのではなく、部分的に考慮に入れ、Intentionがかけられる前の本来のアクティベーションレベルの値が小さかったり、上述したように、負の欲求を示すものである場合によって、ユーザの命令を受諾するか、拒絶するかを判断させ、行動生成に多様性を持たせることが可能になる。
【0185】
このようにIntentionが加えられたスキーマ内部においては、IntentionによるAL2が足し合わされたAL_totalだけでなく、Intentionは加えられる前のAL1も保存されており、参照することが可能なので、「本来はアクティベーションレベルが低いことを考慮して起動を拒否する」といった表現が可能になる。
【0186】
具体的には、Intentionをかけられたスキーマは起動した際に、同時に内部状態と外部刺激に基づくアクティベーションレベル(AL1)を算出し、そのAL1がある一定閾値以上の値を持っていた場合には、所定の行動出力を行うが、閾値以下の場合には気分が乗らない旨の表現を行い、スキーマを終了するというものである。例えば、上記閾値をAL1_th=60と設定した場合について説明する。図22に示す例では、スキーマ231は、Intentionを加えられる前のAL1=85であるため、ユーザの命令、即ち、音声解釈スキーマの指示通りに動作を行う。
【0187】
ここで、サッカーをするスキーマ232にIntentionが加えられ、AL2=1500が付加された場合、例えば、その日は何度もサッカーをした、ボールが見えていない、又は好きな色のボールではない等の理由でスキーマ232が自身で算出したAL1=5と低く、閾値以下である場合がある。このような場合、ロボット装置はサッカーをするという動作を拒否することができる。
【0188】
例えば、サッカーをするスキーマ232の下層に、疲れた態度を示すスキーマや、首を振るスキーマ、サッカーをしたくない旨を音声にてユーザに通知するスキーマ等の1以上の代償スキーマを用意しておき、スキーマ232のAL1が所定の閾値以下であるのにIntentionが加えられた場合に、上記サッカースキーマ232を起動しない代わりに、スキーマ232のAL1に応じてこれらの代償スキーマを起動させる等してもよい。
【0189】
なお、Intentionを用いてスキーマを実行した際の命令を拒否する機能を実装した場合には、拒否を認めず強制的に行動を実行させる、命令を拒否する機能を無効にする機能が必要となる。この拒否を無効にする機能を設けることにより、例えば上述の機能紹介スキーマ202がIntentionを用いてNormalSBL230内のスキーマを実行(選択)し、ロボット装置の機能紹介デモンストレーションを行おうとした場合に、NormalSBL230内のスキーマが実行命令を拒否してしまうと、デモンストレーションが続行できなくなることを防止することができる。本具体例においては、強制フラグを用い、このフラグが立っているか否かにより、NormalSBL230のスキーマからの拒否を受け付けるか否かを選択するようにする。従って、デモンストレーションを行うときには、NormalSBL230のスキーマに対してIntentionを加えると同時に、強制的にスキーマを実行することを意味する情報を「強制フラグ」として渡すことにより、命令を拒否する機能を無効にする。
【0190】
内部状態と外部刺激により行動決定を行っている状態、即ちNormalSBLのみにおける行動決定が完全自律モードだとすると、DeliverativeSBLによってIntentionが加えられた際に、同時に、本来のアクティベーションレベル(AL1)を参照し、ある一定閾値以下の場合には命令を拒否するという機能は、半自律モードといえる。そして強制フラグと共にIntentionの機能を用いてロボットのデモンストレーションを行うような場合は、完全他律モードといえる。
【0191】
(4−3−3)Intentionを加えると同時にパラメータを渡す機能
通常Intentionを加えることによってNormalSBL内のスキーマを起動する際には、「ダンスして」、「サッカーして」など、抽象的な音声コマンドをハンドルしてスキーマ単位で行動を実行することが想定される。しかし、Intentionと同時にパラメータを渡す機能を搭載することにより、Intentionコマンドをより詳細に指定することが可能になる。例えば、サッカーをするスキーマに対してIntentionをかける場合に、「ピンク色のボールを蹴って」という音声コマンドをハンドルした場合には、「ピンク色のボール」に相当する情報を渡すことにより、サッカースキーマに対して、特にピンク色のボールを捜し、蹴るよう行動を限定して命令することが可能になる。この場合、Intention情報と同時に渡すべき情報は、対象オブジェクトのフィーチャーを示す情報、例えば、色彩、形状などが考えられる。
【0192】
(4−4)他の例
Intentionの加え方のバリエーション
Intentionの加え方は、上記具体例に限定されるものではなく、種々の変更が可能である。例えば、デモンストレーションを行う際に、シナリオに従って、音声発話による説明を加えながら、順番にスキーマを起動しロボットの機能を紹介するというものや、何か音声コマンドを受けた際に音声コマンドを解釈して、相当のスキーマを選択するか、又はスキーマ起動に必要なパラメータを渡し、スキーマを起動するというもの等もある。
【0193】
この他にもIntentionを用いたスキーマの起動方法には様々なバリエーションを持たせることが可能である。Intentionアルゴリズムにおいてバリエーションを作ることが可能なのは、基本的に以下の値を何らかの条件と連動させて変化させることによって実現される。即ち、
Intentionをかける際に加算するアクティベーションレベルの大きさ
Intentionをかけた際に、言うことを聞くか、命令を断るかを判断する閾値の大きさ
である。例えば、顔画像認識や話者認識によって獲得した情報をもとに、それまでの話者との経験からIntentionをかける際に加算するアクティベーションレベル(AL2)の大きさを変化させ、気に入った相手の言うことはよく聞くが、気に入らない相手の言うことは聞きにくいなど、相手が誰であるかによっていうことの聞き具合に変化を与えるようなことも可能である。
【0194】
本具体例においては、DeliberativeSBLのIntention機能を用いることにより、ロボット装置の内部状態や外部刺激の状態によらず、人間の命令した言葉を解釈して行動生成を行うことや、ある一連の動作を定義した設定ファイルを再生することによってデモンストレーションを行うことが可能となる。このように、ホメオスタシスモードのために記述されたスキーマをIntentionモードのスキーマとしても再利用可能であるため、行動選択、生成のためのプログラムをすべて準備する必要がない。即ち、用意するべきプログラムはあるコマンドに対してどのスキーマを実行するか、もしくはスキーマをどのような順番で実行するかといったフレームワークのみでよいのでプログラミング効率が極め高い。
【0195】
これにより、内外の環境状況に応じて自律的に行動判断を行うホメオスタシスモードによるスキーマの実行と、ユーザからの命令、デモスクリプトなどトップダウンの命令に従って行動生成を行うIntentionモードとを共通のSBLという行動制御アルゴリズムの中で扱うことが可能になる。
【0196】
そして、外的にアクティベーションレベル(AL2)を設定した際であっても、内部状態に基づいて算出されたアクティベーションレベル(AL1)を参照すると共に、感情状態に応じて加算するアクティベーションレベル(AL1)を増減させることで、不快な感情状態の時には言うことを聞きにくいが、喜んでいるような感情状態の時にはなんでも言うことを聞いてくれるというような動作を取らせることが可能となる。このように、外的には強制的にスキーマを起動させられてはいるものの、同時に内部では実際にはどの程度その行動を行いたいという意志を持っているのかを仮想的に考えることが可能であるので、ロボット装置の状況によっては、外的に加えられたIntentionを拒否するという行動を生成して入力情報−行動出力間の応答動作が固定化することを防ぎ、行動の多様化を実現することができる。即ち、単に命令に従うのみでなく、状況に応じて、命令を拒否することにより、ユーザがロボット装置の固定的な応答に飽きを生じてしまうことを防ぎ、より人間や動物に近い動作を生成することができる。
【0197】
【発明の効果】
以上詳細に説明したように本発明に係るロボット装置は、内部状態及び外部刺激に基づき行動を選択し発現するロボット装置において、複数の行動が記述され、該複数の行動から選択された行動を出力する行動出力手段と、上記内部状態及び/又は外部刺激から各行動の実行優先度を算出する優先度算出手段とを有し、上記実行優先度は、各行動を発現することに対する正の欲求又は負の欲求を示し、上記行動出力手段は、選択された行動の実行優先度が負の欲求を示すものであるとき、当該選択された行動とは異なる行動を出力するので、従来は、やりたい等の正の欲求のみが行動に反映されていたのに対し、選択された行動をしなくないという負の欲求を有する旨をユーザに動作で伝えたり、音声で通知して行動に反映させることができ、ロボット装置の行動に多種多様なバリエーションを持たせてより人間に近い行動を出力するようにすることができる。
【図面の簡単な説明】
【図1】本発明の実施の形態におけるロボット装置の外観を示す斜視図である。
【図2】本発明の実施の形態におけるロボット装置の機能構成を模式的に示すブロック図である。
【図3】本発明の実施の形態におけるロボット装置の制御ユニットの構成を更に詳細に示すブロック図である。
【図4】本発明の実施の形態におけるロボット装置の行動制御システムの機能構成を示す模式図である。
【図5】本発明の実施の形態における行動制御システムのオブジェクト構成を示す模式図である。
【図6】本発明の実施の形態における状況依存行動階層による状況依存行動制御の形態を示す模式図である。
【図7】状況依存行動階層による行動制御の基本的な動作例を示す模式図である。
【図8】状況依存行動階層により反射行動を行なう場合の動作例を示す模式図である。
【図9】状況依存行動階層により感情表現を行なう場合の動作例を示す模式図である。
【図10】状況依存行動階層が複数のスキーマによって構成されている様子を示す模式図である。
【図11】状況依存行動階層におけるスキーマのツリー構造を示す模式図である。
【図12】状況依存行動階層において通常の状況依存行動を制御するためのメカニズムを示す模式図である。
【図13】反射行動部におけるスキーマの構成を示す模式図である。
【図14】反射行動部により反射的行動を制御するためのメカニズムを示す模式図である。
【図15】状況依存行動階層において使用されるスキーマのクラス定義を示す模式図である。
【図16】状況依存行動階層内のクラスの機能的構成を示す模式図である。
【図17】スキーマのReentrant性を説明する図である。
【図18】本発明の実施の形態におけるロボット装置の負の欲求を説明する図であって、外部からの指示に従いロボット装置が行動を発現しない場合において、スキーマツリーにおけるスキーマのアクティベーションレベルを示す模式図である。
【図19】内部状態と欲求値MVとの関係の一例を示すグラフ図である。
【図20】外部からの指示に従いロボット装置が行動を発現する場合において、スキーマツリーにおけるスキーマのアクティベーションレベルを示す模式図である。
【図21】本発明の実施の形態におけるNormalSBLとDeliberativeSBLとの関係を示す模式図である。
【図22】Intentionで与えられたアクティベーションレベルと内部で評価したアクティベーションレベルとの関係を示す模式図である
【図23】本発明の実施の形態におけるDeliberativeSBLの機能紹介スキーマとNormalSBL内の各スキーマとの関係を説明する模式図である。
【符号の説明】
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】
【発明が解決しようとする課題】
しかしながら、上述のような従来のロボット装置は、やりたい行動を発現させるための優先順位が高い行動モデルを選択することを目的としたものであり、優先順位が低い行動、即ち、やりたくないと判断されている行動(動作)は、選択されることもなく、従ってあまり考慮されていなかった。従って、従来のロボット装置の行動選択においては、ユーザから「これやって」と指定された場合は、必ず該当する行動(動作)を取るようにプログラムされているため、外部状況及びロボット装置の内部状態に拘わらず、同様に、指定された行動をとることになり、このような固定的な応答のみではユーザにも厭きが生じ、エンターテイメント性に欠けるという問題点がある。
【0009】
即ち、やりたくないときにもやらなくていけない場合を設定した場合、例えば「一緒に遊ぼう」と言われても「疲れた」、「お腹が空いた」等の理由で「遊びたくない」等の負の欲求を持たせ、負の欲求に関してもロボット装置の行動に反映させることができれば、より人間又は、犬や猫等の動物の行動に模したものとなり、ユーザにより一層の親近感や満足感を与えることができ、更にエンターテイメント性を向上させることができる。
【0010】
本発明は、このような従来の実情に鑑みて提案されたものであり、ユーザからの指示等の特定の外部刺激により動作を発現するように指定された場合であっても、外部状況及び自身の内部状態に応じた多様なバリエーションの動作を発現することが可能なロボット装置、その動作制御方法及びプログラムを提供することを目的とする。
【0011】
【課題を解決するための手段】
上述した目的を達成するために、本発明に係るロボット装置は、内部状態及び外部刺激に基づき行動を選択し発現するロボット装置において、複数の行動が記述され、該複数の行動から選択された行動を出力する行動出力手段と、上記内部状態及び/又は外部刺激から各行動の実行優先度を算出する優先度算出手段とを有し、上記実行優先度は、各行動を発現することに対する正の欲求又は負の欲求を示し、上記行動出力手段は、選択された行動の実行優先度が負の欲求を示すものであるとき、当該選択された行動とは異なる行動を出力することを特徴とする。
【0012】
本発明においては、やりたい等の正の欲求のみでなく、やりたくない等の負の欲求をも有するため、この負の欲求を行動に反映させることができ、例えばユーザに指示される等の所定の外部刺激により指定された行動に対する欲求が負である場合、指定された行動をやりたくない等と音声でユーザに通知したりするような代償行動を発現することができる。
【0013】
本発明に係るロボット装置の行動制御方法は、内部状態及び外部刺激に基づき行動を選択し発現するロボット装置の行動制御方法において、上記内部状態及び/又は外部刺激から各行動の実行優先度を算出する優先度算出工程と、複数の行動から選択された行動を出力する行動出力工程とを有し、上記実行優先度は、各行動を発現することに対する正の欲求又は負の欲求を示し、上記行動出力工程では、上記選択された行動の実行優先度が負の欲求を示すものであるとき、当該選択された行動とは異なる行動を出力することを特徴とする。
【0014】
また、本発明に係るプログラムは、上述した動作制御処理をコンピュータに実行させるものである。
【0015】
【発明の実施の形態】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。本実施の形態のロボット装置は、内部状態に応じて自律的に行動することが可能なロボット装置において、例えば「やりたくない」等の負の欲求をも有し、これを表現することが可能なことを特徴とするものであるが、ここでは先ず、このようなロボット装置の好適な構成、及び制御システムについて説明し、次に本実施の形態における負の欲求を示すロボット装置について詳細に説明する。
【0016】
(1)ロボット装置の構成
図1は、本実施の形態のロボット装置の外観を示す斜視図である。図1に示すように、ロボット装置1は、体幹部ユニット2の所定の位置に頭部ユニット3が連結されると共に、左右2つの腕部ユニット4R/Lと、左右2つの脚部ユニット5R/Lが連結されて構成されている(但し、R及びLの各々は、右及び左の各々を示す接尾辞である。以下において同じ。)。
【0017】
図2は、本実施の形態におけるロボット装置1の機能構成を模式的に示すブロック図である。図2に示すように、ロボット装置1は、全体の動作の統括的制御及びその他のデータ処理を行う制御ユニット20と、入出力部40と、駆動部50と、電源部60とで構成される。以下、各部について説明する。
【0018】
入出力部40は、入力部として人間の目に相当し、外部の状況を撮影するCCDカメラ15、及び耳に相当するマイクロフォン16や頭部や背中等の部位に配設され、所定の押圧を受けるとこれを電気的に検出することで、ユーザの接触を感知するタッチ・センサ18、前方に位置する物体までの距離を測定するための距離センサ、五感に相当するその他の各種のセンサ等を含む。また、出力部として、頭部ユニット3に備えられ、人間の口に相当するスピーカ17、及び人間の目の位置に設けられ、感情表現や視覚認識状態を表現する例えばLEDインジケータ(目ランプ)19等を装備しており、これら出力部は、音声やLEDインジケータ19の点滅等、脚等による機械運動パターン以外の形式でもロボット装置1からのユーザ・フィードバックを表現することができる。
【0019】
例えば頭部ユニットの頭頂部の所定箇所に複数のタッチ・センサ18を設け、各タッチ・センサ18における接触検出を複合的に活用して、ユーザからの働きかけ、例えばロボット装置1の頭部を「撫でる」「叩く」「軽く叩く」等を検出することができ、例えば、押圧センサのうちの幾つかが所定時間をおいて順次接触したことを検出した場合、これを「撫でられた」と判別し、短時間のうちに接触を検出した場合、「叩かれた」と判別する等場合分けし、これに応じて内部状態も変化し、このような内部状態の変化に応じて動作を発現することができる。
【0020】
駆動部50は、制御ユニット20が指令する所定の運動パターンに従ってロボット装置1の機体動作を実現する機能ブロックであり、行動制御による制御対象である。駆動部50は、ロボット装置1の各関節における自由度を実現するための機能モジュールであり、それぞれの関節におけるロール、ピッチ、ヨー等各軸毎に設けられた複数の駆動ユニット541〜54nで構成される。各駆動ユニット541〜54nは、所定軸回りの回転動作を行うモータ511〜51nと、モータ511〜51nの回転位置を検出するエンコーダ521〜52nと、エンコーダ521〜52nの出力に基づいてモータ511〜51nの回転位置や回転速度を適応的に制御するドライバ531〜53nとの組み合わせで構成される。
【0021】
本ロボット装置1は、2足歩行としたが、駆動ユニットの組み合わせ方によって、ロボット装置1を例えば4足歩行等の脚式移動ロボット装置として構成することもできる。
【0022】
電源部60は、その字義通り、ロボット装置1内の各電気回路等に対して給電を行う機能モジュールである。本実施の形態に係るロボット装置1は、バッテリを用いた自律駆動式であり、電源部60は、充電バッテリ61と、充電バッテリ61の充放電状態を管理する充放電制御部62とで構成される。
【0023】
充電バッテリ61は、例えば、複数本のリチウムイオン2次電池セルをカートリッジ式にパッケージ化した「バッテリ・パック」の形態で構成される。
【0024】
また、充放電制御部62は、バッテリ61の端子電圧や充電/放電電流量、バッテリ61の周囲温度等を測定することでバッテリ61の残存容量を把握し、充電の開始時期や終了時期等を決定する。充放電制御部62が決定する充電の開始及び終了時期は制御ユニット20に通知され、ロボット装置1が充電オペレーションを開始及び終了するためのトリガとなる。
【0025】
制御ユニット20は、「頭脳」に相当し、例えばロボット装置1の機体頭部あるいは胴体部に搭載されている。
【0026】
図3は、制御ユニット20の構成を更に詳細に示すブロック図である。図3に示すように、制御ユニット20は、メイン・コントローラとしてのCPU(Central Processing Unit)21が、メモリ及びその他の各回路コンポーネントや周辺機器とバス接続された構成となっている。バス28は、データ・バス、アドレス・バス、コントロール・バス等を含む共通信号伝送路である。バス28上の各装置にはそれぞれに固有のアドレス(メモリ・アドレス又はI/Oアドレス)が割り当てられている。CPU21は、アドレスを指定することによってバス28上の特定の装置と通信することができる。
【0027】
RAM(Random Access Memory)22は、DRAM(Dynamic RAM)等の揮発性メモリで構成された書き込み可能メモリであり、CPU21が実行するプログラム・コードをロードしたり、実行プログラムによる作業データの一時的に保存そたりするために使用される。
【0028】
ROM(Read Only Memory)23は、プログラムやデータを恒久的に格納する読み出し専用メモリである。ROM23に格納されるプログラム・コードには、ロボット装置1の電源投入時に実行する自己診断テスト・プログラムや、ロボット装置1の動作を規定する動作制御プログラム等が挙げられる。
【0029】
ロボット装置1の制御プログラムには、カメラ15やマイクロフォン16等のセンサ入力を処理してシンボルとして認識する「センサ入力・認識処理プログラム」、短期記憶や長期記憶等の記憶動作(後述)を司りながらセンサ入力と所定の行動制御モデルとに基づいてロボット装置1の行動を制御する「行動制御プログラム」、行動制御モデルに従って各関節モータの駆動やスピーカ17の音声出力等を制御する「駆動制御プログラム」等が含まれる。
【0030】
不揮発性メモリ24は、例えばEEPROM(Electrically Erasable and Programmable ROM)のように電気的に消去再書き込みが可能なメモリ素子で構成され、逐次更新すべきデータを不揮発的に保持するために使用される。逐次更新すべきデータには、暗号鍵やその他のセキュリティ情報、出荷後にインストールすべき装置制御プログラム等が挙げられる。
【0031】
インターフェース25は、制御ユニット20外の機器と相互接続し、データ交換を可能にするための装置である。インターフェース25は、例えば、カメラ15、マイクロフォン16、又はスピーカ17等との間でデータ入出力を行う。また、インターフェース25は、駆動部50内の各ドライバ531〜53nとの間でデータやコマンドの入出力を行う。
【0032】
また、インターフェース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カードやメモリ・スティックを受容するメモリ・カード・インターフェース(カード・スロット)等のような、コンピュータの周辺機器接続用の汎用インターフェースを備え、ローカル接続された外部機器との間でプログラムやデータの移動を行うようにしてもよい。
【0033】
また、インターフェース25の他の例として、赤外線通信(IrDA)インターフェースを備え、外部機器と無線通信を行うようにしてもよい。
【0034】
更に、制御ユニット20は、無線通信インターフェース26やネットワーク・インターフェース・カード(NIC)27等を含み、Bluetoothのような近接無線データ通信や、IEEE 802.11bのような無線ネットワーク、あるいはインターネット等の広域ネットワークを経由して、外部のさまざまなホスト・コンピュータとデータ通信を行うことができる。
【0035】
このようなロボット装置1とホスト・コンピュータ間におけるデータ通信により、遠隔のコンピュータ資源を用いて、ロボット装置1の複雑な動作制御を演算したり、リモート・コントロールしたりすることができる。
【0036】
(2)ロボット装置の制御システム
次に、ロボット装置の行動(動作)制御システムについて説明する。なお、上述したように、本実施の形態におけるロボット装置は、外部刺激及び自身の内部状態から自律的に動作を発現するもののうち、より人間らしい行動を発現するよう、やりたくない等の負の欲求を有してこれを行動に反映させるものであるが、ここでは先ず、自律的に動作を発現するロボット装置の行動制御システムについて説明し、その後、負の欲求を行動に反映させる方法について説明する。
【0037】
図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に示すように、認識系の各オブジェクトからの信号を直接入力する複数のスキーマ132が階層化されずに並列的に配置されている。
【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】
(3−1)状況依存行動階層(Situated Behavior Layer:SBL)
上述したように、ロボット装置は自身の内外の情報を考慮したうえで行動判断を行うアルゴリズムとしてSBLを有する。SBLは、ダンスを踊るというような抽象的な意味を持つ単位から、実際に例えばアクチュエータの回転角度等、機体動作を指示するモーションコマンドを出力するというような具体的な意味を持つ単位まで、1つ1つの単位で独立した意味と機能を有する複数の行動記述モジュール(スキーマ)がツリー構造となって構成されている。各スキーマは、内部に行動のシーケンスを記述したステートマシンを備えており、外部環境から得たセンサ情報に基づいて得られた短期記憶の情報や、自らの身体情報を評価した結果得られた内部状態、今までの短期記憶、内部状態の経験を関連付けて保存しておくことにより得られた長期記憶の情報などを利用して状態遷移を行いながら、外部刺激や内部状態の変化に応じた状況判断を行い、行動の生成(選択)が行われる。
【0124】
通常、スキーマは、各種センサ等の外部入力装置(状態認識部)から入力された外部情報(外部刺激)と、ロボット装置の内部情報(自らの内部状態パラメータ及び感情パラメータの算出を行う感情・本能モデルから得られた内部状態パラメータ)、即ちロボットの一次情動(本能)の満足度、及びそれによって変化する二次情動(感情)の値との双方に応じて、各スキーマのやりたさ度合いを示す実行優先度(活動度レベル(アクティベーションレベル:Activation Level))を算出し、どのスキーマを実行するかが決定(選択)される。これによって外部入力(外部刺激)と、内部状態に応じて実際にどのような行動を行うのが自律的に判断され、ロボット装置本体、又はスピーカ若しくはLED等の表現手段を使用してその行動を実行する。
【0125】
このようなアクティベーションレベルは、現在の状況においてロボット装置がその動作を発現することが可能か否か(やれることができるか否か)を示す第1の欲求を示す値であるReleaseValue(RV)と、ロボット装置自身がやりたいか否かを示す第2の欲求を示す値である欲求値(MotivationValue:MV)とから算出される。
【0126】
ReleaseValue(RV)とは、外部からの刺激、対象物があればその物理的な外部情報(対象物の有無、対象物との間の距離、対象物の色及び形状等)及び各記憶部からの記憶に基づく値が例えば加算される等して算出されるものであり、例えば、ボールを蹴るスキーマは、その時点でカメラ等によりボールを認識できない場合は、動作を発現できないと判定し、その値が小さくなる。
【0127】
また、欲求値MVは、ロボットの内部状態、即ち、本能・感情モデルにおいて算出された本能(欲求)値及び感情(情動)値に基づき算出されるもので、例えば、ボールを蹴るスキーマは、バッテリの充電が充分であったり、好きな色のボールを発見した場合にボールを蹴りたいという欲求が大きくなり、その値が大きくなる。上述したように、ロボット装置の感情モデルは、例えば「喜び(Joy)」、「悲しみ(Sadness)」、「怒り(Anger)」、「驚き(Surprise)」、「嫌悪(Disgust)」及び「恐れ(Fear)」の合計6つの情動について、各情動毎にその情動の強さを表すパラメータを保持し、本能モデルは、「運動欲(exercise)」、「愛情欲(affection)」、「食欲(appetite)」及び「好奇心(curiosity)」の互いに独立した4つの欲求について、これら欲求毎にその欲求の強さを表すパラメータを保持しており、これらの各値に基づき欲求値MVが算出される。このような内部状態は、図4に示す内部状態管理部91により、外部刺激並びに例えば自身のバッテリの残量及びモータの回転角等の情報を入力とし、上述のような複数の内部状態に対応した値(内部状態ベクトル)が算出され、管理されている。
【0128】
(3−2)ロボット装置の動作及びその作用
スキーマの選択に際しては、スキーマ毎が有しているアクティベーションレベルの大小で、実行する行動(スキーマ)が選択されるようになっており、外部情報及び内部状態からスキーマ自身がアクティベーションレベルを算出し、これに基づき自律的に動作が発現される。一方で、ユーザに「○○をやって」と言われたら、該当するスキーマを実行する等、自律的な動作とは別に、命令に従って、即ち他律的な動作を発現するようにも設定されている。
【0129】
例えばこのようなユーザの指示に従うようにする場合、ロボット装置の各スキーマは、例えば後述するDeliberativeSBLにより、ユーザの指示に該当するスキーマのアクティベーションレベルを強制的に上昇させる(加算する)等して、その該当するスキーマが選択されやすくなるよう構成されており、従ってこのような方法においては、ロボット装置の各スキーマ自身が外部情報及び内部状態から算出するアクティベーションレベルに拘わらず、ロボット装置は指定された行動を実行することになる。
【0130】
そこで、本実施の形態においては、そのような場合においても、ロボット装置の各スキーマ自身が算出したアクティベーションレベルを加味するストラテジーを導入することで、ロボット装置の動作発現にバリエーションを持たせるものである。
【0131】
アクティベーションレベルを求める際には、通常、上述のような感情・本能モデルにおける欲求値は、正の欲求値のみが考慮されており、この正の欲求値の大きさに応じて、アクティベーションレベルが算出されており、従って、アクティベーションレベルは各行動に対するやりたさ度合いを示すものであった。そして、例えば最もやりたい、即ちアクティベーションレベルが最も大きい値のスキーマを選択する等の方法がとられている。また、例えばユーザからの指定があった場合は、アクティベーションレベルに拘わらず指定されたスキーマを選択させたり、指定されたスキーマのアクティベーションレベルに所定の数値を加算する等して高くして選択させたりすることで、強制的に行動を実行させるよう構成されている。
【0132】
これに対し、本実施の形態においては、内部状態に応じては、例えば「やりたくない」等を示す負の欲求値MVをロボット装置に持たせるものである。従って上述したように、負の欲求値MV及びReleaseValue(RV)から得られるアクティベーションレベルの値も負になる場合が生じる。このように、アクティベーションレベルが、行動に対する正の欲求だけではなく、やりたくない等の負の欲求をも示してこれを行動に反映させることができれば、より人間らいしい行動となる。
【0133】
例えばロボット装置が外部から所定の動作をするよう指示された場合、即ち、自身で算出したアクティベーションレベルに拘わらず、強制的に動作するよう指示された場合において、指示されたスキーマのアクティベーションレベルが負であった場合は、ロボット装置が現在、その行動を発現したくない旨をユーザに示す動作を発現し、更にはその指示を拒否する機能、即ち、指定された行動を発現しない機能を持たせることができる。また、アクティベーションレベルが負の場合、その大きさに応じて「絶対やだ」、「あんまりやりたくないな」、「気分が乗らない」等をユーザに伝えることもできバリエーションが異なる拒否反応を返答させたりすることもできる。
【0134】
また、アクティベーションレベルが負の場合であっても、重ねて要求された場合には「しょうがないなあ」といやいや実行に移す等、より人間らしい反応を返すことが可能になる。なお、同様に、アクティベーションレベルが正の場合にその大きさに応じても返答のバリエーションを持たせることも可能である。
【0135】
更には、各スキーマに正の欲求に対応する行動と、これを否定する行動と記述しておけば、アクティベーションレベルが示す負の欲求が所定の閾値を下まわった場合に、このスキーマを選択して、負の欲求に対応する行動を出力するようにしておけば、ロボット装置は、負の欲求を有しているという現在の状態をユーザに伝えることができる。
【0136】
このように、アクティベーションレベルが正の欲求だけではなく、負の欲求をも示すようにすることで、ロボット装置は行動のバリエーションが増え、更に人間らしい行動を発現するようになる。ここでは、このような負の欲求を有することで増加するバリエーションの一例として、所定の外部刺激として、ユーザに「ボールを蹴って!」と言われ、ボールを蹴るスキーマが選択される場合を例にとって具体的に説明する。図18及び図20は、外部からの指示に従いロボット装置が行動を発現しない場合、及び発現する場合において、スキーマツリーにおけるスキーマのアクティベーションレベルを示す模式図である。
【0137】
先ず、指定されたスキーマのアクティベーションレベルが負であって、ロボット装置自身(スキーマ)は、その行動をやりたがっていない場合について説明する。ロボット装置がユーザに「ボールを蹴って!」と言われた場合、例えば、ユーザからの命令を解釈する後述する音声解釈スキーマが起動してその意味を把握し、このスキーマからの指令により図18に示すように、ボールを蹴るスキーマ(スキーマA)を起動させるものとする。この際、スキーマAは、自身のアクティベーションレベルを算出し、算出したアクティベーションレベルを用いて、自身がどれだけやりたいかを把握し、その値に応じて指示に従うか否かを判断する。
【0138】
ここでボールを蹴るスキーマAのアクティベーションレベルは、上述したようにスキーマAに定義されている1以上の内部状態が満たす現在の内部状態に基づき得られる欲求値MVと、例えばボールを認識した等の外部刺激に基づき得られるReleaseValue(RV)によって求めることができる。
【0139】
欲求値MVの算出には、例えば図19に示すような関数を用いることができる。図19は、内部状態と欲求値MVとの関係の一例を示すグラフ図である。行動価値ALを算出する一方の要素である欲求値MVは、各スキーマに定義されているいくつかの内部状態に対応した欲求値ベクトルInsV(Instinct Variable)として求められる。例えば、「ボールを蹴る」行動を出力するスキーマには、内部状態ベクトルIntV{IntV_NOURISHMENT「栄養状態」,IntV_FATIGUE「疲れ」}が定義され、これより、「ボールを蹴る」行動に対する欲求値MVとして、欲求値ベクトルInsV{InsV_NOURISHMENT,InsV_FATIGUE}を求める。欲求値MVは、例えば内部状態「栄養状態」の値が大きいほど、「ボールを蹴る」行動に対する欲求値MVが大きくなるような関数や、内部状態「疲れ」の値が大きいほど「ボールを蹴る」行動に対する欲求値MVが減少し、内部状態「疲れ」の値が所定の大きさ以上になった場合に欲求値MVが負になるような関数等、各内部状態及びそれに対応づけられた行動に応じた所定の関数等を用意してそれを使用することができる。
【0140】
具体的には、下記式(1)及び図19に示すような関数が挙げられる。図19は、横軸に内部状態ベクトルIntVの各成分をとり、縦軸に欲求値ベクトルInsVの各成分をとって、下記式(1)で示される内部状態と欲求値MVとの関係を示すグラフ図である。
【0141】
【数1】
【0142】
欲求値ベクトルInsVは、上記式(1)及び図19に示すように、内部状態ベクトルIntVの値のみで決まる。ここでは、内部状態の大きさを0乃至100とし、そのときの欲求値の大きさが−1乃至1となるような関数を示す。例えば内部状態が0〜80までは、正の増加関数とし、内部状態が80で欲求値MVが0、更に内部状態が満たされると欲求値MVが負の減少関数となるような内部状態−欲求値曲線L1を設定することで、ロボット装置は、常に内部状態が8割の状態を維持するような欲求値MVを有するようになる。
【0143】
上記式(1)における定数A乃至Fを種々変更することで、各内部状態毎に異なる欲求値MVを求めることができる。例えば、内部状態が0乃至100の間において、欲求値MVが1乃至0に変化するようにしてもよいし、また、各内部状態毎に上記式(1)とは異なる内部状態−欲求値関数を用意してもよい。なお、ここでは、内部状態が8割を超すと負の欲求値MVが生じるような場合について説明したが、内部部状態によっては、欲求値MVが負にならないような関数を設定したり、また、欲求値MVが常に負になるような関数を設定したりしてもよい。例えば、ロボット装置の内部状態「栄養状態」は、充電の残量に基づくものとしたとき、常に充電が一杯の方がよいような場合は欲求値MVが負にならないような関数を設定すればよい。
【0144】
ここで、図19に示すような関数の場合、内部状態が100であれば、欲求値MVは負(−1)となり、負の欲求値及びReleaseValue(RV)に基づき算出されるアクティベーションレベルは高い確率で、図18に示すように負の値となる。このような場合であっても、ユーザがスキーマAを実行するよう指示した場合、スキーマAが例えばアクティベーションレベルに拘わらず選択される。
【0145】
このように、負のアクティベーションレベルを有するスキーマAが指定された場合、スキーマAは自身に記述された行動の代わりに、その行動を発現したくない旨をユーザに伝える代償行動を出力する。
【0146】
又は、後述するDeliberativeSBLの音声解釈スキーマにより、指定されたスキーマのアクティベーションレベルに所定の値が加算され、アクティベーションレベルが上昇させられた場合であっても、その加算後のスキーマAのアクティベーションレベルが図18に示すように負の値であるような場合においても同様であり、音声解釈スキーマに指定されたスキーマAは、他のスキーマのアクティベーションレベルと比較されることなく一旦は選択されるが、スキーマAはアクティベーションレベルが負であるため、上述したように、自身に記述された行動を出力する代わりにその行動をやりたくないことと伝える代償行動を出力する。
【0147】
図18においては、スキーマAは、アクティベーションレベル(AL)=−30であり、「えー、いやだなあ」という拒否をユーザに通知する音声を発生し、やりたくないという負の欲求を有していることを表現する。
【0148】
このように、通常、外部刺激及び内部状態の変化から算出されるアクティベーションレベルが高いものが選択され行動が発現されるが、このアクティベーションレベルに拘わらず、例えばユーザからの指示等により強制的に選択されるようなシステムを導入した場合、選択されたスキーマは、外部刺激及び内部状態の変化から自身のアクティベーションレベルを算出し、本実施の形態においては、この値が負である場合、やりたくない欲求(負の欲求)を示しているものと判断し、この負の値に応じた代償行動を発現する。
【0149】
このような代償行動は、アクティベーションレベルの負の値に応じて複数用意しておくことも可能である。アクティベーションレベルが例えば−50の場合は、「やりたくないよ」等の否定の表現を行うと共に、ユーザが指定したスキーマAに記述された行動を出力せず、また、上述の例のように、アクティベーションレベルが例えば−30の場合は、嫌だというしぐさを表出しつつ、ユーザが指定したスキーマAに記述された行動を出力する等、アクティベーションレベルに応じて行動を選択することができる。
【0150】
なお、このようにアクティベーションレベルに応じて異なる動作を行わせるためには、アクティベーションレベルの負の大きさに応じて、スキーマAに記述された行動の代償として機能するスキーマを複数用意しておき、アクティベーションレベルに対応する代償スキーマをコールして代償スキーマに記述された代償行動を出力することができる。
【0151】
一方、図20において、内部状態が80より低い値であると、内部状態を上昇させようとして、その欲求値MVは大きな値(正の値)をとる。欲求値MVが正の値をとれば、上述した如く、欲求値MVとReleaseValue(RV)とに基づき算出されるスキーマAのアクティベーションレベルは高い確率で正の値となる。そして、アクティベーションレベルが正の値である場合であって、所定の外部刺激によって選択された場合、又は所定の外部刺激により所定のアクティベーションレベルが加算された後の値が正である場合、ロボット装置は、「ボールを蹴りたい」と思っているとし、スキーマAは、ボールを蹴る行動を出力する。
【0152】
即ち、アクティベーションレベルが正であって大きい数値である場合、「うん、わかった!」など、肯定の返答と共に、ボールを蹴る、という行動を表出し、ユーザに指示された行動を、ロボット装置自身もやりたがっていたことをアピールすることができる。この場合も、スピーカ及びLED等の表現手段によりユーザにやりたいことをアピールする、やりたい度合いに応じた代償スキーマを用意して、ALに応じてこの代償スキーマをコールする等、同様に欲求の度合いを表現することができる。
【0153】
本実施の形態においては、指定されたスキーマをロボット装置自身がやりたくない場合にはそれを主張することができ、更に指定された行動を拒否したり、拒否しても何度も指示された場合には、「いやいやながらやる」等の様々なバリエーションが可能となる。また、とてもやりたいことを指定された場合は、「よろこんでやる」ことも可能であり、これらのことから、ロボット装置がより知的に見える手助けとなる。
【0154】
また、上述の図19に示す曲線は、内部状態が所定の値(=80)とるような欲求値を得るものであるが、内部状態が一定値ではなく、ある範囲内を保つような欲求値を求めるものであってもよい。
【0155】
(4)具体例
次に、自律的に動作するロボット装置が、ユーザに指示された場合、該当するスキーマを選択して行動を発現させる方法、即ちロボット装置を他律的に動作させる方法の具体例について説明する。
【0156】
実際のロボット装置の行動制御手段としてSBLを用いる場合、SBLが持つスキーマツリーの役割に応じて複数のSBLを用意する。具体的には、外部刺激と内部状態を基にそれぞれのスキーマのアクティベーションレベルを算出し、スキーマ間の競合を行わせて自律的に行動を決定し、行動出力のためのコマンドを発行するNormalSBL、NormalSBLの持つスキーマの機能を組み合わせてある一定の行動、行動シーケンスなどを実行するために、特定のNormalSBLのスキーマに対して外的にアクティベーションレベルを設定し、行動生成を行わせるDeliberativeSBL、電源電圧低下時や転倒時など異常状態を監視して異常状態からの回避行動を他のSBLより優先的に行うSystemSBL、聴覚センサに与えられた突発的な音圧(音量)変化や視覚センサに与えられた画像情報(明るさ)の急激な変化に応じて反射行動を行わせるためのReflexiveSBL等である。
【0157】
このようなSBLアルゴリズムによる行動選択手法では、通常は行動記述モジュールであるスキーマが、感情本能モデルから得られる内部状態に基づいて自らの行動の優先順位を規定するアクティベーションレベルを算出し、スキーマツリーの中でスキーマ同士が競合を行う。最終的にロボットのハードウェア・リソースが競合しない範囲でアクティベーションレベルの高い順にスキーマが同時に立ち上がり、行動出力が実現する。このアルゴリズムによると、ロボットの行動選択はロボットの内部状態と、センサへの外部刺激の条件とから自律的に行動選択が行われる。この自律的行動選択手法を以下、ホメオスタシスモードという。また、ホメオスタシスモードを実現するスキーマツリーを以下、NormalSBLという。
【0158】
NormalSBLを構成する各スキーマは、上述したように、顔が見えた、ボールを発見したなどの外部刺激と、感情本能モデルによって評価された、痛み、空腹、疲れ、眠気等の内部状態を基に自らのアクティベーションレベルを算出する。アクティベーションレベルは複数のスキーマ間のアクティベーションレベル(実行優先度)を規定し、大きい値を持つスキーマから優先的に実行権を獲得する。最終的にロボットのハードウェア・リソースが競合しない範囲でアクティベーションレベルの高い順にスキーマが同時に立ち上がり、行動出力が実現する。SBLアルゴリズムによって、ロボット自身の行動選択は内部欲求に基づいて自律的に実行され行動生成を行うことが可能となる。
【0159】
即ち、NormalSBLとは、SBLによる行動選択アルゴリズムを用いて自律的行動判断を行う最も基本的なスキーマツリー構造であり、このNormalSBLにおいては、ロボット自身の欲求が優先されて行動判断(選択)が行われるため、行動生成結果がどのようなものになるかは、ロボット装置が置かれたコンテキストを含む環境状態に依存する。
【0160】
従って、内部欲求と反する行動判断は行われないため、そのままのスキーマツリーではユーザの命令をトップダウンでロボット装置に対して与えて、行動を行わせることや、ある一連の決まった動作を再生することでデモンストレーションを行うことは困難である。
【0161】
そこで、このようなNormalSBLを有するロボット装置においても、トップダウンの命令を可能とするため、自律的行動選択を行うNormalSBLとは別に、他律的に行動選択を行うDeliberativeSBLを用意する。即ち、行動制御手段であるSBLは、DeliberativeSBLを有し、こにより、単一のSBLのスキーマ同士、もしくは複数SBLのスキーマ同士で外部刺激、内部状態とは関係なく、アクティベーションレベルを設定することができる。図21は、本具体例におけるNormalSBLとDeliberativeSBLとの関係を示す模式図である。図21の上図に示すDeliberativeSBL210により、図21の下図に示すNormalSBL230を構成する各スキーマ231乃至233に対して外的にアクティベーションレベルが設定された場合、外部刺激と内部状態をもとに算出されたアクティベーションレベルは無効となり、DeliberativeSBL210により外的に与えたアクティベーションレベルが優先される。この仕組みにより、特定のスキーマを特定のアクティベーションレベルで起動することが可能になる。
【0162】
このDeliberativeSBL210は、上述のNormalSBL230と同様の構造を有するが、NormalSBL230内のスキーマとの間で競合は行わず、独立したツリーとして構成される。そして、DeliberativeSBL210内のスキーマは、NormalSBL230内の特定のスキーマに対して外的に高いアクティベーションレベルを設定することができ、これにより、NormalSBL230内のある特定のスキーマ、即ちある特定の行動を実行させることが可能である。このトップダウンの要求に基づく行動選択手法を以下、Intentionモードといい、このような機能をIntention機能といい、このIntentionモードを実現するスキーマツリー220をDeliberativeSBL210という。以下、本具体例におけるNormalSBLとDeliberativeSBLについて更に詳細に説明する。
【0163】
(4−1)Normal Situated Behavior Layer(NormalSBL)
NormalSBLは、各行動記述モジュール(スキーマ)毎にステートマシンを用意しており、それ以前の行動や状況に依存して、状態認識部からの入力、即ちセンサ入力された外部情報の認識結果を分類して、行動を機体上で発現する。スキーマは、外部刺激と内部状態(の変化)を入力とし、少なくとも外部刺激や内部状態の変化に応じた状況判断を行なうMonitor機能と、行動実行に伴う状態遷移(ステートマシン)を実現するAction機能とを備えたスキーマ(Schema)として記述される。そして、NormalSBL230は、図21の下図に示すように、例えば、ダンスを踊る、サッカーをする、なぞなぞをとく等の行動が記述された複数のスキーマ231〜233が階層的に連結された木構造(スキーマ・ツリー)240として構成されている。
【0164】
このような木構造に構成された複数のスキーマツリー240は、外部刺激や内部状態の変化に応じてより最適なスキーマを統合的に判断して行動制御を行なうようになっている。スキーマツリー240は、例えば動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリー(又は枝)を含んでいる。
【0165】
ここで、上述したMonitor関数とは、外部刺激と内部状態に応じて当該スキーマのアクティベーションレベルを算出する関数である。ツリー構造を構成する場合、上位(親)のスキーマは外部刺激と内部状態を引数として下位(子供)のスキーマのMonitor関数をコールすることができ、子供のスキーマはアクティベーションレベルを返り値とする。また、スキーマは自分のアクティベーションレベルを算出するために、更に子供のスキーマのMonitor関数をコールすることができる。そして、ルートのスキーマ234には各サブツリーからのアクティベーションレベルが返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断することができる。
【0166】
例えばアクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を越えた2以上のスキーマを選択して並列的に行動実行したりすることができる(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0167】
また、Action関数は、スキーマ自身が持つ行動を記述したステートマシンを備えている。ツリー構造を構成する場合は、親スキーマは、Action関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。
【0168】
(4−2)Deliberative Situated Behavior Layer(DeliberativeSBL)
上述したように、本具体例においては、自律的動作可能なロボット装置において、ユーザ等の指示により強制的に動作させるための行動選択手法(Intentionモード)を実現するDeliberativeSBL210を有している。このDeliberativeSBLは、NormalSBLとは基本的な構造、すなわち行動記述モジュールであるスキーマがツリー状に構成されているという点では同一である。しかし、DeliberativeSBL210、即ちDeliberativeSBLを構成する各スキーマは、NormalSBL230を構成する各スキーマとは異なり、単独では発話を行う、モーションを再生する等のコマンドを出力する機能は持たず、NormalSBL230中の特定のスキーマに対して強制的に起動することで間接的に行動生成を行わせる機能(Intention機能)を有する。以下、この機能を「スキーマにIntentionを加える」という。また、DeliberativeSBL210は、NormalSBL230内のスキーマに対してIntentionを加えると同時にパラメータを渡すことにより、行動をより限定して行わせる機能を有している。
【0169】
(4−3)SBLの機能
本具体例におけるSBLの機能は、上述した如く、DeliberativeSBL210からIntentionを加える機能やパラメータを渡す機能と、上述の実施の形態において説明したように、NormalSBL230がIntentionを加えられて強制的に起動するだけでなく、これを断る機能とを有している。以下、本具体例におけるSBL200が有するこれらの各機能について詳細に説明する。
【0170】
(4−3−1)Intention機能
上述のSBLの機能のうち、特定のスキーマに対して強制的に起動することで間接的に行動生成を行わせる機能(Intention機能)は、DeliberativeSBL210が、NormalSBL230内のスキーマに対して外的にアクティベーションレベルを設定することで実現される。
【0171】
このような機能を有するDeliberativeSBL210の具体的な利用方法として、図21の上図に示すように、ユーザの音声命令などを解釈し、命令に相当するスキーマに対してIntentionを加えて命令に即した行動を行わせる音声解釈スキーマ(ViceCommandHandler)201と、予め用意された一連のスキーマ起動シーケンスファイルを再生しながら特定のスキーマにIntentionをかけ、ロボット装置にデモンストレーション(機能紹介)を行わせる機能紹介スキーマ(ScriptPlayer)202を例にとって具体的に説明する。
【0172】
音声解釈スキーマ(ViceCommandHandler)201の、ユーザの音声命令などを解釈し、命令に相当するスキーマに対してIntentionを加え命令に即した行動を行わせる機能は、予め、ユーザの音声コマンドと、これに対応するNormalSBL中のスキーマとの対応データベースを作成することによって実現することが可能になる。例えば、「ダンスを踊って」、「サッカーして」、又は「なぞなぞしよう」等のユーザコマンドを受けて、ダンススキーマ231、サッカースキーマ232、なぞなぞスキーマ233を起動させることにより、ロボット装置の自律的行動選択を抑制して目的の行動をロボット装置に実行させることができる。
【0173】
このように、自律的に行動選択するNormalSBL230に対して他律的に動作選択させるDeliberativeSBL210のIntention機能を利用する場合は、DeliberativeSBL210内のスキーマから、NormalSBL230内の特定のスキーマに対してIntentionを加えることでトップダウンの行動生成を行うものである。
【0174】
図22は、Intentionで与えられたアクティベーションレベルと内部で評価したアクティベーションレベルとの関係を示す模式図である。図22に示すように、ある特定のスキーマに対してIntentionが加えられると、もともと、そのスキーマが持っていた内部状態と外部刺激に基づいて算出されたアクティベーションレベル(以下、AL1)に、Intentionによって外部から設定されたアクティベーションレベル(以下、AL2という。)が加算される。スキーマを起動するかどうかを判断するために、より上位のスキーマに計上されるAL値としては、この2つの値の例えば和(AL1+AL2、以下、AL_total)等が利用される。これによって、外部からあるスキーマに対して本来より大きなALを設定することが可能になる。なお、上記上位のスキーマに計上されるAL_totalとしては、2つのAL値に対して、例えば、適当な係数等により重み付けを行ったものの和等としてもよい。
【0175】
このように、単純にIntentionによって基のAL(AL1)の底上げをしているだけなので、その他のスキーマのAL1がとても大きい場合には、Intentionが意味を持たないこともありえる。しかし、実際には統合スキーマツリーを構成する段階のALの調整で、通常の起動状態では一定の範囲内、例えば0〜100の間でAL1が変化するように設定するので、その範囲を十分超えるようなIntentionを与えることでIntentionがかかったときに、対象のスキーマを確実に起動することが可能となる。
【0176】
例えば、図21に示すDeliberativeSBL210の音声解釈スキーマ201が、NormalSBL230のダンスを踊るダンススキーマ231に対してIntention250を加えた場合、各スキーマのALは、図22に示すようになる。即ち、ダンススキーマ231自身が内部状態と外部刺激とから算出したAL1が例えば85であり、音声解釈スキーマ201から外的に付加されるAL2が例えば1500である場合、ダンススキーマ231は、Intention250が加えられる、即ち、AL2が付加され、アクティベーションレベルの合計値(以下、AL_totalという。)が1585となる。ここで、NormalSBL230における各スキーマが算出する内部状態と外部刺激とから算出されるアクティベーションレベル(AL1)の範囲を例えば0乃至100等の所定の範囲に設定されており、このAL1の範囲を超える大きなAL2を付加するようにすることで、Intention250が加えられておらず、内部状態と外部刺激とから算出されるアクティベーションレベル(AL1)しか有していない他のスキーマより、AL_totalが大きくなる。図22の例では、他のスキーマ232〜234のAL_totalは、夫々5,12,67であるため、AL_total=1585であるIntention250が加えられたスキーマ231が選択されることになる。
【0177】
このように、各スキーマは、夫々が算出したアクティベーションレベルが比較され、例えば最も高いアクティベーションレベルを有するスキーマが選択されるように設定されている場合、このようなIntention250が加え、アクティベーションレベルを強制的に上昇させることで、選択させてスキーマを発火させて行動を発現させることができる。
【0178】
なお、本具体例は、Intentionとして十分大きな値を加算して指定したいスキーマを必ず選択するものであるが、図18に示す上述の例においては、Intentionとして例えばアクティベーションレベルが+30等、本具体例より小さい値を加えるものである。そして、Intentionとしてのアクティベーションレベルが加算された後も負の値である場合に、自身の行動をやりたくない旨を発現するものであり、この場合はIntentionとして加算されるアクティベーションレベルは小さいものの、DeliberativeSBLにより指定されたスキーマは、アクティベーションレベルを他のスキーマと比較されることなく一旦は選択されるように設計されている。即ち、アクティベーションレベルが負の欲求を示すものとすれば、Intentionを断る機能としても用いることができる。
【0179】
次に、Intentionを加える他の例として、NormalSBL230の特定のスキーマに対してIntentionを加えながら、Intentionコマンドの中間で説明を行う等の音声コマンドを実行したいといった場合の行動を実行させる場合について、予め用意された一連のスキーマ起動シーケンスファイルを再生しながら特定のスキーマにIntentionをかけ、ロボットのデモンストレーション(機能紹介)スキーマ202を例にとって説明する。このような場合は、NormalSBLのスキーマ間でIntentionを加えることにより実現することが可能になる。
【0180】
機能紹介スキーマ202における予め用意された一連のスキーマ起動シーケンスファイルを再生しながら特定のスキーマにIntentionを加える機能は、例えばユーザとインタラクティブにロボット装置の機能紹介を行う際に有効な方法である。図23は、機能紹介スキーマ202とNormalSBL230内の各スキーマとの関係を説明する模式図である。この機能紹介スキーマ202が有するスクリプトファイルには、機能紹介を行うための説明文を含む音声、モーション出力コマンドを実行するタイミング、ある特定のスキーマの機能を実行するためのIntentionをかける対象スキーマの情報とからなる一連のステートマシンが記述されている。
【0181】
デモンストレーションを行う機能紹介スキーマ202はスクリプトファイルを読み込みながら、説明コマンドを実行、若しくは特定のスキーマにIntentionを加えることでスキーマの機能を実行し、この操作を繰り返してユーザに対してロボットの機能紹介を行うというものである。
【0182】
例えば、NormalSBL230内に自律的にダンスを踊る、サッカーを行う、及び問題(なぞなぞ)を出すという夫々ダンススキーマ231、サッカースキーマ232及び問題スキーマ233がある場合に、機能紹介スキーマ202は、先ず機能紹介スキーマ202内でコマンドを実行して自分(ロボット装置)は、ダンスが踊れる、サッカーができる、及び問題を出すということを、例えば音声等によりユーザに伝達し、ユーザの反応に応じて、ダンススキーマ231、サッカースキーマ232、又は問題スキーマ233に対してIntentionを加え、実際に、ダンススキーマ231を用いてダンスを踊る様子を実演する、サッカースキーマ232を用いてボールを蹴る様子を実演する、又は問題スキーマを用いてユーザに対して問題を出すという動作を実演することができる。
【0183】
このように、Intentionの機能を用いると自律的行動判断を行わせるために用意されたNormalSBL内のスキーマにIntentionをかけることで、既存のスキーマの持つ機能をそのまま再利用してユーザコマンドを解釈して行動を生成する、ユーザにロボットの機能を紹介するなどの、多くのバリエーションを持った行動生成が可能になる。このようにIntentionモードでスキーマを実行する際に、実際に行動生成コマンドを生成するスキーマシーケンス(アルゴリズム)はホメオスタシスモードで利用しているNormalSBLのスキーマをそのまま再利用することができるため、ホメオスタシスモードとは独立で機能するIntentionモードを実現するために1からプログラムを書き分ける必要がなくなり極めて効率がよい。
【0184】
(4−3−2)命令を断る機能
Intentionを用いたスキーマの実行は、内部状態と外部刺激から評価されたホメオスタシスモードにおけるアクティベーションレベルを無視して、強制的にスキーマを起動するための仕組みとして考案されたものである。しかし、常に命令した行動が実現してしまうと、入力情報と行動出力との対応が固定的になりすぎて、特定の応答動作の繰り返しの結果、ユーザの飽きを招いてしまう可能性がある。そのため、Intentionモードにおいても、ホメオスタシスモードのアクティベーションレベルを完全に無視するのではなく、部分的に考慮に入れ、Intentionがかけられる前の本来のアクティベーションレベルの値が小さかったり、上述したように、負の欲求を示すものである場合によって、ユーザの命令を受諾するか、拒絶するかを判断させ、行動生成に多様性を持たせることが可能になる。
【0185】
このようにIntentionが加えられたスキーマ内部においては、IntentionによるAL2が足し合わされたAL_totalだけでなく、Intentionは加えられる前のAL1も保存されており、参照することが可能なので、「本来はアクティベーションレベルが低いことを考慮して起動を拒否する」といった表現が可能になる。
【0186】
具体的には、Intentionをかけられたスキーマは起動した際に、同時に内部状態と外部刺激に基づくアクティベーションレベル(AL1)を算出し、そのAL1がある一定閾値以上の値を持っていた場合には、所定の行動出力を行うが、閾値以下の場合には気分が乗らない旨の表現を行い、スキーマを終了するというものである。例えば、上記閾値をAL1_th=60と設定した場合について説明する。図22に示す例では、スキーマ231は、Intentionを加えられる前のAL1=85であるため、ユーザの命令、即ち、音声解釈スキーマの指示通りに動作を行う。
【0187】
ここで、サッカーをするスキーマ232にIntentionが加えられ、AL2=1500が付加された場合、例えば、その日は何度もサッカーをした、ボールが見えていない、又は好きな色のボールではない等の理由でスキーマ232が自身で算出したAL1=5と低く、閾値以下である場合がある。このような場合、ロボット装置はサッカーをするという動作を拒否することができる。
【0188】
例えば、サッカーをするスキーマ232の下層に、疲れた態度を示すスキーマや、首を振るスキーマ、サッカーをしたくない旨を音声にてユーザに通知するスキーマ等の1以上の代償スキーマを用意しておき、スキーマ232のAL1が所定の閾値以下であるのにIntentionが加えられた場合に、上記サッカースキーマ232を起動しない代わりに、スキーマ232のAL1に応じてこれらの代償スキーマを起動させる等してもよい。
【0189】
なお、Intentionを用いてスキーマを実行した際の命令を拒否する機能を実装した場合には、拒否を認めず強制的に行動を実行させる、命令を拒否する機能を無効にする機能が必要となる。この拒否を無効にする機能を設けることにより、例えば上述の機能紹介スキーマ202がIntentionを用いてNormalSBL230内のスキーマを実行(選択)し、ロボット装置の機能紹介デモンストレーションを行おうとした場合に、NormalSBL230内のスキーマが実行命令を拒否してしまうと、デモンストレーションが続行できなくなることを防止することができる。本具体例においては、強制フラグを用い、このフラグが立っているか否かにより、NormalSBL230のスキーマからの拒否を受け付けるか否かを選択するようにする。従って、デモンストレーションを行うときには、NormalSBL230のスキーマに対してIntentionを加えると同時に、強制的にスキーマを実行することを意味する情報を「強制フラグ」として渡すことにより、命令を拒否する機能を無効にする。
【0190】
内部状態と外部刺激により行動決定を行っている状態、即ちNormalSBLのみにおける行動決定が完全自律モードだとすると、DeliverativeSBLによってIntentionが加えられた際に、同時に、本来のアクティベーションレベル(AL1)を参照し、ある一定閾値以下の場合には命令を拒否するという機能は、半自律モードといえる。そして強制フラグと共にIntentionの機能を用いてロボットのデモンストレーションを行うような場合は、完全他律モードといえる。
【0191】
(4−3−3)Intentionを加えると同時にパラメータを渡す機能
通常Intentionを加えることによってNormalSBL内のスキーマを起動する際には、「ダンスして」、「サッカーして」など、抽象的な音声コマンドをハンドルしてスキーマ単位で行動を実行することが想定される。しかし、Intentionと同時にパラメータを渡す機能を搭載することにより、Intentionコマンドをより詳細に指定することが可能になる。例えば、サッカーをするスキーマに対してIntentionをかける場合に、「ピンク色のボールを蹴って」という音声コマンドをハンドルした場合には、「ピンク色のボール」に相当する情報を渡すことにより、サッカースキーマに対して、特にピンク色のボールを捜し、蹴るよう行動を限定して命令することが可能になる。この場合、Intention情報と同時に渡すべき情報は、対象オブジェクトのフィーチャーを示す情報、例えば、色彩、形状などが考えられる。
【0192】
(4−4)他の例
Intentionの加え方のバリエーション
Intentionの加え方は、上記具体例に限定されるものではなく、種々の変更が可能である。例えば、デモンストレーションを行う際に、シナリオに従って、音声発話による説明を加えながら、順番にスキーマを起動しロボットの機能を紹介するというものや、何か音声コマンドを受けた際に音声コマンドを解釈して、相当のスキーマを選択するか、又はスキーマ起動に必要なパラメータを渡し、スキーマを起動するというもの等もある。
【0193】
この他にもIntentionを用いたスキーマの起動方法には様々なバリエーションを持たせることが可能である。Intentionアルゴリズムにおいてバリエーションを作ることが可能なのは、基本的に以下の値を何らかの条件と連動させて変化させることによって実現される。即ち、
Intentionをかける際に加算するアクティベーションレベルの大きさ
Intentionをかけた際に、言うことを聞くか、命令を断るかを判断する閾値の大きさ
である。例えば、顔画像認識や話者認識によって獲得した情報をもとに、それまでの話者との経験からIntentionをかける際に加算するアクティベーションレベル(AL2)の大きさを変化させ、気に入った相手の言うことはよく聞くが、気に入らない相手の言うことは聞きにくいなど、相手が誰であるかによっていうことの聞き具合に変化を与えるようなことも可能である。
【0194】
本具体例においては、DeliberativeSBLのIntention機能を用いることにより、ロボット装置の内部状態や外部刺激の状態によらず、人間の命令した言葉を解釈して行動生成を行うことや、ある一連の動作を定義した設定ファイルを再生することによってデモンストレーションを行うことが可能となる。このように、ホメオスタシスモードのために記述されたスキーマをIntentionモードのスキーマとしても再利用可能であるため、行動選択、生成のためのプログラムをすべて準備する必要がない。即ち、用意するべきプログラムはあるコマンドに対してどのスキーマを実行するか、もしくはスキーマをどのような順番で実行するかといったフレームワークのみでよいのでプログラミング効率が極め高い。
【0195】
これにより、内外の環境状況に応じて自律的に行動判断を行うホメオスタシスモードによるスキーマの実行と、ユーザからの命令、デモスクリプトなどトップダウンの命令に従って行動生成を行うIntentionモードとを共通のSBLという行動制御アルゴリズムの中で扱うことが可能になる。
【0196】
そして、外的にアクティベーションレベル(AL2)を設定した際であっても、内部状態に基づいて算出されたアクティベーションレベル(AL1)を参照すると共に、感情状態に応じて加算するアクティベーションレベル(AL1)を増減させることで、不快な感情状態の時には言うことを聞きにくいが、喜んでいるような感情状態の時にはなんでも言うことを聞いてくれるというような動作を取らせることが可能となる。このように、外的には強制的にスキーマを起動させられてはいるものの、同時に内部では実際にはどの程度その行動を行いたいという意志を持っているのかを仮想的に考えることが可能であるので、ロボット装置の状況によっては、外的に加えられたIntentionを拒否するという行動を生成して入力情報−行動出力間の応答動作が固定化することを防ぎ、行動の多様化を実現することができる。即ち、単に命令に従うのみでなく、状況に応じて、命令を拒否することにより、ユーザがロボット装置の固定的な応答に飽きを生じてしまうことを防ぎ、より人間や動物に近い動作を生成することができる。
【0197】
【発明の効果】
以上詳細に説明したように本発明に係るロボット装置は、内部状態及び外部刺激に基づき行動を選択し発現するロボット装置において、複数の行動が記述され、該複数の行動から選択された行動を出力する行動出力手段と、上記内部状態及び/又は外部刺激から各行動の実行優先度を算出する優先度算出手段とを有し、上記実行優先度は、各行動を発現することに対する正の欲求又は負の欲求を示し、上記行動出力手段は、選択された行動の実行優先度が負の欲求を示すものであるとき、当該選択された行動とは異なる行動を出力するので、従来は、やりたい等の正の欲求のみが行動に反映されていたのに対し、選択された行動をしなくないという負の欲求を有する旨をユーザに動作で伝えたり、音声で通知して行動に反映させることができ、ロボット装置の行動に多種多様なバリエーションを持たせてより人間に近い行動を出力するようにすることができる。
【図面の簡単な説明】
【図1】本発明の実施の形態におけるロボット装置の外観を示す斜視図である。
【図2】本発明の実施の形態におけるロボット装置の機能構成を模式的に示すブロック図である。
【図3】本発明の実施の形態におけるロボット装置の制御ユニットの構成を更に詳細に示すブロック図である。
【図4】本発明の実施の形態におけるロボット装置の行動制御システムの機能構成を示す模式図である。
【図5】本発明の実施の形態における行動制御システムのオブジェクト構成を示す模式図である。
【図6】本発明の実施の形態における状況依存行動階層による状況依存行動制御の形態を示す模式図である。
【図7】状況依存行動階層による行動制御の基本的な動作例を示す模式図である。
【図8】状況依存行動階層により反射行動を行なう場合の動作例を示す模式図である。
【図9】状況依存行動階層により感情表現を行なう場合の動作例を示す模式図である。
【図10】状況依存行動階層が複数のスキーマによって構成されている様子を示す模式図である。
【図11】状況依存行動階層におけるスキーマのツリー構造を示す模式図である。
【図12】状況依存行動階層において通常の状況依存行動を制御するためのメカニズムを示す模式図である。
【図13】反射行動部におけるスキーマの構成を示す模式図である。
【図14】反射行動部により反射的行動を制御するためのメカニズムを示す模式図である。
【図15】状況依存行動階層において使用されるスキーマのクラス定義を示す模式図である。
【図16】状況依存行動階層内のクラスの機能的構成を示す模式図である。
【図17】スキーマのReentrant性を説明する図である。
【図18】本発明の実施の形態におけるロボット装置の負の欲求を説明する図であって、外部からの指示に従いロボット装置が行動を発現しない場合において、スキーマツリーにおけるスキーマのアクティベーションレベルを示す模式図である。
【図19】内部状態と欲求値MVとの関係の一例を示すグラフ図である。
【図20】外部からの指示に従いロボット装置が行動を発現する場合において、スキーマツリーにおけるスキーマのアクティベーションレベルを示す模式図である。
【図21】本発明の実施の形態におけるNormalSBLとDeliberativeSBLとの関係を示す模式図である。
【図22】Intentionで与えられたアクティベーションレベルと内部で評価したアクティベーションレベルとの関係を示す模式図である
【図23】本発明の実施の形態におけるDeliberativeSBLの機能紹介スキーマとNormalSBL内の各スキーマとの関係を説明する模式図である。
【符号の説明】
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 (18)
- 内部状態及び外部刺激に基づき行動を選択し発現するロボット装置において、
複数の行動が記述され、該複数の行動から選択された行動を出力する行動出力手段と、
上記内部状態及び/又は外部刺激から各行動の実行優先度を算出する優先度算出手段とを有し、
上記実行優先度は、各行動を発現することに対する正の欲求又は負の欲求を示し、
上記行動出力手段は、選択された行動の実行優先度が負の欲求を示すものであるとき、当該選択された行動とは異なる行動を出力することを特徴とするロボット装置。 - 上記異なる行動は、上記選択された行動を否定する行動であることを特徴とする請求項1記載のロボット装置。
- 上記行動出力手段は、上記選択された行動の実行優先度が負の欲求を示すものであるとき、当該選択された行動を出力しないことを特徴とする請求項1記載のロボット装置。
- 上記実行優先度又は所定の外部刺激に基づき上記行動を選択する行動選択手段を有することを特徴とする請求項1記載のロボット装置。
- 上記所定の外部刺激は、使用者からの命令であることを特徴とする請求項1記載のロボット装置。
- 上記実行優先度は、上記外部刺激に応じて算出される第1の欲求を示す値及び上記内部状態に応じて算出される第2の欲求を示す値とに基づき算出されることを特徴とする請求項1記載のロボット装置。
- 上記内部状態は、感情及び/又は本能の大きさを示す複数のパラメータを有し、行動が発現されると該パラメータの少なくとも1つが変化し、上記第2の欲求を示す値は、上記内部状態の各パラメータを所定の範囲内とするものであって、各パラメータが所定の範囲外である場合に負の欲求を示す値となる
ことを特徴とする請求項1記載のロボット装置。 - 上記行動出力手段は、上記選択された行動とは異なる行動を複数有し、該複数の異なる行動から上記負の欲求を示す値に応じた行動を出力することを特徴とする請求項1記載のロボット装置。
- 上記行動出力手段は、行動が記述された複数の行動記述モジュールを有し、
上記行動記述モジュールは、各行動の実現レベルに応じて木構造に構成されることを特徴とする請求項1記載のロボット装置。 - 内部状態及び外部刺激に基づき行動を選択し発現するロボット装置の行動制御方法において、
上記内部状態及び/又は外部刺激から各行動の実行優先度を算出する優先度算出工程と、
複数の行動から選択された行動を出力する行動出力工程とを有し、
上記実行優先度は、各行動を発現することに対する正の欲求又は負の欲求を示し、
上記行動出力工程では、上記選択された行動の実行優先度が負の欲求を示すものであるとき、当該選択された行動とは異なる行動を出力することを特徴とするロボット装置の行動制御方法。 - 上記異なる行動は、上記選択された行動を否定する行動であることを特徴とする請求項10記載のロボット装置の行動制御方法。
- 上記行動出力工程では、上記選択された行動の実行優先度が負の欲求を示すものであるとき、当該選択された行動は出力されないことを特徴とする請求項10記載のロボット装置の行動制御方法。
- 上記実行優先度又は所定の外部刺激に基づき上記行動を選択する行動選択工程を有することを特徴とする請求項10記載のロボット装置の行動制御方法。
- 上記所定の外部刺激は、使用者からの命令であることを特徴とする請求項10記載のロボット装置の行動制御方法。
- 上記実行優先度は、上記外部刺激に応じて算出される第1の欲求を示す値及び上記内部状態に応じて算出される第2の欲求を示す値とに基づき算出されることを特徴とする請求項10記載のロボット装置の行動制御方法。
- 上記内部状態は、感情及び/又は本能の大きさを示す複数のパラメータを有し、行動が発現されると該パラメータの少なくとも1つが変化し、
上記第2の欲求を示す値は、上記内部状態の各パラメータを所定の範囲内とするものであって、各パラメータが所定の範囲外である場合に負の欲求を示す値となる
ことを特徴とする請求項10記載のロボット装置の行動制御方法。 - 上記行動出力工程では、上記選択された行動とは異なる複数の行動から上記負の欲求を示す値に応じた行動が出力されることを特徴とする請求項10記載のロボット装置の行動制御方法。
- 内部状態及び外部刺激に基づき行動を選択し発現するような動作をコンピュータに実行させるためのプログラムにおいて、
上記内部状態及び/又は外部刺激から各行動の実行優先度を算出する優先度算出工程と、
複数の行動から選択された行動を出力する行動出力工程とを有し、
上記実行優先度は、各行動を発現することに対する正の欲求又は負の欲求を示し、
上記行動出力工程では、上記選択された行動の実行優先度が負の欲求を示すものであるとき、当該選択された行動とは異なる行動を出力することを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003079145A JP2004283958A (ja) | 2003-03-20 | 2003-03-20 | ロボット装置、その行動制御方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003079145A JP2004283958A (ja) | 2003-03-20 | 2003-03-20 | ロボット装置、その行動制御方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004283958A true JP2004283958A (ja) | 2004-10-14 |
Family
ID=33293344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003079145A Withdrawn JP2004283958A (ja) | 2003-03-20 | 2003-03-20 | ロボット装置、その行動制御方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004283958A (ja) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006030530A1 (ja) * | 2004-09-17 | 2006-03-23 | National Institute Of Advanced Industrial Science And Technology | 刺激優先度判定手段を備えた模擬生物装置 |
WO2006030529A1 (ja) * | 2004-09-17 | 2006-03-23 | National Institute Of Advanced Industrial Science And Technology | 擬似感情形成手段を備えた模擬生物装置 |
JP2006247780A (ja) * | 2005-03-10 | 2006-09-21 | Advanced Telecommunication Research Institute International | コミュニケーションロボット |
EP2068275A2 (en) | 2007-12-06 | 2009-06-10 | Honda Motor Co., Ltd. | Communication robot |
US7770171B2 (en) | 2005-03-23 | 2010-08-03 | Kabushiki Kaisha Toshiba | Plan executing apparatus, method of plan execution, and computer program product therefor |
KR101402908B1 (ko) | 2007-12-18 | 2014-06-02 | 주식회사 케이티 | 행위기반 로봇 제어장치 및 그 제어방법 |
EP2933067A1 (en) * | 2014-04-17 | 2015-10-21 | Aldebaran Robotics | Method of performing multi-modal dialogue between a humanoid robot and user, computer program product and humanoid robot for implementing said method |
EP2933065A1 (en) * | 2014-04-17 | 2015-10-21 | Aldebaran Robotics | Humanoid robot with an autonomous life capability |
JP2017056504A (ja) * | 2015-09-15 | 2017-03-23 | 株式会社日本自動車部品総合研究所 | 動作体の感情動作制御装置及び感情動作制御方法 |
WO2018008323A1 (ja) * | 2016-07-08 | 2018-01-11 | Groove X株式会社 | 服を着る自律行動型ロボット |
CN109262606A (zh) * | 2017-07-18 | 2019-01-25 | 松下知识产权经营株式会社 | 装置、方法、程序以及机器人 |
RU2680791C2 (ru) * | 2014-04-17 | 2019-02-26 | Софтбэнк Роботикс Юроп | Всенаправленный колесный человекоподобный робот, основанный на контроллере положения и скорости с линейным прогнозированием |
JP2020000279A (ja) * | 2018-06-25 | 2020-01-09 | Groove X株式会社 | 仮想キャラクタを想定する自律行動型ロボット |
EP3722054A1 (en) * | 2011-01-13 | 2020-10-14 | Microsoft Technology Licensing, LLC | Multi-state model for robot and user interaction |
JPWO2021171349A1 (ja) * | 2020-02-25 | 2021-09-02 |
-
2003
- 2003-03-20 JP JP2003079145A patent/JP2004283958A/ja not_active Withdrawn
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006030530A1 (ja) * | 2004-09-17 | 2006-03-23 | National Institute Of Advanced Industrial Science And Technology | 刺激優先度判定手段を備えた模擬生物装置 |
WO2006030529A1 (ja) * | 2004-09-17 | 2006-03-23 | National Institute Of Advanced Industrial Science And Technology | 擬似感情形成手段を備えた模擬生物装置 |
JP2006247780A (ja) * | 2005-03-10 | 2006-09-21 | Advanced Telecommunication Research Institute International | コミュニケーションロボット |
US7770171B2 (en) | 2005-03-23 | 2010-08-03 | Kabushiki Kaisha Toshiba | Plan executing apparatus, method of plan execution, and computer program product therefor |
EP2068275A2 (en) | 2007-12-06 | 2009-06-10 | Honda Motor Co., Ltd. | Communication robot |
US8010231B2 (en) | 2007-12-06 | 2011-08-30 | Honda Motor Co., Ltd. | Communication robot |
KR101402908B1 (ko) | 2007-12-18 | 2014-06-02 | 주식회사 케이티 | 행위기반 로봇 제어장치 및 그 제어방법 |
EP3722054A1 (en) * | 2011-01-13 | 2020-10-14 | Microsoft Technology Licensing, LLC | Multi-state model for robot and user interaction |
US10583559B2 (en) | 2014-04-17 | 2020-03-10 | Softbank Robotics Europe | Humanoid robot with an autonomous life capability |
JP2017514709A (ja) * | 2014-04-17 | 2017-06-08 | ソフトバンク・ロボティクス・ヨーロッパSoftbank Robotics Europe | 自律的生活能力を備えた人型ロボット |
AU2015248795B2 (en) * | 2014-04-17 | 2018-02-08 | Softbank Robotics Europe | Humanoid robot with an autonomous life capability |
RU2680791C2 (ru) * | 2014-04-17 | 2019-02-26 | Софтбэнк Роботикс Юроп | Всенаправленный колесный человекоподобный робот, основанный на контроллере положения и скорости с линейным прогнозированием |
WO2015158877A1 (en) * | 2014-04-17 | 2015-10-22 | Aldebaran Robotics | Humanoid robot with an autonomous life capability |
EP2933065A1 (en) * | 2014-04-17 | 2015-10-21 | Aldebaran Robotics | Humanoid robot with an autonomous life capability |
EP2933067A1 (en) * | 2014-04-17 | 2015-10-21 | Aldebaran Robotics | Method of performing multi-modal dialogue between a humanoid robot and user, computer program product and humanoid robot for implementing said method |
JP2017056504A (ja) * | 2015-09-15 | 2017-03-23 | 株式会社日本自動車部品総合研究所 | 動作体の感情動作制御装置及び感情動作制御方法 |
WO2018008323A1 (ja) * | 2016-07-08 | 2018-01-11 | Groove X株式会社 | 服を着る自律行動型ロボット |
GB2564822A (en) * | 2016-07-08 | 2019-01-23 | Groove X Inc | Autonomous robot that wears clothes |
GB2564822B (en) * | 2016-07-08 | 2021-08-18 | Groove X Inc | Autonomously acting robot that wears clothes |
CN109262606B (zh) * | 2017-07-18 | 2023-10-27 | 松下知识产权经营株式会社 | 装置、方法、记录介质以及机器人 |
CN109262606A (zh) * | 2017-07-18 | 2019-01-25 | 松下知识产权经营株式会社 | 装置、方法、程序以及机器人 |
JP2020000279A (ja) * | 2018-06-25 | 2020-01-09 | Groove X株式会社 | 仮想キャラクタを想定する自律行動型ロボット |
JP7298860B2 (ja) | 2018-06-25 | 2023-06-27 | Groove X株式会社 | 仮想キャラクタを想定する自律行動型ロボット |
WO2021171349A1 (ja) * | 2020-02-25 | 2021-09-02 | 日本電気株式会社 | 制御装置、制御方法及び記録媒体 |
JP7343033B2 (ja) | 2020-02-25 | 2023-09-12 | 日本電気株式会社 | 制御装置、制御方法及びプログラム |
JPWO2021171349A1 (ja) * | 2020-02-25 | 2021-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7363108B2 (en) | Robot and control method for controlling robot expressions | |
JP2004268235A (ja) | ロボット装置、その行動制御方法及びプログラム | |
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 | |
JP2004283958A (ja) | ロボット装置、その行動制御方法及びプログラム | |
JP3558222B2 (ja) | ロボットの行動制御システム及び行動制御方法、並びにロボット装置 | |
JP2006110707A (ja) | ロボット装置 | |
JP2007125631A (ja) | ロボット装置及びその行動制御方法 | |
JP2021153680A (ja) | 機器の制御装置、機器、機器の制御方法及びプログラム | |
JP4296736B2 (ja) | ロボット装置 | |
JP2007125629A (ja) | ロボット装置及びその行動制御方法 | |
JP4147960B2 (ja) | ロボット装置、及びロボット装置の動作制御方法 | |
JP2004283957A (ja) | ロボット装置、その制御方法、及びプログラム | |
JP4552465B2 (ja) | 情報処理装置、ロボット装置の行動制御方法、ロボット装置及びコンピュータ・プログラム | |
JP2002205289A (ja) | ロボット装置の動作制御方法、プログラム、記録媒体及びロボット装置 | |
JP2004283960A (ja) | ロボット装置、その行動制御方法、及びプログラム | |
JP2005321954A (ja) | ロボット装置、情報処理システム及び情報処理方法、並びにコンピュータ・プログラム | |
JP2004209599A (ja) | ロボット装置、ロボット装置の行動学習方法、ロボット装置の行動生成方法 | |
JP2005193330A (ja) | ロボット装置及びその情動表出方法 | |
JP2001157981A (ja) | ロボット装置及びその制御方法 | |
JP2001157980A (ja) | ロボット装置及びその制御方法 | |
JP2007125630A (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 |