(57)【特許請求の範囲】
【請求項１】
駆動部により駆動される少なくとも１つの機構部を有する機構系と、
機構系に依存しない機構系独立命令を入力とし、この機構系独立命令を上記機構系にあわせた機構系依存命令に変換する機構系依存命令変換部と、
この機構系依存命令変換部から供給される機構系依存命令を上記機構系の制御命令に変換する制御命令変換部と、
この制御依存命令変換部から供給される制御命令に応じて上記駆動部の駆動制御を行う制御部とを備え、
上記機構系依存命令変換部は、１つ以上の機構系依存命令について機構系独立命令を検索のキーとして登録し、入力された機構系独立命令から先にこの機構系独立命令を検索のキーとして登録された対応する１つ以上の機構系依存命令を取り出し、取り出された機構系依存命令から１の機構系依存命令を選択して出力する機能を有し、
上記機構系依存命令変換部は、機構系独立命令を入力とし、この機構系独立命令に応じて上記機構系にあわせた機構系依存目標命令を出力する機構系依存目標命令発生部と、この機構系依存目標命令発生部から供給される機構系依存目標命令に応じて上記機構系にあわせた姿勢遷移列からなる機構系依存命令列を発生する機構系依存命令列発生部と有し、
上記制御命令変換部は、この機構系依存命令列発生部から供給される機構系依存命令列を上記機構系の制御命令に変換し、
上記機構系依存目標命令発生部は、同じ機構系独立命令に対応する複数の機構系依存目標命令から１の機構系依存目標命令を確率的に選択して出力する機能を有する
ことを特徴とするロボット装置。
【請求項２】
駆動部により駆動される少なくとも１つの機構部を有する機構系と、
機構系に依存しない機構系独立命令を入力とし、この機構系独立命令を上記機構系にあわせた機構系依存命令に変換する機構系依存命令変換部と、
この機構系依存命令変換部から供給される機構系依存命令を上記機構系の制御命令に変換する制御命令変換部と、
この制御依存命令変換部から供給される制御命令に応じて上記駆動部の駆動制御を行う制御部とを備え、
上記機構系依存命令変換部は、１つ以上の機構系依存命令について機構系独立命令を検索のキーとして登録し、入力された機構系独立命令から先にこの機構系独立命令を検索のキーとして登録された対応する１つ以上の機構系依存命令を取り出し、取り出された機構系依存命令から１の機構系依存命令を選択して出力する機能を有し、
上記機構系依存命令変換部は、機構系独立命令を入力とし、この機構系独立命令に応じて上記機構系にあわせた機構系依存目標命令を出力する機構系依存目標命令発生部と、この機構系依存目標命令発生部から供給される機構系依存目標命令に応じて上記機構系にあわせた姿勢遷移列からなる機構系依存命令列を発生する機構系依存命令列発生部と有し、
上記制御命令変換部は、この機構系依存命令列発生部から供給される機構系依存命令列を上記機構系の制御命令に変換し、
上記機構系依存目標命令発生部は、同じ機構系独立命令に対して、その機構系独立命令が入力された時点での感情状態に対応して異なる機構系依存目標命令を出力する機能を有することを特徴とするロボット装置。
【請求項３】
駆動部により駆動される少なくとも１つの機構部を有する機構系からなるロボット装置の制御方法であって、
機構系に依存しない機構系独立命令を変換することにより上記機構系にあわせた機構系依存命令を生成して上記駆動部の駆動制御を行うに当たり、
１つ以上の機構系依存命令について機構系独立命令の検索のキーとして登録し、
入力された機構系独立命令から先にこの機構系独立命令を検索のキーとして登録された対応する１つ以上の機構系依存命令を取り出し、
取り出された機構系依存命令から１の機構系依存命令を選択して、上記駆動部の駆動制御を行い、
同じ機構系独立命令に対応する複数の機構系依存目標命令から１の機構系依存目標命令を確率的に選択して、その機構系依存目標命令に応じた機構系依存命令を生成して上記駆動部の駆動制御を行うことを特徴とするロボット装置の制御方法。
【請求項４】
駆動部により駆動される少なくとも１つの機構部を有する機構系からなるロボット装置の制御方法であって、
機構系に依存しない機構系独立命令を変換することにより上記機構系にあわせた機構系依存命令を生成して上記駆動部の駆動制御を行うに当たり、
１つ以上の機構系依存命令について機構系独立命令の検索のキーとして登録し、
入力された機構系独立命令から先にこの機構系独立命令を検索のキーとして登録された対応する１つ以上の機構系依存命令を取り出し、取り出された機構系依存命令から１の機構系依存命令を選択して、上記駆動部の駆動制御を行い、
同じ機構系独立命令に対して、その機構系独立命令が入力された時点での感情状態に対応して異なる機構系依存目標命令を選択して、その機構系依存目標命令に応じた機構系依存命令を生成して上記駆動部の駆動制御を行うことを特徴とするロボット装置の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、機構系に依存しない機構系独立命令を用いて共通の制御手段により制御可能とした形式の異なる機構系を備える各種形態のロボット装置及びその制御方法に関する。
【０００２】
【従来の技術】
従来より、タイヤの回転により自走するタイヤ型ロボットや２足あるいは４足の自立型歩行ロボットなど形式の異なる機構系を備える各種形態のロボット装置が提案されている。
【０００３】
この種のロボット装置は、所定の自由度を持つアクチュエータ及び所定の物理量を検出するセンサなどがそれぞれ所定位置に配置された機構系を備え、マイクロコンピュータを用いた制御部によって、各種センサの出力及び制御プログラムに従って各種アクチュエータを個別に駆動制御することにより自走しまた所定の動作を行い得るようになされている。また、この種のロボット装置は、例えば胴体部、脚部及び頭部などの各構成ユニットがそれぞれ予め定められた相関関係をもつ状態に結合されることにより所定の形に組み立てられている。
【０００４】
【発明が解決しようとする課題】
ところで、形式の異なる機構系を備える各種形態のロボット装置では、それぞれ機構系に依存した動作を行うので、装置毎に機構系に対応して定義された命令を用いて制御を行うにしていた。したがって、従来の形式の異なる機構系を備える各種形態のロボット装置では、前進、後退、停止等の共通に定義することにできる動作を行う場合であっても、装置毎に制御プログラムを準備しなければならないという問題点があった。
【０００５】
そこで、本発明の目的は、機構系に依存しない機構系独立命令を用いて共通の制御系により制御可能とした形式の異なる機構系を備える各種形態のロボット装置及びその制御方法を提供することにある。
【０００６】
【課題を解決するための手段】
本発明に係るロボット装置は、駆動部により駆動される少なくとも１つの機構部を有する機構系と、機構系に依存しない機構系独立命令を入力とし、この機構系独立命令を上記機構系にあわせた機構系依存命令に変換する機構系依存命令変換部と、この機構系依存命令変換部から供給される機構系依存命令を上記機構系の制御命令に変換する制御命令変換部と、この制御依存命令変換部から供給される制御命令に応じて上記駆動部の駆動制御を行う制御部とを備え、上記機構系依存命令変換部は、１つ以上の機構系依存命令について機構系独立命令を検索のキーとして登録し、入力された機構系独立命令から先にこの機構系独立命令を検索のキーとして登録された対応する１つ以上の機構系依存命令を取り出し、取り出された機構系依存命令から１の機構系依存命令を選択して出力する機能を有し、上記機構系依存命令変換部は、機構系独立命令を入力とし、この機構系独立命令に応じて上記機構系にあわせた機構系依存目標命令を出力する機構系依存目標命令発生部と、この機構系依存目標命令発生部から供給される機構系依存目標命令に応じて上記機構系にあわせた姿勢遷移列からなる機構系依存命令列を発生する機構系依存命令列発生部と有し、上記制御命令変換部は、この機構系依存命令列発生部から供給される機構系依存命令列を上記機構系の制御命令に変換し、上記機構系依存目標命令発生部は、同じ機構系独立命令に対応する複数の機構系依存目標命令から１の機構系依存目標命令を確率的に選択して出力する機能を有することを特徴とする。
【０００７】
また、本発明に係るロボット装置は、駆動部により駆動される少なくとも１つの機構部を有する機構系と、機構系に依存しない機構系独立命令を入力とし、この機構系独立命令を上記機構系にあわせた機構系依存命令に変換する機構系依存命令変換部と、この機構系依存命令変換部から供給される機構系依存命令を上記機構系の制御命令に変換する制御命令変換部と、この制御依存命令変換部から供給される制御命令に応じて上記駆動部の駆動制御を行う制御部とを備え、上記機構系依存命令変換部は、１つ以上の機構系依存命令について機構系独立命令を検索のキーとして登録し、入力された機構系独立命令から先にこの機構系独立命令を検索のキーとして登録された対応する１つ以上の機構系依存命令を取り出し、取り出された機構系依存命令から１の機構系依存命令を選択して出力する機能を有し、上記機構系依存命令変換部は、機構系独立命令を入力とし、この機構系独立命令に応じて上記機構系にあわせた機構系依存目標命令を出力する機構系依存目標命令発生部と、この機構系依存目標命令発生部から供給される機構系依存目標命令に応じて上記機構系にあわせた姿勢遷移列からなる機構系依存命令列を発生する機構系依存命令列発生部と有し、上記制御命令変換部は、この機構系依存命令列発生部から供給される機構系依存命令列を上記機構系の制御命令に変換し、上記機構系依存目標命令発生部は、同じ機構系独立命令に対して、その機構系独立命令が入力された時点での感情状態に対応して異なる機構系依存目標命令を出力する機能を有することを特徴とする。
【０００８】
また、本発明は、駆動部により駆動される少なくとも１つの機構部を有する機構系からなるロボット装置の制御方法であって、機構系に依存しない機構系独立命令を変換することにより上記機構系にあわせた機構系依存命令を生成して上記駆動部の駆動制御を行うに当たり、１つ以上の機構系依存命令について機構系独立命令の検索のキーとして登録し、入力された機構系独立命令から先にこの機構系独立命令を検索のキーとして登録された対応する１つ以上の機構系依存命令を取り出し、取り出された機構系依存命令から１の機構系依存命令を選択して、上記駆動部の駆動制御を行い、同じ機構系独立命令に対応する複数の機構系依存目標命令から１の機構系依存目標命令を確率的に選択して、その機構系依存目標命令に応じた機構系依存命令を生成して上記駆動部の駆動制御を行うことを特徴とする。
【０００９】
さらに、本発明は、駆動部により駆動される少なくとも１つの機構部を有する機構系からなるロボット装置の制御方法であって、機構系に依存しない機構系独立命令を変換することにより上記機構系にあわせた機構系依存命令を生成して上記駆動部の駆動制御を行うに当たり、１つ以上の機構系依存命令について機構系独立命令の検索のキーとして登録し、入力された機構系独立命令から先にこの機構系独立命令を検索のキーとして登録された対応する１つ以上の機構系依存命令を取り出し、取り出された機構系依存命令から１の機構系依存命令を選択して、上記駆動部の駆動制御を行い、同じ機構系独立命令に対して、その機構系独立命令が入力された時点での感情状態に対応して異なる機構系依存目標命令を選択して、その機構系依存目標命令に応じた機構系依存命令を生成して上記駆動部の駆動制御を行うことを特徴とする。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００１６】
図１は、本発明に係るロボット装置１００の基本的な構成を示すブロック図である。
【００１７】
このロボット装置１００は、中央処理ユニット（CPU:Central Processing Unit） 部１０１、制御部１０２、駆動部１０３、外界１０４及びセンサ部１０５より構成される。
【００１８】
上記ＣＰＵ部１０１は、ＣＰＵ（Central Processing Unit） とメモリなどの周辺回路要素からなり、後述するように機構系に依存しない機構系独立命令を機構系依存命令に変換して、制御命令を制御部１０２に与える。上記制御部１０２と駆動部１０３はそれぞれ複数個で対をなしており、１つの制御部１０２により１つの駆動部１０３を制御するようになっている。上記制御部１０２は、このロボット装置１００の外界１０４を構成している機構系の位置などの所定の物理量を検出するセンサ部１０５による検出出力値を用いて上記駆動部１０３を制御する。そして、上記駆動部１０３は、上記外界１０４を構成している機構系を駆動する。なお、上記センサ部１０５は、このロボット装置１００を自律動作させるためのもので、機構系の位置などを検出するポテンショメータなどからなる。
【００１９】
このロボット装置１００におけるＣＰＵ部１０１のソフトウエア構成を図２に示す。
【００２０】
すなわち、上記ＣＰＵ部１０１のソフトウエア構成は、センサ処理部１１１、機構系独立命令発生部１１２、機構系依存目標命令発生部１１３、機構系依存命令列発生部１１４及び制御命令発生部１１５からなる。
【００２１】
上記センサ処理部１１１は、タイマ、障害物センサ及び音センサを入力として備える。ここで、上記タイマは、１ミリ秒を単位にカウントするもので、ある時間を設定するとオフになり、設定した時間が経過するとオンになるものとする。また、上記障害物センサは、説明を簡略化するために、装置本体の前側、左側及び右側に設けられた障害前センサ，障害右センサ及び障害左センサからなり、それぞれ障害物に接触するとオンになるものとする。さらに、上記音センサは、マイクロホンで音を取り込み、その音圧レベルを検出して予め設定したレベルを越えるとオンになるものとする。
【００２２】
また、上記機構系独立命令発生部１１２の状態遷移規則を決める手順を図３乃至図６のフローチャートに示す。この機構系独立命令発生部１１２では、状態遷移を行いながらある状態から他の状態に移るときに、後述するように定義した機構系独立命令を次のソフトモジュールである機構系依存目標命令発生部１１３へ出力する。上記機構系独立命令発生部１１２が出力するデータは、キャラクタ列で示されるデータとオプションとして命令に付随するパラメータである。
【００２３】
この実施形態では、上記機構系独立命令として、
(1) standing
(2) move(parameter angle[deg])
(3) sleeping
(4) hello
(5) laughing
の５種類を定義する。
【００２４】
そして、上記機構系独立命令発生部１１２は、図３のフローチャートに示すように、処理を開始（スタート）すると先ず処理Ｓ１において初期化を行い状態を「休息」としてから、処理Ｓ２に移って現在の状態を判別する。そして、上記処理Ｓ２における判別結果にしたがって、現在の状態での処理ＳＡ，処理ＳＢ又は処理ＳＣを行って上記処理Ｓ２を繰り返し行うことにより、状態を遷移して、「休息」の処理ＳＡと、「停止」の処理ＳＢと、「移動」の処理ＳＣを行う。
【００２５】
上記「休息」の処理ＳＡでは、図４に示すように、先ず音センサのオン／オフを判定する処理ＳＡ１を行い、音センサがオフであれば障害前センサのオン／オフを判定する処理ＳＡ２を行い、障害前センサがオフであれば障害左センサのオン／オフを判定する処理ＳＡ３を行い、障害左センサがオフであれば障害右センサのオン／オフを判定する処理ＳＡ４を行い、障害右センサがオフであればタイマのオン／オフを判定する処理ＳＡ５を行い、タイマがオフであれば次の状態を「休息」に設定する処理ＳＡ６を行って、次の状態へ移る。
【００２６】
この「休息」の処理ＳＡでは、上記処理ＳＡ１において音センサがオンであれば、機構系独立命令「standing」を出力するとともに次の状態を「停止」に設定する処理ＳＡ１１を行い、さらにタイマをセットする処理ＳＡ１２を行って、次の状態へ移る。また、上記処理ＳＡ２において障害前センサがオンであれば、機構系独立命令「standing」を出力するとともに次の状態を「停止」に設定する処理ＳＡ２１を行い、さらにタイマをセットする処理ＳＡ２２を行って、次の状態へ移る。また、上記処理ＳＡ３において障害左センサがオンであれば、機構系独立命令「standing」を出力するとともに次の状態を「停止」に設定する処理ＳＡ３１を行い、さらにタイマをセットする処理ＳＡ３２を行って、次の状態へ移る。また、上記処理ＳＡ４において障害右センサがオンであれば、機構系独立命令「standing」を出力するとともに次の状態を「停止」に設定する処理ＳＡ４１を行い、さらにタイマをセットする処理ＳＡ４２を行って、次の状態へ移る。さらに、上記処理ＳＡ５においてタイマがオンであれば、機構系独立命令「standing」を出力するとともに次の状態を「停止」に設定する処理ＳＡ５１を行い、さらにタイマをセットする処理ＳＡ５２を行って、次の状態へ移る。
【００２７】
また、上記「停止」の処理ＳＢでは、図５に示すように、先ず音センサのオン／オフを判定する処理ＳＢ１を行い、音センサがオフであれば障害前センサのオン／オフを判定する処理ＳＢ２を行い、障害前センサがオフであれば障害左センサのオン／オフを判定する処理ＳＢ３を行い、障害左センサがオフであれば障害右センサのオン／オフを判定する処理ＳＢ４を行い、障害右センサがオフであればタイマのオン／オフを判定する処理ＳＢ５を行い、タイマがオフであれば次の状態を「停止」に設定する処理ＳＢ６を行って、次の状態へ移る。
【００２８】
この「停止」の処理ＳＢでは、上記処理ＳＢ１において音センサがオンであれば、機構系独立命令「move(parameter angle[0 deg]」 を出力するとともに次の状態を「移動」に設定する処理ＳＢ１１を行い、さらにタイマをセットする処理ＳＢ１２を行って、次の状態へ移る。また、上記処理ＳＢ２において障害前センサがオンであれば、機構系独立命令「hello」 を出力するとともに次の状態を「停止」に設定する処理ＳＢ２１を行い、さらにタイマをセットする処理ＳＢ２２を行って、次の状態へ移る。また、上記処理ＳＢ３において障害左センサがオンであれば、機構系独立命令「laughing」を出力するとともに次の状態を「停止」に設定する処理ＳＢ３１を行い、さらにタイマをセットする処理ＳＢ３２を行って、次の状態へ移る。また、上記処理ＳＢ４において障害右センサがオンであれば、次の状態を「停止」に設定する処理ＳＢ４１を行い、さらにタイマをセットする処理ＳＢ４２を行って、次の状態へ移る。さらに、上記処理ＳＢ５においてタイマがオンであれば、機構系独立命令「sleeping」を出力するとともに次の状態を「休息」に設定する処理ＳＢ５１を行い、さらにタイマをセットする処理ＳＢ５２を行って、次の状態へ移る。
【００２９】
さらに、上記「移動」の処理ＳＣでは、図６に示すように、先ず音センサのオン／オフを判定する処理ＳＣ１を行い、音センサがオフであれば障害前センサのオン／オフを判定する処理ＳＣ２を行い、障害前センサがオフであれば障害左センサのオン／オフを判定する処理ＳＣ３を行い、障害左センサがオフであれば障害右センサのオン／オフを判定する処理ＳＣ４を行い、障害右センサがオフであればタイマのオン／オフを判定する処理ＳＣ５を行い、タイマがオフであれば次の状態を「停止」に設定する処理ＳＣ６を行って、次の状態へ移る。
【００３０】
この「移動」の処理ＳＣでは、上記処理ＳＣ１において音センサがオンであれば、機構系独立命令「hello」 を出力するとともに次の状態を「停止」に設定する処理ＳＣ１１を行い、さらにタイマをセットする処理ＳＣ１２を行って、次の状態へ移る。また、上記処理ＳＣ２において障害前センサがオンであれば、機構系独立命令「move(parameter angle[180 deg]」 を出力するとともに次の状態を「移動」に設定する処理ＳＣ２１を行い、さらにタイマをセットする処理ＳＣ２２を行って、次の状態へ移る。また、上記処理ＳＣ３において障害左センサがオンであれば、機構系独立命令「move(parameter angle[90 deg]」を出力するとともに次の状態を「移動」に設定する処理ＳＣ３１を行い、さらにタイマをセットする処理ＳＣ３２を行って、次の状態へ移る。また、上記処理ＳＣ４において障害右センサがオンであれば、機構系独立命令「move(parameter angle[-90 deg] 」を出力するとともに次の状態を「移動」に設定する処理ＳＣ４１を行い、さらにタイマをセットする処理ＳＣ４２を行って、次の状態へ移る。さらに、上記処理ＳＣ５においてタイマがオンであれば、機構系独立命令「standing」を出力するとともに次の状態を「停止」に設定する処理ＳＣ５１を行い、さらにタイマをセットする処理ＳＣ５２を行って、次の状態へ移る。
【００３１】
また、上記機構系依存目標命令発生部１１３は、上記機構系独立命令発生部１１２から出力された機構系独立命令に応じて、外界１０４を構成している機構系に合わせた機構系依存目標命令を機構系依存命令列発生部１１４に供給する。この機構系依存命令列発生部１１４は、上記機構系依存目標命令発生部１１３から供給される機構系依存目標命令に応じて上記機構系にあわせた姿勢遷移列からなる機構系依存命令列を制御命令発生部１１５に供給する。この制御命令発生部１１５は、上記機構系依存命令列発生部１１４から供給される機構系依存命令列を上記機構系の制御命令に変換し、この制御命令を上記制御部１０２に供給する。
【００３２】
そして、制御部１０２は、上記制御命令発生部１１５から供給される制御命令に応じて上記駆動部１０３の駆動制御を行う。
【００３３】
ここで、上記機構系依存目標命令発生部１１３は、同じ機構系独立命令に対応する複数の機構系依存目標命令から１の機構系依存目標命令を選択して出力する機能を有する。この実施形態において、機構系依存目標命令発生部１１３は、機構系独立命令に対して対応する機構系依存目標命令を記憶しておき、図７のフローチャートに示す手順に従って、入力された機構系独立命令に対して、対応する機構系依存目標命令を確率的に選択して出力するようになっている。
【００３４】
すなわち、上記機構系依存目標命令発生部１１３は、図７のフローチャートに示すように、機構系独立命令が入力されると、最初の処理Ｓ１１において、入力された機構系独立命令が「standing」であるか否かを判定する。そして、機構系独立命令が「standing」であれば、処理Ｓ１２に移って機構系依存目標命令「standing」を出力し、入力された機構系独立命令に対する処理を終了する。また、機構系独立命令が「standing」でなければ、次の処理Ｓ１３に移る。
【００３５】
この処理Ｓ１３では、入力された機構系独立命令が「move」であるか否かを判定する。そして、機構系独立命令が「move」であれば、処理Ｓ１４に移って機構系依存目標命令「walking」 を出力し、入力された機構系独立命令に対する処理を終了する。また、機構系独立命令が「move」でなければ、次の処理Ｓ１５に移る。
【００３６】
この処理Ｓ１５では、入力された機構系独立命令が「laughing」であるか否かを判定する。そして、機構系独立命令が「laughing」であれば、処理Ｓ１６に移って機構系依存目標命令「laughing」を出力し、入力された機構系独立命令に対する処理を終了する。また、機構系独立命令が「laughing」でなければ、次の処理Ｓ１７に移る。
【００３７】
この処理Ｓ１７では、入力された機構系独立命令が「sleeping」であるか否かを判定する。そして、機構系独立命令が「sleeping」であれば、処理Ｓ１８に移って機構系依存目標命令「sleeping」を出力し、入力された機構系独立命令に対する処理を終了する。また、機構系独立命令が「sleeping」でなければ、次の処理Ｓ１９に移る。
【００３８】
この処理Ｓ１９では、入力された機構系独立命令が「hello」 であるか否かを判定する。そして、機構系独立命令が「hello」 であれば、処理Ｓ２０に移り、また、機構系独立命令が「hello」 でなければ、入力された機構系独立命令に対する処理を終了する。
【００３９】
上記処理Ｓ２０では、［１］，［２］，［３］のいずれかの数字をランダムに発生する。
【００４０】
そして、次の処理Ｓ２１では、上記処理Ｓ２０で発生した数字が［３］であるか否かを判定する。そして、上記数字が［３］であれば、処理Ｓ２２に移って機構系依存目標命令「hello」 を出力し、入力された機構系独立命令に対する処理を終了する。また、上記数字が［３］でなければ、次の処理Ｓ２３に移る。
【００４１】
この処理Ｓ２３では、上記処理Ｓ２０で発生した数字が［２］であるか否かを判定する。そして、上記数字が［２］であれば、処理Ｓ２４に移って機構系依存目標命令「right_hand_up」 を出力し、入力された機構系独立命令に対する処理を終了する。また、上記数字が［２］でなければ、次の処理Ｓ２５に移る。
【００４２】
この処理Ｓ２５では、上記処理Ｓ２０で発生した数字が［１］であるか否かを判定する。そして、上記数字が［１］であれば、処理Ｓ２６に移って機構系依存目標命令「left_hand_up」を出力し、入力された機構系独立命令に対する処理を終了する。また、上記数字が［１］でなければ、入力された機構系独立命令に対する処理を終了する。
【００４３】
すなわち、この機構系依存目標命令発生部１１３は、「standing」，「move」，「laughing」，「sleeping」，「 hello」の５種類の機構系独立命令に対して、「standing」，「move」，「laughing」，「sleeping」，「 hello」，「right_hand_up」，「left_hand_up」 の７種類の機構系依存目標命令を出力することができる。
【００４４】
そして、機構系依存命令発生部１１４は、機構系依存目標命令を機構系依存命令列に変換して制御命令発生部１１５に供給する。すなわち、上記機構系依存命令発生部１１４は、現在の姿勢から与えられた機構系依存目標命令に対応する姿勢までの機構系依存命令列を制御命令発生部１１５に供給する
すなわち、この実施の形態では、機構系依存目標命令発生部１１３及び機構系依存命令列発生部１１４は、上記機構系独立命令発生部１１１から供給される機構系独立命令を機構系依存命令に変換する機構系依存命令変換部１１６を構成している。
【００４５】
ここで、例えば、自立型歩行ロボット装置では、上述の図２に示したソフトウエア構成のＣＰＵ部１０１により制御部１０２に与えられる制御命令に従って、上記５種類の機構系独立命令「standing」，「move」，「laughing」，「sleeping」，「 hello」に対して、機構系依存目標命令発生部１１３で発生される７種類の機構系依存目標命令「standing」，「move」，「laughing」，「sleeping」，「 hello」，「right_hand_up」，「left_hand_up」 に対応した姿勢遷移をとるに当たり、直接遷移できない状態が存在するので、中間的な姿勢として「sitting」姿勢を定義し、その「sitting」姿勢を経由して目的の姿勢に遷移するようにしている。この姿勢遷移の拘束状態を図８に示す。すなわち、「sleeping」姿勢から「walking」姿勢に遷移する場合、「sitting」→「standing」→「walking」 という姿勢遷移列を制御命令として上記ＣＰＵ部１０１から制御部１０２へ出力する。
【００４６】
このように機構系独立命令発生部１１２に与えられる機構系独立命令に応じて機構系依存目標命令発生部１１３及び機構系依存命令列発生部１１４により機構系依存命令列を発生し、この機構系依存命令列を制御命令発生部１１５で制御命令に変換することにより、例えば機構系独立命令「move(parameter angle[deg]」により移動を命令する場合に、タイヤ型ロボットでは駆動車輪の回転方向を指定した移動命令に変換することにより移動命令を実行することができ、また４足歩行ロボットでは各脚部を歩行パターンにしたがって動かして移動させる移動命令に変換することにより移動命令を実行することができる。また、機構系独立命令「hello」 は、タイヤ型ロボットでは例えばその場で３回右回転を行う動作に対応させる命令に変換し、また４足歩行ロボットでは例えば座った姿勢で右前足をあげて横に振る動きを行う動作に対応させる命令に変換することにより、機構系独立命令「hello」 をどちらの形式のロボットでも実行することができる。このように、同じ命令でも機構系によって異なる動きを対応させ機構系依存目標命令発生部１１３により上位層にあるソフトウエアをソースコードあるいはバイナリーレベルで利用することが可能となる。したがって、ソフトウエアの部品化を促進し、機構系に依存しない部分のソフトウエアの再利用が可能となり、ソフトウエア開発を効率よく進めることができる。
【００４７】
しかも、上記機構系依存目標命令発生部１１３は、同じ機構系独立命令「hello」に対して、３種類の機構系依存目標命令「 hello」，「right_hand_up」，「left_hand_up」から１の機構系依存目標命令を選択して出力する機能を有することにより、機構系依存目標命令を増やし、ロボットの動作に多様性を持たせることができる。
【００４８】
図９は、本発明を適用して構成した自立型４足歩行ロボット装置２００の外界部をなす機構系の基本的な構成を模式的に示す図である。
【００４９】
この自立型歩行ロボット装置２００は、４足で自立して歩行する多関節ロボットであって、胴体部２０１に右前脚部２０２、左前脚部２０３、右後脚部２０４、左後脚部２０５及び首頭部２０６がそれぞれ関節部２１１，２１２，２１３，２１４，２１５を介して連結されてなる。
【００５０】
上記右前脚部２０２は、肩関節に対応する関節部２１１を介して上記胴体部２０１に連結されており、上記関節部２１１にアクチュエータとして設けられた図示しない２個のサーボモータの駆動により開脚する機能と前後に回転する機能を有する。また、この右前脚部２０２は、膝関節に対応する関節部２１６を介して連結された右前脚上部２０２Ｕと右前脚下部２０２Ｌからなり、上記関節部２１６にアクチュエータとして設けられた図示しないサーボモータの駆動より上記右前脚下部２０２Ｌを前後に回転する機能を有する。
【００５１】
また、上記左前脚部２０３は、肩関節に対応する関節部２１２を介して上記胴体部２０１に連結されており、上記関節部２１２にアクチュエータとして設けられた図示しない２個のサーボモータの駆動により開脚する機能と前後に回転する機能を有する。また、この左前脚部２０３は、膝関節に対応する関節部２１７を介して連結された左前脚上部２０３Ｕと左前脚下部２０３Ｌからなり、上記関節部２１７にアクチュエータとして設けられた図示しないサーボモータの駆動により上記左前脚下部２０３Ｌを前後に回転する機能を有する。
【００５２】
また、上記右後脚部２０４は、股関節に対応する関節部２１３を介して上記胴体部２０１に連結されており、上記関節部２１３にアクチュエータとして設けられた図示しないサーボモータの駆動により前後に回転する機能を有する。また、この右後脚部２０４は、膝関節に相当する関節部２１８を介して連結された右後脚上部２０４Ｕと右後脚下部２０４Ｌからなり、上記関節部２１８にアクチュエータとして設けられた図示しないサーボモータの駆動により上記右後脚下部２０４Ｌを前後に回転する機能を有する。
【００５３】
また、上記左後脚部２０５は、股関節に対応する関節部２１４を介して上記胴体部２０１に連結されており、上記関節部２１４にアクチュエータとして設けられた図示しないサーボモータの駆動により前後に回転する機能を有する。また、この左後脚部２０５は、膝関節に対応する関節部２１９を介して連結された左後脚上部２０５Ｕと左後脚下部２０５Ｌからなり、上記関節部２１９にアクチュエータとして設けられた図示しないサーボモータの駆動により上記左後脚下部２０５Ｌを前後に回転する機能を有する。
【００５４】
さらに、上記首頭部２０６は、首関節に対応する関節部２１５を介して上記胴体部２０１に連結されており、上記関節部２１５にアクチュエータとして設けられた図示しない２個のサーボモータの駆動により上下方向と左右方向に回転する機能を有する。
【００５５】
そして、この自立型歩行ロボット装置２００では、上述の図２に示したソフトウエア構成のＣＰＵ部１０１に備えられている機構系独立命令発生部１１２により発生される機構系独立命令を機構系依存目標命令発生部１１３と機構系依存命令列発生部１１４と制御命令発生部１１５により機構系に合わせた制御命令に変換して上記制御部１０２に与える。
【００５６】
すなわち、機構系独立命令「standing」は、standingへの姿勢遷移列からなる制御命令に変換される。上記制御部１０２は、この制御命令に応じて上記駆動部１０３のサーボモータを駆動して、右前脚部２０２、左前脚部２０３、右後脚部２０４、左後脚部２０５の４足で立つ「standing」姿勢へ遷移させる。
【００５７】
また、機構系独立命令「move(parameter angle[deg]」 は、walking への姿勢遷移列からなる制御命令に変換される。具体的には、angle[deg]をパラメータとしてangle[deg]が正であれば前進するための歩行パターンの姿勢遷移列からなる制御命令を生成する。上記制御部１０２は、この制御命令に応じて上記駆動部１０３のサーボモータを駆動して、右前脚部２０２、左前脚部２０３、右後脚部２０４、左後脚部２０５の４足で歩行する「walking」 姿勢へ遷移させる。
【００５８】
また、機構系独立命令「sleeping」は、sleepingへの姿勢遷移列からなる制御命令に変換される。上記制御部１０２は、この制御命令に応じて上記駆動部１０３のサーボモータを駆動して、右前脚部２０２、左前脚部２０３、右後脚部２０４、左後脚部２０５の４足を伸ばして伏せる「sleeping」姿勢へ遷移させる。
【００５９】
また、機構系独立命令「hello」は、helloへの姿勢遷移列からなる制御命令に変換される。上記制御部１０２は、この制御命令に応じて上記駆動部１０３のサーボモータを駆動して、座ってお辞儀をする「hello」姿勢 へ遷移させる。
【００６０】
また、機構系独立命令「laughing」は、laughingへの姿勢遷移列からなる制御命令に変換される。上記制御部１０２は、この制御命令に応じて上記駆動部１０３のサーボモータを駆動して、右前脚部２０２と左前脚部２０３を挙げる「laughing」姿勢へ遷移させる。
【００６１】
さらに、機構系独立命令「hello」は、helloへの姿勢遷移列からなる制御命令、right_hand_up への姿勢遷移列からなる制御命令又はleft_hand_upへの姿勢遷移列からなる制御命令に変換される。上記制御部１０２は、上記hello への姿勢遷移列からなる制御命令に応じて上記駆動部１０３のサーボモータを駆動することにより、座ってお辞儀をする「hello」 姿勢へ遷移させる。また、上記制御部１０２は、上記right_hand_up への姿勢遷移列からなる制御命令に応じて上記駆動部１０３のサーボモータを駆動することにより、座って右前脚部２０２を挙げる「right_hand_up」 姿勢へ遷移させる。さらに、上記制御部１０２は、上記left_hand_upへの姿勢遷移列からなる制御命令に応じて上記駆動部１０３のサーボモータを駆動することにより、座って左前脚部２０３を挙げる「left_hand_up」姿勢へ遷移させる。
【００６２】
ここで、上述の図２に示したソフトウエア構成のＣＰＵ部１０１に備えられている機構系依存目標命令発生部１１３では、図７のフローチャートに示した手順に従った処理を行うことにより、機構系独立命令「hello」 に対して、３種類の機構系依存目標命令「 hello」，「right_hand_up」，「left_hand_up」 から１の機構系依存目標命令を確率的に選択して出力するようにしたが、図１０のフローチャートに示すような処理手順に従って機構系依存目標命令を発生するようにしても良い。
【００６３】
この図１０のフローチャートに示す処理手順の場合、上記機構系依存目標命令発生部１１３は、機構系独立命令が入力されると、最初の処理Ｓ３１において、入力された機構系独立命令が「standing」であるか否かを判定する。そして、機構系独立命令が「standing」であれば、処理Ｓ３２に移って機構系依存目標命令「standing」を出力し、入力された機構系独立命令に対する処理を終了する。また、機構系独立命令が「standing」でなければ、次の処理Ｓ３３に移る。
【００６４】
この処理Ｓ３３では、入力された機構系独立命令が「move」であるか否かを判定する。そして、機構系独立命令が「move」であれば、処理Ｓ３４に移って機構系依存目標命令「walking」 を出力し、入力された機構系独立命令に対する処理を終了する。また、機構系独立命令が「move」でなければ、次の処理Ｓ３５に移る。
【００６５】
この処理Ｓ３５では、入力された機構系独立命令が「laughing」であるか否かを判定する。そして、機構系独立命令が「laughing」であれば、処理Ｓ３６に移って機構系依存目標命令「laughing」を出力し、入力された機構系独立命令に対する処理を終了する。また、機構系独立命令が「laughing」でなければ、次の処理Ｓ３７に移る。
【００６６】
この処理Ｓ３７では、入力された機構系独立命令が「sleeping」であるか否かを判定する。そして、機構系独立命令が「sleeping」であれば、処理Ｓ３８に移って機構系依存目標命令「sleeping」を出力し、入力された機構系独立命令に対する処理を終了する。また、機構系独立命令が「sleeping」でなければ、次の処理Ｓ３９に移る。
【００６７】
この処理Ｓ３９では、入力された機構系独立命令が「hello」 であるか否かを判定する。そして、機構系独立命令が「hello」 であれば、処理Ｓ４０に移り、また、機構系独立命令が「hello」 でなければ、入力された機構系独立命令に対する処理を終了する。
【００６８】
上記処理Ｓ４０では、現在の姿勢がstanding状態にあるかsitting 状態又はsleeping状態にあるかを判定する。そして、現在の姿勢がstanding状態にあれば、処理Ｓ４１に移って機構系依存目標命令「standing_hello」を出力して、入力された機構系独立命令に対する処理を終了する。また、現在の姿勢がsitting 状態又はsleeping状態にあれば、処理Ｓ４２に移って機構系依存目標命令「hello」 を出力して、入力された機構系独立命令に対する処理を終了する。
【００６９】
すなわち、上記機構系依存目標命令発生部１１３は、「standing」，「move」，「laughing」，「sleeping」，「 hello」の５種類の機構系独立命令に対して、「standing」，「move」，「laughing」，「sleeping」，「 hello」，「standing_hello」の６種類の機構系依存目標命令を出力する。
【００７０】
そして、この場合、機構系独立命令「hello」は、helloへの姿勢遷移列からなる制御命令又はstanding_helloへの姿勢遷移列からなる制御命令に変換されて、上記制御部１０２に供給される。
【００７１】
上記制御部１０２は、上記hello への姿勢遷移列からなる制御命令に応じて上記駆動部１０３のサーボモータを駆動することにより、座ってお辞儀をする「hello」 姿勢へ遷移させる。また、上記制御部１０２は、上記standing_helloへの姿勢遷移列からなる制御命令に応じて上記駆動部１０３のサーボモータを駆動することにより、立ってお辞儀をする「standing_hello」 姿勢へ遷移させる。
【００７２】
このように、上記機構系依存目標命令発生部１１３は、同じ機構系独立命令「hello」 に対して、その機構系独立命令が入力された時点での姿勢に対応して異なる機構系依存目標命令「hello」，「standing_hello」 を出力する機能を有するものとすることにより、ロボットの動作に多様性を持たせることができる。
【００７３】
さらに、上述の図２に示したソフトウエア構成のＣＰＵ部１０１に備えられている機構系独立命令発生部１１２は、図１１に示すように、センサ処理部１１１からの入力に基づいて動作する条件判断部１１２Ａと感情処理部１１２Ｂの処理機能を備えるものであっても良い。
【００７４】
この機構系独立命令発生部１１２において、条件判断部１１２Ａは、上述の図３乃至図６のフローチャートに示した手順に従って、５種類の機構系独立命令「standing」，「move」，「sleeping」，「hello」，「laughing」 を発生する。
【００７５】
また、感情処理部１１１Ｂは、上記センサ処理部１１１からの入力に基づいて、感情状態を変化させ、その感情状態を表す状態変数を出力するものである。ここでは、感情を示す喜びと怒りの２要素を感情変数とする。
【００７６】
そして、この機構系独立命令発生部１１２により発生される感情変数を機構系独立命令に応じた機構系依存目標命令さらには機構系依存命令列とともに引数として渡すことにより、感情に応じて同じ機構系独立命令に対して感情に応じて異なる制御動作を制御部１０２で行うようにする。
【００７７】
この実施の形態において、感情状態は、２次元のベクトルemであるとし、
em＝［joy,anger］
にて示すものとする。ここで、joy は、喜び状態を表現するもので、０〜２５５の整数値をとり、大きな値ほど喜びが大きいと解釈する。また、anger は、怒り状態を表現するもので、０〜２５５の整数値をとり、大きな値ほど喜びが大きいと解釈する。
【００７８】
そして、感情処理部１１２Ｂは、センサ処理部１１１からの入力に基づいて、図１２のフローチャートに示す手順に従って、感情状態emを変化させる感情処理ＳＥを行う。
【００７９】
すなわち、この感情処理ＳＥでは、図１２に示すように、先ず音センサのオン／オフを判定する処理ＳＥ１を行い、音センサがオンであれば処理ＳＥ２に移ってjoy 値を「１０」増加させて処理ＳＥ３に移る。また、音センサがオフであれば直ちに処理ＳＥ３に移る。
【００８０】
この処理ＳＥ３では、障害前センサのオン／オフを判定する。そして、障害前センサがオンであれば処理ＳＥ４に移ってanger 値を「１０」増加させて処理ＳＥ５に移る。また、障害前センサがオフであれば直ちに処理ＳＥ５に移る。
【００８１】
この処理ＳＥ５では、障害左センサのオン／オフを判定する。そして、障害左センサがオンであれば処理ＳＥ６に移ってanger 値を「５０」増加させて処理ＳＥ７に移る。また、障害左センサがオフであれば直ちに処理ＳＥ７に移る。
【００８２】
この処理ＳＥ７では、障害右センサのオン／オフを判定する。そして、障害右センサがオンであれば処理ＳＥ８に移ってanger 値を「５０」増加させて処理ＳＥ９に移る。また、障害左センサがオフであれば直ちに処理ＳＥ９に移る。
【００８３】
この処理ＳＥ９では、joy 値及びanger 値をそれぞれ「１」減少させる。
【００８４】
そして、次の処理ＳＥ１０では、joy 値が「０」より小さい場合にjoy 値を「０」にし、また、joy 値が「２５５」よりも大きい場合にjoy 値を「２５５」にする。
【００８５】
さらに、次の処理ＳＥ１１では、anger 値が「０」より小さい場合にanger 値を「０」にし、また、anger 値が「２５５」よりも大きい場合にanger 値を「２５５」にする。
【００８６】
すなわち、この図１２に示す感情処理ＳＥは、各センサのオン／オフに対応してjoy 値とanger 値が増加し、また、時間とともにそれらは減少していくという単純なモデルにより感情状態emを与える。この実施形態において、上記感情状態emは、機構系依存目標命令発生部１１３に入力されるとともに、制御命令発生部１１５にも入力されるようになっている。
【００８７】
そして、機構系依存目標命令発生部１１３は、機構系独立命令発生部１１２から機構系独立命令とともに感情状態emが入力されることにより、図１３のフローチャートに示すような処理手順に従って機構系依存目標命令を発生する。
【００８８】
この図１３のフローチャートに示す処理手順の場合、上記機構系依存目標命令発生部１１３は、機構系独立命令が入力されると、最初の処理Ｓ５１において、入力された機構系独立命令が「standing」であるか否かを判定する。そして、機構系独立命令が「standing」であれば、処理Ｓ５２に移って機構系依存目標命令「standing」を出力し、入力された機構系独立命令に対する処理を終了する。また、機構系独立命令が「standing」でなければ、次の処理Ｓ５３に移る。
【００８９】
この処理Ｓ５３では、入力された機構系独立命令が「move」であるか否かを判定する。そして、機構系独立命令が「move」であれば、処理Ｓ５４に移って機構系依存目標命令「walking」 を出力し、入力された機構系独立命令に対する処理を終了する。また、機構系独立命令が「move」でなければ、次の処理Ｓ５５に移る。
【００９０】
この処理Ｓ５５では、入力された機構系独立命令が「laughing」であるか否かを判定する。そして、機構系独立命令が「laughing」であれば、処理Ｓ５６に移って機構系依存目標命令「laughing」を出力し、入力された機構系独立命令に対する処理を終了する。また、機構系独立命令が「laughing」でなければ、次の処理Ｓ５７に移る。
【００９１】
この処理Ｓ５７では、入力された機構系独立命令が「sleeping」であるか否かを判定する。そして、機構系独立命令が「sleeping」であれば、処理Ｓ５８に移って機構系依存目標命令「sleeping」を出力し、入力された機構系独立命令に対する処理を終了する。また、機構系独立命令が「sleeping」でなければ、次の処理Ｓ５９に移る。
【００９２】
この処理Ｓ５９では、入力された機構系独立命令が「hello」 であるか否かを判定する。そして、機構系独立命令が「hello」 であれば、処理Ｓ６０に移り、また、機構系独立命令が「hello」 でなければ、入力された機構系独立命令に対する処理を終了する。
【００９３】
上記処理Ｓ６０では、感情状態emを示す状態変数であるjoy 値がその閾値Thjoy よりも大きいか否かを判定する。そして、joy 値がその閾値Thjoy よりも大きい場合には、処理Ｓ６１に移って機構系依存目標命令「hello-joy」 を出力して、入力された機構系独立命令に対する処理を終了する。また、joy 値がその閾値Thjoy よりも大きくない場合には、処理Ｓ６２に移る。
【００９４】
この処理６２では、感情状態emを示す状態変数であるanger 値がその閾値Thanger よりも大きいか否かを判定する。そして、anger 値がその閾値Thanger よりも大きい場合には、処理Ｓ６３に移って機構系依存目標命令「hello-anger」 を出力して、入力された機構系独立命令に対する処理を終了する。また、anger 値がその閾値Thanger よりも大きくない場合には、処理Ｓ６４に移って機構系依存目標命令「hello」 を出力して、入力された機構系独立命令に対する処理を終了する。
【００９５】
すなわち、上記機構系依存目標命令発生部１１３は、「standing」，「move」，「laughing」，「sleeping」，「 hello」の５種類の機構系独立命令に対して、「standing」，「move」，「laughing」，「sleeping」，「 hello」，「hello-joy」，「hello-anger」の７種類の機構系依存目標命令を出力する。
【００９６】
そして、この場合、機構系独立命令「hello」は、helloへの姿勢遷移列からなる制御命令、hello-joyへの姿勢遷移列からなる制御命令又はhello-angerへの姿勢遷移列からなる制御命令に変換されて、上記制御部１０２に供給される。
【００９７】
上記制御部１０２は、上記hello への姿勢遷移列からなる制御命令に応じて上記駆動部１０３のサーボモータを駆動することにより、座ってお辞儀をする「hello」 姿勢へ遷移させる。また、上記制御部１０２は、上記hello-joy への姿勢遷移列からなる制御命令に応じて上記駆動部１０３のサーボモータを駆動することにより、座って両右前脚部を挙げる「hello-joy」 姿勢へ遷移させる。さらに、上記制御部１０２は、上記hello-anger への姿勢遷移列からなる制御命令に応じて上記駆動部１０３のサーボモータを駆動することにより、座って左前脚部を挙げる「hello-anger」姿勢へ遷移させる。
【００９８】
このように、上記機構系依存目標命令発生部１１３は、同じ機構系独立命令「hello」 に対して、その機構系独立命令が入力された時点での感情状態に対応して異なる機構系依存目標命令「hello」，「hello-joy」，「hello-anger」 を出力する機能を有するものとすることにより、ロボットの動作に多様性を持たせることができる。
【００９９】
なお、機構系独立命令「hello」 以外の機構系独立命令に対しても同様に感情状態を示す感情状態emを示す状態変数であるjoy,anger の値によって別の機構系依存目標命令を発生させるようにすることも可能である。
【０１００】
さらに、制御命令発生部１１５は、感情状態emが機構系依存命令列とともにパラメータとして入力されることにより、感情状態emによって動きのスピード大きさを異ならせた制御命令を制御部１０２に供給することができる。
【０１０１】
すなわち、この実施の形態において、機構系依存命令列は上述の図８に示したようなグラフ構造として表すことができる記憶構造を用いて機構系依存目標命令をサーチしてノード列を決定し、ノード間に定義してあるエッジに対応して制御命令発生のプログラム及びデータが記憶されている。制御命令発生部１１５では、ノード間のエッジに対応するこの制御命令を発生し、制御部１０２に供給する。
【０１０２】
ここで、上述のように機構系依存目標命令発生部は、同じ機構系独立命令に対応する複数の機構系依存目標命令から１の機構系依存目標命令を選択して出力する機能を機構系依存目標命令発生部にもたせることにより、ロボットの動作に多様性を持たせるようにした場合、新たに機構系独立命令を追加するには、それに対応した選択プログラムを書き加える必要が生じる。また、機構系依存命令を増やす場合には、現存するプログラムでｉｆ文を追加する必要が生じる。しかし、機構系独立命令と機構系依存命令の対応を予め登録しておくことによって、プログラムに機構系独立命令と機構系依存命令を直接記述せずに、記憶部に対する登録と機構系独立命令をキーとした検索を行うことで対応する機構系依存命令を見つけ出すことが可能である。
【０１０３】
すなわち、例えば図１４に示すように、機構系独立命令発生部１１２から供給される機構系独立命令を機構系依存命令に変換する機構系依存命令変換部１１６に、機構系独立命令−機構系依存命令対応記憶部１１６Ａと機構系依存命令検索部１１６Ｂを設け、各機構系依存命令について機構系独立命令を検索のキーとして機構系独立命令−機構系依存命令対応記憶部１１６Ａに登録し、入力された機構系独立命令から先にこの機構系独立命令を検索のキーとして登録された対応する１つ以上の機構系依存命令を取り出し、取り出された機構系依存命令から１の機構系依存命令を選択して出力するようにする。
【０１０４】
上記機構系独立命令−機構系依存命令対応記憶部１１６Ａは、例えばコンピュータの情報表現としてMap という手法を用いることにより実現される。Map は、プログラミング言語Ｃ＋＋などの多くコンパイラや開発環境のソフトウエアが基本ライブラリとして提供する情報記憶用のソフトウエアであり、検索のキーを用いて検索させる手法である。簡単なMap<T,Key>とList<T> の使い方について、図１５に示すプログラムリストの例により説明する。
【０１０５】
この例は、名前をListに登録し、それをさらに姓を検索Key としてMap で登録している。すなわち、この図１５に示したプログラムリストの１〜５行では、masahiro,miu,hiroko という名前をListに登録し、masaki,mao,yoko という名前を別のList登録している。１７行では、前者のListを“fujita”という検索Key でMap に登録し、後者のListを“komoriya”という検索Key でMap に登録する。そして、２０行，２１行では、“fujita”という検索Key を用いてListをMap から取り出し、Listの一番最初のStringを取り出している。この結果であるname1 に何が入っているかは、Listというクラスの実装の方法により異なるが、最初に登録した“masahiro”がでてくる実装が普通である。
【０１０６】
このようなMap を機構系独立命令IndCMDを検索Key として機構系依存命令DepCMDを複数登録するのに利用して、例えば、
Map<List<DepCMD>,IndCMD> map0fInd_DependCMD;
List<DepCMD> temp = map0fInd_DependCMD[Hello];
temp.push_back(Right_HandUp);
により、機構系独立命令Hello に機構系依存命令Right_HandUpを登録する。
【０１０７】
したがって、機構系依存命令変換部１１６では、機構系独立命令を受け取り、それをKey として、Listを取り出し、このリストから機構系依存命令を１つ選択して出力すればよい。機構系依存命令の選択には、上述の機構系依存目標命令発生部１１３における各種手法を用いることができる。
【０１０８】
【発明の効果】
以上のように、本発明に係るロボット装置では、機構系独立命令を入力とし、この機構系独立命令に応じて上記機構系にあわせた機構系依存目標命令を出力する機構系依存目標命令発生部と、この機構系依存目標命令発生部から供給される機構系依存目標命令に応じて上記機構系にあわせた姿勢遷移列からなる機構系依存命令列を発生する機構系依存命令列発生部と有する機構系依存命令変換部を備えることにより、機構系独立命令に対応した動作を機構系で行うことができ、しかも、１つ以上の機構系依存命令について機構系独立命令を検索のキーとして登録し、入力された機構系独立命令から先にこの機構系独立命令を検索のキーとして登録された対応する１つ以上の機構系依存命令を取り出し、取り出された機構系依存命令から１の機構系依存命令を選択して出力する機能を上記機構系依存命令変換部に持たせ、同じ機構系独立命令に対応する複数の機構系依存目標命令から１の機構系依存目標命令を確率的に選択して出力する機能を上記機構系依存目標命令発生部に持たせることにより、少ない記述量で複雑な動作を行うことができる。
また、本発明に係るロボット装置では、機構系独立命令を入力とし、この機構系独立命令に応じて上記機構系にあわせた機構系依存目標命令を出力する機構系依存目標命令発生部と、この機構系依存目標命令発生部から供給される機構系依存目標命令に応じて上記機構系にあわせた姿勢遷移列からなる機構系依存命令列を発生する機構系依存命令列発生部と有する機構系依存命令変換部を備えることにより、機構系独立命令に対応した動作を機構系で行うことができ、しかも、１つ以上の機構系依存命令について機構系独立命令を検索のキーとして登録し、入力された機構系独立命令から先にこの機構系独立命令を検索のキーとして登録された対応する１つ以上の機構系依存命令を取り出し、取り出された機構系依存命令から１の機構系依存命令を選択して出力する機能を上記機構系依存命令変換部に持たせ、同じ機構系独立命令に対して、その機構系独立命令が入力された時点での感情状態に対応して異なる機構系依存目標命令を出力する機能を上記機構系依存目標命令発生部に持たせることにより、少ない記述量で複雑な動作を行うことができる。
【０１０９】
また、本発明に係るロボット装置の制御方法では、機構系に依存しない機構系独立命令を変換することにより上記機構系にあわせた機構系依存命令を生成して上記駆動部の駆動制御を行うに当たり、１つ以上の機構系依存命令について機構系独立命令の検索のキーとして登録し、入力された機構系独立命令から先にこの機構系独立命令を検索のキーとして登録された対応する１つ以上の機構系依存命令を取り出し、取り出された機構系依存命令から１の機構系依存命令を選択して、上記駆動部の駆動制御を行い、同じ機構系独立命令に対応する複数の機構系依存目標命令から１の機構系依存目標命令を確率的に選択して、その機構系依存目標命令に応じた機構系依存命令を生成して上記駆動部の駆動制御を行うことにより、少ない記述量で複雑な動作制御を行うことができる。
さらに、本発明に係るロボット装置の制御方法では、機構系に依存しない機構系独立命令を変換することにより上記機構系にあわせた機構系依存命令を生成して上記駆動部の駆動制御を行うに当たり、１つ以上の機構系依存命令について機構系独立命令の検索のキーとして登録し、入力された機構系独立命令から先にこの機構系独立命令を検索のキーとして登録された対応する１つ以上の機構系依存命令を取り出し、取り出された機構系依存命令から１の機構系依存命令を選択して、上記駆動部の駆動制御を行い、同じ機構系独立命令に対して、その機構系独立命令が入力された時点での感情状態に対応して異なる機構系依存目標命令を選択して、その機構系依存目標命令に応じた機構系依存命令を生成して上記駆動部の駆動制御を行うことにより、少ない記述量で複雑な動作制御を行うことができる。
【０１１０】
したがって、本発明によれば、機構系に依存しない機構系独立命令を用いて共通の制御系により制御可能とした形式の異なる機構系を備える各種形態のロボット装置及びその制御方法を提供することができる。これにより、同じ命令でも機構系によって異なる動きを対応させ機構系依存命令変換部により上位層にあるソフトウエアをソースコードあるいはバイナリーレベルで利用することが可能となる。これにより、ソフトウエアの部品化を促進し、機構系に依存しない部分のソフトウエアの再利用が可能となり、ソフトウエア開発を効率よく進めることができる。
【図面の簡単な説明】
【図１】本発明に係るロボット装置の基本的な構成を示すブロック図である。
【図２】上記ロボット装置におけるＣＰＵ部のソフトウエア構成を示す図である。
【図３】上記ロボット装置における機構系独立命令発生部の状態遷移規則を決める手順を示すフローチャートである。
【図４】上記機構系独立命令発生部の状態遷移規則を決める手順における「休息」の処理手順を示すフローチャートである。
【図５】上記機構系独立命令発生部の状態遷移規則を決める手順における「停止」の処理手順を示すフローチャートである。
【図６】上記機構系独立命令発生部の状態遷移規則を決める手順における「移動」の処理手順を示すフローチャートである。
【図７】上記ロボット装置における機構系依存目標命令発生部で機構系依存目標命令を発生するための処理手順を示すフローチャートである。
【図８】上記ロボット装置における機構系依存命令列発生部で機構系依存命令を発生するためのグラフ構造を示す状態遷移図である。
【図９】本発明を適用して構成した自立型４足歩行ロボット装置の外界部をなす機構系の基本的な構成を模式的に示す図である。
【図１０】上記機構系依存目標命令発生部で機構系依存目標命令を発生するための他の処理手順を示すフローチャートである。
【図１１】上記ロボット装置における機構系独立命令発生部の構成例を示す図である。
【図１２】上記機構系独立命令発生部に備えられる感情処理部での感情処理の手順を示すフローチャートである。
【図１３】上記機構系依存目標命令発生部で機構系依存目標命令を発生するためのさらに他の処理手順を示すフローチャートである。
【図１４】機構系独立命令発生部に備えられるMap による機構系依存命令の検索機能を備えた機構系独立命令発生部の構成を示す図である。
【図１５】  Map<T,Key>とList<T> の使い方を説明するのに用いるプログラムリストを示す図である。
【符号の説明】
１００  ロボット装置、１０１  ＣＰＵ部、１０２  制御部、１０３  駆動部、１０４  外界、１０５  センサ部、１１１  センサ処理部、１１２  機構系独立命令発生部、１１３  機構系依存目標命令発生部、１１４  機構系依存命令列発生部、  １１５  制御命令発生部、１１６  機構系依存命令変換部
【図１】
0003879193.tif 000002
【図２】
0003879193.tif 000003
【図３】
0003879193.tif 000004
【図４】
0003879193.tif 000005
【図５】
0003879193.tif 000006
【図６】
0003879193.tif 000007
【図７】
0003879193.tif 000008
【図８】
0003879193.tif 000009
【図９】
0003879193.tif 000010
【図１０】
0003879193.tif 000011
【図１１】
0003879193.tif 000012
【図１２】
0003879193.tif 000013
【図１３】
0003879193.tif 000014
【図１４】
0003879193.tif 000015
【図１５】
0003879193.tif 000016