以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
即ち、本発明のロボット制御装置は、外部情報を認識する認識手段(例えば、図4の胴体ユニット12、または、頭部ユニット14)と、認識手段により認識された外部情報に基づいて、具体的な認識情報と抽象的な認識情報を生成する認識情報生成手段(例えば、図4の認識モジュール51)と、認識情報生成手段により生成された抽象的な認識情報に基づいて、抽象的なコマンドを生成する抽象的コマンド生成手段(例えば、図4の行動選択モジュール52)と、抽象的コマンド生成手段により生成された抽象的なコマンドと、認識情報生成手段により生成された具体的な認識情報に基づいて、具体的なコマンドを生成する具体的コマンド生成手段(例えば、図4の認識行動モジュール53)と、具体的コマンド生成手段により生成された具体的なコマンドに対応した演算による駆動部位の駆動の制御により、前記具体的なコマンドを実行させるコマンド実行手段(例えば、図4の行動モジュール54)とを備え、抽象的コマンド生成手段は、生成しようとする抽象的なコマンドに対応する具体的なコマンドが実行中であるか否かを認識し、前記生成しようとする抽象的なコマンドに対応する具体的なコマンドが実行中ではない場合、前記抽象的なコマンドを生成することを特徴とする。
本発明のロボット制御方法は、外部情報を認識する認識ステップ(例えば、図5のフローチャートのステップS2)と、認識ステップの処理で認識された外部情報に基づいて、具体的な認識情報と抽象的な認識情報を生成する認識情報生成ステップ(例えば、図5のフローチャートのステップS3,S4)と、認識情報生成ステップの処理で生成された抽象的な認識情報に基づいて、抽象的なコマンドを生成する抽象的コマンド生成ステップ(例えば、図6のフローチャートのステップS13、またはS16)と、抽象的コマンド生成ステップの処理で生成された抽象的なコマンドと、認識情報生成ステップの処理で生成された具体的な認識情報に基づいて、具体的なコマンドを生成する具体的コマンド生成ステップ(例えば、図5のフローチャートのステップS25)と、具体的コマンド生成ステップの処理で生成された具体的なコマンドに対応した演算による駆動部位の駆動の制御により、前記具体的なコマンドを実行させるコマンド実行ステップ(例えば、図5のフローチャートのステップS26)とを含み、抽象的コマンド生成ステップの処理は、生成しようとする抽象的なコマンドに対応する具体的なコマンドが実行中であるか否かを認識し、生成しようとする抽象的なコマンドに対応する具体的なコマンドが実行中ではない場合、抽象的なコマンドを生成することを特徴とする。
尚、記録媒体、および、プログラムに係る発明については、ロボット制御方法と同様であるので省略する。
図2は、本発明を適用したロボットの一実施の形態の外観構成例を示しており、図3は、その電気的構成例を示している。
本実施の形態では、ロボットは、例えば、犬等の四つ足の動物の形状のものとなっており、胴体部ユニット12の前後左右に、それぞれ脚部ユニット13A,13B,13C,13Dが連結されるとともに、胴体部ユニット12の前端部と後端部に、それぞれ頭部ユニット14と尻尾部ユニット15が連結されることにより構成されている。
尻尾部ユニット15は、胴体部ユニット12の上面に設けられたベース部15Bから、2自由度をもって湾曲または揺動自在に引き出されている。
胴体部ユニット12には、ロボット全体の制御を行うコントローラ20、ロボットの動力源となるバッテリ21、並びにバッテリセンサ22および熱センサ23からなる内部センサ部24などが収納されている。
頭部ユニット14には、「耳」に相当するマイク(マイクロフォン)25、「目」に相当するCCD(Charge Coupled Device)カメラ16、「触覚」に相当するタッチセンサ27、および「口」に相当するスピーカ28が、それぞれ所定位置に配設されている他、LED(Light Emitting Diode)29が、「目」の位置の設けられている。また、頭部ユニット14には、口の下顎に相当する下顎部14Aが1自由度をもって可動に取り付けられており、この下顎部14Aが動くことにより、ロボットの口の開閉動作が実現されるようになっている。
脚部ユニット13A乃至13Dそれぞれの関節部分や、脚部ユニット13A乃至13Dそれぞれと胴体部ユニット12の連結部分、頭部ユニット14と胴体部ユニット12の連結部分、頭部ユニット14と下顎部14Aの連結部分、並びに尻尾部ユニット15と胴体部ユニット12の連結部分などには、図3に示すように、それぞれアクチュエータ13AA1乃至13AAK、13BA1乃至13BAK、13CA1乃至13CAK、13DA1乃至13DAK、14A1乃至14AL、15A1、15A2が配設されている。
頭部ユニット14におけるマイク25は、ユーザからの発話を含む周囲の音声(音)を集音し、得られた音声信号を、コントローラ20に送出する。CCDカメラ26は、周囲の状況を撮像し、得られた画像信号を、コントローラ20に送出する。
タッチセンサ27は、例えば、頭部ユニット14の上部に設けられており、ユーザからの「なでる」や「たたく」といった物理的な働きかけにより受けた圧力を検出し、その検出結果を圧力検出信号としてコントローラ20に送出する。
胴体部ユニット12におけるバッテリセンサ22は、バッテリ21の残量を検出し、その検出結果を、バッテリ残量検出信号としてコントローラ20に送出する。熱センサ23は、ロボット内部の熱を検出し、その検出結果を、熱検出信号としてコントローラ20に送出する。
コントローラ20は、CPU(Central Processing Unit)20Aやメモリ20B等を内蔵しており、CPU20Aにおいて、メモリ20Bに記憶された制御プログラムが実行されることにより、各種の処理を行う。
即ち、コントローラ20は、マイク25や、CCDカメラ26、タッチセンサ27、バッテリセンサ22、熱センサ23から与えられる音声信号、画像信号、圧力検出信号、バッテリ残量検出信号、熱検出信号に基づいて、周囲の状況や、ユーザからの指令、ユーザからの働きかけなどの有無を判断する。
さらに、コントローラ20は、この判断結果等に基づいて、続く行動を決定し、その決定結果に基づいて、アクチュエータ13AA1乃至13AAK、13BA1乃至13BAK、13CA1乃至13CAK、13DA1乃至13DAK、14A1乃至14AL、15A1、15A2のうちの必要なものを駆動させる。これにより、頭部ユニット14を上下左右に振らせたり、下顎部14Aを開閉させる。さらには、尻尾部ユニット15を動かせたり、各脚部ユニット13A乃至13Dを駆動して、ロボットを歩行させるなどの行動を行わせる。
また、コントローラ20は、必要に応じて、合成音、あるいは後述するようなエコーバック音声を生成し、スピーカ28に供給して出力させたり、ロボットの「目」の位置に設けられたLED29を点灯、消灯または点滅させる。
以上のようにして、ロボットは、周囲の状況等に基づいて自律的に行動をとるようになっている。
次に、図5の機能ブロック図を参照して、コントローラ20の機能について説明する。
コントローラ20の機能は、ミドルウェア層(図4の点線と1点鎖線の間の領域)とアプリケーション層とに大別することができる。ミドルウェア層は、脚部ユニット13、頭部ユニット14、および、尻尾ユニット15といったハードウェア(図4の点線より下の領域)から直接情報を取得して、アプリケーション層のソフトウェアに取得した情報を抽象化して供給し、アプリケーション層の機能より供給される抽象的なコマンドに基づいて動作を制御する、ハードウェアに依存する。アプリケーション層は、ミドルウェアからの情報に基づいて、行動内容の選択を行い、選択結果となるコマンドをミドルウェア層に供給し、実際にロボットを動作させるものであり、ハードウェアには実質的に依存しないものである。
認識モジュール51は、頭部ユニット14のマイク25からの音声信号、CCDセンサ26からの画像信号、および、タッチセンサ27からの圧力検出信号といった具体的な外部情報を取得し、音声認識部51aが音声信号を、画像認識部51bが画像信号を、圧力認識部51cが圧力信号を、バッテリ状態認識部51dがバッテリ検出信号を、そして、熱認識部51eが熱検出信号を、それぞれ認識した上で認識した情報に基づいて、抽象的な認識情報を生成して行動選択モジュール52に供給する。ここで、抽象的な認識情報とは、例えば、「音がした」、「ボールが見えた」、「人が見えた」、「叩かれた」、「バッテリが減った」、または、「熱くなった」といった認識情報である。尚、ここで、バッテリ検出信号、および、熱検出信号は、ロボットの内部情報であるが、ここでいう外部情報は、ロボットの自律行動を決定する要素を示すものであるので、本明細書においては、バッテリ検出信号、および、熱検出信号も外部情報として扱うものとする。
また、認識モジュール51は、取得した外部情報に基づいて、具体的な認識情報を認識行動モジュール53に供給する。ここで、具体的な認識情報とは、抽象的な認識情報に対応する情報であって、例えば、「ボールが見えた」という抽象的な認識情報に対応する具体的な認識情報としては、自らの位置からみたボールの存在する角度とボールまでの距離の情報、「叩かれた」という抽象的な認識情報に対応する具体的な認識情報としては、そのときの圧力の情報、「バッテリが減った」という抽象的な認識情報に対応する具体的な認識情報としては、そのときのバッテリの充電容量の情報、「熱くなった」という抽象的な認識情報に対応する具体的な認識情報としては、そのときの温度の情報などである。
行動選択モジュール52は、認識モジュール51より供給された抽象的な認識情報に基づいて、複数の予め設定された行動から、抽象的な認識情報に対応する行動を選択して抽象的なコマンドを認識行動モジュール53に供給する。例えば、抽象的な認識情報が「ボールが見えた」と言うものであった場合、行動選択モジュール52は、設定された行動として「ボールを蹴れ」という抽象的なコマンドを認識行動モジュール53に供給する。また、例えば、抽象的な情報が「人が見えた」と言うものであった場合、行動選択モジュール52は、設定された行動として「人にあいさつをせよ」という抽象的なコマンドを認識行動モジュール53に供給する。
認識行動モジュール53は、行動選択モジュール52より供給された抽象的なコマンドと、認識モジュール51より供給された具体的な認識情報に基づいて、具体的なコマンドを生成して、行動モジュール54に供給する。より詳細には、例えば、「ボールを蹴れ」という抽象的なコマンドが、行動選択モジュール52より供給された場合、認識モジュール51より供給された具体的な認識情報が、自らの位置からのボールの角度が角度Aで、かつ、距離Bであるとき、認識行動モジュール53は、「自らの位置から角度Aで距離Bまで移動し、ボールを蹴れ」という、ボールを蹴るために頭部ユニット14、脚部ユニット13、および、尻尾ユニット15の、それぞれのアクチュエータ13AA1乃至13AAK、13BA1乃至13BAK、13CA1乃至13CAK、13DA1乃至13DAK、14A1乃至14AL、15A1、15A2を制御する上で必要な具体的なコマンドを生成し、行動モジュール54に供給する。
行動モジュール54は、認識行動モジュール53より供給された具体的なコマンドに基づいて、頭部ユニット14、脚部ユニット13、および、尻尾ユニット15の、それぞれのアクチュエータ13AA1乃至13AAK、13BA1乃至13BAK、13CA1乃至13CAK、13DA1乃至13DAK、14A1乃至14AL、15A1、15A2のうちのコマンドに対応する必要なものを駆動させる。すなわち、今の場合、行動モジュール54は、アクチュエータ13AA1乃至13AAK、13BA1乃至13BAK、13CA1乃至13CAK、13DA1乃至13DAK、14A1乃至14AL、15A1、15A2を制御して、ロボットが自らの位置から角度Aで距離Bまで移動するように駆動させ、さらに、その位置に存在するボールを蹴るように駆動させる。
ところで、上述したように、コントローラ20は、ハードウェアの依存性が比較的低いソフトウェア層であるアプリケーション層と、ハードウェアの依存性が高いソフトウェア層すなわちミドルウェア層とを独立したことにより、以下のような効果を奏している。
すなわち、第1の効果は、1つの行動選択モジュール52で様々なハードウェア構成のロボットに対応できるようにさせることが可能となる。(ユーザは、自分が所有する(あるいは育てた)行動選択モジュール52を他のロボットに移植させたりでき、行動選択モジュール52のみを流通・販売することができる。)
第2の効果は、ある1つのハードウェア構成を持つロボットで、さまざまな認識モジュール51、認識行動モジュール53、および行動モジュール54を作成することができる。結果として、認識モジュール51、認識行動モジュール53、および行動モジュール54は、再利用し易くなるので、行動選択モジュール52の開発効率を向上させることが可能となる。
第3の効果は、同一のハードウェア構成を持つロボットで、同一の行動選択モジュール52であっても、認識モジュール51、認識行動モジュール53、および行動モジュール54を変更することで、実際の表現力や制御性の向上を図ることが可能となる。
第4の効果は、認識モジュール51、行動選択モジュール52、認識行動モジュール53、または行動モジュール54のプログラムを半導体メモリなどの記録媒体などからロボット本体にダウンロードすることによって、簡単に入れ替えることが可能となる。
第5の効果は、行動選択モジュール52と、認識モジュール51、認識行動モジュール53、または行動モジュール54とが独立しているので、ソフトウェア開発ベンダは、得意な領域の機能開発に集中することができる。例えば、制御系を専門とするベンダはミドルウェアの開発に注力することにより、色々なアプリケーションを利用することができる。
次に、図5のフローチャートを参照して、認識モジュール51の認識処理について説明する。
ステップS1において、認識モジュール51は、頭部ユニット14のマイク25や、CCDカメラ26、タッチセンサ27、バッテリセンサ22、および熱センサ23よりそれぞれ供給される音声信号、画像信号、圧力検出信号、バッテリ検出信号、および、熱検出信号を検出する。
ステップS2において、認識モジュール51の音声認識部51aは、検出した音声信号に基づいて、音声を認識し(音声によるコマンドの認識などを認識し)、画像認識部51bは、画像信号に基づいて、画像を認識し(画像に写るボールや人といった被写体の認識と、その被写体の位置までの方向や距離などを認識し)、さらに、圧力認識部51cは、圧力検出信号に基づいて、圧力を認識し、(触られたか、撫でられたか、叩かれたかなどを認識する)、バッテリ状態認識部51dは、バッテリ検出信号に基づいて、バッテリの残量を認識し、熱認識部51eは、熱検出信号に基づいて温度から内部の温度状態を認識する。
ステップS3において、認識モジュール51は、音声認識部51a、画像認識部51b、圧力認識部51c、バッテリ状態認識部51d、および熱認識部51eにより認識された認識情報に基づいて、具体的な認識情報を生成し、認識行動モジュール53に供給する。すなわち、例えば、画像信号に基づいてボールが撮像されていた場合、そのボールまでの角度、および、距離といった具体的な認識情報を認識行動モジュール53に供給する。尚、このとき認識モジュール51は、音声信号、画像信号、圧力検出信号、バッテリ検出信号、および、熱検出信号も合わせて認識行動モジュール53に供給する。
ステップS4において、認識モジュール51は、音声認識部51a、画像認識部51b、圧力認識部51c、バッテリ状態認識部51d、および、熱認識部51eにより認識された認識情報に基づいて、抽象的な認識情報を生成し、行動選択モジュール52に供給する。すなわち、認識モジュール51は、例えば、画像信号に基づいてボールが撮像されていた場合、「ボールが見えた」、または、人が撮像されていた場合、「人が見えた」といった抽象的な認識情報を生成し、ステップS5において、その抽象的な認識情報を行動選択モジュール52に供給し、その処理が繰り返される。
以上の処理により、認識モジュール51は、外部情報である音声信号、画像信号、圧力検出信号、バッテリ検出信号、および、熱検出信号に基づいて、抽象的な認識情報と具体的な認識情報を発生する。抽象的な認識情報は、「ボールが見えた」、「人が見えた」というものに限られるものではなく、それ以外の抽象的な認識情報であってもよく、例えば、音声認識として「音がした」といったものや、圧力認識として「撫でられた」といったものであってもよい。
次に、図6のフローチャートを参照して、行動選択モジュール52による行動選択処理について説明する。
ステップS11において、行動選択モジュール52は、認識モジュール51より供給される抽象的な認識情報が、「ボールが見えた」であるか否かを判定し、例えば、「ボールが見えた」という抽象的な認識情報が供給されたと判定された場合、その処理は、ステップS12に進む。
ステップS12において、行動選択モジュール52は、今現在ボールを蹴る処理が実行中であるか否かを認識行動モジュール53に対して問い合わせて、ボールを蹴る処理が実行されていないと判定された場合、その処理は、ステップS13に進む。
ステップS13において、行動選択モジュール52は、「ボールを蹴れ」という抽象的なコマンドを生成し、認識行動モジュール53に供給し、その処理は、ステップS11に戻る。
ステップS11において、供給された抽象的な認識情報が、「ボールが見えた」では無かった場合、または、ステップS12において、ボールを蹴る処理が実行中であると判定された場合、その処理は、ステップS14に進む。
ステップS14において、行動選択モジュール52は、認識モジュール51より供給される抽象的な認識情報が、「人が見えた」であるか否かを判定し、例えば、「人が見えた」という抽象的な認識情報が供給されたと判定された場合、その処理は、ステップS15に進む。
ステップS15において、行動選択モジュール52は、今現在、あいさつをする処理が実行中であるか否かを認識行動モジュール53に対して問い合わせて、あいさつをする処理が実行されていないと判定された場合、その処理は、ステップS16に進む。
ステップS16において、行動選択モジュール52は、「あいさつをしろ」という抽象的なコマンドを生成し、認識行動モジュール53に供給し、その処理は、ステップS11に戻る。
ステップS14において、供給された抽象的な認識情報が、「人が見えた」では無かった場合、または、ステップS15において、あいさつをする処理が実行中であると判定された場合、その処理は、ステップS11に戻り、それ以降の処理が繰り返される。
すなわち、以上の処理により、行動選択モジュール52は、認識モジュール51より供給されてくる抽象的な認識情報に基づいて(「ボールが見えた」、または、「人が見えた」かのいずれかであるかに基づいて)、「ボールを蹴る」、または、「あいさつをする」という行動を選択し、選択した行動に対応する抽象的なコマンドを生成して、認識行動モジュール53に供給する。尚、以上においては、選択できる行動として「ボールを蹴る」、または、「あいさつをする」の2種類であったが、行動の種類は、これに限るものではなくこれ以外のものであってもいいことは言うまでもない。
次に、図7のフローチャートを参照して、ボールを蹴る処理について説明する。
ステップS21において、認識行動モジュール53は、行動選択モジュール52から「ボールを蹴れ」というコマンドの供給を受けたか否かを判定し、行動選択モジュール52から「ボールを蹴れ」というコマンドの供給を受けたと判定されるまで、その処理を繰り返す。そして、例えば、図6のフローチャートを参照して説明したステップS13の処理により、行動選択モジュール52からから「ボールを蹴れ」というコマンドの供給を受けたと判定された場合、その処理は、ステップS22に進む。
ステップS22において、認識行動モジュール53は、ステップS22において、認識モジュール51より供給される画像信号に基づいて、ボールの位置を認識する。ステップS23において、認識行動モジュール53は、ボールは自らの位置で蹴ることが可能な範囲に存在するか否かを判定する。
例えば、ロボットとボールが図8で示されるような位置関係であった場合について説明する。すなわち、図8においては、Dがロボットであり、B1がボールである。認識行動モジュール53は、以下のようにボールは蹴ることができる範囲外であるか否かを判定する。
ここで、図8において、点線で示される領域は、ロボットDの視野Z1であり、領域Z’1は、ロボットDがボールB1を蹴ることができる範囲であることを示している。すなわち、認識行動モジュール53は、領域Z’1の中にボールB1が認識されているとき、ボールは蹴ることができる範囲であると判定する。一方、図8で示されるように、ボールB1が、領域Z’1の範囲外である場合、ボールは蹴ることができる範囲外であると判定されることになる。
例えば、ステップS23において、図8で示されるように、視野Z1内において、領域Z’1内にボールB1が捕らえられていないのでボールは蹴ることが可能な範囲外にあると判定され、その処理は、ステップS24に進む。
ステップS24において、認識行動モジュール53は、認識モジュール51より供給された具体的な認識情報に基づいて、ボールを蹴ることができる位置までの距離と角度の情報を計算する。すなわち、認識モジュール51より供給されるボールB1の位置と方向の情報から、自らがどの角度にどれだけ移動する必要があるのかを計算する。図8の場合、ボールの中心位置であるB1Cの情報と、自らの位置からの距離が、具体的な認識情報として取得されているので、その情報に基づいて、図8で示される自らの移動量Mの角度と距離を計算する。
ステップS25において、認識行動モジュール53は、移動量Mに相当する角度と距離の情報と共に行動モジュール54に対して、ボールを蹴ることができる位置までの移動を指令する。
ステップS26において、行動モジュール54は、脚部ユニット13の各アクチュエータ13AA1乃至13AAK、13BA1乃至13BAK、13CA1乃至13CAK、13DA1乃至13DAKを制御して、ボールを蹴ることができる位置までロボットを移動させ、その処理は、ステップS22に戻る。
ステップS24乃至S26の処理により、ボールを蹴ることができる位置に移動していることになるので、その処理により、ボールの位置が変化していない限り、または、脚部ユニット13の各アクチュエータ13AA1乃至13AAK、13BA1乃至13BAK、13CA1乃至13CAK、13DA1乃至13DAKに動作不良や、環境の変化がない限り、ボールを蹴ることができる位置に移動している。従って、ステップS24乃至S26の処理後は、ステップS23においては、ボールを蹴ることが可能な範囲外ではないと判定されることになる。ただし、ステップS24乃至S26においても、ボールを蹴ることができる範囲外であると判定された場合、再び、ステップS24乃至S26の処理が繰り返される。
ステップS27において、認識行動モジュール53は、ボールは蹴ることが可能な範囲内であるか否かを判定する。今の場合、ロボットDは、移動量MによりロボットD’の位置に存在する。このとき、ロボットD’は、実線で示される視野Z2となるこのとき、ボールを蹴ることができる領域は、実線で示されるZ2’となる。図8においては、この領域Z2’内にボールB1が存在するので、ステップS27においては、ボールは蹴ることが可能な範囲内であると判定される。
ステップS28において、認識行動モジュール53は、行動モジュール54にボールを蹴るように指令する。尚、今の場合、ボールは右足で蹴るものとする。
ステップS29において、行動モジュール54は、脚部ユニット13の各アクチュエータ13AA1乃至13AAK、13BA1乃至13BAK、13CA1乃至13CAK、13DA1乃至13DAKを制御して、右足でボールを蹴らせ、その処理は終了する。
ステップS27において、ボールは蹴ることが可能な範囲内ではないと判定された場合、すなわち、ステップS23において、ボールを蹴ることが可能な範囲外ではないと判定されて、かつ、ボールは蹴ることが可能な範囲内ではないと判定されることにより、ボールB1が視野Z2外にあるものとみなし、その処理は、ステップS30に進む。尚、ステップS23においては、ボールB1は、視野外に存在する場合、ボールB1は蹴ることが可能な範囲外ではないと判定するものとする。すなわち、ボールB1が蹴ることが可能な範囲内であるか否か、または、範囲外であるか否かは、ボールB1が視野の領域内に存在する場合に判定されるものであって、ボールが視野外にある場合、判定はいずれもNoであるものとする。
ステップS30において、認識行動モジュール53は、ボールB1が見つけられず、ボールB1を蹴ることができないことを示す動作をするように、行動モジュール54に指令する。
ステップS31において、行動モジュール54は、アクチュエータ13AA1乃至13AAK、13BA1乃至13BAK、13CA1乃至13CAK、13DA1乃至13DAK、14A1乃至14AL、15A1、15A2を制御して、ボールB1が見つけられず、ボールB1を蹴ることができないことを示す動作をさせる。すなわち、例えば、行動モジュール54は、頭部ユニット14のアクチュエータ14A1乃至14ALを制御して、首を左右に振っているような動作をさせる。
以上の処理により、ロボットは、ボールが見えたとき、ボールを蹴るという行動を行わせることができる。結果として、ユーザにはあたかも自律的にロボットがボールを見て、蹴っているように見せることができる。さらに、認識モジュール51から供給される具体的な認識情報であるボールへの角度と距離に基づいて、自らの位置を移動させてからボールを蹴ることができるので、蹴ることができる位置になるまで所定の距離だけ移動してはボールの位置を確認し、ボールが自らで蹴ることができる領域内となるまで、同様の処理を繰り返す必要がなくなり、ボールが見えるという外部の環境に対して、迅速に、そして自律的にボールを蹴るという行動を実行させることが可能となる。
次に、図9のフローチャートを参照して、あいさつをする処理について説明する。
すなわち、ステップS41において、認識行動モジュール53は、行動選択モジュール52から「あいさつしろ」というコマンドの供給を受けたか否かを判定し、行動選択モジュール52から「あいさつしろ」というコマンドの供給を受けたと判定されるまで、その処理を繰り返す。そして、例えば、図6のフローチャートを参照して説明したステップS16の処理により、行動選択モジュール52から「あいさつしろ」というコマンドの供給を受けたと判定された場合、その処理は、ステップS42に進む。
ステップS42において、認識行動モジュール53は、ステップS42において、認識モジュール51より供給される画像信号に基づいて、人の位置を認識する。ステップS43において、認識行動モジュール53は、人が、あいさつすることが可能な範囲に存在するか否かを判定する。尚、移動については、図8を参照して説明したようにボールに対して移動する場合と同様であるので、その説明は省略する。
例えば、ステップS43において、あいさつすることが可能な範囲外にあると判定された場合、その処理は、ステップS44に進む。
ステップS44において、認識行動モジュール53は、認識モジュール51より供給された具体的な認識情報に基づいて、人にあいさつすることができる位置までの距離と角度の情報を計算する。
ステップS45において、認識行動モジュール53は、人にあいさつすることができる位置までの移動を指令する。
ステップS46において、行動モジュール54は、脚部ユニット13の、それぞれのアクチュエータ13AA1乃至13AAK、13BA1乃至13BAK、13CA1乃至13CAK、13DA1乃至13DAKを制御して、人にあいさつすることができる位置までロボットを移動させ、その処理は、ステップS42に戻る。
ステップS43においては、ボールを蹴ることが可能な範囲外ではないと判定された場合、その処理は、ステップS47に進む。
ステップS47において、認識行動モジュール53は、人にあいさつをすることが可能な範囲内であるか否かを判定し、人にあいさつすることが可能な範囲内であると判定した場合、その処理は、ステップS48に進む。
ステップS48において、認識行動モジュール53は、行動モジュール54に人にあいさつするように指令する。
ステップS49において、行動モジュール54は、頭部ユニット14の各アクチュエータ14A1乃至14ALを制御して、首を縦に振るなどしてあいさつしているような行動を取らせ、その処理は終了する。
ステップS47において、人はあいさつをすることが可能な範囲内ではないと判定された場合、その処理は、ステップS50に進む。尚、ステップS43においては、人は、視野外に存在する場合、人にあいさつすることが可能な範囲外ではないと判定するものとする。すなわち、人があいさつすることができる範囲内であるか否か、または、範囲外であるか否かは、人が視野の領域内に存在する場合に判定されるものであって、人が視野外にある場合、判定はいずれもNoであるものとする。
ステップS50において、認識行動モジュール53は、人が見つけられず、人にあいさつすることができないことを示す動作をするように、行動モジュール54に指令する。
ステップS51において、行動モジュール54は、アクチュエータ13AA1乃至13AAK、13BA1乃至13BAK、13CA1乃至13CAK、13DA1乃至13DAK、14A1乃至14AL、15A1、15A2を制御して、人が見つけられず、人にあいさつすることができないことを示す動作をさせる。すなわち、例えば、行動モジュール54は、頭部ユニット14のアクチュエータ14A1乃至14ALを制御して、首を左右に振っているような動作をさせる。
以上の処理により、ロボットは、人が見えたとき、あいさつするという行動をとるため、ユーザにはあたかも自律的にロボットがあいさつしているように見せることができる。さらに、認識モジュール51から供給される具体的な認識情報である人への角度と距離に基づいて、自らの位置を移動させてから人にあいさつすることができるので、人にあいさつをすることができる位置になるまで所定の距離だけ移動しては人の位置を確認する処理を人があいさつできる範囲に存在すると判定されるまで繰り返す必要がなくなるため、人が見えるという外部の環境に対して、迅速に自立的な行動である、あいさつをすると言う行動を実行することが可能となる。
以上によれば、ボールが見えたり、または、人が見えたりといった外部環境の変化に応じて、行動を変化させることができるので、ユーザには、自律的に動作しているように見せることが可能となり、さらに、自律動作を行う際に必要な動作、例えば、ボールや人との位置を具体的な認識情報に基づいて行うことができるため、迅速に自立的な動作を行うことが可能となる。
さらに、認証モジュール51は、具体的な認識情報を認識行動モジュール53に供給することで、より具体的なコマンドを行動モジュール54に供給可能となるため、ロボットの動作を迅速に行わせることができると共に、認証モジュール51からの抽象的な認識情報をより抽象的な認識情報にすることができ、上位層であるアプリケーション層の行動選択モジュール52の処理負荷を軽減させることが可能となる。すなわち、例えば、従来においては、具体的な認識情報を処理に反映させていないため、ボールを見た場合、ボールを蹴ることができるように自らを移動させる必要があり、そのためにボールの位置を示す情報を含む、「ボールは自らの位置の右側である」、「ボールは自らの位置の左側である」または、「ボールは自らの正面である」といった方向の情報を含ませる分だけ、認識情報は、やや具体的である必要があり、その分、行動選択モジュール52の判定処理が増える分だけ、負荷が高いと言える。
しかしながら、本願においては、具体的な認識情報を下位層であるミドルウェア層の認識モジュール51、認識行動モジュール53、および、行動モジュール54で処理することができる構成となっているので、ソフトウェア層である上位層とミドルウェア層である下位層とした構成となっていることにより生じる効果を維持しつつ、上位層である行動選択モジュール52は、より抽象的な認識情報をコマンドを処理するだけで済むので、負荷が軽減される。結果として、行動選択モジュール52は、処理に余裕が生じるため、より高度な処理を行うようにさせることも可能となり、ロボット自体が複雑な動作を自律的に行うことも可能となる。
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行させることが可能な、例えば汎用のパーソナルコンピュータなどに記録媒体からインストールされる。
図10は、図4のコントローラ20の電気的な内部構成をソフトウェアにより実現する場合のパーソナルコンピュータの一実施の形態の構成を示している。パーソナルコンピュータのCPU101は、パーソナルコンピュータの全体の動作を制御する。また、CPU101は、バス104および入出力インタフェース105を介してユーザからキーボードやマウスなどからなる入力部106から指令が入力されると、それに対応してROM(Read Only Memory)102に格納されているプログラムを実行する。あるいはまた、CPU101は、ドライブ110に接続された磁気ディスク121、光ディスク122、光磁気ディスク123、または半導体メモリ124から読み出され、記憶部108にインストールされたプログラムを、RAM(Random Access Memory) 103にロードして実行する。これにより、上述した図4のコントローラ20の機能が、ソフトウェアにより実現されている。さらに、CPU101は、通信部109を制御して、外部と通信し、データの授受を実行する。
プログラムが記録されている記録媒体は、図10に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク121(フレキシブルディスクを含む)、光ディスク122(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク123(MD(Mini-Disc)を含む)、もしくは半導体メモリ124などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM102や、記憶部108に含まれるハードディスクなどで構成される。
尚、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
13,13A乃至13D 脚部ユニット, 14 頭部ユニット, 15 尻尾部ユニット, 20 コントローラ, 22 バッテリセンサ, 23 熱センサ, 24 内部センサ, 25 マイク, 26 CCD, 27 タッチセンサ, 28 スピーカ, 29 LED, 51 認識モジュール, 52 行動選択モジュール, 53 認識行動モジュール, 54 行動モジュール