JP4147960B2 - ロボット装置、及びロボット装置の動作制御方法 - Google Patents
ロボット装置、及びロボット装置の動作制御方法 Download PDFInfo
- Publication number
- JP4147960B2 JP4147960B2 JP2003028896A JP2003028896A JP4147960B2 JP 4147960 B2 JP4147960 B2 JP 4147960B2 JP 2003028896 A JP2003028896 A JP 2003028896A JP 2003028896 A JP2003028896 A JP 2003028896A JP 4147960 B2 JP4147960 B2 JP 4147960B2
- Authority
- JP
- Japan
- Prior art keywords
- schema
- behavior
- action
- function
- robot apparatus
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Manipulator (AREA)
Description
【発明の属する技術分野】
本発明は、内部状態や外部刺激に応じて動作制御されるロボット装置及びその動作制御方法に関する。
【0002】
【従来の技術】
電気的又は磁気的な作用を用いて人間(生物)の動作に似た運動を行う機械装置を「ロボット装置」という。我が国においてロボット装置が普及し始めたのは、1960年代末からであるが、その多くは、工場における生産作業の自動化・無人化等を目的としたマニピュレータ及び搬送ロボット装置等の産業用ロボット装置(Industrial Robot)であった。
【0003】
最近では、人間のパートナーとして生活を支援する、即ち住環境その他の日常生活上の様々な場面における人的活動を支援する実用ロボット装置の開発が進められている。このような実用ロボット装置は、産業用ロボット装置とは異なり、人間の生活環境の様々な局面において、個々に個性の相違した人間、又は様々な環境への適応方法を自ら学習する能力を備えている。例えば、犬又は猫のように4足歩行の動物の身体メカニズム及びその動作を模した「ペット型」ロボット装置、或いは、2足直立歩行を行う人間等の身体メカニズム及びその動作をモデルにしてデザインされた「人間型」又は「人間形」ロボット装置(Humanoid Robot)等のロボット装置は、既に実用化されつつある。
【0004】
これらのロボット装置は、産業用ロボット装置と比較して、例えばエンターテインメント性を重視した様々な動作等を行うことができるため、エンターテインメントロボット装置と呼称される場合もある。また、そのようなロボット装置には、外部からの情報及び内部の状態に応じて自律的に動作するものがある。
【0005】
例えば下記特許文献1に記載のロボット装置は、外部環境や内部状態などロボット装置が置かれている状況を統合的に判断して行動を選択するという、状況依存型の行動制御手法を用いたものであって、視覚や聴覚などのセンサ入力を外部環境情報とし、本能や感情などの内部状態モデルから得られる情報を内部状態とすることで自律的に行動選択を行うアルゴリズムが使用されている。
【0006】
【特許文献1】
特開2002−210681号公報
【0007】
【発明が解決しようとする課題】
しかしながら、上記特許文献1のように、ロボット装置内部にある価値基準によって内外の状況判断を行い、自律的に行動生成を行うと、その行動形態は創発的なものとなり、より複雑な行動を生成することが可能になる。その反面、行動判断基準がロボット内部で閉じているため、何を目的として行動しているのかが第三者的な立場にあるユーザからは解釈しづらくなる場合がある。
【0008】
また、このように創発的に行動を生成するロボット行動制御アルゴリズムにおいては、外部環境情報として使う情報は、接触センサの入力や、関節角度の変化、体内の温度センサなど、低次なレベルでのセンサ情報が一般的である。トップダウンのIntentionを受けて行動生成に反映させることを考えた場合、低次な意味での外部環境だけではなく、ユーザからの言語的情報の解釈などの高次な意味での外部環境情報を考慮して行動に反映させることが求められる。
【0009】
本発明は、このような従来の実情に鑑みて提案されたものであり、内部状態や外部刺激に基づく自律的な動作のみではなく、内部状態を考慮しつつ他律的にも動作制御が可能なロボット装置及びその動作制御方法を提供することを目的とする。
【0010】
【課題を解決するための手段】
上述した目的を達成するために、本発明に係るロボット装置は、複数の機体動作から選択された機体動作を発現するロボット装置において、機体動作が記述された機体動作記述モジュール群を含む行動記述モジュール群と、上記機体動作を選択する行動選択制御手段とを有し、上記行動選択制御手段は、上記ロボット装置の身体に基づいた情動を示す内部状態モデルから得られる内部状態及び/又は外部刺激に基づき上記ロボット装置が備えるセンサ入力で得られた知覚情報に応じた機体動作を選択する自律選択機能と、所定の指令に応じて上記自律選択機能とは無関係に強制的に上記機体動作を選択する他律選択機能とを有し、上記行動記述モジュール群は、上記内部状態及び/又は上記外部刺激の変化に基づいて上記機体動作の実行権を優先的に獲得するための第1の実行優先度を示す値を算出する上記機体動作記述モジュール群である第1の行動記述モジュール群と、上記他律選択機能により選択する対象となる上記機体動作の実行権を優先的に獲得するための第2の実行優先度を示す値を上記第1の実行優先度を示す値に加算する第2の行動記述モジュール群とを有し、上記行動選択制御手段は、上記第2の行動記述モジュール群が上記第1の実行優先度を示す値に上記第2の実行優先度を示す値を加算することにより算出した第3の実行優先度を示す値が第1の閾値以上であるか否かに基づいて、上記機体動作を選択することを特徴とする。
【0011】
本発明においては、ユーザ等からの所定の指令に基づき、機体動作の選択動作を制御し、機体動作を強制的に選択させ、自律的に選択される機体動作よりも優先して発現させることが可能となる。
【0012】
また、上記行動記述モジュール群は、上記内部状態及び/又は外部刺激に基づき上記機体動作の第1の実行優先度を算出する上記機体動作記述モジュール群である第1の行動記述モジュール群と、上記他律的に選択する対象となる機体動作の第1の実行優先度に第2の実行優先度を加算する第2の行動記述モジュール群とを有し、上記行動選択制御手段は、上記第1の実行優先度と上記第2の実行優先度とに基づき機体動作を選択することができ、上記第2の実行優先度が加算された機体動作の上記第1の実行優先度が所定の閾値以上であるか否かによって当該機体動作を選択するか否かを決定するようにすれば、内部状態によっては、ユーザ等からの命令に従わず、行動を発現しないように制御することができる。
【0013】
更に、上記第2の行動記述モジュール群は、上記他律的に選択する対象となる機体動作の第1の実行優先度に第2の実行優先度を加算すると共に、上記所定の指令に応じて上記第1の実行優先度を無効にする機能を有し、上記行動選択制御手段は、上記第2の行動記述モジュール群により上記第1の実行優先度が無効にされた場合、上記第2の実行優先度が加算された機体動作を選択することができ、これにより、完全他律型の行動制御が可能になる。
【0014】
本発明に係るロボット装置の動作制御方法は、複数の機体動作から選択された機体動作を発現するロボット装置の動作制御方法において、行動記述モジュール群に記述された複数の機体動作から、上記ロボット装置の身体に基づいた情動を示す内部状態モデルから得られる内部状態及び/又は外部刺激に基づき上記ロボット装置が備えるセンサ入力で得られた知覚情報に応じた機体動作を選択する自律選択機能と、所定の指令に応じて上記自律選択機能とは無関係に強制的に上記機体動作を選択する他律選択機能により、発現する機体動作を選択する行動選択制御工程と、上記選択された機体動作を発現する発現工程とを有し、上記行動記述モジュール群は、上記内部状態及び/又は上記外部刺激の変化に基づいて上記機体動作の実行権を優先的に獲得するための第1の実行優先度を示す値を算出する上記機体動作記述モジュール群である第1の行動記述モジュール群と、上記他律選択機能により選択する対象となる上記機体動作の実行権を優先的に獲得するための第2の実行優先度を示す値を上記第1の実行優先度を示す値に加算する第2の行動記述モジュール群とを有し、上記行動選択工程では、上記第2の行動記述モジュール群が上記第1の実行優先度を示す値に上記第2の実行優先度を示す値を加算することにより算出した第3の実行優先度を示す値が第1の閾値以上であるか否かに基づいて、上記機体動作を選択することを特徴とする。
【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)ロボット装置の制御システム
次に、ロボット装置の行動(動作)制御システムについて説明する。図4は、本実施の形態におけるロボット装置1の行動制御システム10の機能構成を示す模式図である。本実施の形態におけるロボット装置1は、外部刺激の認識結果や内部状態の変化に応じて、自身の状態を表現すると共に、行動制御を行なうことができるものである。また、長期記憶機能を備え、外部刺激から内部状態の変化を連想記憶することにより、外部刺激の認識結果や内部状態の変化に応じて行動制御を行うことができ、外部刺激の認識結果や内部状態の変化を後述する表現手段にて表現することができるものである。
【0037】
ここで、外的刺激とは、ロボット装置1がセンサ入力を認識して得られた知覚情報であり、例えば、カメラ15から入力された画像に対して処理された色情報、形情報、顔情報等であり、より具体的には、色、形、顔、3D一般物体、ハンドジェスチャー、動き、音声、接触、匂い、味等の構成要素からなる。
【0038】
また、内部状態とは、例えば、人間の本能や感情等の情動をモデル化したもので、ロボット装置の身体に基づいた情動を指す。本能的要素は、例えば、疲れ(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つである。
【0039】
図示の動作制御システム10には、オブジェクト指向プログラミングを採り入れて実装することができる。この場合、各ソフトウェアは、データとそのデータに対する処理手続きとを一体化させた「オブジェクト」というモジュール単位で扱われる。また、各オブジェクトは、メッセージ通信と共有メモリを使ったオブジェクト間通信方法によりデータの受け渡しとInvokeを行なうことができる。
【0040】
行動制御システム10は、外部環境(Environments)70を認識するために、視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83等の機能モジュールからなる状態認識部80を備えている。
【0041】
視覚認識機能部(Video)81は、例えば、CCD(Charge Coupled Device:電荷結合素子)カメラのような画像入力装置を介して入力された撮影画像を基に、顔認識や色認識等の画像認識処理や特徴抽出を行う。
【0042】
また、聴覚認識機能部(Audio)82は、マイク等の音声入力装置を介して入力される音声データを音声認識して、特徴抽出したり、単語セット(テキスト)認識を行ったりする。
【0043】
更に、接触認識機能部(Tactile)83は、例えば機体の頭部等に内蔵された接触センサによるセンサ信号を認識して、「なでられた」とか「叩かれた」という外部刺激を認識する。
【0044】
内部状態管理部(ISM:Internal State Model)91は、本能や感情といった数種類の情動を数式モデル化して管理しており、上述の視覚認識機能部81と、聴覚認識機能部82と、接触認識機能部83によって認識された外部刺激(ES:External Stimulus)に応じてロボット装置1の本能や情動といった内部状態を管理する。
【0045】
感情モデル及び本能モデル(感情・本能モデル)は、それぞれ認識結果と行動履歴を入力に持ち、夫々感情値と本能値を管理している。行動モデルは、これら感情値や本能値を参照することができる。
【0046】
また、外部刺激の認識結果や内部状態の変化に応じて行動制御を行なうために、時間の経過とともに失われる短期的な記憶を行なう短期記憶部(STM:Short Term Memory)92と、情報を比較的長期間保持するための長期記憶部(LTM:Long Term Memory)93を備えている。短期記憶と長期記憶という記憶メカニズムの分類は神経心理学に依拠する。
【0047】
短期記憶部92は、上述の視覚認識機能部81、聴覚認識機能部82及び接触認識機能部83によって外部環境から認識されたターゲットやイベントを短期間保持する機能モジュールである。例えば、図2に示すカメラ15からの入力画像を約15秒程度の短い期間だけ記憶する。
【0048】
長期記憶部93は、物の名前等学習により得られた情報を長期間保持するために使用される。長期記憶部93は、例えば、ある行動記述モジュールにおいて外部刺激から内部状態の変化を連想記憶することができる。
【0049】
また、本ロボット装置1の行動制御は、反射行動部(Reflexive Situated Behavior Layer)103によって実現される「反射行動」と、状況依存行動階層(SBL:Situated Behavior Layer)102によって実現される「状況依存行動」と、熟考行動階層(Deliberative Layer)101によって実現される「熟考行動」に大別される。
【0050】
反射行動部103は、上述の視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83によって認識された外部刺激に応じて反射的な機体動作を実現する機能モジュールである。
【0051】
反射行動とは、基本的に、センサ入力された外部情報の認識結果を直接受けて、これを分類して、出力行動を直接決定する行動のことである。例えば、人間の顔を追いかけたり、うなずいたりといった振る舞いは反射行動として実装することが好ましい。
【0052】
状況依存行動階層102は、短期記憶部92及び長期記憶部93の記憶内容や、内部状態管理部91によって管理される内部状態を基に、ロボット装置1が現在置かれている状況に即応した行動を制御する。
【0053】
状況依存行動階層102は、各行動毎にステートマシンを用意しており、それ以前の行動や状況に依存して、センサ入力された外部情報の認識結果を分類して、行動を機体上で発現する。また、状況依存行動階層102は、内部状態をある範囲に保つための行動(「ホメオスタシス行動」とも呼ぶ)も実現し、内部状態が指定した範囲内を超えた場合には、その内部状態を当該範囲内に戻すための行動が出現し易くなるようにその行動を活性化させる(実際には、内部状態と外部環境の両方を考慮した形で行動が選択される)。状況依存行動は、反射行動に比し、反応時間が遅い。
【0054】
熟考行動階層101は、短期記憶部92及び長期記憶部93の記憶内容に基づいて、ロボット装置1の比較的長期にわたる行動計画等を行う。
【0055】
熟考行動とは、与えられた状況あるいは人間からの命令により、推論やそれを実現するための計画を立てて行われる行動のことである。例えば、ロボット装置の位置と目標の位置から経路を探索することは熟考行動に相当する。このような推論や計画は、ロボット装置1がインタラクションを保つための反応時間よりも処理時間や計算負荷を要する(すなわち処理時間がかかる)可能性があるので、上記の反射行動や状況依存行動がリアルタイムで反応を返しながら、熟考行動は推論や計画を行う。
【0056】
熟考行動階層101、状況依存行動階層102、及び反射行動部103は、ロボット装置1のハードウェア構成に非依存の上位のアプリケーション・プログラムとして記述することができる。これに対し、ハードウェア依存層制御部(Configuration Dependent Actions And Reactions)104は、これら上位アプリケーション、即ち、行動記述モジュール(スキーマ)からの命令に応じて、関節アクチュエータの駆動等の機体のハードウェア(外部環境)を直接操作する。このような構成により、ロボット装置1は、制御プログラムに基づいて自己及び周囲の状況を判断し、使用者からの指示及び働きかけに応じて自律的に行動できる。
【0057】
次に、行動制御システム10について更に詳細に説明する。図5は、本実施の形態における行動制御システム10のオブジェクト構成を示す模式図である。
【0058】
図5に示すように、視覚認識機能部81は、Face Detector114、Mulit Color Tracker113、Face Identify115という3つのオブジェクトで構成される。
【0059】
Face Detector114は、画像フレーム中から顔領域を検出するオブジェクトであり、検出結果をFace Identify115に出力する。Mulit Color Tracker113は、色認識を行うオブジェクトであり、認識結果をFace Identify115及びShort Term Memory(STM)92に出力する。また、Face Identify115は、検出された顔画像を手持ちの人物辞書で検索する等して人物の識別を行ない、顔画像領域の位置、大きさ情報とともに人物のID情報をSTM92に出力する。
【0060】
聴覚認識機能部82は、Audio Recog111とSpeech Recog112という2つのオブジェクトで構成される。Audio Recog111は、マイク等の音声入力装置からの音声データを受け取って、特徴抽出と音声区間検出を行うオブジェクトであり、音声区間の音声データの特徴量及び音源方向をSpeech Recog112やSTM92に出力する。Speech Recog112は、Audio Recog111から受け取った音声特徴量と音声辞書及び構文辞書を使って音声認識を行うオブジェクトであり、認識された単語のセットをSTM92に出力する。
【0061】
触覚認識記憶部83は、接触センサからのセンサ入力を認識するTactile Sensor119というオブジェクトで構成され、認識結果はSTM92や内部状態を管理するオブジェクトであるInternal State Model(ISM)91に出力する。
【0062】
STM92は、短期記憶部を構成するオブジェクトであり、上述の認識系の各オブジェクトによって外部環境から認識されたターゲットやイベントを短期間保持(例えばカメラ15からの入力画像を約15秒程度の短い期間だけ記憶する)する機能モジュールであり、STMクライアントであるSBL102に対して外部刺激の通知(Notify)を定期的に行なう。
【0063】
LTM93は、長期記憶部を構成するオブジェクトであり、物の名前等学習により得られた情報を長期間保持するために使用される。LTM93は、例えば、ある行動記述モジュール(スキーマ)において外部刺激から内部状態の変化を連想記憶することができる。
【0064】
ISM91は、内部状態管理部を構成するオブジェクトであり、本能や感情といった数種類の情動を数式モデル化して管理しており、上述の認識系の各オブジェクトによって認識された外部刺激(ES:External Stimulus)に応じてロボット装置1の本能や情動といった内部状態を管理する。
【0065】
SBL102は状況依存型行動階層を構成するオブジェクトである。SBL102は、STM92のクライアント(STMクライアント)となるオブジェクトであり、STM92からは定期的に外部刺激(ターゲットやイベント)に関する情報の通知(Notify)を受け取ると、スキーマ(Schema)すなわち実行すべき行動記述モジュールを決定する(後述)。
【0066】
ReflexiveSBL(Situated Behavior Layer)103は、反射的行動部を構成するオブジェクトであり、上述した認識系の各オブジェクトによって認識された外部刺激に応じて反射的・直接的な機体動作を実行する。例えば、人間の顔を追いかけたり、うなずく、障害物の検出により咄嗟に避けるといった振る舞いを行なう。
【0067】
SBL102は外部刺激や内部状態の変化等の状況に応じた動作を選択する。これに対し、ReflexiveSBL103は、外部刺激に応じて反射的な動作を選択する。これら2つのオブジェクトによる行動選択は独立して行なわれるため、互いに選択された行動記述モジュール(スキーマ)を機体上で実行する場合に、ロボット装置1のハードウェア・リソースが競合して実現不可能なこともある。RM(Resource Manager)116というオブジェクトは、SBL102とReflexiveSBL103とによる行動選択時のハードウェアの競合を調停する。そして、調停結果に基づいて機体動作を実現する各オブジェクトに通知することにより機体が駆動する。
【0068】
Sound Performer172、Motion Controller173、LEDController174は、機体動作を実現するオブジェクトである。Sound Performer172は、音声出力を行うためのオブジェクトであり、RM116経由でSBL102から与えられたテキスト・コマンドに応じて音声合成を行い、ロボット装置1の機体上のスピーカから音声出力を行う。また、Motion Controller173は、機体上の各関節アクチュエータの動作を行なうためのオブジェクトであり、RM116経由でSBL102から手や脚等を動かすコマンドを受けたことに応答して、該当する関節角を計算する。また、LEDController174は、LED19の点滅動作を行なうためのオブジェクトであり、RM116経由でSBL102からコマンドを受けたことに応答してLED19の点滅駆動を行なう。
【0069】
(2−1)状況依存行動制御
次に、状況依存行動階層について更に詳細に説明する。図6には、状況依存行動階層(SBL)(但し、反射行動部を含む)による状況依存行動制御の形態を模式的に示している。認識系の視覚認識機能部81、聴覚認識機能部82、及び接触認識機能部83の機能モジュールによる外部環境70の認識結果(センサ情報)182は、外部刺激183として状況依存行動階層(反射行動部103を含む)102aに与えられる。また、認識系による外部環境70の認識結果に応じた内部状態又は内部状態の変化(内部刺激)184も状況依存行動階層102aに与えられる。そして、状況依存行動階層102aでは、外部刺激183や内部状態の変化184に応じて状況を判断して、行動選択を実現することができる。
【0070】
図7には、図6に示した反射行動部103を含む状況依存行動階層(SBL)102aによる行動制御の基本的な動作例を示している。同図に示すように、状況依存行動階層102aでは、外部刺激183や内部状態の変化184によって各行動記述モジュール(スキーマ)のアクティベーションレベルを算出し、このアクティベーションレベルの度合いに応じてスキーマを選択して行動(動作)を実行する。アクティベーションレベルの算出には、例えばライブラリ185を利用することにより、すべてのスキーマについて統一的な計算処理を行なうことができる(以下、同様)。例えば、アクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を超えた2以上のスキーマを選択して並列的に行動実行するようにしてもよい(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0071】
また、図8には、図6に示した状況依存行動階層102aにより反射行動を行なう場合の動作例を示している。この場合、同図に示すように、状況依存行動階層102aに含まれる反射行動部(ReflexiveSBL)103は、認識系の各オブジェクトによって認識された外部刺激183を直接入力としてアクティベーションレベルを算出して、アクティベーションレベルの度合いに応じてスキーマを選択して行動を実行する。この場合、内部状態の変化184は、アクティベーションレベルの計算には使用されない。
【0072】
また、図9には、図6に示した状況依存行動階層102により感情表現を行なう場合の動作例を示している。内部状態管理部91では、本能や感情等の情動を数式モデルとして管理しており、情動パラメータの状態値が所定値に達したことに応答して、状況依存行動階層102に内部状態の変化184を通知(Notify)する。状況依存行動階層102は、内部状態の変化184を入力としてアクティベーションレベルを算出して、アクティベーションレベルの度合いに応じてスキーマを選択して行動を実行する。この場合、認識系の各オブジェクトによって認識された外部刺激183は、内部状態管理部(ISM)91における内部状態の管理・更新に利用されるが、スキーマのアクティベーションレベルの算出には使用されない。
【0073】
(2−2)スキーマ
図10には、状況依存行動階層102が複数のスキーマ121によって構成されている様子を模式的に示している。状況依存行動階層102は、各行動記述モジュール、即ちスキーマ毎にステートマシンを用意しており、それ以前の行動(動作)や状況に依存して、センサ入力された外部情報の認識結果を分類し、動作を機体上で発現する。スキーマは、外部刺激や内部状態に応じた状況判断を行なうMonitor機能と、行動実行に伴う状態遷移(ステートマシン)を実現するAction機能とを備えたスキーマ(Schema)121として記述される。
【0074】
状況依存行動階層102b(より厳密には、状況依存行動階層102のうち、通常の状況依存行動を制御する階層)は、複数のスキーマ121が階層的に連結されたツリー構造として構成され、外部刺激や内部状態の変化に応じてより最適なスキーマ121を統合的に判断して行動制御を行なうようになっている。このツリー122は、例えば動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリー(又は枝)を含んでいる。
【0075】
図11には、状況依存行動階層102におけるスキーマのツリー構造を模式的に示している。同図に示すように、状況依存行動階層102は、短期記憶部92から外部刺激の通知(Notify)を受けるルート・スキーマ2011、2021、2031を先頭に、抽象的な行動カテゴリから具体的な行動カテゴリに向かうように、各階層毎にスキーマが配設されている。例えば、ルート・スキーマの直近下位の階層では、「探索する(Investigate)」、「食べる(Ingestive)」、「遊ぶ(Play)」というスキーマ2012、2022、2032が配設される。そして、スキーマ2012「探索する(Investigate)」の下位には、「InvestigativeLocomotion」、「HeadinAirSniffing」、「InvestigativeSniffing」というより具体的な探索行動を記述した複数のスキーマ2013が配設されている。同様に、スキーマ2022「食べる(Ingestive)」の下位には「Eat」や「Drink」等のより具体的な飲食行動を記述した複数のスキーマ2023が配設され、スキーマ2032「遊ぶ(Play)」の下位には「PlayBowing」、「PlayGreeting」、「PlayPawing」等のより具体的な遊ぶ行動を記述した複数のスキーマ2033が配設されている。
【0076】
図示の通り、各スキーマは外部刺激183と内部状態(の変化)184を入力としている。また、各スキーマは、少なくともMonitor関数とActionと関数を備えている。
【0077】
ここで、Monitor関数とは、外部刺激と内部状態の変化に応じて当該スキーマのアクティベーションレベル(Activation Level:AL)を算出する関数である。図11に示すようなツリー構造を構成する場合、上位(親)のスキーマは外部刺激と内部状態の変化を引数として下位(子供)のスキーマのMonitor関数をコールすることができ、子供のスキーマはアクティベーションレベルを返り値とする。また、スキーマは自分のアクティベーションレベルを算出するために、更に子供のスキーマのMonitor関数をコールすることができる。そして、ルートのスキーマには各サブツリーからのアクティベーションレベルが返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち行動を統合的に判断することができる。
【0078】
例えばアクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を超えた2以上のスキーマを選択して並列的に行動実行するようにしてもよい(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0079】
また、Action関数は、スキーマ自身が持つ行動を記述したステートマシンを備えている。図11に示すようなツリー構造を構成する場合、親スキーマは、Action関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。本実施の形態では、ActionのステートマシンはReadyにならないと初期化されない。言い換えれば、中断しても状態はリセットされず、スキーマが実行中の作業データを保存することから、中断再実行が可能である。
【0080】
図12には、状況依存行動階層102において通常の状況依存行動を制御するためのメカニズムを模式的に示している。
【0081】
同図に示すように、状況依存行動階層(SBL)102には、短期記憶部(STM)92から外部刺激183が入力(Notify)されるとともに、内部状態管理部91から内部状態の変化184が入力される。状況依存行動階層102は、例えば動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリーで構成されており、ルート・スキーマは、外部刺激183の通知(Notify)に応答して、各サブツリーのMonitor関数をコールし、その返り値としてのアクティベーションレベル(AL)値を参照して、統合的な行動選択を行ない、選択された行動を実現するサブツリーに対してAction関数をコールする。また、状況依存行動階層102において決定された状況依存行動は、リソース・マネージャRM116により反射行動部103による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller)に適用される。
【0082】
また、状況依存行動層102のうち、反射的行動部103は、上述した認識系の各オブジェクトによって認識された外部刺激183に応じて、例えば、障害物の検出により咄嗟に避ける等、反射的・直接的な機体動作を実行する。このため、図11に示す通常の状況依存行動を制御する場合とは相違し、図10に示すように、認識系の各オブジェクトからの信号を直接入力する複数のスキーマ132が階層化されずに並列的に配置されている。
【0083】
図13には、反射行動部103におけるスキーマの構成を模式的に示している。同図に示すように、反射行動部103には、聴覚系の認識結果に応答して動作するスキーマとしてAvoid Big Sound204、Face to Big Sound205及びNodding Sound209、視覚系の認識結果に応答して動作するスキーマとしてFace to Moving Object206及びAvoid Moving Object207、並びに、触覚系の認識結果に応答して動作するスキーマとして手を引っ込める208が、それぞれ対等な立場で(並列的に)配設されている。
【0084】
図示の通り、反射的行動を行なう各スキーマは外部刺激183を入力に持つ。また、各スキーマは、少なくともMonitor関数とAction関数を備えている。Monitor関数は、外部刺激183に応じて当該スキーマのアクティベーションレベルを算出して、これに応じて該当する反射的行動を発現すべきかどうかが判断される。また、Action関数は、スキーマ自身が持つ反射的行動を記述したステートマシン(後述)を備えており、コールされることにより、該当する反射的行動を発現するとともにActionの状態を遷移させていく。
【0085】
図14には、反射行動部103において反射的行動を制御するためのメカニズムを模式的に示している。図13にも示したように、反射行動部103内には、反応行動を記述したスキーマや、即時的な応答行動を記述したスキーマが並列的に存在している。認識系の状態認識部80を構成する各オブジェクトから認識結果が入力されると、対応する反射行動スキーマがAonitor関数によりアクティベーションレベルを算出し、その値に応じてActionを軌道すべきかどうかが判断される。そして、反射行動部103において起動が決定された反射的行動は、リソース・マネージャRM116により状況依存行動階層102による状況依存行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller173)に適用される。
【0086】
状況依存行動階層102及び反射行動部103を構成するスキーマは、例えばC++言語ベースで記述される「クラス・オブジェクト」として記述することができる。図15には、状況依存行動階層102において使用されるスキーマのクラス定義を模式的に示している。同図に示されている各ブロックはそれぞれ1つのクラス・オブジェクトに相当する。
【0087】
図示の通り、状況依存行動階層(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とを備えている。
【0088】
Schema Handler212は、状況依存行動階層(SBL)102や反射行動部103を構成する各スキーマやツリー構造等の情報(SBLのコンフィギュレーション情報)をファイルとして保管している。例えばシステムの起動時等に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、図11に示したような状況依存行動階層102のスキーマ構成を構築(再現)して、メモリ空間上に各スキーマのエンティティをマッピングする。
【0089】
各スキーマは、スキーマのベースとして位置付けられるOpenR_Guest215を備えている。OpenR_Guest215は、スキーマが外部にデータを送信するためのDsubject216、並びに、スキーマが外部からデータを受信するためのDObject217というクラス・オブジェクトをそれぞれ1以上備えている。例えば、スキーマが、SBL102の外部オブジェクト(STMやLTM、認識系の各オブジェクト等)にデータを送るときには、Dsubject216はSend Data Handler214に送信データを書き込む。また、DObject217は、SBL102の外部オブジェクトから受信したデータをReceive Data Handler213から読み取ることができる。
【0090】
Schema Manager218及びSchema Base219は、ともにOpenR_Guest215を継承したクラス・オブジェクトである。クラス継承は、元のクラスの定義を受け継ぐことであり、この場合、OpenR_Guest215で定義されているDsubject216やDObject217等のクラス・オブジェクトをSchema Manager Base218やSchema Base219も備えていることを意味する(以下、同様)。例えば図11に示すように複数のスキーマがツリー構造になっている場合、Schema Manager Base218は、子供のスキーマのリストを管理するクラス・オブジェクトSchema List220を持ち(子供のスキーマへのポインタを持ち)、子供スキーマの関数をコールすることができる。また、Schema Base219は、親スキーマへのポインタを持ち、親スキーマからコールされた関数の返り値を戻すことができる。
【0091】
Schema Base219は、State Machine221及びPronome222という2つのクラス・オブジェクトを持つ。State Machine221は当該スキーマの行動(Action関数)についてのステートマシンを管理している。親スキーマは子供スキーマのAction関数のステートマシンを切り替える(状態遷移させる)ことができる。また、Pronome222には、当該スキーマが行動(Action関数)を実行又は適用するターゲットを代入する。後述するように、スキーマはPronome222に代入されたターゲットによって占有され、行動(動作)が終了(完結、異常終了等)するまでスキーマは解放されない。新規のターゲットのために同じ行動を実行するためには同じクラス定義のスキーマをメモリ空間上に生成する。この結果、同じスキーマをターゲット毎に独立して実行することができ(個々のスキーマの作業データが干渉し合うことはなく)、後述する行動のReentrance性が確保される。
【0092】
Parent Schema Base223は、Schema Manager218及びSchema Base219を多重継承するクラス・オブジェクトであり、スキーマのツリー構造において、当該スキーマ自身についての親スキーマ及び子供スキーマすなわち親子関係を管理する。
【0093】
Intermediate Parent Schema Base224は、Parent Schema Base223を継承するクラス・オブジェクトであり、各クラスのためのインターフェース変換を実現する。また、Intermediate Parent Schema Base224は、Schema Status Info225を持つ。このSchema Status Info225は、当該スキーマ自身のステートマシンを管理するクラス・オブジェクトである。親スキーマは、子供スキーマのAction関数をコールすることによってそのステートマシンの状態を切り換えることができる。また、子供スキーマのMonitor関数をコールしてそのステートマシンの常態に応じたアクティベーションレベルを問うことができる。但し、スキーマのステートマシンは、前述したAction関数のステートマシンとは異なるということを留意されたい。
【0094】
And Parent Schema226、Num Or Parent Schema227、Or Parent Schema228は、Intermediate Parent Schema Base224を継承するクラス・オブジェクトである。And Parent Schema226は、同時実行する複数の子供スキーマへのポインタを持つ。Or Parent Schema228は、いずれか択一的に実行する複数の子供スキーマへのポインタを持つ。また、Num Or Parent Schema227は、所定数のみを同時実行する複数の子供スキーマへのポインタを持つ。
【0095】
Parent Schema228は、これらAnd Parent Schema226、Num Or Parent Schema227、Or Parent Schema228を多重継承するクラス・オブジェクトである。
【0096】
図16には、状況依存行動階層(SBL)102内のクラスの機能的構成を模式的に示している。状況依存行動階層(SBL)102は、STMやLTM、リソース・マネージャ、認識系の各オブジェクト等外部オブジェクトからデータを受信する1以上のReceive Data Handler(RDH)213と、外部オブジェクトにデータを送信する1以上のSend Data Handler(SDH)214とを備えている。
【0097】
Event Data Handler(EDH)211は、SBL102の入出力イベントに対してIDを割り振るためのクラス・オブジェクトであり、RDH213やSDH214から入出力イベントの通知を受ける。
【0098】
Schema Handler212は、スキーマ132を管理するためのクラス・オブジェクトであり、SBL102を構成するスキーマのコンフィギュレーション情報をファイルとして保管している。例えばシステムの起動時等に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、SBL102内のスキーマ構成を構築する。
【0099】
各スキーマは、図15に示したクラス定義に従って生成され、メモリ空間上にエンティティがマッピングされる。各スキーマは、OpenR_Guest215をベースのクラス・オブジェクトとし、外部にデータ・アクセスするためのDSubject216やDObject217等のクラス・オブジェクトを備えている。
【0100】
スキーマ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():ツリー全体のターゲットを決定する関数
(2−3)状況依存行動階層の機能
状況依存行動階層(SBL)102は、短期記憶部92及び長期記憶部93の記憶内容や、内部状態管理部91によって管理される内部状態を基に、ロボット装置1が現在置かれている状況に即応した動作を制御する。
【0101】
前項で述べたように、本実施の形態における状況依存行動階層102は、スキーマのツリー構造(図11を参照のこと)で構成されている。各スキーマは、自分の子供と親の情報を知っている状態で独立性を保っている。このようなスキーマ構成により、状況依存行動階層102は、Concurrentな評価、Concurrentな実行、Preemption、Reentrantという主な特徴を持っている。以下、これらの特徴について詳解する。
【0102】
(2−3−1)Concurrentな評価:
行動記述モジュールとしてのスキーマは外部刺激や内部状態の変化に応じた状況判断を行なうMonitor機能を備えていることは既に述べた。Monitor機能は、スキーマがクラス・オブジェクトSchema BaseでMonitor関数を備えていることにより実装されている。Monitor関数とは、外部刺激と内部状態に応じて当該スキーマのアクティベーションレベルを算出する関数である。
【0103】
図11に示すようなツリー構造を構成する場合、上位(親)のスキーマは外部刺激と内部状態の変化を引数として下位(子供)のスキーマのMonitor関数をコールすることができ、子供のスキーマはアクティベーションレベルを返り値とする。また、スキーマは自分のアクティベーションレベルを算出するために、更に子供のスキーマのMonitor関数をコールすることができる。そして、ルートのスキーマ2011〜2031には各サブツリーからのアクティベーションレベルが返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち動作を統合的に判断することができる。
【0104】
このようにツリー構造になっていることから、外部刺激と内部状態の変化による各スキーマの評価は、まずツリー構造の下から上に向かってConcurrentに行なわれる。即ち、スキーマに子供スキーマがある場合には、選択した子供のMonitor関数をコールしてから、自身のMonitor関数を実行する。次いで、ツリー構造の上から下に向かって評価結果としての実行許可を渡していく。評価と実行は、その動作が用いるリソースの競合を解きながら行なわれる。
【0105】
本実施の形態における状況依存行動階層102は、スキーマのツリー構造を利用して、並列的に行動の評価を行なうことができるので、外部刺激や内部状態の変化等の状況に対しての適応性がある。また、評価時には、ツリー全体に関しての評価を行ない、このとき算出されるアクティベーションレベル(AL)によりツリーが変更されるので、スキーマすなわち実行する動作を動的にプライオリタイズすることができる。
【0106】
(2−3−2)Concurrentな実行:
ルートのスキーマには各サブツリーからのアクティベーションレベルが返されるので、外部刺激と内部状態の変化に応じた最適なスキーマすなわち動作を統合的に判断することができる。例えばアクティベーションレベルが最も高いスキーマを選択したり、アクティベーションレベルが所定の閾値を超えた2以上のスキーマを選択して並列的に行動実行するようにしてもよい(但し、並列実行するときは各スキーマどうしでハードウェア・リソースの競合がないことを前提とする)。
【0107】
実行許可をもらったスキーマは実行される。すなわち、実際にそのスキーマは更に詳細の外部刺激や内部状態の変化を観測して、コマンドを実行する。実行に関しては、ツリー構造の上から下に向かって順次すなわちConcurrentに行なわれる。即ち、スキーマに子供スキーマがある場合には、子供のActions関数を実行する。
【0108】
Action関数は、スキーマ自身が持つ行動(動作)を記述したステートマシンを備えている。図11に示すようなツリー構造を構成する場合、親スキーマは、Action関数をコールして、子供スキーマの実行を開始したり中断させたりすることができる。
【0109】
本実施の形態における状況依存行動階層(SBL)102は、スキーマのツリー構造を利用して、リソースが競合しない場合には、余ったリソースを使う他のスキーマを同時に実行することができる。但し、Goalまでに使用するリソースに対して制限を加えないと、ちぐはぐな行動出現が起きる可能性がある。状況依存行動階層102において決定された状況依存行動は、リソース・マネージャにより反射行動部(ReflexiveSBL)103による反射的行動とのハードウェア・リソースの競合の調停を経て、機体動作(Motion Controller)に適用される。
【0110】
(2−3−3)Preemption:
1度実行に移されたスキーマであっても、それよりも重要な(優先度の高い)行動があれば、スキーマを中断してそちらに実行権を渡さなければならない。また、より重要な行動が終了(完結又は実行中止等)したら、元のスキーマを再開して実行を続けることも必要である。
【0111】
このような優先度に応じたタスクの実行は、コンピュータの世界におけるOS(オペレーティング・システム)のPreemptionと呼ばれる機能に類似している。OSでは、スケジュールを考慮するタイミングで優先度のより高いタスクを順に実行していくという方針である。
【0112】
これに対し、本実施の形態におけるロボット装置1の制御システム10は、複数のオブジェクトにまたがるため、オブジェクト間での調停が必要になる。例えば反射行動を制御するオブジェクトである反射行動部103は、上位の状況依存行動を制御するオブジェクトである状況依存行動階層102の行動評価を気にせずに物を避けたり、バランスをとったりする必要がある。これは、実際に実行権を奪い取り実行を行なう訳であるが、上位の行動記述モジュール(SBL)に、実行権利が奪い取られたことを通知して、上位はその処理を行なうことによってPreemptiveな能力を保持する。
【0113】
また、状況依存行動層102内において、外部刺激と内部状態の変化に基づくアクティベーションレベルの評価の結果、あるスキーマに実行許可がなされたとする。更に、その後の外部刺激と内部状態の変化に基づくアクティベーションレベルの評価により、別のスキーマの重要度の方がより高くなったとする。このような場合、実行中のスキーマのActions関数を利用してSleep状態にして中断することにより、Preemptiveな行動の切り替えを行なうことができる。
【0114】
実行中のスキーマのActions()の状態を保存して、異なるスキーマのActions()を実行する。また、異なるスキーマのActions()が終了した後、中断されたスキーマのActions()を再度実行することができる。
【0115】
また、実行中のスキーマのActions()を中断して、異なるスキーマに実行権が移動する前に、SleepActions()を実行する。例えば、ロボット装置1は、対話中にサッカーボールを見つけると、「ちょっと待ってね」と言って、サッカーすることができる。
【0116】
(2−3−4)Reentrant:
状況依存行動階層102を構成する各スキーマは、一種のサブルーチンである。スキーマは、複数の親からコールされた場合には、その内部状態を記憶するために、それぞれの親に対応した記憶空間を持つ必要がある。
【0117】
これは、コンピュータの世界では、OSが持つReentrant性に類似しており、本明細書ではスキーマのReentrant性と呼ぶ。図16に示したように、スキーマ132はクラス・オブジェクトで構成されており、クラス・オブジェクトのエンティティすなわちインスタンスをターゲット(Pronome)毎に生成することによりReentrant性が実現される。
【0118】
スキーマのReentrant性について、図17を参照しながらより具体的に説明する。Schema Handler212は、スキーマを管理するためのクラス・オブジェクトであり、SBL102を構成するスキーマのコンフィギュレーション情報をファイルとして保管している。システムの起動時に、Schema Handler212は、このコンフィギュレーション情報ファイルを読み込んで、SBL102内のスキーマ構成を構築する。図17に示す例では、Eat221やDialog222等の行動(動作)を規定するスキーマのエンティティがメモリ空間上にマッピングされているとする。
【0119】
ここで、外部刺激と内部状態の変化に基づくアクティベーションレベルの評価により、スキーマDialog222に対してAというターゲット(Pronome)が設定されて、Dialog222が人物Aとの対話を実行するようになったとする。
【0120】
そこに、人物Bがロボット装置1と人物Aとの対話に割り込み、その後、外部刺激と内部状態の変化に基づくアクティベーションレベルの評価を行なった結果、Bとの対話を行なうスキーマ223の方がより優先度が高くなったとする。
【0121】
このような場合、Schema Handler212は、Bとの対話を行なうためのクラス継承した別のDialogエンティティ(インスタンス)をメモリ空間上にマッピングする。別のDialogエンティティを使用して、先のDialogエンティティとは独立して、Bとの対話を行なうことから、Aとの対話内容は破壊されずに済む。従って、DialogAはデータの一貫性を保持することができ、Bとの対話が終了すると、Aとの対話を中断した時点から再開することができる。
【0122】
Readyリスト内のスキーマは、その対象物(外部刺激)に応じて評価すなわちアクティベーションレベルの計算が行なわれ、実行権が引き渡される。その後、Readyリスト内に移動したスキーマのインスタンスを生成して、これ以外の対象物に対して評価を行なう。これにより、同一のスキーマをactive又はsleep状態にすることができる。
【0123】
(3)実施の形態
次に、本実施の形態のロボット装置の動作制御方法について更に詳細に説明する。上述したように、本実施の形態におけるロボット装置は、自律的に動作を選択して発現することができると共に、他律的にも動作を選択可能なロボット装置である。先ず、このロボット装置の状況依存行動階層(SBL)について説明する。
【0124】
(3−1)行動選択機構(状況依存行動階層(Situated Behavior Layer:SBL))
上述したように、本実施の形態におけるロボット装置は、自身の内外の情報を考慮したうえで行動判断を行うアルゴリズムとしてSBLを有する。SBLは、ダンスを踊るというような抽象的な意味を持つ単位から、実際に例えばアクチュエータの回転角度等、機体動作を指示するモーションコマンドを出力するというような具体的な意味を持つ単位まで、1つ1つの単位で独立した意味と機能を有する複数の行動記述モジュール(スキーマ)がツリー構造となって構成されている。各スキーマは、内部に行動のシーケンスを記述したステートマシンを備えており、外部環境から得たセンサ情報に基づいて得られた短期記憶の情報や、自らの身体情報を評価した結果得られた内部状態、今までの短期記憶、内部状態の経験を関連付けて保存しておくことにより得られた長期記憶の情報などを利用して状態遷移を行いながら、外部刺激や内部状態の変化に応じた状況判断を行いロボット装置の行動生成を行う。
【0125】
実際のロボット装置の行動制御手段としてSBLを用いる場合、SBLが持つスキーマ・ツリーの役割に応じて複数のSBLを用意する。具体的には、外部刺激と内部状態を基にそれぞれのスキーマのアクティベーションレベルを算出し、スキーマ間の競合を行わせて自律的に行動を決定し、行動出力のためのコマンドを発行するNormalSBL、NormalSBLの持つスキーマの機能を組み合わせてある一定の行動、行動シーケンスなどを実行するために、特定のNormalSBLのスキーマに対して外的にアクティベーションレベルを設定し、行動生成を強制的に行わせるDeliberativeSBL、電源電圧低下時や転倒時など異常状態を監視して異常状態からの回避行動を他のSBLより優先的に行うSystemSBL、聴覚センサに与えられた突発的な音圧(音量)変化や視覚センサに与えられた画像情報(明るさ)の急激な変化に応じて反射行動を行わせるためのReflexiveSBL等である。
【0126】
このようなSBLアルゴリズムによる行動選択手法では、通常は行動記述モジュールであるスキーマが、感情本能モデルから得られる内部状態に基づいて自らの行動の優先順位を規定するアクティベーションレベルを算出し、スキーマ・ツリーの中でスキーマ同士が競合を行う。最終的にロボット装置のハードウェア・リソースが競合しない範囲でアクティベーションレベルの高い順にスキーマが立ち上がり、行動出力が実現する。このアルゴリズムによると、ロボット装置の行動選択はロボット装置の内部状態と、センサへの外部刺激の条件とから自律的に行動選択が行われる。この自律的行動選択手法を以下、ホメオスタシスモードという。また、ホメオスタシスモードを実現するスキーマ・ツリーを以下、NormalSBLという。
【0127】
NormalSBLを構成する各スキーマは顔が見えた、ボールを発見したなどの外部刺激と、感情本能モデルによって評価された、痛み、空腹、疲れ、眠気等の内部状態を基に自らのアクティベーションレベルを算出する。アクティベーションレベルは複数のスキーマ間の実行優先度を規定し、大きい値を持つスキーマから優先的に実行権を獲得する。最終的にロボット装置のハードウェア・リソースが競合しない範囲でアクティベーションレベルの高い順にスキーマが同時に立ち上がり、行動出力が実現する。このようなSBLアルゴリズムによって、ロボット装置自身の行動選択は内部欲求に基づいて自律的に実行され行動生成を行うことが可能となる。
【0128】
即ち、NormalSBLとは、SBLによる行動選択アルゴリズムを用いて自律的行動判断を行う最も基本的なスキーマ・ツリー構造であり、このNormalSBLにおいては、ロボット自身の欲求が優先されて行動判断(選択)が行われるため、行動生成結果がどのようなものになるかは、ロボット装置が置かれたコンテキストを含む環境状態に依存する。
【0129】
従って、内部欲求と反する行動判断は行われないため、そのままのスキーマツリーではロボット装置に対してユーザの命令をトップダウンで与えて、行動を行わせることや、ある一連の決まった動作を再生することでデモンストレーションを行うことは困難である。
【0130】
そこで、本実施の形態におけるロボット装置は、このようなトップダウンの命令を可能とするため、自律的行動選択を行うNormalSBLとは別に、他律的に行動選択を行うDeliberativeSBLを備える。即ち、本実施の形態におけるSBLは、DeliberativeSBLとして、単一のSBLのスキーマ同士、もしくは複数SBLのスキーマ同士で外部刺激、内部状態とは関係なく、外的にアクティベーションレベルを設定する機能を有する。図18は、本実施の形態におけるNormalSBLとDeliberativeSBLとの関係を示す模式図である。図18の下図に示すNormalSBL230を構成する各スキーマ231乃至233に対して図18の上図に示すDeliberativeSBL210により、外的にアクティベーションレベルが設定された場合、外部刺激と内部状態をもとに算出されたアクティベーションレベルは無効となり、DeliberativeSBL210により外的に与えたアクティベーションレベルが優先される。この仕組みにより、特定のスキーマを特定のアクティベーションレベルで起動することが可能になる。このようなアクティベーションレベルに応じてスキーマを選択する処理は、行動選択制御手段250により行われ、行動選択制御手段250により選択されたスキーマが行動を発現する。なお、本実施の形態においては、各スキーマ231〜233自身が内部状態及び/又は外部刺激に基づきアクチィベーションレベルを算出したり、スキーマ201,202がユーザ命令等の所定の指令に基づきスキーマ231〜233にアクティベーションレベルを加算したりし、行動選択制御手段250は、各スキーマのアクティベーションレベルを観察し、アクティベーションレベルが最も大きいスキーマを選択するものであるが、内部状態及び/又は外部刺激、所定の指令を行動選択制御手段250に供給し、行動選択制御手段250により、各スキーマのアクティベーションレベルを算出するようにしてもよい。
【0131】
このDeliberativeSBL210は、上述のNormalSBL230と同様の構造を有するが、NormalSBL230内のスキーマとの間で競合は行わず、独立したツリーとして構成される。このDeliberativeSBL210内のスキーマが、NormalSBL230内の特定のスキーマに対して外的に高いアクティベーションレベルを設定することにより、NormalSBL230内のある特定のスキーマ、即ちある特定の行動を実行させることが可能である。このトップダウンの要求に基づく行動選択手法を以下、Intentionモードといい、このような機能をIntention機能といい、このIntentionモードを実現するスキーマ・ツリー220をDeliberativeSBL210という。以下、本実施の形態におけるNormalSBLとDeliberativeSBLについて更に詳細に説明する。
【0132】
(3−1−1)Normal Situated Behavior Layer(NormalSBL)
NormalSBLは、各行動記述モジュール(機体動作記述モジュール、第1の行動記述モジュール)毎にステートマシンを用意しており、それ以前の行動や状況に依存して、状態認識部からの入力、即ちセンサ入力された外部情報の認識結果を分類して、行動を機体上で発現する。スキーマは、外部刺激と内部状態を入力とし、少なくとも外部刺激や内部状態の変化に応じた状況判断を行なうMonitor機能と、行動実行に伴う状態遷移(ステートマシン)を実現するAction機能とを備えたスキーマ(Schema)として記述される。そして、NormalSBL230は、図18の下図に示すように、例えば、ダンスを踊る、サッカーをする、なぞなぞをとく等の行動が記述された複数のスキーマ231〜233がルートスキーマ241から階層的に連結された木構造(スキーマ・ツリー)240として構成されている。
【0133】
このような木構造に構成された複数のスキーマ・ツリー240は、外部刺激や内部状態の変化に応じてより最適なスキーマを統合的に判断して行動制御を行なうようになっている。スキーマ・ツリー240は、例えば動物行動学的(Ethological)な状況依存行動を数式化した行動モデルや、感情表現を実行するためのサブツリー等、複数のサブツリー(又は枝)を含んでいる。なお、NormalSBL230のスキーマ231〜233は、更に下層構造を有するが図示を省略している。
【0134】
(3−1−2)Deliberative Situated Behavior Layer(DeliberativeSBL)
上述したように、本実施の形態においては、自律的動作可能なロボット装置において、ユーザ等の指示により強制的に動作させるための行動選択手法(Intentionモード)を実現するDeliberativeSBL210を有している。このDeliberativeSBLは、NormalSBLとは基本的な構造、すなわち行動記述モジュール(第2の行動記述モジュール)であるスキーマがツリー状に構成されているという点では同一である。しかし、DeliberativeSBLを構成する各スキーマは、NormalSBL230を構成する各スキーマとは異なり、単独では発話を行う、モーションを再生する等のコマンドを出力する機能は持たず、NormalSBL230中の特定のスキーマを強制的に起動することで間接的に行動生成を行わせる機能(Intention機能)を有する。以下、この機能を「スキーマにIntentionを加える」という。また、DeliberativeSBL210は、NormalSBL230内のスキーマに対してIntentionを加えると同時にパラメータを渡すことにより、行動をより限定して行わせる機能を有している。
【0135】
(3−2)SBLの機能
本実施の形態におけるSBLの機能は、上述した如く、DeliberativeSBL210からIntentionを加える機能やパラメータを渡す機能と、NormalSBL230がIntentionを加えられて強制的に起動するだけでなく、これを断る機能とを有している。以下、本実施の形態におけるSBL200が有するこれらの各機能について詳細に説明する。
【0136】
(3−2−1)Intention機能
上述のSBLの機能のうち、特定のスキーマに対して強制的に起動することで間接的に行動生成を行わせる機能(Intention機能)は、DeliberativeSBL210が、NormalSBL230内のスキーマに対して外的にアクティベーションレベルを設定することで実現される。
【0137】
このような機能を有するDeliberativeSBL210の具体的な利用方法として、図18の上図に示すように、ユーザの音声命令などを解釈し、命令に相当するスキーマに対してIntentionを加えて命令に即した行動を行わせる音声解釈スキーマ(Voice Command Handler)201と、予め用意された一連のスキーマ起動シーケンスファイルを再生しながら特定のスキーマにIntentionをかけ、ロボット装置にデモンストレーション(機能紹介)を行わせる機能紹介スキーマ(ScriptPlayer)202を例にとって具体的に説明する。
【0138】
音声解釈スキーマ(Voice Command Handler)201の、ユーザの音声命令などを解釈し、命令に相当するスキーマに対してIntentionを加え命令に即した行動を行わせる機能は、予め、ユーザの音声コマンドと、これに対応するNormalSBL中のスキーマとの対応データベースを作成することによって実現することが可能になる。例えば、「ダンスを踊って」、「サッカーして」、又は「なぞなぞしよう」等のユーザコマンドを受けて、ダンススキーマ231、サッカースキーマ232、なぞなぞスキーマ233を起動することにより、ロボット装置の自律的行動選択を抑制して目的の行動をロボット装置に実行させることができる。
【0139】
このように、自律的に行動選択するNormalSBL230に対して他律的に動作選択させるDeliberativeSBL210のIntention機能を利用する場合は、DeliberativeSBL210内のスキーマから、NormalSBL230内の特定のスキーマに対してIntentionを加えることでトップダウンの行動生成を行うものである。
【0140】
図19は、Intentionで与えられたアクティベーションレベルと内部で評価したアクティベーションレベルとの関係を示す模式図である。図19に示すように、Intentionで外部からアクティベーションレベル(AL)が設定されると、もともと、そのスキーマが持っていた内部状態と外部刺激に基づいて算出された第1の実行優先度を示すAL1(以下、内部ALという。)に、Intentionによって外部から設定された第2の実行優先度を示すAL2(以下、外部ALという。)が加算される。スキーマを起動するかどうかを判断するために、より上位のスキーマに計上されるALとしては、この2つの値の例えば和(内部AL+外部AL、以下、AL_total)等が利用される。これによって、外部からあるスキーマに対して本来有する内部ALより大きなALを設定することが可能になる。なお、上記上位のスキーマに計上されるALとしては、2つのALに対して、例えば、適当な係数等により重み付けを行ったものの和等としてもよい。
【0141】
このように、単純にIntentionによってもとの内部ALの底上げをしているだけなので、その他のスキーマの内部ALが外部AL加算後のAL_totalより大きい場合には、Intentionが意味を持たないこともありえる。しかし、実際には統合スキーマ・ツリーを構成する段階のALの調整で、通常の起動状態では一定の範囲内、例えば0〜100の間で内部ALが変化するように設定されるので、その範囲を十分超えるようなIntentionを与えることでIntentionがかかったときに、対象のスキーマを確実に起動することが可能となる。
【0142】
例えば、図18に示すDeliberativeSBL210の音声解釈スキーマ201が、NormalSBL230のダンスを踊るダンススキーマ231に対してIntention211を加えた場合、各スキーマのAL_totalは、図19に示すようになる。即ち、ダンススキーマ231自身が内部状態と外部刺激とから算出した内部ALが例えばAL1=85であり、音声解釈スキーマ201から外的に付加される外部ALが例えばAL2=1500である場合、ダンススキーマ231は、Intention211が加えられ、AL2=1500が付加され、アクティベーションレベルの合計値AL_total=1585となる。ここで、NormalSBL230における各スキーマが算出する内部状態と外部刺激とから算出される内部AL(AL1)の範囲が例えば0乃至100等の所定の範囲に設定されており、この内部ALの範囲より大きくなるような外部AL(AL2)を付加するようにすることで、Intention211が加えられておらず、内部状態と外部刺激とから算出される内部ALしか有していない他のスキーマより、AL_totalが大きくなる。図19の例では、他のスキーマ232〜234のAL_totalは、夫々5,12,67であるため、AL_total=1585であるIntention211が加えられたスキーマ231が選択されることになる。
【0143】
このように、各スキーマは、夫々が有するアクティベーションレベルが比較され、例えば最も高いアクティベーションレベルを有するスキーマが選択されるように設定されている場合、このようなIntention211が加え、アクティベーションレベルを強制的に上昇させることで、強制的にスキーマを選択させて行動を発現させることができる。
【0144】
次に、Intentionを加える他の例について説明する。ここでは、予め用意された一連のスキーマ起動シーケンスファイルを再生しながら特定のスキーマにIntentionをかけ、ロボット装置のデモンストレーション(機能紹介)スキーマ(Script Player)202を起動させる場合を例にとって説明する。このようなデモンストレーションは、NormalSBLのスキーマ間でIntentionを加えつつ、途中で説明を行う音声コマンドを実行させることにより実現することが可能になる。
【0145】
このような機能紹介スキーマ202における予め用意された一連のスキーマ起動シーケンスファイルを再生しながら特定のスキーマにIntentionを加える機能は、例えばユーザとのインタラクティブによりロボット装置の機能紹介を行う際に有効な方法である。
【0146】
図20は、機能紹介スキーマ202とNormalSBL230内の各スキーマとの関係を説明する模式図である。機能紹介スキーマ202が有するスクリプトファイルには、機能紹介を行うための説明文を含む音声、モーション出力コマンドを実行するタイミング、ある特定のスキーマの機能を実行するためのIntentionをかける対象スキーマの情報とからなる一連のステートマシンが記述されている。
【0147】
図20に示すように、デモンストレーションを行う機能紹介スキーマ202は、一連のデモンストレーションを実行する際の、NormalSBL230内の対象キーマの選択のタイミング、説明文を音声出力するための説明コマンドの実行タイミング等が記載されたスクリプトファイルを読み込みながら、説明コマンドを実行する操作と、対象となるスキーマにIntentionを加えることでスキーマの機能を実行させる操作とを繰り返してユーザに対してロボット装置の機能紹介を行う。
【0148】
例えば、NormalSBL230内の、ダンスを踊る、サッカーを行う、及び問題(なぞなぞ)を出すという夫々ダンススキーマ231、サッカースキーマ232及び問題スキーマ233を利用する場合に、機能紹介スキーマ202は、先ず機能紹介スキーマ202内でコマンドを実行して自分(ロボット装置)は、ダンスが踊れる、サッカーができる、及び問題を出すということをユーザに伝達し、ユーザの反応に応じて、ダンススキーマ231、サッカースキーマ232、又は問題スキーマ233に対してIntentionを加え、実際に、ダンススキーマ231を用いてダンスを踊る様子を実演する、サッカースキーマ232を用いてボールを蹴る様子を実演する、又は問題を出すという動作を実現できる。
【0149】
このように、Intentionの機能を用いると自律的行動判断を行わせるために用意されたNormalSBL内のスキーマにIntentionをかけることで、既存のスキーマの持つ機能をそのまま再利用してユーザコマンドを解釈して行動を生成する、ユーザにロボットの機能を紹介するなどの、多くのバリエーションを持った行動生成が可能になる。このようにIntentionモードでスキーマを実行する際に、実際に行動生成コマンドを生成するスキーマシーケンス(アルゴリズム)はホメオスタシスモードで利用しているNormalSBLのスキーマをそのまま再利用することができるため、ホメオスタシスモードとは独立で機能するIntentionモードを実現するために初めからプログラムを書き分ける必要がなくなり極めて効率がよい。
【0150】
(3−2−2)命令を断る機能
Intentionを用いたスキーマの実行は、内部状態と外部刺激から算出されたホメオスタシスモードにおけるアクティベーションレベルを無視して、強制的にスキーマを起動するための仕組みとして考案されたものである。しかし、常に命令した行動を実現してしまうと、入力情報と行動出力との対応が固定的になりすぎて、特定の応答動作の繰り返しの結果、ユーザの飽きを招いてしまう可能性がある。そのため、Intentionモードにおいても、ホメオスタシスモードのアクティベーションレベルを完全に無視するのではなく、部分的に考慮に入れることによって、ユーザの命令を受諾するか、拒絶するかを判断させ、行動生成に多様性を持たせることが可能になる。
【0151】
即ちIntentionが加えられたスキーマ内部において、Intentionによる外部ALが足し合わされたAL_totalだけでなく、Intentionは加えられる前の内部ALを保存することにより、これを参照することが可能となり、「本来は実行の優先度が低いことを考慮して起動を拒否する」といったアルゴリズムを実現することも可能になる。
【0152】
例えば、Intentionをかけられたスキーマは、同時に、Intentionを加えられる前の、内部状態と外部刺激に基づき内部ALを算出する。そして、この内部ALがある所定の閾値以上の値を持っていた場合には、Intentionを加えられ外部ALが足しあわされたAL_totalに従って、その行動出力を行うこととし、一方、内部ALが所定の閾値以下の場合には、例えば、「気分が乗らない」旨の表現を行い、Intentionを加えられたスキーマの動作を発現せずに終了するようにする。
【0153】
例えば、上記閾値を内部AL_th=60と設定した場合、図19に示す例では、スキーマ231は、Intentionを加えられる前の内部AL=85であるため、ユーザの命令、即ち、音声解釈スキーマの指示通りに動作を行う。
【0154】
ここで、サッカーをするスキーマ232にIntentionが加えられ、外部AL=1500が付加された場合において、サッカーをするスキーマ232は、例えば、その日は何度もサッカーをした、ボールが見えていない、又は好きな色のボールではない等の理由でスキーマ232自身で算出した内部ALは、内部AL=5と低くかった場合、上記内部ALの閾値AL_th=60以下となる。このように、Intentionを加えられても、内部ALが所定の閾値より小さい場合は、ロボット装置は自身の動作、この場合、サッカーをするという動作を発現することを拒否することができる。
【0155】
例えば、サッカーをするスキーマ232の下層、又は同じツリー内に、疲れた態度を示すスキーマや、首を振るスキーマ等、今は行動を実行したくない旨をユーザに伝える代償スキーマを用意しておき、スキーマ232の内部ALが所定の閾値以下であるのにIntentionが加えられた場合に、この代償スキーマを起動させる等してもよい。
【0156】
ここで、Intentionを用いてスキーマを実行した際の命令を拒否する機能を実装した場合には、拒否を認めず強制的に行動を実行させる、命令を拒否する機能を無効にする機能が必要となる。なぜならば、例えば上述の機能紹介スキーマ202がIntentionを用いてNormalSBL230内のスキーマを実行(選択)し、ロボット装置の機能紹介デモンストレーションを行おうとした場合に、NormalSBL230内のスキーマが実行命令を拒否してしまうと、デモンストレーションが続行できなくなってしまう。従って、この拒否を無効にする機能を設けることにより、NormalSBL230内の各スキーマが行動実行を拒否してしまうことを防止し、DeliberativeSBL210によるIntentionを常に有効にすることができる。
【0157】
このような機能を設けるため、本実施の形態においては、強制フラグを用い、このフラグが立っているか否かにより、NormalSBL230のスキーマからの拒否を受け付けるか否かを選択するようにする。従って、デモンストレーションを行うとき等、DeliberativeSBL210によるIntentionを常に有効にしておきたい場合には、NormalSBL230のスキーマに対してIntentionを加えると同時に、強制的にスキーマを実行することを意味する情報を「強制フラグ」として渡すことにより、命令を拒否する機能を無効にすることができる。
【0158】
内部状態と外部刺激により行動決定を行っている状態、即ちNormalSBLのみにおける行動決定が完全自律モードだとすると、DeliberativeSBLによってIntentionが加えられた際に、同時に、本来のアクティベーションレベル(内部AL)を参照し、内部ALが所定の閾値以下の場合には命令を拒否するという機能は、半自律モードといえる。そして強制フラグと共にIntentionの機能を用いてロボットのデモンストレーションを行うような場合は、完全他律モードといえる。
【0159】
(3−2−3)Intentionを加えると同時にパラメータを渡す機能
通常Intentionを加える(かける)ことによってNormalSBL内のスキーマを起動する際には、「ダンスして」、「サッカーして」など、抽象的な音声コマンドをハンドルしてスキーマ単位で行動を実行することが想定される。しかし、Intentionと同時にパラメータを渡す機能を搭載することにより、Intentionコマンドをより詳細に指定することが可能になる。例えば、サッカーをするスキーマに対してIntentionをかける場合に、「ピンク色のボールを蹴って」という音声コマンドをハンドルした場合には、「ピンク色のボール」に相当する情報を渡すことにより、サッカースキーマに対して、特にピンク色のボールを捜し、蹴るよう行動を限定して命令することが可能になる。この場合、Intention情報と同時に渡すべき情報は、対象オブジェクトのフィーチャーを示す情報、例えば、色彩、形状などが考えられる。
【0160】
(3−3)他の例:Intentionの加え方のバリエーション
Intentionの加え方は、上述の実施の形態のみに限定されるものではなく、種々の変更が可能である。例えば、デモンストレーションを行う際に、シナリオに従って、音声発話による説明を加えながら、順番にスキーマを起動しロボット装置の機能を紹介するというものや、何か音声コマンドを受けた際に音声コマンドを解釈して、相当のスキーマを選択するか、又はスキーマ起動に必要なパラメータを渡し、スキーマを起動するというもの等もある。
【0161】
この他にもIntentionを用いたスキーマの起動方法には様々なバリエーションを持たせることが可能である。Intentionアルゴリズムにおいてバリエーションを作ることが可能なのは、基本的に以下の値を何らかの条件と連動させて変化させることによって実現される。即ち、
Intentionをかける際に加算するアクティベーションレベルの大きさ
Intentionをかけた際に、言うことを聞くか、命令を断るかを判断する閾値の大きさ
である。例えば、顔画像認識や話者認識によって獲得した情報をもとに、それまでの話者との経験からIntentionをかける際に加算するアクティベーションレベル(外部AL)の大きさを変化させ、気に入った相手(認識度が高い相手)の言うことにはよく従うが、気に入らない相手(認識度が低い相手)の言うことはあまり従わない等、相手が誰であるかによって、命令を聞く程度に変化を与えるようなことも可能である。同様に、感情状態に応じて加算するアクティベーションレベル(内部AL)を変化させることで、不快な感情状態の時には言うことを聞きにくいが、喜んでいるような感情状態の時には、なんでも言うことを聞いてくれるというようなことも可能である。そして、行動選択制御部250において、これら算出された内部ALと、内部AL+外部ALとに基づき、選択するスキーマが決定されることになる。
【0162】
(3−4)ロボット装置の動作制御方法
以上のDeliberativeSBL210及びNormalSBL230の処理手順について図21及び図22に示す夫々DeliberativeSBL及びNormalSBLの処理手順を示すフローチャートを参照して説明する。
【0163】
図21に示すように、例えばユーザにより「ダンスを踊って」等の音声が入力される(ステップS1)と、図18に示すDeliberativeSBL210の音声解釈スキーマ201がこれを音声コマンドとして認識し、DeliberativeSBL210のデータベースDBに登録された音声コマンドであるか否かを判断する(ステップS2)。データベースDBに登録されていない音声コマンドである場合は、DeliberativeSBL210は起動せず、再び音声コマンドを認識するまで待機する。
【0164】
一方、ステップS2において、データベースDBに登録された音声コマンドであると判断された場合は、この音声コマンドに対応するスキーマの情報をデータベースDBから取得する(ステップS3)。即ち、音声コマンドに対応するスキーマのIDや、このスキーマにIntentionを与えて起動させる際に加える外部ALの大きさ、また、複数のスキーマを起動するような場合には、各スキーマにIntentionを加えるタイミング等を取得する。
【0165】
次に、データベースDBから取得した情報に従って、NormalSBL230のうち、対象のスキーマにIntentionを加えて起動させる(ステップS4)。そして、NormalSBL230の起動させたスキーマの行動が終了したか否かを確かめ(ステップS5)、終了を確認したら処理を終了する。
【0166】
また、図22に示すように、NormalSBL230では、上述のステップS4において、Intentionが加えられると、そのスキーマが起動する(ステップS11)。ここで、Intentionが加えられたスキーマは、外部刺激及び内部状態に基づく、Intentionを加えられる前のアクティベーションレベル(内部AL)を算出し、この内部ALが所定の閾値=内部AL_thを超えているか否かを判断する(ステップS12)。
【0167】
内部ALが所定の閾値=内部AL_thを超えている場合には、Intentionを加えられ外部からアクティベーションレベルを底上げされたスキーマは、自身に記述された機体動作を発現する(ステップS13)。一方、内部ALが所定の閾値=内部AL_th未満である場合、例えば代償スキーマをコールし、気分が乗らないことを表現してユーザにこれを通知するようにする(ステップS14)。
【0168】
ステップS13にてIntentionを受けたスキーマが起動した場合においても、ステップS14にて、Intentionを受けたスキーマは起動せず、代償スキーマ等を起動させた場合においても、動作(行動)終了時には、これをDeliberativeSBL210に通知し(ステップS15)、処理を終了する。上述のステップS5において、NormalSBL230の起動させたスキーマの行動が終了したか否かは、この通知をもって判断することができる。
【0169】
また、上述したように、デモンストレーションの際等のように、スキーマで算出した内部ALに係わらず強制的にIntentionを加えたスキーマを起動したい場合には、ステップS4にて、対象のスキーマにIntentionを加えて起動させる際に、Intentionとして外部ALを与えると共に、AL_total(内部AL+外部AL)のみを考慮するよう指示する強制フラグをONとすればよい。
【0170】
本実施の形態においては、所定の指令に基づき該機体動作を他律的に選択するDeliberativeSBLのIntention機能を用いることにより、ロボット装置の内部状態や外部刺激の状態によらず、人間の命令した言葉を解釈して行動生成を行うことや、ある一連の動作を定義した設定ファイルを再生することによってデモンストレーションを行うことが可能となる。即ち、自律型のロボット装置は、常に自らの価値を満たすように行動判断を行うため、そのままではロボット装置の価値を満たすことに貢献しない内容に関しては、ユーザの意図を解釈して行動に反映させるといったトップダウンの行動を生成することが困難となる場合があるが、DeliberativeSBLのIntention機能により、トップダウンの行動生成が可能となる。
【0171】
また、ホメオスタシスモードのために記述されたスキーマをIntentionモードのスキーマとしても再利用可能であるため、行動選択、生成のためのプログラムをすべて準備する必要がない。即ち、用意するべきプログラムはあるコマンドに対してどのスキーマを実行するか、もしくはスキーマをどのような順番で実行するかといったフレームワークのみでよいのでプログラミング効率が極め高い。
【0172】
これにより、内外の環境状況に応じて自律的に行動判断を行うホメオスタシスモードによるスキーマの実行と、ユーザからの命令、デモスクリプトなどトップダウンの命令に従って行動生成を行うIntentionモードとを共通のSBLという行動制御アルゴリズムの中で扱うことが可能になる。
【0173】
また、外的にアクティベーションレベル(外部AL)を設定した際であっても、内部状態に基づいて算出されたアクティベーションレベル(内部AL)を参照することにより、外的には強制的にスキーマを起動させられてはいるものの、同時に内部では実際にはどの程度その行動を行いたいという意志を持っているのかを仮想的に考えることが可能であり、ロボット装置の状況によっては、外的に加えられたIntentionを拒否するという行動を生成して入力情報−行動出力間の応答動作が固定化することを防ぎ、行動の多様化を実現することができる。このように、ロボットの内部状態に応じて、ユーザの言うことを聞くか聞かないかを判断するというアルゴリズムを搭載し、単に命令に従うのみでなく、状況に応じて命令を拒否する機能を持たせることにより、自己の価値判断に基づいた内部的欲求に基づく行動生成と、外部からの明示的な命令に基づく行動生成といった創反する条件を共存させることができ、ユーザがロボット装置の固定的な応答に飽きを生じてしまうことを防ぎ、より人間や動物に近い動作を生成することができる。
【0174】
【発明の効果】
以上詳細に説明したように本発明に係るロボット装置は、複数の機体動作から選択された機体動作を発現するロボット装置において、機体動作が記述された機体動作記述モジュール群を含む行動記述モジュール群と、上記機体動作を選択する行動選択制御手段とを有し、上記行動選択制御手段は、上記ロボット装置の身体に基づいた情動を示す内部状態モデルから得られる内部状態及び/又は外部刺激に基づき上記ロボット装置が備えるセンサ入力で得られた知覚情報に応じた機体動作を選択する自律選択機能と、所定の指令に応じて上記自律選択機能とは無関係に強制的に上記機体動作を選択する他律選択機能とを有し、上記行動記述モジュール群は、上記内部状態及び/又は上記外部刺激の変化に基づいて上記機体動作の実行権を優先的に獲得するための第1の実行優先度を示す値を算出する上記機体動作記述モジュール群である第1の行動記述モジュール群と、上記他律選択機能により選択する対象となる上記機体動作の実行権を優先的に獲得するための第2の実行優先度を示す値を上記第1の実行優先度を示す値に加算する第2の行動記述モジュール群とを有し、上記行動選択制御手段は、上記第2の行動記述モジュール群が上記第1の実行優先度を示す値に上記第2の実行優先度を示す値を加算することにより算出した第3の実行優先度を示す値が第1の閾値以上であるか否かに基づいて、上記機体動作を選択するので、ロボット装置の内部状態や外部刺激の状態に基づく自律的な動作のみならず、内部状態や外部刺激によらず、人間の命令した言葉を解釈して行動生成を行うことや、ある一連の動作を定義した設定ファイルを再生することによってデモンストレーションを行うこと等、他律的な行動制御が可能となる。
【図面の簡単な説明】
【図1】本発明の実施の形態におけるロボット装置の外観を示す斜視図である。
【図2】本発明の実施の形態におけるロボット装置の機能構成を模式的に示すブロック図である。
【図3】本発明の実施の形態におけるロボット装置の制御ユニットの構成を更に詳細に示すブロック図である。
【図4】本発明の実施の形態におけるロボット装置の行動制御システム10の機能構成を示す模式図である。
【図5】本発明の実施の形態における行動制御システムのオブジェクト構成を示す模式図である。
【図6】本発明の実施の形態における状況依存行動階層による状況依存行動制御の形態を示す模式図である。
【図7】状況依存行動階層による行動制御の基本的な動作例を示す模式図である。
【図8】状況依存行動階層により反射行動を行なう場合の動作例を示す模式図である。
【図9】状況依存行動階層により感情表現を行なう場合の動作例を示す模式図である。
【図10】状況依存行動階層が複数のスキーマによって構成されている様子を示す模式図である。
【図11】状況依存行動階層におけるスキーマのツリー構造を示す模式図である。
【図12】状況依存行動階層において通常の状況依存行動を制御するためのメカニズムを示す模式図である。
【図13】反射行動部におけるスキーマの構成を示す模式図である。
【図14】反射行動部により反射的行動を制御するためのメカニズムを示す模式図である。
【図15】状況依存行動階層において使用されるスキーマのクラス定義を示す模式図である。
【図16】状況依存行動階層内のクラスの機能的構成を示す模式図である。
【図17】スキーマのReentrant性を説明する図である。
【図18】本発明の実施の形態におけるNormalSBLとDeliberativeSBLとの関係を示す模式図である。
【図19】 Intentionで与えられたアクティベーションレベルと内部で評価したアクティベーションレベルとの関係を示す模式図である
【図20】本発明の実施の形態におけるDeliberativeSBLの機能紹介スキーマとNormalSBL内の各スキーマとの関係を説明する模式図である。
【図21】 DeliberativeSBLの処理手順を示すフローチャートである。
【図22】 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 ドライバ、80 状態認識部、80a 顔発見オブジェクト、81 視覚認識機能部、82 聴覚認識機能部、83 接触認識機能部、91 内部状態管理部、92 短期記憶部(STM)、93 長期記憶部(LTM)、200 SBL、201音声解釈スキーマ、202 機能紹介スキーマ、210 DeliberativeSBL、220,240 スキーマ・ツリー、230 NormalSBL、231〜233スキーマ、250 行動選択制御部
Claims (8)
- 複数の機体動作から選択された機体動作を発現するロボット装置において、
機体動作が記述された機体動作記述モジュール群を含む行動記述モジュール群と、
上記機体動作を選択する行動選択制御手段とを有し、
上記行動選択制御手段は、上記ロボット装置の身体に基づいた情動を示す内部状態モデルから得られる内部状態及び/又は外部刺激に基づき上記ロボット装置が備えるセンサ入力で得られた知覚情報に応じた機体動作を選択する自律選択機能と、所定の指令に応じて上記自律選択機能とは無関係に強制的に上記機体動作を選択する他律選択機能とを有し、
上記行動記述モジュール群は、上記内部状態及び/又は上記外部刺激の変化に基づいて上記機体動作の実行権を優先的に獲得するための第1の実行優先度を示す値を算出する上記機体動作記述モジュール群である第1の行動記述モジュール群と、上記他律選択機能により選択する対象となる上記機体動作の実行権を優先的に獲得するための第2の実行優先度を示す値を上記第1の実行優先度を示す値に加算する第2の行動記述モジュール群とを有し、
上記行動選択制御手段は、上記第2の行動記述モジュール群が上記第1の実行優先度を示す値に上記第2の実行優先度を示す値を加算することにより算出した第3の実行優先度を示す値が第1の閾値以上であるか否かに基づいて、上記機体動作を選択する
ことを特徴とするロボット装置。 - 上記行動記述モジュール群は、上記第3の実行優先度を示す値とともに上記第1の実行優先度を示す値を保存し、
上記行動選択制御手段は、上記第1の実行優先度を示す値が第2の閾値以上であるか否かに基づいて上記機体動作を選択することを特徴とする請求項1記載のロボット装置。 - 上記第2の行動記述モジュール群は、上記所定の指令に応じて上記他律選択機能に基づいた機体動作を無効にする機能をさらに有し、
上記行動選択制御手段は、上記第2の行動記述モジュール群により上記他律選択機能に基づいた機体動作が無効にされた場合、上記自律選択機能に基づいた機体動作を強制的に選択することを特徴とする請求項2記載のロボット装置。 - 上記第2の行動記述モジュール群は、さらに上記他律選択機能に基づいた機体動作に関連した関連情報を出力し、
上記行動選択制御手段により他律的に上記機体動作が選択されると、上記第1の行動記述モジュール群は、上記関連情報に基づいて上記機体動作を発現することを特徴とする請求項1記載のロボット装置。 - 複数の機体動作から選択された機体動作を発現するロボット装置の動作制御方法において、
行動記述モジュール群に記述された複数の機体動作から、上記ロボット装置の身体に基づいた情動を示す内部状態モデルから得られる内部状態及び/又は外部刺激に基づき上記ロボット装置が備えるセンサ入力で得られた知覚情報に応じた機体動作を選択する自律選択機能と、所定の指令に応じて上記自律選択機能とは無関係に強制的に上記機体動作を選択する他律選択機能により、発現する機体動作を選択する行動選択制御工程と、
上記選択された機体動作を発現する発現工程とを有し、
上記行動記述モジュール群は、上記内部状態及び/又は上記外部刺激の変化に基づいて上記機体動作の実行権を優先的に獲得するための第1の実行優先度を示す値を算出する上記機体動作記述モジュール群である第1の行動記述モジュール群と、上記他律選択機能により選択する対象となる上記機体動作の実行権を優先的に獲得するための第2の実行優先度を示す値を上記第1の実行優先度を示す値に加算する第2の行動記述モジュール群とを有し、
上記行動選択工程では、上記第2の行動記述モジュール群が上記第1の実行優先度を示す値に上記第2の実行優先度を示す値を加算することにより算出した第3の実行優先度を示す値が第1の閾値以上であるか否かに基づいて、上記機体動作を選択する
ことを特徴とするロボット装置の動作制御方法。 - 上記行動記述モジュール群は、上記第3の実行優先度を示す値とともに上記第1の実行優先度を示す値を保存し、
上記行動選択工程では、上記第1の実行優先度を示す値が第2の閾値以上であるか否かに基づいて上記機体動作を選択することを特徴とする請求項5記載のロボット装置の動作制御方法。 - 上記第2の行動記述モジュール群は、上記所定の指令に応じて上記他律選択機能に基づいた機体動作を無効にする機能をさらに有し、
上記行動選択制御工程では、上記第2の行動記述モジュール群により上記他律選択機能に基づいた機体動作が無効にされた場合、上記自律選択機能に基づいた機体動作を強制的に選択する
ことを特徴とする請求項6記載のロボット装置の動作制御方法。 - 上記第2の行動記述モジュール群は、さらに上記他律選択機能に基づいた機体動作に関連した関連情報を出力し、
上記行動選択制御工程では、他律的に上記機体動作が選択されると、上記第1の行動記述モジュール群は、上記関連情報に基づいて上記機体動作を発現することを特徴とする請求項5記載のロボット装置の動作制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003028896A JP4147960B2 (ja) | 2003-02-05 | 2003-02-05 | ロボット装置、及びロボット装置の動作制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003028896A JP4147960B2 (ja) | 2003-02-05 | 2003-02-05 | ロボット装置、及びロボット装置の動作制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004237391A JP2004237391A (ja) | 2004-08-26 |
JP4147960B2 true JP4147960B2 (ja) | 2008-09-10 |
Family
ID=32956221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003028896A Expired - Fee Related JP4147960B2 (ja) | 2003-02-05 | 2003-02-05 | ロボット装置、及びロボット装置の動作制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4147960B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI416289B (zh) * | 2010-05-28 | 2013-11-21 | Compal Communications Inc | 自動機械裝置及其控制方法 |
JP5691442B2 (ja) * | 2010-11-29 | 2015-04-01 | トヨタ自動車株式会社 | ロボットによるサービス提供システム、ロボット管理装置及びロボット管理方法 |
US8818556B2 (en) * | 2011-01-13 | 2014-08-26 | Microsoft Corporation | Multi-state model for robot and user interaction |
-
2003
- 2003-02-05 JP JP2003028896A patent/JP4147960B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004237391A (ja) | 2004-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7363108B2 (en) | Robot and control method for controlling robot expressions | |
JP4244812B2 (ja) | 行動制御システム及びロボット装置の行動制御方法 | |
CN100364731C (zh) | 机器人装置、其行为控制方法及程序 | |
KR101137205B1 (ko) | 로봇의 행동 제어 시스템 및 행동 제어 방법, 및 로봇 장치 | |
US8145492B2 (en) | Robot behavior control system and method, and robot apparatus | |
JP2005193331A (ja) | ロボット装置及びその情動表出方法 | |
US8209179B2 (en) | Speech communication system and method, and robot apparatus | |
JP2006110707A (ja) | ロボット装置 | |
JP3558222B2 (ja) | ロボットの行動制御システム及び行動制御方法、並びにロボット装置 | |
JP2004283958A (ja) | ロボット装置、その行動制御方法及びプログラム | |
JP2007125631A (ja) | ロボット装置及びその行動制御方法 | |
JP4296736B2 (ja) | ロボット装置 | |
JP4147960B2 (ja) | ロボット装置、及びロボット装置の動作制御方法 | |
JP2007125629A (ja) | ロボット装置及びその行動制御方法 | |
JP2003111981A (ja) | ロボット装置及びその制御方法、ロボットのための情報提供システム及び情報提供方法、並びに記憶媒体 | |
JP2005059186A (ja) | ロボット装置及びその制御方法 | |
JP4552465B2 (ja) | 情報処理装置、ロボット装置の行動制御方法、ロボット装置及びコンピュータ・プログラム | |
JP2004114285A (ja) | ロボット装置及びその行動制御方法 | |
JP2004283957A (ja) | ロボット装置、その制御方法、及びプログラム | |
JP2004209599A (ja) | ロボット装置、ロボット装置の行動学習方法、ロボット装置の行動生成方法 | |
JP2004283960A (ja) | ロボット装置、その行動制御方法、及びプログラム | |
JP2005321954A (ja) | ロボット装置、情報処理システム及び情報処理方法、並びにコンピュータ・プログラム | |
JP2021523472A (ja) | 複数のロボットエフェクターを制御するための方法 | |
JP2005193330A (ja) | ロボット装置及びその情動表出方法 | |
JP2004291147A (ja) | ロボットの行動制御システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060206 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071003 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071030 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071228 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080603 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080616 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110704 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110704 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |