図1を参照して、この実施例のロボットシステム10では、モーションキャプチャシステム16を用いて操作者の動作(特定動作)を計測し、ロボット制御装置12によって、その操作者の行った特定動作をロボット14に実行(再現)させる。ここで、特定動作とは、「うなずく」、「手を振る」および「待機」などの身体表現(ジェスチャ)を意味し、その動作の中に、複数の被験体(たとえば人間)に対して共通性(共通成分)を有する動作をいう。
ロボット制御装置12は、ロボット14を遠隔操作するための、汎用のパーソナルコンピュータ或いはワークステーション等のコンピュータであって、図示は省略するが、CPU、RAM、ROMおよびHDD等を備える。ロボット14の動作を制御するためのプログラムおよびデータは、主記憶装置としてのHDD等に格納されており、CPUはこのプログラムに従って処理を実行する。ロボット制御装置12には、たとえば、LANやインターネット等のようなネットワーク(図示せず)を介して、ロボット14、モーションキャプチャシステム16、環境カメラ88、モニタ90、スピーカ92およびマイク94等が接続される。これらは、有線で接続されてもよいし、無線で接続されてもよい。また、有線と無線とが混在するネットワークを介して接続されてもよい。
ロボット14は、人間のような多自由度を有する身体を有し、その身体を用いて、たとえば人間とのコミュニケーションを行うために必要な身体動作を実行する、コミュニケーションロボット(人型ロボット)である。具体的には、図2に示すように、ロボット14は台車20を含み、この台車20の下面にはロボット14を自律移動させる2つの車輪22および1つの従輪24が設けられる。2つの車輪22は車輪モータ26(図3参照)によってそれぞれ独立に駆動され、台車20すなわちロボット14を前後左右任意の方向に動かすことができる。また、従輪24は車輪22を補助する補助輪である。このように、ロボット14は、配置された空間内を移動可能なものである。ただし、或る場所に固定的に配置されてもかまわない。
台車20の上には、円柱形のセンサ取付パネル28が設けられ、このセンサ取付パネル28には、多数の赤外線距離センサ30が取り付けられる。これらの赤外線距離センサ30は、センサ取付パネル28すなわちロボット14の周囲の物体(人間や障害物など)との距離を計測するものである。
また、センサ取付パネル28の上には、胴体32が直立するように設けられる。胴体32の前方中央上部(胸に相当する位置)には、上述した赤外線距離センサ30がさらに設けられる。これは、ロボット14の前方の主として人間との距離を計測する。また、胴体32には、その背面側上端部のほぼ中央から延びる支柱36が設けられ、支柱36の上には、全方位カメラ34が設けられる。全方位カメラ34は、ロボット14の周囲を撮影するものであり、後述する眼カメラ60とは区別される。この全方位カメラ34としては、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。なお、これら赤外線距離センサ30および全方位カメラ34の設置位置は当該部位に限定されず適宜変更され得る。
胴体32の両側面上端部(肩に相当する位置)には、それぞれ、肩関節38Rおよび38Lによって、上腕40Rおよび40Lが設けられる。図示は省略するが、肩関節38Rおよび38Lは、それぞれ、直交する3軸の自由度を有する。すなわち、肩関節38Rは、直交する3軸のそれぞれの軸廻りにおいて上腕40Rの角度を制御できる。肩関節38Rの或る軸(ヨー軸)は、上腕40Rの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸、ロール軸)は、それにそれぞれ異なる方向から直交する軸である。同様に、肩関節38Lは、直交する3軸のそれぞれの軸廻りにおいて上腕40Lの角度を制御できる。肩関節38Lの或る軸(ヨー軸)は、上腕40Lの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸、ロール軸)は、それにそれぞれ異なる方向から直交する軸である。
また、上腕40Rおよび40Lのそれぞれの先端には、肘関節42Rおよび42Lを介して、前腕44Rおよび44Lが設けられる。図示は省略するが、肘関節42Rおよび42Lは、それぞれ1軸の自由度を有し、この軸(ピッチ軸)の軸廻りにおいて前腕44Rおよび44Lの角度を制御できる。
前腕44Rおよび44Lのそれぞれの先端には、手に相当する球体46Rおよび46Lがそれぞれ固定的に設けられる。ただし、指や掌の機能が必要な場合には、人間の手の形をした「手」を用いることも可能である。
また、図示は省略するが、台車20の前面、肩関節38R,38Lを含む肩に相当する部位、上腕40R,40L、前腕44R,44Lおよび球体46R,46Lには、それぞれ、接触センサ(図3で包括的に示す。:48)が設けられている。台車20の前面の接触センサ48は、台車20への人間や他の障害物の接触を検知する。したがって、ロボット14の移動中に障害物との接触があると、それを検知し、直ちに車輪22の駆動を停止してロボット14の移動を急停止させることができる。また、その他の接触センサ48は、主に、人間がロボット14の当該各部位に触れたかどうかを検知する。なお、接触センサ48の設置位置はこれらに限定されず、適宜な位置(胸、腹、脇、背中、腰など)に設けられてよい。
胴体32の中央上部(首に相当する位置)には首関節50が設けられ、さらにその上には頭部52が設けられる。図示は省略するが、首関節50は、3軸の自由度を有し、3軸の各軸廻りに角度制御可能である。或る軸(ヨー軸)はロボット14の真上(鉛直上向き)に向かう軸であり、他の2軸(ピッチ軸、ロール軸)は、それぞれ、それと異なる方向で直交する軸である。
頭部52には、口に相当する位置に、スピーカ54が設けられる。スピーカ54は、ロボット14が、それの周辺の人間に対して音声ないし音によってコミュニケーションを取るために用いられる。また、耳に相当する位置には、マイク56Rおよび56Lが設けられる。以下、右耳に相当するマイク56Rと左耳に相当するマイク56Lとをまとめてマイク56ということがある。マイク56は、周囲の音、とりわけコミュニケーションを実行する対象である人間の声を取り込む。さらに、目に相当する位置には、眼球部58Rおよび58Lが設けられる。眼球部58Rおよび58Lは、それぞれ眼カメラ60Rおよび60Lを含む。以下、右の眼球部58Rと左の眼球部58Lとをまとめて眼球部58ということがあり、また、右の眼カメラ60Rと左の眼カメラ60Lとをまとめて眼カメラ60ということがある。
眼カメラ60は、ロボット14に接近した人間の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。眼カメラ60としては、上述した全方位カメラ34と同様のカメラを用いることができる。たとえば、眼カメラ60は眼球部58内に固定され、眼球部58は眼球支持部(図示せず)を介して頭部52内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、2軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この2軸の一方は、頭部52の上へ向かう方向の軸(ヨー軸)であり、他方は、一方の軸に直交しかつ頭部52の正面側(顔)が向く方向に直交する方向の軸(ピッチ軸)である。眼球支持部がこの2軸の各軸廻りに回転されることによって、眼球部58ないし眼カメラ60の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ54、マイク56および眼カメラ60の設置位置は、これらに限定されず、適宜な位置に設けてられてよい。
このように、この実施例のロボット14は、車輪22の独立2輪駆動、肩関節38の3自由度(左右で6自由度)、肘関節42の1自由度(左右で2自由度)、首関節50の3自由度および眼球支持部の2自由度(左右で4自由度)の合計17自由度を有する。
図3はロボット14の電気的な構成を示すブロック図であり、この図3を参照して、ロボット14は、CPU62を含む。CPU62は、マイクロコンピュータ或いはプロセサとも呼ばれ、バス64を介して、メモリ66、モータ制御ボード68、センサ入力/出力ボード70および音声入力/出力ボード72に接続される。
メモリ66は、図示は省略するが、ROMやHDDおよびRAMを含む。ROMやHDDには、ロボット14の動作を制御するための制御プログラムが予め記憶される。たとえば、各センサからの検知情報を検出するための検出プログラム、外部コンピュータ(ロボット制御装置12など)との間で必要なデータやコマンドを送受信するための通信プログラムおよび受信した動作コマンドに基づいて特定動作を実行するための動作プログラム等が記録される。また、RAMは、ワークメモリやバッファメモリとして用いられる。
モータ制御ボード68は、たとえばDSPで構成され、各腕や首関節および眼球部などの各軸モータの駆動を制御する。すなわち、モータ制御ボード68は、CPU62からの制御データを受け、右眼球部58Rの2軸のそれぞれの角度を制御する2つのモータ(図3では、まとめて「右眼球モータ」と示す。)74の回転角度を制御する。同様に、モータ制御ボード68は、CPU62からの制御データを受け、左眼球部58Lの2軸のそれぞれの角度を制御する2つのモータ(図3では、まとめて「左眼球モータ」と示す。)76の回転角度を制御する。
また、モータ制御ボード68は、CPU62からの制御データを受け、右肩関節38Rの直交する3軸のそれぞれの角度を制御する3つのモータと右肘関節42Rの角度を制御する1つのモータとの計4つのモータ(図3では、まとめて「右腕モータ」と示す。)78の回転角度を調節する。同様に、モータ制御ボード68は、CPU62からの制御データを受け、左肩関節38Lの直交する3軸のそれぞれの角度を制御する3つのモータと左肘関節42Lの角度を制御する1つのモータとの計4つのモータ(図3では、まとめて「左腕モータ」と示す。)80の回転角度を調節する。
さらに、モータ制御ボード68は、CPU62からの制御データを受け、首関節50の直交する3軸のそれぞれの角度を制御する3つのモータ(図3では、まとめて「頭部モータ」と示す。)82の回転角度を制御する。さらにまた、モータ制御ボード68は、CPU62からの制御データを受け、車輪22を駆動する2つのモータ(図3では、まとめて「車輪モータ」と示す。)26の回転角度を制御する。
なお、この実施例では、車輪モータ26を除くモータは、制御を簡素化するために、ステッピングモータ或いはパルスモータを用いるようにしてある。ただし、車輪モータ26と同様に、直流モータを用いるようにしてもよい。また、ロボット14の身体部位を駆動するアクチュエータは、電力を駆動源とするモータに限られず適宜変更され、たとえば、他の実施例では、エアアクチュエータが適用されてもよい。
センサ入力/出力ボード70もまた、同様に、DSPで構成され、各センサからの信号を取り込んでCPU62に与える。すなわち、赤外線距離センサ30のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード70を通してCPU62に入力される。また、全方位カメラ34からの映像信号が、必要に応じてこのセンサ入力/出力ボード70で所定の処理を施された後、CPU62に入力される。眼カメラ60からの映像信号も、同様にして、CPU62に入力される。また、上述した複数の接触センサ(図3では、まとめて「接触センサ48」と示す。)からの信号がセンサ入力/出力ボード70を介してCPU62に与えられる。
音声入力/出力ボード72もまた、同様に、DSPで構成され、CPU62から与えられる音声合成データに従った音声または声がスピーカ54から出力される。また、マイク56からの音声入力が、音声入力/出力ボード72を介してCPU62に取り込まれる。
また、CPU62は、バス64を介して通信LANボード84に接続される。通信LANボード84は、DSPで構成され、CPU62から送られる送信データを無線通信装置86に与え、無線通信装置86から送信データを、たとえば、LANのようなネットワークを介して外部コンピュータに送信する。また、通信LANボード84は、無線通信装置86を介してデータを受信し、受信したデータをCPU62に与える。つまり、この通信LANボード84および無線通信装置86によって、ロボット14は、ロボット制御装置12のような外部コンピュータなどと無線通信を行うことができる。
図1に戻って、モーションキャプチャシステム(3次元動作計測装置)16は、パーソナルコンピュータ或いはワークステーション等のコンピュータを含み、操作者(或いは、後述する被験体)の身体動作に関する3次元データ(動作データ)を取得する。モーションキャプチャシステム16には、公知のモーションキャプチャシステム、たとえばVICON社の光学式のモーションキャプチャシステムを適用することができる。
モーションキャプチャシステム16においては、図4に示すように、複数(たとえば、12台)のカメラ16aが操作者を前後左右から撮影可能な位置に設けられる。ただし、図4はモーションキャプチャシステム16が設置される部屋を上面から見た場合を示しており、操作者は位置P(部屋の中心)において身体動作(この実施例では、特定動作)を行う。操作者には、図5に示すように、頭頂、目の上、首、肩、肘および手先などの操作者の動作を特徴付ける特徴点、すなわち操作者の動作を特定可能な部位にマーカ16bが取り付けられる。そして、これらを複数のカメラ16aによって多方向から撮影し、画像解析を行うことによって、計測時刻(たとえば1秒間に60フレーム)毎の各マーカ16bの3次元位置座標データを算出する。つまり、操作者の動作は、モーションキャプチャシステム16によって、特徴点の3次元位置座標の時系列データとして取得される。なお、操作者に取り付けられるマーカ16bの個数および取り付け位置は、これに限定されず、たとえば操作者の行う特定動作やロボットシステム10に適用するロボット14の種類に応じて、適宜変更され得る。また、カメラ16aの台数も12台に限定されず、原理的には3台以上のカメラ16aが設けられれば、マーカ16bの3次元位置座標データが算出可能である。
図1に戻って、環境カメラ88は、ロボット14が配置される場所或いは部屋に設置され、ロボット14を含む当該場所或いは部屋の全体を撮影する。環境カメラ88としては、上述した、ロボット14が備える全方位カメラ34や眼カメラ60と同様のカメラを用いるとよい。
モニタ90、スピーカ92およびマイク94は、ロボット14を遠隔操作する操作者の近傍、たとえば操作者の前方などに配置される。モニタ90は、詳細は後述する、遠隔操作画面96を表示する。スピーカ92は、音声ないし音によってロボット14の周囲の音声(特に、ロボット14がコミュニケーションを取る人間の発話内容)を操作者に伝え、マイク94は、操作者の声を取り込む。
また、ロボット制御装置12の内部或いは外部には、分解済動作データベース(DB)18が設けられる。分解済動作DB18は、予め計測した複数の被験体の特定動作に基づいて構築した分解済動作に関する情報(分解済動作情報)を記憶する。ここで、被験体とは、ロボットが身体動作を行うためのデータを取得する動作計測の対象をいい、言い換えると、ロボットが実行する身体動作のモデル(見本)となる特定動作を行うものをいう。この実施例では、ロボット14が人型ロボットであるため、人間を被験体として採用した。つまり、分解済動作DB18は、「うなずく」や「手を振る」等の人間の特定動作を、複数の人間に共通する動作成分によって構成される一般動作と、或る人間に特有の動作成分によって構成される癖動作とに分解して、記憶している。なお、特定動作は上述のものに限定されず、適宜な特定動作が採用され得る。
ここで、分解済動作DB18に記憶される分解済動作情報の作成方法(言い換えると、被験体(この実施例では、人間)の特定動作の分解方法)について説明する。図6は、上述のようなモーションキャプチャシステム16等と接続される分解済動作DB作成用コンピュータ(図示せず)が実行する分解済動作情報の作成動作を示す。
図6を参照して、分解済動作DB作成用コンピュータは、先ず、ステップS1で複数人の動作を記録(取得)する。具体的には、モーションキャプチャシステム16等を用いて計測した複数の人間の或る特定動作に関する動作データ(たとえば、特徴点の3次元位置座標の時系列データ)を受信し、記憶する。次のステップS3では、合成動作データを作成する。すなわち、記憶した複数の人間の全ての動作データをつなぎ合わせた合成動作データを作成する。そして、ステップS5では、合成動作データについて主成分分析を行い、合成動作データの主成分を求める。なお、求めた主成分は、寄与率が高いものから順番に第1主成分、第2主成分、第3主成分・・・と番号付けしておく。
続いて、ステップS5で求めた主成分の寄与率に基づいて、一般主成分軸と癖主成分軸とを求める。一般主成分軸は、一般動作を表すための主成分(一般主成分)を表す軸であり、癖主成分軸は、癖動作を表すための主成分(癖主成分)を表す軸である。この実施例では、累積寄与率(K)が閾値以上になるまでの主成分を一般主成分として採用し、それ以外の全ての主成分を癖主成分として採用する。具体的には、ステップS7からステップS13の処理によって算出する。
ステップS7では、初期値として、K=第1主成分の寄与率とし、続くステップS9で、Kが閾値(この実施例では80%)以上であるか否かを判断する。ステップS9で“NO”の場合、すなわちKが80%未満の場合は、ステップS11に進む。ステップS11では、K=K+次番号の主成分の寄与率とし、つまり、次番号までの累積寄与率を算出して、ステップS9に戻る。
一方、ステップS9で“YES”の場合、すなわちKが80%以上の場合は、ステップS13に進む。ステップS13では、Kの算出に用いた各主成分を表す軸を一般主成分軸とし、残りの主成分を表す軸を癖主成分軸とする。
ここで、一例を挙げて説明すると、或る特定動作の合成動作データについて主成分分析を行った結果、図7に示すような、主成分と寄与率との関係を得たとする。ただし、この実施例では、モーションキャプチャシステム16によって取得した動作データ(合成動作データ)の主成分分析を行うため、特徴点の位置を表す変数の数(つまり、人間に取り付けたマーカの数×3、ここで×3としたのはマーカの位置が3次元の座標によって表されるからである)だけ変数が存在する、すなわち主成分は特徴点の位置を表す変数の数だけ導出可能であるが、ここでは簡単のため、5つの主成分を導出した場合について説明する。ここで、各主成分の寄与率はそれぞれ、第1主成分が57%、第2主成分が25%、第3主成分が7%、第4主成分が6%、第5主成分が5%である。この場合、第1主成分と第2主成分とによって、累積寄与率が80%以上になる。したがって、第1および第2主成分を表す軸が一般動作を表すための一般主成分軸となり、第3主成分以下(第3、第4および第5主成分)の主成分を表す軸が癖動作を表すための癖主成分軸となる。
次に、このようにして求めた一般主成分軸或いは癖主成分軸に、各人間の動作データをそれぞれ再投影することによって、各人間の或る特定動作における一般動作および癖動作をそれぞれ抽出(すなわち、特定動作を一般動作と癖動作とに分解)して、分解済動作DB18に記憶する。具体的には、ステップS15からステップS21の処理によって実行する。
ステップS15では、各人間の動作データを各主成分軸に再投影する。つまり、一般主成分軸(上述の例では、第1および第2主成分軸)、および癖主成分軸(上述の例では、第3、第4および第5主成分軸)に対して、合成前の各人間の動作データを再投影する。
そして、ステップS17で、一般主成分軸に再投影した動作データであるか否かを判断する。つまり、一般主成分軸に再投影した動作データ、或いは癖主成分軸に再投影した動作データのいずれであるかを判断する。ステップS17で“YES”の場合、すなわち一般主成分軸に再投影した動作データである場合には、ステップS19で、当該動作データを一般動作として分解済動作DB18に記憶する。一方、ステップS17で“NO”の場合、すなわち癖主成分軸に再投影した動作データである場合には、ステップS21で、当該動作データを癖動作として分解済動作DB18に記憶する。
同様の処理を他の特定動作についても行う。このようにして求めた一般動作(一般動作データ)および癖動作(癖動作データ)は、各人間および各特定動作(すなわち、これらを表す識別記号)に対応付けて、分解済動作DB18に記憶される。
なお、各成分に分解された動作データ(分解済動作データ)は、各主成分が互いに無相関であるため、足し算および引き算を容易に行うことができる。つまり、或る特定動作において、或る人間の分解済動作データと別の人間の分解済動作データとを容易に合成することができる。たとえば、図7に示した各主成分を表す軸をそれぞれ、第1主成分から順に、X軸、Y軸、Z軸、V軸およびW軸とする。つまり、一般主成分軸がX軸およびY軸であり、癖主成分軸がZ軸、V軸およびW軸である。また、或る人間Aの分解された動作データを(Ax,Ay,Az,Av,Aw)とし、別の人間Bの分解された動作データを(Bx,By,Bz,Bv,Bw)とする。このような場合に、Aの癖動作とBの一般動作とを合成するときには、(Bx,By,Az,Av,Aw)とすればよい。
このような構成のロボットシステム10は、或るイベント会場や或る会社などにおいて適用され、ロボット14は、操作者の遠隔操作に基づいて、たとえば道案内を実行したり、人間とコミュニケーションを取ったりする。
ロボット14の遠隔操作を行うときには、たとえば操作者の前に設けられるモニタ90に、GUIとして、遠隔操作画面96が表示される。遠隔操作画面96には、たとえば、図8に示すように、操作パネル98およびカメラ画像領域100が設けられる。
操作パネル98では、操作者がマウス、キーボードまたはタッチパネル等の入力装置を操作することによって、癖動作を使用する人間(すなわち、誰の癖動作をロボット14の動作に反映させるか)が選択、或いは指定される。操作パネル98には、癖選択ボタン102、たとえば「上司A」、「友人B」および「後輩C」を指定するためのボタンが設けられる。たとえば、操作者が「上司A」ボタンを選択すると、詳細は後述するように、ロボット14は、その動作の中に「上司A」の癖や特徴などを表現するようになる。「友人B」ボタン或いは「後輩C」ボタンが操作者によって選択されたときも同様に、ロボット14は、その動作の中に「友人B」或いは「後輩C」の癖などを表現するようになる。また、癖選択ボタン102は、「なし」ボタンを含み、操作者は、この「なし」ボタンを選択することによって、癖動作を使用する人間を指定しないこともできる。たとえば、「なし」ボタンが操作者によって選択されると、ロボット14は、一般成分のみの癖の無い動作(一般動作のみの動作)を実行するようになる。この癖選択ボタン102によって、操作者は、癖動作を使用する人間を指定してロボット14の遠隔操作を行うことができ、また、癖動作を使用する人間を指定しないでロボット14の遠隔操作を行うこともできる。
なお、癖選択ボタン102(操作パネル98)は、遠隔操作画面96上、すなわちモニタ90上に設ける必要は無く、モニタ90とは別の適宜な場所に、癖選択ボタン102(或いは、癖動作を使用する人間を選択するための装置)を設けることもできる。また、「なし」ボタンは必ずしも設ける必要は無く、たとえば、ロボット14の遠隔操作を行うときには、必ず誰かの癖動作を選択するようにしてもよい。また、癖選択ボタン102が選択されずにロボット14の遠隔操作が行われた(つまり、操作者によって動作コマンドが入力された)ときに、癖動作を使用する人間の指定が無いと判断するようにしてもよい。
カメラ画像領域100には、たとえば環境カメラ88からの撮影画像が表示される。たとえば図8では、ロボット14と人間とがコミュニケーションを取っている様子が示されている。ただし、カメラ画像領域100には、環境カメラ88からの撮影画像の代わりに、或いは環境カメラ88からの撮影画像と共に、ロボット14の眼カメラ60や全方位カメラ34が撮影した画像を表示するようにしてもよい。たとえば、これらの撮影画像を選択的に表示できるようにしてもよいし、これらの撮影画像を同時に表示するようにしてもよい。なお、遠隔操作画面96には、各カメラからの撮影画像だけでなく、たとえばロボット14が備える各種センサによって取得した情報を適宜表示するようにしてもよい。
また、ロボット14の周囲の音声、特にロボット14と対話している人間(対話者)の音声(発話)は、ロボット14のマイク56によって取得され、当該音声がロボット制御装置12に接続されているスピーカ92から出力される。ただし、マイク56は必ずしもロボット14に設ける必要は無く、ロボット14の周囲に設けた環境マイクによって音声を取得してもよい。なお、ロボット制御装置12に接続されているマイク94は、操作者の発話を取得し、当該発話がロボット14のスピーカ54から出力される。
これらによって、操作者は、ロボット14が配置されている場所の状況(たとえば、対話者とロボット14との位置関係、およびロボット14や対話者の状態など)、および対話者の発話内容などを確認しながら、ロボット14の遠隔操作を実行したり、操作者自身の発話を対話者に伝えたりする。
この実施例では、上述したように、ロボット14の遠隔操作(動作コマンドの入力)にモーションキャプチャシステム16を利用する。操作者は、ロボット14に実行させたい特定動作、たとえば「うなずく」、「手を振る」、および「待機」などの動作を自らが実行し、ロボット14にその動作(厳密には、それに対応する、或いは類似する動作)を再現(実行)させることによって、ロボット14の遠隔操作を行う。具体的には、図5に示すように、操作者には、操作者の動きを特徴付ける部位、すなわち特徴点にマーカ16bが取り付けられ、モーションキャプチャシステム16によってその動作が計測される。計測された操作者の動作データは、ロボット制御装置12に送信される。ロボット制御装置12のCPUは、DPマッチング等の手法を用いて、操作者の動作に該当する(一致する)上述の一般動作が分解済動作DB18に記憶されているかどうかを判断する。
操作者の動作に該当する一般動作が分解済動作DB18に記憶されていない場合には、ロボット制御装置12のCPUは、操作者がロボット14に実行させたい特定動作が分からないと判断して、操作者の動作を例外動作として処理する。たとえば、ロボット14をそのまま何もしない状態にしてもよいし、操作者の動作データをそのままロボット14の動作コマンドに変換してロボット14に送信し、その動作をロボット14に実行させてもよい。
一方、操作者の動作に該当する一般動作が分解済動作DB18に記憶されている場合には、ロボット制御装置12のCPUは、その該当した一般動作に対応する特定動作が操作者のロボット14に実行させたい動作であると判断して、その一般動作のデータを分解済動作DB18から選択して(読み出して)ロボット14の動作コマンドに変換する。なお、或る特定動作における一般動作は、分解済動作データを作成するときにデータを取った人間の人数分だけ存在し、分解済動作DBに記憶されているので、その中から、操作者の動作に一番近い一般動作が選択されることになる。
ただし、上述の癖選択ボタン102(図8参照)によって、操作者が或る人間を予め指定している場合には、該当した一般動作と指定された人間の癖動作とを合成した動作をロボット14の動作コマンドに変換する。具体的には、各人間の一般動作および癖動作は各特定動作に対応付けて分解済動作DB18に記憶されているので、ロボット制御装置12のCPUは、操作者の動作に該当する一般動作を選択すると、その一般動作に対応付けられた特定動作を特定し、その特定動作に対応付けられた癖動作のうち、指定された人間の癖動作を選択する。そして、選択した癖動作と一般動作とを合成して、その合成した動作(動作データ)をロボット14の動作コマンドに変換する。
なお、人間の動作データをロボット14の動作コマンド、すなわち関節角度制御データ(或いは、関節角度の指令値)に変換する手法には、既存の手法を用いることができる。たとえば、人間の動作データに基づく各関節位置の相関から、逆運動学によって各関節の角度を算出するとよい。ただし、この関節角軌道は、ロボット14の制約(各関節の可動範囲や関節角速度などの制限)を常に満たすとは限らないので、ロボット14の制約内に収まるように、算出した関節角軌道を適宜修正したものをロボット14の関節角度制御データ(動作コマンド)として用いる必要がある。
この関節角度制御データは、ロボット14に送信され、ロボット14(ロボット14のCPU62)は、受信した関節角制御データに基づいて自身の動作を制御し、操作者の行った特定動作を再現する。
このように、操作者の行った特定動作に該当する一般動作をロボット14に実行(再現)させることによって、ロボット14は、誰が操作しても癖の無い同様の特定動作を実行する。また、その一般動作に或る人間の癖動作を合成した動作をロボット14に実行させることによって、ロボット14は、操作者とは別の或る人間の癖(特徴)をその特定動作の中に表現するようになる。つまり、ロボット14は、或る人間の個性を表現する。
上述のようなロボットシステム10の動作をフロー図に従って説明する。具体的には、図1に示したロボット制御装置12のCPUが図9に示すフロー図に従って全体処理を実行する。図9を参照して、ロボット制御装置12のCPUは、全体処理を開始すると、ステップS31で、モニタ90に遠隔操作画面96を表示する。すなわち、上述した図8に示すような、操作パネル98およびカメラ画像領域100を含む遠隔操作画面96をモニタ90に表示する。
ステップS33では、ロボット周囲状況の受信および更新が行われる。すなわち、環境カメラ88やロボット14から画像データを受信して、遠隔操作画面96のカメラ画像領域100の表示を更新する。また、ロボット14から音声データを受信して、スピーカ92から当該音声を出力する。次に、ステップS35では、「上司A」などの人間指定を行う。具体的には、操作者が操作パネル98の癖選択ボタン102(図8参照)によって入力する人間の指定情報を検出し、その情報を記憶しておく。
次のステップS37では、操作者の動作データを受信したか否かを判断する。つまり、モーションキャプチャシステム16によって測定した、操作者がロボット14の遠隔操作を実行するために行った特定動作の動作データを受信したか否かを判断する。ステップS37で“NO”場合、すなわち操作者の動作データを受信しなかった場合は、ステップS33に戻る。一方、ステップS37で“YES”の場合、すなわち操作者の動作データを受信した場合は、ステップS39に進む。
ステップS39では、受信した動作データに該当する一般動作が有るか否かを判断する。つまり、操作者の行った特定動作に該当する一般動作が分解済動作DB18に記憶されているか否かを、DPマッチング等を用いて判断する。ステップS39で“NO”の場合、すなわち操作者の特定動作に該当する一般動作が無い場合は、ステップS41に進み、操作者の行った特定動作を例外動作として処理し、たとえば、そのままステップS51に進む。一方、ステップS39で“YES”の場合、すなわち操作者の動作に該当する一般動作が有る場合は、ステップS43に進む。
ステップS43では、癖を使用する人間の指定が有るか否かを判断する。すなわち、ステップS35で検出した人間の指定情報に基づいて、癖を使用する人間が指定されたか否かを判断する。ステップS43で“NO”の場合、すなわち癖を使用する人間の指定が無い場合は、ステップS45に進み、ステップS43で“YES”の場合、すなわち癖を使用する人間の指定が有る場合は、ステップS47に進む。
ステップS45では、一般動作のみの動作をロボット14の動作コマンドに変換する。すなわち、ステップS39で操作者の動作に該当すると判断された一般動作をロボット14の動作コマンド(関節角度制御データ)に変換する。この処理が終了するとステップS49に進む。
また、ステップS47では、一般動作に指定した人間の癖動作を加えた動作をロボット14の動作コマンドに変換する。すなわち、ステップS39で操作者の動作に該当すると判断された一般動作と操作者によって指定された人間の癖動作とを合成した特定動作をロボット14の動作コマンドに変換する。この処理が終了するとステップS49に進む。
ステップS49では、ステップS45或いはステップS47で変換した動作コマンドをロボット14に送信し、ステップS51に進む。なお、動作コマンドを受信したロボット14は、その動作コマンドに基づいて自身の動作を制御し、操作者によらず癖の無い特定動作を実行したり、操作者とは違う癖を有する特定動作を実行したりする。
また、次のステップS51では、ロボット14の遠隔操作を終了するか否かを判断する。たとえば、操作パネル98にロボット14の遠隔操作を終了するためのボタンを設けるようにして、そのボタンが操作者によって選択されたか否かによって判断するとよい。このステップS51で“YES”の場合には、ロボット14の遠隔操作を終了する。一方、ステップS51で“NO”の場合には、処理はステップS33に戻る。
この実施例によれば、人間の特定動作を一般動作と癖動作とに分解して記憶し、一般動作のみの特定動作をロボット14に実行させたり、一般動作に或る人間の癖動作を合成した特定動作をロボット14に実行させたりする。したがって、一般動作のみの特定動作をロボットに実行させる場合には、誰がロボット14を遠隔操作しても癖の無い同様の特定動作をロボット14に実行させることができる。一方、一般動作に或る人間の癖動作を合成した特定動作をロボット14に実行させる場合には、操作者とは別の人間の雰囲気をロボット14に表現させることができる。つまり、ロボット14は、人間の個性を考慮した動作を実行することができる。また、分解済動作DB18に記憶した複数の人間の中から癖動作を使用する人間を選択できるので、ロボット14は、1台で複数の人間の雰囲気(癖)を表現することもできる。このように、人間の個性をロボット14の動作に表現することによって、人間はロボット14に対して親しみを感じるであろう。また、ロボット14とコミュニケーションを取る(或いは、ロボット14にサービスを受ける)人間に応じて適切な人間の癖動作を使用するようにすれば、人間はロボット14に対してより親近感を感じるであろう。たとえば、ロボット14とコミュニケーションを取る人間が子供の場合には、或る子供の癖動作を使用して、子供らしい雰囲気をロボット14に表現させるのもよいし、その母親(或いは父親)の癖動作を使用して、母親の雰囲気をロボット14に表現させるのもよい。
なお、上述の実施例では、モーションキャプチャシステム16を利用してロボット14の遠隔操作を行ったが、これに限定されず、パネル操作などによって動作コマンドを入力し、ロボット14の遠隔操作を実行するようにしてもよい。たとえば、ロボット制御装置12に接続したモニタ90に、図10に示すような遠隔操作画面104を表示する。なお、遠隔操作画面104に表示される内容は、操作パネル106に動作選択ボタン108が設けられる以外は図8に示す遠隔操作画面96と同様であるので、共通するものには同じ参照番号を付し、重複する説明は省略する。
動作選択ボタン108は、操作者がたとえば、「うなずき」、「挨拶」および「待機動作」などの特定動作(一般動作)を指定するためのボタンを含み、操作者が各ボタンを選択すると、ロボット14は、それに応じた特定動作を実行する。なお、図示は省略するが、特定動作を指定するためのボタン(動作選択ボタン108)は、大項目と小項目とに分けて設けられてよく、たとえば、大項目が操作者によって選択されると、プルダウン式にその大項目に関連する小項目が表示されるようにしてもよい。より詳細には、操作者によって「挨拶」ボタン(大項目)が選択されると、「手を振る」や「手を挙げる」等の特定動作を指定するためのボタン(小項目)が操作パネル106にさらに表示されるようにしてもよい。
操作者は、このような動作選択ボタン108を含む操作パネル106を操作することによって、ロボット14の遠隔操作を実行することができる。たとえば、操作者はロボット14の遠隔操作を開始すると、先ず、癖選択ボタン102によって癖動作を使用する人間を指定する。次に、動作選択ボタン108によって特定動作を指定すると、ロボット制御装置12では、指定した特定動作の一般動作とそれに対応する指定した人間の癖動作とを合成した動作がロボット14の動作コマンドに変換され、その動作コマンドがロボット14に送信される。また、操作者によって癖動作を使用する人間が指定されない場合(たとえば、「なし」ボタンが選択された場合)には、操作者が動作選択ボタン108によって特定動作を指定すると、ロボット制御装置12では、指定した特定動作の一般動作のみの動作がロボット14の動作コマンドに変換され、その動作コマンドがロボット14に送信される。なお、癖選択ボタン102による人間の指定は、別の癖選択ボタン102が指定されるまで有効であるようにしてもよいし、動作選択ボタン108による特定動作の指定ごとに癖選択ボタン102による人間の指定を行うようにしてもよい。このように、パネル操作などによっても、モーションキャプチャシステム16を用いる場合と同様に、ロボット14の身体動作の中に人間の個性(癖や雰囲気)を表現させることができる。
また、モーションキャプチャシステム16とパネル操作とを併用して、ロボット14の動作コマンドを入力することもできる。たとえば、口元或いは目元などの微妙な動き(表現)は、モーションキャプチャシステム16を利用して遠隔操作し、「挨拶」や「うなずく」等の単純な特定動作は、パネル操作によって遠隔操作するようにしてもよい。
また、上述の各実施例では、台車20に設けられた車輪22によって移動するロボット14(本件出願人等が提案し、販売されているコミュニケーションロボット、商品名「Robovie−R ver.2」)にロボットシステム10を適用したが、これに限定されず、適宜なロボットにロボットシステム10を適用することができる。たとえば、2足歩行ロボットに適用することもできるし、或る人間に酷似した姿形を有する人型ロボットであるアンドロイドに適用することもできる。たとえば、ロボットシステム10を2足歩行ロボットに適用する場合には、股関節や膝関節などを使用する特定動作、すなわち「歩く」や「ボールを蹴る」等の上述のロボット14では実行できない特定動作において、人間の個性を表現できる。また、たとえば、ロボットシステム10をアンドロイドに適用する場合には、そのアンドロイドの姿形のモデルとなった人間の癖動作を使用すれば、誰がアンドロイドを操作しても、アンドロイドはそのモデルとなった人間の個性や雰囲気をその動作の中に表現できる。もちろん、アンドロイドを用いる場合でも、そのモデルとなった人間以外の癖動作を使用することもできる。
さらに、上述の各実施例では、遠隔操作によってロボット14の動作を制御したが、自律制御によって自身の動作を制御する自律ロボットに、ロボットシステム10を適用することもできる。この場合には、癖動作を使用する人間を適宜選択するようにして、その癖動作を合成した特定動作を行うようにするとよい。たとえば、癖動作を使用する人間をランダムに選択するようにしてもよいし、コミュニケーションを取る人間を判別できるようにして、その判別した人間に適した人間を、癖動作を使用する人間として選択するようにしてもよい。また、自律ロボット或いはその周囲に、癖動作を使用する人間を選択するためのボタン等を設け、操作者、或いは自律ロボットがコミュニケーションを取る人間などのボタン操作に応じて癖動作を使用する人間を選択するようにしてもよい。
また、上述の各実施例では、分解済動作DB18を作成するときに、累積寄与率が80%以上になるまでの主成分を一般動作を表すための一般主成分として採用したが、これに限定されず、閾値となる累積寄与率の値は、適宜設定され得る(たとえば、70%や90%に設定してもよい)。また、累積寄与率の代わりに、各寄与率の値に基づいて各主成分を一般主成分と癖主成分とに分けてもかまわない。たとえば、10%以上の寄与率を有する主成分を一般主成分として採用し、それ以外(寄与率が10%未満)の主成分を癖主成分とすることもできる。ただし、一般動作のみによって、或る特定動作を実行(表現)できることが必要である、すなわち、実際のロボット14に一般動作のみに基づく動作コマンド(各関節角度指令値のデータ)を与え、ロボット14が実際にその動作を実行できることが必要であるので、その実行可能な範囲で一般主成分を選択(採用)する必要がある。
また、一般主成分以外の全ての主成分を癖動作を表すための癖主成分として採用したが、これに限定されず、たとえば、寄与率が0%或いはほぼ0%の主成分は採用せず、或る程度(たとえば、1−2%)以上の寄与率を持つ主成分のみを癖主成分として採用するようにしてもよい。
また、上述の各実施例では、モーションキャプチャシステム16によって取得したデータ(特徴点の3次元位置座標の時系列データ)を特定動作に関する動作データとして主成分分析を行ったが、これに限定されず、適宜なデータを特定動作に関する動作データとして主成分分析を行ってもよい。言い換えると、特定動作を表すためのデータに共通性が有る場合には、主成分分析に基づいて一般主成分を求めることが可能であり、その特定動作を一般動作と癖動作とに分解することができる。
たとえば、モーションキャプチャシステム16によって取得したデータをロボット14の関節角度指令値に変換した後に、その関節角度指令値のデータを用いて主成分分析を行い、その結果得た分解済動作情報を分解済動作DB18に記憶し、ロボット14の制御に利用するようにしてもよい。モーションキャプチャシステム16を利用した動作コマンドの入力が実行可能なロボットシステム10において、この分解済動作DB18を適用する場合には、操作者の動作データをロボット14の関節角度指令値に変換してから分解済動作DB18に記憶したデータと照合する必要がある。ただし、ロボット14の動作コマンドへの変換処理(図9に示すS45或いはS47)は不要となる。また、ボタン操作によって動作コマンドが入力可能なロボットシステム10では、ロボット14の関節角度指令値に変換したデータについての分解済動作DB18を構築しておけば、ロボット制御装置12におけるロボット14の動作コマンドへの変換処理を省略することができるので、ロボット制御装置12の負担を減らすことができる。なお、被験体の特徴点の3次元位置座標の時系列データについての分解済動作DB18を構築した場合には、ロボット制御装置12において各ロボット14に応じた動作コマンドへの変換処理を実行することによって、様々なロボット14のロボットシステム10に応用することができる。
また、上述の各実施例では、人間を被験体(モデル)として、その特定動作を分解して記憶し、それを人型ロボットに利用したが、これに限定されない。たとえば、犬や猫などの動物を被験体として、その特定動作(たとえば犬を被験体とする場合には、「お手」や「おすわり」等の特定動作)を分解して記憶し、それを犬型や猫型などの動物型ロボットに利用することもできる。また、人間を被験体としてその特定動作を分解して記憶し、それを動物型ロボットに利用することもできるし、動物を被験体としてその特定動作を分解して記憶し、それを人型ロボットに利用することもできる。