図1を参照して、この実施例のコミュニケーションロボット改良システム10は、たとえば無線LANやインターネットなどのネットワーク100を介して接続された、コミュニケーションロボット12、操作端末14および開発端末16を含む。
コミュニケーションロボット12(以下、単に「ロボット」ということがある。)は、主として人間のようなコミュニケーションの対象とコミュニケーションすることを目的とした相互作用指向のもので、音声によって人間と対話することが可能である。また、音声に代えて、或いは音声とともに、身振り手振りのような身体動作を用いてコミュニケーション行動を実行することもできる。ロボット12は、たとえば、受付ロボットや道案内ロボットなどであり、或るイベント会場や会社の受付などの様々な場所および状況に配置される。ロボット12は、通常は自律制御によって受付や道案内などの役割を果たすが、自律制御プログラムに基づく自律的コミュニケーション行動では対応困難な状況になった場合などには、操作端末14に対して遠隔制御の要求を送信する(オペレータを呼び出す)。そして、ロボット12は、呼び出したオペレータによって操作端末14に入力された操作コマンドに従ったコミュニケーション行動(身体動作や発話)を実行する。つまり、ロボット12は、自律制御プログラムによる自律制御とオペレータによる遠隔制御とを組み合わせて自身の動作を制御する。なお、図1には、ロボット12が応対する人間Aを1人だけ示してあるが、複数でもかまわない。
図2は、この実施例のロボット12の外観を示す正面図であり、この図2を参照して、ロボット12のハードウェアの構成について説明する。
図2に示すように、ロボット12は台車20を含み、この台車20の下面にはロボット12を自律移動させる車輪22が設けられる。車輪22は車輪モータ24(図3参照)によって駆動され、台車20すなわちロボット12を前後左右任意の方向に動かすことができる。このように、ロボット12は配置された環境内を移動可能なものであるが、場合によっては環境内の所定位置に固定的に設けられてもよい。
なお、図2においては省略するが、台車20の前面には、衝突センサ26(図3参照)が取り付けられ、この衝突センサ26は台車20への人や他の障害物の接触を検知する。つまり、ロボット12の移動中に障害物との接触を検知すると、直ちに車輪22の駆動を停止してロボット12の移動を急停止させる。
また、この実施例では、ロボット12の背の高さは、人、特に子供に威圧感を与えることのないように、100cm程度とされる。ただし、この背の高さは変更可能である。
台車20の上には、多角形柱のセンサ取付パネル28が設けられ、このセンサ取付パネル28の各面には、超音波距離センサ30が取り付けられる。この超音波距離センサ30は、センサ取付パネル28すなわちロボット12の周囲の主として人との距離を計測するものである。
また、台車20の上には、さらに、その下部がセンサ取付パネル28に囲まれて、ロボット12の胴体が直立するように設けられる。この胴体は、下部胴体32と上部胴体34とによって構成され、下部胴体32および上部胴体34は、連結部36によって互いに連結される。図示は省略するが、連結部36には昇降機構が内蔵されていて、この昇降機構を用いることによって、上部胴体34の高さすなわちロボット12の背の高さを変化させることができる。昇降機構は、後述するように、腰モータ38(図3参照)によって駆動される。
なお、上述したロボット12の背の高さは、上部胴体34をそれの最下位置にしたときのものである。したがって、ロボット12の背の高さは、100cm以上にすることも可能である。
上部胴体34の正面側のほぼ中央には、1つの全方位カメラ40と1つのマイク42とが設けられる。全方位カメラ40は、ロボット12の周囲を撮影するものであり、後述する眼カメラ44とは区別される。この全方位カメラ40としては、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。また、マイク42は、周囲の音、とりわけコミュニケーション対象である人の声を取り込む。なお、これら全方位カメラ40およびマイク42の設置位置は上部胴体34に限られず適宜変更され得る。
上部胴体34の両肩には、それぞれ、肩関節46Rおよび46Lによって、上腕48Rおよび48Lが設けられる。肩関節46Rおよび46Lは、それぞれ、3軸の自由度を有する。すなわち、肩関節46Rは、X軸、Y軸およびZ軸のそれぞれの軸廻りにおいて上腕48Rの角度を制御できる。Y軸は、上腕48Rの長手方向(または軸)に平行な軸であり、X軸およびZ軸は、そのY軸に対して、それぞれ異なる方向から直交する軸である。他方、肩関節46Lは、A軸、B軸およびC軸のそれぞれの軸廻りにおいて上腕48Lの角度を制御できる。B軸は、上腕48Lの長手方向(または軸)に平行な軸であり、A軸およびC軸は、そのB軸に対して、それぞれ異なる方向から直交する軸である。
また、上腕48Rおよび48Lのそれぞれの先端には、肘関節50Rおよび50Lを介して、前腕52Rおよび52Lが設けられる。肘関節50Rおよび50Lは、それぞれ、W軸およびD軸の軸廻りにおいて、前腕52Rおよび52Lの角度を制御できる。
なお、上腕48Rおよび48Lならびに前腕52Rおよび52Lの変位を制御するX軸,Y軸,Z軸,W軸およびA軸,B軸,C軸,D軸では、それぞれ、「0度」がホームポジションであり、このホームポジションでは、図2に示すように、上腕48Rおよび48Lならびに前腕52Rおよび52Lは下方に向けられる。
また、図示は省略するが、上部胴体34の肩関節46Rおよび46Lを含む肩の部分や上述の上腕48Rおよび48Lならびに前腕52Rおよび52Lには、それぞれ、タッチセンサ(図3で包括的に示す。:54)が設けられていて、これらのタッチセンサ54は、人がロボット12の当該各部位に触れたかどうかを検知する。
前腕52Rおよび52Lのそれぞれの先端には、手に相当する球体56Rおよび56Lがそれぞれ固定的に設けられる。ただし、指や掌の機能が必要な場合には、人の手の形をした「手」を用いることも可能である。
上部胴体34の中央上方には、首関節58を介して頭部60が設けられる。首関節58は、3軸の自由度を有し、S軸、T軸およびU軸の各軸廻りに角度制御可能である。S軸は首から真上(鉛直上向き)に向かう軸であり、T軸およびU軸は、それぞれ、そのS軸に対して異なる方向で直交する軸である。頭部60には、人の口に相当する位置に、スピーカ62が設けられる。スピーカ62は、ロボット12が、それの周辺の人に対して音声ないし音によってコミュニケーションを取るために用いられる。ただし、スピーカ62は、ロボット12の他の部位、たとえば胴体などに設けられてもよい。
また、頭部60には、目に相当する位置に眼球部64Rおよび64Lが設けられる。眼球部64Rおよび64Lは、それぞれ眼カメラ44Rおよび44Lを含む。以下、右の眼球部64Rと左の眼球部64Lとをまとめて眼球部64ということがあり、また、右の眼カメラ44Rと左の眼カメラ44Lとをまとめて眼カメラ44ということもある。
眼カメラ44は、ロボット12に接近した人の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。眼カメラ44としては、上述した全方位カメラ40と同様のカメラを用いることができる。
たとえば、眼カメラ44は眼球部64内に固定され、眼球部64は眼球支持部(図示せず)を介して頭部60内の所定位置に取り付けられる。眼球支持部は、2軸の自由度を有し、α軸およびβ軸の各軸廻りに角度制御可能である。α軸およびβ軸は頭部60に対して設けられる軸であり、α軸は頭部60の上へ向かう方向の軸であり、β軸はα軸に直交しかつ頭部60の正面側(顔)が向く方向に直交する方向の軸である。この実施例では、頭部60がホームポジションにあるとき、α軸はS軸と平行であり、β軸はU軸と平行であるように設定される。このような頭部60において、眼球支持部がα軸およびβ軸の各軸廻りに回転されることによって、眼球部64ないし眼カメラ44の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。
なお、眼カメラ44の変位を制御するα軸およびβ軸では、「0度」がホームポジションであり、このホームポジションでは、図2に示すように、眼カメラ44のカメラ軸は頭部60の正面側(顔)が向く方向に向けられ、視線は正視状態となる。
図3はロボット12の電気的な構成を示すブロック図であり、この図3を参照して、ロボット12は、全体を制御するCPU66を含む。CPU66は、マイクロコンピュータ或いはプロセサとも呼ばれ、バス68を介して、メモリ70、モータ制御ボード72、センサ入力/出力ボード74および音声入力/出力ボード76に接続される。
メモリ70は、図示は省略するが、ROMやHDDおよびRAMを含み、ROMやHDDにはロボット12の動作を制御するためのプログラムやデータなどが予め記憶される。プログラムには、たとえば、各センサ26,30,40,42,44,54,92などによる検知情報を検出するための検出プログラム、外部コンピュータたとえば操作端末14および開発端末16との間で必要なデータを送受信するための通信プログラム、自律制御によって自身の動作を制御するための自律制御プログラムおよび受信した操作コマンド情報に基づいて自身の動作を制御するための遠隔制御プログラムなどがある。お辞儀などの個々のコミュニケーション行動は、モジュール化された各行動プログラムによって実現され、メモリ70には複数の行動プログラムが各識別情報(操作コマンド)に対応付けて記憶されてよい。CPU66は複数のルールと現在の状況に基づいて次の行動を決定していくことでコミュニケーション行動を自律制御する。また、メモリ70には各行動を実行する際に発生すべき音声または声の音声データ(音声合成データ)および所定の身振りを提示するための角度データなども記憶される。また、RAMはワークメモリやバッファメモリとして用いられる。
また、メモリ70には、図示は省略するが、操作端末14に対して遠隔制御の要求を行うか否かを判定するための呼出条件が記憶されている。呼出条件は、自律的コミュニケーション行動では対応できなくなったことを示す条件であり、たとえば、トラブルが生じたり、高度な言語理解が必要な場合などより細やかな対応(コミュニケーション行動)が必要な状況になったりしたことを示す条件であってよい。
また、呼出条件は、各種センサの出力情報に基づいて判定される条件であってよい。たとえば、条件の1つは、音声認識で所定のキーワード(「責任者を呼んで」など)が検出されたことであってよい。キーワードとしては、ロボット12が相手の意図を分かっていないことを伝えるワード、たとえば「違う」、「そうじゃないんだけど」もしくは「わからないかなあ」も考えられる。また、他の条件は、超音波距離センサ32で取得された距離が1m以内である状態が5分以上になったこと(すなわち、人がロボット12と長い間対話している状態)であってよい。さらにまた、他の条件は、特定のIDの無線タグを検出したこと(たとえばVIPとして登録された人が現れたこと)であってもよい。なお、呼出条件としては、適宜、様々な条件が設定され得る。たとえば、人の顔表情認識で怒りが検出されたこと、顔同定機能で特定の人を検出したことが考えられる。なお、他の実施例では、呼出条件として、ロボット12または周囲の環境に設けられた他のセンサの出力に基づく条件が設定されてよい。たとえば、オペレータ呼出ボタンがロボット12または周囲の環境に設けられてよい。また、体表に設けた触覚センサ(たとえば皮膚センサ)で殴られた場合の反応が検出されたこと、赤外センサで長時間連続して人が検知されたこと、環境の混雑センサで一定以上の混雑度が検出されたことなども考えられる。
モータ制御ボード72は、たとえばDSPで構成され、各腕や首関節58および眼球部64などの各軸モータの駆動を制御する。すなわち、モータ制御ボード72は、CPU66からの制御データを受け、右眼球部64Rのα軸およびβ軸のそれぞれの角度を制御する2つのモータ(図3では、まとめて「右眼球モータ」と示す。)78の回転角度を制御する。同様に、モータ制御ボード72は、CPU66からの制御データを受け、左眼球部64Lのα軸およびβ軸のそれぞれの角度を制御する2つのモータ(図3では、まとめて「左眼球モータ」と示す。)80の回転角度を制御する。
また、モータ制御ボード72は、CPU66からの制御データを受け、右肩関節46RのX軸、Y軸およびZ軸のそれぞれの角度を制御する3つのモータと右肘関節50RのW軸の角度を制御する1つのモータとの計4つのモータ(図3では、まとめて「右腕モータ」と示す。)82の回転角度を調節する。同様に、モータ制御ボード72は、CPU66からの制御データを受け、左肩関節46LのA軸、B軸およびC軸のそれぞれの角度を制御する3つのモータと左肘関節50LのD軸の角度を制御する1つのモータとの計4つのモータ(図3では、まとめて「左腕モータ」と示す。)84の回転角度を調整する。
さらに、モータ制御ボード72は、CPU66からの制御データを受け、首関節58のS軸、T軸およびU軸のそれぞれの角度を制御する3つのモータ(図3では、まとめて「頭部モータ」と示す。)86の回転角度を制御する。さらにまた、モータ制御ボード72は、CPU66からの制御データを受け、腰モータ38および車輪22を駆動する2つのモータ(図3では、まとめて「車輪モータ」と示す。)24の回転角度を制御する。
なお、この実施例では、車輪モータ24を除くモータは、制御を簡素化するために、ステッピングモータ或いはパルスモータを用いるようにしてある。ただし、車輪モータ24と同様に、直流モータを用いるようにしてもよい。
センサ入力/出力ボード74もまた、同様に、DSPで構成され、各センサからの信号を取り込んでCPU66に与える。すなわち、超音波距離センサ30のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード74を通してCPU66に入力される。また、全方位カメラ40からの映像信号が、必要に応じてこのセンサ入力/出力ボード74で所定の処理を施された後、CPU66に入力される。眼カメラ44からの映像信号も、同様にして、CPU66に入力される。また、上述した複数のタッチセンサ(図3では、まとめて「タッチセンサ54」と示す。)、および衝突センサ26からの信号がセンサ入力/出力ボード74を介してCPU66に与えられる。
音声入力/出力ボード76もまた、同様に、DSPで構成され、CPU66から与えられる音声合成データに従った音声または声がスピーカ62から出力される。また、マイク42からの音声入力が、音声入力/出力ボード76を介してCPU66に取り込まれる。
また、CPU66は、バス68を介して通信LANボード88および無線通信装置90に接続される。CPU66は、通信LANボード88および無線通信装置90を用いて、たとえば無線LANアクセスポイントを介して無線回線、電話回線、LAN,インターネットのようなネットワーク100に通信接続する。通信LANボード88は、DSPで構成され、CPU66から送られる送信データを無線通信装置90に与え、無線通信装置90からネットワーク100を介して操作端末14もしくは開発端末16に送信する。具体的には、通信LANボード88は、全方位カメラ40および眼カメラ44によって検知した視覚情報やマイク42によって検知した聴覚情報などの検知情報を操作端末14に送信する。また、通信LANボード88は、無線通信装置90を介して操作端末14からの操作コマンドを受信し、受信した操作コマンドをCPU66に与える。なお、ロボット12が移動不可能に設置されている場合、ネットワーク100へは有線で接続されてもよい。また、ロボット12と操作端末14とが無線により直接通信するように構成してもよい。
また、CPU66には無線タグ読取装置92が接続される。無線タグ読取装置92は、無線タグ(RFIDタグ)から送信される識別情報の重畳された電波をアンテナを介して受信し、電波信号を増幅し、当該電波信号から識別情報を分離し、当該識別情報を復調(デコード)してCPU66に与える。無線タグはイベント会場や会社などにいる人に装着されており、無線タグ読取装置92は通信可能範囲内の無線タグを検出する。なお、無線タグはアクティブ型であってもよいし、無線タグ読取装置92から発信される電波に応じて駆動されるパッシブ型であってもよい。
図1に戻って、
操作端末14は、コンピュータであり、図示は省略するがCPUを含み、CPUには、メモリ、データベース、表示装置、入力装置、スピーカおよび通信装置などが接続される。操作端末14は、通信装置を介しネットワーク100に有線または無線で接続されている。
操作端末14のメモリには、当該操作端末14の動作を制御するためのプログラムおよび必要なデータが記憶される。プログラムには、たとえば、ロボット12および開発端末16との間でデータを送受信するための通信プログラム、入力装置に入力された操作コマンドを検出するための検出プログラムおよび表示装置に画像などを表示するための表示プログラムなどがある。
操作端末14のデータベースには、ロボット12に対して行われた遠隔操作に関する情報を示すロボット操作情報が記憶される。ロボット操作情報には、時刻に対応付けてロボット12に対して行われた操作に関する情報が登録されており、少なくともオペレータによって操作端末14に入力された操作コマンドの履歴とロボット12のセンサによって検出された周囲情報(センサ情報)の履歴とが含まれる。また、ロボット操作情報には、ロボット12の位置や対話相手などを含むロボット12に関する情報やオペレータに関する情報などが含まれてよい。さらに、データベースには、図示は省略するが、イベント会場や会社などに存在する人間の情報(たとえば、無線タグの識別情報、使用言語や行動履歴)なども記憶されてよい。
具体例としては、ロボット操作情報テーブルには、図4に示すように、時刻に対応付けて、オペレータ名、位置、状態、距離センサおよび後述する操作コマンドの情報などが登録される。時刻を示す情報としては、一定時間毎(たとえば、1秒毎)の時刻(たとえば、t0,t1,・・・,tp,・・・)が登録される。オペレータ名を示す情報としては、現在ロボット12の遠隔操作を担当しているオペレータ名(もしくは、オペレータの識別情報)が登録される(たとえば、op1)。位置を示す情報としては、当該ロボット12が配置されている現在位置の情報が登録される。具体的には、当該ロボット12の配置された建物や会場などの場所を示す情報(たとえば、ATR受付)、および当該場所においてロボット12が現在存在している位置の座標(たとえば、120,140)が登録される。状態を示す情報としては、ロボット12の現在の状態が登録される。具体的には、対話者が存在するか否かや、対話者が存在する場合は対話者との位置関係(たとえば、対話者正面)などが登録される。距離センサを示す情報としては、超音波距離センサ30で取得した対象物(対話者)との距離(たとえば、100cm)が登録される。操作コマンドを示す情報としては、オペレータによってたとえば時刻tpから単位時間経過するまで(次の時刻tp+1になるまで)の間に入力された操作コマンドが登録される。具体的には、「お辞儀」や「前進」などの情報が登録される。また、当該時刻に操作コマンドの入力がない場合は、「なし」と登録される。また、図4には示していないが、ロボット12が備える各センサ(タッチセンサ54や衝突センサ26など)から取得した各情報も適宜登録される。なお、ロボット12がさらに他のセンサ(たとえば、皮膚センサや赤外センサ)を備えるようにした場合も、各センサからの取得情報が適宜登録される。
操作端末14は、ロボット12との通信によって、ロボット12の現在位置座標、状態およびセンサ情報などの情報をたとえば一定時間毎(たとえば、1秒毎)に取得して、このロボット操作情報テーブルを生成し更新する。
たとえば、図4に示すロボット操作情報からは、時刻「t0」には、オペレータ「op1」がロボット12の遠隔操作を担当しており、ロボット12の配置されている場所は「ATR受付」で、現在位置の座標は「120,140」であるということが分かる。また、ロボット12には対話者が存在し、対話者との位置関係は「対話者正面」であり、その対話者との距離は「100cm」である。さらに、当該時刻には、「お辞儀」という操作コマンドがオペレータによって入力されている。また、時刻「tp」、「tp+15」および「tp+30」には、続いてオペレータ「op1」がロボット12の遠隔操作を担当しており、ロボット12が配置されている場所は「ATR受付」で、対話者が存在し、対話者との位置関係は「対話者正面」であるということが分かる。また、時刻「tp」には、ロボット12の現在の位置座標は「120,140」、対話者との距離は「100cm」であり、「前進」という操作コマンドが入力されている。また、時刻「tp+15」には、ロボット12の現在の位置座標は「130,140」、対話者との距離は「90cm」であり、「前進」という操作コマンドが入力されている。さらに、時刻「tp+30」には、ロボット12の現在の位置座標は「140,140」、対話者との距離は「80cm」であり、操作コマンドの入力は「なし」である。
操作端末14の表示装置には、GUIとして、遠隔操作画面110が表示される。遠隔操作画面110では、図5に示すように、たとえば、ロボットカメラ画像112、ロボット情報114、操作パネル116および依頼パネル118が表示される。
ロボットカメラ画像112には、ロボット12から受信した眼カメラ44の撮影画像が表示される。これによって、オペレータは、ロボット12の眼カメラ44が捕らえている画像、たとえば対話している人間をリアルタイムで確認しながらロボット12の遠隔操作を実行する。なお、ロボットカメラ画像112には、眼カメラ44による撮影画像の代わりに、ロボット12の全方位カメラ40によって撮影した画像を表示してもよいし、ロボット12の周囲に設けた天井カメラからの画像を表示するようにしてもよい。また、カメラ画像の表示は1つに限定されず、複数のカメラ画像を表示するようにしてもかまわない。
ロボット情報114には、ロボット12自体の情報、当該ロボット12の状況および対話相手の情報などが表示される。具体的には、当該ロボット12の配置された場所(施設、会場、会社など)、名前(もしくは識別情報)、配置された場所の地図および対話している人間の情報などが表示される。地図には、ロボット12および対話相手を示すアイコンが各存在位置に表示される。これによって、オペレータは、ロボット12が設置場所のどこに存在しているのか、対話相手がロボット12に対してどこに存在しているのかなどを把握する。なお、操作端末14は、地図情報を予め記憶しておいてもよいし、ロボット12からセンサ情報とともに受信するようにしてもよい。ロボット12および対話相手の位置は、たとえばロボット12から一定時間ごとに操作端末14に送信される。ロボット12は初期の配置位置および向きを記憶しているので、自分の現在の位置および向きを常に把握している。また、ロボット12は、超音波距離センサ30の出力情報と自分の位置などから対話相手のおよその位置を推定できる。また、地図には、その場所に存在する対話相手以外の人間を示すアイコンも表示されてよい。
なお、ロボット12の配置場所における人間の位置情報は、周囲に設置された天井カメラ、無線タグ読取装置などのような環境のセンサを用いて、当該環境のセンサと接続された他のコンピュータで検出してもよく、当該他のコンピュータからロボット12に与え、ロボット12から操作端末14に送信されてもよい。なお、環境のセンサによってロボット12の位置なども検出可能であるので、ロボット12は、自分の位置および向きなどの情報も、人間の位置情報などとともに上記他のコンピュータから取得してもよい。
また、対話している人間の情報としては、名前、所属(たとえば、受付の人間や来客)、来訪回数、前回の来訪日、今回の来訪後の経過時間およびロボット12が当該相手に既に行ったコミュニケーション行動の履歴などが表示される。なお、対話している人間の情報は、上述したように、データベースに記憶されているので、たとえば、ロボット12から対話相手の識別情報(ID)を受信すると、この識別情報に基づいて当該人間の行動履歴などの情報が読み出され、ロボット情報114に表示される。これによって、オペレータは、ロボット12の周囲の状況や対話している人間の情報などをリアルタイムで確認しながらロボット12の遠隔操作を実行する。なお、これらオペレータに提示される情報は一例であり、ロボット情報114には適宜な情報が表示される。
操作パネル116では、オペレータが入力装置を操作することにより、ロボット12の動作を制御する操作コマンドが入力される。たとえば、操作パネル116には、移動を指示するためのボタン、コミュニケーション行動を指示するためのボタンおよび遠隔操作の終了を指示するためのボタンなどが設けられる。具体的には、「前進」ボタンは、ロボット12を前進させるためのボタンである。オペレータが「前進」ボタンを選択すると、ロボット12は、たとえば一定距離だけ前進する。同様に、「後退」ボタンはロボット12を後退させ、「右」ボタンはロボット12を右旋回させ、「左」ボタンはロボット12を左旋回させる。また、「お辞儀」ボタンは、ロボット12にお辞儀というコミュニケーション行動を実行させるためのボタンである。オペレータが「お辞儀」ボタンを選択すると、ロボット12は、首関節58を制御して頭部60を下に向け、すなわち、お辞儀をする。また、「右指差し」のボタンは、ロボット12に右指差しというコミュニケーション行動を実行させるためのボタンである。オペレータが「右指差し」のボタンを選択すると、ロボット12は、右肩関節46Rおよび右肘関節50Rを制御して腕を前方に上げる。同様にして、操作パネル116に表示されたボタンをオペレータが選択ことにより、ロボット12に、うなずき、左指差しなどの身振りや発話を含む所定のコミュニケーション行動を実行させることができる。また、「終了」ボタンは、オペレータによる遠隔制御を終了させるためのボタンである。オペレータが「終了」のボタンを選択すると、ロボット12は、自律制御プログラムに基づいて自身の動作を制御するようになる。なお、操作パネル116に設けられるこれらのボタンは例示であり、様々な操作コマンドに対応したボタンが適宜設けられる。
依頼パネル118では、オペレータが入力装置を操作することによって、開発端末16(プログラマ)に対する自律制御プログラムの作成依頼が選択され、またはコメントが入力される。依頼パネル118には、たとえば、自律制御プログラムの作成を依頼するプログラム作成依頼ボタンおよびコメントを記述するコメント記述欄が設けられる。
具体的には、プログラム作成依頼ボタンが選択されると、プログラム作成ボタンが選択された直前の所定時間(たとえば、60秒)にデータベースに記憶されたロボット操作情報がプログラム化情報として自動的に取得され、当該プログラム化情報を含む自律制御プログラムの作成依頼が、開発端末16に対してネットワーク100を介して送信される。ここで、プログラム化情報とは、ロボット12がオペレータの遠隔操作によって実行している動作を自律制御プログラム化するために利用される情報をいう。また、コメント記述欄には、オペレータによって、プログラマ(開発者)に対する補足説明、たとえば、自律制御プログラムの作成に役立つ情報が入力される。プログラム作成依頼ボタンが選択されたときに、コメント記述欄にコメントが入力されていると、プログラム化情報および当該コメントを含む作成依頼が開発端末16に送信される。
操作端末14の入力装置は、マウス、キーボードまたはタッチパネルなどであり、オペレータは入力装置を操作することによってロボット12を遠隔操作するための操作コマンドやコメントを遠隔操作画面110で入力することができる。スピーカは、ロボット12のマイク42が取得した聴覚情報を出力する。
なお、操作端末14は、ロボット12と離れた場所、たとえばオフィスに配置されるが、たとえばオペレータによって持ち運び可能もしくは携帯可能に形成されてもよいし、また、或る場所に固定的に設けられてもよい。
開発端末16は、コンピュータであり、図示は省略するがCPUを含み、CPUには、メモリ、表示装置、入力装置および通信装置などが接続される。開発端末16は、通信装置を介しネットワーク100に有線または無線で接続されている。
開発端末16のメモリには、当該開発端末16の動作を制御するためのプログラムおよび必要なデータが記憶される。プログラムには、たとえば、ロボット12および操作端末14との間でデータを送受信するための通信プログラムおよび表示装置にプログラム化情報などを表示するための表示プログラムが含まれる。
開発端末16の表示装置には、図示は省略するが、たとえば、プログラムを作成するプログラム作成画面や受信したプログラム化情報が表示される。プログラマは、入力装置を操作することによって、プログラムを作成する。
開発端末16の通信装置は、たとえば、操作端末14から新規自律制御プログラムの作成依頼を受信し、作成した新規自律制御プログラムをロボット12に対して送信する。
このコミュニケーションロボット改良システム10では、上述したように、ロボット12は、通常、自律制御によって受付や道案内などのコミュニケーション行動を伴う動作を行う。
ロボット12が自律制御によって実行するコミュニケーション行動(自律的コミュニケーション行動)には、たとえば、人間に肩を触れられると、「なーに」と発話して手を振るというようなものがある。具体的には、ロボット12のCPU66は、タッチセンサ54からの、肩部のタッチセンサ54が“ON”の状態になったことを表す信号をセンサ入力/出力ボードを介して読み込むと、メモリ70から音声入力/出力ボード76へ音声データを送信し、スピーカ62から合成音声「なーに」を出力する。また、CPU66は、メモリ70から角度データをモータ制御ボード72へ送信し、手を振るように、腕(図2に示す、A,B,C,D,X,Y,Z,W軸)の角度を制御する。また、コミュニケーション行動には、たとえば、人間に頭を触れられると、「わーい」と発話して首を振るというものや、人間とのコミュニケーションがない状態が続くと、「暇だな」と発話して首を振る、もしくは、「触ってね」と発話して手を差し出すというものがあり、CPU66は、上述したものと同様にこれらの動作を制御する。なお、これらのコミュニケーション行動は例示であり、ロボット12は、これらの他にも様々なコミュニケーション行動を行うことができる。ロボット12は、上述のように、通常の、単純で定型的なコミュニケーション行動については自律制御によって行う。
しかし、自律的コミュニケーション行動では対応することが難しい状況や事態になった場合(上述した呼出条件を満たす場合)には、ロボット12は、遠隔制御の要求を操作端末14に対して送信する。
操作端末14では、ロボット12からの呼出要求を受信すると、表示装置に、図5に示すような遠隔操作画面110が表示され、オペレータは、ロボット12の遠隔操作を開始する。ロボット12の遠隔操作は、上述したように、オペレータが操作端末14の入力装置を操作することによって行われる。オペレータは、たとえば、図5に示すような操作パネル116に設けられた「前進」、「後退」、「右」、「左」などの移動を指示するための各ボタンを選択することによってロボット12の移動を制御する。また、たとえば、「お辞儀」、「うなずき」、「右指差し」、「左指差し」などのコミュニケーション行動を指示するための各ボタンを選択することによってロボット12にコミュニケーション行動を実行させる。操作端末14は、入力データとボタン配置データとに基づいて操作パネル116でのボタン選択を検出すると、選択されたボタンに対応する操作コマンドを特定し、当該操作コマンド情報をネットワーク100を介してロボット12に送信する。ロボット12は、操作端末14から操作コマンド情報を受信すると、当該操作コマンド情報に基づいて自身の動作を制御する。具体的には、ロボット12のCPU66は、操作コマンド情報に対応するコミュニケーション行動のプログラムに従って処理を実行する。これによって、ロボット12は所定の身振りを提示し、所定の音声を出力し、或いは移動もしくは旋回する。
また、操作端末14には、ロボット12から周囲情報(センサ情報)などが一定時間毎(たとえば、1秒毎)に送信され、当該周囲情報は、操作端末14のデータベースに記録される。さらに、オペレータによって操作コマンドが入力されたときは、当該操作コマンド情報も操作端末14のデータベースに記録される。このようにして、たとえば、図4に示したようなロボット操作情報が操作端末14のデータベースに記録されていく。なお、上述したように、ロボット操作情報には、当該周囲情報および操作コマンド情報の他にも、時刻に対応付けて、ロボット12の位置情報やオペレータ情報などのロボットの操作に関する情報が適宜記憶される。
オペレータは、上述したように、必要に応じてロボット12の遠隔操作を行う。しかし、現在遠隔操作で行っている動作(コミュニケーション行動)の中にも、自律制御プログラムを作成すれば、ロボット12の自律制御だけで対応できるような定型的なものが存在する場合がある。このような場合には、操作端末14から開発端末16に対して自律制御プログラムの作成依頼が送信される。たとえば、オペレータは、実際に遠隔操作を行っているときに、現在入力した操作コマンド、あるいは操作コマンドの一連の入力(操作コマンド系列)が、ロボット12から或るセンサ情報を受信したときに必ず入力する操作コマンド、あるいは或る状況で必ず行う一連の入力であると気付く場合がある。このような場合には、オペレータは、上述した、遠隔操作画面110に表示される依頼パネル118のプログラム作成依頼ボタンを選択する。すると、操作端末14のCPUは、データベースに記憶されたロボット操作情報から、プログラム作成依頼ボタンが選択された時刻直前の所定時間(たとえば、60秒)の情報(すなわち、プログラム化情報)を読み出し、当該プログラム化情報を含むプログラムの作成依頼をネットワーク100を介して開発端末16に送信する。さらに、オペレータが依頼パネル118のコメント記述欄にコメント(プログラムを作成するときに役立つ意見や情報など)を入力しておくと、当該コメントをさらに含む作成依頼が開発端末16に送信される。
具体例としては、ロボット12が人間と対話しているときに、超音波距離センサ30によって検出された対話者との距離が100cmであったとする。この場合に、オペレータは、たとえば、対話者の音声を検出し難いという理由から、常に対話者との距離が80cmになるまでロボット12を遠隔操作によって前進させていたとする。すると、オペレータは、当該動作(すなわち、人間と対話するときには、当該人間との距離を80cmに保つという動作)を自律制御で行えるように、開発端末16(プログラマ)に対して、新規自律制御プログラムの作成を依頼する。すなわち、当該操作コマンドの履歴と距離センサの検出データの履歴とを含むロボット操作情報をプログラム化情報として含む作成依頼が開発端末16に対して送信される。また、コメント記述欄には、たとえば、「人間と対話するときの距離を80cmに保つような新規自律制御プログラム作成希望」などと記述してよい。すると、当該コメントをさらに含む作成依頼が送信される。
このように、オペレータが実際にロボット12の遠隔操作を行っているときに、自律制御で行うことが望ましい動作(コミュニケーション行動)があると気付いた場合、当該動作に対応するプログラム化情報およびコメントが、オペレータの入力に応じて開発端末16に対して送信される。これに応じて、プログラマは受信したプログラム化情報およびコメントを調査して、新規に自律制御プログラム化が可能な動作が有るか否かを容易に判断することができる。
また、操作端末14のCPUは、定期的にたとえば1日に1回または数時間に1回程度、データベースに記憶したロボット操作情報から同一の操作コマンド系列を抽出し、開発端末16に送信する。たとえば、ロボット操作情報に記憶された全ての時刻から所定時間(たとえば、30秒)の間に入力された一連の操作コマンドを操作コマンド系列として抽出し、各操作コマンド系列について同一の操作コマンド系列が有るか否かを判断する。同一の操作コマンド系列が有る場合は、当該操作コマンド系列に基づくロボット12の動作は自律制御プログラム化できる可能性があると判断して、当該操作コマンド系列に対応するロボット操作情報をプログラム化情報として送信する。なお、同一の操作コマンド系列を抽出する際、さらに周囲情報(センサ情報)系列も同一のものを抽出するようにしてもよい。
このように、操作端末14のCPUは新規に自律制御プログラム化ができそうな動作を自動的に抽出して、開発端末16に送信するので、実際に遠隔操作しているオペレータが気付かないような場合にもプログラム化の作成依頼を行うことができ、また、作成依頼というオペレータの負担を減少させることができる。
また、開発端末16では、操作端末14から新規自律制御プログラムの作成依頼を受信すると、プログラマは、受信したプログラム化情報を参考にして、新規自律制御プログラムの作成が可能であるか否かを判断する。プログラマ自らがロボット12の動作に関する全ての情報から新たに自律制御化できるものを見つけることに比べて、受信したプログラム化情報を参考にすると、プログラマは容易に自律制御化できる動作を見つけることができる。プログラマは、新規に自律制御化できる動作が存在すると、新規自律制御プログラムを作成する。新規自律制御プログラムが作成された場合、作成されたプログラムはロボット12に送信される。
ロボット12は、開発端末16から送信された新規自律制御プログラムを受信すると、当該プログラムをたとえばメモリ70に記憶する。ロボット12は、メモリ70に新たに記憶したプログラムを加えて更新された自律制御プログラムに基づいて、自律的コミュニケーション行動を実行する。このように、開発端末16で作成された新規自律制御プログラムは、ロボット12に自律制御プログラムとして実装することができる。このような新規自律制御プログラムの実装は、開発したロボット12を実際に現場で使用しながら継続的に行うことができるので、効率よくその現場に適応して動作を制御できるロボットに改良していくことができる。
具体的には、ロボット12のCPU66は、図6に示すフロー図に従って、自律制御と遠隔制御とを組み合わせたコミュニケーション行動の全体処理を実行し、操作端末14のCPUは、図7および図8に示すフローチャートに従って、開発端末16に対する新規自律制御プログラムの作成依頼処理を実行する。
図6に示すように、ロボット12のCPU66は、コミュニケーション行動処理を開始すると、ステップS1で停止命令が有るか否かを判断する。たとえば、停止命令は、ロボット12に停止ボタンを設けておき、当該ボタンが操作されたか否かで判断するようにしてもよいし、操作端末14からの停止命令が有るか否かで判断するようにしてもよい。ステップS1で“YES”の場合、すなわち停止命令が有る場合は、そのまま当該処理を終了する。一方、ステップS1で“NO”の場合、すなわち、停止命令が無い場合は、ステップS3に進む。
ステップS3では、周囲情報(センサ情報)を取得する。たとえば、超音波距離センサ30、マイク42、眼カメラ44、タッチセンサ54および無線タグ読取装置92からの周囲情報を取得する。
次のステップS5では、上述した呼出条件が満たされたか否かを判断する。すなわち、ステップS3で取得した情報に基づいて、自律制御プログラムによる自律的コミュニケーション行動で対応できる状況であるか否かを判断する。ステップS5で“NO”の場合、すなわち、呼出条件を満たさない場合は、ステップS7に進み、上述したような自律的コミュニケーション行動を必要に応じて実行し、ステップS1に戻る。一方、ステップS5で“YES”の場合、すなわち、呼出条件を満たした場合は、自律的コミュニケーション行動では対応できない状況であると判断し、ステップS9に進む。
ステップS9では、遠隔制御の要求を操作端末14に対して送信する。つまり、オペレータを呼び出す。次のステップS11では、ステップS3で取得した周囲情報を操作端末14に対して送信する。なお、操作端末14では、当該周囲情報が記憶され、当該周囲情報に基づいて遠隔操作画面110が表示され、必要に応じてオペレータによる操作コマンドの入力が行われる。
ステップS13では、操作端末14から操作コマンドが有るか否かを判断する。ステップS13で“NO”の場合、すなわち操作コマンドが無ければ、そのままステップS17に進む。一方、ステップS13で“YES”の場合、すなわち、操作コマンドが有る場合は、ステップS15で操作コマンドに従うコミュニケーション行動(身体動作や発話)を実行して、ステップS17に進む。
ステップS17では、操作端末14から遠隔制御の終了要求(終了コマンド)が有るか否かを判断する。たとえば、上述した操作端末14の操作パネル116の「終了」ボタン(図5参照)が選択されたか否かを判断する。なお、遠隔制御の終了要求と上述したステップS1の停止命令とは別のものである。ステップS17で“NO”の場合、すなわち、遠隔制御の終了要求が無い場合は、遠隔制御を継続すると判断してステップS11に戻る。一方、ステップS17で“YES”の場合、すなわち、遠隔制御の終了要求が有る場合は、遠隔制御を終了すると判断して、ステップS1に戻る。
なお、この実施例では、操作端末14からの操作コマンドが有ると、直ぐに当該操作コマンドに従うコミュニケーション行動を実行するようにしてある。ただし、操作端末14からの操作コマンドを受信したときに、コミュニケーション行動を実行中である場合には、当該コミュニケーション行動の実行を終了してから、制御コマンドに従うコミュニケーション行動を実行するようにしてもよい。
図7は、操作端末14のCPUがオペレータの操作に従って開発端末16に対して新規自律制御プログラムの作成を依頼するときの全体処理の一例を示すフロー図である。図7を参照して、操作端末14のCPUは、当該処理を開始すると、ステップS21で、ロボット12から遠隔制御の要求を受信したか否かを判定する。このステップS21の判定は、所定時間毎に繰り返し実行される。
ステップS21で“YES”の場合、すなわち、ロボット12から遠隔制御の要求を受信したときは、ステップS23でロボット12から周囲情報(センサ情報)を受信し、データベースに記録する。具体的には、所定時間毎(たとえば、1秒毎)にロボット12の超音波距離センサ30やタッチセンサ54などからの周囲情報を取得し、図4に示すようなロボット操作情報テーブルを更新する。なお、ロボットの位置や状態などのロボットに関する情報およびオペレータに関する情報も適宜取得し、ロボット操作情報テーブルを更新する。
次のステップS25では、現在のロボットカメラからの画像(映像)とロボット情報とを遠隔操作画面110に表示する。ロボットカメラ画像112およびロボット情報114は、ステップS23で受信した情報に基づいて生成および更新される。なお、遠隔操作画面110には、操作パネル116および依頼パネル118も表示される。すなわち、遠隔操作画面110には、上述した図5に示すような、ロボットカメラ画像112、ロボット情報114、操作パネル116および依頼パネル118が表示される。
ステップS27では、操作コマンドが入力されたか否かを判断する。たとえば、入力装置からの入力データと操作パネル116のボタン配置データとに基づいて、オペレータによって操作コマンドの選択が行われたか否かを判断する。ステップS27で“YES”の場合、すなわち、操作コマンドの入力が有った場合は、ステップS29に進む。
ステップS29では、当該選択された操作コマンドを特定してロボット12に送信する。なお、ロボット12では、当該送信された操作コマンドに応じたコミュニケーション行動(身体動作や発話)が行われる。
次のステップS31では、ステップS27で入力された操作コマンドをデータベースに記憶する。たとえば、入力された操作コマンドが「前進」であれば、図4に示すようなロボット操作情報テーブルの操作コマンドの欄の当該入力を行った時刻の欄に「前進」と登録する。ステップS31を終了すると、処理はステップS23に戻る。
また、ステップS27で“NO”の場合、すなわち、操作コマンドの入力が無かった場合は、ステップS33に進む。
ステップS33では、オペレータによるプログラム化の要求が有るか否かを判断する。具体的には、上述した遠隔操作画面110に表示される依頼パネル118のプログラム作成依頼ボタンが選択されたか否かを判断する。ステップS33で“YES”の場合、すなわち、オペレータによるプログラム化の要求が有る場合は、ステップS35に進む。
ステップS35では、データベースから過去k秒間のロボット操作情報(すなわち、プログラム化情報)を読み出す。所定値kは適宜な値(たとえば60秒程度)に設定される。kの値は、オペレータの入力によって変更可能にされてもよい。具体的には、たとえば、時刻「tp+60」にプログラム作成依頼ボタンが選択されると、たとえば、時刻「tp+60」から時刻「tp」までのロボット操作情報をプログラム化情報として読み出す。
次のステップS37では、ステップS35で読み出したプログラム化情報を含む新規自律制御プログラムの作成依頼を開発端末16に送信する。なお、ステップS33でプログラム作成ボタンが選択されたときに、コメント記述欄にコメントの記載が有る場合は、当該コメントも開発端末16に送信する。なお、開発端末16では、プログラマによって、送信されたプログラム化情報に基づいて自律制御プログラムの作成が可能か否かが判断され、可能な場合は新規自律制御プログラムが作成される。また、プログラムが作成された場合は、当該作成されたプログラムはロボット12に送信され、実装される。ステップS37の処理が終了すると、処理はステップS23に戻る。
また、ステップS33で“NO”の場合、すなわち、プログラム化の要求が無い場合は、ステップS39に進み、終了要求が有るか否かを判断する。なお、当該判断は、たとえば、操作端末14の遠隔操作画面110に当該処理終了用(遠隔制御終了用)のボタンを設けておき、これをオペレータが操作したか否かで判断するようにしてよい。このステップS37で“YES”の場合は当該処理を終了する。一方、ステップS37で“NO”の場合は、処理はステップS23に戻る。
なお、図7に示した処理では、プログラム化情報の取得は、オペレータによってプログラム作成依頼ボタンが選択されたときに、当該時刻直前の所定時間kのロボット操作情報をプログラム化情報として自動的に取得する(ステップS35)というように実行されたが、これに限定されない。たとえば、オペレータが過去に記憶されたロボット操作情報からプログラム化に利用する情報を任意的に選択できるようにしてもかまわない。たとえば、データベースに記憶されたロボット操作情報を表示装置に表示する操作履歴表示ボタンを遠隔操作画面110(たとえば、依頼パネル118)に設ける。オペレータによって、この操作履歴表示ボタンが選択されると、表示装置には、データベースに記憶されたロボット操作情報が表示される。オペレータは、当該表示されたロボット操作情報から自律制御プログラム化して欲しい部分に対応する情報をプログラム化情報として選択する、というようにしてもよい。たとえば、オペレータは、以前に入力した操作コマンド(あるいは、操作コマンド系列)が、ロボット12から或るセンサ情報を受信したときに必ず入力する操作コマンド(系列)である、と後になって気付く場合がある。このような場合には、オペレータは、表示装置にロボット操作情報を表示させ、表示されたロボット操作情報を見て確認しながら、自律制御プログラム化に利用する情報を適切に取得することができる。
具体的には、操作端末14のCPUは、オペレータによって上述した操作履歴表示ボタンが選択されると、たとえば図4に示したようなロボット操作情報をメモリから読み出し、表示装置に表示する。オペレータによって、自律制御プログラムで実行したほうがよいと気付いた動作(操作コマンドもしくは操作コマンド系列)を含むプログラム化するために利用する情報(たとえば、時刻tpから時刻tp+30までの情報)が選択されると、当該オペレータによって選択された情報をプログラム化情報としてメモリから読み出す。そして、上述した自動的に取得されるプログラム化情報の代わりに、当該プログラム化情報を含むプログラムの作成依頼をネットワーク100を介して開発端末16に送信する。たとえば、図7に示したフロー図において、ステップS33でプログラム化の要求が入力される前にオペレータによってプログラム化するために利用する情報が選択されると、ステップS35で当該選択された情報をプログラム化情報として読み出し、ステップS37で開発端末16に送信するというようにしてもよい。
図8は、操作端末14のCPUが自動的にロボット操作情報からプログラム化情報を抽出し、開発端末16に新規自律制御プログラムの作成依頼を行う処理を示すフロー図である。なお、図8では、簡単のため、操作端末14のデータベースにロボット操作情報が蓄積された後の処理を示してある。また、当該処理は、たとえば数時間に1度もしくは1日に1度程度、定期的に行われる。
図8を参照して、ステップS41では、データベースに記憶されたロボット操作情報の全ての時刻tiから所定時間であるT秒間(たとえば30秒間)にオペレータがロボット12に対して行った操作コマンド系列S(S={com_ti,com_ti+1,・・・,com_ti+T})を抽出し、Sx={S0,S1,・・・,Sn}とする。つまり、或る時刻tiからT秒間の一連の操作コマンドの入力S={com_ti,com_ti+1,・・・,com_ti+T}を抽出し、これを時刻T0からT1まで(たとえば、この日の始め(T0)から終わり(T1)までなど当該抽出処理対象期間)の全ての時刻tiについて行い、Sx={S0,S1,・・・,Sn}を抽出する。ここで、「i」は或る時刻を指定するための変数である。また、「x」は或る時刻の操作コマンド系列を指定するための変数である。「n」はT0から(T1−T)までの単位時間(たとえば1秒)の総数である。また、「com_ti」は時刻tiに対応する操作コマンドである。「Sx」は時刻txに対応する操作コマンド系列(すなわち、時刻txから時刻tx+Tまでに入力された一連の操作コマンド)である。
具体例としては、図4を参照して、「com_tp」は時刻tpに入力された操作コマンド、すなわち「前進」であり、「Sp」は、たとえば時刻tpから時刻tp+30までに入力された操作コマンド系列、すなわち「前進,・・・,前進,・・・,なし」である。
次のステップS43では、全てのSxについて、同一の操作コマンド系列(Sy)が有るか否かを判断する。ここで、「y」は「x」とは異なる時刻の操作コマンド系列を指定するための変数である。ステップS43で“NO”の場合、すなわち、ロボット操作情報テーブルに記憶されたロボット操作情報の中に同一の操作コマンド系列が存在しない場合は、そのまま当該処理を終了する。一方、ステップS43で“YES”の場合、すなわち、ロボット操作情報テーブルに記憶されたロボット操作情報の中に同一の操作コマンド系列が存在する場合は、ステップS45に進む。
ステップS45では、同一の操作コマンド系列が存在したSxに対応する(を含む)ロボット操作情報をデータベースから抽出する。具体例としては、図4を参照して、時刻tpから時刻tp+30までの操作コマンド系列Spに同一の操作コマンド系列が存在した場合には、時刻tpから時刻tp+30までのロボット操作情報をデータベースから抽出する。
次のステップS47では、ステップS45で抽出したロボット操作情報(つまり、プログラム化情報)を開発端末16に送信する。すなわち、自律制御プログラムの作成依頼を行い、当該処理を終了する。なお、上述したように、開発端末16では、プログラマによって、送信されたプログラム化情報に基づいて新規自律制御プログラムの作成が可能か否かが判断され、可能な場合は新規自律制御プログラムが作成される。また、作成されたプログラムはロボット12に送信され、実装される。
なお、プログラム化情報を抽出するときには、操作コマンド系列が同一である場合だけでなく、さらにセンサ情報の系列も同一であるロボット操作情報をプログラム化情報として抽出するようにしてもよい。このようにすれば、自律制御化の可能性のより高いプログラム化情報を抽出できる。
この実施例によれば、オペレータの入力に応じてもしくは自動的に、自律制御プログラムの作成に必要な情報を取得し、開発端末16に送信する。したがって、プログラマは、プログラマ自らロボット12の全ての動作に関する情報から自律制御化できるものを見つけることと比較して、送信される情報(プログラム化情報)を参考にすれば、容易に自律制御化できる動作を発見することができる。また、プログラマによって新規自律制御プログラムが作成された場合は、当該新規自律制御プログラムはロボット12に送信され、実装される。このような新規自律制御プログラムの実装は、開発したロボット12を実際に現場で使用しながら継続的に行えるので、ロボット12が自律制御で行える動作が増えていき、オペレータによる遠隔操作の負担を減少させていくことができる。つまり、より効率的に自律制御と遠隔制御とを組み合わせて自身の動作を制御するロボット12に改良していくことができる。具体的には、単純で定型的パターンの対話は自律制御で行い、高度な対話はオペレータによる遠隔制御で行うというように、自律制御と遠隔制御の双方をシームレスに効率よく実行するロボット12に改良していくことができる。
なお、上述の実施例では、ロボット12は、周囲情報(センサ情報)に基づいて自律的コミュニケーション行動では対応できなくなったことを判断し、オペレータを呼び出すようにした。そして、ロボット12がオペレータを呼び出したときにだけ、オペレータによる遠隔制御を行うようにした。しかし、これに限定されず、たとえば、オペレータが常にロボット12の動作を監視するようにしておき、オペレータが遠隔操作の必要性を判断して、ロボット12の遠隔操作を実行するようにしてもかまわない。
また、上述の各実施例では、ロボット操作情報を操作端末14のデータベースに記憶するようにしたが、これに限定されず、ロボット操作情報は、ロボット12に記憶するようにしてもかまわない。このような場合には、図8に示すようなプログラム化情報の抽出および新規自律制御プログラムの作成依頼処理をロボット12のCPU66が実施するようにしてもよい。また、操作端末14がオペレータの入力に応じて、ロボット12に記憶された当該ロボット操作情報を読み出し、操作端末14がオペレータの入力に応じてもしくは自動的に必要な情報(プログラム化情報)を選択(取得)して開発端末16に送信するようにしてもかまわない。
また、上述の各実施例では、操作端末14とは別に、開発端末16を備えるようにしたが、開発端末16の機能(プログラマの入力による新規自律制御プログラムの作成)を操作端末14に備えるようにしてもかまわない。この場合、上述した新規自律制御プログラムの作成依頼を送信する必要は無いので、たとえば、当該操作端末14の表示装置に、たとえば或るマークやメッセージを表示することによって、新規自律制御プログラムの作成依頼が有る旨をプログラマに伝えるようにしてもよい。そして、たとえば、プログラマの操作によって上述したプログラム化情報を当該操作端末14の表示装置に表示させるようにし、当該プログラム化情報を参考にしてプログラマが新規自律制御プログラムを作成するというようにしてもかまわない。
また、上述の各実施例では、ロボット12、操作端末14および開発端末16は、それぞれ1台ずつネットワーク100を介して接続するようにした。しかし、これに限定されず、コミュニケーションロボット改良システム10は、ネットワーク100を介して接続した複数のロボット12、複数の操作端末14および複数の開発端末16を含むように構成してもかまわない。たとえば、ロボット12が5台、操作端末14が2台、開発端末16が1台というような構成でもかまわない。
また、たとえばロボット改良システム10が複数のロボット12や操作端末14、開発端末16を含む場合は、当該システム10は、ネットワーク100を介して接続され、プログラム化情報の取得および新規自律制御プログラムの作成依頼に関する全体処理を制御する中央制御装置をさらに備えるようにしてもかまわない。たとえば、複数のロボット12によってそれぞれ取得された周囲情報(センサ情報)の履歴や複数の操作端末14にそれぞれ入力された操作コマンド情報の履歴を含むロボット操作情報を中央制御装置に記憶させ、プログラム化情報の抽出および自律制御プログラムの作成依頼処理(図8)を中央制御装置のCPUが実施するようにしてもかまわない。また、たとえば、操作端末14がオペレータの入力に応じて、中央制御装置に記憶させた複数のロボット12や複数の操作端末14から送信されたロボット操作情報を読み出し、操作端末14がオペレータの入力に応じてもしくは自動的に必要な情報を選択して開発端末16に送信するようにしてもかまわない。さらにまた、たとえば、複数の操作端末14の中から或る操作端末14を選択し、選択した操作端末14を上述した中央制御装置として用いてもかまわない。
また、上述の各実施例では、ロボット12は予め設定した動作を行うようにしたが、他の実施例では、オペレータが、遠隔操作画面110でロボット12の各モータ24,38,78〜86を個別に操作し、ロボット12の動作を制御するようにしてもよい。
また、上述の各実施例では、遠隔操作画面110上に操作パネル116を表示してマウスクリック方式またはタッチパネル方式などでロボット12の動作を指示するようにしたが、他の実施例では、操作端末14に、操作スイッチまたはジョイスティックなどの操作部を表示装置とは別に設けて、当該操作部の操作でロボット12の動作を指示するようにしてもよい。