図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)30に接続される。後で詳細に説明するように、シーケンスDB30には、メインシーケンスとサブシーケンスとが記憶され、ロボット12の開発者等は、このシーケンスDB30に記憶されているシーケンスのデータ(シーケンスデータ)を読み出して、そのシーケンスのデータを用いて、行動モジュールの状態遷移を設定することができる。
また、CPU20は、バス22を介して通信LANボード32に接続される。通信LANボード32は、たとえばDSPで構成され、CPU20から与えられた送信データを無線通信装置34に与え、無線通信装置34は送信データを、ネットワーク200を介してロボット12に送信する。また、通信LANボード32は、無線通信装置34を介してデータを受信し、受信したデータをCPU20に与える。
この開発支援装置10によって開発を支援するロボット12について説明する。
ロボット12は、各種センサを有するヒューマノイド型で自律移動型のものであり、身振りおよび音声の少なくとも一方を用いて、コミュニケーション行動を取ることができる。このようなロボット12のコミュニケーション行動(ビヘイビア)を実現するためのプログラムは、上述したように、モジュール化された「行動モジュール」として実行される。また、行動モジュールの実行順序は、「行動モジュールの状態遷移」として設定され、長期的に首尾一貫した前後関係または調和した状況を維持しているコミュニケーション行動が実現される。「行動モジュールの状態遷移」は、行動モジュールの短期的な遷移を示すものであり、たとえば、数個程度の行動モジュールの繋がりないし順序付けであり得るが、長期(たとえば一日中)やすべての行動モジュールの遷移を定めたものではない。すなわち、ロボット12は、「行動モジュール」を順次実行し、その行動モジュールの実行順序は、「行動モジュールの状態遷移」によって導かれる。
具体的には、行動モジュールは、図3に示すように、前提条件部、指示部および認識部を含む。行動モジュールを実行する際には、まず、前提条件部を実行することによって、ロボット12は、その行動モジュールが実行可能な状況であるかどうかを確認する。前提条件を満足する場合には、次に指示部を実行する。これにより、ロボット12は人間と相互作用する行動を取り、具体的には、身振りおよび音声の少なくとも一方を用いて所定のコミュニケーション行動を人間に提示する。認識部は、ロボット12の提示したコミュニケーション行動に対して取ると予想される幾つかの人間の反応(予想1〜予想N)を認識するように設定されている。
行動モジュールの遷移は、図4に示すように、順次的遷移および反射的遷移を含む。ロボット10は、現在の行動モジュールの指示部を実行した後、認識部を実行することによって人間の反応を認識する。その後、ロボット10は、現在の行動モジュールの実行を終了し、認識結果に相当する結果値を記録して、次の実行可能な行動モジュールに推移する(図4(A))。次に実行する行動モジュールは、現在の行動モジュールの結果値(予想1〜予想N)によって決定され、この遷移が行動モジュールの状態遷移によって導かれる。
また、外部から妨害などがあった場合は、反射的遷移によって取り扱われる。反射的遷移が現在の状況に対して設定されていて、かつ、対応する次の行動モジュールの前提条件部が満足される場合、ロボット12は現在の行動モジュールの実行を止めてすぐに次の行動モジュールに遷移する(図4(B))。この反応的な遷移も行動モジュールの状態遷移によって導かれる。
ただし、行動モジュールの実行順序に関する規則として「エピソード・ルール」を適用することもできる。この「エピソード・ルール」については、本件出願人が先に出願し、既に出願公開された特開2004−114242号公報に開示されている。
図5を参照して、ロボット12のハードウェア面の構成を詳細に説明する。図5に示すように、ロボット12は台車50を含み、台車50の下面にはロボット12を自律移動させる2つの車輪52および1つの従輪54が設けられる。2つの車輪52は車輪モータ76(図6参照)によってそれぞれ独立に駆動され、台車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(図6で包括的に示す)が設けられる。台車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自由度を有する。
図6はロボット12の電気的な構成を示すブロック図である。この図6を参照して、ロボット12は、CPU100を含む。CPU100は、マイクロコンピュータ或いはプロセッサとも呼ばれ、バス102を介して、メモリ104、モータ制御ボード106、センサ入力/出力ボード108および音声入力/出力ボード110に接続される。
メモリ104は、図示は省略をするが、ROM、HDDおよびRAMを含む。ROMおよびHDDには、開発支援装置10のメモリ24に記憶されているものと同じ、複数の行動モジュールが記憶されている。また、RAMは、ワークメモリやバッファメモリとして用いられる。
モータ制御ボード106は、たとえばDSPで構成され、各腕や首関節および眼球部などの各軸モータの駆動を制御する。すなわち、モータ制御ボード106は、CPU100からの制御データを受け、右眼球部88Rの2軸のそれぞれの角度を制御する2つのモータ(図6では、まとめて「右眼球モータ112」と示す)の回転角度を制御する。同様にして、モータ制御ボード106は、CPU100からの制御データを受け、左眼球部88Lの2軸のそれぞれの角度を制御する2つのモータ(図6では、まとめて「左眼球モータ114」と示す)の回転角度を制御する。
また、モータ制御ボード106は、CPU100からの制御データを受け、肩関節68Rの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節72Rの角度を制御する1つのモータとの計4つのモータ(図6では、まとめて「右腕モータ116」と示す)の回転角度を制御する。同様にして、モータ制御ボード106は、CPU100からの制御データを受け、肩関節68Lの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節72Lの角度を制御する1つのモータとの計4つのモータ(図6では、まとめて「左腕モータ118」と示す)の回転角度を制御する。
さらに、モータ制御ボード106は、CPU100からの制御データを受け、首関節80の直交する3軸のそれぞれの角度を制御する3つのモータ(図6では、まとめて「頭部モータ130」と示す)の回転角度を制御する。そして、モータ制御ボード106は、CPU100からの制御データを受け、車輪52を駆動する2つのモータ(図6では、まとめて「車輪モータ76」と示す)の回転角度を制御する。なお、この実施例では、車輪モータ76を除くモータは、制御を簡素化するためにステッピングモータ(すなわち、パルスモータ)を用いる。ただし、車輪モータ76と同様に直流モータを用いるようにしてもよい。また、ロボット12の身体部位を駆動するアクチュエータは、電流を動力源とするモータに限らず適宜変更されてもよい。たとえば、他の実施例では、エアアクチュエータなどが適用されてもよい。
センサ入力/出力ボード108は、モータ制御ボード106と同様に、DSPで構成され、各センサからの信号を取り込んでCPU100に与える。すなわち、赤外線距離センサ60のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード108を通じてCPU100に入力される。また、全方位カメラ66からの映像信号が、必要に応じてセンサ入力/出力ボード108で所定の処理を施してからCPU100に入力される。眼カメラ90からの映像信号も、同様にして、CPU100に入力される。また、上述した複数の接触センサ78(図6では、まとめて「接触センサ78」と示す)からの信号がセンサ入力/出力ボード108を介してCPU100に与えられる。音声入力/出力ボード110もまた、同様に、DSPで構成され、CPU100から与えられる音声合成データに従った音声または声がスピーカ84から出力される。また、マイク86からの音声入力が、音声入力/出力ボード110を介してCPU100に与えられる。
また、CPU100は、バス102を介して通信LANボード132に接続される。通信LANボード132は、たとえばDSPで構成され、CPU100から与えられた送信データを無線通信装置134に与え、無線通信装置134は送信データを、ネットワーク200を介して開発支援装置10に送信する。また、通信LANボード132は、無線通信装置134を介してデータを受信し、受信したデータをCPU100に与える。
開発支援装置10は、上述のようなロボット12の開発に役立つものである。具体的には、開発支援装置10では、開発支援処理が開始されると、たとえば図7および図9に示すようなコンポーザ画面300が表示装置26に表示される。
このコンポーザ画面300では、ロボット12の開発者等は、行動モジュールの状態遷移を設定して、その行動モジュールの状態遷移に関する情報(遷移情報)をロボット12に送信することができる。そして、後で詳細に説明するように、開発支援装置10から遷移情報を受信したロボット12は、遷移情報に従って行動モジュールのデータをメモリ104から読み出し、その行動モジュールに対応するコミュニケーション行動を取る。
図7および図9に示すように、コンポーザ画面300は、視覚化画面302を含み、この視覚化画面302には、行動モジュールの状態遷移が図式的に視覚化されて表示される。視覚化画面302では、行動モジュールに対応するビヘイビアが矩形状のアイコン(ビヘイビアアイコン304)で表示され、ビヘイビアアイコン304と他のビヘイビアアイコン304とは行動モジュールの実行順序を示す矢印線(遷移線306)によって連結される。具体的には、ビヘイビアアイコン304(ビヘイビアアイコンA)の右側(出力側)にあるポートがマウスなどの入力装置28でクリックされると、このポートから現在のマウスポインタまでの矢印線(遷移線306)が視覚化画面302上に表示される。そして、そのままビヘイビアアイコン304(ビヘイビアアイコンB)の左側(入力側)にあるポートがクリックされると、ビヘイビアアイコン304(ビヘイビアアイコンA)とビヘイビアアイコン304(ビヘイビアアイコンB)とが遷移線306で連結されることとなる。
また、視覚化画面302左上部には、メインシーケンスタブ308ないしサブシーケンスタブ310が設けられる。視覚化画面302では、行動モジュールの状態遷移が最上位であるメインシーケンスとそれより下位のサブシーケンスとに階層化されて表示され、たとえば、マウスなどの入力装置28でメインシーケンスタブ308ないしサブシーケンスタブ310を選択されることによって、視覚化画面302がメインシーケンスに対応するメインシーケンス画面312(図7参照)とサブシーケンスに対応するサブシーケンス画面314(図9参照)とに切り替えられる。ロボット12の開発者等は、メインシーケンス画面312でメインシーケンスを作成するとともに、サブシーケンス画面314でサブシーケンスを作成することができ、その作成されたシーケンスがシーケンスDB30に保存される。
さらに、視覚化画面302右側には、ビヘイビアリスト画面316が設けられる。ビヘイビアリスト画面316には、「Akushu(握手)」、「Hug(抱き合う)」、「Bye(ばいばい)」、「Listen(聴取)」、「Talk(挨拶)」、「Guide(道案内)」、「Navi(誘導)」などの、ビヘイビアの名称のリストがマウスなどの入力装置28によるドラッグ・アンド・ドロップ操作の対象オブジェクト(ビヘイビアオブジェクト)として表示される。たとえば、ロボット12の開発者等がマウスなどの入力装置28を操作し、ビヘイビアリスト画面316のビヘイビアオブジェクトをドラッグし、そして視覚化画面302でこれをドロップすると、そのビヘイビアオブジェクトに対応するビヘイビアアイコン304が視覚化画面302に描画される。
また、視覚化画面302左側には、シーケンスリスト画面318が設けられる。シーケンスリスト画面318には、シーケンスDB30に保存されているシーケンスのリストが表示され、それぞれのシーケンスの名称がマウスなどの入力装置28によるドラッグ・アンド・ドロップ操作の対象オブジェクト(シーケンスオブジェクト)として表示される。たとえば、ロボット12の開発者等がマウスなどの入力装置28を操作し、シーケンスリスト画面318におけるサブシーケンスのシーケンスオブジェクトをドラッグし、そして視覚化画面302でこれをドロップすると、そのシーケンスに対応するアイコン(シーケンスアイコン320)が視覚化画面302に描画される。
このようなコンポーザ画面300では、上述したように、メインシーケンス画面312でメインシーケンスが作成されるとともに、サブシーケンス画面314でサブシーケンスが作成される。
図7は、視覚化画面302にメインシーケンス画面312が表示された状態のコンポーザ画面300の一例であり、図8は、そのメインシーケンス画面312のメインシーケンスを表した図解図である。
図7に示すように、メインシーケンス画面312では、ビヘイビアアイコン304が表示されるとともに、コミュニケーションを行う対話相手の返答等による条件分岐を示す台形状のアイコン(条件分岐アイコン322)、メインシーケンスの実行開始を示すメインスタートアイコン324、およびメインシーケンスの実行終了を示すメインエンドアイコン326が表示される。
また、このメインシーケンス画面312では、サブシーケンスのシーケンスアイコン320が表示され、このシーケンスアイコン320と他のアイコン304,322,324,326とが遷移線306で連結されることによって、メインシーケンスの中にサブシーケンスが組み込まれる。
図7および図8を参照して、このメインシーケンス画面312では、メインスタートアイコン324と「こんにちは(Talk)」のビヘイビアアイコン304とが遷移線306で連結され、さらに、この「こんにちは(Talk)」のビヘイビアアイコン304と「道案内しましょうか?(Ask)」のビヘイビアアイコン304とが遷移線306で連結される。すなわち、ロボット12は、このメインシーケンスを実行開始すると、先ず、「こんにちは」と発話するビヘイビアB1を実行し、所定の時間が経過すると、次に、「道案内しましょうか?」と発話するビヘイビアB2を実行することとなる。
そして、「道案内しましょうか?(Ask)」のビヘイビアアイコン304と条件分岐アイコン322とが遷移線306で連結され、さらに、この条件分岐アイコン322の右側(出力側)の「はい」のポートとシーケンスアイコン320とが遷移線306で連結される。また、条件分岐アイコン322の右側(出力側)の「いいえ」のポートと「じゃあ、お買い得情報を教えます(Talk)」のビヘイビアアイコン304とが遷移線306で連結される。すなわち、ロボット12は、対話相手の返答を待ち、その対話相手から「はい」という返答があれば、ロボット12はサブシーケンスを実行開始することとなる。一方、対話相手から「いいえ」という返答があれば、「じゃあ、お買い得情報を教えます」と発話してお買い得情報を教えるビヘイビアB4を実行することとなる。
さらに、シーケンスアイコン320の右側(出力側)の「案内終了」のポートと「Bye」のビヘイビアアイコン304とが遷移線306で連結され、この「Bye」のビヘイビアアイコン304とメインエンドアイコン326とが遷移線306で連結される。また、シーケンスアイコン320の右側(出力側)の「割り込み終了」のポートと「じゃあ、お買い得情報を教えます(Talk)」のビヘイビアアイコン304とが遷移線306で連結され、「じゃあ、お買い得情報を教えます(Talk)」のビヘイビアアイコン304と「Bye」のビヘイビアアイコン304とが遷移線306で連結され、さらに、この「Bye」のビヘイビアアイコン304とメインエンドアイコン326とが遷移線306で連結される。すなわち、ロボット12は、案内を完了した状態でサブシーケンスを実行終了していれば、次に、「ばいばい」と発話するビヘイビアB5を実行して、メインシーケンスを実行終了することとなる。一方、ロボット12は、割り込み終了した状態でサブシーケンスを実行終了、すなわち、後で詳細に説明するように、反射的遷移R3からメインシーケンスに戻ったのであれば、次に、「じゃあ、お買い得情報を教えます」と発話してお買い得情報を教えるビヘイビアB4を実行し、その後、「ばいばい」と発話するビヘイビアB5を実行して、メインシーケンスを実行終了することとなる。
また、図9は、視覚化画面302にサブシーケンス画面314が表示された状態のコンポーザ画面300の一例であり、図10は、そのサブシーケンス画面314のサブシーケンスを表した図解図であり、図11は、そのサブシーケンス画面314の反射的遷移を表した図解図である。
図9に示すように、サブシーケンス画面314では、ビヘイビアアイコン304や条件分岐アイコン322が表示されるとともに、サブシーケンスの実行開始を示すサブスタートアイコン328、およびサブシーケンスの実行終了を示すサブエンドアイコン330が表示される。
このサブシーケンス画面314では、「レストラン1へ(Guide)」のビヘイビア、「レストラン2へ(Guide)」のビヘイビア、および「レストラン3へ(Guide)」のビヘイビアに反射的遷移(R1,R2,R3)が設定されており、それらの反射的遷移(R1,R2,R3)の実行開始を示す反射的遷移スタートアイコン332が表示される。たとえば、ロボット12の開発者等は、反射的遷移(R1,R2,R3)からの戻り先を指定することができ、具体的には、反射的遷移において最後に実行するビヘイビアのビヘイビアアイコンと、反射的遷移を終了した後で実行するビヘイビアのビヘイビアアイコンとを矢印破線(反射的遷移線334)で連結することによって、反射的遷移(R1,R2,R3)に対して、「遷移元へ戻る」、「遷移元のシーケンスの先頭に戻る」、「戻り先を指定する」等の遷移方法を設定することができる。
図9―図11を参照して、このサブシーケンス画面314では、サブスタートアイコン328と「どこに行きたいですか?(Ask)」のビヘイビアアイコン304とが遷移線306で連結され、この「どこに行きたいですか?(Ask)」のビヘイビアアイコン304と条件分岐アイコン322が遷移線306で連結される。すなわち、ロボット12は、このサブシーケンスを実行開始すると、先ず、「どこに行きたいですか?」と発話するビヘイビアB3−1を実行して、対話相手の返答を待つこととなる。
そして、条件分岐アイコン322の右側(出力側)の「レストラン1」のポートと「レストラン1へ(Guide)」のビヘイビアアイコン304とが遷移線306で連結され、条件分岐アイコン322の右側(出力側)の「レストラン2」のポートと「レストラン2へ(Guide)」のビヘイビアアイコン304とが遷移線306で連結され、さらに、条件分岐アイコン322の右側(出力側)の「レストラン3」のポートと「レストラン3へ(Guide)」のビヘイビアアイコン304とが遷移線306で連結される。すなわち、ロボット12は、対話相手から「レストラン1」という返答があれば、レストラン1までの順路を説明するビヘイビアB3−2を実行することとなり、対話相手から「レストラン2」という返答があれば、レストラン2までの順路を説明するビヘイビアB3−3を実行することとなり、対話相手から「レストラン3」という返答があれば、レストラン3までの順路を説明するビヘイビアB3−4を実行することとなる。
そして、「レストラン1へ(Guide)」、「レストラン2へ(Guide)」、「レストラン3へ(Guide)」のビヘイビアアイコン304のそれぞれと「他にも案内しましょうか?(Ask)」のビヘイビアアイコン304とが遷移線306で連結される。すなわち、ロボット12は、レストラン1までの順路を説明するビヘイビアB3−2、レストラン2までの順路を説明するビヘイビアB3−3、およびレストラン3までの順路を説明するビヘイビアB3−4のいずれかを実行すると、その後、「他にも案内しましょうか?」と発話するビヘイビアB3−5を実行することとなる。
そして、「他にも案内しましょうか?(Ask)」のビヘイビアアイコン304と条件分岐アイコン322が遷移線306で連結され、この条件分岐アイコン322の右側(出力側)の「はい」のポートと「どこに行きたいですか?(Ask)」のビヘイビアアイコン304とが遷移線306で連結される。また、条件分岐アイコン322の右側(出力側)の「いいえ」のポートとサブエンドアイコン330とが遷移線306で連結される。すなわち、ロボット12は、対話相手の返答を待ち、対話相手から「はい」という返答があれば、再び「どこに行きたいですか?(Ask)」と発話するビヘイビアB3−1を実行することとなる。一方、対話相手から「いいえ」という返答があれば、サブシーケンスを実行終了し、その後、「ばいばい」と発話するビヘイビアB5(図8参照)を実行することとなる。
また、「やっぱり他の場所をおしえて」という遷移条件に対応する反射的遷移R1の反射的遷移スタートアイコン332と「わかりました(Talk)」のビヘイビアアイコン304とが遷移線306で連結される。この反射的遷移R1では、「遷移元シーケンスの先頭に戻る」の遷移方法が設定されており、ここでは、「わかりました(Talk)」のビヘイビアアイコン304と「どこに行きたいですか?(Ask)」のビヘイビアアイコン304とが反射的遷移線334で連結される。すなわち、ロボット12がレストラン1までの順路を説明するビヘイビアB3−2、レストラン2までの順路を説明するビヘイビアB3−3、およびレストラン3までの順路を説明するビヘイビアB3−4のいずれかを実行しているときに、対話相手がロボット12に対して「やっぱり他の場所をおしえて」と発話した場合には、ロボット12は現在のビヘイビアの実行を止めて、「わかりました」と発話するビヘイビアを実行し、その後、「どこに行きたいですか?」と発話するビヘイビアB3−1を実行することとなる。
また、「もう1度説明して」という遷移条件に対応する反射的遷移R2の反射的遷移スタートアイコン332と「わかりました(Talk)」のビヘイビアアイコン304とが遷移線306で連結される。この反射的遷移R2では、「遷移元に戻る」の遷移方法が設定されており、ここでは、「わかりました(Talk)」のビヘイビアアイコン304と「レストラン1へ(Guide)」、「レストラン2へ(Guide)」、「レストラン3へ(Guide)」のビヘイビアアイコン304のそれぞれとが反射的遷移線334で連結される。すなわち、ロボット12がレストラン1までの順路を説明するビヘイビアB3−2、レストラン2までの順路を説明するビヘイビアB3−3、およびレストラン3までの順路を説明するビヘイビアB3−4のいずれかを実行しているときに、対話相手がロボット12に対して「もう1度説明して」と発話した場合には、ロボット12は現在のビヘイビアの実行を止めて、「わかりました」と発話するビヘイビアを実行し、その後、再び、レストラン1までの順路を説明するビヘイビアB3−2、レストラン2までの順路を説明するビヘイビアB3−3、およびレストラン3までの順路を説明するビヘイビアB3−4のいずれかを実行することとなる。
また、「やっぱりいらない」という遷移条件に対応する反射的遷移R3の反射的遷移スタートアイコン332と「そうですか(Talk)」のビヘイビアアイコン304とが遷移線306で連結される。この反射的遷移R3では、「戻り先を指定する」の遷移方法が設定されており、ここでは、「そうですか(Talk)」のビヘイビアアイコン304とサブエンドアイコン330とが反射的遷移線334で連結される。そして、上述したように、メインシーケンス画面312では、シーケンスアイコン320の右側(出力側)の「割り込み終了」のポートと「じゃあ、お買い得情報を教えます(Talk)」のビヘイビアアイコン304とが遷移線306で連結される。すなわち、ロボット12がレストラン1までの順路を説明するビヘイビアB3−2、レストラン2までの順路を説明するビヘイビアB3−3、およびレストラン3までの順路を説明するビヘイビアB3−4のいずれかを実行しているときに、対話相手がロボット12に対して「やっぱりいらない」と発話した場合には、ロボット12は現在のビヘイビアの実行を止めて、「そうですか」と発話するビヘイビアを実行し、その後、「じゃあ、お買い得情報を教えます」と発話してお買い得情報を教えるビヘイビアB4(図8参照)を実行する。
具体的には、開発支援装置10のCPU20は、図12に示すフロー図に従って開発支援処理を実行する。
処理が開始されると、CPU20は、先ず、ステップS1で、メモリ24から画面データを読み出し、たとえば図7または図9に示すようなコンポーザ画面300を表示装置26に表示する。
次に、ステップS3では、停止命令があるか否かを判断する。たとえば、ロボット12の開発者等によって、コンポーザ画面300の図示しない終了メニューが選択された場合には“YES”と判断し、続くステップS5で終了処理を実行して、開発支援処理を終了する。一方、ステップS3で“NO”であれば、つまり停止命令が無ければ、ステップS7に進む。
ステップS7では、行動モジュールの状態遷移の設定処理を行う。ここでは、ロボット12の開発者等は、メインシーケンス画面312上でメインシーケンスを作成するとともに、サブシーケンス画面314上でサブシーケンスを作成することによって、行動モジュールの状態遷移を設定する。
そして、ステップS9では、行動モジュールの状態遷移の設定処理が終了したか否かを判断する。ここでは、行動モジュールの状態遷移が設定された後、コンポーザ画面300の図示しない決定メニューが選択されたか否かを判断する。ステップS9で決定メニューが選択された場合には“YES”と判断し、続くステップS11で、作成したジーケンスをシーケンスDB30に保存し、ステップS13で、その行動モジュールの状態遷移に関する情報(遷移情報)をロボット12に送信して、ステップS3に戻る。
図13は、ロボット12のCPU100の全体処理を示すフロー図である。図13に示すように、ロボット12のCPU100は、全体処理を実行すると、ステップS31で、最初に行う所定のビヘイビアを実行する。つまり、メモリ104から最初に行う所定のビヘイビアに対応する行動モジュールを読み出して、その行動モジュールに規定される行動を行う。なお、最初に実行する所定のビヘイビアには、たとえば「EXPLORE(周囲環境を巡回して調査)」のように周囲環境を調査するもの等が設定され得る。
続いて、ステップS33で、停止命令があるか否かを判断する。ここでは、たとえば、開発中であれば開発支援装置10から終了指示があったか、あるいは、ロボット12を停止させるための終了ボタンが押されたかどうか等を判断する。
ステップS33で“YES”であれば、続くステップS35で終了処理を実行して、ロボット12の動作処理を終了する。この終了処理では、ロボット12の体の各部位をそれぞれのホームポジションに戻すようにしてもよい。
一方、ステップS33で“NO”であれば、つまり停止命令がなければ、ステップS37で、開発支援装置10から「行動モジュールの状態遷移」についての遷移情報がネットワーク200を介して送信されてきたか否かを判断する。ステップS37で“YES”であれば、続くステップS39で遷移情報を受信してメモリ104に書き込む。
続いて、ステップS41で、遷移情報に従い最初のビヘイビアを実行する。ここでは、ロボット12は、遷移情報に従って、最初の行動モジュールのデータをメモリ104から読み出して、その行動モジュールに対応するビヘイビアを実行する。
続く、ステップS43では、ロボット12の現在実行中のビヘイビアに対して、反射的遷移の条件が満たされるか否かを判断する。ここでは、対話相手がロボット12に対して反射的遷移の条件を満足するような行動をとったか否かを判断する。
ステップS43で“YES”であれば、つまりロボット12の現在実行中のビヘイビアに対して反射的遷移の条件が満たされるのであれば、ステップS45で、反射的遷移の実行処理(図14参照)を開始する。
一方、ステップS43で“NO”であれば、つまりロボット12の現在実行中のビヘイビアに対して反射的遷移の条件が満たされないのであれば、ステップS47で、遷移情報に指定されている全てのビヘイビアの実行が完了したか否かを判断する。ステップS47で“YES”であれば、つまり行動モジュールの状態遷移において指定されている全てのビヘイビアの実行が完了していれば、ステップS33へ戻る。
一方、ステップS47で“NO”であれば、つまり、まだ全てのビヘイビアの実行が完了していなければ、ステップS49で、遷移情報に従い次のビヘイビアを実行する。そして、ステップS43に戻って、処理が繰り返される。
図14は、図13に示したステップS45の反射的遷移の実行処理のフロー図である。図14に示すように、ロボット12のCPU100は、反射的遷移Riの実行処理を開始すると、S61で、ロボット12の現在のビヘイビアBiの実行を中断して、S63で、反射的遷移Riで定義されている一連のビヘイビア{Bi1,Bi2,・・・,BiN}を実行する。
続く、ステップS65では、反射的遷移Riに対して、「遷移元へ戻る」の遷移方法が設定されているか否かを判断する。ステップS65で“YES”であれば、ステップS67で、再びビヘイビアBiを実行し、ステップS43(図13参照)に戻って、処理が繰り返される。一方、ステップS65で“NO”であれば、つまり、反射的遷移Riに対して、「遷移元へ戻る」の遷移方法が設定されていなければ、ステップS69に進む。
ステップS69では、反射的遷移Riに対して、「遷移元のシーケンスの先頭へ戻る」の遷移方法が設定されているか否かを判断する。ステップS69で“YES”であれば、ステップS71で、ビヘイビアBiの属するシーケンスの最初のビヘイビアを実行し、ステップS43(図13参照)に戻って、処理が繰り返される。一方、ステップS69で“NO”であれば、つまり、反射的遷移Riに対して、「遷移元へ戻る」の遷移方法も、「遷移元のシーケンスへ戻る」の遷移方法も設定されていなければ、ステップS73に進む。
ステップS73では、反射的遷移Riに対して、「戻り先を指定する」が設定されているか否かを判断する。ステップS73で“YES”であれば、ステップS75で、戻り先として指定されたビヘイビアを実行し、ステップS43(図13参照)に戻って、処理が繰り返される。
このように、この実施例では、行動モジュールの状態遷移が最上位であるメインシーケンスとそれより下位のサブシーケンスとに階層化され、メインシーケンスに対応するメインシーケンス画面312とサブシーケンスに対応するサブシーケンス画面314とがそれぞれ個別に表示される。そして、メインシーケンス画面312上に表示されたアイコン304,320,322,324,326とそれらを連結する連結線306とに基づいて、メインシーケンスを作成することができる。また、サブシーケンス画面314上に表示されたアイコン304,322,328,330とそれらを連結する連結線306とに基づいて、サブシーケンスを作成することができる。したがって、この実施例によれば、階層性のある複雑な行動モジュールの関係性を簡単に設定することができる。
また、この実施例では、反射的遷移において最後に実行するビヘイビアのビヘイビアアイコンと、反射的遷移を終了した後で実行するビヘイビアのビヘイビアアイコンとを反射的遷移線334で連結することによって、反射的遷移からの戻り先を指定することができる。そして、反射的遷移に対して、「遷移元へ戻る」、「遷移元のシーケンスの先頭に戻る」、「戻り先を指定する」等の遷移方法を設定することができる。
なお、この実施例では、メインシーケンスの一部に含まれるひとまとまりの実行順序関係をサブシーケンスとして階層化して、1つのシーケンスアイコン320をメインシーケンス画面312上に表示したが、これに限定される必要はない。たとえば、メインシーケンスの一部にひとまとまりの実行順序関係が複数含まれていれば、そのそれぞれをサブシーケンスとして階層化して、複数のシーケンスアイコン320をメインシーケンス画面312上に表示してもよい。また、たとえば、サブシーケンスの一部にひとまとまりの実行順序関係が含まれていれば、それをサブシーケンスとして階層化して、サブシーケンス画面314上にシーケンスアイコン320を表示するようにしてもよい。