図1を参照して、この実施例のコミュニケーションロボット開発支援装置(以下、単に「開発支援装置」という。)10は、一連の行動プログラムからなる行動モジュールを実行することによってコミュニケーション行動を取るコミュニケーションロボット(以下、単に「ロボット」という。)12の開発を支援するためのものである。
開発支援装置10は、パーソナルコンピュータ(PC)またはワークステーション等のコンピュータで構成されており、たとえば、図2に示すようにCPU20を含む。CPU20は、マイクロコンピュータ或いはプロセッサとも呼ばれ、バス22を介して、メモリ24、液晶ディスプレイまたはCRT等の表示装置26、ならびに、マウスおよびキーボード等の入力装置28に接続される。
メモリ24は、図示は省略をするが、ROM、HDDおよびRAMを含む。ROMおよびHDDには、この開発支援装置10の動作を制御するためのプログラムが記憶されており、また、表示装置26に表示される画面データ等の各種データも記憶されている。さらに、ROMおよびHDDには、ロボット12のビヘイビアを制御するためのプログラムやデータが記憶されている。ここで、ビヘイビアとは、行動モジュールによって実現されるロボット12のコミュニケーション行動を示しており、ROMおよびHDDには、複数の行動モジュールが各ビヘイビアに対応付けて記憶されている。また、RAMは、ワークメモリやバッファメモリとして用いられる。
さらに、CPU20は、バス22を介して複数のデータベース(以下、DB)に接続される。具体的には、CPU20は、テンプレートDB30および行動モジュールDB32に接続される。
テンプレートDB30には、行動モジュールが、たとえば「Talk(挨拶)」、「Guide(道案内)」、「Navi(誘導)」といったビヘイビアの種類ごとにテンプレート化されて、予め記憶してある。後で詳細に説明するように、ロボット12の開発者等は、このテンプレートDB30に記憶されているテンプレートのデータ(テンプレートデータ)を読み出して、そのテンプレートデータに行動モジュールの実行に関する情報(実行情報)を与えることによって、新規の行動モジュールを作成することができる。
行動モジュールDB32には、テンプレートと実行情報とに基づいて作成された行動モジュールが記憶されている。一例を挙げると、図3に示すように、ロボット12のビヘイビア(Bi)に関連付けて、テンプレート(Tj)の種類、ならびに、当該テンプレートに引数として与えられた実行情報(arg1,arg2,arg3,…,argN)がテーブルとして記憶される。
ただし、図3に示すテーブルの構成はあくまで一例であり、テーブルの構成は、本発明の技術的思想を実現できる構成であればどのようなものでもかまわない。
さらに、CPU20は、バス22を介して通信LANボード34に接続される。通信LANボード34は、たとえばDSPで構成され、CPU20から与えられた送信データを無線通信装置36に与え、無線通信装置36は送信データを、ネットワーク200を介してロボット12に送信する。また、通信LANボード34は、無線通信装置36を介してデータを受信し、受信したデータをCPU20に与える。
ここで、この開発支援装置10によって開発を支援するロボット12について説明する。ロボット12は、各種センサを有するヒューマノイド型で自律移動型のものであり、身振りおよび音声の少なくとも一方を用いて、コミュニケーション行動を取ることができる。このようなロボット12のコミュニケーション行動(ビヘイビア)を実現するためのプログラムは、上述したように、モジュール化された「行動モジュール」として実行される。また、後で詳細に説明するように、行動モジュールの実行順序は、「行動モジュールの状態遷移」として設定され、長期的に首尾一貫した前後関係または調和した状況を維持しているコミュニケーション行動が実現される。「行動モジュールの状態遷移」は、行動モジュールの短期的な遷移ないし推移を示すものであり、たとえば、数個程度の行動モジュールの繋がりないし順序付けであり得るが、長期(たとえば一日中)やすべての行動モジュールの遷移を定めたものではない。すなわち、ロボット12は、「行動モジュール」を順次実行し、その行動モジュールの実行順序は、「行動モジュールの状態遷移」によって導かれる。
ただし、行動モジュールの実行順序に関する規則として「エピソード・ルール」を適用することもできる。この「エピソード・ルール」については、本件出願人が先に出願し、既に出願公開された特開2004−114242号公報に開示されている。
図4を参照して、ロボット12のハードウェア面の構成を詳細に説明する。図4に示すように、ロボット12は台車50を含み、台車50の下面にはロボット12を自律移動させる2つの車輪52および1つの従輪54が設けられる。2つの車輪52は車輪モータ76(図5参照)によってそれぞれ独立に駆動され、台車50すなわちロボット12を前後左右の任意方向に動かすことができる。また、従輪54は車輪52を補助する補助輪である。したがって、ロボット12は、配置された空間内を自律制御によって移動可能である。ただし、ロボット12は、或る場所に固定的に配置されても構わない。
台車50の上には、円柱形のセンサ取り付けパネル58が設けられ、このセンサ取り付けパネル58には、多数の赤外線距離センサ60が取り付けられる。これらの赤外線距離センサ60は、センサ取り付けパネル58すなわちロボット12の周囲の物体(人間や障害物など)との距離を測定するものである。
なお、この実施例では、距離センサとして、赤外線距離センサを用いるようにしてあるが、赤外線距離センサに代えて、超音波距離センサやミリ波レーダなどを用いることもできる。
センサ取り付けパネル58の上には、胴体62が直立するように設けられる。また、胴体62の前方中央上部(人の胸に相当する位置)には、上述した赤外線距離センサ60がさらに設けられ、ロボット12の前方の主として人間との距離を計測する。また、胴体62には、その側面側の上端部のほぼ中央から伸びる支柱64が設けられ、支柱64の上には、全方位カメラ66が設けられる。全方位カメラ66は、ロボット12の周囲を撮影するものであり、後述する眼カメラ90とは区別される。この全方位カメラ66としては、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。なお、これら赤外線距離センサ60および全方位カメラ66の設置位置は、当該部位に限定されず適宜変更され得る。
胴体62の両側面上端部(人の肩に相当する位置)には、それぞれ、肩関節68Rおよび肩関節68Lによって、上腕70Rおよび上腕70Lが設けられる。図示は省略するが、肩関節68Rおよび肩関節68Lは、それぞれ、直交する3軸の自由度を有する。すなわち、肩関節68Rは、直交する3軸のそれぞれの軸廻りにおいて上腕70Rの角度を制御できる。肩関節68Rの或る軸(ヨー軸)は、上腕70Rの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節68Lは、直交する3軸のそれぞれの軸廻りにおいて上腕70Lの角度を制御できる。肩関節68Lの或る軸(ヨー軸)は、上腕70Lの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。
また、上腕70Rおよび上腕70Lのそれぞれの先端には、肘関節72Rおよび肘関節72Lが設けられる。図示は省略するが、肘関節72Rおよび肘関節72Lは、それぞれ1軸の自由度を有し、この軸(ピッチ軸)の軸回りにおいて前腕74Rおよび前腕74Lの角度を制御できる。
前腕74Rおよび前腕74Lのそれぞれの先端には、人の手に相当する球体76Rおよび球体76Lがそれぞれ固定的に設けられる。ただし、指や掌の機能が必要な場合には、人間の手の形をした「手」を用いることも可能である。また、図示は省略するが、台車50の前面、肩関節68Rと肩関節68Lとを含む肩に相当する部位、上腕70R、上腕70L、前腕74R、前腕74L、球体76Rおよび球体76Lには、それぞれ、接触センサ78(図5で包括的に示す)が設けられる。台車50の前面の接触センサ78は、台車50への人間や他の障害物の接触を検知する。したがって、ロボット12は、その自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪52の駆動を停止してロボット12の移動を急停止させることができる。また、その他の接触センサ78は、当該各部位に触れたかどうかを検知する。なお、接触センサ78の設置位置は、当該部位に限定されず、適宜な位置(人の胸、腹、脇、背中および腰に相当する位置)に設けられてもよい。
胴体62の中央上部(人の首に相当する位置)には首関節80が設けられ、さらにその上には頭部82が設けられる。図示は省略するが、首関節80は、3軸の自由度を有し、3軸の各軸廻りに角度制御可能である。或る軸(ヨー軸)はロボット12の真上(鉛直上向き)に向かう軸であり、他の2軸(ピッチ軸、ロール軸)は、それぞれ、それと異なる方向で直交する軸である。
頭部82には、人の口に相当する位置に、スピーカ84が設けられる。スピーカ84は、ロボット12が、それの周辺の人間に対して音声ないし音によってコミュニケーションを取るために用いられる。また、人の耳に相当する位置には、マイク86Rおよびマイク86Lが設けられる。以下、右のマイク86Rと左のマイク86Lとをまとめてマイク86ということがある。マイク86は、周囲の音、とりわけコミュニケーションを実行する対象である人間の音声を取り込む。さらに、人の目に相当する位置には、眼球部88Rおよび眼球部88Lが設けられる。眼球部88Rおよび眼球部88Lは、それぞれ眼カメラ90Rおよび眼カメラ90Lを含む。以下、右の眼球部88Rと左の眼球部88Lとをまとめて眼球部88ということがある。また、右の眼カメラ90Rと左の眼カメラ90Lとをまとめて眼カメラ90ということがある。
眼カメラ90は、ロボット12に接近した人間の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。また、眼カメラ90は、上述した全方位カメラ66と同様のカメラを用いることができる。たとえば、眼カメラ90は、眼球部88内に固定され、眼球部88は、眼球支持部(図示せず)を介して頭部82内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、2軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この2軸の一方は、頭部82の上に向かう方向の軸(ヨー軸)であり、他方は、一方の軸に直交しかつ頭部82の正面側(顔)が向く方向に直行する方向の軸(ピッチ軸)である。眼球支持部がこの2軸の各軸廻りに回転されることによって、眼球部88ないし眼カメラ90の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ84、マイク86および眼カメラ90の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
このように、この実施例のロボット12は、車輪52の独立2軸駆動、肩関節68の3自由度(左右で6自由度)、肘関節72の1自由度(左右で2自由度)、首関節80の3自由度および眼球支持部の2自由度(左右で4自由度)の合計17自由度を有する。
図5はロボット12の電気的な構成を示すブロック図である。この図5を参照して、ロボット12は、CPU100を含む。CPU100は、マイクロコンピュータ或いはプロセッサとも呼ばれ、バス102を介して、メモリ104、モータ制御ボード106、センサ入力/出力ボード108および音声入力/出力ボード110に接続される。
メモリ104は、図示は省略をするが、ROM、HDDおよびRAMを含む。ROMおよびHDDには、開発支援装置10のメモリ24に記憶されているものと同じ、このロボット12のビヘイビアを制御するためのプログラム(行動モジュール)が各ビヘイビアに対応付けて記憶されている。さらに、ROMおよびHDDには、テンプレートDB30に記憶されているものと同じ、「Talk(挨拶)」、「Guide(道案内)」、「Navi(誘導)」といった、ビヘイビアの種類ごとにテンプレート化された行動モジュールが記憶されている。また、RAMは、ワークメモリやバッファメモリとして用いられる。
モータ制御ボード106は、たとえばDSPで構成され、各腕や首関節および眼球部などの各軸モータの駆動を制御する。すなわち、モータ制御ボード106は、CPU100からの制御データを受け、右眼球部88Rの2軸のそれぞれの角度を制御する2つのモータ(図5では、まとめて「右眼球モータ112」と示す)の回転角度を制御する。同様にして、モータ制御ボード106は、CPU100からの制御データを受け、左眼球部88Lの2軸のそれぞれの角度を制御する2つのモータ(図5では、まとめて「左眼球モータ114」と示す)の回転角度を制御する。
また、モータ制御ボード106は、CPU100からの制御データを受け、肩関節68Rの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節72Rの角度を制御する1つのモータとの計4つのモータ(図5では、まとめて「右腕モータ116」と示す)の回転角度を制御する。同様にして、モータ制御ボード106は、CPU100からの制御データを受け、肩関節68Lの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節72Lの角度を制御する1つのモータとの計4つのモータ(図5では、まとめて「左腕モータ118」と示す)の回転角度を制御する。
さらに、モータ制御ボード106は、CPU100からの制御データを受け、首関節80の直交する3軸のそれぞれの角度を制御する3つのモータ(図5では、まとめて「頭部モータ130」と示す)の回転角度を制御する。そして、モータ制御ボード106は、CPU100からの制御データを受け、車輪52を駆動する2つのモータ(図5では、まとめて「車輪モータ76」と示す)の回転角度を制御する。なお、この実施例では、車輪モータ76を除くモータは、制御を簡素化するためにステッピングモータ(すなわち、パルスモータ)を用いる。ただし、車輪モータ76と同様に直流モータを用いるようにしてもよい。また、ロボット12の身体部位を駆動するアクチュエータは、電流を動力源とするモータに限らず適宜変更されてもよい。たとえば、他の実施例では、エアアクチュエータなどが適用されてもよい。
センサ入力/出力ボード108は、モータ制御ボード106と同様に、DSPで構成され、各センサからの信号を取り込んでCPU100に与える。すなわち、赤外線距離センサ60のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード108を通じてCPU100に入力される。また、全方位カメラ66からの映像信号が、必要に応じてセンサ入力/出力ボード108で所定の処理を施してからCPU100に入力される。眼カメラ90からの映像信号も、同様にして、CPU100に入力される。また、上述した複数の接触センサ78(図5では、まとめて「接触センサ78」と示す)からの信号がセンサ入力/出力ボード108を介してCPU100に与えられる。音声入力/出力ボード110もまた、同様に、DSPで構成され、CPU100から与えられる音声合成データに従った音声または声がスピーカ84から出力される。また、マイク86からの音声入力が、音声入力/出力ボード110を介してCPU100に与えられる。
また、CPU100は、バス102を介して通信LANボード132に接続される。通信LANボード132は、たとえばDSPで構成され、CPU100から与えられた送信データを無線通信装置134に与え、無線通信装置134は送信データを、ネットワーク200を介して開発支援装置10に送信する。また、通信LANボード132は、無線通信装置124を介してデータを受信し、受信したデータをCPU100に与える。
開発支援装置10は、上述のようなロボット12の開発に役立つものである。具体的には、開発支援装置10は、テンプレートと当該テンプレートに引数として与えられる実行情報とに基づいて、新規の行動モジュールを作成する機能を有しており、たとえば、この開発支援装置10を用いて行動モジュールを逐次的に追加していくことによって、大規模な行動パターンを備えたロボット12を実現することができる。
開発支援装置10では、開発支援処理が開始されると、たとえば図6に示すようなコンポーザ画面300が表示装置26に表示される。ただし、この実施例で示す各画面は一例であって適宜変更可能である。
このコンポーザ画面300では、ロボット12の開発者等は、行動モジュールの状態遷移を設定することができる。コンポーザ画面300は、視覚化画面302を含み、この視覚化画面302には、行動モジュールの状態遷移が図式的に視覚化されて表示される。具体的には、視覚化画面302では、行動モジュールに対応するビヘイビアが矩形状のアイコン(ビヘイビアアイコン)で表示され、このビヘイビアアイコンの下部には、当該ビヘイビアの名称がテキスト(文字)で表示される。また、詳細な説明は省略するが、視覚化画面302では、行動モジュールの遷移を示す矢印線(遷移線)、スタートアイコン、エンドアイコン等が表示されており、このような視覚化によって行動モジュールの遷移ないし推移が容易に把握され得る。
また、図6の視覚化画面302右側には、リスト画面304が設けられる。リスト画面304は、領域306、および領域308を含み、このリスト画面304には、ビヘイビアの名称のリストがマウスなどの入力装置28によるドラッグ・アンド・ドロップ操作の対象オブジェクト(ビヘイビアオブジェクト)として表示される。具体的には、ロボット12の開発者等がマウスなどの入力装置28を操作して、リスト画面304のビヘイビアオブジェクトをドラッグし、そして視覚化画面302でこれをドロップすると、そのビヘイビアに対応するビヘイビアアイコンが視覚化画面302に描画されることとなる。
たとえば、領域306には、「Akushu(握手)」、「Hug(抱き合う)」や「Jyan(じゃんけん)」などの、テンプレート化されていない行動モジュール、すなわちテンプレートに基づいた作成・更新処理を行うことのできない行動モジュールに対応するビヘイビアオブジェクトが表示される。
領域308には、「Talk(挨拶)」、「Guide(道案内)」、「Navi(誘導)」などの、テンプレート化されている行動モジュール、すなわちテンプレートに基づいた作成・更新処理を行うことのできる行動モジュールに対応するビヘイビアオブジェクトが当該ビヘイビアが属するテンプレートごとに分類されて表示される。
また、各テンプレートの下部には、“追加”ボタンが設けられており、この“追加”ボタンをマウスなどの入力装置28で選択することによって、このテンプレートに対応する入力画面400,500を表示することができる。
図7および図8に示す入力画面400,500は、テンプレートを視覚化して表示したものであり、上述したように、リスト画面304に表示されている“追加”ボタンをマウスなどの入力装置28で選択することによって、コンポーザ画面300とは別ウィンドウで表示される。
この入力画面400,500では、ロボット12の開発者等は、行動モジュールの実行に関する情報(実行情報)を引数として入力することによって、テンプレートと実行情報とに基づいた新規の行動モジュールを作成することができる。たとえば、図7は、「Talk(挨拶)」のテンプレートを視覚化した入力画面400であり、図8は、「Guide(道案内)」のテンプレートを視覚化した入力画面500である。
先ず、図7を参照して、「Talk(挨拶)」の入力画面400について説明する。
図7に示す入力画面400は、領域402a、領域402b、領域402c(引数入力領域404)、ならびに領域402dを含み、この領域402a―402dの下部には、“了解”ボタン406、“キャンセル”ボタン408、ならびに“クリア”ボタン410が設けられる。
領域402aには、テンプレートの名称が表示される。図7に示す例では、このビヘイビアが「Talk(挨拶)」のテンプレートに属していることが示される。
領域402bには、ビヘイビアの名称が表示される。図7に示す例では、このビヘイビアの名称が「こんにちは」であることが示される。
領域402cには、この「Talk(挨拶)」のテンプレートに引数として入力された実行情報が表示される。すなわち、領域402cは、引数入力領域404として機能する。たとえば、実行情報は、ロボットの発話内容に対応するテキスト(文字)データであり、ロボット12の開発者等がキーボードなどの入力装置28を用いて直接手入力する方法等が考えられる。図7に示す例では、ロボット12が「こんにちは。ようこそ。」と発話することが示される。
領域402dには、ビヘイビアの説明等が表示される。たとえば、領域402dには、「頭部を対話相手の顔位置に向け、“こんにちは。ようこそ。”と発話しながら、腕を適宜振る」といった、ビヘイビアの解説(説明文)が表示される。
また、次に、図8を参照して、「Guide(道案内)」のテンプレートの入力画面500について説明する。
図8に示すエディット画面500は、領域502a、領域502b、領域502c(引数入力領域504a)、領域502d(引数入力領域504b)、領域502e(引数入力領域504c)、領域502f(引数入力領域504d)、領域502g(引数入力領域504e)、ならびに領域502hを含み、この領域502a―502hの下部には、“了解”ボタン506、“キャンセル”ボタン508、ならびに“クリア”ボタン510が設けられる。
領域502aには、テンプレートの名称が表示される。図8に示す例では、このビヘイビアが「Guide(道案内)」のテンプレートに属していることが示される。
領域502bには、ビヘイビアの名称が表示される。図8に示す例では、このビヘイビアの名称が「マイルズへ」であることが示される。
領域502cには、この「Guide(道案内)」のテンプレートに引数として与えられた実行情報が表示される。すなわち、領域502cは、引数入力領域504aとして機能する。たとえば、実行情報は、ロボットの発話内容に対応するテキストデータであり、ロボット12の開発者等がキーボードなどの入力装置28を用いて直接手入力する方法等が考えられる。図8に示す例では、ロボット12は、「○○(案内地点名)は」と発話することが示される。
領域502dには、この「Guide(道案内)」のテンプレートに引数として与えられた実行情報が表示される。すなわち、領域502dは、引数入力領域504bとして機能する。たとえば、実行情報は、中継地点の位置情報であり、ロボット12の開発者等がキーボードなどの入力装置28を用いて中継地点の座標を直接手入力する方法や、予め設定しておいた地名をマウスなどの入力装置28でいわゆるプルダウンメニュー方式で選択する方法、入力画面500とは別ウィンドウで地図画面(図示せず)を表示して、その地図上で任意の場所を選択する方法等が考えられる。図8に示す例では、中継地点が「オリエンタル・ダイナー」であることが示される。
領域502eには、この「Guide(道案内)」のテンプレートに引数として与えられた実行情報が表示される。すなわち、領域502eは、引数入力領域504cとして機能する。たとえば、実行情報は、ロボットの発話内容に対応するテキストデータであり、ロボット12の開発者等がキーボードなどの入力装置28を用いて直接手入力する方法等が考えられる。図8に示す例では、ロボット12は、「そっちの道の、突き当たりにある、○○(中継地点名)の」と発話することが示される。
領域502fには、この「Guide(道案内)」のテンプレートに引数として与えられた実行情報が表示される。すなわち、領域502fは、引数入力領域504dとして機能する。たとえば、実行情報は、案内地点の位置情報であり、ロボット12の開発者等がキーボードなどの入力装置28を用いて案内地点の座標を直接手入力する方法や、予め設定しておいた地名をマウスなどの入力装置28でいわゆるプルダウンメニュー方式で選択する方法、入力画面500とは別ウィンドウで地図画面(図示せず)を表示して、その地図上で任意の場所を選択する方法等が考えられる。図8に示す例では、案内地点が、「マイルズ」であることが示される。
領域502gには、この「Guide(道案内)」のテンプレートに引数として与えられた実行情報が表示される。すなわち、領域502gは、引数入力領域504eとして機能する。たとえば、実行情報は、ロボットの発話内容に対応するテキストデータであり、ロボット12の開発者等がキーボードなどの入力装置28を用いて直接手入力する方法等が考えられる。図8に示す例では、ロボット12は、「あっちの方にある、出口から、出たとこにあるよ」と発話することが示される。
領域502hには、ロボット12の発話内容が表示される。具体的には、領域502c、領域502e、ならびに領域502gに表示されているロボット12の発話内容をまとめた文章が表示される。
このような入力画面400,500では、ロボット12の開発者等は、引数入力領域404,504に実行情報を入力した後、マウスなどの入力装置28で“了解”ボタン406,506を選択することによって、そのテンプレートに基づいた新規の行動モジュールを作成することができる。また、ロボット12の開発者等は、“キャンセル”ボタン408,508を選択することによって、入力画面400,500を閉じることができる。さらに、ロボット12の開発者等は、“クリア”ボタン410,510を選択することによって、引数入力領域に入力した実行情報を初期化することができる。
また、入力画面400,500は、リスト画面302に表示されているビヘイビアオブジェクトをマウスなどの入力装置28で選択し、または視覚化画面302に表示されているビヘイビアアイコンをマウスなどの入力装置28でたとえばダブルクリック等で選択することによっても表示される。この場合には、ロボット12の開発者等は、既に引数入力領域404,504に入力されている実行情報を再入力することによって、既存の行動モジュールを更新することができる。
具体的には、開発支援装置10のCPU20は、図9に示すフロー図に従って開発支援処理を実行する。
処理が開始されると、CPU20は、まず、ステップS1で、メモリ24から画面データを読み出し、たとえば図6に示すようなコンポーザ画面300を表示装置26に表示する。
次に、ステップS3では、停止命令があるか否かを判断する。たとえば、ロボット12の開発者等によって、コンポーザ画面300の図示しない終了メニューが選択された場合には“YES”と判断し、続くステップS5で終了処理を実行して、開発支援処理を終了する。一方、ステップS3でNOであれば、つまり停止命令が無ければ、ステップS7で、後述する行動モジュールの作成・更新処理(図10参照)を実行して、ステップS9に進む。
ステップS9では、行動モジュールの状態遷移が設定されたか否かを判断する。具体的には、コンポーザ画面300の視覚化画面302において、行動モジュールの状態遷移が設定された後、コンポーザ画面300の図示しない決定メニューが選択されたか否かを判断する。行動モジュールの状態遷移が設定された場合には“YES”と判断し、続くステップS5で、行動モジュールの状態遷移に関する情報(遷移情報)をロボット12に送信して、ステップS3に戻る。なお、この遷移情報には、テンプレートに引数として入力された実行情報も含まれており、後で詳細に説明するように、開発支援装置10からの遷移情報を受信したロボット12は、指定された行動モジュールに対応するテンプレートのデータをメモリ104から読み出し、そのテンプレートデータに遷移情報から参照した引数としての実行情報を与えることによって、行動モジュールに規定される行動を行う。
一方、ステップS9でNOであれば、つまり行動モジュールの状態遷移が設定されないのであれば、そのままステップS3に戻る。
図10は、図9に示したステップS7の行動モジュールの作成・更新処理のフロー図である。図10に示すように、開発支援装置10のCPU20は、行動モジュールの作成・更新処理を開始すると、ステップS31で、新規の行動モジュールを作成するか否かを判断する。たとえば、ロボット12の開発者等によって、リスト画面304に表示された“追加”ボタンがマウスなどの入力装置28で選択されたとき等は、ステップS31で“YES”と判断し、次のステップS33で、その“追加”ボタンに対応するテンプレートのデータをテンプレートDB30から読み出す。
続いて、ステップS35では、ステップS33でテンプレートDB30から読み出したテンプレートを視覚化して、図7に示すような入力画面400(または、図8に示すような入力画面500)を、コンポーザ画面300とは別ウィンドウで表示装置26に表示する。
ステップS37では、行動モジュールの作成処理を実行する。具体的には、テンプレートDB30から読み出したテンプレートのデータに、この入力画面400の引数入力領域404に入力した実行情報を取り込むことによって、新規の行動モジュールを作成する。ここでは、ロボット12の開発者等は、入力画面400の引数領域404に実行情報を入力し、その後、入力画面400の“了解”ボタン406を選択する。
次に、ステップS39では、作成した新規の行動モジュールを行動モジュールDB32に保存する。すると、この作成した行動モジュールに対応するビヘイビアの名称(ビヘイビアオブジェクト)がリスト画面304に新しく追加される。
ステップS39を終了すると、ステップS31へ戻って、繰り返し、新規の行動モジュールを作成するか否かの判断を行う。そして、ステップS31で“NO”であれば、つまり新規の行動モジュールを作成しないのであれば、そのままステップS41に進む。
ステップS41では、既存の行動モジュールを更新するか否かを判断する。たとえば、ロボット12の開発者等によって、リスト画面304に表示されたビヘイビアオブジェクトが選択されたとき等は、ステップS41で“YES”と判断し、次のステップS43で、そのビヘイビアオブジェクトに対応する行動モジュールのデータを行動モジュールDB32から読み出す。
続いて、ステップS45では、図7に示すような入力画面400(または、図8に示すような入力画面500)を、コンポーザ画面300とは別ウィンドウで表示装置26に表示する。
ステップS47では、既存の行動モジュールの更新処理を実行する。ここでは、たとえば、ロボット12の開発者等が、入力画面400の引数領域404に既に入力されている実行情報を修正する。その後、入力画面400の“了解”ボタン406を選択することによって、引数領域404に再入力された引数としての実行情報に基づいて、行動モジュールが更新される。
次に、ステップS49では、更新した行動モジュールを行動モジュールDB32に保存する。ここでは、更新した行動モジュールが、既存の行動モジュールと置き換えて行動モジュールDB32に記憶される。ステップS49を終了すると、ステップS31へ戻って、繰り返し、新規の行動モジュールを作成するか否かの判断を行う。
また、ステップS41で“NO”であれば、つまり既存の行動モジュールを更新しないのであれば、そのままステップS51に進み、ステップS51で行動モジュールの作成・更新処理を終了するか否かの判断を行う。ステップS51で“YES”であれば、行動モジュールの作成・更新処理を終了して、ステップS9(図9参照)に進む。
図11は、ロボット12のCPU100の全体処理を示すフロー図である。図11に示すように、ロボット12のCPU100は、全体処理を実行すると、ステップS71で、最初に行う所定のビヘイビアを実行する。つまり、メモリ104から最初に行う所定のビヘイビアに対応する行動モジュールを読み出して、その行動モジュールに規定される行動を行う。なお、最初に実行するビヘイビアには、たとえば「EXPLORE(周囲環境を巡回して調査)」のように周囲環境を調査するもの等が設定され得る。
続いて、ステップS73で、停止命令があるか否かを判断する。ここでは、たとえば、開発中であれば開発支援装置10から終了指示があったか、あるいは、ロボット12を停止させるための終了ボタンが押されたかどうか等を判断する。ステップS73で“YES”であれば、続くステップS75で終了処理を実行して、ロボット12の動作処理を終了する。この終了処理では、ロボット12の体の各部位をそれぞれのホームポジションに戻すようにしてもよい。
一方、ステップS73で“NO”であれば、つまり停止命令がなければ、ステップS77で、開発支援装置10から行動モジュールの状態遷移についての遷移情報がネットワーク200を介して送信されてきたか否かを判断する。ステップS77で“YES”であれば、続くステップS79で遷移情報を受信してメモリ104に書き込む。
続いて、ステップS81で、遷移情報において指定されている最初のビヘイビアを選択し、ステップS83で、そのビヘイビアがテンプレートに属するものであるか否かを判断する。具体的には、そのビヘイビアに対応する行動モジュールが、入力画面400,500の引数入力領域404,504に入力した実行情報をテンプレートデータに取り込むことによって作成された行動モジュールであるか否かを判断する。
ステップS83で“YES”であれば、つまりビヘイビアがテンプレートに属するものであれば、ステップS85で、テンプレートに属するビヘイビアの実行処理(図12―14参照)を開始して、ステップS89に進む。
一方、ステップS83で“NO”であれば、つまりビヘイビアがテンプレートに属するものでなければ、ステップS87で、テンプレートに属さないビヘイビアの実行処理を開始する。つまり、そのビヘイビアに対応する行動モジュールをメモリ104から読み出して、その行動モジュールに規定される行動を行い、ステップS89に進む。
続くステップS89では、遷移情報によって指定されている全てのビヘイビアの実行が完了したか否かを判断する。ステップS89で“YES”であれば、つまり遷移情報によって指定されている全てのビヘイビアの実行が完了していれば、ステップS73へ戻って、処理が繰り返される。
一方、ステップS89で“NO”であれば、つまり、まだ全てのビヘイビアの実行が完了していなければ、ステップS91で、遷移情報によって指定されている次のビヘイビアを選択する。ステップS91の処理を終了すると、ステップS83に戻って、繰り返しそのビヘイビアがテンプレートに属するものであるか否かを判断する。
図12―14は、図11に示したステップS85のテンプレートに基づいたビヘイビアの実行処理のフロー図である。ロボット12のCPU100は、テンプレートに基づいたビヘイビアの実行処理を開始すると、ビヘイビアに対応するテンプレートのデータをメモリ104から読み出し、そのテンプレートデータに遷移情報から参照した引数としての実行情報を与えることによって、行動モジュールに規定される行動を行う。
図12には、ビヘイビアが「Talk(挨拶)」のテンプレートに属する場合のビヘイビアの実行処理の動作の一例が示される。
ステップS111では、ロボット12のCPU100は、眼カメラ90からの映像信号をセンサ入力/出力ボード108に取り込み、映像信号処理することによって、対話相手の顔の位置の座標(x,y,z)を算出する。
続くステップS113では、算出された座標のデータをモータ制御ボード106に与えて、ロボット12の身体方向を対話相手の方向(x,y)に向けるとともに、ロボット12の頭部82の顔や眼球部88を人の顔の位置(x,y,z)に向ける。
次に、ステップS115では、遷移情報からこのテンプレートに引数arg1として与えられる実行情報を参照し、その実行情報を音声入力/出力ボード110に送信して、音声または声がスピーカ84から出力されるように制御する。なお、引数arg1として与えられる実行情報は、たとえば、図7に示す「Talk(挨拶)」の入力画面400の引数入力領域404にテキスト(文字)で入力されたテキストデータであり、ロボット12は、そのテキストデータの内容どおり発話する。
ステップS117では、ステップS115の発話が終了するまで、腕を振るなどの身体動作(ジャスチャ)を並行的に実行する。ステップS115の処理を終了すると、テンプレートに基づいたビヘイビアの実行処理を終了して、ステップS89(図11参照)に進む。
図13には、ビヘイビアが「Guide(道案内)」のテンプレートに属する場合のビヘイビアの実行処理の動作の一例が示される。
図13に示すように、ステップS121では、遷移情報からこのテンプレートに引数arg1として与えられる実行情報を参照し、その実行情報を音声入力/出力ボード110に送信して、音声または声がスピーカ84から出力されるように制御する。なお、引数arg1として与えられる実行情報は、たとえば、図8に示す「Guide(道案内)」の入力画面500の引数入力領域504aにテキスト(文字)で入力されたテキストデータであり、ロボット12は、そのテキストデータの内容どおり発話して、今から案内する案内地点の地名を提示する。
次に、ステップS123で、遷移情報からこのテンプレートに引数arg2として与えられる実行情報を参照し、その実行情報から中継地点の座標(x,y)を算出する。なお、引数arg2として与えられる実行情報は、たとえば、図8に示す「Guide(道案内)」の入力画面500の引数入力領域504bに入力された位置情報である。そして、ステップS125で、中継地点の座標(x,y)をモータ制御ボード106に与えて、指差し動作などで中継地点を指し示す。
続くステップS127では、遷移情報からこのテンプレートに引数arg3として与えられる実行情報を参照し、その実行情報を音声入力/出力ボード110に送信して、音声または声がスピーカ84から出力されるように制御する。なお、引数arg3として与えられる実行情報は、たとえば、図8に示す「Guide(道案内)」の入力画面500の引数入力領域504cにテキスト(文字)で入力されたテキストデータであり、ロボット12は、そのテキストデータの内容どおり発話して、中継地点までの経路を説明する。
次に、ステップS129で、遷移情報からこのテンプレートに引数arg4として与えられる実行情報を参照し、その実行情報から案内地点の座標(x,y)を算出する。なお、引数arg4として与えられる実行情報は、たとえば、図8に示す「Guide(道案内)」の入力画面500の引数入力領域504dに入力された位置情報である。そして、ステップS131で、案内地点の座標(x,y)をモータ制御ボード106に与えて、指差し動作などで案内地点を指し示す。
続くステップS133では、遷移情報からこのテンプレートに引数arg5として与えられる実行情報を参照し、その実行情報を音声入力/出力ボード110に与えて、その実行情報に従った音声または声がスピーカ84から出力されるように制御する。なお、引数arg5として与えられる実行情報は、たとえば、図8に示す「Guide(道案内)」の入力画面500の引数入力領域504eにテキスト(文字)で入力されたテキストデータであり、ロボット12は、そのテキストデータの内容どおり発話して、中継地点から案内地点までの経路を説明する。
ステップS133の処理を終了すると、テンプレートに基づいたビヘイビアの実行処理を終了して、ステップS89(図11参照)に進む。
図14には、ビヘイビアが「Navi(誘導)」のテンプレートに属する場合のビヘイビアの実行処理の動作の一例が示される。
図14に示すように、ステップS141では、遷移情報からこのテンプレートに引数arg1として与えられる実行情報を参照し、その実行情報を音声入力/出力ボード110に与えて、その実行情報に従った音声または声がスピーカ84から出力されるように制御する。なお、引数arg1として与えられる実行情報は、たとえば、目的地の名称が含まれたテキストデータであり、ロボット12は、そのテキストデータの内容どおり発話して、目的地を提示する。
次に、ステップS143では、遷移情報からこのテンプレートに引数arg2として与えられる実行情報を参照し、その実行情報から目的地の座標(x,y)を算出する。そして、ステップS145で、目的地の座標(x,y)をモータ制御ボード106に与えて、目的地まで人間を連れて移動する(誘導する)。
ステップS145を終了すると、すなわち、目的地に到着すると、ステップS147で、たとえば「つきましたよ」と発話し、テンプレートに基づいたビヘイビアの実行処理を終了して、ステップS89(図11参照)に進む。
このように、この実施例では、行動モジュールがビヘイビアの種類ごとにテンプレート化されてテンプレートDB30に格納されており、テンプレートDB30から所望のテンプレートのデータを読み出して、このテンプレートを視覚化した入力画面400,500を表示することができる。そして、この入力画面400,500の引数入力領域404,504に入力した実行情報をテンプレートのデータに取り込むことによって、新規の行動モジュールを作成することができる。したがって、この実施例によれば、簡単に新規のビヘイビアを作成することができる。
また、この実施例では、テンプレートと実行情報とに基づいて作成された行動モジュールが、ロボット12のビヘイビアに対応付けて行動モジュールDB32に記憶されており、この行動モジュールDB32から所望のビヘイビアを読み出して、入力画面400,500を表示することができる。そして、この入力画面400,500の引数入力領域404,504に既に入力されている実行情報を再入力することによって、引数領域404,504に再入力された実行情報に基づいて、行動モジュールを更新することができる。したがって、この実施例によれば、たとえば実行情報を部分的に再入力するだけで、簡単に類似のビヘイビアを作成することができる。